@sapphire-ion/framework 1.0.12 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/esm2022/lib/classes/environment.mjs +4 -2
  2. package/esm2022/lib/classes/inputs/table-field.mjs +11 -1
  3. package/esm2022/lib/components/default/default-view/default-view.component.mjs +17 -11
  4. package/esm2022/lib/components/drawer/default-drawer-end/default-drawer-end.component.mjs +3 -3
  5. package/esm2022/lib/components/drawer/drawer-group/drawer-group.component.mjs +11 -8
  6. package/esm2022/lib/components/drawer/drawer.component.mjs +13 -13
  7. package/esm2022/lib/components/inputs/input-configuration.mjs +1 -1
  8. package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +1 -1
  9. package/esm2022/lib/components/inputs/input-icon/fluenticons.mjs +3734 -0
  10. package/esm2022/lib/components/inputs/input-icon/input-icon.component.mjs +54 -0
  11. package/esm2022/lib/components/inputs/input-icon/ionicons.mjs +1360 -0
  12. package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +3 -3
  13. package/esm2022/lib/components/inputs/input-type.mjs +12 -6
  14. package/esm2022/lib/components/inputs/inputs.module.mjs +6 -2
  15. package/esm2022/lib/components/login/login.component.mjs +10 -4
  16. package/esm2022/lib/components/main-content/main-content.component.mjs +3 -3
  17. package/esm2022/lib/guards/error.interceptor.mjs +2 -1
  18. package/esm2022/lib/index.mjs +3 -1
  19. package/fesm2022/sapphire-ion-framework.mjs +5535 -368
  20. package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
  21. package/lib/classes/environment.d.ts +2 -1
  22. package/lib/components/default/default-view/default-view.component.d.ts +2 -0
  23. package/lib/components/drawer/drawer-group/drawer-group.component.d.ts +1 -1
  24. package/lib/components/drawer/drawer.component.d.ts +1 -3
  25. package/lib/components/inputs/input-configuration.d.ts +2 -1
  26. package/lib/components/inputs/input-icon/fluenticons.d.ts +1 -0
  27. package/lib/components/inputs/input-icon/input-icon.component.d.ts +20 -0
  28. package/lib/components/inputs/input-icon/ionicons.d.ts +1 -0
  29. package/lib/components/inputs/input-type.d.ts +12 -6
  30. package/lib/components/inputs/inputs.module.d.ts +18 -17
  31. package/lib/components/login/login.component.d.ts +1 -0
  32. package/lib/index.d.ts +1 -0
  33. package/package.json +1 -1
  34. package/themes/compiled-styles.scss +18 -0
  35. package/themes/components/drawer/drawer-group/drawer-group.component.scss +19 -16
  36. package/themes/components/drawer/drawer.component.scss +63 -40
  37. package/themes/components/inputs/input-icon/input-icon.component.scss +0 -0
  38. package/themes/styles/core.styles.scss +61 -4
@@ -4,15 +4,14 @@ import { CommonModule } from '@angular/common';
4
4
  import { IonicModule } from '@ionic/angular';
5
5
  import { DrawerGroupComponent } from './drawer-group/drawer-group.component';
6
6
  import { LoadingComponent } from '../../components/loading/loading.component';
7
- import { GenericService } from '../../services/generics.service';
7
+ import { SIonPopoverModule } from '../popover/sion-popover.module';
8
8
  import * as i0 from "@angular/core";
