@fullcalendar/angular
Version:
The official Angular component for FullCalendar
78 lines • 16.4 kB
JavaScript
import { Component, Input, ViewEncapsulation, ViewChild } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
const dummyContainer = document.createDocumentFragment();
export class TransportContainerComponent {
ngAfterViewInit() {
const rootEl = this.rootElRef?.nativeElement; // assumed defined
replaceEl(rootEl, this.inPlaceOf);
applyElAttrs(rootEl, undefined, this.elAttrs);
this.reportEl(rootEl);
}
ngOnChanges(changes) {
const rootEl = this.rootElRef?.nativeElement;
// ngOnChanges is called before ngAfterViewInit (and before DOM initializes)
// so make sure rootEl is defined before doing anything
if (rootEl) {
// If the ContentContainer's tagName changed, it will create a new DOM element in its
// original place. Detect this and re-replace.
if (this.inPlaceOf.parentNode !== dummyContainer) {
replaceEl(rootEl, this.inPlaceOf);
applyElAttrs(rootEl, undefined, this.elAttrs);
this.reportEl(rootEl);
}
else {
const elAttrsChange = changes['elAttrs'];
if (elAttrsChange) {
applyElAttrs(rootEl, elAttrsChange.previousValue, elAttrsChange.currentValue);
}
}
}
}
// invoked BEFORE component removed from DOM
ngOnDestroy() {
dummyContainer.removeChild(this.inPlaceOf);
this.reportEl(null);
}
}
TransportContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TransportContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
TransportContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TransportContainerComponent, selector: "transport-container", inputs: { inPlaceOf: "inPlaceOf", reportEl: "reportEl", elTag: "elTag", elClasses: "elClasses", elStyle: "elStyle", elAttrs: "elAttrs", template: "template", renderProps: "renderProps" }, viewQueries: [{ propertyName: "rootElRef", first: true, predicate: ["rootEl"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template [ngIf]=\"elTag == 'div'\">\n <div #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </div>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'span'\">\n <span #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </span>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'a'\">\n <a #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </a>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'tr'\">\n <tr #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </tr>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'th'\">\n <th #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </th>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'td'\">\n <td #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </td>\n</ng-template>\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TransportContainerComponent, decorators: [{
type: Component,
args: [{ selector: 'transport-container', encapsulation: ViewEncapsulation.None, template: "<ng-template [ngIf]=\"elTag == 'div'\">\n <div #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </div>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'span'\">\n <span #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </span>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'a'\">\n <a #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </a>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'tr'\">\n <tr #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </tr>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'th'\">\n <th #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </th>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'td'\">\n <td #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </td>\n</ng-template>\n" }]
}], propDecorators: { inPlaceOf: [{
type: Input
}], reportEl: [{
type: Input
}], elTag: [{
type: Input
}], elClasses: [{
type: Input
}], elStyle: [{
type: Input
}], elAttrs: [{
type: Input
}], template: [{
type: Input
}], renderProps: [{
type: Input
}], rootElRef: [{
type: ViewChild,
args: ['rootEl']
}] } });
function replaceEl(subject, inPlaceOf) {
inPlaceOf.parentNode?.insertBefore(subject, inPlaceOf.nextSibling);
dummyContainer.appendChild(inPlaceOf);
}
function applyElAttrs(el, previousAttrs = {}, currentAttrs = {}) {
// these are called "attributes" but they manipulate DOM node *properties*
for (const attrName in previousAttrs) {
if (!(attrName in currentAttrs)) {
el[attrName] = null;
}
}
for (const attrName in currentAttrs) {
el[attrName] = currentAttrs[attrName];
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3J0LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvc3JjL3V0aWxzL3RyYW5zcG9ydC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbGliL3NyYy91dGlscy90cmFuc3BvcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBT1YsTUFBTSxlQUFlLENBQUM7OztBQUV2QixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztBQU96RCxNQUFNLE9BQU8sMkJBQTJCO0lBWXRDLGVBQWU7UUFDYixNQUFNLE1BQU0sR0FBWSxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLGtCQUFrQjtRQUV6RSxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFxQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLE1BQU0sR0FBd0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUM7UUFFbEUsNEVBQTRFO1FBQzVFLHVEQUF1RDtRQUN2RCxJQUFJLE1BQU0sRUFBRTtZQUNWLHFGQUFxRjtZQUNyRiw4Q0FBOEM7WUFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsS0FBSyxjQUFjLEVBQUU7Z0JBQ2hELFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsQyxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBcUIsQ0FBQyxDQUFDO2FBQ3RDO2lCQUFNO2dCQUNMLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFekMsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLFlBQVksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQy9FO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsV0FBVztRQUNULGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQzs7eUhBOUNVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLGlYQ3BCeEMsc3JEQWdEQTs0RkQ1QmEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHFCQUFxQixpQkFFaEIsaUJBQWlCLENBQUMsSUFBSTs4QkFHNUIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVlLFNBQVM7c0JBQTdCLFNBQVM7dUJBQUMsUUFBUTs7QUF1Q3JCLFNBQVMsU0FBUyxDQUFDLE9BQWdCLEVBQUUsU0FBa0I7SUFDckQsU0FBUyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRSxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FDbkIsRUFBVyxFQUNYLGdCQUFxQyxFQUFFLEVBQ3ZDLGVBQW9DLEVBQUU7SUFFdEMsMEVBQTBFO0lBRTFFLEtBQUssTUFBTSxRQUFRLElBQUksYUFBYSxFQUFFO1FBQ3BDLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxZQUFZLENBQUMsRUFBRTtZQUM5QixFQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQzlCO0tBQ0Y7SUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLFlBQVksRUFBRTtRQUNsQyxFQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ2hEO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBWaWV3Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBFbGVtZW50UmVmLFxuICBPbkNoYW5nZXMsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgZHVtbXlDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RyYW5zcG9ydC1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJhbnNwb3J0LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNwb3J0Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBpblBsYWNlT2YhOiBIVE1MRWxlbWVudDsgLy8gcmVxdWlyZWRcbiAgQElucHV0KCkgcmVwb3J0RWwhOiAoZWw6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4gdm9pZDsgLy8gcmVxdWlyZWRcbiAgQElucHV0KCkgZWxUYWchOiBzdHJpbmc7IC8vIHJlcXVpcmVkXG4gIEBJbnB1dCgpIGVsQ2xhc3Nlcz86IHN0cmluZ1tdO1xuICBASW5wdXQoKSBlbFN0eWxlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIEBJbnB1dCgpIGVsQXR0cnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQElucHV0KCkgdGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+OyAvLyByZXF1aXJlZFxuICBASW5wdXQoKSByZW5kZXJQcm9wcz86IGFueTtcblxuICBAVmlld0NoaWxkKCdyb290RWwnKSByb290RWxSZWY/OiBFbGVtZW50UmVmO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCByb290RWw6IEVsZW1lbnQgPSB0aGlzLnJvb3RFbFJlZj8ubmF0aXZlRWxlbWVudDsgLy8gYXNzdW1lZCBkZWZpbmVkXG5cbiAgICByZXBsYWNlRWwocm9vdEVsLCB0aGlzLmluUGxhY2VPZik7XG4gICAgYXBwbHlFbEF0dHJzKHJvb3RFbCwgdW5kZWZpbmVkLCB0aGlzLmVsQXR0cnMpO1xuICAgIHRoaXMucmVwb3J0RWwocm9vdEVsIGFzIEhUTUxFbGVtZW50KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCByb290RWw6IEVsZW1lbnQgfCB1bmRlZmluZWQgPSB0aGlzLnJvb3RFbFJlZj8ubmF0aXZlRWxlbWVudDtcblxuICAgIC8vIG5nT25DaGFuZ2VzIGlzIGNhbGxlZCBiZWZvcmUgbmdBZnRlclZpZXdJbml0IChhbmQgYmVmb3JlIERPTSBpbml0aWFsaXplcylcbiAgICAvLyBzbyBtYWtlIHN1cmUgcm9vdEVsIGlzIGRlZmluZWQgYmVmb3JlIGRvaW5nIGFueXRoaW5nXG4gICAgaWYgKHJvb3RFbCkge1xuICAgICAgLy8gSWYgdGhlIENvbnRlbnRDb250YWluZXIncyB0YWdOYW1lIGNoYW5nZWQsIGl0IHdpbGwgY3JlYXRlIGEgbmV3IERPTSBlbGVtZW50IGluIGl0c1xuICAgICAgLy8gb3JpZ2luYWwgcGxhY2UuIERldGVjdCB0aGlzIGFuZCByZS1yZXBsYWNlLlxuICAgICAgaWYgKHRoaXMuaW5QbGFjZU9mLnBhcmVudE5vZGUgIT09IGR1bW15Q29udGFpbmVyKSB7XG4gICAgICAgIHJlcGxhY2VFbChyb290RWwsIHRoaXMuaW5QbGFjZU9mKTtcbiAgICAgICAgYXBwbHlFbEF0dHJzKHJvb3RFbCwgdW5kZWZpbmVkLCB0aGlzLmVsQXR0cnMpO1xuICAgICAgICB0aGlzLnJlcG9ydEVsKHJvb3RFbCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBlbEF0dHJzQ2hhbmdlID0gY2hhbmdlc1snZWxBdHRycyddO1xuXG4gICAgICAgIGlmIChlbEF0dHJzQ2hhbmdlKSB7XG4gICAgICAgICAgYXBwbHlFbEF0dHJzKHJvb3RFbCwgZWxBdHRyc0NoYW5nZS5wcmV2aW91c1ZhbHVlLCBlbEF0dHJzQ2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBpbnZva2VkIEJFRk9SRSBjb21wb25lbnQgcmVtb3ZlZCBmcm9tIERPTVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBkdW1teUNvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLmluUGxhY2VPZik7XG4gICAgdGhpcy5yZXBvcnRFbChudWxsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlRWwoc3ViamVjdDogRWxlbWVudCwgaW5QbGFjZU9mOiBFbGVtZW50KTogdm9pZCB7XG4gIGluUGxhY2VPZi5wYXJlbnROb2RlPy5pbnNlcnRCZWZvcmUoc3ViamVjdCwgaW5QbGFjZU9mLm5leHRTaWJsaW5nKTtcbiAgZHVtbXlDb250YWluZXIuYXBwZW5kQ2hpbGQoaW5QbGFjZU9mKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlFbEF0dHJzKFxuICBlbDogRWxlbWVudCxcbiAgcHJldmlvdXNBdHRyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICBjdXJyZW50QXR0cnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxuKTogdm9pZCB7XG4gIC8vIHRoZXNlIGFyZSBjYWxsZWQgXCJhdHRyaWJ1dGVzXCIgYnV0IHRoZXkgbWFuaXB1bGF0ZSBET00gbm9kZSAqcHJvcGVydGllcypcblxuICBmb3IgKGNvbnN0IGF0dHJOYW1lIGluIHByZXZpb3VzQXR0cnMpIHtcbiAgICBpZiAoIShhdHRyTmFtZSBpbiBjdXJyZW50QXR0cnMpKSB7XG4gICAgICAoZWwgYXMgYW55KVthdHRyTmFtZV0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgYXR0ck5hbWUgaW4gY3VycmVudEF0dHJzKSB7XG4gICAgKGVsIGFzIGFueSlbYXR0ck5hbWVdID0gY3VycmVudEF0dHJzW2F0dHJOYW1lXTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICdkaXYnXCI+XG4gIDxkaXYgI3Jvb3RFbCBbbmdDbGFzc109XCJlbENsYXNzZXMgfHwgJydcIiBbbmdTdHlsZV09XCJlbFN0eWxlIHx8IG51bGxcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJlbmRlclByb3BzIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICdzcGFuJ1wiPlxuICA8c3BhbiAjcm9vdEVsIFtuZ0NsYXNzXT1cImVsQ2xhc3NlcyB8fCAnJ1wiIFtuZ1N0eWxlXT1cImVsU3R5bGUgfHwgbnVsbFwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcmVuZGVyUHJvcHMgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICdhJ1wiPlxuICA8YSAjcm9vdEVsIFtuZ0NsYXNzXT1cImVsQ2xhc3NlcyB8fCAnJ1wiIFtuZ1N0eWxlXT1cImVsU3R5bGUgfHwgbnVsbFwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcmVuZGVyUHJvcHMgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2E+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICd0cidcIj5cbiAgPHRyICNyb290RWwgW25nQ2xhc3NdPVwiZWxDbGFzc2VzIHx8ICcnXCIgW25nU3R5bGVdPVwiZWxTdHlsZSB8fCBudWxsXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByZW5kZXJQcm9wcyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvdHI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICd0aCdcIj5cbiAgPHRoICNyb290RWwgW25nQ2xhc3NdPVwiZWxDbGFzc2VzIHx8ICcnXCIgW25nU3R5bGVdPVwiZWxTdHlsZSB8fCBudWxsXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByZW5kZXJQcm9wcyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvdGg+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICd0ZCdcIj5cbiAgPHRkICNyb290RWwgW25nQ2xhc3NdPVwiZWxDbGFzc2VzIHx8ICcnXCIgW25nU3R5bGVdPVwiZWxTdHlsZSB8fCBudWxsXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByZW5kZXJQcm9wcyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvdGQ+XG48L25nLXRlbXBsYXRlPlxuIl19