@sapphire-ion/framework 1.0.33 → 1.0.35

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 (21) hide show
  1. package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +1 -1
  2. package/esm2022/lib/components/default/default-view/default-view.component.mjs +9 -3
  3. package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +8 -5
  4. package/esm2022/lib/components/drawer/drawer.component.mjs +2 -2
  5. package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +1 -1
  6. package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +3 -3
  7. package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +22 -6
  8. package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +16 -1
  9. package/esm2022/lib/components/main-content/main-content.component.mjs +1 -1
  10. package/esm2022/lib/components/popover/sion-popover/sion-popover.component.mjs +118 -108
  11. package/esm2022/lib/components/popover/sion-popover.module.mjs +3 -6
  12. package/fesm2022/sapphire-ion-framework.mjs +177 -130
  13. package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
  14. package/lib/components/default/default-view/default-view.component.d.ts +6 -2
  15. package/lib/components/default/default-view/header-view/header-view.component.d.ts +6 -3
  16. package/lib/components/inputs/input-select/input-select.component.d.ts +4 -1
  17. package/lib/components/inputs/input-select/input.select.configuration.d.ts +19 -0
  18. package/lib/components/popover/sion-popover/sion-popover.component.d.ts +21 -13
  19. package/lib/components/stepper/step/step.component.d.ts +1 -1
  20. package/package.json +1 -1
  21. package/themes/components/popover/sion-popover/sion-popover.component.scss +14 -32
@@ -169,7 +169,7 @@ export class ThFilterComponent {
169
169
  return;
170
170
  }
