ng-devui
Version:
DevUI components based on Angular
186 lines • 27.1 kB
JavaScript
import { Component, Input, TemplateRef } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export class LoadingComponent {
constructor() {
this.loadingStyle = 'default';
this.spinners = new Array(12);
}
ngOnChanges(changes) {
if (changes.target && this.target) {
this.targetName = this.target.nodeName;
}
}
ngOnInit() {
if (this.target) {
this.targetName = this.target.nodeName;
}
}
// Will overwrite this method in modal service
close() { }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoadingComponent, selector: "d-loading", inputs: { loadingTemplateRef: "loadingTemplateRef", message: "message", top: "top", left: "left", customPosition: "customPosition", target: "target", zIndex: "zIndex", loadingStyle: "loadingStyle" }, usesOnChanges: true, ngImport: i0, template: `<div class="devui-loading-wrapper" [ngClass]="{ 'devui-loading-full': targetName === 'BODY' }" [style.zIndex]="zIndex">
<ng-container *ngTemplateOutlet="loadingTemplateRef ? loadingTemplateRef : default"> </ng-container>
<ng-template #default>
<div
class="devui-spinner-wrapper"
[ngClass]="{ 'devui-fix-loading-position': !customPosition, 'devui-message-wrapper': !!message }"
[ngStyle]="{ top: top, left: left }"
>
<div class="devui-busy-default-sign">
<div *ngIf="loadingStyle === 'default'" class="devui-busy-default-spinner">
<svg viewBox="25 25 50 50">
<circle cx="50" cy="50" r="20" fill="none"></circle>
</svg>
<div class="devui-loading-dots">
<span *ngFor="let spinner of spinners"><i></i></span>
</div>
</div>
<div *ngIf="loadingStyle === 'infinity'" class="devui-infinity-loading-wrapper">
<svg
width="68px"
height="34px"
viewBox="0 0 68 34"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<defs>
<linearGradient
x1="115.001687%"
y1="62.0561305%"
x2="5.52129005%"
y2="37.7390732%"
id="devui-container-loading-linearGradient"
>
<stop stop-color="#299BFF" offset="0%"></stop>
<stop stop-color="#0064D6" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Loading" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="oldLoading" transform="translate(6.000000, 5.000000)" stroke-width="5">
<path
id="infinity-bg"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
d="M28.8273356,12.0651475 C34.9215537,4.0217158 40.200047,0 44.6627517,0 C51.4764195,0 57,5.5964615 57,12.4999677 C57,
19.4036031 51.4764195,25 44.6627517,25 C40.258896,25 35.0606745,21.0837108 29.0680872,13.2510678 L27.8765067,
11.6765806 C21.9073188,3.8921935 16.7275235,0 12.3372483,0 C5.52358054,0 0,5.5964615 0,12.4999677 C0,
19.4036031 5.52358054,25 12.3372483,25 C16.7979128,25 22.0734732,20.9820956 28.164057,
12.9462221 L28.8273356,12.0651475 Z"
></path>
<path
stroke="url(#devui-container-loading-linearGradient)"
id="infinity-outline"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
d="M28.8273356,12.0651475 C34.9215537,4.0217158 40.200047,0 44.6627517,0 C51.4764195,0 57,5.5964615 57,12.4999677 C57,
19.4036031 51.4764195,25 44.6627517,25 C40.258896,25 35.0606745,21.0837108 29.0680872,13.2510678 L27.8765067,
11.6765806 C21.9073188,3.8921935 16.7275235,0 12.3372483,0 C5.52358054,0 0,5.5964615 0,12.4999677 C0,
19.4036031 5.52358054,25 12.3372483,25 C16.7979128,25 22.0734732,20.9820956 28.164057,
12.9462221 L28.8273356,12.0651475 Z"
></path>
</g>
</g>
</svg>
</div>
<div class="devui-busy-default-text" *ngIf="!!message">{{ message }}</div>
</div>
</div>
</ng-template>
</div>`, isInline: true, styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-loading-wrapper{display:flex;flex:1 1 auto}.devui-loading-wrapper.devui-loading-full{position:fixed;top:0;right:0;bottom:0!important;left:0;z-index:var(--devui-z-index-full-page-overlay, 1080)}.devui-spinner-wrapper{position:absolute;z-index:var(--devui-z-index-full-page-overlay, 1080);width:max-content;max-width:100%;display:flex}.devui-message-wrapper{background:var(--devui-base-bg, #ffffff);border-radius:var(--devui-border-radius-card, 6px)}.devui-fix-loading-position{transform:translate(-50%,-50%)}.devui-busy-default-sign{position:relative;display:inline-flex;align-items:center;z-index:var(--devui-z-index-full-page-overlay, 1080);padding:12px;color:var(--devui-text, #191919)}.devui-busy-default-text{display:inline-block;margin:auto 0 auto 8px;max-width:400px;font-size:var(--devui-font-size, 12px);text-align:left}.devui-busy-default-spinner{position:relative;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center}.devui-busy-default-spinner svg{position:absolute;z-index:2;width:28px;height:28px;animation:animRotate 2s linear infinite}.devui-busy-default-spinner svg circle{animation:animDash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-linecap:round;stroke-width:4.5;stroke:var(--devui-primary, #0a59f7)}.devui-busy-default-spinner .devui-loading-dots{position:relative;width:24px;height:24px;animation:animRotate 12s linear infinite;backface-visibility:hidden;-webkit-backface-visibility:hidden}.devui-busy-default-spinner .devui-loading-dots span{width:100%;height:100%;position:absolute;left:0;top:0}.devui-busy-default-spinner .devui-loading-dots span:nth-child(2){transform:rotate(30deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(3){transform:rotate(60deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(4){transform:rotate(90deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(5){transform:rotate(120deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(6){transform:rotate(150deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(7){transform:rotate(180deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(8){transform:rotate(210deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(9){transform:rotate(240deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(10){transform:rotate(270deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(11){transform:rotate(300deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(12){transform:rotate(330deg)}.devui-busy-default-spinner .devui-loading-dots span i{width:2px;height:2px;display:block;margin:0 auto;border-radius:50%;background-color:var(--devui-list-item-active-bg, #cedefd)}#infinity-outline{stroke-dasharray:1.7px,170px;stroke-dashoffset:0;animation:anim 1.8s linear infinite;opacity:1}#infinity-bg{stroke:#e2e2e6}@keyframes anim{0%{stroke-dasharray:0px,170px;stroke-dashoffset:0px}55%{stroke-dasharray:40.8px,170px;stroke-dashoffset:-61.2px}to{stroke-dasharray:-158.1px,170px;stroke-dashoffset:-158.1px}}@keyframes animDash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}66%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes animRotate{to{transform:rotate(1turn)}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingComponent, decorators: [{
type: Component,
args: [{ selector: 'd-loading', template: `<div class="devui-loading-wrapper" [ngClass]="{ 'devui-loading-full': targetName === 'BODY' }" [style.zIndex]="zIndex">
<ng-container *ngTemplateOutlet="loadingTemplateRef ? loadingTemplateRef : default"> </ng-container>
<ng-template #default>
<div
class="devui-spinner-wrapper"
[ngClass]="{ 'devui-fix-loading-position': !customPosition, 'devui-message-wrapper': !!message }"
[ngStyle]="{ top: top, left: left }"
>
<div class="devui-busy-default-sign">
<div *ngIf="loadingStyle === 'default'" class="devui-busy-default-spinner">
<svg viewBox="25 25 50 50">
<circle cx="50" cy="50" r="20" fill="none"></circle>
</svg>
<div class="devui-loading-dots">
<span *ngFor="let spinner of spinners"><i></i></span>
</div>
</div>
<div *ngIf="loadingStyle === 'infinity'" class="devui-infinity-loading-wrapper">
<svg
width="68px"
height="34px"
viewBox="0 0 68 34"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<defs>
<linearGradient
x1="115.001687%"
y1="62.0561305%"
x2="5.52129005%"
y2="37.7390732%"
id="devui-container-loading-linearGradient"
>
<stop stop-color="#299BFF" offset="0%"></stop>
<stop stop-color="#0064D6" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Loading" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="oldLoading" transform="translate(6.000000, 5.000000)" stroke-width="5">
<path
id="infinity-bg"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
d="M28.8273356,12.0651475 C34.9215537,4.0217158 40.200047,0 44.6627517,0 C51.4764195,0 57,5.5964615 57,12.4999677 C57,
19.4036031 51.4764195,25 44.6627517,25 C40.258896,25 35.0606745,21.0837108 29.0680872,13.2510678 L27.8765067,
11.6765806 C21.9073188,3.8921935 16.7275235,0 12.3372483,0 C5.52358054,0 0,5.5964615 0,12.4999677 C0,
19.4036031 5.52358054,25 12.3372483,25 C16.7979128,25 22.0734732,20.9820956 28.164057,
12.9462221 L28.8273356,12.0651475 Z"
></path>
<path
stroke="url(#devui-container-loading-linearGradient)"
id="infinity-outline"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
d="M28.8273356,12.0651475 C34.9215537,4.0217158 40.200047,0 44.6627517,0 C51.4764195,0 57,5.5964615 57,12.4999677 C57,
19.4036031 51.4764195,25 44.6627517,25 C40.258896,25 35.0606745,21.0837108 29.0680872,13.2510678 L27.8765067,
11.6765806 C21.9073188,3.8921935 16.7275235,0 12.3372483,0 C5.52358054,0 0,5.5964615 0,12.4999677 C0,
19.4036031 5.52358054,25 12.3372483,25 C16.7979128,25 22.0734732,20.9820956 28.164057,
12.9462221 L28.8273356,12.0651475 Z"
></path>
</g>
</g>
</svg>
</div>
<div class="devui-busy-default-text" *ngIf="!!message">{{ message }}</div>
</div>
</div>
</ng-template>
</div>`, preserveWhitespaces: false, styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-loading-wrapper{display:flex;flex:1 1 auto}.devui-loading-wrapper.devui-loading-full{position:fixed;top:0;right:0;bottom:0!important;left:0;z-index:var(--devui-z-index-full-page-overlay, 1080)}.devui-spinner-wrapper{position:absolute;z-index:var(--devui-z-index-full-page-overlay, 1080);width:max-content;max-width:100%;display:flex}.devui-message-wrapper{background:var(--devui-base-bg, #ffffff);border-radius:var(--devui-border-radius-card, 6px)}.devui-fix-loading-position{transform:translate(-50%,-50%)}.devui-busy-default-sign{position:relative;display:inline-flex;align-items:center;z-index:var(--devui-z-index-full-page-overlay, 1080);padding:12px;color:var(--devui-text, #191919)}.devui-busy-default-text{display:inline-block;margin:auto 0 auto 8px;max-width:400px;font-size:var(--devui-font-size, 12px);text-align:left}.devui-busy-default-spinner{position:relative;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center}.devui-busy-default-spinner svg{position:absolute;z-index:2;width:28px;height:28px;animation:animRotate 2s linear infinite}.devui-busy-default-spinner svg circle{animation:animDash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-linecap:round;stroke-width:4.5;stroke:var(--devui-primary, #0a59f7)}.devui-busy-default-spinner .devui-loading-dots{position:relative;width:24px;height:24px;animation:animRotate 12s linear infinite;backface-visibility:hidden;-webkit-backface-visibility:hidden}.devui-busy-default-spinner .devui-loading-dots span{width:100%;height:100%;position:absolute;left:0;top:0}.devui-busy-default-spinner .devui-loading-dots span:nth-child(2){transform:rotate(30deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(3){transform:rotate(60deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(4){transform:rotate(90deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(5){transform:rotate(120deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(6){transform:rotate(150deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(7){transform:rotate(180deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(8){transform:rotate(210deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(9){transform:rotate(240deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(10){transform:rotate(270deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(11){transform:rotate(300deg)}.devui-busy-default-spinner .devui-loading-dots span:nth-child(12){transform:rotate(330deg)}.devui-busy-default-spinner .devui-loading-dots span i{width:2px;height:2px;display:block;margin:0 auto;border-radius:50%;background-color:var(--devui-list-item-active-bg, #cedefd)}#infinity-outline{stroke-dasharray:1.7px,170px;stroke-dashoffset:0;animation:anim 1.8s linear infinite;opacity:1}#infinity-bg{stroke:#e2e2e6}@keyframes anim{0%{stroke-dasharray:0px,170px;stroke-dashoffset:0px}55%{stroke-dasharray:40.8px,170px;stroke-dashoffset:-61.2px}to{stroke-dasharray:-158.1px,170px;stroke-dashoffset:-158.1px}}@keyframes animDash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}66%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes animRotate{to{transform:rotate(1turn)}}\n"] }]
}], propDecorators: { loadingTemplateRef: [{
type: Input
}], message: [{
type: Input
}], top: [{
type: Input
}], left: [{
type: Input
}], customPosition: [{
type: Input
}], target: [{
type: Input
}], zIndex: [{
type: Input
}], loadingStyle: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQStFaEcsTUFBTSxPQUFPLGdCQUFnQjtJQTdFN0I7UUFxRlcsaUJBQVksR0FBaUIsU0FBUyxDQUFDO1FBQ2hELGFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztLQWlCMUI7SUFkQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsS0FBSyxLQUFJLENBQUM7K0dBekJDLGdCQUFnQjttR0FBaEIsZ0JBQWdCLDhRQTNFakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBdUVIOzs0RkFJSSxnQkFBZ0I7a0JBN0U1QixTQUFTOytCQUNFLFdBQVcsWUFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0F1RUgsdUJBRWMsS0FBSzs4QkFHakIsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvYWRpbmdTdHlsZSB9IGZyb20gJy4vbG9hZGluZy50eXBlcyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZC1sb2FkaW5nJyxcclxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJkZXZ1aS1sb2FkaW5nLXdyYXBwZXJcIiBbbmdDbGFzc109XCJ7ICdkZXZ1aS1sb2FkaW5nLWZ1bGwnOiB0YXJnZXROYW1lID09PSAnQk9EWScgfVwiIFtzdHlsZS56SW5kZXhdPVwiekluZGV4XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1RlbXBsYXRlUmVmID8gbG9hZGluZ1RlbXBsYXRlUmVmIDogZGVmYXVsdFwiPiA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZGV2dWktc3Bpbm5lci13cmFwcGVyXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdkZXZ1aS1maXgtbG9hZGluZy1wb3NpdGlvbic6ICFjdXN0b21Qb3NpdGlvbiwgJ2RldnVpLW1lc3NhZ2Utd3JhcHBlcic6ICEhbWVzc2FnZSB9XCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7IHRvcDogdG9wLCBsZWZ0OiBsZWZ0IH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRldnVpLWJ1c3ktZGVmYXVsdC1zaWduXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1N0eWxlID09PSAnZGVmYXVsdCdcIiBjbGFzcz1cImRldnVpLWJ1c3ktZGVmYXVsdC1zcGlubmVyXCI+XHJcbiAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjI1IDI1IDUwIDUwXCI+XHJcbiAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCIyMFwiIGZpbGw9XCJub25lXCI+PC9jaXJjbGU+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV2dWktbG9hZGluZy1kb3RzXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHNwaW5uZXIgb2Ygc3Bpbm5lcnNcIj48aT48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImxvYWRpbmdTdHlsZSA9PT0gJ2luZmluaXR5J1wiIGNsYXNzPVwiZGV2dWktaW5maW5pdHktbG9hZGluZy13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICB3aWR0aD1cIjY4cHhcIlxyXG4gICAgICAgICAgICAgIGhlaWdodD1cIjM0cHhcIlxyXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNjggMzRcIlxyXG4gICAgICAgICAgICAgIHZlcnNpb249XCIxLjFcIlxyXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudFxyXG4gICAgICAgICAgICAgICAgICB4MT1cIjExNS4wMDE2ODclXCJcclxuICAgICAgICAgICAgICAgICAgeTE9XCI2Mi4wNTYxMzA1JVwiXHJcbiAgICAgICAgICAgICAgICAgIHgyPVwiNS41MjEyOTAwNSVcIlxyXG4gICAgICAgICAgICAgICAgICB5Mj1cIjM3LjczOTA3MzIlXCJcclxuICAgICAgICAgICAgICAgICAgaWQ9XCJkZXZ1aS1jb250YWluZXItbG9hZGluZy1saW5lYXJHcmFkaWVudFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjMjk5QkZGXCIgb2Zmc2V0PVwiMCVcIj48L3N0b3A+XHJcbiAgICAgICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjMDA2NEQ2XCIgb2Zmc2V0PVwiMTAwJVwiPjwvc3RvcD5cclxuICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgIDxnIGlkPVwiTG9hZGluZ1wiIHN0cm9rZT1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCIxXCIgZmlsbD1cIm5vbmVcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8ZyBpZD1cIm9sZExvYWRpbmdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNi4wMDAwMDAsIDUuMDAwMDAwKVwiIHN0cm9rZS13aWR0aD1cIjVcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBpZD1cImluZmluaXR5LWJnXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLW1pdGVybGltaXQ9XCIxMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0yOC44MjczMzU2LDEyLjA2NTE0NzUgQzM0LjkyMTU1MzcsNC4wMjE3MTU4IDQwLjIwMDA0NywwIDQ0LjY2Mjc1MTcsMCBDNTEuNDc2NDE5NSwwIDU3LDUuNTk2NDYxNSA1NywxMi40OTk5Njc3IEM1NyxcclxuICAgICAgICAgICAgICAgICAgICAxOS40MDM2MDMxIDUxLjQ3NjQxOTUsMjUgNDQuNjYyNzUxNywyNSBDNDAuMjU4ODk2LDI1IDM1LjA2MDY3NDUsMjEuMDgzNzEwOCAyOS4wNjgwODcyLDEzLjI1MTA2NzggTDI3Ljg3NjUwNjcsXHJcbiAgICAgICAgICAgICAgICAgICAgMTEuNjc2NTgwNiBDMjEuOTA3MzE4OCwzLjg5MjE5MzUgMTYuNzI3NTIzNSwwIDEyLjMzNzI0ODMsMCBDNS41MjM1ODA1NCwwIDAsNS41OTY0NjE1IDAsMTIuNDk5OTY3NyBDMCxcclxuICAgICAgICAgICAgICAgICAgICAxOS40MDM2MDMxIDUuNTIzNTgwNTQsMjUgMTIuMzM3MjQ4MywyNSBDMTYuNzk3OTEyOCwyNSAyMi4wNzM0NzMyLDIwLjk4MjA5NTYgMjguMTY0MDU3LFxyXG4gICAgICAgICAgICAgICAgICAgIDEyLjk0NjIyMjEgTDI4LjgyNzMzNTYsMTIuMDY1MTQ3NSBaXCJcclxuICAgICAgICAgICAgICAgICAgPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ1cmwoI2RldnVpLWNvbnRhaW5lci1sb2FkaW5nLWxpbmVhckdyYWRpZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJpbmZpbml0eS1vdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLW1pdGVybGltaXQ9XCIxMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0yOC44MjczMzU2LDEyLjA2NTE0NzUgQzM0LjkyMTU1MzcsNC4wMjE3MTU4IDQwLjIwMDA0NywwIDQ0LjY2Mjc1MTcsMCBDNTEuNDc2NDE5NSwwIDU3LDUuNTk2NDYxNSA1NywxMi40OTk5Njc3IEM1NyxcclxuICAgICAgICAgICAgICAgICAgICAxOS40MDM2MDMxIDUxLjQ3NjQxOTUsMjUgNDQuNjYyNzUxNywyNSBDNDAuMjU4ODk2LDI1IDM1LjA2MDY3NDUsMjEuMDgzNzEwOCAyOS4wNjgwODcyLDEzLjI1MTA2NzggTDI3Ljg3NjUwNjcsXHJcbiAgICAgICAgICAgICAgICAgICAgMTEuNjc2NTgwNiBDMjEuOTA3MzE4OCwzLjg5MjE5MzUgMTYuNzI3NTIzNSwwIDEyLjMzNzI0ODMsMCBDNS41MjM1ODA1NCwwIDAsNS41OTY0NjE1IDAsMTIuNDk5OTY3NyBDMCxcclxuICAgICAgICAgICAgICAgICAgICAxOS40MDM2MDMxIDUuNTIzNTgwNTQsMjUgMTIuMzM3MjQ4MywyNSBDMTYuNzk3OTEyOCwyNSAyMi4wNzM0NzMyLDIwLjk4MjA5NTYgMjguMTY0MDU3LFxyXG4gICAgICAgICAgICAgICAgICAgIDEyLjk0NjIyMjEgTDI4LjgyNzMzNTYsMTIuMDY1MTQ3NSBaXCJcclxuICAgICAgICAgICAgICAgICAgPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV2dWktYnVzeS1kZWZhdWx0LXRleHRcIiAqbmdJZj1cIiEhbWVzc2FnZVwiPnt7IG1lc3NhZ2UgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PmAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9hZGluZy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9hZGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBsb2FkaW5nVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgbWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxlZnQ6IHN0cmluZztcclxuICBASW5wdXQoKSBjdXN0b21Qb3NpdGlvbjogYm9vbGVhbjtcclxuICBASW5wdXQoKSB0YXJnZXQ6IEVsZW1lbnQ7XHJcbiAgQElucHV0KCkgekluZGV4OiBudW1iZXI7XHJcbiAgQElucHV0KCkgbG9hZGluZ1N0eWxlOiBMb2FkaW5nU3R5bGUgPSAnZGVmYXVsdCc7XHJcbiAgc3Bpbm5lcnMgPSBuZXcgQXJyYXkoMTIpO1xyXG4gIHRhcmdldE5hbWU6IHN0cmluZztcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMudGFyZ2V0ICYmIHRoaXMudGFyZ2V0KSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0TmFtZSA9IHRoaXMudGFyZ2V0Lm5vZGVOYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YXJnZXQpIHtcclxuICAgICAgdGhpcy50YXJnZXROYW1lID0gdGhpcy50YXJnZXQubm9kZU5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBXaWxsIG92ZXJ3cml0ZSB0aGlzIG1ldGhvZCBpbiBtb2RhbCBzZXJ2aWNlXHJcbiAgY2xvc2UoKSB7fVxyXG59XHJcbiJdfQ==