text: import { __decorate, __metadata } from "tslib";
  import { Component, Input, OnInit, OnChanges, SimpleChanges, SimpleChange, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef, TemplateRef } from '@angular/core';
  import { DomSanitizer, SafeResourceUrl, SafeStyle } from '@angular/platform-browser';
  import { NgxUiLoaderService } from './ngx-ui-loader.service';
  import { filter } from 'rxjs/operators';
  import { POSITION } from '../utils/enums';
  import { SPINNER_CONFIG } from '../utils/constants';
  let NgxUiLoaderComponent = class NgxUiLoaderComponent {
      /**
       * Constructor
       */
      constructor(domSanitizer, changeDetectorRef, ngxService) {
          this.domSanitizer = domSanitizer;
          this.changeDetectorRef = changeDetectorRef;
          this.ngxService = ngxService;
          this.initialized = false;
          this.defaultConfig = this.ngxService.getDefaultConfig();
          this.bgsColor = this.defaultConfig.bgsColor;
          this.bgsOpacity = this.defaultConfig.bgsOpacity;
          this.bgsPosition = this.defaultConfig.bgsPosition;
          this.bgsSize = this.defaultConfig.bgsSize;
          this.bgsType = this.defaultConfig.bgsType;
          this.fastFadeOut = this.defaultConfig.fastFadeOut;
          this.fgsColor = this.defaultConfig.fgsColor;
          this.fgsPosition = this.defaultConfig.fgsPosition;
          this.fgsSize = this.defaultConfig.fgsSize;
          this.fgsType = this.defaultConfig.fgsType;
          this.gap = this.defaultConfig.gap;
          this.loaderId = this.defaultConfig.masterLoaderId;
          this.logoPosition = this.defaultConfig.logoPosition;
          this.logoSize = this.defaultConfig.logoSize;
          this.logoUrl = this.defaultConfig.logoUrl;
          this.overlayBorderRadius = this.defaultConfig.overlayBorderRadius;
          this.overlayColor = this.defaultConfig.overlayColor;
          this.pbColor = this.defaultConfig.pbColor;
          this.pbDirection = this.defaultConfig.pbDirection;
          this.pbThickness = this.defaultConfig.pbThickness;
          this.hasProgressBar = this.defaultConfig.hasProgressBar;
          this.text = this.defaultConfig.text;
          this.textColor = this.defaultConfig.textColor;
          this.textPosition = this.defaultConfig.textPosition;
      }
      /**
       * On init event
       */
      ngOnInit() {
          this.initializeSpinners();
          this.ngxService.bindLoaderData(this.loaderId);
          this.determinePositions();
          this.trustedLogoUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(this.logoUrl);
          this.showForegroundWatcher = this.ngxService.showForeground$
              .pipe(filter((showEvent) => this.loaderId === showEvent.loaderId))
              .subscribe(data => {
              this.showForeground = data.isShow;
              this.changeDetectorRef.markForCheck();
          });
          this.showBackgroundWatcher = this.ngxService.showBackground$
              .pipe(filter((showEvent) => this.loaderId === showEvent.loaderId))
              .subscribe(data => {
              this.showBackground = data.isShow;
              this.changeDetectorRef.markForCheck();
          });
          this.foregroundClosingWatcher = this.ngxService.foregroundClosing$
              .pipe(filter((showEvent) => this.loaderId === showEvent.loaderId))
              .subscribe(data => {
              this.foregroundClosing = data.isShow;
              this.changeDetectorRef.markForCheck();
          });
          this.backgroundClosingWatcher = this.ngxService.backgroundClosing$
              .pipe(filter((showEvent) => this.loaderId === showEvent.loaderId))
              .subscribe(data => {
              this.backgroundClosing = data.isShow;
              this.changeDetectorRef.markForCheck();
          });
          this.initialized = true;
      }
      /**
       * On changes event
       */
      ngOnChanges(changes) {
          if (!this.initialized) {
              return;
          }
          const bgsTypeChange = changes.bgsType;
          const fgsTypeChange = changes.fgsType;
          const logoUrlChange = changes.logoUrl;
          if (fgsTypeChange || bgsTypeChange) {
              this.initializeSpinners();
          }
          this.determinePositions();
          if (logoUrlChange) {
              this.trustedLogoUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(this.logoUrl);
          }
      }
      /**
       * Initialize spinners
       */
      initializeSpinners() {
          this.fgDivs = Array(SPINNER_CONFIG[this.fgsType].divs).fill(1);
          this.fgSpinnerClass = SPINNER_CONFIG[this.fgsType].class;
          this.bgDivs = Array(SPINNER_CONFIG[this.bgsType].divs).fill(1);
          this.bgSpinnerClass = SPINNER_CONFIG[this.bgsType].class;
      }
      /**
       * Determine the positions of spinner, logo and text
       */
      determinePositions() {
          this.logoTop = 'initial';
          this.spinnerTop = 'initial';
          this.textTop = 'initial';
          const textSize = 24;
          if (this.logoPosition.startsWith('center')) {
              this.logoTop = '50%';
          }
          else if (this.logoPosition.startsWith('top')) {
              this.logoTop = '30px';
          }
          if (this.fgsPosition.startsWith('center')) {
              this.spinnerTop = '50%';
          }
          else if (this.fgsPosition.startsWith('top')) {
              this.spinnerTop = '30px';
          }
          if (this.textPosition.startsWith('center')) {
              this.textTop = '50%';
          }
          else if (this.textPosition.startsWith('top')) {
              this.textTop = '30px';
          }
          if (this.fgsPosition === POSITION.centerCenter) {
              if (this.logoUrl && this.logoPosition === POSITION.centerCenter) {
                  if (this.text && this.textPosition === POSITION.centerCenter) {
                      // logo, spinner and text
                      this.logoTop = this.domSanitizer.bypassSecurityTrustStyle(`calc(50% - ${this.fgsSize / 2}px - ${textSize / 2}px - ${this.gap}px)`);
                      this.spinnerTop = this.domSanitizer.bypassSecurityTrustStyle(`calc(50% + ${this.logoSize / 2}px - ${textSize / 2}px)`);
                      this.textTop = this.domSanitizer.bypassSecurityTrustStyle(`calc(50% + ${this.logoSize / 2}px + ${this.gap}px + ${this.fgsSize / 2}px)`);
                  }
                  else {
                      // logo and spinner
                      this.logoTop = this.domSanitizer.bypassSecurityTrustStyle(`calc(50% - ${this.fgsSize / 2}px - ${this.gap / 2}px)`);
                      this.spinnerTop = this.domSanitizer.bypassSecurityTrustStyle(`calc(50% + ${this.logoSize / 2}px + ${this.gap / 2}px)`);
                  }
              }
              else {
                  if (this.text && this.textPosition === POSITION.centerCenter) {
                      // spinner and text
                      this.spinnerTop = this.domSanitizer.bypassSecurityTrustStyle(`calc(50% - ${textSize / 2}px - ${this.gap / 2}px)`);
                      this.textTop = this.domSanitizer.bypassSecurityTrustStyle(`calc(50% + ${this.fgsSize / 2}px + ${this.gap / 2}px)`);
                  }
              }
          }
          else {
              if (this.logoUrl && this.logoPosition === POSITION.centerCenter && this.text && this.textPosition === POSITION.centerCenter) {
                  // logo and text
                  this.logoTop = this.domSanitizer.bypassSecurityTrustStyle(`calc(50% - ${textSize / 2}px - ${this.gap / 2}px)`);
                  this.textTop = this.domSanitizer.bypassSecurityTrustStyle(`calc(50% + ${this.logoSize / 2}px + ${this.gap / 2}px)`);
              }
          }
      }
      /**
       * On destroy event
       */
      ngOnDestroy() {
          this.ngxService.destroyLoaderData(this.loaderId);
          if (this.showForegroundWatcher) {
              this.showForegroundWatcher.unsubscribe();
          }
          if (this.showBackgroundWatcher) {
              this.showBackgroundWatcher.unsubscribe();
          }
          if (this.foregroundClosingWatcher) {
              this.foregroundClosingWatcher.unsubscribe();
          }
          if (this.backgroundClosingWatcher) {
              this.backgroundClosingWatcher.unsubscribe();
          }
      }
  };
  NgxUiLoaderComponent.ctorParameters = () => [
      { type: DomSanitizer },
      { type: ChangeDetectorRef },
      { type: NgxUiLoaderService }
  ];
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "bgsColor", void 0);
  __decorate([
      Input(),
      __metadata("design:type", Number)
  ], NgxUiLoaderComponent.prototype, "bgsOpacity", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "bgsPosition", void 0);
  __decorate([
      Input(),
      __metadata("design:type", Number)
  ], NgxUiLoaderComponent.prototype, "bgsSize", void 0);
  __decorate([
      Input(),
      __metadata("design:type", TemplateRef)
  ], NgxUiLoaderComponent.prototype, "bgsTemplate", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "bgsType", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "fgsColor", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "fgsPosition", void 0);
  __decorate([
      Input(),
      __metadata("design:type", Number)
  ], NgxUiLoaderComponent.prototype, "fgsSize", void 0);
  __decorate([
      Input(),
      __metadata("design:type", TemplateRef)
  ], NgxUiLoaderComponent.prototype, "fgsTemplate", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "fgsType", void 0);
  __decorate([
      Input(),
      __metadata("design:type", Number)
  ], NgxUiLoaderComponent.prototype, "gap", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "loaderId", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "logoPosition", void 0);
  __decorate([
      Input(),
      __metadata("design:type", Number)
  ], NgxUiLoaderComponent.prototype, "logoSize", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "logoUrl", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "overlayBorderRadius", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "overlayColor", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "pbColor", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "pbDirection", void 0);
  __decorate([
      Input(),
      __metadata("design:type", Number)
  ], NgxUiLoaderComponent.prototype, "pbThickness", void 0);
  __decorate([
      Input(),
      __metadata("design:type", Boolean)
  ], NgxUiLoaderComponent.prototype, "hasProgressBar", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "text", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "textColor", void 0);
  __decorate([
      Input(),
      __metadata("design:type", String)
  ], NgxUiLoaderComponent.prototype, "textPosition", void 0);
  NgxUiLoaderComponent = __decorate([
      Component({
          selector: 'ngx-ui-loader',
          template: "<!-- Progress bar {{{ -->\n<div\n  *ngIf=\"hasProgressBar\"\n  class=\"ngx-progress-bar\"\n  [class.ngx-position-absolute]=\"loaderId !== defaultConfig.masterLoaderId\"\n  [ngClass]=\"'ngx-progress-bar-' + pbDirection\"\n  [style.height.px]=\"pbThickness\"\n  [style.color]=\"pbColor\"\n  [class.loading-foreground]=\"showForeground\"\n  [class.foreground-closing]=\"foregroundClosing\"\n  [class.fast-closing]=\"foregroundClosing && fastFadeOut\"\n></div>\n<!-- Progress bar }}} -->\n\n<!-- Foreground container {{{ -->\n<div\n  class=\"ngx-overlay\"\n  [class.ngx-position-absolute]=\"loaderId !== defaultConfig.masterLoaderId\"\n  [style.background-color]=\"overlayColor\"\n  [style.border-radius]=\"overlayBorderRadius\"\n  [class.loading-foreground]=\"showForeground\"\n  [class.foreground-closing]=\"foregroundClosing\"\n  [class.fast-closing]=\"foregroundClosing && fastFadeOut\"\n>\n  <!-- Logo {{{ -->\n  <img\n    *ngIf=\"logoUrl\"\n    class=\"ngx-loading-logo\"\n    [ngClass]=\"logoPosition\"\n    [src]=\"trustedLogoUrl\"\n    [style.width.px]=\"logoSize\"\n    [style.height.px]=\"logoSize\"\n    [style.top]=\"logoTop\"\n  />\n  <!-- Logo }}} -->\n\n  <!-- Foreground spinner {{{ -->\n  <div\n    class=\"ngx-foreground-spinner\"\n    [ngClass]=\"fgsPosition\"\n    [style.color]=\"fgsColor\"\n    [style.width.px]=\"fgsSize\"\n    [style.height.px]=\"fgsSize\"\n    [style.top]=\"spinnerTop\"\n  >\n    <div *ngIf=\"!fgsTemplate; else foregroundTemplate\" [class]=\"fgSpinnerClass\">\n      <div *ngFor=\"let div of fgDivs\"></div>\n    </div>\n    <ng-template #foregroundTemplate>\n      <ng-container *ngTemplateOutlet=\"fgsTemplate\"></ng-container>\n    </ng-template>\n  </div>\n  <!-- Foreground spinner }}} -->\n\n  <!-- Loading text {{{ -->\n  <div class=\"ngx-loading-text\" [ngClass]=\"textPosition\" [style.top]=\"textTop\" [style.color]=\"textColor\">{{ text }}</div>\n  <!-- Loading text }}} -->\n</div>\n<!-- Foreground container }}} -->\n\n<!-- Background spinner {{{ -->\n<div\n  class=\"ngx-background-spinner\"\n  [class.ngx-position-absolute]=\"loaderId !== defaultConfig.masterLoaderId\"\n  [ngClass]=\"bgsPosition\"\n  [class.loading-background]=\"showBackground\"\n  [class.background-closing]=\"backgroundClosing\"\n  [class.fast-closing]=\"backgroundClosing && fastFadeOut\"\n  [style.width.px]=\"bgsSize\"\n  [style.height.px]=\"bgsSize\"\n  [style.color]=\"bgsColor\"\n  [style.opacity]=\"bgsOpacity\"\n>\n  <div *ngIf=\"!bgsTemplate; else backgroundTemplate\" [class]=\"bgSpinnerClass\">\n    <div *ngFor=\"let div of bgDivs\"></div>\n  </div>\n  <ng-template #backgroundTemplate>\n    <ng-container *ngTemplateOutlet=\"bgsTemplate\"></ng-container>\n  </ng-template>\n</div>\n<!-- Background spinner }}} -->\n",
          changeDetection: ChangeDetectionStrategy.OnPush,
          styles: [".ngx-progress-bar{position:fixed;top:0;left:0;width:100%;height:3px;z-index:99999!important;display:none;color:#00acc1;overflow:hidden}.ngx-progress-bar.foreground-closing,.ngx-progress-bar.loading-foreground{display:block}.ngx-progress-bar.foreground-closing{opacity:0!important;transition:opacity .5s ease-out .5s}.ngx-progress-bar.fast-closing{transition:opacity .3s ease-out .3s!important}.ngx-progress-bar::after,.ngx-progress-bar::before{background-color:currentColor;content:\"\";display:block;width:100%;height:100%;position:absolute;top:0}.ngx-progress-bar-ltr::before{transform:translate3d(-100%,0,0)}.ngx-progress-bar-ltr::after{-webkit-animation:12s ease-out progressBar-slide-ltr;animation:12s ease-out progressBar-slide-ltr;transform:translate3d(-5%,0,0)}.ngx-progress-bar-rtl::before{transform:translate3d(100%,0,0)}.ngx-progress-bar-rtl::after{-webkit-animation:12s ease-out progressBar-slide-rtl;animation:12s ease-out progressBar-slide-rtl;transform:translate3d(5%,0,0)}.foreground-closing.ngx-progress-bar-ltr::before{-webkit-animation:1s ease-out progressBar-slide-complete-ltr;animation:1s ease-out progressBar-slide-complete-ltr;transform:translate3d(0,0,0)}.fast-closing.ngx-progress-bar-ltr::before{-webkit-animation:.6s ease-out progressBar-slide-complete-ltr!important;animation:.6s ease-out progressBar-slide-complete-ltr!important}.foreground-closing.ngx-progress-bar-rtl::before{-webkit-animation:1s ease-out progressBar-slide-complete-rtl;animation:1s ease-out progressBar-slide-complete-rtl;transform:translate3d(0,0,0)}.fast-closing.ngx-progress-bar-rtl::before{-webkit-animation:.6s ease-out progressBar-slide-complete-rtl!important;animation:.6s ease-out progressBar-slide-complete-rtl!important}@-webkit-keyframes progressBar-slide-ltr{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(-5%,0,0)}}@keyframes progressBar-slide-ltr{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(-5%,0,0)}}@-webkit-keyframes progressBar-slide-rtl{from{transform:translate3d(100%,0,0)}to{transform:translate3d(5%,0,0)}}@keyframes progressBar-slide-rtl{from{transform:translate3d(100%,0,0)}to{transform:translate3d(5%,0,0)}}@-webkit-keyframes progressBar-slide-complete-ltr{0%{transform:translate3d(-75%,0,0)}50%{transform:translate3d(0,0,0)}}@keyframes progressBar-slide-complete-ltr{0%{transform:translate3d(-75%,0,0)}50%{transform:translate3d(0,0,0)}}@-webkit-keyframes progressBar-slide-complete-rtl{0%{transform:translate3d(75%,0,0)}50%{transform:translate3d(0,0,0)}}@keyframes progressBar-slide-complete-rtl{0%{transform:translate3d(75%,0,0)}50%{transform:translate3d(0,0,0)}}.ngx-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99998!important;background-color:rgba(40,40,40,.8);cursor:progress;display:none}.ngx-overlay.foreground-closing,.ngx-overlay.loading-foreground{display:block}.ngx-overlay.foreground-closing{opacity:0!important;transition:opacity .5s ease-out .5s}.ngx-overlay.fast-closing{transition:opacity .3s ease-out .3s!important}.ngx-overlay>.ngx-foreground-spinner{position:fixed;width:60px;height:60px;margin:0;color:#00acc1}.ngx-overlay>.ngx-loading-logo{position:fixed;margin:0;width:120px;height:120px}.ngx-overlay>.ngx-loading-text{position:fixed;margin:0;font-family:sans-serif;font-weight:400;font-size:1.2em;color:#fff}.ngx-background-spinner{position:fixed;z-index:99997!important;width:60px;height:60px;margin:0;color:#00acc1;opacity:.6;display:none}.ngx-background-spinner.background-closing,.ngx-background-spinner.loading-background{display:block}.ngx-background-spinner.background-closing{opacity:0!important;transition:opacity .7s ease-out}.ngx-background-spinner.fast-closing{transition:opacity .4s ease-out!important}.ngx-position-absolute,.ngx-position-absolute>.ngx-foreground-spinner,.ngx-position-absolute>.ngx-loading-logo,.ngx-position-absolute>.ngx-loading-text{position:absolute!important}.ngx-position-absolute.ngx-progress-bar{z-index:99996!important}.ngx-position-absolute.ngx-overlay{z-index:99995!important}.ngx-position-absolute .sk-square-jelly-box>div:nth-child(1),.ngx-position-absolute.ngx-background-spinner{z-index:99994!important}.top-left{top:30px;left:30px}.top-center{top:30px;left:50%;transform:translateX(-50%)}.top-right{top:30px;right:30px}.center-left{top:50%;left:30px;transform:translateY(-50%)}.center-center{top:50%;left:50%;transform:translate(-50%,-50%)}.center-right{top:50%;right:30px;transform:translateY(-50%)}.bottom-left{bottom:30px;left:30px}.bottom-center{bottom:30px;left:50%;transform:translateX(-50%)}.bottom-right{bottom:30px;right:30px}.sk-ball-scale-multiple,.sk-ball-scale-multiple>div{position:relative;box-sizing:border-box}.sk-ball-scale-multiple{width:100%;height:100%;font-size:0}.sk-ball-scale-multiple>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;left:0;width:100%;height:100%;border-radius:100%;opacity:0;-webkit-animation:1s linear infinite ball-scale-multiple;animation:1s linear infinite ball-scale-multiple}.sk-ball-scale-multiple>div:nth-child(2){-webkit-animation-delay:.2s;animation-delay:.2s}.sk-ball-scale-multiple>div:nth-child(3){-webkit-animation-delay:.4s;animation-delay:.4s}@-webkit-keyframes ball-scale-multiple{0%{opacity:0;transform:scale(0)}5%{opacity:.75}100%{opacity:0;transform:scale(1)}}@keyframes ball-scale-multiple{0%{opacity:0;transform:scale(0)}5%{opacity:.75}100%{opacity:0;transform:scale(1)}}.sk-ball-spin,.sk-ball-spin>div{position:relative;box-sizing:border-box}.sk-ball-spin{width:100%;height:100%;font-size:0}.sk-ball-spin>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:25%;height:25%;margin-top:-12.5%;margin-left:-12.5%;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-spin-clockwise;animation:1s ease-in-out infinite ball-spin-clockwise}.sk-ball-spin>div:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.sk-ball-spin>div:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.sk-ball-spin>div:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.sk-ball-spin>div:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.sk-ball-spin>div:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.sk-ball-spin>div:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.sk-ball-spin>div:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.sk-ball-spin>div:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:-2s;animation-delay:-2s}@-webkit-keyframes ball-spin{0%,100%{opacity:1;transform:scale(1)}20%{opacity:1}80%{opacity:0;transform:scale(0)}}@keyframes ball-spin{0%,100%{opacity:1;transform:scale(1)}20%{opacity:1}80%{opacity:0;transform:scale(0)}}.sk-ball-spin-clockwise,.sk-ball-spin-clockwise>div{position:relative;box-sizing:border-box}.sk-ball-spin-clockwise{width:100%;height:100%;font-size:0}.sk-ball-spin-clockwise>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:25%;height:25%;margin-top:-12.5%;margin-left:-12.5%;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-spin-clockwise;animation:1s ease-in-out infinite ball-spin-clockwise}.sk-ball-spin-clockwise>div:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-875ms;animation-delay:-875ms}.sk-ball-spin-clockwise>div:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-.75s;animation-delay:-.75s}.sk-ball-spin-clockwise>div:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-625ms;animation-delay:-625ms}.sk-ball-spin-clockwise>div:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-.5s;animation-delay:-.5s}.sk-ball-spin-clockwise>div:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-375ms;animation-delay:-375ms}.sk-ball-spin-clockwise>div:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-.25s;animation-delay:-.25s}.sk-ball-spin-clockwise>div:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-125ms;animation-delay:-125ms}.sk-ball-spin-clockwise>div:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:0s;animation-delay:0s}@-webkit-keyframes ball-spin-clockwise{0%,100%{opacity:1;transform:scale(1)}20%{opacity:1}80%{opacity:0;transform:scale(0)}}@keyframes ball-spin-clockwise{0%,100%{opacity:1;transform:scale(1)}20%{opacity:1}80%{opacity:0;transform:scale(0)}}.sk-ball-spin-clockwise-fade-rotating,.sk-ball-spin-clockwise-fade-rotating>div{position:relative;box-sizing:border-box}.sk-ball-spin-clockwise-fade-rotating{font-size:0;width:100%;height:100%;-webkit-animation:6s linear infinite ball-spin-clockwise-fade-rotating-rotate;animation:6s linear infinite ball-spin-clockwise-fade-rotating-rotate}.sk-ball-spin-clockwise-fade-rotating>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:25%;height:25%;margin-top:-12.5%;margin-left:-12.5%;border-radius:100%;-webkit-animation:1s linear infinite ball-spin-clockwise-fade-rotating;animation:1s linear infinite ball-spin-clockwise-fade-rotating}.sk-ball-spin-clockwise-fade-rotating>div:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-875ms;animation-delay:-875ms}.sk-ball-spin-clockwise-fade-rotating>div:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-.75s;animation-delay:-.75s}.sk-ball-spin-clockwise-fade-rotating>div:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-625ms;animation-delay:-625ms}.sk-ball-spin-clockwise-fade-rotating>div:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-.5s;animation-delay:-.5s}.sk-ball-spin-clockwise-fade-rotating>div:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-375ms;animation-delay:-375ms}.sk-ball-spin-clockwise-fade-rotating>div:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-.25s;animation-delay:-.25s}.sk-ball-spin-clockwise-fade-rotating>div:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-125ms;animation-delay:-125ms}.sk-ball-spin-clockwise-fade-rotating>div:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:0s;animation-delay:0s}@-webkit-keyframes ball-spin-clockwise-fade-rotating-rotate{100%{transform:rotate(-360deg)}}@keyframes ball-spin-clockwise-fade-rotating-rotate{100%{transform:rotate(-360deg)}}@-webkit-keyframes ball-spin-clockwise-fade-rotating{50%{opacity:.25;transform:scale(.5)}100%{opacity:1;transform:scale(1)}}@keyframes ball-spin-clockwise-fade-rotating{50%{opacity:.25;transform:scale(.5)}100%{opacity:1;transform:scale(1)}}.sk-ball-spin-fade-rotating,.sk-ball-spin-fade-rotating>div{position:relative;box-sizing:border-box}.sk-ball-spin-fade-rotating{width:100%;height:100%;font-size:0;-webkit-animation:6s linear infinite ball-spin-fade-rotate;animation:6s linear infinite ball-spin-fade-rotate}.sk-ball-spin-fade-rotating>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:25%;height:25%;margin-top:-12.5%;margin-left:-12.5%;border-radius:100%;-webkit-animation:1s linear infinite ball-spin-fade;animation:1s linear infinite ball-spin-fade}.sk-ball-spin-fade-rotating>div:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.sk-ball-spin-fade-rotating>div:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.sk-ball-spin-fade-rotating>div:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.sk-ball-spin-fade-rotating>div:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.sk-ball-spin-fade-rotating>div:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.sk-ball-spin-fade-rotating>div:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.sk-ball-spin-fade-rotating>div:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.sk-ball-spin-fade-rotating>div:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:-2s;animation-delay:-2s}@-webkit-keyframes ball-spin-fade-rotate{100%{transform:rotate(360deg)}}@keyframes ball-spin-fade-rotate{100%{transform:rotate(360deg)}}@-webkit-keyframes ball-spin-fade{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.25;transform:scale(.5)}}@keyframes ball-spin-fade{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.25;transform:scale(.5)}}.sk-chasing-dots{margin:auto;width:100%;height:100%;position:absolute;text-align:center;-webkit-animation:2s linear infinite sk-chasingDots-rotate;animation:2s linear infinite sk-chasingDots-rotate}.sk-chasing-dots>div{width:60%;height:60%;display:inline-block;position:absolute;top:0;background-color:currentColor;border-radius:100%;-webkit-animation:2s ease-in-out infinite sk-chasingDots-bounce;animation:2s ease-in-out infinite sk-chasingDots-bounce}.sk-chasing-dots>div:nth-child(2){top:auto;bottom:0;-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-chasingDots-rotate{100%{transform:rotate(360deg)}}@keyframes sk-chasingDots-rotate{100%{transform:rotate(360deg)}}@-webkit-keyframes sk-chasingDots-bounce{0%,100%{transform:scale(0)}50%{transform:scale(1)}}@keyframes sk-chasingDots-bounce{0%,100%{transform:scale(0)}50%{transform:scale(1)}}.sk-circle{margin:auto;width:100%;height:100%;position:relative}.sk-circle>div{width:100%;height:100%;position:absolute;left:0;top:0}.sk-circle>div::before{content:\"\";display:block;margin:0 auto;width:15%;height:15%;background-color:currentColor;border-radius:100%;-webkit-animation:1.2s ease-in-out infinite both sk-circle-bounceDelay;animation:1.2s ease-in-out infinite both sk-circle-bounceDelay}.sk-circle>div:nth-child(2){transform:rotate(30deg)}.sk-circle>div:nth-child(3){transform:rotate(60deg)}.sk-circle>div:nth-child(4){transform:rotate(90deg)}.sk-circle>div:nth-child(5){transform:rotate(120deg)}.sk-circle>div:nth-child(6){transform:rotate(150deg)}.sk-circle>div:nth-child(7){transform:rotate(180deg)}.sk-circle>div:nth-child(8){transform:rotate(210deg)}.sk-circle>div:nth-child(9){transform:rotate(240deg)}.sk-circle>div:nth-child(10){transform:rotate(270deg)}.sk-circle>div:nth-child(11){transform:rotate(300deg)}.sk-circle>div:nth-child(12){transform:rotate(330deg)}.sk-circle>div:nth-child(2)::before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-circle>div:nth-child(3)::before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-circle>div:nth-child(4)::before{-webkit-animation-delay:-.9s;animation-delay:-.9s}.sk-circle>div:nth-child(5)::before{-webkit-animation-delay:-.8s;animation-delay:-.8s}.sk-circle>div:nth-child(6)::before{-webkit-animation-delay:-.7s;animation-delay:-.7s}.sk-circle>div:nth-child(7)::before{-webkit-animation-delay:-.6s;animation-delay:-.6s}.sk-circle>div:nth-child(8)::before{-webkit-animation-delay:-.5s;animation-delay:-.5s}.sk-circle>div:nth-child(9)::before{-webkit-animation-delay:-.4s;animation-delay:-.4s}.sk-circle>div:nth-child(10)::before{-webkit-animation-delay:-.3s;animation-delay:-.3s}.sk-circle>div:nth-child(11)::before{-webkit-animation-delay:-.2s;animation-delay:-.2s}.sk-circle>div:nth-child(12)::before{-webkit-animation-delay:-.1s;animation-delay:-.1s}@-webkit-keyframes sk-circle-bounceDelay{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}@keyframes sk-circle-bounceDelay{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.sk-cube-grid{width:100%;height:100%;margin:auto}.sk-cube-grid>div{width:33%;height:33%;background-color:currentColor;float:left;-webkit-animation:1.3s ease-in-out infinite sk-cubeGrid-scaleDelay;animation:1.3s ease-in-out infinite sk-cubeGrid-scaleDelay}.sk-cube-grid>div:nth-child(1){-webkit-animation-delay:.2s;animation-delay:.2s}.sk-cube-grid>div:nth-child(2){-webkit-animation-delay:.3s;animation-delay:.3s}.sk-cube-grid>div:nth-child(3){-webkit-animation-delay:.4s;animation-delay:.4s}.sk-cube-grid>div:nth-child(4){-webkit-animation-delay:.1s;animation-delay:.1s}.sk-cube-grid>div:nth-child(5){-webkit-animation-delay:.2s;animation-delay:.2s}.sk-cube-grid>div:nth-child(6){-webkit-animation-delay:.3s;animation-delay:.3s}.sk-cube-grid>div:nth-child(7){-webkit-animation-delay:0s;animation-delay:0s}.sk-cube-grid>div:nth-child(8){-webkit-animation-delay:.1s;animation-delay:.1s}.sk-cube-grid>div:nth-child(9){-webkit-animation-delay:.2s;animation-delay:.2s}@-webkit-keyframes sk-cubeGrid-scaleDelay{0%,100%,70%{transform:scale3D(1,1,1)}35%{transform:scale3D(0,0,1)}}@keyframes sk-cubeGrid-scaleDelay{0%,100%,70%{transform:scale3D(1,1,1)}35%{transform:scale3D(0,0,1)}}.sk-double-bounce{width:100%;height:100%;position:relative;margin:auto}.sk-double-bounce>div{width:100%;height:100%;border-radius:50%;background-color:currentColor;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:2s ease-in-out infinite sk-doubleBounce-bounce;animation:2s ease-in-out infinite sk-doubleBounce-bounce}.sk-double-bounce>div:nth-child(2){-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-doubleBounce-bounce{0%,100%{transform:scale(0)}50%{transform:scale(1)}}@keyframes sk-doubleBounce-bounce{0%,100%{transform:scale(0)}50%{transform:scale(1)}}.sk-fading-circle{margin:auto;width:100%;height:100%;position:relative}.sk-fading-circle>div{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle>div::before{content:\"\";display:block;margin:0 auto;width:15%;height:15%;background-color:currentColor;border-radius:100%;-webkit-animation:1.2s ease-in-out infinite both sk-fadingCircle-FadeDelay;animation:1.2s ease-in-out infinite both sk-fadingCircle-FadeDelay}.sk-fading-circle>div:nth-child(2){transform:rotate(30deg)}.sk-fading-circle>div:nth-child(3){transform:rotate(60deg)}.sk-fading-circle>div:nth-child(4){transform:rotate(90deg)}.sk-fading-circle>div:nth-child(5){transform:rotate(120deg)}.sk-fading-circle>div:nth-child(6){transform:rotate(150deg)}.sk-fading-circle>div:nth-child(7){transform:rotate(180deg)}.sk-fading-circle>div:nth-child(8){transform:rotate(210deg)}.sk-fading-circle>div:nth-child(9){transform:rotate(240deg)}.sk-fading-circle>div:nth-child(10){transform:rotate(270deg)}.sk-fading-circle>div:nth-child(11){transform:rotate(300deg)}.sk-fading-circle>div:nth-child(12){transform:rotate(330deg)}.sk-fading-circle>div:nth-child(2)::before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-fading-circle>div:nth-child(3)::before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-fading-circle>div:nth-child(4)::before{-webkit-animation-delay:-.9s;animation-delay:-.9s}.sk-fading-circle>div:nth-child(5)::before{-webkit-animation-delay:-.8s;animation-delay:-.8s}.sk-fading-circle>div:nth-child(6)::before{-webkit-animation-delay:-.7s;animation-delay:-.7s}.sk-fading-circle>div:nth-child(7)::before{-webkit-animation-delay:-.6s;animation-delay:-.6s}.sk-fading-circle>div:nth-child(8)::before{-webkit-animation-delay:-.5s;animation-delay:-.5s}.sk-fading-circle>div:nth-child(9)::before{-webkit-animation-delay:-.4s;animation-delay:-.4s}.sk-fading-circle>div:nth-child(10)::before{-webkit-animation-delay:-.3s;animation-delay:-.3s}.sk-fading-circle>div:nth-child(11)::before{-webkit-animation-delay:-.2s;animation-delay:-.2s}.sk-fading-circle>div:nth-child(12)::before{-webkit-animation-delay:-.1s;animation-delay:-.1s}@-webkit-keyframes sk-fadingCircle-FadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}@keyframes sk-fadingCircle-FadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}.sk-folding-cube{margin:auto;width:100%;height:100%;position:relative;transform:rotateZ(45deg)}.sk-folding-cube>div{float:left;width:50%;height:50%;position:relative;transform:scale(1.1)}.sk-folding-cube>div::before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:currentColor;-webkit-animation:2.4s linear infinite both sk-foldingCube-angle;animation:2.4s linear infinite both sk-foldingCube-angle;transform-origin:100% 100%}.sk-folding-cube>div:nth-child(2){transform:scale(1.1) rotateZ(90deg)}.sk-folding-cube>div:nth-child(3){transform:scale(1.1) rotateZ(270deg)}.sk-folding-cube>div:nth-child(4){transform:scale(1.1) rotateZ(180deg)}.sk-folding-cube>div:nth-child(2)::before{-webkit-animation-delay:.3s;animation-delay:.3s}.sk-folding-cube>div:nth-child(3)::before{-webkit-animation-delay:.9s;animation-delay:.9s}.sk-folding-cube>div:nth-child(4)::before{-webkit-animation-delay:.6s;animation-delay:.6s}@-webkit-keyframes sk-foldingCube-angle{0%,10%{transform:perspective(140px) rotateX(-180deg);opacity:0}25%,75%{transform:perspective(140px) rotateX(0);opacity:1}100%,90%{transform:perspective(140px) rotateY(180deg);opacity:0}}@keyframes sk-foldingCube-angle{0%,10%{transform:perspective(140px) rotateX(-180deg);opacity:0}25%,75%{transform:perspective(140px) rotateX(0);opacity:1}100%,90%{transform:perspective(140px) rotateY(180deg);opacity:0}}.sk-pulse{width:100%;height:100%;margin:auto}.sk-pulse>div{width:100%;height:100%;background-color:currentColor;border-radius:100%;-webkit-animation:1s ease-in-out infinite sk-pulse-scaleOut;animation:1s ease-in-out infinite sk-pulse-scaleOut}@-webkit-keyframes sk-pulse-scaleOut{0%{transform:scale(0)}100%{transform:scale(1);opacity:0}}@keyframes sk-pulse-scaleOut{0%{transform:scale(0)}100%{transform:scale(1);opacity:0}}.sk-rectangle-bounce{margin:auto;width:100%;height:100%;text-align:center;font-size:0}.sk-rectangle-bounce>div{background-color:currentColor;height:100%;width:10%;margin:0 5%;display:inline-block;-webkit-animation:1.2s ease-in-out infinite sk-rectangleBounce-stretchDelay;animation:1.2s ease-in-out infinite sk-rectangleBounce-stretchDelay}.sk-rectangle-bounce>div:nth-child(2){-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-rectangle-bounce>div:nth-child(3){-webkit-animation-delay:-1s;animation-delay:-1s}.sk-rectangle-bounce>div:nth-child(4){-webkit-animation-delay:-.9s;animation-delay:-.9s}.sk-rectangle-bounce>div:nth-child(5){-webkit-animation-delay:-.8s;animation-delay:-.8s}@-webkit-keyframes sk-rectangleBounce-stretchDelay{0%,100%,40%{transform:scaleY(.4)}20%{transform:scaleY(1)}}@keyframes sk-rectangleBounce-stretchDelay{0%,100%,40%{transform:scaleY(.4)}20%{transform:scaleY(1)}}.sk-rectangle-bounce-party,.sk-rectangle-bounce-party>div{position:relative;box-sizing:border-box}.sk-rectangle-bounce-party{margin:auto;width:100%;height:100%;text-align:center;font-size:0}.sk-rectangle-bounce-party>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10%;height:100%;margin:0 5%;border-radius:0;-webkit-animation-name:rectangle-bounce-party;animation-name:rectangle-bounce-party;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.sk-rectangle-bounce-party>div:nth-child(1){-webkit-animation-duration:.43s;animation-duration:.43s;-webkit-animation-delay:-.23s;animation-delay:-.23s}.sk-rectangle-bounce-party>div:nth-child(2){-webkit-animation-duration:.62s;animation-duration:.62s;-webkit-animation-delay:-.32s;animation-delay:-.32s}.sk-rectangle-bounce-party>div:nth-child(3){-webkit-animation-duration:.43s;animation-duration:.43s;-webkit-animation-delay:-.44s;animation-delay:-.44s}.sk-rectangle-bounce-party>div:nth-child(4){-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-delay:-.31s;animation-delay:-.31s}.sk-rectangle-bounce-party>div:nth-child(5){-webkit-animation-duration:.74s;animation-duration:.74s;-webkit-animation-delay:-.24s;animation-delay:-.24s}@-webkit-keyframes rectangle-bounce-party{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.4)}}@keyframes rectangle-bounce-party{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.4)}}.sk-rectangle-bounce-pulse-out,.sk-rectangle-bounce-pulse-out>div{position:relative;box-sizing:border-box}.sk-rectangle-bounce-pulse-out{margin:auto;width:100%;height:100%;text-align:center;font-size:0}.sk-rectangle-bounce-pulse-out>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10%;height:100%;margin:0 5%;border-radius:0;-webkit-animation:.9s cubic-bezier(.85,.25,.37,.85) infinite rectangle-bounce-pulse-out;animation:.9s cubic-bezier(.85,.25,.37,.85) infinite rectangle-bounce-pulse-out}.sk-rectangle-bounce-pulse-out>div:nth-child(3){-webkit-animation-delay:-.9s;animation-delay:-.9s}.sk-rectangle-bounce-pulse-out>div:nth-child(2),.sk-rectangle-bounce-pulse-out>div:nth-child(4){-webkit-animation-delay:-.7s;animation-delay:-.7s}.sk-rectangle-bounce-pulse-out>div:nth-child(1),.sk-rectangle-bounce-pulse-out>div:nth-child(5){-webkit-animation-delay:-.5s;animation-delay:-.5s}@-webkit-keyframes rectangle-bounce-pulse-out{0%,100%{transform:scaley(1)}50%{transform:scaley(.4)}}@keyframes rectangle-bounce-pulse-out{0%,100%{transform:scaley(1)}50%{transform:scaley(.4)}}.sk-rectangle-bounce-pulse-out-rapid,.sk-rectangle-bounce-pulse-out-rapid>div{position:relative;box-sizing:border-box}.sk-rectangle-bounce-pulse-out-rapid{margin:auto;width:100%;height:100%;text-align:center;font-size:0}.sk-rectangle-bounce-pulse-out-rapid>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10%;height:100%;margin:0 5%;border-radius:0;-webkit-animation:.9s cubic-bezier(.11,.49,.38,.78) infinite rectangle-bounce-pulse-out-rapid;animation:.9s cubic-bezier(.11,.49,.38,.78) infinite rectangle-bounce-pulse-out-rapid}.sk-rectangle-bounce-pulse-out-rapid>div:nth-child(3){-webkit-animation-delay:-.9s;animation-delay:-.9s}.sk-rectangle-bounce-pulse-out-rapid>div:nth-child(2),.sk-rectangle-bounce-pulse-out-rapid>div:nth-child(4){-webkit-animation-delay:-.65s;animation-delay:-.65s}.sk-rectangle-bounce-pulse-out-rapid>div:nth-child(1),.sk-rectangle-bounce-pulse-out-rapid>div:nth-child(5){-webkit-animation-delay:-.4s;animation-delay:-.4s}@-webkit-keyframes rectangle-bounce-pulse-out-rapid{0%,90%{transform:scaley(1)}80%{transform:scaley(.4)}}@keyframes rectangle-bounce-pulse-out-rapid{0%,90%{transform:scaley(1)}80%{transform:scaley(.4)}}.sk-rotating-plane{width:100%;height:100%;text-align:center;margin:auto}.sk-rotating-plane>div{width:100%;height:100%;background-color:currentColor;-webkit-animation:1.2s ease-in-out infinite sk-rotatePlane;animation:1.2s ease-in-out infinite sk-rotatePlane}@-webkit-keyframes sk-rotatePlane{0%{transform:perspective(120px) rotateX(0) rotateY(0)}50%{transform:perspective(120px) rotateX(-180.1deg) rotateY(0)}100%{transform:perspective(120px) rotateX(-180deg) rotateY(-179.9deg)}}@keyframes sk-rotatePlane{0%{transform:perspective(120px) rotateX(0) rotateY(0)}50%{transform:perspective(120px) rotateX(-180.1deg) rotateY(0)}100%{transform:perspective(120px) rotateX(-180deg) rotateY(-179.9deg)}}.sk-square-jelly-box,.sk-square-jelly-box>div{position:relative;box-sizing:border-box}.sk-square-jelly-box{width:100%;height:100%;font-size:0}.sk-square-jelly-box>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.sk-square-jelly-box>div:nth-child(1),.sk-square-jelly-box>div:nth-child(2){position:absolute;left:0;width:100%}.sk-square-jelly-box>div:nth-child(1){top:-25%;z-index:99997;height:100%;border-radius:10%;-webkit-animation:.6s linear -.1s infinite square-jelly-box-animate;animation:.6s linear -.1s infinite square-jelly-box-animate}.sk-square-jelly-box>div:nth-child(2){bottom:-9%;height:10%;background:#000;border-radius:50%;opacity:.2;-webkit-animation:.6s linear -.1s infinite square-jelly-box-shadow;animation:.6s linear -.1s infinite square-jelly-box-shadow}@-webkit-keyframes square-jelly-box-animate{17%{border-bottom-right-radius:10%}25%{transform:translateY(25%) rotate(22.5deg)}50%{border-bottom-right-radius:100%;transform:translateY(50%) scale(1,.9) rotate(45deg)}75%{transform:translateY(25%) rotate(67.5deg)}100%{transform:translateY(0) rotate(90deg)}}@keyframes square-jelly-box-animate{17%{border-bottom-right-radius:10%}25%{transform:translateY(25%) rotate(22.5deg)}50%{border-bottom-right-radius:100%;transform:translateY(50%) scale(1,.9) rotate(45deg)}75%{transform:translateY(25%) rotate(67.5deg)}100%{transform:translateY(0) rotate(90deg)}}@-webkit-keyframes square-jelly-box-shadow{50%{transform:scale(1.25,1)}}@keyframes square-jelly-box-shadow{50%{transform:scale(1.25,1)}}.sk-square-loader,.sk-square-loader>div{position:relative;box-sizing:border-box}.sk-square-loader{font-size:0;width:100%;height:100%}.sk-square-loader>div{display:inline-block;float:none;border:3px solid currentColor;width:100%;height:100%;background:0 0;border-radius:0;-webkit-animation:2s infinite square-loader;animation:2s infinite square-loader}.sk-square-loader>div:after{display:inline-block;width:100%;vertical-align:top;content:\"\";background-color:currentColor;-webkit-animation:2s ease-in infinite square-loader-inner;animation:2s ease-in infinite square-loader-inner}@-webkit-keyframes square-loader{0%{transform:rotate(0)}25%,50%{transform:rotate(180deg)}100%,75%{transform:rotate(360deg)}}@keyframes square-loader{0%{transform:rotate(0)}25%,50%{transform:rotate(180deg)}100%,75%{transform:rotate(360deg)}}@-webkit-keyframes square-loader-inner{0%,100%,25%{height:0}50%,75%{height:100%}}@keyframes square-loader-inner{0%,100%,25%{height:0}50%,75%{height:100%}}.sk-three-bounce{margin:auto;width:100%;height:100%;text-align:center}.sk-three-bounce>div{margin-top:35%;width:30%;height:30%;background-color:currentColor;border-radius:100%;display:inline-block;-webkit-animation:1.4s ease-in-out infinite both sk-threeBounce-bounceDelay;animation:1.4s ease-in-out infinite both sk-threeBounce-bounceDelay}.bottom-center>.sk-three-bounce>div,.bottom-left>.sk-three-bounce>div,.bottom-right>.sk-three-bounce>div{margin-top:70%!important}.top-center>.sk-three-bounce>div,.top-left>.sk-three-bounce>div,.top-right>.sk-three-bounce>div{margin-top:0!important}.sk-three-bounce>div:nth-child(1){-webkit-animation-delay:-.32s;animation-delay:-.32s}.sk-three-bounce>div:nth-child(2){-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes sk-threeBounce-bounceDelay{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}@keyframes sk-threeBounce-bounceDelay{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.sk-three-strings{width:100%;height:100%}.sk-three-strings>div{position:absolute;box-sizing:border-box;width:100%;height:100%;border-radius:50%}.sk-three-strings>div:nth-child(1){left:0;top:0;-webkit-animation:1s linear infinite sk-threeStrings-rotateOne;animation:1s linear infinite sk-threeStrings-rotateOne;border-bottom:3px solid currentColor}.sk-three-strings>div:nth-child(2){right:0;top:0;-webkit-animation:1s linear infinite sk-threeStrings-rotateTwo;animation:1s linear infinite sk-threeStrings-rotateTwo;border-right:3px solid currentColor}.sk-three-strings>div:nth-child(3){right:0;bottom:0;-webkit-animation:1s linear infinite sk-threeStrings-rotateThree;animation:1s linear infinite sk-threeStrings-rotateThree;border-top:3px solid currentColor}@-webkit-keyframes sk-threeStrings-rotateOne{0%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(360deg)}}@keyframes sk-threeStrings-rotateOne{0%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(360deg)}}@-webkit-keyframes sk-threeStrings-rotateTwo{0%{transform:rotateX(50deg) rotateY(10deg) rotateZ(0)}100%{transform:rotateX(50deg) rotateY(10deg) rotateZ(360deg)}}@keyframes sk-threeStrings-rotateTwo{0%{transform:rotateX(50deg) rotateY(10deg) rotateZ(0)}100%{transform:rotateX(50deg) rotateY(10deg) rotateZ(360deg)}}@-webkit-keyframes sk-threeStrings-rotateThree{0%{transform:rotateX(35deg) rotateY(55deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(55deg) rotateZ(360deg)}}@keyframes sk-threeStrings-rotateThree{0%{transform:rotateX(35deg) rotateY(55deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(55deg) rotateZ(360deg)}}.sk-wandering-cubes{margin:auto;width:100%;height:100%;position:relative;text-align:center}.sk-wandering-cubes>div{background-color:currentColor;width:25%;height:25%;position:absolute;top:0;left:0;-webkit-animation:1.8s ease-in-out infinite sk-wanderingCubes-cubeMove;animation:1.8s ease-in-out infinite sk-wanderingCubes-cubeMove}.sk-wandering-cubes>div:nth-child(2){-webkit-animation-delay:-.9s;animation-delay:-.9s}@-webkit-keyframes sk-wanderingCubes-cubeMove{25%{transform:translateX(290%) rotate(-90deg) scale(.5)}50%{transform:translateX(290%) translateY(290%) rotate(-179deg)}50.1%{transform:translateX(290%) translateY(290%) rotate(-180deg)}75%{transform:translateX(0) translateY(290%) rotate(-270deg) scale(.5)}100%{transform:rotate(-360deg)}}@keyframes sk-wanderingCubes-cubeMove{25%{transform:translateX(290%) rotate(-90deg) scale(.5)}50%{transform:translateX(290%) translateY(290%) rotate(-179deg)}50.1%{transform:translateX(290%) translateY(290%) rotate(-180deg)}75%{transform:translateX(0) translateY(290%) rotate(-270deg) scale(.5)}100%{transform:rotate(-360deg)}}"]
      }),
      __metadata("design:paramtypes", [DomSanitizer, ChangeDetectorRef, NgxUiLoaderService])
  ], NgxUiLoaderComponent);
  export { NgxUiLoaderComponent };
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXVpLWxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdWktbG9hZGVyLyIsInNvdXJjZXMiOlsibGliL2NvcmUvbmd4LXVpLWxvYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsYUFBYSxFQUNiLFlBQVksRUFDWixTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXhDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFTcEQsSUFBYSxvQkFBb0IsR0FBakMsTUFBYSxvQkFBb0I7SUFrRC9COztPQUVHO0lBQ0gsWUFBb0IsWUFBMEIsRUFBVSxpQkFBb0MsRUFBVSxVQUE4QjtRQUFoSCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUNsSSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEs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UixLQUFLLEVBQUU7OzBEQUE0QjtBQXpCekIsb0JBQW9CO0lBTmhDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxlQUFlO1FBQ3pCLCtzRkFBNkM7UUFFN0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O0tBQ2hELENBQUM7cUNBc0RrQyxZQUFZLEVBQTZCLGlCQUFpQixFQUFzQixrQkFBa0I7R0FyRHpILG9CQUFvQixDQXlPaEM7U0F6T1ksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZSxcbiAgT25EZXN0cm95LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwsIFNhZmVTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTmd4VWlMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtdWktbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE5neFVpTG9hZGVyQ29uZmlnIH0gZnJvbSAnLi4vdXRpbHMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEaXJlY3Rpb25UeXBlLCBQb3NpdGlvblR5cGUsIFNwaW5uZXJUeXBlIH0gZnJvbSAnLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgUE9TSVRJT04gfSBmcm9tICcuLi91dGlscy9lbnVtcyc7XG5pbXBvcnQgeyBTUElOTkVSX0NPTkZJRyB9IGZyb20gJy4uL3V0aWxzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTaG93RXZlbnQgfSBmcm9tICcuLi91dGlscy9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXVpLWxvYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtdWktbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LXVpLWxvYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hVaUxvYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKSBiZ3NDb2xvcjogc3RyaW5nO1xuICBASW5wdXQoKSBiZ3NPcGFjaXR5OiBudW1iZXI7XG4gIEBJbnB1dCgpIGJnc1Bvc2l0aW9uOiBQb3NpdGlvblR5cGU7XG4gIEBJbnB1dCgpIGJnc1NpemU6IG51bWJlcjtcbiAgQElucHV0KCkgYmdzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGJnc1R5cGU6IFNwaW5uZXJUeXBlO1xuICBASW5wdXQoKSBmZ3NDb2xvcjogc3RyaW5nO1xuICBASW5wdXQoKSBmZ3NQb3NpdGlvbjogUG9zaXRpb25UeXBlO1xuICBASW5wdXQoKSBmZ3NTaXplOiBudW1iZXI7XG4gIEBJbnB1dCgpIGZnc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBmZ3NUeXBlOiBTcGlubmVyVHlwZTtcbiAgQElucHV0KCkgZ2FwOiBudW1iZXI7XG4gIEBJbnB1dCgpIGxvYWRlcklkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxvZ29Qb3NpdGlvbjogUG9zaXRpb25UeXBlO1xuICBASW5wdXQoKSBsb2dvU2l6ZTogbnVtYmVyO1xuICBASW5wdXQoKSBsb2dvVXJsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG92ZXJsYXlCb3JkZXJSYWRpdXM6IHN0cmluZztcbiAgQElucHV0KCkgb3ZlcmxheUNvbG9yOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBiQ29sb3I6IHN0cmluZztcbiAgQElucHV0KCkgcGJEaXJlY3Rpb246IERpcmVjdGlvblR5cGU7XG4gIEBJbnB1dCgpIHBiVGhpY2tuZXNzOiBudW1iZXI7XG4gIEBJbnB1dCgpIGhhc1Byb2dyZXNzQmFyOiBib29sZWFuO1xuICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRDb2xvcjogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0UG9zaXRpb246IFBvc2l0aW9uVHlwZTtcblxuICBmYXN0RmFkZU91dDogYm9vbGVhbjtcbiAgZmdEaXZzOiBudW1iZXJbXTtcbiAgZmdTcGlubmVyQ2xhc3M6IHN0cmluZztcbiAgYmdEaXZzOiBudW1iZXJbXTtcbiAgYmdTcGlubmVyQ2xhc3M6IHN0cmluZztcbiAgc2hvd0ZvcmVncm91bmQ6IGJvb2xlYW47XG4gIHNob3dCYWNrZ3JvdW5kOiBib29sZWFuO1xuICBmb3JlZ3JvdW5kQ2xvc2luZzogYm9vbGVhbjtcbiAgYmFja2dyb3VuZENsb3Npbmc6IGJvb2xlYW47XG5cbiAgdHJ1c3RlZExvZ29Vcmw6IFNhZmVSZXNvdXJjZVVybDtcbiAgbG9nb1RvcDogU2FmZVN0eWxlO1xuICBzcGlubmVyVG9wOiBTYWZlU3R5bGU7XG4gIHRleHRUb3A6IFNhZmVTdHlsZTtcblxuICBzaG93Rm9yZWdyb3VuZFdhdGNoZXI6IFN1YnNjcmlwdGlvbjtcbiAgc2hvd0JhY2tncm91bmRXYXRjaGVyOiBTdWJzY3JpcHRpb247XG4gIGZvcmVncm91bmRDbG9zaW5nV2F0Y2hlcjogU3Vic2NyaXB0aW9uO1xuICBiYWNrZ3JvdW5kQ2xvc2luZ1dhdGNoZXI6IFN1YnNjcmlwdGlvbjtcblxuICBkZWZhdWx0Q29uZmlnOiBOZ3hVaUxvYWRlckNvbmZpZztcbiAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBuZ3hTZXJ2aWNlOiBOZ3hVaUxvYWRlclNlcnZpY2UpIHtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gdGhpcy5uZ3hTZXJ2aWNlLmdldERlZmF1bHRDb25maWcoKTtcblxuICAgIHRoaXMuYmdzQ29sb3IgPSB0aGlzLmRlZmF1bHRDb25maWcuYmdzQ29sb3I7XG4gICAgdGhpcy5iZ3NPcGFjaXR5ID0gdGhpcy5kZWZhdWx0Q29uZmlnLmJnc09wYWNpdHk7XG4gICAgdGhpcy5iZ3NQb3NpdGlvbiA9IHRoaXMuZGVmYXVsdENvbmZpZy5iZ3NQb3NpdGlvbjtcbiAgICB0aGlzLmJnc1NpemUgPSB0aGlzLmRlZmF1bHRDb25maWcuYmdzU2l6ZTtcbiAgICB0aGlzLmJnc1R5cGUgPSB0aGlzLmRlZmF1bHRDb25maWcuYmdzVHlwZTtcbiAgICB0aGlzLmZhc3RGYWRlT3V0ID0gdGhpcy5kZWZhdWx0Q29uZmlnLmZhc3RGYWRlT3V0O1xuICAgIHRoaXMuZmdzQ29sb3IgPSB0aGlzLmRlZmF1bHRDb25maWcuZmdzQ29sb3I7XG4gICAgdGhpcy5mZ3NQb3NpdGlvbiA9IHRoaXMuZGVmYXVsdENvbmZpZy5mZ3NQb3NpdGlvbjtcbiAgICB0aGlzLmZnc1NpemUgPSB0aGlzLmRlZmF1bHRDb25maWcuZmdzU2l6ZTtcbiAgICB0aGlzLmZnc1R5cGUgPSB0aGlzLmRlZmF1bHRDb25maWcuZmdzVHlwZTtcbiAgICB0aGlzLmdhcCA9IHRoaXMuZGVmYXVsdENvbmZpZy5nYXA7XG4gICAgdGhpcy5sb2FkZXJJZCA9IHRoaXMuZGVmYXVsdENvbmZpZy5tYXN0ZXJMb2FkZXJJZDtcbiAgICB0aGlzLmxvZ29Qb3NpdGlvbiA9IHRoaXMuZGVmYXVsdENvbmZpZy5sb2dvUG9zaXRpb247XG4gICAgdGhpcy5sb2dvU2l6ZSA9IHRoaXMuZGVmYXVsdENvbmZpZy5sb2dvU2l6ZTtcbiAgICB0aGlzLmxvZ29VcmwgPSB0aGlzLmRlZmF1bHRDb25maWcubG9nb1VybDtcbiAgICB0aGlzLm92ZXJsYXlCb3JkZXJSYWRpdXMgPSB0aGlzLmRlZmF1bHRDb25maWcub3ZlcmxheUJvcmRlclJhZGl1cztcbiAgICB0aGlzLm92ZXJsYXlDb2xvciA9IHRoaXMuZGVmYXVsdENvbmZpZy5vdmVybGF5Q29sb3I7XG4gICAgdGhpcy5wYkNvbG9yID0gdGhpcy5kZWZhdWx0Q29uZmlnLnBiQ29sb3I7XG4gICAgdGhpcy5wYkRpcmVjdGlvbiA9IHRoaXMuZGVmYXVsdENvbmZpZy5wYkRpcmVjdGlvbjtcbiAgICB0aGlzLnBiVGhpY2tuZXNzID0gdGhpcy5kZWZhdWx0Q29uZmlnLnBiVGhpY2tuZXNzO1xuICAgIHRoaXMuaGFzUHJvZ3Jlc3NCYXIgPSB0aGlzLmRlZmF1bHRDb25maWcuaGFzUHJvZ3Jlc3NCYXI7XG4gICAgdGhpcy50ZXh0ID0gdGhpcy5kZWZhdWx0Q29uZmlnLnRleHQ7XG4gICAgdGhpcy50ZXh0Q29sb3IgPSB0aGlzLmRlZmF1bHRDb25maWcudGV4dENvbG9yO1xuICAgIHRoaXMudGV4dFBvc2l0aW9uID0gdGhpcy5kZWZhdWx0Q29uZmlnLnRleHRQb3NpdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBpbml0IGV2ZW50XG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVTcGlubmVycygpO1xuICAgIHRoaXMubmd4U2VydmljZS5iaW5kTG9hZGVyRGF0YSh0aGlzLmxvYWRlcklkKTtcbiAgICB0aGlzLmRldGVybWluZVBvc2l0aW9ucygpO1xuXG4gICAgdGhpcy50cnVzdGVkTG9nb1VybCA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmxvZ29VcmwpO1xuXG4gICAgdGhpcy5zaG93Rm9yZWdyb3VuZFdhdGNoZXIgPSB0aGlzLm5neFNlcnZpY2Uuc2hvd0ZvcmVncm91bmQkXG4gICAgICAucGlwZShmaWx0ZXIoKHNob3dFdmVudDogU2hvd0V2ZW50KSA9PiB0aGlzLmxvYWRlcklkID09PSBzaG93RXZlbnQubG9hZGVySWQpKVxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5zaG93Rm9yZWdyb3VuZCA9IGRhdGEuaXNTaG93O1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnNob3dCYWNrZ3JvdW5kV2F0Y2hlciA9IHRoaXMubmd4U2VydmljZS5zaG93QmFja2dyb3VuZCRcbiAgICAgIC5waXBlKGZpbHRlcigoc2hvd0V2ZW50OiBTaG93RXZlbnQpID0+IHRoaXMubG9hZGVySWQgPT09IHNob3dFdmVudC5sb2FkZXJJZCkpXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLnNob3dCYWNrZ3JvdW5kID0gZGF0YS5pc1Nob3c7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZm9yZWdyb3VuZENsb3NpbmdXYXRjaGVyID0gdGhpcy5uZ3hTZXJ2aWNlLmZvcmVncm91bmRDbG9zaW5nJFxuICAgICAgLnBpcGUoZmlsdGVyKChzaG93RXZlbnQ6IFNob3dFdmVudCkgPT4gdGhpcy5sb2FkZXJJZCA9PT0gc2hvd0V2ZW50LmxvYWRlcklkKSlcbiAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMuZm9yZWdyb3VuZENsb3NpbmcgPSBkYXRhLmlzU2hvdztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5iYWNrZ3JvdW5kQ2xvc2luZ1dhdGNoZXIgPSB0aGlzLm5neFNlcnZpY2UuYmFja2dyb3VuZENsb3NpbmckXG4gICAgICAucGlwZShmaWx0ZXIoKHNob3dFdmVudDogU2hvd0V2ZW50KSA9PiB0aGlzLmxvYWRlcklkID09PSBzaG93RXZlbnQubG9hZGVySWQpKVxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kQ2xvc2luZyA9IGRhdGEuaXNTaG93O1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogT24gY2hhbmdlcyBldmVudFxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJnc1R5cGVDaGFuZ2U6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMuYmdzVHlwZTtcbiAgICBjb25zdCBmZ3NUeXBlQ2hhbmdlOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLmZnc1R5cGU7XG4gICAgY29uc3QgbG9nb1VybENoYW5nZTogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5sb2dvVXJsO1xuXG4gICAgaWYgKGZnc1R5cGVDaGFuZ2UgfHwgYmdzVHlwZUNoYW5nZSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplU3Bpbm5lcnMoKTtcbiAgICB9XG5cbiAgICB0aGlzLmRldGVybWluZVBvc2l0aW9ucygpO1xuXG4gICAgaWYgKGxvZ29VcmxDaGFuZ2UpIHtcbiAgICAgIHRoaXMudHJ1c3RlZExvZ29VcmwgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5sb2dvVXJsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBzcGlubmVyc1xuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplU3Bpbm5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5mZ0RpdnMgPSBBcnJheShTUElOTkVSX0NPTkZJR1t0aGlzLmZnc1R5cGVdLmRpdnMpLmZpbGwoMSk7XG4gICAgdGhpcy5mZ1NwaW5uZXJDbGFzcyA9IFNQSU5ORVJfQ09ORklHW3RoaXMuZmdzVHlwZV0uY2xhc3M7XG4gICAgdGhpcy5iZ0RpdnMgPSBBcnJheShTUElOTkVSX0NPTkZJR1t0aGlzLmJnc1R5cGVdLmRpdnMpLmZpbGwoMSk7XG4gICAgdGhpcy5iZ1NwaW5uZXJDbGFzcyA9IFNQSU5ORVJfQ09ORklHW3RoaXMuYmdzVHlwZV0uY2xhc3M7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBwb3NpdGlvbnMgb2Ygc3Bpbm5lciwgbG9nbyBhbmQgdGV4dFxuICAgKi9cbiAgcHJpdmF0ZSBkZXRlcm1pbmVQb3NpdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5sb2dvVG9wID0gJ2luaXRpYWwnO1xuICAgIHRoaXMuc3Bpbm5lclRvcCA9ICdpbml0aWFsJztcbiAgICB0aGlzLnRleHRUb3AgPSAnaW5pdGlhbCc7XG4gICAgY29uc3QgdGV4dFNpemUgPSAyNDtcblxuICAgIGlmICh0aGlzLmxvZ29Qb3NpdGlvbi5zdGFydHNXaXRoKCdjZW50ZXInKSkge1xuICAgICAgdGhpcy5sb2dvVG9wID0gJzUwJSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxvZ29Qb3NpdGlvbi5zdGFydHNXaXRoKCd0b3AnKSkge1xuICAgICAgdGhpcy5sb2dvVG9wID0gJzMwcHgnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZnc1Bvc2l0aW9uLnN0YXJ0c1dpdGgoJ2NlbnRlcicpKSB7XG4gICAgICB0aGlzLnNwaW5uZXJUb3AgPSAnNTAlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmdzUG9zaXRpb24uc3RhcnRzV2l0aCgndG9wJykpIHtcbiAgICAgIHRoaXMuc3Bpbm5lclRvcCA9ICczMHB4JztcbiAgICB9XG5cbiAgICBpZiAodGhpcy50ZXh0UG9zaXRpb24uc3RhcnRzV2l0aCgnY2VudGVyJykpIHtcbiAgICAgIHRoaXMudGV4dFRvcCA9ICc1MCUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy50ZXh0UG9zaXRpb24uc3RhcnRzV2l0aCgndG9wJykpIHtcbiAgICAgIHRoaXMudGV4dFRvcCA9ICczMHB4JztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mZ3NQb3NpdGlvbiA9PT0gUE9TSVRJT04uY2VudGVyQ2VudGVyKSB7XG4gICAgICBpZiAodGhpcy5sb2dvVXJsICYmIHRoaXMubG9nb1Bvc2l0aW9uID09PSBQT1NJVElPTi5jZW50ZXJDZW50ZXIpIHtcbiAgICAgICAgaWYgKHRoaXMudGV4dCAmJiB0aGlzLnRleHRQb3NpdGlvbiA9PT0gUE9TSVRJT04uY2VudGVyQ2VudGVyKSB7XG4gICAgICAgICAgLy8gbG9nbywgc3Bpbm5lciBhbmQgdGV4dFxuICAgICAgICAgIHRoaXMubG9nb1RvcCA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShcbiAgICAgICAgICAgIGBjYWxjKDUwJSAtICR7dGhpcy5mZ3NTaXplIC8gMn1weCAtICR7dGV4dFNpemUgLyAyfXB4IC0gJHt0aGlzLmdhcH1weClgXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNwaW5uZXJUb3AgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoYGNhbGMoNTAlICsgJHt0aGlzLmxvZ29TaXplIC8gMn1weCAtICR7dGV4dFNpemUgLyAyfXB4KWApO1xuICAgICAgICAgIHRoaXMudGV4dFRvcCA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShcbiAgICAgICAgICAgIGBjYWxjKDUwJSArICR7dGhpcy5sb2dvU2l6ZSAvIDJ9cHggKyAke3RoaXMuZ2FwfXB4ICsgJHt0aGlzLmZnc1NpemUgLyAyfXB4KWBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGxvZ28gYW5kIHNwaW5uZXJcbiAgICAgICAgICB0aGlzLmxvZ29Ub3AgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoYGNhbGMoNTAlIC0gJHt0aGlzLmZnc1NpemUgLyAyfXB4IC0gJHt0aGlzLmdhcCAvIDJ9cHgpYCk7XG4gICAgICAgICAgdGhpcy5zcGlubmVyVG9wID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKGBjYWxjKDUwJSArICR7dGhpcy5sb2dvU2l6ZSAvIDJ9cHggKyAke3RoaXMuZ2FwIC8gMn1weClgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMudGV4dCAmJiB0aGlzLnRleHRQb3NpdGlvbiA9PT0gUE9TSVRJT04uY2VudGVyQ2VudGVyKSB7XG4gICAgICAgICAgLy8gc3Bpbm5lciBhbmQgdGV4dFxuICAgICAgICAgIHRoaXMuc3Bpbm5lclRvcCA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShgY2FsYyg1MCUgLSAke3RleHRTaXplIC8gMn1weCAtICR7dGhpcy5nYXAgLyAyfXB4KWApO1xuICAgICAgICAgIHRoaXMudGV4dFRvcCA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShgY2FsYyg1MCUgKyAke3RoaXMuZmdzU2l6ZSAvIDJ9cHggKyAke3RoaXMuZ2FwIC8gMn1weClgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5sb2dvVXJsICYmIHRoaXMubG9nb1Bvc2l0aW9uID09PSBQT1NJVElPTi5jZW50ZXJDZW50ZXIgJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dFBvc2l0aW9uID09PSBQT1NJVElPTi5jZW50ZXJDZW50ZXIpIHtcbiAgICAgICAgLy8gbG9nbyBhbmQgdGV4dFxuICAgICAgICB0aGlzLmxvZ29Ub3AgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoYGNhbGMoNTAlIC0gJHt0ZXh0U2l6ZSAvIDJ9cHggLSAke3RoaXMuZ2FwIC8gMn1weClgKTtcbiAgICAgICAgdGhpcy50ZXh0VG9wID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKGBjYWxjKDUwJSArICR7dGhpcy5sb2dvU2l6ZSAvIDJ9cHggKyAke3RoaXMuZ2FwIC8gMn1weClgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT24gZGVzdHJveSBldmVudFxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5uZ3hTZXJ2aWNlLmRlc3Ryb3lMb2FkZXJEYXRhKHRoaXMubG9hZGVySWQpO1xuICAgIGlmICh0aGlzLnNob3dGb3JlZ3JvdW5kV2F0Y2hlcikge1xuICAgICAgdGhpcy5zaG93Rm9yZWdyb3VuZFdhdGNoZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd0JhY2tncm91bmRXYXRjaGVyKSB7XG4gICAgICB0aGlzLnNob3dCYWNrZ3JvdW5kV2F0Y2hlci51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5mb3JlZ3JvdW5kQ2xvc2luZ1dhdGNoZXIpIHtcbiAgICAgIHRoaXMuZm9yZWdyb3VuZENsb3NpbmdXYXRjaGVyLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmJhY2tncm91bmRDbG9zaW5nV2F0Y2hlcikge1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ2xvc2luZ1dhdGNoZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==