171
171
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
172
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ThFilterComponent, selector: "th-filter", inputs: { field: "field" }, outputs: { changeEmitter: "change" }, ngImport: i0, template: "<div #anchor class=\"h-5 aspect-square flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<sion-popover fill=\"solid\" #popover [anchor]=\"anchor\" triggerAction=\"click\">\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </div>\r\n <!-- <ion-card class=\"m-0 !border-0 bg-primary/30 w-72\">\r\n <ion-card-header class=\"bg-transparent\">\r\n <ion-card-title class=\"text-center text-sm\">\r\n Filtro - {{field.header}}\r\n </ion-card-title>\r\n </ion-card-header>\r\n <ion-card-content [ngClass]=\"{'!p-0': ['Select', 'Bool', 'String', 'TextArea'].includes(field.type)}\" class=\"!p-2 bg-light rounded-t-2xl\">\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n</sion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"], dependencies: [{ kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i3.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i4.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i5.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss", "isVisibleChange"] }] }); }
172
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ThFilterComponent, selector: "th-filter", inputs: { field: "field" }, outputs: { changeEmitter: "change" }, ngImport: i0, template: "<div #anchor class=\"h-5 aspect-square flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<sion-popover fill=\"solid\" #popover [anchor]=\"anchor\" triggerAction=\"click\">\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </div>\r\n <!-- <ion-card class=\"m-0 !border-0 bg-primary/30 w-72\">\r\n <ion-card-header class=\"bg-transparent\">\r\n <ion-card-title class=\"text-center text-sm\">\r\n Filtro - {{field.header}}\r\n </ion-card-title>\r\n </ion-card-header>\r\n <ion-card-content [ngClass]=\"{'!p-0': ['Select', 'Bool', 'String', 'TextArea'].includes(field.type)}\" class=\"!p-2 bg-light rounded-t-2xl\">\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n</sion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"], dependencies: [{ kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i3.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i4.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i5.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss"] }] }); }
173
173
  }
174
174
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThFilterComponent, decorators: [{
175
175
  type: Component,
@@ -40,18 +40,24 @@ export class DefaultViewComponent extends View {
40
40
  /** Remove os breadcrumbs da listagem */
41
41
  this.noBreadcrumbs = false;
42
42
  this.InputType = InputType;
43
+ /**
44
+ * Rota para voltar, caso não seja definida, o componente irá tentar usar rota do ionic
45
+ */
46
+ this.backRouterLink = undefined;
43
47
  }
44
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultViewComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ElementRef }, { token: i2.ActivatedRoute }, { token: i3.GenericService }, { token: i4.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DefaultViewComponent, selector: "default-view", inputs: { noBack: "noBack", noNew: "noNew", noBreadcrumbs: "noBreadcrumbs" }, usesInheritance: true, ngImport: i0, template: "<ion-content class=\"bg-transparent\"> \r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\" tabindex=\"-1\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb class=\"cursor-pointer\" (click)=\"NavigateToList()\">\r\n {{service.title}}\r\n </ion-breadcrumb>\r\n <ion-breadcrumb> \r\n {{id == 0 ? 'Novo Registro' : 'Editar Registro' }} \r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n \r\n <ion-card>\r\n <ion-card-header class=\"!block\">\r\n <header-view *ngIf=\"service\" [novo]=\"id == 0\" [useDefaultRouting]=\"nested\" [loading]=\"loading\" [progress]=\"progress\" (save)=\"Save()\" [noBack]=\"noBack\" [noNew]=\"noNew\"></header-view>\r\n </ion-card-header>\r\n <ion-card-content class=\"p-0 h-full !overflow-y-auto overflow-x-hidden\">\r\n <div class=\"grid grid-cols-12 gap-2 w-full\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n \r\n @for (field of lstTableFields; track $index) {\r\n @if (field.index != 'id') {\r\n @if (!field.hiddenView) {\r\n @switch (field.type) {\r\n @case (InputType.Bool) {\r\n <input-bool [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\" ></input-bool>\r\n }\r\n @case (InputType.Cep){\r\n <input-cep [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-cep>\r\n }\r\n @case (InputType.Color){\r\n <input-color [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-color>\r\n }\r\n @case (InputType.CpfCnpj) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cpf) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cnpj) {\r\n <input-cnpj [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cnpj>\r\n }\r\n @case (InputType.Date) {\r\n <input-date [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date>\r\n }\r\n @case (InputType.DateTime) {\r\n <input-date-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date-time>\r\n }\r\n @case (InputType.Time) {\r\n <input-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-time>\r\n }\r\n @case (InputType.Decimal) {\r\n <input-decimal [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-decimal>\r\n }\r\n @case (InputType.Currency) {\r\n <input-currency [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-currency>\r\n }\r\n @case (InputType.Number) {\r\n <input-number [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-number>\r\n }\r\n @case (InputType.File) {\r\n <input-file [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-file>\r\n }\r\n @case (InputType.Icon) {\r\n <input-icon [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-icon>\r\n }\r\n @case (InputType.Select) {\r\n <input-select [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-select>\r\n }\r\n @case (InputType.String) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.TelefoneCelular) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.Telefone) {\r\n <input-telefone [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone>\r\n }\r\n @case (InputType.Celular) {\r\n <input-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-celular>\r\n }\r\n @case (InputType.TextArea) {\r\n <input-textarea [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-textarea>\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n <div class=\"col-span-full rounded-2xl p-3 flex items-center justify-center\" *ngIf=\"!service || service.lstTableFields.length == 0\" style=\"background: var(--ion-color-danger);\">\r\n <ion-text class=\"text-2xl text-light\">\r\n <ion-icon class=\"align-sub text-3xl\" name=\"alert-circle\"></ion-icon> [ Invalid Configuration ]\r\n </ion-text>\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: ["ion-card-header{padding:0}\n"], dependencies: [{ kind: "component", type: i4.IonBreadcrumb, selector: "ion-breadcrumb", inputs: ["active", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "separator", "target"] }, { kind: "component", type: i4.IonBreadcrumbs, selector: "ion-breadcrumbs", inputs: ["color", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "mode"] }, { kind: "component", type: i4.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i4.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i4.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.InputBoolComponent, selector: "input-bool", inputs: ["configuration"] }, { kind: "component", type: i7.InputCepComponent, selector: "input-cep" }, { kind: "component", type: i8.InputColorComponent, selector: "input-color" }, { kind: "component", type: i9.InputCpfCnpjComponent, selector: "input-cpf-cnpj, input-cpf, input-cnpj", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i10.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i11.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i12.InputFileComponent, selector: "input-file", inputs: ["configuration"] }, { kind: "component", type: i13.InputIconComponent, selector: "input-icon" }, { kind: "component", type: i14.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i15.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "component", type: i16.InputTelefoneComponent, selector: "input-telefone, input-celular, input-telefone-celular", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i17.InputTextareaComponent, selector: "input-textarea", inputs: ["configuration"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i18.HeaderViewComponent, selector: "header-view", inputs: ["novo", "loading", "progress", "noBack", "noNew", "useDefaultRouting", "backRoute"], outputs: ["save"] }] }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DefaultViewComponent, selector: "default-view", inputs: { noBack: "noBack", noNew: "noNew", noBreadcrumbs: "noBreadcrumbs", backRouterLink: "backRouterLink" }, usesInheritance: true, ngImport: i0, template: "<ion-content class=\"bg-transparent\"> \r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\" tabindex=\"-1\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb class=\"cursor-pointer\" (click)=\"NavigateToList()\">\r\n {{service.title}}\r\n </ion-breadcrumb>\r\n <ion-breadcrumb> \r\n {{id == 0 ? 'Novo Registro' : 'Editar Registro' }} \r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n \r\n <ion-card>\r\n <ion-card-header class=\"!block\">\r\n @if (service) {\r\n <header-view \r\n *ngIf=\"service\" \r\n [novo]=\"id == 0\" \r\n [useDefaultRouting]=\"nested\" \r\n [loading]=\"loading\" \r\n [progress]=\"progress\" \r\n (save)=\"Save()\" \r\n [noBack]=\"noBack\" \r\n [noNew]=\"noNew\"\r\n [backRouterLink]=\"backRouterLink\"\r\n ></header-view>\r\n }\r\n </ion-card-header>\r\n <ion-card-content class=\"p-0 h-full !overflow-y-auto overflow-x-hidden\">\r\n <div class=\"grid grid-cols-12 gap-2 w-full\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n \r\n @for (field of lstTableFields; track $index) {\r\n @if (field.index != 'id') {\r\n @if (!field.hiddenView) {\r\n @switch (field.type) {\r\n @case (InputType.Bool) {\r\n <input-bool [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\" ></input-bool>\r\n }\r\n @case (InputType.Cep){\r\n <input-cep [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-cep>\r\n }\r\n @case (InputType.Color){\r\n <input-color [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-color>\r\n }\r\n @case (InputType.CpfCnpj) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cpf) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cnpj) {\r\n <input-cnpj [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cnpj>\r\n }\r\n @case (InputType.Date) {\r\n <input-date [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date>\r\n }\r\n @case (InputType.DateTime) {\r\n <input-date-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date-time>\r\n }\r\n @case (InputType.Time) {\r\n <input-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-time>\r\n }\r\n @case (InputType.Decimal) {\r\n <input-decimal [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-decimal>\r\n }\r\n @case (InputType.Currency) {\r\n <input-currency [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-currency>\r\n }\r\n @case (InputType.Number) {\r\n <input-number [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-number>\r\n }\r\n @case (InputType.File) {\r\n <input-file [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-file>\r\n }\r\n @case (InputType.Icon) {\r\n <input-icon [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-icon>\r\n }\r\n @case (InputType.Select) {\r\n <input-select [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-select>\r\n }\r\n @case (InputType.String) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.TelefoneCelular) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.Telefone) {\r\n <input-telefone [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone>\r\n }\r\n @case (InputType.Celular) {\r\n <input-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-celular>\r\n }\r\n @case (InputType.TextArea) {\r\n <input-textarea [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-textarea>\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n <div class=\"col-span-full rounded-2xl p-3 flex items-center justify-center\" *ngIf=\"!service || service.lstTableFields.length == 0\" style=\"background: var(--ion-color-danger);\">\r\n <ion-text class=\"text-2xl text-light\">\r\n <ion-icon class=\"align-sub text-3xl\" name=\"alert-circle\"></ion-icon> [ Invalid Configuration ]\r\n </ion-text>\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: ["ion-card-header{padding:0}\n"], dependencies: [{ kind: "component", type: i4.IonBreadcrumb, selector: "ion-breadcrumb", inputs: ["active", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "separator", "target"] }, { kind: "component", type: i4.IonBreadcrumbs, selector: "ion-breadcrumbs", inputs: ["color", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "mode"] }, { kind: "component", type: i4.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i4.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i4.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.InputBoolComponent, selector: "input-bool", inputs: ["configuration"] }, { kind: "component", type: i7.InputCepComponent, selector: "input-cep" }, { kind: "component", type: i8.InputColorComponent, selector: "input-color" }, { kind: "component", type: i9.InputCpfCnpjComponent, selector: "input-cpf-cnpj, input-cpf, input-cnpj", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i10.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i11.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i12.InputFileComponent, selector: "input-file", inputs: ["configuration"] }, { kind: "component", type: i13.InputIconComponent, selector: "input-icon" }, { kind: "component", type: i14.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i15.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "component", type: i16.InputTelefoneComponent, selector: "input-telefone, input-celular, input-telefone-celular", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i17.InputTextareaComponent, selector: "input-textarea", inputs: ["configuration"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i18.HeaderViewComponent, selector: "header-view", inputs: ["novo", "loading", "progress", "noBack", "noNew", "useDefaultRouting", "backRouterLink"], outputs: ["save"] }] }); }
46
50
  }
47
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultViewComponent, decorators: [{
48
52
  type: Component,
49
- args: [{ selector: 'default-view', template: "<ion-content class=\"bg-transparent\"> \r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\" tabindex=\"-1\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb class=\"cursor-pointer\" (click)=\"NavigateToList()\">\r\n {{service.title}}\r\n </ion-breadcrumb>\r\n <ion-breadcrumb> \r\n {{id == 0 ? 'Novo Registro' : 'Editar Registro' }} \r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n \r\n <ion-card>\r\n <ion-card-header class=\"!block\">\r\n <header-view *ngIf=\"service\" [novo]=\"id == 0\" [useDefaultRouting]=\"nested\" [loading]=\"loading\" [progress]=\"progress\" (save)=\"Save()\" [noBack]=\"noBack\" [noNew]=\"noNew\"></header-view>\r\n </ion-card-header>\r\n <ion-card-content class=\"p-0 h-full !overflow-y-auto overflow-x-hidden\">\r\n <div class=\"grid grid-cols-12 gap-2 w-full\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n \r\n @for (field of lstTableFields; track $index) {\r\n @if (field.index != 'id') {\r\n @if (!field.hiddenView) {\r\n @switch (field.type) {\r\n @case (InputType.Bool) {\r\n <input-bool [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\" ></input-bool>\r\n }\r\n @case (InputType.Cep){\r\n <input-cep [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-cep>\r\n }\r\n @case (InputType.Color){\r\n <input-color [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-color>\r\n }\r\n @case (InputType.CpfCnpj) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cpf) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cnpj) {\r\n <input-cnpj [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cnpj>\r\n }\r\n @case (InputType.Date) {\r\n <input-date [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date>\r\n }\r\n @case (InputType.DateTime) {\r\n <input-date-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date-time>\r\n }\r\n @case (InputType.Time) {\r\n <input-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-time>\r\n }\r\n @case (InputType.Decimal) {\r\n <input-decimal [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-decimal>\r\n }\r\n @case (InputType.Currency) {\r\n <input-currency [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-currency>\r\n }\r\n @case (InputType.Number) {\r\n <input-number [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-number>\r\n }\r\n @case (InputType.File) {\r\n <input-file [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-file>\r\n }\r\n @case (InputType.Icon) {\r\n <input-icon [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-icon>\r\n }\r\n @case (InputType.Select) {\r\n <input-select [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-select>\r\n }\r\n @case (InputType.String) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.TelefoneCelular) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.Telefone) {\r\n <input-telefone [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone>\r\n }\r\n @case (InputType.Celular) {\r\n <input-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-celular>\r\n }\r\n @case (InputType.TextArea) {\r\n <input-textarea [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-textarea>\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n <div class=\"col-span-full rounded-2xl p-3 flex items-center justify-center\" *ngIf=\"!service || service.lstTableFields.length == 0\" style=\"background: var(--ion-color-danger);\">\r\n <ion-text class=\"text-2xl text-light\">\r\n <ion-icon class=\"align-sub text-3xl\" name=\"alert-circle\"></ion-icon> [ Invalid Configuration ]\r\n </ion-text>\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: ["ion-card-header{padding:0}\n"] }]
53
+ args: [{ selector: 'default-view', template: "<ion-content class=\"bg-transparent\"> \r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\" tabindex=\"-1\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb class=\"cursor-pointer\" (click)=\"NavigateToList()\">\r\n {{service.title}}\r\n </ion-breadcrumb>\r\n <ion-breadcrumb> \r\n {{id == 0 ? 'Novo Registro' : 'Editar Registro' }} \r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n \r\n <ion-card>\r\n <ion-card-header class=\"!block\">\r\n @if (service) {\r\n <header-view \r\n *ngIf=\"service\" \r\n [novo]=\"id == 0\" \r\n [useDefaultRouting]=\"nested\" \r\n [loading]=\"loading\" \r\n [progress]=\"progress\" \r\n (save)=\"Save()\" \r\n [noBack]=\"noBack\" \r\n [noNew]=\"noNew\"\r\n [backRouterLink]=\"backRouterLink\"\r\n ></header-view>\r\n }\r\n </ion-card-header>\r\n <ion-card-content class=\"p-0 h-full !overflow-y-auto overflow-x-hidden\">\r\n <div class=\"grid grid-cols-12 gap-2 w-full\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n \r\n @for (field of lstTableFields; track $index) {\r\n @if (field.index != 'id') {\r\n @if (!field.hiddenView) {\r\n @switch (field.type) {\r\n @case (InputType.Bool) {\r\n <input-bool [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\" ></input-bool>\r\n }\r\n @case (InputType.Cep){\r\n <input-cep [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-cep>\r\n }\r\n @case (InputType.Color){\r\n <input-color [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-color>\r\n }\r\n @case (InputType.CpfCnpj) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cpf) {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (InputType.Cnpj) {\r\n <input-cnpj [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cnpj>\r\n }\r\n @case (InputType.Date) {\r\n <input-date [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date>\r\n }\r\n @case (InputType.DateTime) {\r\n <input-date-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date-time>\r\n }\r\n @case (InputType.Time) {\r\n <input-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-time>\r\n }\r\n @case (InputType.Decimal) {\r\n <input-decimal [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-decimal>\r\n }\r\n @case (InputType.Currency) {\r\n <input-currency [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-currency>\r\n }\r\n @case (InputType.Number) {\r\n <input-number [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-number>\r\n }\r\n @case (InputType.File) {\r\n <input-file [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-file>\r\n }\r\n @case (InputType.Icon) {\r\n <input-icon [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-icon>\r\n }\r\n @case (InputType.Select) {\r\n <input-select [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-select>\r\n }\r\n @case (InputType.String) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.TelefoneCelular) {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-string>\r\n }\r\n @case (InputType.Telefone) {\r\n <input-telefone [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-telefone>\r\n }\r\n @case (InputType.Celular) {\r\n <input-celular [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-celular>\r\n }\r\n @case (InputType.TextArea) {\r\n <input-textarea [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-textarea>\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n <div class=\"col-span-full rounded-2xl p-3 flex items-center justify-center\" *ngIf=\"!service || service.lstTableFields.length == 0\" style=\"background: var(--ion-color-danger);\">\r\n <ion-text class=\"text-2xl text-light\">\r\n <ion-icon class=\"align-sub text-3xl\" name=\"alert-circle\"></ion-icon> [ Invalid Configuration ]\r\n </ion-text>\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: ["ion-card-header{padding:0}\n"] }]
50
54
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i0.ElementRef }, { type: i2.ActivatedRoute }, { type: i3.GenericService }, { type: i4.NavController }], propDecorators: { noBack: [{
51
55
  type: Input
52
56
  }], noNew: [{
53
57
  type: Input
54
58
  }], noBreadcrumbs: [{
55
59
  type: Input
60
+ }], backRouterLink: [{
61
+ type: Input
56
62
  }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy9kZWZhdWx0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC12aWV3L2RlZmF1bHQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVwRCw0QkFBNEI7QUFNNUIsTUFBTSxPQUFPLG9CQUErRCxTQUFRLElBQU87SUFXekYsWUFDa0IsRUFBZSxFQUNmLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLGNBQThCLEVBQzlCLGFBQTRCO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBTE0sT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWQ5QywrQkFBK0I7UUFDdEIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUNqQyxzQ0FBc0M7UUFDN0IsVUFBSyxHQUFhLEtBQUssQ0FBQztRQUNqQyx3Q0FBd0M7UUFDL0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFeEMsY0FBUyxHQUFHLFNBQVMsQ0FBQztJQVFULENBQUM7K0dBakJILG9CQUFvQjttR0FBcEIsb0JBQW9CLHlKQ2xCakMseWdRQWtHYzs7NEZEaEZELG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjOytMQU9mLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5cclxuXHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlQXRpdm8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5hdGl2by5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgICAgICB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFZpZXcgfSBmcm9tICcuL3ZpZXcnO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9pbnB1dHMvaW5wdXQtdHlwZSc7XHJcblxyXG4vKiogQ29tcG9uZW50ZSBWaWV3IFBhZMOjbyAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RlZmF1bHQtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlZmF1bHQtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGVmYXVsdC12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0Vmlld0NvbXBvbmVudDxUIGV4dGVuZHMgSHR0cFNlcnZpY2UgfCBIdHRwU2VydmljZUF0aXZvPiBleHRlbmRzIFZpZXc8VD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvKiogUmVtb3ZlIG8gYm90w6NvIGRlIHZvbHRhciAqL1xyXG4gIEBJbnB1dCgpIG5vQmFjazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBSZW1vdmUgbyBib3TDo28gTk9WTyBkYSBsaXN0YWdlbSAqL1xyXG4gIEBJbnB1dCgpIG5vTmV3IDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBSZW1vdmUgb3MgYnJlYWRjcnVtYnMgZGEgbGlzdGFnZW0gKi9cclxuICBASW5wdXQoKSBub0JyZWFkY3J1bWJzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIElucHV0VHlwZSA9IElucHV0VHlwZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZSxcclxuICAgIHB1YmxpYyBvdmVycmlkZSBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxyXG4gICkgeyBzdXBlcigpOyB9XHJcbn0iLCI8aW9uLWNvbnRlbnQgY2xhc3M9XCJiZy10cmFuc3BhcmVudFwiPiBcclxuICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiIFtuZ0NsYXNzXT1cInsnIXAtMCB0cmFuc2x1Y2lkLXByaW1hcnktYmFja2dyb3VuZCc6IG5lc3RlZH1cIiB0YWJpbmRleD1cIi0xXCI+XHJcbiAgICBAaWYgKCFub0JyZWFkY3J1bWJzKSB7XHJcbiAgICAgIDxpb24tYnJlYWRjcnVtYnM+XHJcbiAgICAgICAgPGlvbi1icmVhZGNydW1iIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiTmF2aWdhdGVUb0xpc3QoKVwiPlxyXG4gICAgICAgICAge3tzZXJ2aWNlLnRpdGxlfX1cclxuICAgICAgICA8L2lvbi1icmVhZGNydW1iPlxyXG4gICAgICAgIDxpb24tYnJlYWRjcnVtYj4gXHJcbiAgICAgICAgICB7e2lkID09IDAgPyAnTm92byBSZWdpc3RybycgOiAnRWRpdGFyIFJlZ2lzdHJvJyB9fSBcclxuICAgICAgICA8L2lvbi1icmVhZGNydW1iPlxyXG4gICAgICA8L2lvbi1icmVhZGNydW1icz5cclxuICAgIH1cclxuICAgIFxyXG4gICAgPGlvbi1jYXJkPlxyXG4gICAgICA8aW9uLWNhcmQtaGVhZGVyIGNsYXNzPVwiIWJsb2NrXCI+XHJcbiAgICAgICAgPGhlYWRlci12aWV3ICpuZ0lmPVwic2VydmljZVwiIFtub3ZvXT1cImlkID09IDBcIiBbdXNlRGVmYXVsdFJvdXRpbmddPVwibmVzdGVkXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtwcm9ncmVzc109XCJwcm9ncmVzc1wiIChzYXZlKT1cIlNhdmUoKVwiIFtub0JhY2tdPVwibm9CYWNrXCIgW25vTmV3XT1cIm5vTmV3XCI+PC9oZWFkZXItdmlldz5cclxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwicC0wIGgtZnVsbCAhb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEyIGdhcC0yIHctZnVsbFwiICpuZ0lmPVwiZnJtXCIgW2Zvcm1Hcm91cF09XCJmcm1cIj5cclxuICBcclxuICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIGxzdFRhYmxlRmllbGRzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgQGlmIChmaWVsZC5pbmRleCAhPSAnaWQnKSB7XHJcbiAgICAgICAgICAgICAgQGlmICghZmllbGQuaGlkZGVuVmlldykge1xyXG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkJvb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtYm9vbCAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiID48L2lucHV0LWJvb2w+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5DZXApe1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1jZXAgICAgICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L2lucHV0LWNlcD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNvbG9yKXtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY29sb3IgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC9pbnB1dC1jb2xvcj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNwZkNucGopIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY3BmICAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY3BmPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuQ3BmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWNwZiAgICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWNwZj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNucGopIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY25waiAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY25waj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZGF0ZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRhdGVUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWRhdGUtdGltZSBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGUtdGltZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLlRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtdGltZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtdGltZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRlY2ltYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZGVjaW1hbCAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGVjaW1hbD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkN1cnJlbmN5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWN1cnJlbmN5ICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWN1cnJlbmN5PlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LW51bWJlciAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LW51bWJlcj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZmlsZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZmlsZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkljb24pIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtaWNvbiAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC9pbnB1dC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LXNlbGVjdCAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLlN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1zdHJpbmcgICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5UZWxlZm9uZUNlbHVsYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtc3RyaW5nICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc3RyaW5nPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuVGVsZWZvbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtdGVsZWZvbmUgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtdGVsZWZvbmU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5DZWx1bGFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWNlbHVsYXIgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWNlbHVsYXI+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5UZXh0QXJlYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC10ZXh0YXJlYSAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC10ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zcGFuLWZ1bGwgcm91bmRlZC0yeGwgcC0zIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCIgKm5nSWY9XCIhc2VydmljZSB8fCBzZXJ2aWNlLmxzdFRhYmxlRmllbGRzLmxlbmd0aCA9PSAwXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcIj5cclxuICAgICAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwidGV4dC0yeGwgdGV4dC1saWdodFwiPlxyXG4gICAgICAgICAgICAgIDxpb24taWNvbiBjbGFzcz1cImFsaWduLXN1YiB0ZXh0LTN4bFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPiBbIEludmFsaWQgQ29uZmlndXJhdGlvbiBdXHJcbiAgICAgICAgICAgIDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgPC9pb24tY2FyZD5cclxuICA8L2Rpdj5cclxuPC9pb24tY29udGVudD4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy9kZWZhdWx0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC12aWV3L2RlZmF1bHQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQVcsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVwRCw0QkFBNEI7QUFNNUIsTUFBTSxPQUFPLG9CQUErRCxTQUFRLElBQU87SUFrQnpGLFlBQ2tCLEVBQWUsRUFDZixVQUFzQixFQUN0QixjQUE4QixFQUM5QixjQUE4QixFQUM5QixhQUE0QjtRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQUxNLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFyQjlDLCtCQUErQjtRQUN0QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ2pDLHNDQUFzQztRQUM3QixVQUFLLEdBQWEsS0FBSyxDQUFDO1FBQ2pDLHdDQUF3QztRQUMvQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUV4QyxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBSXRCOztVQUVFO1FBQ08sbUJBQWMsR0FBeUMsU0FBUyxDQUFDO0lBUTdELENBQUM7K0dBeEJILG9CQUFvQjttR0FBcEIsb0JBQW9CLDJMQ2xCakMsb3ZRQThHYzs7NEZENUZELG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjOytMQU9mLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFTRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcblxyXG5cclxuaW1wb3J0IHsgSHR0cFNlcnZpY2VBdGl2byB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLmF0aXZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSAgICAgIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ2VuZXJpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlldyB9IGZyb20gJy4vdmlldyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uL2lucHV0cy9pbnB1dC10eXBlJztcclxuXHJcbi8qKiBDb21wb25lbnRlIFZpZXcgUGFkw6NvICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGVmYXVsdC12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGVmYXVsdC12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kZWZhdWx0LXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRWaWV3Q29tcG9uZW50PFQgZXh0ZW5kcyBIdHRwU2VydmljZSB8IEh0dHBTZXJ2aWNlQXRpdm8+IGV4dGVuZHMgVmlldzxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIC8qKiBSZW1vdmUgbyBib3TDo28gZGUgdm9sdGFyICovXHJcbiAgQElucHV0KCkgbm9CYWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIFJlbW92ZSBvIGJvdMOjbyBOT1ZPIGRhIGxpc3RhZ2VtICovXHJcbiAgQElucHV0KCkgbm9OZXcgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIFJlbW92ZSBvcyBicmVhZGNydW1icyBkYSBsaXN0YWdlbSAqL1xyXG4gIEBJbnB1dCgpIG5vQnJlYWRjcnVtYnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgSW5wdXRUeXBlID0gSW5wdXRUeXBlO1xyXG5cclxuXHJcbiAgXHJcbiAgLyoqICBcclxuICAgKiBSb3RhIHBhcmEgdm9sdGFyLCBjYXNvIG7Do28gc2VqYSBkZWZpbmlkYSwgbyBjb21wb25lbnRlIGlyw6EgdGVudGFyIHVzYXIgcm90YSBkbyBpb25pY1xyXG4gICovXHJcbiAgQElucHV0KCkgYmFja1JvdXRlckxpbms6IHN0cmluZyB8IGFueVtdIHwgVXJsVHJlZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZSxcclxuICAgIHB1YmxpYyBvdmVycmlkZSBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxyXG4gICkgeyBzdXBlcigpOyB9XHJcbn0iLCI8aW9uLWNvbnRlbnQgY2xhc3M9XCJiZy10cmFuc3BhcmVudFwiPiBcclxuICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiIFtuZ0NsYXNzXT1cInsnIXAtMCB0cmFuc2x1Y2lkLXByaW1hcnktYmFja2dyb3VuZCc6IG5lc3RlZH1cIiB0YWJpbmRleD1cIi0xXCI+XHJcbiAgICBAaWYgKCFub0JyZWFkY3J1bWJzKSB7XHJcbiAgICAgIDxpb24tYnJlYWRjcnVtYnM+XHJcbiAgICAgICAgPGlvbi1icmVhZGNydW1iIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiTmF2aWdhdGVUb0xpc3QoKVwiPlxyXG4gICAgICAgICAge3tzZXJ2aWNlLnRpdGxlfX1cclxuICAgICAgICA8L2lvbi1icmVhZGNydW1iPlxyXG4gICAgICAgIDxpb24tYnJlYWRjcnVtYj4gXHJcbiAgICAgICAgICB7e2lkID09IDAgPyAnTm92byBSZWdpc3RybycgOiAnRWRpdGFyIFJlZ2lzdHJvJyB9fSBcclxuICAgICAgICA8L2lvbi1icmVhZGNydW1iPlxyXG4gICAgICA8L2lvbi1icmVhZGNydW1icz5cclxuICAgIH1cclxuICAgIFxyXG4gICAgPGlvbi1jYXJkPlxyXG4gICAgICA8aW9uLWNhcmQtaGVhZGVyIGNsYXNzPVwiIWJsb2NrXCI+XHJcbiAgICAgICAgQGlmIChzZXJ2aWNlKSB7XHJcbiAgICAgICAgICA8aGVhZGVyLXZpZXcgXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2VydmljZVwiIFxyXG4gICAgICAgICAgICBbbm92b109XCJpZCA9PSAwXCIgXHJcbiAgICAgICAgICAgIFt1c2VEZWZhdWx0Um91dGluZ109XCJuZXN0ZWRcIiBcclxuICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiIFxyXG4gICAgICAgICAgICBbcHJvZ3Jlc3NdPVwicHJvZ3Jlc3NcIiBcclxuICAgICAgICAgICAgKHNhdmUpPVwiU2F2ZSgpXCIgXHJcbiAgICAgICAgICAgIFtub0JhY2tdPVwibm9CYWNrXCIgXHJcbiAgICAgICAgICAgIFtub05ld109XCJub05ld1wiXHJcbiAgICAgICAgICAgIFtiYWNrUm91dGVyTGlua109XCJiYWNrUm91dGVyTGlua1wiXHJcbiAgICAgICAgICA+PC9oZWFkZXItdmlldz5cclxuICAgICAgICB9XHJcbiAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxyXG4gICAgICA8aW9uLWNhcmQtY29udGVudCBjbGFzcz1cInAtMCBoLWZ1bGwgIW92ZXJmbG93LXktYXV0byBvdmVyZmxvdy14LWhpZGRlblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xMiBnYXAtMiB3LWZ1bGxcIiAqbmdJZj1cImZybVwiIFtmb3JtR3JvdXBdPVwiZnJtXCI+XHJcbiAgXHJcbiAgICAgICAgICBAZm9yIChmaWVsZCBvZiBsc3RUYWJsZUZpZWxkczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIEBpZiAoZmllbGQuaW5kZXggIT0gJ2lkJykge1xyXG4gICAgICAgICAgICAgIEBpZiAoIWZpZWxkLmhpZGRlblZpZXcpIHtcclxuICAgICAgICAgICAgICAgIEBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5Cb29sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWJvb2wgICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIiA+PC9pbnB1dC1ib29sPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuQ2VwKXtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY2VwICAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC9pbnB1dC1jZXA+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5Db2xvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWNvbG9yICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiPjwvaW5wdXQtY29sb3I+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5DcGZDbnBqKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWNwZiAgICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWNwZj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNwZikge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1jcGYgICAgICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1jcGY+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5DbnBqKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWNucGogICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWNucGo+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWRhdGUgICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5EYXRlVGltZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1kYXRlLXRpbWUgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kYXRlLXRpbWU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5UaW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LXRpbWUgICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LXRpbWU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5EZWNpbWFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWRlY2ltYWwgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRlY2ltYWw+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5DdXJyZW5jeSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1jdXJyZW5jeSAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1jdXJyZW5jeT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLk51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1udW1iZXIgICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5GaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWZpbGUgICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWZpbGU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5JY29uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWljb24gICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiPjwvaW5wdXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLlNlbGVjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1zZWxlY3QgICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5TdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtc3RyaW5nICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc3RyaW5nPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuVGVsZWZvbmVDZWx1bGFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LXN0cmluZyAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LXN0cmluZz5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLlRlbGVmb25lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LXRlbGVmb25lICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LXRlbGVmb25lPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuQ2VsdWxhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1jZWx1bGFyICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1jZWx1bGFyPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuVGV4dEFyZWEpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtdGV4dGFyZWEgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc3Bhbi1mdWxsIHJvdW5kZWQtMnhsIHAtMyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiICpuZ0lmPVwiIXNlcnZpY2UgfHwgc2VydmljZS5sc3RUYWJsZUZpZWxkcy5sZW5ndGggPT0gMFwiIHN0eWxlPVwiYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7XCI+XHJcbiAgICAgICAgICAgIDxpb24tdGV4dCBjbGFzcz1cInRleHQtMnhsIHRleHQtbGlnaHRcIj5cclxuICAgICAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJhbGlnbi1zdWIgdGV4dC0zeGxcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCI+PC9pb24taWNvbj4gWyBJbnZhbGlkIENvbmZpZ3VyYXRpb24gXVxyXG4gICAgICAgICAgICA8L2lvbi10ZXh0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cclxuICAgIDwvaW9uLWNhcmQ+XHJcbiAgPC9kaXY+XHJcbjwvaW9uLWNvbnRlbnQ+Il19
@@ -15,7 +15,10 @@ export class HeaderViewComponent {
15
15
  this.noBack = false;
16
16
  this.noNew = false;
17
17
  this.useDefaultRouting = false;
18
- this.backRoute = null;
18
+ /**
19
+ * Rota para voltar, caso não seja definida, o componente irá tentar usar rota do ionic
20
+ */
21
+ this.backRouterLink = undefined;
19
22
  }
20
23
  ngOnInit() { }
21
24
  get DefaultBackRoute() {
@@ -43,11 +46,11 @@ export class HeaderViewComponent {
43
46
  this.saveEmitter.emit();
44
47
  }
45
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderViewComponent, deps: [{ token: i1.NavController }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: HeaderViewComponent, selector: "header-view", inputs: { novo: "novo", loading: "loading", progress: "progress", noBack: "noBack", noNew: "noNew", useDefaultRouting: "useDefaultRouting", backRoute: "backRoute" }, outputs: { saveEmitter: "save" }, viewQueries: [{ propertyName: "IonBackButtonElement", first: true, predicate: IonBackButton, descendants: true }, { propertyName: "NewIonButtonElement", first: true, predicate: ["new"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-7 flex\">\r\n <div class=\"w-1/2 flex items-center justify-start gap-3\">\r\n @if(!noBack){\r\n @if(useDefaultRouting || backRoute){\r\n <ion-button class=\"m-0\" fill=\"clear\" size=\"small\" [routerLink]=\"backRoute ? backRoute : DefaultBackRoute\">\r\n <ion-icon class=\"text-[1.7rem]\" name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n <ion-text class=\"text-base\">Voltar</ion-text>\r\n </ion-button>\r\n }\r\n @else{\r\n <ion-back-button style=\"--min-height: 100%;\" [disabled]=\"loading\" text=\"Voltar\" [defaultHref]=\"DefaultBackRoute\"></ion-back-button>\r\n }\r\n\r\n <!-- <ion-card button [disabled]=\"loading\" class=\"h-full w-12 m-0 default-transition\" style=\"border-color: var(--ion-color-primary)\">\r\n <ion-card-content class=\"p-0 bg-transparent\">\r\n @if(!useDefaultRouting){\r\n <ion-back-button class=\"scale-75 size-full\" style=\"--min-height: 100%;\" text=\"\" [defaultHref]=\"BackRoute\" >\r\n </ion-back-button>\r\n }@else {\r\n <ion-button class=\"size-full\" size=\"small\" fill=\"clear\" [routerLink]=\"BackRoute\">\r\n <ion-icon name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n }\r\n @if(!noBack){\r\n <div class=\"h-full border-r-2 border-r-primary border-solid mask-y/50\"></div>\r\n }\r\n\r\n <div class=\"relative\">\r\n <ion-button class=\"-mx-2\" [disabled]=\"loading\" fill=\"clear\" size=\"small\" (click)=\"Save()\">\r\n <ion-icon class=\"text-base\" slot=\"start\" name=\"save\"></ion-icon>\r\n <ion-text class=\"text-base\">\r\n Salvar\r\n </ion-text>\r\n </ion-button>\r\n\r\n <div class=\"absolute w-[125%] h-[125%] -top-[12.5%] -left-[12.5%] flex flex-col items-center justify-center default-transition backdrop-blur-sm\" [ngClass]=\"{'opacity-0 -translate-y-8': !loading}\">\r\n <ion-text color=\"success\" class=\"text-sm mt-1\"><b>\r\n @if(progress){\r\n {{(progress * 100) | number: '1.1-1'}}%\r\n }@else {\r\n {{0 | number: '1.1-1'}}%\r\n }\r\n </b></ion-text>\r\n <ion-progress-bar [value]=\"progress\" color=\"success\" class=\"w-full default-transition\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n <div class=\"w-1/2 flex justify-end items-center gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!(noNew || novo)){\r\n <ion-button #new [routerLink]=\"['../']\" class=\"m-0\" fill=\"clear\" size=\"small\">\r\n <ion-icon class=\"text-base\" name=\"add\" slot=\"start\"></ion-icon> \r\n <ion-text class=\"text-base\">\r\n Novo\r\n </ion-text>\r\n </ion-button>\r\n }\r\n </div>\r\n</div>", styles: ["#back{margin:0;margin-right:.5rem;width:2rem;border-radius:1rem;padding:0}#back::part(native){padding-left:.5rem;padding-right:.5rem}\n"], dependencies: [{ kind: "component", type: i1.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: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }] }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: HeaderViewComponent, selector: "header-view", inputs: { novo: "novo", loading: "loading", progress: "progress", noBack: "noBack", noNew: "noNew", useDefaultRouting: "useDefaultRouting", backRouterLink: "backRouterLink" }, outputs: { saveEmitter: "save" }, viewQueries: [{ propertyName: "IonBackButtonElement", first: true, predicate: IonBackButton, descendants: true }, { propertyName: "NewIonButtonElement", first: true, predicate: ["new"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-7 flex\">\r\n <div class=\"w-1/2 flex items-center justify-start gap-3\">\r\n @if(!noBack){\r\n @if(useDefaultRouting || backRouterLink){\r\n <ion-button class=\"m-0\" fill=\"clear\" size=\"small\" [routerLink]=\"backRouterLink ? backRouterLink : DefaultBackRoute\">\r\n <ion-icon class=\"text-[1.7rem]\" name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n <ion-text class=\"text-base\">Voltar</ion-text>\r\n </ion-button>\r\n }\r\n @else{\r\n <ion-back-button style=\"--min-height: 100%;\" [disabled]=\"loading\" text=\"Voltar\" [defaultHref]=\"DefaultBackRoute\"></ion-back-button>\r\n }\r\n\r\n <!-- <ion-card button [disabled]=\"loading\" class=\"h-full w-12 m-0 default-transition\" style=\"border-color: var(--ion-color-primary)\">\r\n <ion-card-content class=\"p-0 bg-transparent\">\r\n @if(!useDefaultRouting){\r\n <ion-back-button class=\"scale-75 size-full\" style=\"--min-height: 100%;\" text=\"\" [defaultHref]=\"BackRoute\" >\r\n </ion-back-button>\r\n }@else {\r\n <ion-button class=\"size-full\" size=\"small\" fill=\"clear\" [routerLink]=\"BackRoute\">\r\n <ion-icon name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n }\r\n @if(!noBack){\r\n <div class=\"h-full border-r-2 border-r-primary border-solid mask-y/50\"></div>\r\n }\r\n\r\n <div class=\"relative\">\r\n <ion-button class=\"-mx-2\" [disabled]=\"loading\" fill=\"clear\" size=\"small\" (click)=\"Save()\">\r\n <ion-icon class=\"text-base\" slot=\"start\" name=\"save\"></ion-icon>\r\n <ion-text class=\"text-base\">\r\n Salvar\r\n </ion-text>\r\n </ion-button>\r\n\r\n <div class=\"absolute w-[125%] h-[125%] -top-[12.5%] -left-[12.5%] flex flex-col items-center justify-center default-transition backdrop-blur-sm\" [ngClass]=\"{'opacity-0 -translate-y-8': !loading}\">\r\n <ion-text color=\"success\" class=\"text-sm mt-1\"><b>\r\n @if(progress){\r\n {{(progress * 100) | number: '1.1-1'}}%\r\n }@else {\r\n {{0 | number: '1.1-1'}}%\r\n }\r\n </b></ion-text>\r\n <ion-progress-bar [value]=\"progress\" color=\"success\" class=\"w-full default-transition\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n <div class=\"w-1/2 flex justify-end items-center gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!(noNew || novo)){\r\n <ion-button #new [routerLink]=\"['../']\" class=\"m-0\" fill=\"clear\" size=\"small\">\r\n <ion-icon class=\"text-base\" name=\"add\" slot=\"start\"></ion-icon> \r\n <ion-text class=\"text-base\">\r\n Novo\r\n </ion-text>\r\n </ion-button>\r\n }\r\n </div>\r\n</div>", styles: ["#back{margin:0;margin-right:.5rem;width:2rem;border-radius:1rem;padding:0}#back::part(native){padding-left:.5rem;padding-right:.5rem}\n"], dependencies: [{ kind: "component", type: i1.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: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }] }); }
47
50
  }
48
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderViewComponent, decorators: [{
49
52
  type: Component,
50
- args: [{ selector: 'header-view', template: "<div class=\"w-full h-7 flex\">\r\n <div class=\"w-1/2 flex items-center justify-start gap-3\">\r\n @if(!noBack){\r\n @if(useDefaultRouting || backRoute){\r\n <ion-button class=\"m-0\" fill=\"clear\" size=\"small\" [routerLink]=\"backRoute ? backRoute : DefaultBackRoute\">\r\n <ion-icon class=\"text-[1.7rem]\" name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n <ion-text class=\"text-base\">Voltar</ion-text>\r\n </ion-button>\r\n }\r\n @else{\r\n <ion-back-button style=\"--min-height: 100%;\" [disabled]=\"loading\" text=\"Voltar\" [defaultHref]=\"DefaultBackRoute\"></ion-back-button>\r\n }\r\n\r\n <!-- <ion-card button [disabled]=\"loading\" class=\"h-full w-12 m-0 default-transition\" style=\"border-color: var(--ion-color-primary)\">\r\n <ion-card-content class=\"p-0 bg-transparent\">\r\n @if(!useDefaultRouting){\r\n <ion-back-button class=\"scale-75 size-full\" style=\"--min-height: 100%;\" text=\"\" [defaultHref]=\"BackRoute\" >\r\n </ion-back-button>\r\n }@else {\r\n <ion-button class=\"size-full\" size=\"small\" fill=\"clear\" [routerLink]=\"BackRoute\">\r\n <ion-icon name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n }\r\n @if(!noBack){\r\n <div class=\"h-full border-r-2 border-r-primary border-solid mask-y/50\"></div>\r\n }\r\n\r\n <div class=\"relative\">\r\n <ion-button class=\"-mx-2\" [disabled]=\"loading\" fill=\"clear\" size=\"small\" (click)=\"Save()\">\r\n <ion-icon class=\"text-base\" slot=\"start\" name=\"save\"></ion-icon>\r\n <ion-text class=\"text-base\">\r\n Salvar\r\n </ion-text>\r\n </ion-button>\r\n\r\n <div class=\"absolute w-[125%] h-[125%] -top-[12.5%] -left-[12.5%] flex flex-col items-center justify-center default-transition backdrop-blur-sm\" [ngClass]=\"{'opacity-0 -translate-y-8': !loading}\">\r\n <ion-text color=\"success\" class=\"text-sm mt-1\"><b>\r\n @if(progress){\r\n {{(progress * 100) | number: '1.1-1'}}%\r\n }@else {\r\n {{0 | number: '1.1-1'}}%\r\n }\r\n </b></ion-text>\r\n <ion-progress-bar [value]=\"progress\" color=\"success\" class=\"w-full default-transition\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n <div class=\"w-1/2 flex justify-end items-center gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!(noNew || novo)){\r\n <ion-button #new [routerLink]=\"['../']\" class=\"m-0\" fill=\"clear\" size=\"small\">\r\n <ion-icon class=\"text-base\" name=\"add\" slot=\"start\"></ion-icon> \r\n <ion-text class=\"text-base\">\r\n Novo\r\n </ion-text>\r\n </ion-button>\r\n }\r\n </div>\r\n</div>", styles: ["#back{margin:0;margin-right:.5rem;width:2rem;border-radius:1rem;padding:0}#back::part(native){padding-left:.5rem;padding-right:.5rem}\n"] }]
53
+ args: [{ selector: 'header-view', template: "<div class=\"w-full h-7 flex\">\r\n <div class=\"w-1/2 flex items-center justify-start gap-3\">\r\n @if(!noBack){\r\n @if(useDefaultRouting || backRouterLink){\r\n <ion-button class=\"m-0\" fill=\"clear\" size=\"small\" [routerLink]=\"backRouterLink ? backRouterLink : DefaultBackRoute\">\r\n <ion-icon class=\"text-[1.7rem]\" name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n <ion-text class=\"text-base\">Voltar</ion-text>\r\n </ion-button>\r\n }\r\n @else{\r\n <ion-back-button style=\"--min-height: 100%;\" [disabled]=\"loading\" text=\"Voltar\" [defaultHref]=\"DefaultBackRoute\"></ion-back-button>\r\n }\r\n\r\n <!-- <ion-card button [disabled]=\"loading\" class=\"h-full w-12 m-0 default-transition\" style=\"border-color: var(--ion-color-primary)\">\r\n <ion-card-content class=\"p-0 bg-transparent\">\r\n @if(!useDefaultRouting){\r\n <ion-back-button class=\"scale-75 size-full\" style=\"--min-height: 100%;\" text=\"\" [defaultHref]=\"BackRoute\" >\r\n </ion-back-button>\r\n }@else {\r\n <ion-button class=\"size-full\" size=\"small\" fill=\"clear\" [routerLink]=\"BackRoute\">\r\n <ion-icon name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n }\r\n @if(!noBack){\r\n <div class=\"h-full border-r-2 border-r-primary border-solid mask-y/50\"></div>\r\n }\r\n\r\n <div class=\"relative\">\r\n <ion-button class=\"-mx-2\" [disabled]=\"loading\" fill=\"clear\" size=\"small\" (click)=\"Save()\">\r\n <ion-icon class=\"text-base\" slot=\"start\" name=\"save\"></ion-icon>\r\n <ion-text class=\"text-base\">\r\n Salvar\r\n </ion-text>\r\n </ion-button>\r\n\r\n <div class=\"absolute w-[125%] h-[125%] -top-[12.5%] -left-[12.5%] flex flex-col items-center justify-center default-transition backdrop-blur-sm\" [ngClass]=\"{'opacity-0 -translate-y-8': !loading}\">\r\n <ion-text color=\"success\" class=\"text-sm mt-1\"><b>\r\n @if(progress){\r\n {{(progress * 100) | number: '1.1-1'}}%\r\n }@else {\r\n {{0 | number: '1.1-1'}}%\r\n }\r\n </b></ion-text>\r\n <ion-progress-bar [value]=\"progress\" color=\"success\" class=\"w-full default-transition\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n <div class=\"w-1/2 flex justify-end items-center gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!(noNew || novo)){\r\n <ion-button #new [routerLink]=\"['../']\" class=\"m-0\" fill=\"clear\" size=\"small\">\r\n <ion-icon class=\"text-base\" name=\"add\" slot=\"start\"></ion-icon> \r\n <ion-text class=\"text-base\">\r\n Novo\r\n </ion-text>\r\n </ion-button>\r\n }\r\n </div>\r\n</div>", styles: ["#back{margin:0;margin-right:.5rem;width:2rem;border-radius:1rem;padding:0}#back::part(native){padding-left:.5rem;padding-right:.5rem}\n"] }]
51
54
  }], ctorParameters: () => [{ type: i1.NavController }, { type: i2.ActivatedRoute }], propDecorators: { novo: [{
52
55
  type: Input
53
56
  }], loading: [{
@@ -63,7 +66,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
63
66
  type: Input
64
67
  }], useDefaultRouting: [{
65
68
  type: Input
66
- }], backRoute: [{
69
+ }], backRouterLink: [{
67
70
  type: Input
68
71
  }], IonBackButtonElement: [{
69
72
  type: ViewChild,
@@ -72,4 +75,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
72
75
  type: ViewChild,
73
76
  args: ['new']
74
77
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC12aWV3L2hlYWRlci12aWV3L2hlYWRlci12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy9oZWFkZXItdmlldy9oZWFkZXItdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBT2pELE1BQU0sT0FBTyxtQkFBbUI7SUFZOUIsWUFDVSxhQUE0QixFQUM1QixjQUE4QjtRQUQ5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFaL0IsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUV0QixhQUFRLEdBQWtCLElBQUksQ0FBQztRQUN4QixnQkFBVyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxFLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsVUFBSyxHQUFhLEtBQUssQ0FBQztRQUN4QixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMsY0FBUyxHQUFrQixJQUFJLENBQUM7SUFLckMsQ0FBQztJQUVMLFFBQVEsS0FBSSxDQUFDO0lBRWIsSUFBYyxnQkFBZ0I7UUFDNUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRXJELE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7WUFBQyxNQUFNLEVBQUUsQ0FBQztRQUFDLENBQUM7UUFDM0IsSUFBSSxLQUFLLEdBQWEsRUFBRSxDQUFBO1FBQ3hCLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQyxDQUFDO1lBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDL0UsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFHTSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUk7UUFDdkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRU0sR0FBRztRQUNSLElBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUM7WUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUMsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0EzQ1UsbUJBQW1CO21HQUFuQixtQkFBbUIsaVRBOEJuQixhQUFhLDZJQ3ZDMUIsazhGQStETTs7NEZEdERPLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxhQUFhOytHQU1kLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixNQUFNO3VCQUFDLE1BQU07Z0JBRUwsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFvQm9CLG9CQUFvQjtzQkFBN0MsU0FBUzt1QkFBQyxhQUFhO2dCQUlOLG1CQUFtQjtzQkFBcEMsU0FBUzt1QkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElvbkJhY2tCdXR0b24sIE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaGVhZGVyLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXItdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRlclZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBub3ZvOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwcm9ncmVzczogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQE91dHB1dCgnc2F2ZScpIHNhdmVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7ICBcclxuXHJcbiAgQElucHV0KCkgbm9CYWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbm9OZXcgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdXNlRGVmYXVsdFJvdXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBiYWNrUm91dGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IERlZmF1bHRCYWNrUm91dGUoKXtcclxuICAgIGNvbnN0IGZ1bGxSb3V0ZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zcGxpdCgnLycpXHJcblxyXG4gICAgY29uc3QgbGkgPSBmdWxsUm91dGVbZnVsbFJvdXRlLmxlbmd0aCAtIDFdO1xyXG4gICAgdmFyIG9mZnNldCA9IDE7XHJcbiAgICBpZihOdW1iZXIobGkpKXsgb2Zmc2V0Kys7IH1cclxuICAgIGxldCByb3V0ZTogc3RyaW5nW10gPSBbXVxyXG4gICAgZm9yKGxldCBpID0gMDsgaSA8IGZ1bGxSb3V0ZS5sZW5ndGggLSBvZmZzZXQ7IGkrKyl7IHJvdXRlLnB1c2goZnVsbFJvdXRlW2ldKTsgfVxyXG4gICAgcmV0dXJuIHJvdXRlLmpvaW4oJy8nKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoSW9uQmFja0J1dHRvbikgSW9uQmFja0J1dHRvbkVsZW1lbnQ6IElvbkJhY2tCdXR0b247IFxyXG4gIHB1YmxpYyBCYWNrKCRldmVudCA9IG51bGwpe1xyXG4gICAgdGhpcy5Jb25CYWNrQnV0dG9uRWxlbWVudC5vbkNsaWNrKCRldmVudClcclxuICB9XHJcbiAgQFZpZXdDaGlsZCgnbmV3JykgTmV3SW9uQnV0dG9uRWxlbWVudDogRWxlbWVudFJlZjsgXHJcbiAgcHVibGljIE5ldygpe1xyXG4gICAgaWYoIXRoaXMubm92byl7XHJcbiAgICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZUZvcndhcmQoWycuLi8nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBTYXZlKCk6IHZvaWR7XHJcbiAgICB0aGlzLnNhdmVFbWl0dGVyLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInctZnVsbCBoLTcgZmxleFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3LTEvMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IGdhcC0zXCI+XHJcbiAgICBAaWYoIW5vQmFjayl7XHJcbiAgICAgIEBpZih1c2VEZWZhdWx0Um91dGluZyB8fCBiYWNrUm91dGUpe1xyXG4gICAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwibS0wXCIgZmlsbD1cImNsZWFyXCIgc2l6ZT1cInNtYWxsXCIgW3JvdXRlckxpbmtdPVwiYmFja1JvdXRlID8gYmFja1JvdXRlIDogRGVmYXVsdEJhY2tSb3V0ZVwiPlxyXG4gICAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwidGV4dC1bMS43cmVtXVwiIG5hbWU9XCJjaGV2cm9uLWJhY2tcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgIDxpb24tdGV4dCBjbGFzcz1cInRleHQtYmFzZVwiPlZvbHRhcjwvaW9uLXRleHQ+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBlbHNle1xyXG4gICAgICAgIDxpb24tYmFjay1idXR0b24gc3R5bGU9XCItLW1pbi1oZWlnaHQ6IDEwMCU7XCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIiB0ZXh0PVwiVm9sdGFyXCIgW2RlZmF1bHRIcmVmXT1cIkRlZmF1bHRCYWNrUm91dGVcIj48L2lvbi1iYWNrLWJ1dHRvbj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPCEtLSA8aW9uLWNhcmQgYnV0dG9uIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgY2xhc3M9XCJoLWZ1bGwgdy0xMiBtLTAgZGVmYXVsdC10cmFuc2l0aW9uXCIgc3R5bGU9XCJib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KVwiPlxyXG4gICAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwicC0wIGJnLXRyYW5zcGFyZW50XCI+XHJcbiAgICAgICAgICBAaWYoIXVzZURlZmF1bHRSb3V0aW5nKXtcclxuICAgICAgICAgICAgPGlvbi1iYWNrLWJ1dHRvbiBjbGFzcz1cInNjYWxlLTc1IHNpemUtZnVsbFwiIHN0eWxlPVwiLS1taW4taGVpZ2h0OiAxMDAlO1wiIHRleHQ9XCJcIiAgW2RlZmF1bHRIcmVmXT1cIkJhY2tSb3V0ZVwiID5cclxuICAgICAgICAgICAgPC9pb24tYmFjay1idXR0b24+XHJcbiAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cInNpemUtZnVsbFwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJjbGVhclwiIFtyb3V0ZXJMaW5rXT1cIkJhY2tSb3V0ZVwiPlxyXG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1iYWNrXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDwvaW9uLWNhcmQ+IC0tPlxyXG4gICAgfVxyXG4gICAgQGlmKCFub0JhY2spe1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIGJvcmRlci1yLTIgYm9yZGVyLXItcHJpbWFyeSBib3JkZXItc29saWQgbWFzay15LzUwXCI+PC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwiLW14LTJcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJTYXZlKClcIj5cclxuICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJ0ZXh0LWJhc2VcIiBzbG90PVwic3RhcnRcIiBuYW1lPVwic2F2ZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwidGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICBTYWx2YXJcclxuICAgICAgICA8L2lvbi10ZXh0PlxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdy1bMTI1JV0gaC1bMTI1JV0gLXRvcC1bMTIuNSVdIC1sZWZ0LVsxMi41JV0gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZGVmYXVsdC10cmFuc2l0aW9uIGJhY2tkcm9wLWJsdXItc21cIiBbbmdDbGFzc109XCJ7J29wYWNpdHktMCAtdHJhbnNsYXRlLXktOCc6ICFsb2FkaW5nfVwiPlxyXG4gICAgICAgIDxpb24tdGV4dCBjb2xvcj1cInN1Y2Nlc3NcIiBjbGFzcz1cInRleHQtc20gbXQtMVwiPjxiPlxyXG4gICAgICAgICAgQGlmKHByb2dyZXNzKXtcclxuICAgICAgICAgICAge3socHJvZ3Jlc3MgKiAxMDApIHwgbnVtYmVyOiAnMS4xLTEnfX0lXHJcbiAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICB7ezAgfCBudW1iZXI6ICcxLjEtMSd9fSVcclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2I+PC9pb24tdGV4dD5cclxuICAgICAgICA8aW9uLXByb2dyZXNzLWJhciBbdmFsdWVdPVwicHJvZ3Jlc3NcIiBjb2xvcj1cInN1Y2Nlc3NcIiBjbGFzcz1cInctZnVsbCBkZWZhdWx0LXRyYW5zaXRpb25cIj48L2lvbi1wcm9ncmVzcy1iYXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1zdGFydF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInctMS8yIGZsZXgganVzdGlmeS1lbmQgaXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1lbmRdXCI+PC9uZy1jb250ZW50PlxyXG5cclxuICAgIEBpZighKG5vTmV3IHx8IG5vdm8pKXtcclxuICAgICAgPGlvbi1idXR0b24gI25ldyBbcm91dGVyTGlua109XCJbJy4uLyddXCIgY2xhc3M9XCJtLTBcIiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIj5cclxuICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJ0ZXh0LWJhc2VcIiBuYW1lPVwiYWRkXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj4gXHJcbiAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwidGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICBOb3ZvXHJcbiAgICAgICAgPC9pb24tdGV4dD5cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC12aWV3L2hlYWRlci12aWV3L2hlYWRlci12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy9oZWFkZXItdmlldy9oZWFkZXItdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFXLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBTzFELE1BQU0sT0FBTyxtQkFBbUI7SUFlOUIsWUFDVSxhQUE0QixFQUM1QixjQUE4QjtRQUQ5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFmL0IsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUV0QixhQUFRLEdBQWtCLElBQUksQ0FBQztRQUN4QixnQkFBVyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxFLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsVUFBSyxHQUFhLEtBQUssQ0FBQztRQUN4QixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDNUM7O1VBRUU7UUFDTyxtQkFBYyxHQUF5QyxTQUFTLENBQUM7SUFLdEUsQ0FBQztJQUVMLFFBQVEsS0FBSSxDQUFDO0lBRWIsSUFBYyxnQkFBZ0I7UUFDNUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRXJELE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7WUFBQyxNQUFNLEVBQUUsQ0FBQztRQUFDLENBQUM7UUFDM0IsSUFBSSxLQUFLLEdBQWEsRUFBRSxDQUFBO1FBQ3hCLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQyxDQUFDO1lBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDL0UsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFHTSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUk7UUFDdkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRU0sR0FBRztRQUNSLElBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUM7WUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUMsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0E5Q1UsbUJBQW1CO21HQUFuQixtQkFBbUIsMlRBaUNuQixhQUFhLDZJQzFDMUIsaTlGQStETTs7NEZEdERPLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxhQUFhOytHQU1kLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixNQUFNO3VCQUFDLE1BQU07Z0JBRUwsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUcsY0FBYztzQkFBdEIsS0FBSztnQkFvQm9CLG9CQUFvQjtzQkFBN0MsU0FBUzt1QkFBQyxhQUFhO2dCQUlOLG1CQUFtQjtzQkFBcEMsU0FBUzt1QkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElvbkJhY2tCdXR0b24sIE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaGVhZGVyLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXItdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRlclZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBub3ZvOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwcm9ncmVzczogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQE91dHB1dCgnc2F2ZScpIHNhdmVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7ICBcclxuXHJcbiAgQElucHV0KCkgbm9CYWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbm9OZXcgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdXNlRGVmYXVsdFJvdXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogIFxyXG4gICAqIFJvdGEgcGFyYSB2b2x0YXIsIGNhc28gbsOjbyBzZWphIGRlZmluaWRhLCBvIGNvbXBvbmVudGUgaXLDoSB0ZW50YXIgdXNhciByb3RhIGRvIGlvbmljXHJcbiAgKi9cclxuICBASW5wdXQoKSBiYWNrUm91dGVyTGluazogc3RyaW5nIHwgYW55W10gfCBVcmxUcmVlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IERlZmF1bHRCYWNrUm91dGUoKXtcclxuICAgIGNvbnN0IGZ1bGxSb3V0ZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zcGxpdCgnLycpXHJcblxyXG4gICAgY29uc3QgbGkgPSBmdWxsUm91dGVbZnVsbFJvdXRlLmxlbmd0aCAtIDFdO1xyXG4gICAgdmFyIG9mZnNldCA9IDE7XHJcbiAgICBpZihOdW1iZXIobGkpKXsgb2Zmc2V0Kys7IH1cclxuICAgIGxldCByb3V0ZTogc3RyaW5nW10gPSBbXVxyXG4gICAgZm9yKGxldCBpID0gMDsgaSA8IGZ1bGxSb3V0ZS5sZW5ndGggLSBvZmZzZXQ7IGkrKyl7IHJvdXRlLnB1c2goZnVsbFJvdXRlW2ldKTsgfVxyXG4gICAgcmV0dXJuIHJvdXRlLmpvaW4oJy8nKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoSW9uQmFja0J1dHRvbikgSW9uQmFja0J1dHRvbkVsZW1lbnQ6IElvbkJhY2tCdXR0b247IFxyXG4gIHB1YmxpYyBCYWNrKCRldmVudCA9IG51bGwpe1xyXG4gICAgdGhpcy5Jb25CYWNrQnV0dG9uRWxlbWVudC5vbkNsaWNrKCRldmVudClcclxuICB9XHJcbiAgQFZpZXdDaGlsZCgnbmV3JykgTmV3SW9uQnV0dG9uRWxlbWVudDogRWxlbWVudFJlZjsgXHJcbiAgcHVibGljIE5ldygpe1xyXG4gICAgaWYoIXRoaXMubm92byl7XHJcbiAgICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZUZvcndhcmQoWycuLi8nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBTYXZlKCk6IHZvaWR7XHJcbiAgICB0aGlzLnNhdmVFbWl0dGVyLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInctZnVsbCBoLTcgZmxleFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3LTEvMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IGdhcC0zXCI+XHJcbiAgICBAaWYoIW5vQmFjayl7XHJcbiAgICAgIEBpZih1c2VEZWZhdWx0Um91dGluZyB8fCBiYWNrUm91dGVyTGluayl7XHJcbiAgICAgICAgPGlvbi1idXR0b24gY2xhc3M9XCJtLTBcIiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiBbcm91dGVyTGlua109XCJiYWNrUm91dGVyTGluayA/IGJhY2tSb3V0ZXJMaW5rIDogRGVmYXVsdEJhY2tSb3V0ZVwiPlxyXG4gICAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwidGV4dC1bMS43cmVtXVwiIG5hbWU9XCJjaGV2cm9uLWJhY2tcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgIDxpb24tdGV4dCBjbGFzcz1cInRleHQtYmFzZVwiPlZvbHRhcjwvaW9uLXRleHQ+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBlbHNle1xyXG4gICAgICAgIDxpb24tYmFjay1idXR0b24gc3R5bGU9XCItLW1pbi1oZWlnaHQ6IDEwMCU7XCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIiB0ZXh0PVwiVm9sdGFyXCIgW2RlZmF1bHRIcmVmXT1cIkRlZmF1bHRCYWNrUm91dGVcIj48L2lvbi1iYWNrLWJ1dHRvbj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPCEtLSA8aW9uLWNhcmQgYnV0dG9uIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgY2xhc3M9XCJoLWZ1bGwgdy0xMiBtLTAgZGVmYXVsdC10cmFuc2l0aW9uXCIgc3R5bGU9XCJib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KVwiPlxyXG4gICAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwicC0wIGJnLXRyYW5zcGFyZW50XCI+XHJcbiAgICAgICAgICBAaWYoIXVzZURlZmF1bHRSb3V0aW5nKXtcclxuICAgICAgICAgICAgPGlvbi1iYWNrLWJ1dHRvbiBjbGFzcz1cInNjYWxlLTc1IHNpemUtZnVsbFwiIHN0eWxlPVwiLS1taW4taGVpZ2h0OiAxMDAlO1wiIHRleHQ9XCJcIiAgW2RlZmF1bHRIcmVmXT1cIkJhY2tSb3V0ZVwiID5cclxuICAgICAgICAgICAgPC9pb24tYmFjay1idXR0b24+XHJcbiAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cInNpemUtZnVsbFwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJjbGVhclwiIFtyb3V0ZXJMaW5rXT1cIkJhY2tSb3V0ZVwiPlxyXG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1iYWNrXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDwvaW9uLWNhcmQ+IC0tPlxyXG4gICAgfVxyXG4gICAgQGlmKCFub0JhY2spe1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIGJvcmRlci1yLTIgYm9yZGVyLXItcHJpbWFyeSBib3JkZXItc29saWQgbWFzay15LzUwXCI+PC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwiLW14LTJcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJTYXZlKClcIj5cclxuICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJ0ZXh0LWJhc2VcIiBzbG90PVwic3RhcnRcIiBuYW1lPVwic2F2ZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwidGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICBTYWx2YXJcclxuICAgICAgICA8L2lvbi10ZXh0PlxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdy1bMTI1JV0gaC1bMTI1JV0gLXRvcC1bMTIuNSVdIC1sZWZ0LVsxMi41JV0gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZGVmYXVsdC10cmFuc2l0aW9uIGJhY2tkcm9wLWJsdXItc21cIiBbbmdDbGFzc109XCJ7J29wYWNpdHktMCAtdHJhbnNsYXRlLXktOCc6ICFsb2FkaW5nfVwiPlxyXG4gICAgICAgIDxpb24tdGV4dCBjb2xvcj1cInN1Y2Nlc3NcIiBjbGFzcz1cInRleHQtc20gbXQtMVwiPjxiPlxyXG4gICAgICAgICAgQGlmKHByb2dyZXNzKXtcclxuICAgICAgICAgICAge3socHJvZ3Jlc3MgKiAxMDApIHwgbnVtYmVyOiAnMS4xLTEnfX0lXHJcbiAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICB7ezAgfCBudW1iZXI6ICcxLjEtMSd9fSVcclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2I+PC9pb24tdGV4dD5cclxuICAgICAgICA8aW9uLXByb2dyZXNzLWJhciBbdmFsdWVdPVwicHJvZ3Jlc3NcIiBjb2xvcj1cInN1Y2Nlc3NcIiBjbGFzcz1cInctZnVsbCBkZWZhdWx0LXRyYW5zaXRpb25cIj48L2lvbi1wcm9ncmVzcy1iYXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1zdGFydF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInctMS8yIGZsZXgganVzdGlmeS1lbmQgaXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1lbmRdXCI+PC9uZy1jb250ZW50PlxyXG5cclxuICAgIEBpZighKG5vTmV3IHx8IG5vdm8pKXtcclxuICAgICAgPGlvbi1idXR0b24gI25ldyBbcm91dGVyTGlua109XCJbJy4uLyddXCIgY2xhc3M9XCJtLTBcIiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIj5cclxuICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJ0ZXh0LWJhc2VcIiBuYW1lPVwiYWRkXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj4gXHJcbiAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwidGV4dC1iYXNlXCI+XHJcbiAgICAgICAgICBOb3ZvXHJcbiAgICAgICAgPC9pb24tdGV4dD5cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -90,7 +90,7 @@ export class DrawerComponent {
90
90
  this.genericService.SetTitle(item.title);
91
91
  }
92
92
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DrawerComponent, deps: [{ token: i1.Router }, { token: i2.NavController }, { token: i3.GenericService }], target: i0.ɵɵFactoryTarget.Component }); }
93
- 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 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 flex pl-2 \">\r\n <div class=\"size-full max-h-10 flex flex-wrap overflow-hidden\">\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 shrink-0\">\r\n <ng-content select=\"[slot=logo]\"></ng-content>\r\n </div>\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 w-12 pr-2 py-2 mask-y shrink-0 flex flex-col gap-2 overflow-y-auto overflow-x-hidden border-dashed border-r border-r-medium/30\">\r\n <div #searchAnchor (click)=\"modal.present()\" class=\"search-button size-10 aspect-square shrink-0 rounded-xl bg-inactive gradient-background menu\">\r\n <ion-icon name=\"search\" slot=\"icon-only\"></ion-icon>\r\n </div>\r\n\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-10 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 }\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>\r\n\r\n<ion-modal #modal [keepContentsMounted]=\"true\" (onWillDismiss)=\"search.set('')\">\r\n <ng-template>\r\n <ion-content>\r\n <ion-card class=\"size-full m-0 overflow-hidden\">\r\n <ion-card-content class=\"size-full flex flex-col overflow-hidden p-0\">\r\n <div class=\"shrink-0 w-full flex items-center justify-center\">\r\n <ion-searchbar class=\"p-0 !pl-2 !py-2\" [ngModel]=\"this.search()\" (ngModelChange)=\"this.search.set($event)\" [debounce]=\"200\"></ion-searchbar>\r\n <ion-button size=\"small\" fill=\"clear\" (click)=\"modal.dismiss()\">\r\n <ion-icon name=\"close\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n\r\n <div class=\"size-full flex flex-col shrink gap-2 overflow-y-auto p-2 mask-y\">\r\n @for (vGroup of lstMenuFiltered(); track $index) {\r\n <ion-card class=\"m-0 shrink-0\">\r\n <ion-card-content class=\"p-0 gradient-background bg-inactive flex flex-col\">\r\n <div class=\"w-10 flex items-center !justify-start gap-2 text-dark shrink-0 p-2\">\r\n <ion-icon [name]=\"vGroup.icon\"></ion-icon>\r\n <ion-text>\r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + vGroup.id | translate) : vGroup.title}} \r\n </ion-text>\r\n </div>\r\n @for (vMenu of vGroup.lstMenu; track $index) {\r\n <div \r\n (click)=\"HandleNav(vMenu, $event); modal.dismiss()\"\r\n [class.bg-active]=\"router.isActive('/' + vMenu.route, false)\"\r\n class=\"w-full flex items-center !justify-start gap-2 text-dark shrink-0 !pl-8 p-1.5 border-t border-t-medium/30 menu-search\">\r\n <ion-icon [name]=\"vMenu.icon\"></ion-icon>\r\n <ion-text>\r\n {{useTranslation ? (TranslationModule.Permissao + vMenu.id | translate) : vMenu.title}} \r\n </ion-text>\r\n </div>\r\n }\r\n </ion-card-content>\r\n </ion-card>\r\n }\r\n\r\n @if (lstMenuFiltered().length == 0) {\r\n <ion-text class=\"text-center text-medium\">\r\n {{useTranslation ? (TranslationModule.SemResultado | translate) : 'Sem resultados encontrados'}}\r\n </ion-text>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </ion-content>\r\n </ng-template>\r\n</ion-modal>", 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 2px 0px inset;box-shadow:var(--inset)}.toggle:hover{--color-primary: var(--ion-color-step-500) !important;transition:--color-primary .2s ease-in-out}.search-button{--inset2: var(--ion-color-medium) 0px 0px 5px -1px inset;box-shadow:var(--inset2)}.menu-search{position:relative;cursor:pointer;overflow:hidden}.menu-search.bg-active:after{content:\"\";position:absolute;top:50%;right:0;width:.375rem;height:75%;transform:translateY(-50%);border-radius:1rem;background-color:color-mix(in srgb,var(--ion-color-primary) 70%,transparent);opacity:1!important;filter:drop-shadow(color-mix(in srgb,var(--ion-color-primary) 70%,transparent) 0px 0px 3px)}.menu-search.bg-active:before{content:\"\";position:absolute;top:50%;right:-2.3rem;width:5rem;height:7rem;transform:translateY(-50%);border-radius:1rem;opacity:.5!important;background:radial-gradient(color-mix(in srgb,var(--ion-color-primary) 70%,transparent) 0%,transparent 66%)}.menu-search.bg-inactive{--color-primary: var(--ion-color-step-250);--step-1-opacity: .5;--step-2-opacity: .4;--step-3-opacity: .8;position:relative}.menu-search.bg-inactive:after{content:\"\";opacity:0;transition:opacity .2s ease-in-out;will-change:opacity}.menu-search.bg-inactive:before{content:\"\";opacity:0;transition:opacity .2s ease-in-out;will-change:opacity}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.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: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-input-otp[type=text],ion-textarea,ion-searchbar" }, { 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: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: SIonPopoverModule }, { kind: "component", type: i6.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss", "isVisibleChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
93
+ 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 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 flex pl-2 \">\r\n <div class=\"size-full max-h-10 flex flex-wrap overflow-hidden\">\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 shrink-0\">\r\n <ng-content select=\"[slot=logo]\"></ng-content>\r\n </div>\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 w-12 pr-2 py-2 mask-y shrink-0 flex flex-col gap-2 overflow-y-auto overflow-x-hidden border-dashed border-r border-r-medium/30\">\r\n <div #searchAnchor (click)=\"modal.present()\" class=\"search-button size-10 aspect-square shrink-0 rounded-xl bg-inactive gradient-background menu\">\r\n <ion-icon name=\"search\" slot=\"icon-only\"></ion-icon>\r\n </div>\r\n\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-10 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 }\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>\r\n\r\n<ion-modal #modal [keepContentsMounted]=\"true\" (onWillDismiss)=\"search.set('')\">\r\n <ng-template>\r\n <ion-content>\r\n <ion-card class=\"size-full m-0 overflow-hidden\">\r\n <ion-card-content class=\"size-full flex flex-col overflow-hidden p-0\">\r\n <div class=\"shrink-0 w-full flex items-center justify-center\">\r\n <ion-searchbar class=\"p-0 !pl-2 !py-2\" [ngModel]=\"this.search()\" (ngModelChange)=\"this.search.set($event)\" [debounce]=\"200\"></ion-searchbar>\r\n <ion-button size=\"small\" fill=\"clear\" (click)=\"modal.dismiss()\">\r\n <ion-icon name=\"close\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n\r\n <div class=\"size-full flex flex-col shrink gap-2 overflow-y-auto p-2 mask-y\">\r\n @for (vGroup of lstMenuFiltered(); track $index) {\r\n <ion-card class=\"m-0 shrink-0\">\r\n <ion-card-content class=\"p-0 gradient-background bg-inactive flex flex-col\">\r\n <div class=\"w-10 flex items-center !justify-start gap-2 text-dark shrink-0 p-2\">\r\n <ion-icon [name]=\"vGroup.icon\"></ion-icon>\r\n <ion-text>\r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + vGroup.id | translate) : vGroup.title}} \r\n </ion-text>\r\n </div>\r\n @for (vMenu of vGroup.lstMenu; track $index) {\r\n <div \r\n (click)=\"HandleNav(vMenu, $event); modal.dismiss()\"\r\n [class.bg-active]=\"router.isActive('/' + vMenu.route, false)\"\r\n class=\"w-full flex items-center !justify-start gap-2 text-dark shrink-0 !pl-8 p-1.5 border-t border-t-medium/30 menu-search\">\r\n <ion-icon [name]=\"vMenu.icon\"></ion-icon>\r\n <ion-text>\r\n {{useTranslation ? (TranslationModule.Permissao + vMenu.id | translate) : vMenu.title}} \r\n </ion-text>\r\n </div>\r\n }\r\n </ion-card-content>\r\n </ion-card>\r\n }\r\n\r\n @if (lstMenuFiltered().length == 0) {\r\n <ion-text class=\"text-center text-medium\">\r\n {{useTranslation ? (TranslationModule.SemResultado | translate) : 'Sem resultados encontrados'}}\r\n </ion-text>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </ion-content>\r\n </ng-template>\r\n</ion-modal>", 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 2px 0px inset;box-shadow:var(--inset)}.toggle:hover{--color-primary: var(--ion-color-step-500) !important;transition:--color-primary .2s ease-in-out}.search-button{--inset2: var(--ion-color-medium) 0px 0px 5px -1px inset;box-shadow:var(--inset2)}.menu-search{position:relative;cursor:pointer;overflow:hidden}.menu-search.bg-active:after{content:\"\";position:absolute;top:50%;right:0;width:.375rem;height:75%;transform:translateY(-50%);border-radius:1rem;background-color:color-mix(in srgb,var(--ion-color-primary) 70%,transparent);opacity:1!important;filter:drop-shadow(color-mix(in srgb,var(--ion-color-primary) 70%,transparent) 0px 0px 3px)}.menu-search.bg-active:before{content:\"\";position:absolute;top:50%;right:-2.3rem;width:5rem;height:7rem;transform:translateY(-50%);border-radius:1rem;opacity:.5!important;background:radial-gradient(color-mix(in srgb,var(--ion-color-primary) 70%,transparent) 0%,transparent 66%)}.menu-search.bg-inactive{--color-primary: var(--ion-color-step-250);--step-1-opacity: .5;--step-2-opacity: .4;--step-3-opacity: .8;position:relative}.menu-search.bg-inactive:after{content:\"\";opacity:0;transition:opacity .2s ease-in-out;will-change:opacity}.menu-search.bg-inactive:before{content:\"\";opacity:0;transition:opacity .2s ease-in-out;will-change:opacity}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.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: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-input-otp[type=text],ion-textarea,ion-searchbar" }, { 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: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: SIonPopoverModule }, { kind: "component", type: i6.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
94
94
  }
95
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DrawerComponent, decorators: [{
96
96
  type: Component,
@@ -153,4 +153,4 @@ function FindMenuParent(menus, targetMenu) {
153
153
  }
154
154
  return null;
155
155
  }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBZSxNQUFNLEVBQUUsTUFBTSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUM3SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBa0JsRSxNQUFNLE9BQU8sZUFBZTtJQWlCMUIsWUFDUyxNQUFjLEVBQ2IsYUFBNEIsRUFDNUIsY0FBOEI7UUFGL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNi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QUFVLENBQUMsRUFBRSxDQUFDO1lBQzdELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELGlDQUFpQztRQUNqQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDeEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEV2ZW50RW1pdHRlciwgaW5wdXQsIElucHV0LCBJbnB1dFNpZ25hbCwgT3V0cHV0LCBzaWduYWwsIFNpZ25hbCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IElvbmljTW9kdWxlLCBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnLi9tZW51JztcclxuXHJcbmltcG9ydCB7IERyYXdlckdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9kcmF3ZXItZ3JvdXAvZHJhd2VyLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTSW9uUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uL3BvcG92ZXIvc2lvbi1wb3BvdmVyLm1vZHVsZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGlua1dpdGhIcmVmIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nZW5lcmljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZWFyY2ggfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSW9uaWNNb2R1bGUsXHJcbiAgICBMb2FkaW5nQ29tcG9uZW50LFxyXG4gICAgRHJhd2VyR3JvdXBDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBTSW9uUG9wb3Zlck1vZHVsZSxcclxuICAgIFJvdXRlckxpbmtXaXRoSHJlZixcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgc2VsZWN0b3I6ICdkcmF3ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RyYXdlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29tcG9uZW50IHtcclxuXHJcbiAgVHJhbnNsYXRpb25Nb2R1bGU6IGFueSA9IHtcclxuICAgIFBlcm1pc3NhbyAgICAgOiAnRW50aXRpZXMuUGVybWlzc2FvLicsXHJcbiAgICBQZXJtaXNzYW9HcnVwbzogJ0VudGl0aWVzLlBlcm1pc3Nhb0dydXBvLicsXHJcbiAgICBTZW1SZXN1bHRhZG8gIDogJ01lc3NhZ2VzLlNlbVJlc3VsdGFkbydcclxuICB9O1xyXG5cclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBsc3RNZW51OiBJbnB1dFNpZ25hbDxNZW51W10+ID0gaW5wdXQ8TWVudVtdPigpO1xyXG4gIGxzdEZsYXR0ZW5NZW51OiBTaWduYWw8TWVudVtdPiA9IGNvbXB1dGVkKCgpID0+IHsgcmV0dXJuIEZsYXR0ZW5NZW51cyh0aGlzLmxzdE1lbnUoKSkgfSk7XHJcblxyXG4gIEBJbnB1dCgpIGNvbGFwc2VkOiBib29sZWFuID0gZmFsc2U7ICBcclxuICBAT3V0cHV0KCkgY29sYXBzZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47ICBcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZVRyYW5zbGF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZVxyXG4gICkgeyBcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIC8vSGFuZGxlIE1lbnUgVGl0bGVcclxuICAgICAgY29uc3QgbHN0RmxhdCA9IHRoaXMubHN0RmxhdHRlbk1lbnUoKTtcclxuICAgICAgY29uc3QgY3VycmVudE1lbnUgPSBsc3RGbGF0LmZpbmQocCA9PiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5jbHVkZXMoJy8nICsgcC5yb3V0ZSkpO1xyXG4gICAgICBjb25zdCBncm91cDogTWVudSB8IG51bGwgPSBGaW5kTWVudVBhcmVudCh0aGlzLmxzdE1lbnUoKSwgY3VycmVudE1lbnUpO1xyXG4gICAgICBpZihncm91cCl7XHJcbiAgICAgICAgdGhpcy5DdXJyZW50R3JvdXBBY3RpdmUgPSBncm91cDtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuQ3VycmVudEdyb3VwQWN0aXZlID0gdGhpcy5sc3RNZW51KClbMF07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBDdXJyZW50R3JvdXBBY3RpdmU6IE1lbnUgPSBudWxsO1xyXG5cclxuICBUb2dnbGVDb2xsYXBzZWQoKXtcclxuICAgIHRoaXMuY29sYXBzZWRDaGFuZ2UuZW1pdCghdGhpcy5fZW50ZXJDb2xhcHNlZCk7XHJcbiAgICB0aGlzLl9lbnRlckNvbGFwc2VkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBfZW50ZXJDb2xhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9uTW91c2VFbnRlcigpe1xyXG4gICAgaWYodGhpcy5jb2xhcHNlZCl7XHJcbiAgICAgIHRoaXMuX2VudGVyQ29sYXBzZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbGFwc2VkQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvbk1vdXNlTGVhdmUoKXtcclxuICAgIGlmKHRoaXMuX2VudGVyQ29sYXBzZWQpe1xyXG4gICAgICB0aGlzLl9lbnRlckNvbGFwc2VkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29sYXBzZWRDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEhhbmRsZU5hdihpdGVtOiBNZW51IHwgYW55LCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KXtcclxuICAgICAgd2luZG93Lm9wZW4od2luZG93Lm9yaWdpbiArICcvJyArIGl0ZW0ucm91dGUsICdfYmxhbmsnKTtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5TZXRUaXRsZShpdGVtKTtcclxuICAgIGNvbnN0IHZHcm91cDogTWVudSB8IG51bGwgPSBGaW5kTWVudVBhcmVudCh0aGlzLmxzdE1lbnUoKSwgaXRlbSk7XHJcbiAgICBpZih2R3JvdXApe1xyXG4gICAgICB0aGlzLkN1cnJlbnRHcm91cEFjdGl2ZSA9IHZHcm91cDtcclxuICAgIH1cclxuICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoJy8nICsgaXRlbS5yb3V0ZSk7XHJcbiAgfVxyXG4gIFNldFRpdGxlKGl0ZW06IE1lbnUpe1xyXG4gICAgdGhpcy5nZW5lcmljU2VydmljZS5TZXRUaXRsZShpdGVtLnRpdGxlKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaDogV3JpdGFibGVTaWduYWw8c3RyaW5nPiA9IHNpZ25hbDxzdHJpbmc+KFwiXCIpO1xyXG4gIGxzdE1lbnVGaWx0ZXJlZDogU2lnbmFsPE1lbnVbXT4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBzdHIgPSB0aGlzLnNlYXJjaCgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBsc3RTMSA9IHRoaXMubHN0TWVudSgpLm1hcChwID0+IHtcclxuICAgICAgcmV0dXJuIG5ldyBNZW51KHAudHlwZSwgcC50aXRsZSwgcC5pY29uLCBwLmxzdE1lbnUuZmlsdGVyKHggPT4geC50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHN0cikpLCBwLnJvdXRlKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgbHN0UzIgPSBsc3RTMS5maWx0ZXIocCA9PiBwLmxzdE1lbnUubGVuZ3RoID4gMCk7XHJcbiAgICByZXR1cm4gbHN0UzI7XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGbGF0dGVucyBhIGhpZXJhcmNoaWNhbCBNZW51W10gc3RydWN0dXJlIGludG8gYSBzaW5nbGUgYXJyYXlcclxuICogY29udGFpbmluZyBhbGwgTWVudSBpdGVtcyBmcm9tIHRoZSBvcmlnaW5hbCBhcnJheSBhbmQgYWxsIG5lc3RlZCBpdGVtc1xyXG4gKiBAcGFyYW0gbWVudXMgVGhlIGFycmF5IG9mIE1lbnUgaXRlbXMgdG8gZmxhdHRlblxyXG4gKiBAcmV0dXJucyBBIGZsYXR0ZW5lZCBhcnJheSBjb250YWluaW5nIGFsbCBNZW51IGl0ZW1zXHJcbiAqL1xyXG5mdW5jdGlvbiBGbGF0dGVuTWVudXMobWVudXM6IE1lbnVbXSk6IE1lbnVbXSB7XHJcbiAgY29uc3QgcmVzdWx0OiBNZW51W10gPSBbXTtcclxuICBcclxuICBmdW5jdGlvbiBhZGRNZW51SXRlbXMoaXRlbXM6IE1lbnVbXSkge1xyXG4gICAgZm9yIChjb25zdCBtZW51IG9mIGl0ZW1zKSB7XHJcbiAgICAgIC8vIEFkZCBjdXJyZW50IG1lbnUgdG8gcmVzdWx0XHJcbiAgICAgIHJlc3VsdC5wdXNoKG1lbnUpO1xyXG4gICAgICBcclxuICAgICAgLy8gUHJvY2VzcyBuZXN0ZWQgbWVudXMgaWYgdGhleSBleGlzdFxyXG4gICAgICBpZiAobWVudS5sc3RNZW51ICYmIG1lbnUubHN0TWVudS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgYWRkTWVudUl0ZW1zKG1lbnUubHN0TWVudSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgYWRkTWVudUl0ZW1zKG1lbnVzKTtcclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBGaW5kTWVudVBhcmVudChtZW51czogTWVudVtdLCB0YXJnZXRNZW51OiBNZW51KTogTWVudSB8IG51bGwge1xyXG4gIGZvciAoY29uc3QgbWVudSBvZiBtZW51cykge1xyXG4gICAgLy8gQ2hlY2sgaWYgY3VycmVudCBtZW51IGhhcyB0aGUgdGFyZ2V0IGluIGl0cyBkaXJlY3QgY2hpbGRyZW5cclxuICAgIGlmIChtZW51LmxzdE1lbnUgJiYgbWVudS5sc3RNZW51LnNvbWUobSA9PiBtID09PSB0YXJnZXRNZW51KSkge1xyXG4gICAgICByZXR1cm4gbWVudTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gU2VhcmNoIGRlZXBlciBpbiB0aGUgaGllcmFyY2h5XHJcbiAgICBpZiAobWVudS5sc3RNZW51ICYmIG1lbnUubHN0TWVudS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IEZpbmRNZW51UGFyZW50KG1lbnUubHN0TWVudSwgdGFyZ2V0TWVudSk7XHJcbiAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICByZXR1cm4gcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIHJldHVybiBudWxsO1xyXG59IiwiPGRpdiBjbGFzcz1cImFic29sdXRlIGxlZnQtMCB0b3AtMCBoLWZ1bGwgYmctbGlnaHQgc2l6ZS1mdWxsIGZsZXggZmxleC1jb2wgcC0yICFwci0wIHctWzE5cmVtXSBvdmVyZmxvdy1oaWRkZW5cIiAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCI+XHJcbiAgPCEtLSBbIEhlYWRlciBdIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJzaHJpbmstMCB3LWZ1bGwgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcbiAgICA8ZGl2ICNhbmNob3JcclxuICAgICAgKGNsaWNrKT1cIlRvZ2dsZUNvbGxhcHNlZCgpXCIgXHJcbiAgICAgIGNsYXNzPVwidG9nZ2xlIHNpemUtMTAgYXNwZWN0LXNxdWFyZSBzaHJpbmstMCByb3VuZGVkLXhsIGJnLWluYWN0aXZlIGdyYWRpZW50LWJhY2tncm91bmQgbWVudVwiXHJcbiAgICA+XHJcbiAgICAgIDxpb24taWNvbiBuYW1lPVwibWVudVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxpb24tYnV0dG9uIGNsYXNzPVwic2l6ZS0xMCBzaHJpbmstMCBhc3BlY3Qtc3F1YXJlXCIgc2l6ZT1cInNtYWxsXCIgY29sb3I9XCJtZWRpdW1cIiAoY2xpY2spPVwiVG9nZ2xlQ29sbGFwc2VkKClcIj5cclxuICAgICAgPGlvbi1pY29uIG5hbWU9XCJtZW51XCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICA8L2lvbi1idXR0b24+IC0tPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgc2hyaW5rIGZsZXggcGwtMiBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCBtYXgtaC0xMCBmbGV4IGZsZXgtd3JhcCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICBAaWYgKCFyZWYuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJzaXplLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZGVmYXVsdC10cmFuc2l0aW9uIHotMFwiIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS0wIC10cmFuc2xhdGUteC0xLzIgcG9pbnRlci1ldmVudHMtbm9uZSc6IGNvbGFwc2VkIH1cIj4gXHJcbiAgICAgICAgICAgIHt7dGl0bGV9fVxyXG4gICAgICAgICAgPC9pb24tdGV4dD5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGRpdiAjcmVmIGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNocmluay0wXCI+XHJcbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1sb2dvXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBbIENvbnRlbnQgXSAtLT5cclxuICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIHNocmluayBmbGV4IGZsZXgtY29sIHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgPGxvYWRpbmcgW3R5cGVdPVwiM1wiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiB0ZXh0PVwiXCI+PC9sb2FkaW5nPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCBzaHJpbmsgZmxleCBnYXAtMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctMTIgcHItMiBweS0yIG1hc2steSBzaHJpbmstMCBmbGV4IGZsZXgtY29sIGdhcC0yIG92ZXJmbG93LXktYXV0byBvdmVyZmxvdy14LWhpZGRlbiBib3JkZXItZGFzaGVkIGJvcmRlci1yIGJvcmRlci1yLW1lZGl1bS8zMFwiPlxyXG4gICAgICAgIDxkaXYgI3NlYXJjaEFuY2hvciAoY2xpY2spPVwibW9kYWwucHJlc2VudCgpXCIgY2xhc3M9XCJzZWFyY2gtYnV0dG9uIHNpemUtMTAgYXNwZWN0LXNxdWFyZSBzaHJpbmstMCByb3VuZGVkLXhsIGJnLWluYWN0aXZlIGdyYWRpZW50LWJhY2tncm91bmQgbWVudVwiPlxyXG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJzZWFyY2hcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBsc3RNZW51KCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5iZy1hY3RpdmVdPVwiQ3VycmVudEdyb3VwQWN0aXZlID09IGl0ZW1cIlxyXG4gICAgICAgICAgICAgICNhbmNob3IgKG1vdXNlZW50ZXIpPVwicG9wb3Zlci5wcmVzZW50KCRldmVudClcIiBcclxuICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJwb3BvdmVyLmRpc21pc3MoKVwiIFxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJDdXJyZW50R3JvdXBBY3RpdmUgPSBpdGVtXCIgXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwIGFzcGVjdC1zcXVhcmUgc2hyaW5rLTAgcm91bmRlZC14bCBiZy1pbmFjdGl2ZSBncmFkaWVudC1iYWNrZ3JvdW5kIG1lbnVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c2lvbi1wb3BvdmVyICNwb3BvdmVyIFthbmNob3JdPVwiYW5jaG9yXCIgW2ZsaXBdPVwiZmFsc2VcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIGZpbGw9XCJzb2xpZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgICAgICAgIHt7dXNlVHJhbnNsYXRpb24gPyAoVHJhbnNsYXRpb25Nb2R1bGUuUGVybWlzc2FvR3J1cG8gKyBpdGVtLmlkIHwgdHJhbnNsYXRlKSA6IGl0ZW0udGl0bGV9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3Npb24tcG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIHNocmluayByZWxhdGl2ZVwiPlxyXG4gICAgICAgIEBmb3IgKG1Hcm91cCBvZiBsc3RNZW51KCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIGxlZnQtMCBzaXplLWZ1bGwgcHktMiBkZWZhdWx0LXRyYW5zaXRpb24gb3BhY2l0eS0wIHRyYW5zbGF0ZS14LWZ1bGwgei0wIG92ZXJmbG93LWhpZGRlblwiIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS0xMDAgIXRyYW5zbGF0ZS14LTAnOiBDdXJyZW50R3JvdXBBY3RpdmUgPT0gbUdyb3VwfVwiPlxyXG4gICAgICAgICAgICA8ZHJhd2VyLWdyb3VwIFtNZW51R3JvdXBdPVwibUdyb3VwXCIgW3VzZVRyYW5zbGF0aW9uXT1cInVzZVRyYW5zbGF0aW9uXCIgW2NvbGFwc2VkXT1cImNvbGFwc2VkXCI+PC9kcmF3ZXItZ3JvdXA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gWyBFbmQgXSAtLT5cclxuICA8ZGl2IGNsYXNzPVwic2hyaW5rLTAgdy1mdWxsXCI+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1kcmF3ZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxpb24tbW9kYWwgI21vZGFsIFtrZWVwQ29udGVudHNNb3VudGVkXT1cInRydWVcIiAob25XaWxsRGlzbWlzcyk9XCJzZWFyY2guc2V0KCcnKVwiPlxyXG4gIDxuZy10ZW1wbGF0ZT5cclxuICAgIDxpb24tY29udGVudD5cclxuICAgICAgPGlvbi1jYXJkIGNsYXNzPVwic2l6ZS1mdWxsIG0tMCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICA8aW9uLWNhcmQtY29udGVudCBjbGFzcz1cInNpemUtZnVsbCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiBwLTBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaHJpbmstMCB3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGlvbi1zZWFyY2hiYXIgY2xhc3M9XCJwLTAgIXBsLTIgIXB5LTJcIiBbbmdNb2RlbF09XCJ0aGlzLnNlYXJjaCgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwidGhpcy5zZWFyY2guc2V0KCRldmVudClcIiBbZGVib3VuY2VdPVwiMjAwXCI+PC9pb24tc2VhcmNoYmFyPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaXplPVwic21hbGxcIiBmaWxsPVwiY2xlYXJcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgZmxleCBmbGV4LWNvbCBzaHJpbmsgZ2FwLTIgb3ZlcmZsb3cteS1hdXRvIHAtMiBtYXNrLXlcIj5cclxuICAgICAgICAgICAgQGZvciAodkdyb3VwIG9mIGxzdE1lbnVGaWx0ZXJlZCgpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICA8aW9uLWNhcmQgY2xhc3M9XCJtLTAgc2hyaW5rLTBcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwicC0wIGdyYWRpZW50LWJhY2tncm91bmQgYmctaW5hY3RpdmUgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMCBmbGV4IGl0ZW1zLWNlbnRlciAhanVzdGlmeS1zdGFydCBnYXAtMiB0ZXh0LWRhcmsgc2hyaW5rLTAgcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInZHcm91cC5pY29uXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3VzZVRyYW5zbGF0aW9uID8gKFRyYW5zbGF0aW9uTW9kdWxlLlBlcm1pc3Nhb0dydXBvICsgdkdyb3VwLmlkIHwgdHJhbnNsYXRlKSA6IHZHcm91cC50aXRsZX19IFxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICBAZm9yICh2TWVudSBvZiB2R3JvdXAubHN0TWVudTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJIYW5kbGVOYXYodk1lbnUsICRldmVudCk7IG1vZGFsLmRpc21pc3MoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYmctYWN0aXZlXT1cInJvdXRlci5pc0FjdGl2ZSgnLycgKyB2TWVudS5yb3V0ZSwgZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyICFqdXN0aWZ5LXN0YXJ0IGdhcC0yIHRleHQtZGFyayBzaHJpbmstMCAhcGwtOCBwLTEuNSBib3JkZXItdCBib3JkZXItdC1tZWRpdW0vMzAgbWVudS1zZWFyY2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJ2TWVudS5pY29uXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t1c2VUcmFuc2xhdGlvbiA/IChUcmFuc2xhdGlvbk1vZHVsZS5QZXJtaXNzYW8gKyB2TWVudS5pZCB8IHRyYW5zbGF0ZSkgOiB2TWVudS50aXRsZX19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBpZiAobHN0TWVudUZpbHRlcmVkKCkubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxyXG4gICAgICAgICAgICAgICAge3t1c2VUcmFuc2xhdGlvbiA/IChUcmFuc2xhdGlvbk1vZHVsZS5TZW1SZXN1bHRhZG8gfCB0cmFuc2xhdGUpIDogJ1NlbSByZXN1bHRhZG9zIGVuY29udHJhZG9zJ319XHJcbiAgICAgICAgICAgICAgPC9pb24tdGV4dD5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgICA8L2lvbi1jYXJkPlxyXG4gICAgPC9pb24tY29udGVudD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2lvbi1tb2RhbD4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBZSxNQUFNLEVBQUUsTUFBTSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUM3SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBa0JsRSxNQUFNLE9BQU8sZUFBZTtJQWlCMUIsWUFDUyxNQUFjLEVBQ2IsYUFBNEIsRUFDNUIsY0FBOEI7UUFGL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNi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QUFVLENBQUMsRUFBRSxDQUFDO1lBQzdELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELGlDQUFpQztRQUNqQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDeEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEV2ZW50RW1pdHRlciwgaW5wdXQsIElucHV0LCBJbnB1dFNpZ25hbCwgT3V0cHV0LCBzaWduYWwsIFNpZ25hbCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IElvbmljTW9kdWxlLCBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnLi9tZW51JztcclxuXHJcbmltcG9ydCB7IERyYXdlckdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9kcmF3ZXItZ3JvdXAvZHJhd2VyLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTSW9uUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uL3BvcG92ZXIvc2lvbi1wb3BvdmVyLm1vZHVsZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGlua1dpdGhIcmVmIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nZW5lcmljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZWFyY2ggfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSW9uaWNNb2R1bGUsXHJcbiAgICBMb2FkaW5nQ29tcG9uZW50LFxyXG4gICAgRHJhd2VyR3JvdXBDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBTSW9uUG9wb3Zlck1vZHVsZSxcclxuICAgIFJvdXRlckxpbmtXaXRoSHJlZixcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgc2VsZWN0b3I6ICdkcmF3ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RyYXdlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29tcG9uZW50IHtcclxuXHJcbiAgVHJhbnNsYXRpb25Nb2R1bGU6IGFueSA9IHtcclxuICAgIFBlcm1pc3NhbyAgICAgOiAnRW50aXRpZXMuUGVybWlzc2FvLicsXHJcbiAgICBQZXJtaXNzYW9HcnVwbzogJ0VudGl0aWVzLlBlcm1pc3Nhb0dydXBvLicsXHJcbiAgICBTZW1SZXN1bHRhZG8gIDogJ01lc3NhZ2VzLlNlbVJlc3VsdGFkbydcclxuICB9O1xyXG5cclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBsc3RNZW51OiBJbnB1dFNpZ25hbDxNZW51W10+ID0gaW5wdXQ8TWVudVtdPigpO1xyXG4gIGxzdEZsYXR0ZW5NZW51OiBTaWduYWw8TWVudVtdPiA9IGNvbXB1dGVkKCgpID0+IHsgcmV0dXJuIEZsYXR0ZW5NZW51cyh0aGlzLmxzdE1lbnUoKSkgfSk7XHJcblxyXG4gIEBJbnB1dCgpIGNvbGFwc2VkOiBib29sZWFuID0gZmFsc2U7ICBcclxuICBAT3V0cHV0KCkgY29sYXBzZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47ICBcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZVRyYW5zbGF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZVxyXG4gICkgeyBcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIC8vSGFuZGxlIE1lbnUgVGl0bGVcclxuICAgICAgY29uc3QgbHN0RmxhdCA9IHRoaXMubHN0RmxhdHRlbk1lbnUoKTtcclxuICAgICAgY29uc3QgY3VycmVudE1lbnUgPSBsc3RGbGF0LmZpbmQocCA9PiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5jbHVkZXMoJy8nICsgcC5yb3V0ZSkpO1xyXG4gICAgICBjb25zdCBncm91cDogTWVudSB8IG51bGwgPSBGaW5kTWVudVBhcmVudCh0aGlzLmxzdE1lbnUoKSwgY3VycmVudE1lbnUpO1xyXG4gICAgICBpZihncm91cCl7XHJcbiAgICAgICAgdGhpcy5DdXJyZW50R3JvdXBBY3RpdmUgPSBncm91cDtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuQ3VycmVudEdyb3VwQWN0aXZlID0gdGhpcy5sc3RNZW51KClbMF07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBDdXJyZW50R3JvdXBBY3RpdmU6IE1lbnUgPSBudWxsO1xyXG5cclxuICBUb2dnbGVDb2xsYXBzZWQoKXtcclxuICAgIHRoaXMuY29sYXBzZWRDaGFuZ2UuZW1pdCghdGhpcy5fZW50ZXJDb2xhcHNlZCk7XHJcbiAgICB0aGlzLl9lbnRlckNvbGFwc2VkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBfZW50ZXJDb2xhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9uTW91c2VFbnRlcigpe1xyXG4gICAgaWYodGhpcy5jb2xhcHNlZCl7XHJcbiAgICAgIHRoaXMuX2VudGVyQ29sYXBzZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbGFwc2VkQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvbk1vdXNlTGVhdmUoKXtcclxuICAgIGlmKHRoaXMuX2VudGVyQ29sYXBzZWQpe1xyXG4gICAgICB0aGlzLl9lbnRlckNvbGFwc2VkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29sYXBzZWRDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEhhbmRsZU5hdihpdGVtOiBNZW51IHwgYW55LCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KXtcclxuICAgICAgd2luZG93Lm9wZW4od2luZG93Lm9yaWdpbiArICcvJyArIGl0ZW0ucm91dGUsICdfYmxhbmsnKTtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5TZXRUaXRsZShpdGVtKTtcclxuICAgIGNvbnN0IHZHcm91cDogTWVudSB8IG51bGwgPSBGaW5kTWVudVBhcmVudCh0aGlzLmxzdE1lbnUoKSwgaXRlbSk7XHJcbiAgICBpZih2R3JvdXApe1xyXG4gICAgICB0aGlzLkN1cnJlbnRHcm91cEFjdGl2ZSA9IHZHcm91cDtcclxuICAgIH1cclxuICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoJy8nICsgaXRlbS5yb3V0ZSk7XHJcbiAgfVxyXG4gIFNldFRpdGxlKGl0ZW06IE1lbnUpe1xyXG4gICAgdGhpcy5nZW5lcmljU2VydmljZS5TZXRUaXRsZShpdGVtLnRpdGxlKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaDogV3JpdGFibGVTaWduYWw8c3RyaW5nPiA9IHNpZ25hbDxzdHJpbmc+KFwiXCIpO1xyXG4gIGxzdE1lbnVGaWx0ZXJlZDogU2lnbmFsPE1lbnVbXT4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBzdHIgPSB0aGlzLnNlYXJjaCgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBsc3RTMSA9IHRoaXMubHN0TWVudSgpLm1hcChwID0+IHtcclxuICAgICAgcmV0dXJuIG5ldyBNZW51KHAudHlwZSwgcC50aXRsZSwgcC5pY29uLCBwLmxzdE1lbnUuZmlsdGVyKHggPT4geC50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHN0cikpLCBwLnJvdXRlKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgbHN0UzIgPSBsc3RTMS5maWx0ZXIocCA9PiBwLmxzdE1lbnUubGVuZ3RoID4gMCk7XHJcbiAgICByZXR1cm4gbHN0UzI7XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGbGF0dGVucyBhIGhpZXJhcmNoaWNhbCBNZW51W10gc3RydWN0dXJlIGludG8gYSBzaW5nbGUgYXJyYXlcclxuICogY29udGFpbmluZyBhbGwgTWVudSBpdGVtcyBmcm9tIHRoZSBvcmlnaW5hbCBhcnJheSBhbmQgYWxsIG5lc3RlZCBpdGVtc1xyXG4gKiBAcGFyYW0gbWVudXMgVGhlIGFycmF5IG9mIE1lbnUgaXRlbXMgdG8gZmxhdHRlblxyXG4gKiBAcmV0dXJucyBBIGZsYXR0ZW5lZCBhcnJheSBjb250YWluaW5nIGFsbCBNZW51IGl0ZW1zXHJcbiAqL1xyXG5mdW5jdGlvbiBGbGF0dGVuTWVudXMobWVudXM6IE1lbnVbXSk6IE1lbnVbXSB7XHJcbiAgY29uc3QgcmVzdWx0OiBNZW51W10gPSBbXTtcclxuICBcclxuICBmdW5jdGlvbiBhZGRNZW51SXRlbXMoaXRlbXM6IE1lbnVbXSkge1xyXG4gICAgZm9yIChjb25zdCBtZW51IG9mIGl0ZW1zKSB7XHJcbiAgICAgIC8vIEFkZCBjdXJyZW50IG1lbnUgdG8gcmVzdWx0XHJcbiAgICAgIHJlc3VsdC5wdXNoKG1lbnUpO1xyXG4gICAgICBcclxuICAgICAgLy8gUHJvY2VzcyBuZXN0ZWQgbWVudXMgaWYgdGhleSBleGlzdFxyXG4gICAgICBpZiAobWVudS5sc3RNZW51ICYmIG1lbnUubHN0TWVudS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgYWRkTWVudUl0ZW1zKG1lbnUubHN0TWVudSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgYWRkTWVudUl0ZW1zKG1lbnVzKTtcclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBGaW5kTWVudVBhcmVudChtZW51czogTWVudVtdLCB0YXJnZXRNZW51OiBNZW51KTogTWVudSB8IG51bGwge1xyXG4gIGZvciAoY29uc3QgbWVudSBvZiBtZW51cykge1xyXG4gICAgLy8gQ2hlY2sgaWYgY3VycmVudCBtZW51IGhhcyB0aGUgdGFyZ2V0IGluIGl0cyBkaXJlY3QgY2hpbGRyZW5cclxuICAgIGlmIChtZW51LmxzdE1lbnUgJiYgbWVudS5sc3RNZW51LnNvbWUobSA9PiBtID09PSB0YXJnZXRNZW51KSkge1xyXG4gICAgICByZXR1cm4gbWVudTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gU2VhcmNoIGRlZXBlciBpbiB0aGUgaGllcmFyY2h5XHJcbiAgICBpZiAobWVudS5sc3RNZW51ICYmIG1lbnUubHN0TWVudS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IEZpbmRNZW51UGFyZW50KG1lbnUubHN0TWVudSwgdGFyZ2V0TWVudSk7XHJcbiAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICByZXR1cm4gcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIHJldHVybiBudWxsO1xyXG59IiwiPGRpdiBjbGFzcz1cImFic29sdXRlIGxlZnQtMCB0b3AtMCBoLWZ1bGwgYmctbGlnaHQgc2l6ZS1mdWxsIGZsZXggZmxleC1jb2wgcC0yICFwci0wIHctWzE5cmVtXSBvdmVyZmxvdy1oaWRkZW5cIiAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCI+XHJcbiAgPCEtLSBbIEhlYWRlciBdIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJzaHJpbmstMCB3LWZ1bGwgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcbiAgICA8ZGl2ICNhbmNob3JcclxuICAgICAgKGNsaWNrKT1cIlRvZ2dsZUNvbGxhcHNlZCgpXCIgXHJcbiAgICAgIGNsYXNzPVwidG9nZ2xlIHNpemUtMTAgYXNwZWN0LXNxdWFyZSBzaHJpbmstMCByb3VuZGVkLXhsIGJnLWluYWN0aXZlIGdyYWRpZW50LWJhY2tncm91bmQgbWVudVwiXHJcbiAgICA+XHJcbiAgICAgIDxpb24taWNvbiBuYW1lPVwibWVudVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxpb24tYnV0dG9uIGNsYXNzPVwic2l6ZS0xMCBzaHJpbmstMCBhc3BlY3Qtc3F1YXJlXCIgc2l6ZT1cInNtYWxsXCIgY29sb3I9XCJtZWRpdW1cIiAoY2xpY2spPVwiVG9nZ2xlQ29sbGFwc2VkKClcIj5cclxuICAgICAgPGlvbi1pY29uIG5hbWU9XCJtZW51XCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICA8L2lvbi1idXR0b24+IC0tPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgc2hyaW5rIGZsZXggcGwtMiBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCBtYXgtaC0xMCBmbGV4IGZsZXgtd3JhcCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICBAaWYgKCFyZWYuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJzaXplLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZGVmYXVsdC10cmFuc2l0aW9uIHotMFwiIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS0wIC10cmFuc2xhdGUteC0xLzIgcG9pbnRlci1ldmVudHMtbm9uZSc6IGNvbGFwc2VkIH1cIj4gXHJcbiAgICAgICAgICAgIHt7dGl0bGV9fVxyXG4gICAgICAgICAgPC9pb24tdGV4dD5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGRpdiAjcmVmIGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNocmluay0wXCI+XHJcbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1sb2dvXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBbIENvbnRlbnQgXSAtLT5cclxuICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIHNocmluayBmbGV4IGZsZXgtY29sIHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgPGxvYWRpbmcgW3R5cGVdPVwiM1wiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiB0ZXh0PVwiXCI+PC9sb2FkaW5nPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCBzaHJpbmsgZmxleCBnYXAtMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctMTIgcHItMiBweS0yIG1hc2steSBzaHJpbmstMCBmbGV4IGZsZXgtY29sIGdhcC0yIG92ZXJmbG93LXktYXV0byBvdmVyZmxvdy14LWhpZGRlbiBib3JkZXItZGFzaGVkIGJvcmRlci1yIGJvcmRlci1yLW1lZGl1bS8zMFwiPlxyXG4gICAgICAgIDxkaXYgI3NlYXJjaEFuY2hvciAoY2xpY2spPVwibW9kYWwucHJlc2VudCgpXCIgY2xhc3M9XCJzZWFyY2gtYnV0dG9uIHNpemUtMTAgYXNwZWN0LXNxdWFyZSBzaHJpbmstMCByb3VuZGVkLXhsIGJnLWluYWN0aXZlIGdyYWRpZW50LWJhY2tncm91bmQgbWVudVwiPlxyXG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJzZWFyY2hcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBsc3RNZW51KCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5iZy1hY3RpdmVdPVwiQ3VycmVudEdyb3VwQWN0aXZlID09IGl0ZW1cIlxyXG4gICAgICAgICAgICAgICNhbmNob3IgKG1vdXNlZW50ZXIpPVwicG9wb3Zlci5wcmVzZW50KCRldmVudClcIiBcclxuICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJwb3BvdmVyLmRpc21pc3MoKVwiIFxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJDdXJyZW50R3JvdXBBY3RpdmUgPSBpdGVtXCIgXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwIGFzcGVjdC1zcXVhcmUgc2hyaW5rLTAgcm91bmRlZC14bCBiZy1pbmFjdGl2ZSBncmFkaWVudC1iYWNrZ3JvdW5kIG1lbnVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c2lvbi1wb3BvdmVyICNwb3BvdmVyIFthbmNob3JdPVwiYW5jaG9yXCIgW2ZsaXBdPVwiZmFsc2VcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIGZpbGw9XCJzb2xpZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgICAgICAgIHt7dXNlVHJhbnNsYXRpb24gPyAoVHJhbnNsYXRpb25Nb2R1bGUuUGVybWlzc2FvR3J1cG8gKyBpdGVtLmlkIHwgdHJhbnNsYXRlKSA6IGl0ZW0udGl0bGV9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3Npb24tcG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIHNocmluayByZWxhdGl2ZVwiPlxyXG4gICAgICAgIEBmb3IgKG1Hcm91cCBvZiBsc3RNZW51KCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIGxlZnQtMCBzaXplLWZ1bGwgcHktMiBkZWZhdWx0LXRyYW5zaXRpb24gb3BhY2l0eS0wIHRyYW5zbGF0ZS14LWZ1bGwgei0wIG92ZXJmbG93LWhpZGRlblwiIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS0xMDAgIXRyYW5zbGF0ZS14LTAnOiBDdXJyZW50R3JvdXBBY3RpdmUgPT0gbUdyb3VwfVwiPlxyXG4gICAgICAgICAgICA8ZHJhd2VyLWdyb3VwIFtNZW51R3JvdXBdPVwibUdyb3VwXCIgW3VzZVRyYW5zbGF0aW9uXT1cInVzZVRyYW5zbGF0aW9uXCIgW2NvbGFwc2VkXT1cImNvbGFwc2VkXCI+PC9kcmF3ZXItZ3JvdXA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gWyBFbmQgXSAtLT5cclxuICA8ZGl2IGNsYXNzPVwic2hyaW5rLTAgdy1mdWxsXCI+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1kcmF3ZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxpb24tbW9kYWwgI21vZGFsIFtrZWVwQ29udGVudHNNb3VudGVkXT1cInRydWVcIiAob25XaWxsRGlzbWlzcyk9XCJzZWFyY2guc2V0KCcnKVwiPlxyXG4gIDxuZy10ZW1wbGF0ZT5cclxuICAgIDxpb24tY29udGVudD5cclxuICAgICAgPGlvbi1jYXJkIGNsYXNzPVwic2l6ZS1mdWxsIG0tMCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICA8aW9uLWNhcmQtY29udGVudCBjbGFzcz1cInNpemUtZnVsbCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiBwLTBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaHJpbmstMCB3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGlvbi1zZWFyY2hiYXIgY2xhc3M9XCJwLTAgIXBsLTIgIXB5LTJcIiBbbmdNb2RlbF09XCJ0aGlzLnNlYXJjaCgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwidGhpcy5zZWFyY2guc2V0KCRldmVudClcIiBbZGVib3VuY2VdPVwiMjAwXCI+PC9pb24tc2VhcmNoYmFyPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaXplPVwic21hbGxcIiBmaWxsPVwiY2xlYXJcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgZmxleCBmbGV4LWNvbCBzaHJpbmsgZ2FwLTIgb3ZlcmZsb3cteS1hdXRvIHAtMiBtYXNrLXlcIj5cclxuICAgICAgICAgICAgQGZvciAodkdyb3VwIG9mIGxzdE1lbnVGaWx0ZXJlZCgpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICA8aW9uLWNhcmQgY2xhc3M9XCJtLTAgc2hyaW5rLTBcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwicC0wIGdyYWRpZW50LWJhY2tncm91bmQgYmctaW5hY3RpdmUgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMCBmbGV4IGl0ZW1zLWNlbnRlciAhanVzdGlmeS1zdGFydCBnYXAtMiB0ZXh0LWRhcmsgc2hyaW5rLTAgcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInZHcm91cC5pY29uXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3VzZVRyYW5zbGF0aW9uID8gKFRyYW5zbGF0aW9uTW9kdWxlLlBlcm1pc3Nhb0dydXBvICsgdkdyb3VwLmlkIHwgdHJhbnNsYXRlKSA6IHZHcm91cC50aXRsZX19IFxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICBAZm9yICh2TWVudSBvZiB2R3JvdXAubHN0TWVudTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJIYW5kbGVOYXYodk1lbnUsICRldmVudCk7IG1vZGFsLmRpc21pc3MoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYmctYWN0aXZlXT1cInJvdXRlci5pc0FjdGl2ZSgnLycgKyB2TWVudS5yb3V0ZSwgZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyICFqdXN0aWZ5LXN0YXJ0IGdhcC0yIHRleHQtZGFyayBzaHJpbmstMCAhcGwtOCBwLTEuNSBib3JkZXItdCBib3JkZXItdC1tZWRpdW0vMzAgbWVudS1zZWFyY2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJ2TWVudS5pY29uXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t1c2VUcmFuc2xhdGlvbiA/IChUcmFuc2xhdGlvbk1vZHVsZS5QZXJtaXNzYW8gKyB2TWVudS5pZCB8IHRyYW5zbGF0ZSkgOiB2TWVudS50aXRsZX19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBpZiAobHN0TWVudUZpbHRlcmVkKCkubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxyXG4gICAgICAgICAgICAgICAge3t1c2VUcmFuc2xhdGlvbiA/IChUcmFuc2xhdGlvbk1vZHVsZS5TZW1SZXN1bHRhZG8gfCB0cmFuc2xhdGUpIDogJ1NlbSByZXN1bHRhZG9zIGVuY29udHJhZG9zJ319XHJcbiAgICAgICAgICAgICAgPC9pb24tdGV4dD5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgICA8L2lvbi1jYXJkPlxyXG4gICAgPC9pb24tY29udGVudD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2lvbi1tb2RhbD4iXX0=