UNPKG

@formio-tmt/angular

Version:

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

64 lines 15.5 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"; 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: "16.1.6", ngImport: i0, type: FormGridBodyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", 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 #permissions *ngIf=\"actionAllowed('formPermission')\" class=\"btn btn-outline-secondary btn-sm form-btn\" (click)=\"onRowAction($event, form, 'permissions')\"><span class=\"fa fa-lock bi bi-database-lock\"></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", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.TimeSince, name: "timeSince" }] }); } export { FormGridBodyComponent }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", 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 #permissions *ngIf=\"actionAllowed('formPermission')\" class=\"btn btn-outline-secondary btn-sm form-btn\" (click)=\"onRowAction($event, form, 'permissions')\"><span class=\"fa fa-lock bi bi-database-lock\"></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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybUdyaWRCb2R5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL2dyaWQvc3JjL2Zvcm0vRm9ybUdyaWRCb2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL2dyaWQvc3JjL2Zvcm0vRm9ybUdyaWRCb2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQUNwQyxNQUthLHFCQUFzQixTQUFRLGlCQUFpQjtJQUNsQyxVQUFVLENBQWU7SUFDM0IsUUFBUSxDQUFlO0lBQ3ZCLFFBQVEsQ0FBZTtJQUNoQixlQUFlLENBQWU7SUFDbkMsVUFBVSxDQUFlO0lBQzFDLFFBQVEsR0FBbUIsRUFBRSxDQUFDO0lBRXJDLElBQUksQ0FBQyxNQUE0QixFQUFFLEtBQVc7UUFDNUMsS0FBSyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDcEIsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ3ZDLElBQUksQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDaEQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFjLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBYyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQWMsRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFjLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBYyxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBZSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO3VHQW5DVSxxQkFBcUI7MkZBQXJCLHFCQUFxQixnZENUbEMsbzJEQXVCQTs7U0RkYSxxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxnQkFBZ0I7OEJBS0YsVUFBVTtzQkFBakMsWUFBWTt1QkFBQyxRQUFRO2dCQUNBLFFBQVE7c0JBQTdCLFlBQVk7dUJBQUMsTUFBTTtnQkFDRSxRQUFRO3NCQUE3QixZQUFZO3VCQUFDLE1BQU07Z0JBQ1MsZUFBZTtzQkFBM0MsWUFBWTt1QkFBQyxhQUFhO2dCQUNILFVBQVU7c0JBQWpDLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBHcmlkQm9keUNvbXBvbmVudCB9IGZyb20gJy4uL0dyaWRCb2R5Q29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybWlvUHJvbWlzZVNlcnZpY2UgfSBmcm9tICdAZm9ybWlvLXRtdC9hbmd1bGFyJztcclxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ2Jvb3RzdHJhcCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm9ybS1ncmlkLWJvZHknLFxyXG4gIHN0eWxlVXJsczogWycuL0Zvcm1HcmlkQm9keS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9Gb3JtR3JpZEJvZHkuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtR3JpZEJvZHlDb21wb25lbnQgZXh0ZW5kcyBHcmlkQm9keUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZHJlbignY3JlYXRlJykgY3JlYXRlQnRuczogRWxlbWVudFJlZltdO1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3ZpZXcnKSB2aWV3QnRuczogRWxlbWVudFJlZltdO1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ2VkaXQnKSBlZGl0QnRuczogRWxlbWVudFJlZltdO1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3Blcm1pc3Npb25zJykgcGVybWlzc2lvbnNCdG5zOiBFbGVtZW50UmVmW107XHJcbiAgQFZpZXdDaGlsZHJlbignZGVsZXRlJykgZGVsZXRlQnRuczogRWxlbWVudFJlZltdO1xyXG4gIHB1YmxpYyB0b29sdGlwczogQXJyYXk8VG9vbHRpcD4gPSBbXTtcclxuXHJcbiAgbG9hZChmb3JtaW86IEZvcm1pb1Byb21pc2VTZXJ2aWNlLCBxdWVyeT86IGFueSkge1xyXG4gICAgcXVlcnkgPSBxdWVyeSB8fCB7fTtcclxuICAgIHJldHVybiBmb3JtaW8ubG9hZEZvcm1zKHsgcGFyYW1zOiBxdWVyeSB9KVxyXG4gICAgICAudGhlbigoZm9ybXM6IGFueSkgPT4gdGhpcy5zZXRSb3dzKHF1ZXJ5LCBmb3JtcykpXHJcbiAgICAgIC50aGVuKCgpID0+IHRoaXMuYXR0YWNoVG9vbHRpcHMoKSk7XHJcbiAgfVxyXG5cclxuICBhdHRhY2hUb29sdGlwcygpIHtcclxuICAgIHRoaXMuY3JlYXRlQnRucy5mb3JFYWNoKChlbDogRWxlbWVudFJlZikgPT4ge1xyXG4gICAgICB0aGlzLnRvb2x0aXBzLnB1c2gobmV3IFRvb2x0aXAoZWwubmF0aXZlRWxlbWVudCwge3RpdGxlOiAnQ3JlYXRlJ30pKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5lZGl0QnRucy5mb3JFYWNoKChlbDogRWxlbWVudFJlZikgPT4ge1xyXG4gICAgICB0aGlzLnRvb2x0aXBzLnB1c2gobmV3IFRvb2x0aXAoZWwubmF0aXZlRWxlbWVudCwge3RpdGxlOiAnRWRpdCd9KSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudmlld0J0bnMuZm9yRWFjaCgoZWw6IEVsZW1lbnRSZWYpID0+IHtcclxuICAgICAgdGhpcy50b29sdGlwcy5wdXNoKG5ldyBUb29sdGlwKGVsLm5hdGl2ZUVsZW1lbnQsIHt0aXRsZTogJ1ZpZXcnfSkpO1xyXG4gICAgfSlcclxuICAgIHRoaXMucGVybWlzc2lvbnNCdG5zLmZvckVhY2goKGVsOiBFbGVtZW50UmVmKSA9PiB7XHJcbiAgICAgIHRoaXMudG9vbHRpcHMucHVzaChuZXcgVG9vbHRpcChlbC5uYXRpdmVFbGVtZW50LCB7dGl0bGU6ICdQZXJtaXNzaW9ucyd9KSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGVsZXRlQnRucy5mb3JFYWNoKChlbDogRWxlbWVudFJlZikgPT4ge1xyXG4gICAgICB0aGlzLnRvb2x0aXBzLnB1c2gobmV3IFRvb2x0aXAoZWwubmF0aXZlRWxlbWVudCwge3RpdGxlOiAnRGVsZXRlJ30pKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvb2x0aXBzLmZvckVhY2goKHRvb3RpcDogVG9vbHRpcCkgPT4gdG9vdGlwLmRpc3Bvc2UoKSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZT5cclxuICA8dGJvZHkgKm5nSWY9XCJyb3dzXCI+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IGZvcm0gb2Ygcm93c1wiPlxyXG4gICAgICA8dGQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05XCI+XHJcbiAgICAgICAgICAgIDxhIHJvdXRlckxpbms9XCJ7e2Zvcm0uX2lkfX0vdmlld1wiIChjbGljayk9XCJvblJvd1NlbGVjdCgkZXZlbnQsIGZvcm0pXCIgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZVwiPjxoNT57eyBmb3JtLnRpdGxlIH19PC9oNT48L2E+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXVwZGF0ZWQgc21hbGwgdGV4dC1tdXRlZFwiPlxyXG4gICAgICAgICAgICAgIFVwZGF0ZWQge3sgZm9ybS5tb2RpZmllZCB8IHRpbWVTaW5jZSB9fSBhZ29cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAjY3JlYXRlICpuZ0lmPVwiYWN0aW9uQWxsb3dlZCgnZm9ybVZpZXcnKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tc20gZm9ybS1idG4gZm9ybS1idG4tdXNlXCIgKGNsaWNrKT1cIm9uUm93QWN0aW9uKCRldmVudCwgZm9ybSwgJ3ZpZXcnKVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtcGVuY2lsIGJpIGJpLXBlbmNpbFwiPjwvc3Bhbj48L2J1dHRvbj4mbmJzcDtcclxuICAgICAgICAgICAgPGJ1dHRvbiAjdmlldyAqbmdJZj1cImFjdGlvbkFsbG93ZWQoJ2Zvcm1TdWJtaXNzaW9uJylcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLXNtIGZvcm0tYnRuXCIgKGNsaWNrKT1cIm9uUm93QWN0aW9uKCRldmVudCwgZm9ybSwgJ3N1Ym1pc3Npb24nKVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtbGlzdC1hbHQgYmkgYmktdGFibGVcIj48L3NwYW4+PC9idXR0b24+Jm5ic3A7XHJcbiAgICAgICAgICAgIDxidXR0b24gI2VkaXQgKm5nSWY9XCJhY3Rpb25BbGxvd2VkKCdmb3JtRWRpdCcpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1zbSBmb3JtLWJ0blwiIChjbGljayk9XCJvblJvd0FjdGlvbigkZXZlbnQsIGZvcm0sICdlZGl0JylcIj48c3BhbiBjbGFzcz1cImZhIGZhLWVkaXQgYmkgYmktcGVuY2lsLXNxdWFyZVwiPjwvc3Bhbj48L2J1dHRvbj4mbmJzcDtcclxuICAgICAgICAgICAgPGJ1dHRvbiAjcGVybWlzc2lvbnMgKm5nSWY9XCJhY3Rpb25BbGxvd2VkKCdmb3JtUGVybWlzc2lvbicpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1zbSBmb3JtLWJ0blwiIChjbGljayk9XCJvblJvd0FjdGlvbigkZXZlbnQsIGZvcm0sICdwZXJtaXNzaW9ucycpXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1sb2NrIGJpIGJpLWRhdGFiYXNlLWxvY2tcIj48L3NwYW4+PC9idXR0b24+Jm5ic3A7XHJcbiAgICAgICAgICAgIDxidXR0b24gI2RlbGV0ZSAqbmdJZj1cImFjdGlvbkFsbG93ZWQoJ2Zvcm1EZWxldGUnKVwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNtIGZvcm0tYnRuIGZvcm0tYnRuLWRlbGV0ZVwiIChjbGljayk9XCJvblJvd0FjdGlvbigkZXZlbnQsIGZvcm0sICdkZWxldGUnKVwiIHRpdGxlPVwiRGVsZXRlIGZvcm1cIj48c3BhbiBjbGFzcz1cImZhIGZhLXRyYXNoIGJpIGJpLXRyYXNoXCI+PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGJvZHk+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==