9
- import * as i1 from "../../services/generics.service";
10
- import * as i2 from "@angular/common";
11
- import * as i3 from "@ionic/angular";
12
- import * as i4 from "@ngx-translate/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "@ionic/angular";
11
+ import * as i3 from "@ngx-translate/core";
12
+ import * as i4 from "../popover/sion-popover/sion-popover.component";
13
13
  export class DrawerComponent {
14
- constructor(genericService) {
15
- this.genericService = genericService;
14
+ constructor() {
16
15
  this.TranslationModule = {
17
16
  Permissao: 'Entities.Permissao.',
18
17
  PermissaoGrupo: 'Entities.PermissaoGrupo.'
@@ -54,8 +53,8 @@ export class DrawerComponent {
54
53
  this.colapsedChange.emit(true);
55
54
  }
56
55
  }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DrawerComponent, deps: [{ token: i1.GenericService }], target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DrawerComponent, isStandalone: true, selector: "drawer", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: null }, lstMenu: { classPropertyName: "lstMenu", publicName: "lstMenu", isSignal: true, isRequired: false, transformFunction: null }, colapsed: { classPropertyName: "colapsed", publicName: "colapsed", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, useTranslation: { classPropertyName: "useTranslation", publicName: "useTranslation", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { colapsedChange: "colapsedChange" }, ngImport: i0, template: "<div class=\"absolute left-0 top-0 h-full w-[19rem] flex flex-col bg-light\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"w-full px-2 h-14 pt-2 flex justify-between items-center text-3xl text-center\">\r\n <ion-button id=\"drawer-button\" class=\"shrink-0 portrait:hidden aspect-square h-12 z-10 default-transition m-0\" size=\"small\" fill=\"outline\" color=\"dark\" style=\"--border-radius: 999rem; --border-width: 0;\" (click)=\"ToggleCollapsed()\"> \r\n <ion-icon name=\"menu\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n <div class=\"size-full\">\r\n @if (!ref.children.length) {\r\n <ion-text class=\"size-full flex items-center justify-center default-transition z-0\" [ngClass]=\"{'opacity-0 -translate-x-1/2': colapsed }\"> \r\n {{title}}\r\n </ion-text>\r\n }\r\n <div #ref class=\"size-full flex items-center justify-center\">\r\n <ng-content select=\"[slot=logo]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id=\"menu-conteiner\" class=\"mask-y flex flex-col relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\" text=\"\"></loading>\r\n <div class=\"size-full shrink flex\">\r\n <div class=\"h-full w-16 p-2 shrink-0\">\r\n <div class=\"grid gap-2\">\r\n @for (item of lstMenu(); track $index) {\r\n <ion-item \r\n id=\"group-menu\" [title]=\"item.title\" class=\"bg-inactive relative overflow-visible\" lines=\"none\" style=\"--padding-start: 0;\"\r\n (click)=\"CurrentGroupActive = item\" \r\n [ngClass]=\"{'bg-active': CurrentGroupActive == item}\"\r\n >\r\n <div id=\"tooltip\" class=\"opacity-0 !pointer-events-none -translate-x-4 absolute top-0 bottom-0 default-transition left-14 px-2 my-auto text-nowrap h-8 bg-[var(--ion-color-secondary)] -z-30 rounded-xl flex items-center justify-center\">\r\n <div class=\"absolute -left-1 top-0 rounded bottom-0 my-auto rotate-45 h-4 aspect-square bg-[var(--ion-color-secondary)]\"></div>\r\n <ion-icon class=\"z-50 mr-2\" [name]=\"item.icon\"></ion-icon>\r\n <ion-text class=\"z-50\"> \r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n </ion-text>\r\n </div>\r\n <div class=\"absolute top-0 size-full flex items-center justify-center overflow-visible\">\r\n <ion-icon class=\"text-2xl\" [name]=\"item.icon\"></ion-icon>\r\n </div>\r\n </ion-item>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"h-full w-full border-dashed border-l relative\" style=\"border-color: color-mix(in srgb, var(--ion-color-dark) 20%, transparent 80%);\">\r\n @for (mGroup of lstMenu(); track $index) {\r\n <div class=\"absolute top-0 left-0 px-2 py-2 size-full default-transition opacity-0 translate-x-full z-0 mask-y overflow-y-auto\" [ngClass]=\"{'opacity-100 !translate-x-0': CurrentGroupActive == mGroup}\">\r\n <drawer-group [MenuGroup]=\"mGroup\" [useTranslation]=\"useTranslation\" [colapsed]=\"colapsed\"></drawer-group>\r\n </div>\r\n }\r\n </div>\r\n </div> \r\n\r\n <div class=\"shrink-0 w-full\">\r\n <ng-content select=\"[slot=drawer]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["#drawer-button{border-radius:9999px}#drawer-button:hover{background-color:color-mix(in srgb,var(--ion-color-dark-tint) 50%,transparent 50%)}#drawer-button:hover ion-icon{color:var(--ion-color-light)}#menu-conteiner{width:100%;height:100%;overflow-y:auto;overflow-x:hidden}#group-menu{--min-height: 3rem;--min-width: 3rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}#group-menu:hover #tooltip{width:fit-content!important;--tw-translate-x: 0px !important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important;opacity:1!important}.bg-active{--background: color-mix(in srgb, var(--ion-color-secondary) 70%, transparent 30%) !important}.bg-inactive{cursor:pointer;--border-radius: 1rem;--background: color-mix(in srgb, var(--ion-color-light-shade) 50%, transparent 50%) }.bg-inactive::part(native){transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.bg-inactive:hover{--background: color-mix(in srgb, var(--ion-color-light-shade) 70%, transparent 30%) }@media (prefers-color-scheme: dark){.bg-inactive{--background: color-mix(in srgb, var(--ion-color-light-tint) 70%, transparent 30%)}.bg-inactive:hover{--background: var(--ion-color-light-tint)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: LoadingComponent, selector: "loading", inputs: ["text", "type", "loading"] }, { kind: "component", type: DrawerGroupComponent, selector: "drawer-group", inputs: ["MenuGroup", "colapsed", "useTranslation"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DrawerComponent, isStandalone: true, selector: "drawer", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: null }, lstMenu: { classPropertyName: "lstMenu", publicName: "lstMenu", isSignal: true, isRequired: false, transformFunction: null }, colapsed: { classPropertyName: "colapsed", publicName: "colapsed", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, useTranslation: { classPropertyName: "useTranslation", publicName: "useTranslation", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { colapsedChange: "colapsedChange" }, ngImport: i0, template: "<!-- <div class=\"absolute left-0 top-0 h-full w-[19rem] flex flex-col bg-light\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"w-full px-2 h-14 pt-2 flex justify-between items-center text-3xl text-center\">\r\n <ion-button id=\"drawer-button\" class=\"shrink-0 portrait:hidden aspect-square h-12 z-10 default-transition m-0\" size=\"small\" fill=\"outline\" color=\"dark\" style=\"--border-radius: 999rem; --border-width: 0;\" (click)=\"ToggleCollapsed()\"> \r\n <ion-icon name=\"menu\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n <div class=\"size-full\">\r\n @if (!ref.children.length) {\r\n <ion-text class=\"size-full flex items-center justify-center default-transition z-0\" [ngClass]=\"{'opacity-0 -translate-x-1/2': colapsed }\"> \r\n {{title}}\r\n </ion-text>\r\n }\r\n <div #ref class=\"size-full flex items-center justify-center\">\r\n <ng-content select=\"[slot=logo]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id=\"menu-conteiner\" class=\"mask-y flex flex-col relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\" text=\"\"></loading>\r\n <div class=\"size-full shrink flex\">\r\n <div class=\"h-full w-16 p-2 shrink-0\">\r\n <div class=\"grid gap-2\">\r\n @for (item of lstMenu(); track $index) {\r\n <ion-item \r\n id=\"group-menu\" [title]=\"item.title\" class=\"bg-inactive relative overflow-visible\" lines=\"none\" style=\"--padding-start: 0;\"\r\n (click)=\"CurrentGroupActive = item\" \r\n [ngClass]=\"{'bg-active': CurrentGroupActive == item}\"\r\n >\r\n <div id=\"tooltip\" class=\"opacity-0 !pointer-events-none -translate-x-4 absolute top-0 bottom-0 default-transition left-14 px-2 my-auto text-nowrap h-8 bg-[var(--ion-color-secondary)] -z-30 rounded-xl flex items-center justify-center\">\r\n <div class=\"absolute -left-1 top-0 rounded bottom-0 my-auto rotate-45 h-4 aspect-square bg-[var(--ion-color-secondary)]\"></div>\r\n <ion-icon class=\"z-50 mr-2\" [name]=\"item.icon\"></ion-icon>\r\n <ion-text class=\"z-50\"> \r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n </ion-text>\r\n </div>\r\n <div class=\"absolute top-0 size-full flex items-center justify-center overflow-visible\">\r\n <ion-icon class=\"text-2xl\" [name]=\"item.icon\"></ion-icon>\r\n </div>\r\n </ion-item>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"h-full w-full border-dashed border-l relative\" style=\"border-color: color-mix(in srgb, var(--ion-color-dark) 20%, transparent 80%);\">\r\n @for (mGroup of lstMenu(); track $index) {\r\n <div class=\"absolute top-0 left-0 px-2 py-2 size-full default-transition opacity-0 translate-x-full z-0 mask-y overflow-y-auto\" [ngClass]=\"{'opacity-100 !translate-x-0': CurrentGroupActive == mGroup}\">\r\n <drawer-group [MenuGroup]=\"mGroup\" [useTranslation]=\"useTranslation\" [colapsed]=\"colapsed\"></drawer-group>\r\n </div>\r\n }\r\n </div>\r\n </div> \r\n\r\n <div class=\"shrink-0 w-full\">\r\n <ng-content select=\"[slot=drawer]\"></ng-content>\r\n </div>\r\n </div>\r\n</div> -->\r\n<div class=\"absolute left-0 top-0 h-full bg-light size-full flex flex-col p-2 !pr-0 w-[19rem] overflow-hidden\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <!-- [ Header ] -->\r\n <div class=\"shrink-0 w-full flex justify-between items-center\">\r\n <div #anchor\r\n (click)=\"ToggleCollapsed()\" \r\n class=\"toggle size-10 aspect-square shrink-0 rounded-xl bg-inactive gradient-background menu\"\r\n >\r\n <ion-icon name=\"menu\" slot=\"icon-only\"></ion-icon>\r\n </div>\r\n <!-- <ion-button class=\"size-10 shrink-0 aspect-square\" size=\"small\" color=\"medium\" (click)=\"ToggleCollapsed()\">\r\n <ion-icon name=\"menu\" slot=\"icon-only\"></ion-icon>\r\n </ion-button> -->\r\n\r\n <div class=\"size-full shrink\">\r\n @if (!ref.children.length) {\r\n <ion-text class=\"size-full flex items-center justify-center default-transition z-0\" [ngClass]=\"{'opacity-0 -translate-x-1/2 pointer-events-none': colapsed }\"> \r\n {{title}}\r\n </ion-text>\r\n }\r\n <div #ref class=\"size-full flex items-center justify-center\">\r\n <ng-content select=\"[slot=logo]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- [ Content ] -->\r\n <div class=\"size-full shrink flex flex-col relative overflow-hidden\">\r\n <loading [type]=\"3\" [loading]=\"loading\" text=\"\"></loading>\r\n <div class=\"size-full shrink flex gap-2\">\r\n <div class=\"h-full supports-[selector(::-webkit-scrollbar-thumb)]:!w-[3.375rem] w-12 pr-2 py-2 mask-y shrink-0 flex flex-col gap-2 overflow-y-auto border-dashed border-r border-r-medium/30\">\r\n @for (item of lstMenu(); track $index) {\r\n <div>\r\n <div\r\n [class.bg-active]=\"CurrentGroupActive == item\"\r\n #anchor (mouseenter)=\"popover.present($event)\" \r\n (mouseleave)=\"popover.dismiss()\" \r\n (click)=\"CurrentGroupActive = item\" \r\n class=\"w-full aspect-square shrink-0 rounded-xl bg-inactive gradient-background menu\"\r\n >\r\n <ion-icon [name]=\"item.icon\"></ion-icon>\r\n </div>\r\n <sion-popover #popover [anchor]=\"anchor\" [flip]=\"false\" placement=\"right\" fill=\"solid\">\r\n <div class=\"p-1\">\r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n </div>\r\n </sion-popover>\r\n </div>\r\n <!-- <ion-button class=\"w-full aspect-square shrink-0\" size=\"small\" color=\"secondary\" (click)=\"CurrentGroupActive = item\"> \r\n <ion-icon [name]=\"item.icon\" slot=\"icon-only\"></ion-icon>\r\n </ion-button> -->\r\n }\r\n\r\n </div>\r\n <div class=\"size-full shrink relative\">\r\n @for (mGroup of lstMenu(); track $index) {\r\n <div class=\"absolute top-0 left-0 size-full py-2 default-transition opacity-0 translate-x-full z-0 overflow-hidden\" [ngClass]=\"{'opacity-100 !translate-x-0': CurrentGroupActive == mGroup}\">\r\n <drawer-group [MenuGroup]=\"mGroup\" [useTranslation]=\"useTranslation\" [colapsed]=\"colapsed\"></drawer-group>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- [ End ] -->\r\n <div class=\"shrink-0 w-full\">\r\n <ng-content select=\"[slot=drawer]\"></ng-content>\r\n </div>\r\n</div>", styles: [".bg-active{--color-primary: var(--ion-color-primary) !important;--step-1-opacity: .7 !important;--step-2-opacity: .3 !important}.bg-inactive{--color-primary: var(--ion-color-step-250);--step-1-opacity: .5;--step-2-opacity: .4;--step-3-opacity: .8}.menu{display:flex;cursor:pointer;align-items:center;justify-content:center;gap:.5rem;border-radius:.75rem;padding:.5rem;transition:--color-primary,--step-1-opacity,--step-2-opacity .2s ease-in-out;--inset: var(--color-primary) 0px 1.75px 1px 0px inset;box-shadow:var(--inset)}.toggle:hover{--color-primary: var(--ion-color-step-500) !important;transition:--color-primary .2s ease-in-out}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: LoadingComponent, selector: "loading", inputs: ["text", "type", "loading"] }, { kind: "component", type: DrawerGroupComponent, selector: "drawer-group", inputs: ["MenuGroup", "colapsed", "useTranslation"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: SIonPopoverModule }, { kind: "component", type: i4.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss", "isVisibleChange"] }] }); }
59
58
  }
60
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DrawerComponent, decorators: [{
61
60
  type: Component,
@@ -64,9 +63,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
64
63
  IonicModule,
65
64
  LoadingComponent,
66
65
  DrawerGroupComponent,
67
- TranslateModule
68
- ], selector: 'drawer', template: "<div class=\"absolute left-0 top-0 h-full w-[19rem] flex flex-col bg-light\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"w-full px-2 h-14 pt-2 flex justify-between items-center text-3xl text-center\">\r\n <ion-button id=\"drawer-button\" class=\"shrink-0 portrait:hidden aspect-square h-12 z-10 default-transition m-0\" size=\"small\" fill=\"outline\" color=\"dark\" style=\"--border-radius: 999rem; --border-width: 0;\" (click)=\"ToggleCollapsed()\"> \r\n <ion-icon name=\"menu\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n <div class=\"size-full\">\r\n @if (!ref.children.length) {\r\n <ion-text class=\"size-full flex items-center justify-center default-transition z-0\" [ngClass]=\"{'opacity-0 -translate-x-1/2': colapsed }\"> \r\n {{title}}\r\n </ion-text>\r\n }\r\n <div #ref class=\"size-full flex items-center justify-center\">\r\n <ng-content select=\"[slot=logo]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id=\"menu-conteiner\" class=\"mask-y flex flex-col relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\" text=\"\"></loading>\r\n <div class=\"size-full shrink flex\">\r\n <div class=\"h-full w-16 p-2 shrink-0\">\r\n <div class=\"grid gap-2\">\r\n @for (item of lstMenu(); track $index) {\r\n <ion-item \r\n id=\"group-menu\" [title]=\"item.title\" class=\"bg-inactive relative overflow-visible\" lines=\"none\" style=\"--padding-start: 0;\"\r\n (click)=\"CurrentGroupActive = item\" \r\n [ngClass]=\"{'bg-active': CurrentGroupActive == item}\"\r\n >\r\n <div id=\"tooltip\" class=\"opacity-0 !pointer-events-none -translate-x-4 absolute top-0 bottom-0 default-transition left-14 px-2 my-auto text-nowrap h-8 bg-[var(--ion-color-secondary)] -z-30 rounded-xl flex items-center justify-center\">\r\n <div class=\"absolute -left-1 top-0 rounded bottom-0 my-auto rotate-45 h-4 aspect-square bg-[var(--ion-color-secondary)]\"></div>\r\n <ion-icon class=\"z-50 mr-2\" [name]=\"item.icon\"></ion-icon>\r\n <ion-text class=\"z-50\"> \r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n </ion-text>\r\n </div>\r\n <div class=\"absolute top-0 size-full flex items-center justify-center overflow-visible\">\r\n <ion-icon class=\"text-2xl\" [name]=\"item.icon\"></ion-icon>\r\n </div>\r\n </ion-item>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"h-full w-full border-dashed border-l relative\" style=\"border-color: color-mix(in srgb, var(--ion-color-dark) 20%, transparent 80%);\">\r\n @for (mGroup of lstMenu(); track $index) {\r\n <div class=\"absolute top-0 left-0 px-2 py-2 size-full default-transition opacity-0 translate-x-full z-0 mask-y overflow-y-auto\" [ngClass]=\"{'opacity-100 !translate-x-0': CurrentGroupActive == mGroup}\">\r\n <drawer-group [MenuGroup]=\"mGroup\" [useTranslation]=\"useTranslation\" [colapsed]=\"colapsed\"></drawer-group>\r\n </div>\r\n }\r\n </div>\r\n </div> \r\n\r\n <div class=\"shrink-0 w-full\">\r\n <ng-content select=\"[slot=drawer]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["#drawer-button{border-radius:9999px}#drawer-button:hover{background-color:color-mix(in srgb,var(--ion-color-dark-tint) 50%,transparent 50%)}#drawer-button:hover ion-icon{color:var(--ion-color-light)}#menu-conteiner{width:100%;height:100%;overflow-y:auto;overflow-x:hidden}#group-menu{--min-height: 3rem;--min-width: 3rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}#group-menu:hover #tooltip{width:fit-content!important;--tw-translate-x: 0px !important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important;opacity:1!important}.bg-active{--background: color-mix(in srgb, var(--ion-color-secondary) 70%, transparent 30%) !important}.bg-inactive{cursor:pointer;--border-radius: 1rem;--background: color-mix(in srgb, var(--ion-color-light-shade) 50%, transparent 50%) }.bg-inactive::part(native){transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.bg-inactive:hover{--background: color-mix(in srgb, var(--ion-color-light-shade) 70%, transparent 30%) }@media (prefers-color-scheme: dark){.bg-inactive{--background: color-mix(in srgb, var(--ion-color-light-tint) 70%, transparent 30%)}.bg-inactive:hover{--background: var(--ion-color-light-tint)}}\n"] }]
69
- }], ctorParameters: () => [{ type: i1.GenericService }], propDecorators: { loading: [{
66
+ TranslateModule,
67
+ SIonPopoverModule
68
+ ], selector: 'drawer', template: "<!-- <div class=\"absolute left-0 top-0 h-full w-[19rem] flex flex-col bg-light\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"w-full px-2 h-14 pt-2 flex justify-between items-center text-3xl text-center\">\r\n <ion-button id=\"drawer-button\" class=\"shrink-0 portrait:hidden aspect-square h-12 z-10 default-transition m-0\" size=\"small\" fill=\"outline\" color=\"dark\" style=\"--border-radius: 999rem; --border-width: 0;\" (click)=\"ToggleCollapsed()\"> \r\n <ion-icon name=\"menu\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n <div class=\"size-full\">\r\n @if (!ref.children.length) {\r\n <ion-text class=\"size-full flex items-center justify-center default-transition z-0\" [ngClass]=\"{'opacity-0 -translate-x-1/2': colapsed }\"> \r\n {{title}}\r\n </ion-text>\r\n }\r\n <div #ref class=\"size-full flex items-center justify-center\">\r\n <ng-content select=\"[slot=logo]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id=\"menu-conteiner\" class=\"mask-y flex flex-col relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\" text=\"\"></loading>\r\n <div class=\"size-full shrink flex\">\r\n <div class=\"h-full w-16 p-2 shrink-0\">\r\n <div class=\"grid gap-2\">\r\n @for (item of lstMenu(); track $index) {\r\n <ion-item \r\n id=\"group-menu\" [title]=\"item.title\" class=\"bg-inactive relative overflow-visible\" lines=\"none\" style=\"--padding-start: 0;\"\r\n (click)=\"CurrentGroupActive = item\" \r\n [ngClass]=\"{'bg-active': CurrentGroupActive == item}\"\r\n >\r\n <div id=\"tooltip\" class=\"opacity-0 !pointer-events-none -translate-x-4 absolute top-0 bottom-0 default-transition left-14 px-2 my-auto text-nowrap h-8 bg-[var(--ion-color-secondary)] -z-30 rounded-xl flex items-center justify-center\">\r\n <div class=\"absolute -left-1 top-0 rounded bottom-0 my-auto rotate-45 h-4 aspect-square bg-[var(--ion-color-secondary)]\"></div>\r\n <ion-icon class=\"z-50 mr-2\" [name]=\"item.icon\"></ion-icon>\r\n <ion-text class=\"z-50\"> \r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n </ion-text>\r\n </div>\r\n <div class=\"absolute top-0 size-full flex items-center justify-center overflow-visible\">\r\n <ion-icon class=\"text-2xl\" [name]=\"item.icon\"></ion-icon>\r\n </div>\r\n </ion-item>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"h-full w-full border-dashed border-l relative\" style=\"border-color: color-mix(in srgb, var(--ion-color-dark) 20%, transparent 80%);\">\r\n @for (mGroup of lstMenu(); track $index) {\r\n <div class=\"absolute top-0 left-0 px-2 py-2 size-full default-transition opacity-0 translate-x-full z-0 mask-y overflow-y-auto\" [ngClass]=\"{'opacity-100 !translate-x-0': CurrentGroupActive == mGroup}\">\r\n <drawer-group [MenuGroup]=\"mGroup\" [useTranslation]=\"useTranslation\" [colapsed]=\"colapsed\"></drawer-group>\r\n </div>\r\n }\r\n </div>\r\n </div> \r\n\r\n <div class=\"shrink-0 w-full\">\r\n <ng-content select=\"[slot=drawer]\"></ng-content>\r\n </div>\r\n </div>\r\n</div> -->\r\n<div class=\"absolute left-0 top-0 h-full bg-light size-full flex flex-col p-2 !pr-0 w-[19rem] overflow-hidden\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <!-- [ Header ] -->\r\n <div class=\"shrink-0 w-full flex justify-between items-center\">\r\n <div #anchor\r\n (click)=\"ToggleCollapsed()\" \r\n class=\"toggle size-10 aspect-square shrink-0 rounded-xl bg-inactive gradient-background menu\"\r\n >\r\n <ion-icon name=\"menu\" slot=\"icon-only\"></ion-icon>\r\n </div>\r\n <!-- <ion-button class=\"size-10 shrink-0 aspect-square\" size=\"small\" color=\"medium\" (click)=\"ToggleCollapsed()\">\r\n <ion-icon name=\"menu\" slot=\"icon-only\"></ion-icon>\r\n </ion-button> -->\r\n\r\n <div class=\"size-full shrink\">\r\n @if (!ref.children.length) {\r\n <ion-text class=\"size-full flex items-center justify-center default-transition z-0\" [ngClass]=\"{'opacity-0 -translate-x-1/2 pointer-events-none': colapsed }\"> \r\n {{title}}\r\n </ion-text>\r\n }\r\n <div #ref class=\"size-full flex items-center justify-center\">\r\n <ng-content select=\"[slot=logo]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- [ Content ] -->\r\n <div class=\"size-full shrink flex flex-col relative overflow-hidden\">\r\n <loading [type]=\"3\" [loading]=\"loading\" text=\"\"></loading>\r\n <div class=\"size-full shrink flex gap-2\">\r\n <div class=\"h-full supports-[selector(::-webkit-scrollbar-thumb)]:!w-[3.375rem] w-12 pr-2 py-2 mask-y shrink-0 flex flex-col gap-2 overflow-y-auto border-dashed border-r border-r-medium/30\">\r\n @for (item of lstMenu(); track $index) {\r\n <div>\r\n <div\r\n [class.bg-active]=\"CurrentGroupActive == item\"\r\n #anchor (mouseenter)=\"popover.present($event)\" \r\n (mouseleave)=\"popover.dismiss()\" \r\n (click)=\"CurrentGroupActive = item\" \r\n class=\"w-full aspect-square shrink-0 rounded-xl bg-inactive gradient-background menu\"\r\n >\r\n <ion-icon [name]=\"item.icon\"></ion-icon>\r\n </div>\r\n <sion-popover #popover [anchor]=\"anchor\" [flip]=\"false\" placement=\"right\" fill=\"solid\">\r\n <div class=\"p-1\">\r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n </div>\r\n </sion-popover>\r\n </div>\r\n <!-- <ion-button class=\"w-full aspect-square shrink-0\" size=\"small\" color=\"secondary\" (click)=\"CurrentGroupActive = item\"> \r\n <ion-icon [name]=\"item.icon\" slot=\"icon-only\"></ion-icon>\r\n </ion-button> -->\r\n }\r\n\r\n </div>\r\n <div class=\"size-full shrink relative\">\r\n @for (mGroup of lstMenu(); track $index) {\r\n <div class=\"absolute top-0 left-0 size-full py-2 default-transition opacity-0 translate-x-full z-0 overflow-hidden\" [ngClass]=\"{'opacity-100 !translate-x-0': CurrentGroupActive == mGroup}\">\r\n <drawer-group [MenuGroup]=\"mGroup\" [useTranslation]=\"useTranslation\" [colapsed]=\"colapsed\"></drawer-group>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- [ End ] -->\r\n <div class=\"shrink-0 w-full\">\r\n <ng-content select=\"[slot=drawer]\"></ng-content>\r\n </div>\r\n</div>", styles: [".bg-active{--color-primary: var(--ion-color-primary) !important;--step-1-opacity: .7 !important;--step-2-opacity: .3 !important}.bg-inactive{--color-primary: var(--ion-color-step-250);--step-1-opacity: .5;--step-2-opacity: .4;--step-3-opacity: .8}.menu{display:flex;cursor:pointer;align-items:center;justify-content:center;gap:.5rem;border-radius:.75rem;padding:.5rem;transition:--color-primary,--step-1-opacity,--step-2-opacity .2s ease-in-out;--inset: var(--color-primary) 0px 1.75px 1px 0px inset;box-shadow:var(--inset)}.toggle:hover{--color-primary: var(--ion-color-step-500) !important;transition:--color-primary .2s ease-in-out}\n"] }]
69
+ }], ctorParameters: () => [], propDecorators: { loading: [{
70
70
  type: Input
71
71
  }], colapsed: [{
72
72
  type: Input
@@ -114,4 +114,4 @@ function FindMenuParent(menus, targetMenu) {
114
114
  }
115
115
  return null;
116
116
  }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBZSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7QUFjakUsTUFBTSxPQUFPLGVBQWU7SUFnQjFCLFlBQ1UsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBZnhDLHNCQUFpQixHQUFRO1lBQ3ZCLFNBQVMsRUFBTyxxQkFBcUI7WUFDckMsY0FBYyxFQUFFLDBCQUEwQjtTQUMzQyxDQUFDO1FBRU8sWUFBTyxHQUFZLElBQUksQ0FBQztRQUNqQyxZQUFPLEdBQXdCLEtBQUssRUFBVSxDQUFBO1FBQzlDLG1CQUFjLEdBQW1CLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhG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QUFDaEIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQWEsRUFBRSxVQUFnQjtJQUNyRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLDhEQUE4RDtRQUM5RCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM3RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxpQ0FBaUM7UUFDakMsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3hELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFdmVudEVtaXR0ZXIsIGlucHV0LCBJbnB1dCwgSW5wdXRTaWduYWwsIE91dHB1dCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4vbWVudSc7XHJcblxyXG5pbXBvcnQgeyBEcmF3ZXJHcm91cENvbXBvbmVudCB9IGZyb20gJy4vZHJhd2VyLWdyb3VwL2RyYXdlci1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nZW5lcmljcy5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBJb25pY01vZHVsZSxcclxuICAgIExvYWRpbmdDb21wb25lbnQsXHJcbiAgICBEcmF3ZXJHcm91cENvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG4gIF0sXHJcbiAgc2VsZWN0b3I6ICdkcmF3ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RyYXdlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29tcG9uZW50IHtcclxuXHJcbiAgVHJhbnNsYXRpb25Nb2R1bGU6IGFueSA9IHtcclxuICAgIFBlcm1pc3NhbyAgICAgOiAnRW50aXRpZXMuUGVybWlzc2FvLicsXHJcbiAgICBQZXJtaXNzYW9HcnVwbzogJ0VudGl0aWVzLlBlcm1pc3Nhb0dydXBvLidcclxuICB9O1xyXG5cclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBsc3RNZW51OiBJbnB1dFNpZ25hbDxNZW51W10+ID0gaW5wdXQ8TWVudVtdPigpIFxyXG4gIGxzdEZsYXR0ZW5NZW51OiBTaWduYWw8TWVudVtdPiA9IGNvbXB1dGVkKCgpID0+IHsgcmV0dXJuIEZsYXR0ZW5NZW51cyh0aGlzLmxzdE1lbnUoKSkgfSk7XHJcblxyXG4gIEBJbnB1dCgpIGNvbGFwc2VkOiBib29sZWFuID0gZmFsc2U7ICBcclxuICBAT3V0cHV0KCkgY29sYXBzZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47ICBcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZVRyYW5zbGF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZSxcclxuICApIHsgXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICAvL0hhbmRsZSBNZW51IFRpdGxlXHJcbiAgICAgIGNvbnN0IGxzdEZsYXQgPSB0aGlzLmxzdEZsYXR0ZW5NZW51KCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRNZW51ID0gbHN0RmxhdC5maW5kKHAgPT4gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLmluY2x1ZGVzKCcvJyArIHAucm91dGUpKTtcclxuICAgICAgY29uc3QgZ3JvdXA6IE1lbnUgfCBudWxsID0gRmluZE1lbnVQYXJlbnQodGhpcy5sc3RNZW51KCksIGN1cnJlbnRNZW51KTtcclxuICAgICAgaWYoZ3JvdXApe1xyXG4gICAgICAgIHRoaXMuQ3VycmVudEdyb3VwQWN0aXZlID0gZ3JvdXA7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLkN1cnJlbnRHcm91cEFjdGl2ZSA9IHRoaXMubHN0TWVudSgpWzBdO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgQ3VycmVudEdyb3VwQWN0aXZlOiBNZW51ID0gbnVsbDtcclxuXHJcbiAgVG9nZ2xlQ29sbGFwc2VkKCl7XHJcbiAgICB0aGlzLmNvbGFwc2VkQ2hhbmdlLmVtaXQoIXRoaXMuX2VudGVyQ29sYXBzZWQpO1xyXG4gICAgdGhpcy5fZW50ZXJDb2xhcHNlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgX2VudGVyQ29sYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvbk1vdXNlRW50ZXIoKXtcclxuICAgIGlmKHRoaXMuY29sYXBzZWQpe1xyXG4gICAgICB0aGlzLl9lbnRlckNvbGFwc2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb2xhcHNlZENoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25Nb3VzZUxlYXZlKCl7XHJcbiAgICBpZih0aGlzLl9lbnRlckNvbGFwc2VkKXtcclxuICAgICAgdGhpcy5fZW50ZXJDb2xhcHNlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbGFwc2VkQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogRmxhdHRlbnMgYSBoaWVyYXJjaGljYWwgTWVudVtdIHN0cnVjdHVyZSBpbnRvIGEgc2luZ2xlIGFycmF5XHJcbiAqIGNvbnRhaW5pbmcgYWxsIE1lbnUgaXRlbXMgZnJvbSB0aGUgb3JpZ2luYWwgYXJyYXkgYW5kIGFsbCBuZXN0ZWQgaXRlbXNcclxuICogQHBhcmFtIG1lbnVzIFRoZSBhcnJheSBvZiBNZW51IGl0ZW1zIHRvIGZsYXR0ZW5cclxuICogQHJldHVybnMgQSBmbGF0dGVuZWQgYXJyYXkgY29udGFpbmluZyBhbGwgTWVudSBpdGVtc1xyXG4gKi9cclxuZnVuY3Rpb24gRmxhdHRlbk1lbnVzKG1lbnVzOiBNZW51W10pOiBNZW51W10ge1xyXG4gIGNvbnN0IHJlc3VsdDogTWVudVtdID0gW107XHJcbiAgXHJcbiAgZnVuY3Rpb24gYWRkTWVudUl0ZW1zKGl0ZW1zOiBNZW51W10pIHtcclxuICAgIGZvciAoY29uc3QgbWVudSBvZiBpdGVtcykge1xyXG4gICAgICAvLyBBZGQgY3VycmVudCBtZW51IHRvIHJlc3VsdFxyXG4gICAgICByZXN1bHQucHVzaChtZW51KTtcclxuICAgICAgXHJcbiAgICAgIC8vIFByb2Nlc3MgbmVzdGVkIG1lbnVzIGlmIHRoZXkgZXhpc3RcclxuICAgICAgaWYgKG1lbnUubHN0TWVudSAmJiBtZW51LmxzdE1lbnUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGFkZE1lbnVJdGVtcyhtZW51LmxzdE1lbnUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIGFkZE1lbnVJdGVtcyhtZW51cyk7XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZnVuY3Rpb24gRmluZE1lbnVQYXJlbnQobWVudXM6IE1lbnVbXSwgdGFyZ2V0TWVudTogTWVudSk6IE1lbnUgfCBudWxsIHtcclxuICBmb3IgKGNvbnN0IG1lbnUgb2YgbWVudXMpIHtcclxuICAgIC8vIENoZWNrIGlmIGN1cnJlbnQgbWVudSBoYXMgdGhlIHRhcmdldCBpbiBpdHMgZGlyZWN0IGNoaWxkcmVuXHJcbiAgICBpZiAobWVudS5sc3RNZW51ICYmIG1lbnUubHN0TWVudS5zb21lKG0gPT4gbSA9PT0gdGFyZ2V0TWVudSkpIHtcclxuICAgICAgcmV0dXJuIG1lbnU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIFNlYXJjaCBkZWVwZXIgaW4gdGhlIGhpZXJhcmNoeVxyXG4gICAgaWYgKG1lbnUubHN0TWVudSAmJiBtZW51LmxzdE1lbnUubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBGaW5kTWVudVBhcmVudChtZW51LmxzdE1lbnUsIHRhcmdldE1lbnUpO1xyXG4gICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIHBhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICByZXR1cm4gbnVsbDtcclxufSIsIjxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctWzE5cmVtXSBmbGV4IGZsZXgtY29sIGJnLWxpZ2h0XCIgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIiAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgcHgtMiBoLTE0IHB0LTIgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHRleHQtM3hsIHRleHQtY2VudGVyXCI+XHJcbiAgICA8aW9uLWJ1dHRvbiBpZD1cImRyYXdlci1idXR0b25cIiBjbGFzcz1cInNocmluay0wIHBvcnRyYWl0OmhpZGRlbiBhc3BlY3Qtc3F1YXJlIGgtMTIgei0xMCBkZWZhdWx0LXRyYW5zaXRpb24gbS0wXCIgc2l6ZT1cInNtYWxsXCIgZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cImRhcmtcIiBzdHlsZT1cIi0tYm9yZGVyLXJhZGl1czogOTk5cmVtOyAtLWJvcmRlci13aWR0aDogMDtcIiAoY2xpY2spPVwiVG9nZ2xlQ29sbGFwc2VkKClcIj4gXHJcbiAgICAgIDxpb24taWNvbiBuYW1lPVwibWVudVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxyXG4gICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbFwiPlxyXG4gICAgICBAaWYgKCFyZWYuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGRlZmF1bHQtdHJhbnNpdGlvbiB6LTBcIiBbbmdDbGFzc109XCJ7J29wYWNpdHktMCAtdHJhbnNsYXRlLXgtMS8yJzogY29sYXBzZWQgfVwiPiBcclxuICAgICAgICAgIHt7dGl0bGV9fVxyXG4gICAgICAgIDwvaW9uLXRleHQ+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiAjcmVmIGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9bG9nb11cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgaWQ9XCJtZW51LWNvbnRlaW5lclwiIGNsYXNzPVwibWFzay15IGZsZXggZmxleC1jb2wgcmVsYXRpdmVcIj5cclxuICAgIDxsb2FkaW5nIFt0eXBlXT1cIjNcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgdGV4dD1cIlwiPjwvbG9hZGluZz5cclxuICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgc2hyaW5rIGZsZXhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCB3LTE2IHAtMiBzaHJpbmstMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdhcC0yXCI+XHJcbiAgICAgICAgICBAZm9yIChpdGVtIG9mIGxzdE1lbnUoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxpb24taXRlbSBcclxuICAgICAgICAgICAgICBpZD1cImdyb3VwLW1lbnVcIiBbdGl0bGVdPVwiaXRlbS50aXRsZVwiIGNsYXNzPVwiYmctaW5hY3RpdmUgcmVsYXRpdmUgb3ZlcmZsb3ctdmlzaWJsZVwiIGxpbmVzPVwibm9uZVwiIHN0eWxlPVwiLS1wYWRkaW5nLXN0YXJ0OiAwO1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIkN1cnJlbnRHcm91cEFjdGl2ZSA9IGl0ZW1cIiBcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2JnLWFjdGl2ZSc6IEN1cnJlbnRHcm91cEFjdGl2ZSA9PSBpdGVtfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGlkPVwidG9vbHRpcFwiIGNsYXNzPVwib3BhY2l0eS0wICFwb2ludGVyLWV2ZW50cy1ub25lIC10cmFuc2xhdGUteC00IGFic29sdXRlIHRvcC0wIGJvdHRvbS0wIGRlZmF1bHQtdHJhbnNpdGlvbiBsZWZ0LTE0IHB4LTIgbXktYXV0byB0ZXh0LW5vd3JhcCBoLTggYmctW3ZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnkpXSAtei0zMCByb3VuZGVkLXhsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgLWxlZnQtMSB0b3AtMCByb3VuZGVkIGJvdHRvbS0wIG15LWF1dG8gcm90YXRlLTQ1IGgtNCBhc3BlY3Qtc3F1YXJlIGJnLVt2YXIoLS1pb24tY29sb3Itc2Vjb25kYXJ5KV1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBjbGFzcz1cInotNTAgbXItMlwiIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJ6LTUwXCI+IFxyXG4gICAgICAgICAgICAgICAgICB7e3VzZVRyYW5zbGF0aW9uID8gKFRyYW5zbGF0aW9uTW9kdWxlLlBlcm1pc3Nhb0dydXBvICsgaXRlbS5pZCB8IHRyYW5zbGF0ZSkgOiBpdGVtLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIHNpemUtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy12aXNpYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJ0ZXh0LTJ4bFwiIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctZnVsbCBib3JkZXItZGFzaGVkIGJvcmRlci1sIHJlbGF0aXZlXCIgc3R5bGU9XCJib3JkZXItY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItZGFyaykgMjAlLCB0cmFuc3BhcmVudCA4MCUpO1wiPlxyXG4gICAgICAgIEBmb3IgKG1Hcm91cCBvZiBsc3RNZW51KCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIGxlZnQtMCBweC0yIHB5LTIgc2l6ZS1mdWxsIGRlZmF1bHQtdHJhbnNpdGlvbiBvcGFjaXR5LTAgdHJhbnNsYXRlLXgtZnVsbCB6LTAgbWFzay15IG92ZXJmbG93LXktYXV0b1wiIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS0xMDAgIXRyYW5zbGF0ZS14LTAnOiBDdXJyZW50R3JvdXBBY3RpdmUgPT0gbUdyb3VwfVwiPlxyXG4gICAgICAgICAgICA8ZHJhd2VyLWdyb3VwIFtNZW51R3JvdXBdPVwibUdyb3VwXCIgW3VzZVRyYW5zbGF0aW9uXT1cInVzZVRyYW5zbGF0aW9uXCIgW2NvbGFwc2VkXT1cImNvbGFwc2VkXCI+PC9kcmF3ZXItZ3JvdXA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IFxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzaHJpbmstMCB3LWZ1bGxcIj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9ZHJhd2VyXVwiPjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBZSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7OztBQWVuRSxNQUFNLE9BQU8sZUFBZTtJQWdCMUI7UUFkQSxzQkFBaUIsR0FBUTtZQUN2QixTQUFTLEVBQU8scUJBQXFCO1lBQ3JDLGNBQWMsRUFBRSwwQkFBMEI7U0FDM0MsQ0FBQztRQUVPLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDakMsWUFBTyxHQUF3QixLQUFLLEVBQVUsQ0FBQTtRQUM5QyxtQkFBYyxHQUFtQixRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoRixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ3pCLG1CQUFjLEdBQTBC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RUQsU0FBUyxjQUFjLENBQUMsS0FBYSxFQUFFLFVBQWdCO0lBQ3JELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsOERBQThEO1FBQzlELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELGlDQUFpQztRQUNqQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDeEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEV2ZW50RW1pdHRlciwgaW5wdXQsIElucHV0LCBJbnB1dFNpZ25hbCwgT3V0cHV0LCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnLi9tZW51JztcclxuXHJcbmltcG9ydCB7IERyYXdlckdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9kcmF3ZXItZ3JvdXAvZHJhd2VyLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTSW9uUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uL3BvcG92ZXIvc2lvbi1wb3BvdmVyLm1vZHVsZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSW9uaWNNb2R1bGUsXHJcbiAgICBMb2FkaW5nQ29tcG9uZW50LFxyXG4gICAgRHJhd2VyR3JvdXBDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBTSW9uUG9wb3Zlck1vZHVsZVxyXG4gIF0sXHJcbiAgc2VsZWN0b3I6ICdkcmF3ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RyYXdlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29tcG9uZW50IHtcclxuXHJcbiAgVHJhbnNsYXRpb25Nb2R1bGU6IGFueSA9IHtcclxuICAgIFBlcm1pc3NhbyAgICAgOiAnRW50aXRpZXMuUGVybWlzc2FvLicsXHJcbiAgICBQZXJtaXNzYW9HcnVwbzogJ0VudGl0aWVzLlBlcm1pc3Nhb0dydXBvLidcclxuICB9O1xyXG5cclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBsc3RNZW51OiBJbnB1dFNpZ25hbDxNZW51W10+ID0gaW5wdXQ8TWVudVtdPigpIFxyXG4gIGxzdEZsYXR0ZW5NZW51OiBTaWduYWw8TWVudVtdPiA9IGNvbXB1dGVkKCgpID0+IHsgcmV0dXJuIEZsYXR0ZW5NZW51cyh0aGlzLmxzdE1lbnUoKSkgfSk7XHJcblxyXG4gIEBJbnB1dCgpIGNvbGFwc2VkOiBib29sZWFuID0gZmFsc2U7ICBcclxuICBAT3V0cHV0KCkgY29sYXBzZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47ICBcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZVRyYW5zbGF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoKSB7IFxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgLy9IYW5kbGUgTWVudSBUaXRsZVxyXG4gICAgICBjb25zdCBsc3RGbGF0ID0gdGhpcy5sc3RGbGF0dGVuTWVudSgpO1xyXG4gICAgICBjb25zdCBjdXJyZW50TWVudSA9IGxzdEZsYXQuZmluZChwID0+IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmNsdWRlcygnLycgKyBwLnJvdXRlKSk7XHJcbiAgICAgIGNvbnN0IGdyb3VwOiBNZW51IHwgbnVsbCA9IEZpbmRNZW51UGFyZW50KHRoaXMubHN0TWVudSgpLCBjdXJyZW50TWVudSk7XHJcbiAgICAgIGlmKGdyb3VwKXtcclxuICAgICAgICB0aGlzLkN1cnJlbnRHcm91cEFjdGl2ZSA9IGdyb3VwO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5DdXJyZW50R3JvdXBBY3RpdmUgPSB0aGlzLmxzdE1lbnUoKVswXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIEN1cnJlbnRHcm91cEFjdGl2ZTogTWVudSA9IG51bGw7XHJcblxyXG4gIFRvZ2dsZUNvbGxhcHNlZCgpe1xyXG4gICAgdGhpcy5jb2xhcHNlZENoYW5nZS5lbWl0KCF0aGlzLl9lbnRlckNvbGFwc2VkKTtcclxuICAgIHRoaXMuX2VudGVyQ29sYXBzZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIF9lbnRlckNvbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb25Nb3VzZUVudGVyKCl7XHJcbiAgICBpZih0aGlzLmNvbGFwc2VkKXtcclxuICAgICAgdGhpcy5fZW50ZXJDb2xhcHNlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29sYXBzZWRDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uTW91c2VMZWF2ZSgpe1xyXG4gICAgaWYodGhpcy5fZW50ZXJDb2xhcHNlZCl7XHJcbiAgICAgIHRoaXMuX2VudGVyQ29sYXBzZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb2xhcHNlZENoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEZsYXR0ZW5zIGEgaGllcmFyY2hpY2FsIE1lbnVbXSBzdHJ1Y3R1cmUgaW50byBhIHNpbmdsZSBhcnJheVxyXG4gKiBjb250YWluaW5nIGFsbCBNZW51IGl0ZW1zIGZyb20gdGhlIG9yaWdpbmFsIGFycmF5IGFuZCBhbGwgbmVzdGVkIGl0ZW1zXHJcbiAqIEBwYXJhbSBtZW51cyBUaGUgYXJyYXkgb2YgTWVudSBpdGVtcyB0byBmbGF0dGVuXHJcbiAqIEByZXR1cm5zIEEgZmxhdHRlbmVkIGFycmF5IGNvbnRhaW5pbmcgYWxsIE1lbnUgaXRlbXNcclxuICovXHJcbmZ1bmN0aW9uIEZsYXR0ZW5NZW51cyhtZW51czogTWVudVtdKTogTWVudVtdIHtcclxuICBjb25zdCByZXN1bHQ6IE1lbnVbXSA9IFtdO1xyXG4gIFxyXG4gIGZ1bmN0aW9uIGFkZE1lbnVJdGVtcyhpdGVtczogTWVudVtdKSB7XHJcbiAgICBmb3IgKGNvbnN0IG1lbnUgb2YgaXRlbXMpIHtcclxuICAgICAgLy8gQWRkIGN1cnJlbnQgbWVudSB0byByZXN1bHRcclxuICAgICAgcmVzdWx0LnB1c2gobWVudSk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBQcm9jZXNzIG5lc3RlZCBtZW51cyBpZiB0aGV5IGV4aXN0XHJcbiAgICAgIGlmIChtZW51LmxzdE1lbnUgJiYgbWVudS5sc3RNZW51Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBhZGRNZW51SXRlbXMobWVudS5sc3RNZW51KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBhZGRNZW51SXRlbXMobWVudXMpO1xyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIEZpbmRNZW51UGFyZW50KG1lbnVzOiBNZW51W10sIHRhcmdldE1lbnU6IE1lbnUpOiBNZW51IHwgbnVsbCB7XHJcbiAgZm9yIChjb25zdCBtZW51IG9mIG1lbnVzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBjdXJyZW50IG1lbnUgaGFzIHRoZSB0YXJnZXQgaW4gaXRzIGRpcmVjdCBjaGlsZHJlblxyXG4gICAgaWYgKG1lbnUubHN0TWVudSAmJiBtZW51LmxzdE1lbnUuc29tZShtID0+IG0gPT09IHRhcmdldE1lbnUpKSB7XHJcbiAgICAgIHJldHVybiBtZW51O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBTZWFyY2ggZGVlcGVyIGluIHRoZSBoaWVyYXJjaHlcclxuICAgIGlmIChtZW51LmxzdE1lbnUgJiYgbWVudS5sc3RNZW51Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gRmluZE1lbnVQYXJlbnQobWVudS5sc3RNZW51LCB0YXJnZXRNZW51KTtcclxuICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgIHJldHVybiBwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgcmV0dXJuIG51bGw7XHJcbn0iLCI8IS0tIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctWzE5cmVtXSBmbGV4IGZsZXgtY29sIGJnLWxpZ2h0XCIgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIiAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgcHgtMiBoLTE0IHB0LTIgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHRleHQtM3hsIHRleHQtY2VudGVyXCI+XHJcbiAgICA8aW9uLWJ1dHRvbiBpZD1cImRyYXdlci1idXR0b25cIiBjbGFzcz1cInNocmluay0wIHBvcnRyYWl0OmhpZGRlbiBhc3BlY3Qtc3F1YXJlIGgtMTIgei0xMCBkZWZhdWx0LXRyYW5zaXRpb24gbS0wXCIgc2l6ZT1cInNtYWxsXCIgZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cImRhcmtcIiBzdHlsZT1cIi0tYm9yZGVyLXJhZGl1czogOTk5cmVtOyAtLWJvcmRlci13aWR0aDogMDtcIiAoY2xpY2spPVwiVG9nZ2xlQ29sbGFwc2VkKClcIj4gXHJcbiAgICAgIDxpb24taWNvbiBuYW1lPVwibWVudVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxyXG4gICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbFwiPlxyXG4gICAgICBAaWYgKCFyZWYuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGRlZmF1bHQtdHJhbnNpdGlvbiB6LTBcIiBbbmdDbGFzc109XCJ7J29wYWNpdHktMCAtdHJhbnNsYXRlLXgtMS8yJzogY29sYXBzZWQgfVwiPiBcclxuICAgICAgICAgIHt7dGl0bGV9fVxyXG4gICAgICAgIDwvaW9uLXRleHQ+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiAjcmVmIGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9bG9nb11cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgaWQ9XCJtZW51LWNvbnRlaW5lclwiIGNsYXNzPVwibWFzay15IGZsZXggZmxleC1jb2wgcmVsYXRpdmVcIj5cclxuICAgIDxsb2FkaW5nIFt0eXBlXT1cIjNcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgdGV4dD1cIlwiPjwvbG9hZGluZz5cclxuICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgc2hyaW5rIGZsZXhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCB3LTE2IHAtMiBzaHJpbmstMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdhcC0yXCI+XHJcbiAgICAgICAgICBAZm9yIChpdGVtIG9mIGxzdE1lbnUoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxpb24taXRlbSBcclxuICAgICAgICAgICAgICBpZD1cImdyb3VwLW1lbnVcIiBbdGl0bGVdPVwiaXRlbS50aXRsZVwiIGNsYXNzPVwiYmctaW5hY3RpdmUgcmVsYXRpdmUgb3ZlcmZsb3ctdmlzaWJsZVwiIGxpbmVzPVwibm9uZVwiIHN0eWxlPVwiLS1wYWRkaW5nLXN0YXJ0OiAwO1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIkN1cnJlbnRHcm91cEFjdGl2ZSA9IGl0ZW1cIiBcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2JnLWFjdGl2ZSc6IEN1cnJlbnRHcm91cEFjdGl2ZSA9PSBpdGVtfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGlkPVwidG9vbHRpcFwiIGNsYXNzPVwib3BhY2l0eS0wICFwb2ludGVyLWV2ZW50cy1ub25lIC10cmFuc2xhdGUteC00IGFic29sdXRlIHRvcC0wIGJvdHRvbS0wIGRlZmF1bHQtdHJhbnNpdGlvbiBsZWZ0LTE0IHB4LTIgbXktYXV0byB0ZXh0LW5vd3JhcCBoLTggYmctW3ZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnkpXSAtei0zMCByb3VuZGVkLXhsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgLWxlZnQtMSB0b3AtMCByb3VuZGVkIGJvdHRvbS0wIG15LWF1dG8gcm90YXRlLTQ1IGgtNCBhc3BlY3Qtc3F1YXJlIGJnLVt2YXIoLS1pb24tY29sb3Itc2Vjb25kYXJ5KV1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBjbGFzcz1cInotNTAgbXItMlwiIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJ6LTUwXCI+IFxyXG4gICAgICAgICAgICAgICAgICB7e3VzZVRyYW5zbGF0aW9uID8gKFRyYW5zbGF0aW9uTW9kdWxlLlBlcm1pc3Nhb0dydXBvICsgaXRlbS5pZCB8IHRyYW5zbGF0ZSkgOiBpdGVtLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIHNpemUtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy12aXNpYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJ0ZXh0LTJ4bFwiIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctZnVsbCBib3JkZXItZGFzaGVkIGJvcmRlci1sIHJlbGF0aXZlXCIgc3R5bGU9XCJib3JkZXItY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItZGFyaykgMjAlLCB0cmFuc3BhcmVudCA4MCUpO1wiPlxyXG4gICAgICAgIEBmb3IgKG1Hcm91cCBvZiBsc3RNZW51KCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIGxlZnQtMCBweC0yIHB5LTIgc2l6ZS1mdWxsIGRlZmF1bHQtdHJhbnNpdGlvbiBvcGFjaXR5LTAgdHJhbnNsYXRlLXgtZnVsbCB6LTAgbWFzay15IG92ZXJmbG93LXktYXV0b1wiIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS0xMDAgIXRyYW5zbGF0ZS14LTAnOiBDdXJyZW50R3JvdXBBY3RpdmUgPT0gbUdyb3VwfVwiPlxyXG4gICAgICAgICAgICA8ZHJhd2VyLWdyb3VwIFtNZW51R3JvdXBdPVwibUdyb3VwXCIgW3VzZVRyYW5zbGF0aW9uXT1cInVzZVRyYW5zbGF0aW9uXCIgW2NvbGFwc2VkXT1cImNvbGFwc2VkXCI+PC9kcmF3ZXItZ3JvdXA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IFxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzaHJpbmstMCB3LWZ1bGxcIj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9ZHJhd2VyXVwiPjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4gLS0+XHJcbjxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIGJnLWxpZ2h0IHNpemUtZnVsbCBmbGV4IGZsZXgtY29sIHAtMiAhcHItMCB3LVsxOXJlbV0gb3ZlcmZsb3ctaGlkZGVuXCIgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIiAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiPlxyXG4gIDwhLS0gWyBIZWFkZXIgXSAtLT5cclxuICA8ZGl2IGNsYXNzPVwic2hyaW5rLTAgdy1mdWxsIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGRpdiAjYW5jaG9yXHJcbiAgICAgIChjbGljayk9XCJUb2dnbGVDb2xsYXBzZWQoKVwiIFxyXG4gICAgICBjbGFzcz1cInRvZ2dsZSBzaXplLTEwIGFzcGVjdC1zcXVhcmUgc2hyaW5rLTAgcm91bmRlZC14bCBiZy1pbmFjdGl2ZSBncmFkaWVudC1iYWNrZ3JvdW5kIG1lbnVcIlxyXG4gICAgPlxyXG4gICAgICA8aW9uLWljb24gbmFtZT1cIm1lbnVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8aW9uLWJ1dHRvbiBjbGFzcz1cInNpemUtMTAgc2hyaW5rLTAgYXNwZWN0LXNxdWFyZVwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwibWVkaXVtXCIgKGNsaWNrKT1cIlRvZ2dsZUNvbGxhcHNlZCgpXCI+XHJcbiAgICAgIDxpb24taWNvbiBuYW1lPVwibWVudVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxyXG4gICAgPC9pb24tYnV0dG9uPiAtLT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIHNocmlua1wiPlxyXG4gICAgICBAaWYgKCFyZWYuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGRlZmF1bHQtdHJhbnNpdGlvbiB6LTBcIiBbbmdDbGFzc109XCJ7J29wYWNpdHktMCAtdHJhbnNsYXRlLXgtMS8yIHBvaW50ZXItZXZlbnRzLW5vbmUnOiBjb2xhcHNlZCB9XCI+IFxyXG4gICAgICAgICAge3t0aXRsZX19XHJcbiAgICAgICAgPC9pb24tdGV4dD5cclxuICAgICAgfVxyXG4gICAgICA8ZGl2ICNyZWYgY2xhc3M9XCJzaXplLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1sb2dvXVwiPjwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBbIENvbnRlbnQgXSAtLT5cclxuICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIHNocmluayBmbGV4IGZsZXgtY29sIHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgPGxvYWRpbmcgW3R5cGVdPVwiM1wiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiB0ZXh0PVwiXCI+PC9sb2FkaW5nPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCBzaHJpbmsgZmxleCBnYXAtMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHN1cHBvcnRzLVtzZWxlY3Rvcig6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iKV06IXctWzMuMzc1cmVtXSB3LTEyIHByLTIgcHktMiBtYXNrLXkgc2hyaW5rLTAgZmxleCBmbGV4LWNvbCBnYXAtMiBvdmVyZmxvdy15LWF1dG8gYm9yZGVyLWRhc2hlZCBib3JkZXItciBib3JkZXItci1tZWRpdW0vMzBcIj5cclxuICAgICAgICBAZm9yIChpdGVtIG9mIGxzdE1lbnUoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLWFjdGl2ZV09XCJDdXJyZW50R3JvdXBBY3RpdmUgPT0gaXRlbVwiXHJcbiAgICAgICAgICAgICAgI2FuY2hvciAobW91c2VlbnRlcik9XCJwb3BvdmVyLnByZXNlbnQoJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInBvcG92ZXIuZGlzbWlzcygpXCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIkN1cnJlbnRHcm91cEFjdGl2ZSA9IGl0ZW1cIiBcclxuICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBhc3BlY3Qtc3F1YXJlIHNocmluay0wIHJvdW5kZWQteGwgYmctaW5hY3RpdmUgZ3JhZGllbnQtYmFja2dyb3VuZCBtZW51XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJpdGVtLmljb25cIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNpb24tcG9wb3ZlciAjcG9wb3ZlciBbYW5jaG9yXT1cImFuY2hvclwiIFtmbGlwXT1cImZhbHNlXCIgcGxhY2VtZW50PVwicmlnaHRcIiBmaWxsPVwic29saWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICAgICAgICB7e3VzZVRyYW5zbGF0aW9uID8gKFRyYW5zbGF0aW9uTW9kdWxlLlBlcm1pc3Nhb0dydXBvICsgaXRlbS5pZCB8IHRyYW5zbGF0ZSkgOiBpdGVtLnRpdGxlfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9zaW9uLXBvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGlvbi1idXR0b24gY2xhc3M9XCJ3LWZ1bGwgYXNwZWN0LXNxdWFyZSBzaHJpbmstMFwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cIkN1cnJlbnRHcm91cEFjdGl2ZSA9IGl0ZW1cIj4gXHJcbiAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJpdGVtLmljb25cIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj4gLS0+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgc2hyaW5rIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgQGZvciAobUdyb3VwIG9mIGxzdE1lbnUoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHNpemUtZnVsbCBweS0yIGRlZmF1bHQtdHJhbnNpdGlvbiBvcGFjaXR5LTAgdHJhbnNsYXRlLXgtZnVsbCB6LTAgb3ZlcmZsb3ctaGlkZGVuXCIgW25nQ2xhc3NdPVwieydvcGFjaXR5LTEwMCAhdHJhbnNsYXRlLXgtMCc6IEN1cnJlbnRHcm91cEFjdGl2ZSA9PSBtR3JvdXB9XCI+XHJcbiAgICAgICAgICAgIDxkcmF3ZXItZ3JvdXAgW01lbnVHcm91cF09XCJtR3JvdXBcIiBbdXNlVHJhbnNsYXRpb25dPVwidXNlVHJhbnNsYXRpb25cIiBbY29sYXBzZWRdPVwiY29sYXBzZWRcIj48L2RyYXdlci1ncm91cD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBbIEVuZCBdIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJzaHJpbmstMCB3LWZ1bGxcIj5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PWRyYXdlcl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24sIElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24sIElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL2lucHV0LWRlY2ltYWwvaW5wdXQtZGVjaW1hbC5jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IElucHV0Q3BmQ25wakNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9pbnB1dC1jcGYtY25wai9pbnB1dC1jcGYtY25wai5jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbiB9IGZyb20gXCIuL2lucHV0LXNlbGVjdC9pbnB1dC5zZWxlY3QuY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBJbnB1dFN0cmluZ0NvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9pbnB1dC1zdHJpbmcvaW5wdXQtc3RyaW5nLmNvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgSW5wdXRCb29sQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL2lucHV0LWJvb2wvaW5wdXQtYm9vbC5jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IElucHV0RGF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9pbnB1dC1kYXRlL2lucHV0LWRhdGUuY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBJbnB1dEZpbGVDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vaW5wdXQtZmlsZS9pbnB1dC1maWxlLmNvbmZpZ3VyYXRpb25cIjtcclxuXHJcbmV4cG9ydCB0eXBlIElucHV0Q29uZmlndXJhdGlvbiA9IFxyXG4gIElucHV0RmlsZUNvbmZpZ3VyYXRpb24gICAgIHxcclxuICBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24gICB8XHJcbiAgSW5wdXRCb29sQ29uZmlndXJhdGlvbiAgICAgfFxyXG4gIElucHV0RGF0ZUNvbmZpZ3VyYXRpb24gICAgIHxcclxuICBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uICB8XHJcbiAgSW5wdXROdW1iZXJDb25maWd1cmF0aW9uICAgfFxyXG4gIElucHV0Q3VycmVuY3lDb25maWd1cmF0aW9uIHxcclxuICBJbnB1dENwZkNucGpDb25maWd1cmF0aW9uICB8XHJcbiAgSW5wdXRTdHJpbmdDb25maWd1cmF0aW9uICAgfCBhbnk7XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24sIElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24sIElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL2lucHV0LWRlY2ltYWwvaW5wdXQtZGVjaW1hbC5jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IElucHV0Q3BmQ25wakNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9pbnB1dC1jcGYtY25wai9pbnB1dC1jcGYtY25wai5jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbiB9IGZyb20gXCIuL2lucHV0LXNlbGVjdC9pbnB1dC5zZWxlY3QuY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBJbnB1dFN0cmluZ0NvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9pbnB1dC1zdHJpbmcvaW5wdXQtc3RyaW5nLmNvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgSW5wdXRCb29sQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL2lucHV0LWJvb2wvaW5wdXQtYm9vbC5jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IElucHV0RGF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9pbnB1dC1kYXRlL2lucHV0LWRhdGUuY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBJbnB1dEZpbGVDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vaW5wdXQtZmlsZS9pbnB1dC1maWxlLmNvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgSW5wdXRUZWxlZm9uZUNlbHVsYXJDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vaW5wdXQtdGVsZWZvbmUvaW5wdXQtdGVsZWZvbmUuY29uZmlndXJhdGlvblwiO1xyXG5cclxuZXhwb3J0IHR5cGUgSW5wdXRDb25maWd1cmF0aW9uID0gXHJcbiAgSW5wdXRCb29sQ29uZmlndXJhdGlvbiAgICAgfFxyXG4gIElucHV0Q3BmQ25wakNvbmZpZ3VyYXRpb24gIHxcclxuICBJbnB1dERhdGVDb25maWd1cmF0aW9uICAgICB8XHJcbiAgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbiAgfFxyXG4gIElucHV0Q3VycmVuY3lDb25maWd1cmF0aW9uIHxcclxuICBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24gICB8XHJcbiAgSW5wdXRGaWxlQ29uZmlndXJhdGlvbiAgICAgfFxyXG4gIElucHV0U2VsZWN0Q29uZmlndXJhdGlvbiAgIHxcclxuICBJbnB1dFN0cmluZ0NvbmZpZ3VyYXRpb24gICB8IFxyXG4gIElucHV0VGVsZWZvbmVDZWx1bGFyQ29uZmlndXJhdGlvbiB8IFxyXG4gIGFueTtcclxuIl19
@@ -90,4 +90,4 @@ export const lstImage = [
90
90
  'jfif',
91
91
  'avif',
92
92
  ];
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXVCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7O0FBU3ZFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxXQUEwQjtJQUt2RCxLQUFLLENBQUMsS0FBaUI7UUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQ1UsWUFBMEIsRUFDM0IsY0FBOEI7UUFDbkMsS0FBSyxFQUFFLENBQUM7UUFGRixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFWdkMsa0JBQWEsR0FBd0MsS0FBSyxDQUF5QixJQUFJLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQWFqSCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixhQUFR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QUFRLEdBQWE7SUFDaEMsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07Q0FDUCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbnB1dCwgSW5wdXRTaWduYWwsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgSW5wdXRGaWxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtZmlsZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IElvbkltZyB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaW5wdXQtZmlsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWZpbGUuY29tcG9uZW50LnNjc3MnLCAnLi4vaW5wdXRzLnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFsuLi5JbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcnMoSW5wdXRGaWxlQ29tcG9uZW50KV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dEZpbGVDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21JbnB1dDxGaWxlIHwgc3RyaW5nPiB7XHJcblxyXG4gIGNvbmZpZ3VyYXRpb246IElucHV0U2lnbmFsPElucHV0RmlsZUNvbmZpZ3VyYXRpb24+ID0gaW5wdXQ8SW5wdXRGaWxlQ29uZmlndXJhdGlvbj4obmV3IElucHV0RmlsZUNvbmZpZ3VyYXRpb24oKSk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Q29udGFpbmVyJykgaW5wdXRDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIG92ZXJyaWRlIGZvY3VzKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLlVwbG9hZCgpO1xyXG4gICAgdGhpcy5pbnB1dENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlXHJcbiAgKSB7IHN1cGVyKCk7IH1cclxuXHJcbiAgdmFsdWVTdHJpbmc6IHN0cmluZyA9IFwiXCI7XHJcbiAgaXNTdHJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0ltYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb2JqZWN0VVJMOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBGaWxlIHwgc3RyaW5nKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICAgIHRoaXMuU2V0VmFsdWVTdHJpbmcoKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gIH1cclxuICBvdmVycmlkZSBTZXRWYWx1ZSh2YWx1ZTogRmlsZSB8IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQodmFsdWUpO1xyXG4gICAgdGhpcy5TZXRWYWx1ZVN0cmluZygpO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKCkpO1xyXG4gIH1cclxuICBcclxuICBTZXRWYWx1ZVN0cmluZygpOiB2b2lkIHtcclxuICAgIHRoaXMub2JqZWN0VVJMID0gbnVsbDtcclxuICAgIHRoaXMuaXNTdHJpbmcgPSB0eXBlb2YgdGhpcy52YWx1ZSgpID09IFwic3RyaW5nXCI7XHJcbiAgICBpZighdGhpcy52YWx1ZSgpKSB7IHRoaXMudmFsdWVTdHJpbmcgPSBcIi4uLlwiOyByZXR1cm47IH1cclxuICAgIHRoaXMudmFsdWVTdHJpbmcgPSB0eXBlb2YgdGhpcy52YWx1ZSgpID09IFwic3RyaW5nXCIgPyAgU3RvcmFnZVNlcnZpY2UuU2FuaXRpemVGaWxlTmFtZSh0aGlzLnZhbHVlKCkudG9TdHJpbmcoKSkgOiAodGhpcy52YWx1ZSgpIGFzIEZpbGUpLm5hbWU7XHJcbiAgICBcclxuICAgIHRoaXMuaXNJbWFnZSA9IGxzdEltYWdlLmluY2x1ZGVzKHRoaXMudmFsdWVTdHJpbmcuc3BsaXQoJy4nKS5hdCgtMSkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICBpZih0aGlzLmlzSW1hZ2UgJiYgIXRoaXMuaXNTdHJpbmcpe1xyXG4gICAgICB0aGlzLm9iamVjdFVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy52YWx1ZSgpIGFzIEZpbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgVXBsb2FkKCk6IFByb21pc2U8dm9pZD57XHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMudXRpbHNTZXJ2aWNlLlNlbGVjdEZpbGUodGhpcy5jb25maWd1cmF0aW9uKCkpO1xyXG4gICAgICBpZihyZXMpeyB0aGlzLlNldFZhbHVlKHJlcyk7IH1cclxuICAgIH1jYXRjaHt9XHJcbiAgfVxyXG5cclxuICBDbGVhcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLlNldFZhbHVlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgRG93bmxvYWQoKTogdm9pZHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuU3RhcnREb3dubG9hZCh0aGlzLnZhbHVlKCkgYXMgc3RyaW5nKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGNvbnN0IGxzdEltYWdlOiBzdHJpbmdbXSA9IFtcclxuICAnanBlJyxcclxuICAnanBnJyxcclxuICAnanBlZycsXHJcbiAgJ2dpZicsXHJcbiAgJ3BuZycsXHJcbiAgJ2JtcCcsXHJcbiAgJ2ljbycsXHJcbiAgJ3N2ZycsXHJcbiAgJ3N2Z3onLFxyXG4gICd0aWYnLFxyXG4gICd0aWZmJyxcclxuICAnd2VicCcsXHJcbiAgJ2pmaWYnLFxyXG4gICdhdmlmJyxcclxuXSAiLCI8ZGl2IFxyXG4gICNpbnB1dENvbnRhaW5lclxyXG4gIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCIgXHJcbiAgKGNsaWNrKT1cImZvY3VzKCRldmVudClcIlxyXG4gIFtjbGFzcy5yZXF1aXJlZF09XCJyZXF1aXJlZCgpXCIgXHJcbiAgW2NsYXNzLnN1Ym1pdHRlZF09XCJzdWJtaXR0ZWQoKVwiIFxyXG4gIFtjbGFzcy5pbnZhbGlkXT1cImludmFsaWRcIiBcclxuICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCBsb2FkaW5nKClcIlxyXG4gIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmcoKVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtbGFiZWxcIj4gXHJcbiAgICA8c3BhbiBjbGFzcz1cInRydW5jYXRlXCI+XHJcbiAgICAgIHt7bGFiZWwoKX19IFxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJmaWxlLWxhYmVsLWNvbnRhaW5lciB0ZXh0LWRhcmtcIiBbdGl0bGVdPVwidmFsdWVTdHJpbmdcIiAoY2xpY2spPVwiVXBsb2FkKClcIj5cclxuICAgIDxpb24taWNvbiBjbGFzcz1cInNocmluay0wXCIgY29sb3I9XCJkYXJrXCIgbmFtZT1cImRvY3VtZW50XCI+PC9pb24taWNvbj4gXHJcbiAgICA8c3BhbiBjbGFzcz1cInNocmluayB0cnVuY2F0ZVwiPlxyXG4gICAgICB7e3ZhbHVlU3RyaW5nfX1cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8aW9uLWJ1dHRvbiBbY2xhc3MuYXZhaWxhYmxlXT1cInZhbHVlKClcIiBjb2xvcj1cIm1lZGl1bVwiIGNsYXNzPVwiZWxsaXBzaXMtYnV0dG9uIG1sLWF1dG8gc2hyaW5rLTBcIiBmaWxsPVwiY2xlYXJcIiBzdHlsZT1cIi0tYm9yZGVyLXJhZGl1czogLjVyZW1cIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwicG9wb3Zlci5wcmVzZW50KCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICA8aW9uLWljb24gbmFtZT1cImVsbGlwc2lzLXZlcnRpY2FsXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8aW9uLXBvcG92ZXIgI3BvcG92ZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICA8aW9uLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgQGlmKHZhbHVlKCkpe1xyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIGNvbG9yPVwiZGFuZ2VyXCJzaXplPVwic21hbGxcIiAgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IDByZW1cIiAoY2xpY2spPVwiQ2xlYXIoJGV2ZW50KTsgcG9wb3Zlci5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhcmtcIiBuYW1lPVwidHJhc2hcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgIExpbXBhclxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAaWYoaXNTdHJpbmcpe1xyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIGNvbG9yPVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtYWxsXCIgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IDByZW1cIiAoY2xpY2spPVwiRG93bmxvYWQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIGNvbG9yPVwiZGFya1wiIG5hbWU9XCJkb3dubG9hZFwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICBEb3dubG9hZFxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICBAaWYoc3RvcmFnZVNlcnZpY2UuR2V0UHJvZ3Jlc3ModGhpcy52YWx1ZSgpLnRvU3RyaW5nKCkpKXtcclxuICAgICAgICAgICAgICAgIDxpb24tcHJvZ3Jlc3MtYmFyIFt2YWx1ZV09XCJzdG9yYWdlU2VydmljZS5HZXRQcm9ncmVzcyh0aGlzLnZhbHVlKCkudG9TdHJpbmcoKSlcIj48L2lvbi1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBpZihpc0ltYWdlKXtcclxuICAgICAgICAgICAgICAgIDxpbWFnZSBmaWxsPVwiY2xlYXJcIiBbc3JjXT1cInZhbHVlKCkudG9TdHJpbmcoKVwiPjwvaW1hZ2U+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBlbHNlIGlmKGlzSW1hZ2Upe1xyXG4gICAgICAgICAgICAgIDxpb24taW1nIFtzcmNdPVwib2JqZWN0VVJMXCIgY2xhc3M9XCJ3LWZ1bGwgaC0zMlwiPjwvaW9uLWltZz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tY29udGVudD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvaW9uLXBvcG92ZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmcoKVwiPlxyXG4gICAgPGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXVCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7O0FBUXZFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxXQUEwQjtJQUt2RCxLQUFLLENBQUMsS0FBaUI7UUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQ1UsWUFBMEIsRUFDM0IsY0FBOEI7UUFDbkMsS0FBSyxFQUFFLENBQUM7UUFGRixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFWdkMsa0JBQWEsR0FBd0MsS0FBSyxDQUF5QixJQUFJLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQWFqSCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixhQUFR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QUFRLEdBQWE7SUFDaEMsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07Q0FDUCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbnB1dCwgSW5wdXRTaWduYWwsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgSW5wdXRGaWxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtZmlsZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL3N0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LWZpbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbLi4uSW5wdXRQcm92aWRlckZhY3RvcnkuR2V0UHJvdmlkZXJzKElucHV0RmlsZUNvbXBvbmVudCldLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRGaWxlQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8RmlsZSB8IHN0cmluZz4ge1xyXG5cclxuICBjb25maWd1cmF0aW9uOiBJbnB1dFNpZ25hbDxJbnB1dEZpbGVDb25maWd1cmF0aW9uPiA9IGlucHV0PElucHV0RmlsZUNvbmZpZ3VyYXRpb24+KG5ldyBJbnB1dEZpbGVDb25maWd1cmF0aW9uKCkpO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRhaW5lcicpIGlucHV0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBmb2N1cyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5VcGxvYWQoKTtcclxuICAgIHRoaXMuaW5wdXRDb250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlLFxyXG4gICAgcHVibGljIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVxyXG4gICkgeyBzdXBlcigpOyB9XHJcblxyXG4gIHZhbHVlU3RyaW5nOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGlzU3RyaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9iamVjdFVSTDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogRmlsZSB8IHN0cmluZyk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudmFsdWUuc2V0KG9iaik7XHJcbiAgICB0aGlzLlNldFZhbHVlU3RyaW5nKCk7XHJcbiAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICB9XHJcbiAgb3ZlcnJpZGUgU2V0VmFsdWUodmFsdWU6IEZpbGUgfCBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcclxuICAgIHRoaXMuU2V0VmFsdWVTdHJpbmcoKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSgpKTtcclxuICB9XHJcbiAgXHJcbiAgU2V0VmFsdWVTdHJpbmcoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9iamVjdFVSTCA9IG51bGw7XHJcbiAgICB0aGlzLmlzU3RyaW5nID0gdHlwZW9mIHRoaXMudmFsdWUoKSA9PSBcInN0cmluZ1wiO1xyXG4gICAgaWYoIXRoaXMudmFsdWUoKSkgeyB0aGlzLnZhbHVlU3RyaW5nID0gXCIuLi5cIjsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLnZhbHVlU3RyaW5nID0gdHlwZW9mIHRoaXMudmFsdWUoKSA9PSBcInN0cmluZ1wiID8gIFN0b3JhZ2VTZXJ2aWNlLlNhbml0aXplRmlsZU5hbWUodGhpcy52YWx1ZSgpLnRvU3RyaW5nKCkpIDogKHRoaXMudmFsdWUoKSBhcyBGaWxlKS5uYW1lO1xyXG4gICAgXHJcbiAgICB0aGlzLmlzSW1hZ2UgPSBsc3RJbWFnZS5pbmNsdWRlcyh0aGlzLnZhbHVlU3RyaW5nLnNwbGl0KCcuJykuYXQoLTEpLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgaWYodGhpcy5pc0ltYWdlICYmICF0aGlzLmlzU3RyaW5nKXtcclxuICAgICAgdGhpcy5vYmplY3RVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMudmFsdWUoKSBhcyBGaWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIFVwbG9hZCgpOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgdHJ5e1xyXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnV0aWxzU2VydmljZS5TZWxlY3RGaWxlKHRoaXMuY29uZmlndXJhdGlvbigpKTtcclxuICAgICAgaWYocmVzKXsgdGhpcy5TZXRWYWx1ZShyZXMpOyB9XHJcbiAgICB9Y2F0Y2h7fVxyXG4gIH1cclxuXHJcbiAgQ2xlYXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5TZXRWYWx1ZShudWxsKTtcclxuICB9XHJcblxyXG4gIERvd25sb2FkKCk6IHZvaWR7XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLlN0YXJ0RG93bmxvYWQodGhpcy52YWx1ZSgpIGFzIHN0cmluZyk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBjb25zdCBsc3RJbWFnZTogc3RyaW5nW10gPSBbXHJcbiAgJ2pwZScsXHJcbiAgJ2pwZycsXHJcbiAgJ2pwZWcnLFxyXG4gICdnaWYnLFxyXG4gICdwbmcnLFxyXG4gICdibXAnLFxyXG4gICdpY28nLFxyXG4gICdzdmcnLFxyXG4gICdzdmd6JyxcclxuICAndGlmJyxcclxuICAndGlmZicsXHJcbiAgJ3dlYnAnLFxyXG4gICdqZmlmJyxcclxuICAnYXZpZicsXHJcbl0gIiwiPGRpdiBcclxuICAjaW5wdXRDb250YWluZXJcclxuICBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiIFxyXG4gIChjbGljayk9XCJmb2N1cygkZXZlbnQpXCJcclxuICBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiIFxyXG4gIFtjbGFzcy5zdWJtaXR0ZWRdPVwic3VibWl0dGVkKClcIiBcclxuICBbY2xhc3MuaW52YWxpZF09XCJpbnZhbGlkXCIgXHJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkKCkgfHwgbG9hZGluZygpXCJcclxuICBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LWxhYmVsXCI+IFxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPlxyXG4gICAgICB7e2xhYmVsKCl9fSBcclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiZmlsZS1sYWJlbC1jb250YWluZXIgdGV4dC1kYXJrXCIgW3RpdGxlXT1cInZhbHVlU3RyaW5nXCIgKGNsaWNrKT1cIlVwbG9hZCgpXCI+XHJcbiAgICA8aW9uLWljb24gY2xhc3M9XCJzaHJpbmstMFwiIGNvbG9yPVwiZGFya1wiIG5hbWU9XCJkb2N1bWVudFwiPjwvaW9uLWljb24+IFxyXG4gICAgPHNwYW4gY2xhc3M9XCJzaHJpbmsgdHJ1bmNhdGVcIj5cclxuICAgICAge3t2YWx1ZVN0cmluZ319XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPGlvbi1idXR0b24gW2NsYXNzLmF2YWlsYWJsZV09XCJ2YWx1ZSgpXCIgY29sb3I9XCJtZWRpdW1cIiBjbGFzcz1cImVsbGlwc2lzLWJ1dHRvbiBtbC1hdXRvIHNocmluay0wXCIgZmlsbD1cImNsZWFyXCIgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IC41cmVtXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cInBvcG92ZXIucHJlc2VudCgkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgPGlvbi1pY29uIG5hbWU9XCJlbGxpcHNpcy12ZXJ0aWNhbFwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxyXG4gICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPGlvbi1wb3BvdmVyICNwb3BvdmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgPGlvbi1jb250ZW50PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgIEBpZih2YWx1ZSgpKXtcclxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjb2xvcj1cImRhbmdlclwic2l6ZT1cInNtYWxsXCIgIHN0eWxlPVwiLS1ib3JkZXItcmFkaXVzOiAwcmVtXCIgKGNsaWNrKT1cIkNsZWFyKCRldmVudCk7IHBvcG92ZXIuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gY29sb3I9XCJkYXJrXCIgbmFtZT1cInRyYXNoXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICBMaW1wYXJcclxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGlmKGlzU3RyaW5nKXtcclxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjb2xvcj1cInNlY29uZGFyeVwiIHNpemU9XCJzbWFsbFwiIHN0eWxlPVwiLS1ib3JkZXItcmFkaXVzOiAwcmVtXCIgKGNsaWNrKT1cIkRvd25sb2FkKClcIj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhcmtcIiBuYW1lPVwiZG93bmxvYWRcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgRG93bmxvYWRcclxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgQGlmKHN0b3JhZ2VTZXJ2aWNlLkdldFByb2dyZXNzKHRoaXMudmFsdWUoKS50b1N0cmluZygpKSl7XHJcbiAgICAgICAgICAgICAgICA8aW9uLXByb2dyZXNzLWJhciBbdmFsdWVdPVwic3RvcmFnZVNlcnZpY2UuR2V0UHJvZ3Jlc3ModGhpcy52YWx1ZSgpLnRvU3RyaW5nKCkpXCI+PC9pb24tcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBAaWYoaXNJbWFnZSl7XHJcbiAgICAgICAgICAgICAgICA8aW1hZ2UgZmlsbD1cImNsZWFyXCIgW3NyY109XCJ2YWx1ZSgpLnRvU3RyaW5nKClcIj48L2ltYWdlPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSBpZihpc0ltYWdlKXtcclxuICAgICAgICAgICAgICA8aW9uLWltZyBbc3JjXT1cIm9iamVjdFVSTFwiIGNsYXNzPVwidy1mdWxsIGgtMzJcIj48L2lvbi1pbWc+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaW9uLWNvbnRlbnQ+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2lvbi1wb3BvdmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIiBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIj5cclxuICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=