info-library 2.16.0-beta → 3.0.0-beta

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 (79) hide show
  1. package/controls/autocomplete/autocomplete.component.d.ts +2 -1
  2. package/controls/date/date.component.d.ts +2 -1
  3. package/controls/date-month/date-month.component.d.ts +2 -1
  4. package/controls/grid/grid.component.d.ts +5 -5
  5. package/controls/input/input.component.d.ts +13 -3
  6. package/controls/multi-select/multi-select.component.d.ts +3 -1
  7. package/controls/select/select.component.d.ts +2 -1
  8. package/directives/unmask.directive.d.ts +2 -1
  9. package/esm2022/controls/alert/alert.component.mjs +8 -10
  10. package/esm2022/controls/autocomplete/autocomplete.component.mjs +33 -26
  11. package/esm2022/controls/big-checkbox/big-checkbox.component.mjs +27 -25
  12. package/esm2022/controls/card/card.component.mjs +12 -6
  13. package/esm2022/controls/card-menu/card-menu.component.mjs +14 -16
  14. package/esm2022/controls/checkbox/checkbox.component.mjs +13 -13
  15. package/esm2022/controls/chips/chips.component.mjs +12 -11
  16. package/esm2022/controls/date/date.component.mjs +64 -32
  17. package/esm2022/controls/date-month/date-month.component.mjs +64 -31
  18. package/esm2022/controls/editor/editor.component.mjs +35 -31
  19. package/esm2022/controls/grid/grid.component.mjs +529 -511
  20. package/esm2022/controls/input/input.component.mjs +146 -71
  21. package/esm2022/controls/input-list/input-list.component.mjs +16 -15
  22. package/esm2022/controls/list-checkbox/list-checkbox.component.mjs +16 -12
  23. package/esm2022/controls/message/message.component.mjs +9 -11
  24. package/esm2022/controls/multi-select/multi-select.component.mjs +35 -22
  25. package/esm2022/controls/paginator/paginator.component.mjs +15 -16
  26. package/esm2022/controls/select/select.component.mjs +32 -23
  27. package/esm2022/controls/timeline/timeline.component.mjs +15 -16
  28. package/esm2022/directives/mask.directive.mjs +17 -8
  29. package/esm2022/directives/unmask.directive.mjs +14 -7
  30. package/esm2022/info-library.module.mjs +10 -5
  31. package/esm2022/layouts/dialog/dialog.component.mjs +10 -6
  32. package/esm2022/layouts/filter/filter.component.mjs +179 -0
  33. package/esm2022/layouts/loading/loading.component.mjs +7 -9
  34. package/esm2022/layouts/main/main.component.mjs +101 -54
  35. package/esm2022/layouts/modal/modal.component.mjs +37 -22
  36. package/esm2022/layouts/pagebar/pagebar.component.mjs +125 -97
  37. package/esm2022/layouts/sidebar/sidebar.component.mjs +152 -100
  38. package/esm2022/layouts/topbar/topbar.component.mjs +417 -253
  39. package/esm2022/layouts/topmenu/topmenu.component.mjs +20 -12
  40. package/esm2022/model/app-config.model.mjs +12 -12
  41. package/esm2022/model/data-access.model.mjs +10 -8
  42. package/esm2022/model/dialog-result.model.mjs +3 -2
  43. package/esm2022/model/dialog.model.mjs +13 -14
  44. package/esm2022/model/form-prop.model.mjs +8 -6
  45. package/esm2022/model/grid-button.model.mjs +12 -7
  46. package/esm2022/model/last-search.model.mjs +5 -7
  47. package/esm2022/model/login.model.mjs +4 -2
  48. package/esm2022/model/method-grid-button.model.mjs +4 -2
  49. package/esm2022/model/notification.model.mjs +9 -5
  50. package/esm2022/model/pagebar-buttons.model.mjs +6 -6
  51. package/esm2022/model/permission.model.mjs +4 -1
  52. package/esm2022/model/platform.model.mjs +13 -14
  53. package/esm2022/model/session.model.mjs +25 -6
  54. package/esm2022/pipe/mask.pipe.mjs +10 -6
  55. package/esm2022/pipe/translate.pipe.mjs +4 -3
  56. package/esm2022/public_api.mjs +2 -1
  57. package/esm2022/service/authentication.service.mjs +89 -36
  58. package/esm2022/service/configuration.service.mjs +41 -10
  59. package/esm2022/service/data.service.mjs +38 -21
  60. package/esm2022/service/theme.service.mjs +16 -6
  61. package/esm2022/service/translate.service.mjs +9 -5
  62. package/esm2022/utils/utilities.mjs +52 -5
  63. package/fesm2022/info-library.mjs +2551 -1649
  64. package/fesm2022/info-library.mjs.map +1 -1
  65. package/info-library-3.0.0-beta.tgz +0 -0
  66. package/info-library.module.d.ts +32 -31
  67. package/layouts/filter/filter.component.d.ts +24 -0
  68. package/layouts/main/main.component.d.ts +4 -0
  69. package/layouts/modal/modal.component.d.ts +1 -0
  70. package/layouts/sidebar/sidebar.component.d.ts +1 -1
  71. package/layouts/topbar/topbar.component.d.ts +4 -1
  72. package/model/app-config.model.d.ts +2 -0
  73. package/model/session.model.d.ts +5 -0
  74. package/package.json +1 -1
  75. package/public_api.d.ts +1 -0
  76. package/service/authentication.service.d.ts +4 -2
  77. package/service/configuration.service.d.ts +4 -1
  78. package/service/data.service.d.ts +2 -0
  79. package/utils/utilities.d.ts +11 -0
@@ -18,6 +18,7 @@ export declare class InfoAutoCompleteComponent implements OnInit, ControlValueAc
18
18
  maxlist: number;
19
19
  startwith: boolean;
20
20
  minchar: number;
21
+ notoken: boolean;
21
22
  onselecteditem: EventEmitter<any>;
22
23
  options: any[];
23
24
  selectedValue: any;
@@ -47,5 +48,5 @@ export declare class InfoAutoCompleteComponent implements OnInit, ControlValueAc
47
48
  registerOnTouched(fn: any): void;
48
49
  setDisabledState?(isDisabled: boolean): void;
49
50
  static ɵfac: i0.ɵɵFactoryDeclaration<InfoAutoCompleteComponent, never>;
50
- static ɵcmp: i0.ɵɵComponentDeclaration<InfoAutoCompleteComponent, "info-autocomplete", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "selectfirst": { "alias": "selectfirst"; "required": false; }; "disablednoregisters": { "alias": "disablednoregisters"; "required": false; }; "getdataonchange": { "alias": "getdataonchange"; "required": false; }; "getdataonchangetime": { "alias": "getdataonchangetime"; "required": false; }; "api": { "alias": "api"; "required": false; }; "method": { "alias": "method"; "required": false; }; "maxlist": { "alias": "maxlist"; "required": false; }; "startwith": { "alias": "startwith"; "required": false; }; "minchar": { "alias": "minchar"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "params": { "alias": "params"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "onselecteditem": "onselecteditem"; }, never, never, false, never>;
51
+ static ɵcmp: i0.ɵɵComponentDeclaration<InfoAutoCompleteComponent, "info-autocomplete", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "selectfirst": { "alias": "selectfirst"; "required": false; }; "disablednoregisters": { "alias": "disablednoregisters"; "required": false; }; "getdataonchange": { "alias": "getdataonchange"; "required": false; }; "getdataonchangetime": { "alias": "getdataonchangetime"; "required": false; }; "api": { "alias": "api"; "required": false; }; "method": { "alias": "method"; "required": false; }; "maxlist": { "alias": "maxlist"; "required": false; }; "startwith": { "alias": "startwith"; "required": false; }; "minchar": { "alias": "minchar"; "required": false; }; "notoken": { "alias": "notoken"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "params": { "alias": "params"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "onselecteditem": "onselecteditem"; }, never, never, false, never>;
51
52
  }
@@ -17,6 +17,7 @@ export declare class InfoDateComponent implements ControlValueAccessor {
17
17
  required: boolean;
18
18
  minDate: Date;
19
19
  maxDate: Date;
20
+ button: boolean;
20
21
  datefilter: any;
21
22
  dateclass: any;
22
23
  input: any;
@@ -33,5 +34,5 @@ export declare class InfoDateComponent implements ControlValueAccessor {
33
34
  setDisabledState?(isDisabled: boolean): void;
34
35
  onKeyPress(e: any): void;
35
36
  static ɵfac: i0.ɵɵFactoryDeclaration<InfoDateComponent, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<InfoDateComponent, "info-date", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "datefilter": { "alias": "datefilter"; "required": false; }; "dateclass": { "alias": "dateclass"; "required": false; }; }, {}, never, never, false, never>;
37
+ static ɵcmp: i0.ɵɵComponentDeclaration<InfoDateComponent, "info-date", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "button": { "alias": "button"; "required": false; }; "datefilter": { "alias": "datefilter"; "required": false; }; "dateclass": { "alias": "dateclass"; "required": false; }; }, {}, never, never, false, never>;
37
38
  }
@@ -19,6 +19,7 @@ export declare class InfoDateMonthComponent implements ControlValueAccessor {
19
19
  required: boolean;
20
20
  changeonlyonmonth: boolean;
21
21
  minDate: Date;
22
+ button: boolean;
22
23
  input: any;
23
24
  dateValue: any;
24
25
  dateMask: any;
@@ -35,5 +36,5 @@ export declare class InfoDateMonthComponent implements ControlValueAccessor {
35
36
  chosenMonthHandler(value: Moment, datepicker: MatDatepicker<Moment>): void;
36
37
  onKeyPress(e: any): void;
37
38
  static ɵfac: i0.ɵɵFactoryDeclaration<InfoDateMonthComponent, never>;
38
- static ɵcmp: i0.ɵɵComponentDeclaration<InfoDateMonthComponent, "info-date-month", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "changeonlyonmonth": { "alias": "changeonlyonmonth"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; }, {}, never, never, false, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<InfoDateMonthComponent, "info-date-month", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "changeonlyonmonth": { "alias": "changeonlyonmonth"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "button": { "alias": "button"; "required": false; }; }, {}, never, never, false, never>;
39
40
  }
@@ -139,11 +139,11 @@ export declare class InfoGridComponent implements OnInit, AfterViewInit {
139
139
  search(): void;
140
140
  add(): void;
141
141
  detail(model: any): void;
142
- mostrarMais(linha: any, coluna: any): void;
143
- access(model: any): void;
144
- view(model: any): void;
145
- edit(model: any): void;
146
- delete(model: any): void;
142
+ mostrarMais(linha: any, coluna: any, e: Event): void;
143
+ access(model: any, e: Event): void;
144
+ view(model: any, e: Event): void;
145
+ edit(model: any, e: Event): void;
146
+ delete(model: any, e: Event): void;
147
147
  customizeTable(): void;
148
148
  fillIcons(): void;
149
149
  info(value: any): void;
@@ -1,7 +1,9 @@
1
- import { OnInit, EventEmitter } from "@angular/core";
2
- import { ControlValueAccessor } from "@angular/forms";
1
+ import { OnInit, EventEmitter, Injector } from "@angular/core";
2
+ import { ControlValueAccessor, AbstractControl } from "@angular/forms";
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class InfoInputComponent implements OnInit, ControlValueAccessor {
5
+ private injector;
6
+ private control;
5
7
  placeholder: string;
6
8
  disabled: boolean;
7
9
  readonly: boolean;
@@ -15,17 +17,25 @@ export declare class InfoInputComponent implements OnInit, ControlValueAccessor
15
17
  min: number;
16
18
  max: number;
17
19
  step: number;
20
+ validate: boolean;
21
+ bluronlychange: boolean;
18
22
  onblur: EventEmitter<any>;
19
23
  maskOptions: any;
20
24
  value: string;
25
+ valueOnEnter: any;
21
26
  customMask: string;
22
27
  onChange: any;
23
28
  onTouched: any;
24
29
  passwordMode: boolean;
30
+ errorMessage: string;
31
+ formControl: AbstractControl;
32
+ constructor(injector: Injector);
33
+ ngAfterViewInit(): void;
25
34
  ngOnInit(): void;
26
35
  private methodIsmask;
27
36
  get ismask(): string;
28
37
  set ismask(value: string);
38
+ validarCampo(): void;
29
39
  onBlur(): void;
30
40
  onChangeValue(): void;
31
41
  writeValue(modelValue: any): void;
@@ -33,5 +43,5 @@ export declare class InfoInputComponent implements OnInit, ControlValueAccessor
33
43
  registerOnTouched(fn: any): void;
34
44
  setDisabledState?(isDisabled: boolean): void;
35
45
  static ɵfac: i0.ɵɵFactoryDeclaration<InfoInputComponent, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<InfoInputComponent, "info-input", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "type": { "alias": "type"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "iconPrefix": { "alias": "iconPrefix"; "required": false; }; "iconSuffix": { "alias": "iconSuffix"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "ismask": { "alias": "ismask"; "required": false; }; }, { "onblur": "onblur"; }, never, never, false, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<InfoInputComponent, "info-input", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "type": { "alias": "type"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "iconPrefix": { "alias": "iconPrefix"; "required": false; }; "iconSuffix": { "alias": "iconSuffix"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "validate": { "alias": "validate"; "required": false; }; "bluronlychange": { "alias": "bluronlychange"; "required": false; }; "ismask": { "alias": "ismask"; "required": false; }; }, { "onblur": "onblur"; }, never, never, false, never>;
37
47
  }
@@ -13,6 +13,8 @@ export declare class InfoMultiSelectComponent implements OnInit, ControlValueAcc
13
13
  method: string;
14
14
  loading: boolean;
15
15
  disabled: boolean;
16
+ notranslate: any;
17
+ notoken: boolean;
16
18
  onselecteditem: EventEmitter<any>;
17
19
  selectedValues: any[];
18
20
  onChange: any;
@@ -33,5 +35,5 @@ export declare class InfoMultiSelectComponent implements OnInit, ControlValueAcc
33
35
  registerOnTouched(fn: any): void;
34
36
  setDisabledState?(isDisabled: boolean): void;
35
37
  static ɵfac: i0.ɵɵFactoryDeclaration<InfoMultiSelectComponent, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<InfoMultiSelectComponent, "info-multi-select", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "selectfirst": { "alias": "selectfirst"; "required": false; }; "disablednoregisters": { "alias": "disablednoregisters"; "required": false; }; "api": { "alias": "api"; "required": false; }; "method": { "alias": "method"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "params": { "alias": "params"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "onselecteditem": "onselecteditem"; }, never, never, false, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<InfoMultiSelectComponent, "info-multi-select", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "selectfirst": { "alias": "selectfirst"; "required": false; }; "disablednoregisters": { "alias": "disablednoregisters"; "required": false; }; "api": { "alias": "api"; "required": false; }; "method": { "alias": "method"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "notranslate": { "alias": "notranslate"; "required": false; }; "notoken": { "alias": "notoken"; "required": false; }; "params": { "alias": "params"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "onselecteditem": "onselecteditem"; }, never, never, false, never>;
37
39
  }
@@ -16,6 +16,7 @@ export declare class InfoSelectComponent implements OnInit, ControlValueAccessor
16
16
  loading: boolean;
17
17
  disabled: boolean;
18
18
  notranslate: any;
19
+ notoken: boolean;
19
20
  onselecteditem: EventEmitter<any>;
20
21
  selectedValue: any;
21
22
  translatValue: boolean;
@@ -37,5 +38,5 @@ export declare class InfoSelectComponent implements OnInit, ControlValueAccessor
37
38
  registerOnTouched(fn: any): void;
38
39
  setDisabledState?(isDisabled: boolean): void;
39
40
  static ɵfac: i0.ɵɵFactoryDeclaration<InfoSelectComponent, never>;
40
- static ɵcmp: i0.ɵɵComponentDeclaration<InfoSelectComponent, "info-select", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "selectfirst": { "alias": "selectfirst"; "required": false; }; "disablednoregisters": { "alias": "disablednoregisters"; "required": false; }; "api": { "alias": "api"; "required": false; }; "method": { "alias": "method"; "required": false; }; "blank": { "alias": "blank"; "required": false; }; "blankItem": { "alias": "blankItem"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "notranslate": { "alias": "notranslate"; "required": false; }; "params": { "alias": "params"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "onselecteditem": "onselecteditem"; }, never, never, false, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<InfoSelectComponent, "info-select", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "selectfirst": { "alias": "selectfirst"; "required": false; }; "disablednoregisters": { "alias": "disablednoregisters"; "required": false; }; "api": { "alias": "api"; "required": false; }; "method": { "alias": "method"; "required": false; }; "blank": { "alias": "blank"; "required": false; }; "blankItem": { "alias": "blankItem"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "notranslate": { "alias": "notranslate"; "required": false; }; "notoken": { "alias": "notoken"; "required": false; }; "params": { "alias": "params"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "onselecteditem": "onselecteditem"; }, never, never, false, never>;
41
42
  }
@@ -4,8 +4,9 @@ import * as i0 from "@angular/core";
4
4
  export declare class InfoUnmaskDirective {
5
5
  private elementRef;
6
6
  private model;
7
+ maskType: string;
7
8
  constructor(elementRef: ElementRef, model: NgControl);
8
9
  inputChange(): void;
9
10
  static ɵfac: i0.ɵɵFactoryDeclaration<InfoUnmaskDirective, never>;
10
- static ɵdir: i0.ɵɵDirectiveDeclaration<InfoUnmaskDirective, "[unmask]", never, {}, {}, never, never, false, never>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<InfoUnmaskDirective, "[unmask]", never, { "maskType": { "alias": "unmask"; "required": false; }; }, {}, never, never, false, never>;
11
12
  }
@@ -5,7 +5,7 @@ import * as i2 from "@angular/material/icon";
5
5
  import * as i3 from "../../pipe/translate.pipe";
6
6
  function InfoAlertComponent_div_0_li_8_Template(rf, ctx) { if (rf & 1) {
7
7
  i0.ɵɵelementStart(0, "li")(1, "mat-icon");
8
- i0.ɵɵtext(2, "error_outline");
8
+ i0.ɵɵtext(2, "error");
9
9
  i0.ɵɵelementEnd();
10
10
  i0.ɵɵelement(3, "label", 6);
11
11
  i0.ɵɵpipe(4, "translate");
@@ -40,19 +40,17 @@ function InfoAlertComponent_div_0_Template(rf, ctx) { if (rf & 1) {
40
40
  const _c0 = function () { return []; };
41
41
  const _c1 = ["*"];
42
42
  export class InfoAlertComponent {
43
- constructor() {
44
- this.messages = [];
45
- }
43
+ messages = [];
46
44
  onClose() {
47
45
  this.messages = [];
48
46
  }
49
- /** @nocollapse */ static { this.ɵfac = function InfoAlertComponent_Factory(t) { return new (t || InfoAlertComponent)(); }; }
50
- /** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoAlertComponent, selectors: [["info-alert"]], inputs: { messages: "messages" }, ngContentSelectors: _c1, decls: 1, vars: 2, consts: [[4, "ngIf"], [1, "alert"], ["alert", ""], [4, "ngFor", "ngForOf"], [1, "close", 3, "click"], [1, "material-icons"], [3, "innerHTML"]], template: function InfoAlertComponent_Template(rf, ctx) { if (rf & 1) {
47
+ /** @nocollapse */ static ɵfac = function InfoAlertComponent_Factory(t) { return new (t || InfoAlertComponent)(); };
48
+ /** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoAlertComponent, selectors: [["info-alert"]], inputs: { messages: "messages" }, ngContentSelectors: _c1, decls: 1, vars: 2, consts: [[4, "ngIf"], [1, "alert"], ["alert", ""], [4, "ngFor", "ngForOf"], [1, "close", 3, "click"], [1, "material-icons"], [3, "innerHTML"]], template: function InfoAlertComponent_Template(rf, ctx) { if (rf & 1) {
51
49
  i0.ɵɵprojectionDef();
52
50
  i0.ɵɵtemplate(0, InfoAlertComponent_div_0_Template, 12, 4, "div", 0);
53
51
  } if (rf & 2) {
54
52
  i0.ɵɵproperty("ngIf", ctx.messages != i0.ɵɵpureFunction0(1, _c0) && ctx.messages.length > 0);
55
- } }, dependencies: [i1.NgForOf, i1.NgIf, i2.MatIcon, i3.InfoTranslatePipe], styles: ["[_nghost-%COMP%]{display:block;position:fixed;bottom:70px;right:30px;margin-left:280px;min-width:350px;z-index:100}[_nghost-%COMP%]:last-child{margin-bottom:0}[_nghost-%COMP%] .alert[_ngcontent-%COMP%]{box-shadow:0 5px 5px 2px #00000040;padding:1.0476190667rem 1.5714286rem;position:relative}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{text-align:center;padding-bottom:10px;margin:0 -20px 5px;border-bottom:solid 1px rgba(255,255,255,.1)}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{padding:0;margin:0;list-style:none}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{border-bottom:solid 1px rgba(255,255,255,.1);padding:7px 5px}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:last-child{border-bottom:none}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .close[_ngcontent-%COMP%]{color:#fff;font-size:20px;line-height:1;position:absolute;right:10px;top:15px;transition:background .2s ease-in-out,color .2s ease-in-out}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .close[_ngcontent-%COMP%]:hover{cursor:pointer;color:#ddd}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .close[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%]{color:inherit;font-size:inherit;margin:0;vertical-align:top}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .material-icons{color:main-color(A100);margin:0 1.5714286rem 0 0;vertical-align:top}"] }); }
53
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i2.MatIcon, i3.InfoTranslatePipe], styles: ["body[_ngcontent-%COMP%]{--ux-cor-hover: #F5F5F5;--ux-cor-hover-2: #eee;--ux-cor-hover-3: #fafafa;--ux-cor-hover-4: #e5e3ed;--ux-cor-hover-5: #f9f9f9;--ux-cor-bg: #adadad;--ux-cor-P: #fff;--ux-cor-A: #eeeef2;--ux-cor-X: #f5f5f5;--ux-cor-S: #666;--ux-cor-O: #ddd;--ux-cor-F: #222;--ux-cor-D: #ccdbb4;--ux-cor-linha: #CCCEDB;--ux-cor-btn-pri: #eeeef2;--ux-cor-btn-wrn: #BA5005;--ux-cor-btn-dis: #6a7282}[_nghost-%COMP%]{display:block;position:fixed;bottom:70px;right:30px;margin-left:280px;min-width:350px;z-index:100}[_nghost-%COMP%]:last-child{margin-bottom:0}[_nghost-%COMP%] .alert[_ngcontent-%COMP%]{box-shadow:0 5px 5px 2px #00000040;padding:1.0476190667rem 1.5714286rem;position:relative}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{text-align:center;padding-bottom:10px;margin:0 -20px 5px;border-bottom:solid 1px rgba(255,255,255,.1)}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{padding:0;margin:0;list-style:none}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{border-bottom:solid 1px rgba(255,255,255,.1);padding:7px 5px}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:last-child{border-bottom:none}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .close[_ngcontent-%COMP%]{color:#fff;font-size:20px;line-height:1;position:absolute;right:10px;top:15px;transition:background .2s ease-in-out,color .2s ease-in-out}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .close[_ngcontent-%COMP%]:hover{cursor:pointer;color:#ddd}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .close[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%]{color:inherit;font-size:inherit;margin:0;vertical-align:top}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .material-icons{color:main-color(A100);margin:0 1.5714286rem 0 0;vertical-align:top}"] });
56
54
  }
57
55
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoAlertComponent, [{
58
56
  type: Component,
@@ -62,13 +60,13 @@ export class InfoAlertComponent {
62
60
  <h5>{{ 'Atencao' | translate }}</h5>
63
61
  <ng-content></ng-content>
64
62
  <ul>
65
- <li *ngFor="let m of messages"><mat-icon>error_outline</mat-icon><label [innerHTML]="m | translate"></label></li>
63
+ <li *ngFor="let m of messages"><mat-icon>error</mat-icon><label [innerHTML]="m | translate"></label></li>
66
64
  </ul>
67
65
  <a class="close" (click)="onClose()"><i class="material-icons">clear</i></a>
68
66
  </div>
69
67
  </div>
70
- `, styles: [":host{display:block;position:fixed;bottom:70px;right:30px;margin-left:280px;min-width:350px;z-index:100}:host:last-child{margin-bottom:0}:host .alert{box-shadow:0 5px 5px 2px #00000040;padding:1.0476190667rem 1.5714286rem;position:relative}:host .alert h5{text-align:center;padding-bottom:10px;margin:0 -20px 5px;border-bottom:solid 1px rgba(255,255,255,.1)}:host .alert ul{padding:0;margin:0;list-style:none}:host .alert ul li{border-bottom:solid 1px rgba(255,255,255,.1);padding:7px 5px}:host .alert ul li:last-child{border-bottom:none}:host .alert .close{color:#fff;font-size:20px;line-height:1;position:absolute;right:10px;top:15px;transition:background .2s ease-in-out,color .2s ease-in-out}:host .alert .close:hover{cursor:pointer;color:#ddd}:host .alert .close .material-icons{color:inherit;font-size:inherit;margin:0;vertical-align:top}:host .alert ::ng-deep .material-icons{color:main-color(A100);margin:0 1.5714286rem 0 0;vertical-align:top}\n"] }]
68
+ `, styles: ["body{--ux-cor-hover: #F5F5F5;--ux-cor-hover-2: #eee;--ux-cor-hover-3: #fafafa;--ux-cor-hover-4: #e5e3ed;--ux-cor-hover-5: #f9f9f9;--ux-cor-bg: #adadad;--ux-cor-P: #fff;--ux-cor-A: #eeeef2;--ux-cor-X: #f5f5f5;--ux-cor-S: #666;--ux-cor-O: #ddd;--ux-cor-F: #222;--ux-cor-D: #ccdbb4;--ux-cor-linha: #CCCEDB;--ux-cor-btn-pri: #eeeef2;--ux-cor-btn-wrn: #BA5005;--ux-cor-btn-dis: #6a7282}:host{display:block;position:fixed;bottom:70px;right:30px;margin-left:280px;min-width:350px;z-index:100}:host:last-child{margin-bottom:0}:host .alert{box-shadow:0 5px 5px 2px #00000040;padding:1.0476190667rem 1.5714286rem;position:relative}:host .alert h5{text-align:center;padding-bottom:10px;margin:0 -20px 5px;border-bottom:solid 1px rgba(255,255,255,.1)}:host .alert ul{padding:0;margin:0;list-style:none}:host .alert ul li{border-bottom:solid 1px rgba(255,255,255,.1);padding:7px 5px}:host .alert ul li:last-child{border-bottom:none}:host .alert .close{color:#fff;font-size:20px;line-height:1;position:absolute;right:10px;top:15px;transition:background .2s ease-in-out,color .2s ease-in-out}:host .alert .close:hover{cursor:pointer;color:#ddd}:host .alert .close .material-icons{color:inherit;font-size:inherit;margin:0;vertical-align:top}:host .alert ::ng-deep .material-icons{color:main-color(A100);margin:0 1.5714286rem 0 0;vertical-align:top}\n"] }]
71
69
  }], null, { messages: [{
72
70
  type: Input
73
71
  }] }); })();
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy9jb250cm9scy9hbGVydC9hbGVydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztJQVU3QiwwQkFBK0IsZUFBQTtJQUFVLDZCQUFhO0lBQUEsaUJBQVc7SUFBQSwyQkFBMkM7O0lBQUEsaUJBQUs7OztJQUF6QyxlQUEyQjtJQUEzQix5RUFBMkI7Ozs7SUFML0csMkJBQW1ELGdCQUFBLFNBQUE7SUFFdkMsWUFBMkI7O0lBQUEsaUJBQUs7SUFDcEMsa0JBQXlCO0lBQ3pCLDBCQUFJO0lBQ0EsdUVBQWlIO0lBQ3JILGlCQUFLO0lBQ0wsNEJBQXFDO0lBQXBCLDBKQUFTLGVBQUEsZ0JBQVMsQ0FBQSxJQUFDO0lBQUMsNkJBQTBCO0lBQUEsc0JBQUs7SUFBQSxpQkFBSSxFQUFBLEVBQUEsRUFBQTs7O0lBTHBFLGVBQTJCO0lBQTNCLHFEQUEyQjtJQUdULGVBQVc7SUFBWCx5Q0FBVzs7OztBQVFqRCxNQUFNLE9BQU8sa0JBQWtCO0lBaEIvQjtRQWtCYSxhQUFRLEdBQWEsRUFBRSxDQUFDO0tBS3BDO0lBSEcsT0FBTztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7c0dBTlEsa0JBQWtCO21HQUFsQixrQkFBa0I7O1lBYnZCLG9FQVNNOztZQVRBLDRGQUEyQzs7O3VGQWE1QyxrQkFBa0I7Y0FoQjlCLFNBQVM7MkJBQ0ksWUFBWSxZQUNaOzs7Ozs7Ozs7OztLQVdUO2dCQUtRLFFBQVE7a0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLWFsZXJ0JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2VzICE9IFtdICYmIG1lc3NhZ2VzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0XCIgI2FsZXJ0ID5cclxuICAgICAgICAgICAgICAgIDxoNT57eyAnQXRlbmNhbycgfCB0cmFuc2xhdGUgfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbSBvZiBtZXNzYWdlc1wiPjxtYXQtaWNvbj5lcnJvcl9vdXRsaW5lPC9tYXQtaWNvbj48bGFiZWwgW2lubmVySFRNTF09XCJtIHwgdHJhbnNsYXRlXCI+PC9sYWJlbD48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+PGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmNsZWFyPC9pPjwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVVcmxzOiBbJ2FsZXJ0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9BbGVydENvbXBvbmVudCB7XHJcblxyXG4gICAgQElucHV0KCkgbWVzc2FnZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgb25DbG9zZSgpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XHJcbiAgICB9XHJcbn0iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy9jb250cm9scy9hbGVydC9hbGVydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztJQVU3QiwwQkFBK0IsZUFBQTtJQUFVLHFCQUFLO0lBQUEsaUJBQVc7SUFBQSwyQkFBMkM7O0lBQUEsaUJBQUs7OztJQUF6QyxlQUEyQjtJQUEzQix5RUFBMkI7Ozs7SUFMdkcsMkJBQW1ELGdCQUFBLFNBQUE7SUFFdkMsWUFBMkI7O0lBQUEsaUJBQUs7SUFDcEMsa0JBQXlCO0lBQ3pCLDBCQUFJO0lBQ0EsdUVBQXlHO0lBQzdHLGlCQUFLO0lBQ0wsNEJBQXFDO0lBQXBCLDBKQUFTLGVBQUEsZ0JBQVMsQ0FBQSxJQUFDO0lBQUMsNkJBQTBCO0lBQUEsc0JBQUs7SUFBQSxpQkFBSSxFQUFBLEVBQUEsRUFBQTs7O0lBTHBFLGVBQTJCO0lBQTNCLHFEQUEyQjtJQUdULGVBQVc7SUFBWCx5Q0FBVzs7OztBQVFqRCxNQUFNLE9BQU8sa0JBQWtCO0lBRWxCLFFBQVEsR0FBYSxFQUFFLENBQUM7SUFFakMsT0FBTztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7K0ZBTlEsa0JBQWtCOzRGQUFsQixrQkFBa0I7O1lBYnZCLG9FQVNNOztZQVRBLDRGQUEyQzs7O3VGQWE1QyxrQkFBa0I7Y0FoQjlCLFNBQVM7MkJBQ0ksWUFBWSxZQUNaOzs7Ozs7Ozs7OztLQVdUO2dCQUtRLFFBQVE7a0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLWFsZXJ0JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2VzICE9IFtdICYmIG1lc3NhZ2VzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0XCIgI2FsZXJ0ID5cclxuICAgICAgICAgICAgICAgIDxoNT57eyAnQXRlbmNhbycgfCB0cmFuc2xhdGUgfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbSBvZiBtZXNzYWdlc1wiPjxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+PGxhYmVsIFtpbm5lckhUTUxdPVwibSB8IHRyYW5zbGF0ZVwiPjwvbGFiZWw+PC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImNsb3NlXCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPjxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5jbGVhcjwvaT48L2E+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICAgIHN0eWxlVXJsczogWydhbGVydC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvQWxlcnRDb21wb25lbnQge1xyXG5cclxuICAgIEBJbnB1dCgpIG1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIG9uQ2xvc2UoKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG4gICAgfVxyXG59Il19
@@ -27,6 +27,28 @@ function InfoAutoCompleteComponent_mat_progress_bar_10_Template(rf, ctx) { if (r
27
27
  i0.ɵɵelement(0, "mat-progress-bar", 9);
28
28
  } }
29
29
  export class InfoAutoCompleteComponent {
30
+ _dataAcess;
31
+ control = new UntypedFormControl();
32
+ placeholder = '';
33
+ name = '';
34
+ required = false;
35
+ selectfirst = false;
36
+ disablednoregisters = false;
37
+ getdataonchange = false;
38
+ getdataonchangetime = 500;
39
+ api = null;
40
+ method = 'getchavevalor';
41
+ maxlist = 10;
42
+ startwith = false;
43
+ minchar = 1;
44
+ notoken = false;
45
+ onselecteditem = new EventEmitter();
46
+ options;
47
+ selectedValue = null;
48
+ onChange;
49
+ onTouched;
50
+ initialized = false;
51
+ _loading = false;
30
52
  get loading() {
31
53
  return this._loading;
32
54
  }
@@ -39,6 +61,7 @@ export class InfoAutoCompleteComponent {
39
61
  if (this._disabled == false)
40
62
  this.setDisabledState(this.loading);
41
63
  }
64
+ _params = null;
42
65
  get params() {
43
66
  return this._params;
44
67
  }
@@ -47,6 +70,7 @@ export class InfoAutoCompleteComponent {
47
70
  if (this.initialized)
48
71
  this.getData().subscribe(a => { this.data = a.data; this.loading = false; });
49
72
  }
73
+ _disabled = null;
50
74
  set disabled(value) {
51
75
  if (this._disabled == null)
52
76
  this._disabled = value;
@@ -55,6 +79,7 @@ export class InfoAutoCompleteComponent {
55
79
  else
56
80
  this.control.enable();
57
81
  }
82
+ _data = [];
58
83
  get data() {
59
84
  return this._data;
60
85
  }
@@ -78,26 +103,6 @@ export class InfoAutoCompleteComponent {
78
103
  }
79
104
  constructor(_dataAcess) {
80
105
  this._dataAcess = _dataAcess;
81
- this.control = new UntypedFormControl();
82
- this.placeholder = '';
83
- this.name = '';
84
- this.required = false;
85
- this.selectfirst = false;
86
- this.disablednoregisters = false;
87
- this.getdataonchange = false;
88
- this.getdataonchangetime = 500;
89
- this.api = null;
90
- this.method = 'getchavevalor';
91
- this.maxlist = 10;
92
- this.startwith = false;
93
- this.minchar = 1;
94
- this.onselecteditem = new EventEmitter();
95
- this.selectedValue = null;
96
- this.initialized = false;
97
- this._loading = false;
98
- this._params = null;
99
- this._disabled = null;
100
- this._data = [];
101
106
  }
102
107
  ngOnInit() {
103
108
  if (this.minchar == null || this.minchar < 0)
@@ -134,9 +139,9 @@ export class InfoAutoCompleteComponent {
134
139
  parameters += '&';
135
140
  parameters += `nome=${value.Nome == null ? value.toString().toLowerCase() : value.Nome}&take=${this.maxlist}`;
136
141
  let model = parameters.split("&").map(c => ({ [c.split("=")[0].charAt(0).toUpperCase() + c.split("=")[0].substring(1)]: c.split("=")[1] })).reduce((a, b) => ({ ...a, ...b }));
137
- return this._dataAcess.post(this.api, model, this.method);
142
+ return this.notoken ? this._dataAcess.postNoToken(this.api, model, this.method) : this._dataAcess.post(this.api, model, this.method);
138
143
  }
139
- return this._dataAcess.get(this.api, this.method, parameters);
144
+ return this.notoken ? this._dataAcess.getNoToken(this.api, this.method, parameters) : this._dataAcess.get(this.api, this.method, parameters);
140
145
  }
141
146
  onBlur(value) {
142
147
  setTimeout(() => {
@@ -182,8 +187,8 @@ export class InfoAutoCompleteComponent {
182
187
  setDisabledState(isDisabled) {
183
188
  this.disabled = this.disablednoregisters && (this.data == null || this.data.length == 0) ? true : isDisabled;
184
189
  }
185
- /** @nocollapse */ static { this.ɵfac = function InfoAutoCompleteComponent_Factory(t) { return new (t || InfoAutoCompleteComponent)(i0.ɵɵdirectiveInject(i1.InfoDataService)); }; }
186
- /** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoAutoCompleteComponent, selectors: [["info-autocomplete"]], inputs: { placeholder: "placeholder", name: "name", required: "required", selectfirst: "selectfirst", disablednoregisters: "disablednoregisters", getdataonchange: "getdataonchange", getdataonchangetime: "getdataonchangetime", api: "api", method: "method", maxlist: "maxlist", startwith: "startwith", minchar: "minchar", loading: "loading", params: "params", disabled: "disabled", data: "data" }, outputs: { onselecteditem: "onselecteditem" }, features: [i0.ɵɵProvidersFeature([{
190
+ /** @nocollapse */ static ɵfac = function InfoAutoCompleteComponent_Factory(t) { return new (t || InfoAutoCompleteComponent)(i0.ɵɵdirectiveInject(i1.InfoDataService)); };
191
+ /** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoAutoCompleteComponent, selectors: [["info-autocomplete"]], inputs: { placeholder: "placeholder", name: "name", required: "required", selectfirst: "selectfirst", disablednoregisters: "disablednoregisters", getdataonchange: "getdataonchange", getdataonchangetime: "getdataonchangetime", api: "api", method: "method", maxlist: "maxlist", startwith: "startwith", minchar: "minchar", notoken: "notoken", loading: "loading", params: "params", disabled: "disabled", data: "data" }, outputs: { onselecteditem: "onselecteditem" }, features: [i0.ɵɵProvidersFeature([{
187
192
  provide: NG_VALUE_ACCESSOR,
188
193
  useExisting: forwardRef((() => InfoAutoCompleteComponent)),
189
194
  multi: true
@@ -211,7 +216,7 @@ export class InfoAutoCompleteComponent {
211
216
  i0.ɵɵproperty("ngForOf", ctx.options);
212
217
  i0.ɵɵadvance(4);
213
218
  i0.ɵɵproperty("ngIf", ctx.loading);
214
- } }, dependencies: [i2.NgForOf, i2.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.RequiredValidator, i3.FormControlDirective, i4.MatIcon, i5.MatFormField, i5.MatSuffix, i6.MatInput, i7.MatOption, i8.MatProgressBar, i9.MatAutocomplete, i9.MatAutocompleteTrigger, i10.InfoTranslatePipe], styles: ["[_nghost-%COMP%] .select-loading[_ngcontent-%COMP%]{position:relative;bottom:15px;opacity:.3;height:1px}[_nghost-%COMP%] .select-loading[_ngcontent-%COMP%] .mat-progress-bar[_ngcontent-%COMP%]{height:1px;margin:0}[_nghost-%COMP%] mat-option[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{margin-left:10px;font-style:italic}"] }); }
219
+ } }, dependencies: [i2.NgForOf, i2.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.RequiredValidator, i3.FormControlDirective, i4.MatIcon, i5.MatFormField, i5.MatSuffix, i6.MatInput, i7.MatOption, i8.MatProgressBar, i9.MatAutocomplete, i9.MatAutocompleteTrigger, i10.InfoTranslatePipe], styles: ["[_nghost-%COMP%] .select-loading[_ngcontent-%COMP%]{position:relative;bottom:15px;opacity:.3;height:1px}[_nghost-%COMP%] .select-loading[_ngcontent-%COMP%] .mat-progress-bar[_ngcontent-%COMP%]{height:1px;margin:0}[_nghost-%COMP%] mat-option[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{margin-left:10px;font-style:italic}"] });
215
220
  }
216
221
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoAutoCompleteComponent, [{
217
222
  type: Component,
@@ -244,6 +249,8 @@ export class InfoAutoCompleteComponent {
244
249
  type: Input
245
250
  }], minchar: [{
246
251
  type: Input
252
+ }], notoken: [{
253
+ type: Input
247
254
  }], onselecteditem: [{
248
255
  type: Output
249
256
  }], loading: [{
@@ -255,4 +262,4 @@ export class InfoAutoCompleteComponent {
255
262
  }], data: [{
256
263
  type: Input
257
264
  }] }); })();
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvY29udHJvbHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7O0lDQzFCLHFDQUFtSTtJQUF2RSxzUUFBcUIsZUFBQSwrQkFBcUIsQ0FBQSxJQUFDO0lBQ3ZHLGlCQUFhOzs7SUFEOEIsaUNBQWdCLGdEQUFBOzs7SUFRL0Qsc0NBQTBGOztBREk5RixNQUFNLE9BQU8seUJBQXlCO0lBMkJsQyxJQUNJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSTtZQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzthQUV0QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRTtZQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUUxQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSztZQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFHRCxJQUNJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEtBQUs7UUFDWixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxXQUFXO1lBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFHRCxJQUNJLFFBQVEsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJO1lBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTNCLElBQUksS0FBSztZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7O1lBRXZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUdELElBQ0ksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBSztRQUNWLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksSUFBSSxDQUFDLGVBQWU7WUFDcEIsT0FBTztRQUVYLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSTtnQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ3pGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2lCQUM3Qjs7b0JBQ0csSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBRS9GLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFckMsSUFBSSxJQUFJLENBQUMsbUJBQW1CO2dCQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFvQixVQUEyQjtRQUEzQixlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQWpHL0MsWUFBTyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUUxQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsd0JBQW1CLEdBQUcsR0FBRyxDQUFDO1FBQzFCLFFBQUcsR0FBUSxJQUFJLENBQUM7UUFDaEIsV0FBTSxHQUFHLGVBQWUsQ0FBQztRQUN6QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRVgsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRzlDLGtCQUFhLEdBQVEsSUFBSSxDQUFDO1FBSzFCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFtQjFCLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFhdkIsY0FBUyxHQUFZLElBQUksQ0FBQztRQVkxQixVQUFLLEdBQVEsRUFBRSxDQUFDO0lBNEJtQyxDQUFDO0lBRXBELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQztZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTdGLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFDO1NBQ3RGO2FBQU07WUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzFCLFlBQVksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFDdEMsb0JBQW9CLEVBQUUsRUFDdEIsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUMxQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkQ7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVU7UUFDYixJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzVELElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFFbkYsSUFBSSxJQUFJLENBQUMsU0FBUztZQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7O1lBRXRMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4TSxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQWEsSUFBSTtRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRTtZQUNsQyxPQUFPLElBQUksVUFBVSxFQUF1QixDQUFDO1FBRWpELElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFbkMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDNUIsT0FBTyxJQUFJLFVBQVUsRUFBdUIsQ0FBQztZQUVqRCxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUksVUFBVSxJQUFJLEVBQUU7Z0JBQ3RDLFVBQVUsSUFBSSxHQUFHLENBQUM7WUFFdEIsVUFBVSxJQUFJLFFBQVEsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFOUcsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVLLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdEO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFD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RyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csbUJBQW1CO2tCQUEzQixLQUFLO1lBQ0csR0FBRztrQkFBWCxLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUVJLGNBQWM7a0JBQXZCLE1BQU07WUFZSCxPQUFPO2tCQURWLEtBQUs7WUFvQkYsTUFBTTtrQkFEVCxLQUFLO1lBY0YsUUFBUTtrQkFEWCxLQUFLO1lBYUYsSUFBSTtrQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBmb3J3YXJkUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc3dpdGNoTWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBJbmZvRGF0YUFjY2Vzc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2luZm8tYXV0b2NvbXBsZXRlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbe1xyXG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEluZm9BdXRvQ29tcGxldGVDb21wb25lbnQpLFxyXG4gICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0F1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gICAgY29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICAgIFxyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcclxuICAgIEBJbnB1dCgpIG5hbWUgPSAnJztcclxuICAgIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RmaXJzdCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWRub3JlZ2lzdGVycyA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZ2V0ZGF0YW9uY2hhbmdlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBnZXRkYXRhb25jaGFuZ2V0aW1lID0gNTAwO1xyXG4gICAgQElucHV0KCkgYXBpOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgbWV0aG9kID0gJ2dldGNoYXZldmFsb3InO1xyXG4gICAgQElucHV0KCkgbWF4bGlzdCA9IDEwO1xyXG4gICAgQElucHV0KCkgc3RhcnR3aXRoID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBtaW5jaGFyID0gMTtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25zZWxlY3RlZGl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgb3B0aW9uczogYW55W107XHJcbiAgICBzZWxlY3RlZFZhbHVlOiBhbnkgPSBudWxsO1xyXG5cclxuICAgIG9uQ2hhbmdlOiBhbnk7XHJcbiAgICBvblRvdWNoZWQ6IGFueTtcclxuICAgIFxyXG4gICAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcbiAgICBfbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBsb2FkaW5nKCl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGxvYWRpbmcodmFsdWUpe1xyXG4gICAgICAgIHRoaXMuX2xvYWRpbmcgPSB2YWx1ZTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5fZGlzYWJsZWQudG9TdHJpbmcoKSA9PSAnJylcclxuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT0gZmFsc2UpXHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmxvYWRpbmcpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBfcGFyYW1zOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBwYXJhbXMoKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBwYXJhbXModmFsdWUpe1xyXG4gICAgICAgIHRoaXMuX3BhcmFtcyA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZClcclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCkuc3Vic2NyaWJlKGEgPT4geyB0aGlzLmRhdGEgPSBhLmRhdGE7IHRoaXMubG9hZGluZyA9IGZhbHNlOyB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgX2Rpc2FibGVkOiBib29sZWFuID0gbnVsbDtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHsgICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlKVxyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIF9kYXRhOiBhbnkgPSBbXTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZGF0YSgpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBkYXRhKHZhbHVlKXtcclxuICAgICAgICB0aGlzLl9kYXRhID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmdldGRhdGFvbmNoYW5nZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLl9kYXRhID09IG51bGwgfHwgKHRoaXMuX2RhdGEgIT0gbnVsbCAmJiB0aGlzLl9kYXRhLmxlbmd0aCA9PSAwKSkgJiYgIXRoaXMubG9hZGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuc2VsZWN0ZWRWYWx1ZS5JZCA9PSBudWxsID8gdGhpcy5zZWxlY3RlZFZhbHVlIDogdGhpcy5zZWxlY3RlZFZhbHVlLklkKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RmaXJzdCAmJiB0aGlzLmRhdGEgIT0gbnVsbCAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmRhdGFbMF0uSWQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWRub3JlZ2lzdGVycylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSgodGhpcy5kYXRhID09IG51bGwgfHwgdGhpcy5kYXRhLmxlbmd0aCA9PSAwKSk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0YUFjZXNzOiBJbmZvRGF0YVNlcnZpY2UpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1pbmNoYXIgPT0gbnVsbCB8fCB0aGlzLm1pbmNoYXIgPCAwKSB0aGlzLm1pbmNoYXIgPSAxO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IHRoaXMucGxhY2Vob2xkZXIucmVwbGFjZSgvIC9nLCAnJykgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwKS50b1N0cmluZygpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZ2V0ZGF0YW9uY2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpLnN1YnNjcmliZShhID0+IHsgdGhpcy5kYXRhID0gYS5kYXRhOyB0aGlzLmxvYWRpbmcgPSBmYWxzZTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHsgdGhpcy5vcHRpb25zID0gdGhpcy5maWx0ZXIodmFsdWUpfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZ2V0ZGF0YW9uY2hhbmdldGltZSksIFxyXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB0aGlzLmdldERhdGEodmFsdWUpKVxyXG4gICAgICAgICAgICApLnN1YnNjcmliZShhID0+IHRoaXMuZGF0YSA9IHRoaXMub3B0aW9ucyA9IGEuZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlcih2YWx1ZTogYW55KTogYW55W10ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlLmxlbmd0aCA8IHRoaXMubWluY2hhcikgcmV0dXJuIFtdO1xyXG4gICAgICAgIGxldCBmaWx0ZXJWYWx1ZSA9IHZhbHVlLk5vbWUgPT0gbnVsbCA/IHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA6IHZhbHVlLk5vbWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0d2l0aClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5Ob21lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgPT09IDAgfHwgKG9wdGlvbi5BdXggPT0gbnVsbCA/IFwiXCIgOiBvcHRpb24uQXV4LnRvTG93ZXJDYXNlKCkgPT0gZmlsdGVyVmFsdWUpKS5zbGljZSgwLCB0aGlzLm1heGxpc3QpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5Ob21lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgPiAtMSB8fCAob3B0aW9uLkF1eCA9PSBudWxsID8gXCJcIiA6IG9wdGlvbi5BdXgudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclZhbHVlKSA+IC0xKSkuc2xpY2UoMCwgdGhpcy5tYXhsaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhKHZhbHVlOiBhbnkgPSBudWxsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXBpID09IG51bGwgfHwgdGhpcy5hcGkgPT0gJycpXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPigpO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSAhdGhpcy5nZXRkYXRhb25jaGFuZ2U7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gW107XHJcbiAgICAgICAgbGV0IHBhcmFtZXRlcnMgPSB0aGlzLnBhcmFtcyB8fCAnJztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0ZGF0YW9uY2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09ICcnKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+KCk7XHJcblxyXG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycyAhPSBudWxsICYmIHBhcmFtZXRlcnMgIT0gJycpXHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzICs9ICcmJztcclxuXHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgKz0gYG5vbWU9JHt2YWx1ZS5Ob21lID09IG51bGwgPyB2YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgOiB2YWx1ZS5Ob21lfSZ0YWtlPSR7dGhpcy5tYXhsaXN0fWA7XHJcblxyXG4gICAgICAgICAgICBsZXQgbW9kZWwgPSBwYXJhbWV0ZXJzLnNwbGl0KFwiJlwiKS5tYXAoYyA9PiAoeyBbYy5zcGxpdChcIj1cIilbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjLnNwbGl0KFwiPVwiKVswXS5zdWJzdHJpbmcoMSldOiBjLnNwbGl0KFwiPVwiKVsxXSB9KSkucmVkdWNlKChhLGIpID0+ICh7Li4uYSwgLi4uYn0pKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFBY2Vzcy5wb3N0KHRoaXMuYXBpLCBtb2RlbCwgdGhpcy5tZXRob2QpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFBY2Vzcy5nZXQodGhpcy5hcGksIHRoaXMubWV0aG9kLCBwYXJhbWV0ZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkJsdXIodmFsdWUpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZS5JZCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkVmFsdWUudHJpbSgpID09ICcnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBmaXJzdCA9IHRoaXMuZmlsdGVyKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChmaXJzdCAhPSBudWxsICYmIGZpcnN0Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKGZpcnN0WzBdLklkKTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfSwgMzAwKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvY3VzKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWluY2hhciAhPSBudWxsICYmIHRoaXMubWluY2hhciA9PSAwICYmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09ICcnKSlcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuY29udHJvbC5zZXRWYWx1ZSgnJyk7IH0sIDIwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcGxheUZuKG1vZGVsKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAobW9kZWwgPT0gbnVsbCB8fCBtb2RlbC5Ob21lID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgbGV0IGluZGV4U21hbGwgPSBtb2RlbC5Ob21lLmluZGV4T2YoJzxzbWFsbCcpO1xyXG4gICAgICAgIHJldHVybiBpbmRleFNtYWxsID4gLTEgPyBtb2RlbC5Ob21lLnN1YnN0cmluZygwLCBpbmRleFNtYWxsKS50cmltKCkgOiBtb2RlbC5Ob21lO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGxldCBvYmogPSB0aGlzLmRhdGEuZmluZChyID0+IHIuSWQgPT0gdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShvYmopO1xyXG5cclxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiBvYmogPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9uQ2hhbmdlICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vbnNlbGVjdGVkaXRlbSAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLm9uc2VsZWN0ZWRpdGVtLmVtaXQodGhpcy5kYXRhID09IG51bGwgPyBudWxsIDogdGhpcy5kYXRhLmZpbmQociA9PiByLklkID09IHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZG5vcmVnaXN0ZXJzICYmICh0aGlzLmRhdGEgPT0gbnVsbCB8fCB0aGlzLmRhdGEubGVuZ3RoID09IDApID8gdHJ1ZSA6IGlzRGlzYWJsZWQ7XHJcbiAgICB9XHJcbn0iLCI8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIFxyXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIChibHVyKT1cIm9uQmx1cigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudC50YXJnZXQudmFsdWUpXCIgI2lucHV0QXV0bz5cclxuXHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cIndyaXRlVmFsdWUob3B0aW9uLklkKVwiIFtpbm5lckhUTUxdPVwib3B0aW9uLk5vbWVcIiA+XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgXHJcbiAgICA8bWF0LWljb24gbWF0U3VmZml4IHN0eWxlPVwiY29sb3I6ICNhYWFcIj5zcGVsbGNoZWNrPC9tYXQtaWNvbj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbjxzZWN0aW9uIGNsYXNzPVwic2VsZWN0LWxvYWRpbmdcIj5cclxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgKm5nSWY9XCJsb2FkaW5nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG48L3NlY3Rpb24+Il19
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvY29udHJvbHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7O0lDQzFCLHFDQUFtSTtJQUF2RSxzUUFBcUIsZUFBQSwrQkFBcUIsQ0FBQSxJQUFDO0lBQ3ZHLGlCQUFhOzs7SUFEOEIsaUNBQWdCLGdEQUFBOzs7SUFRL0Qsc0NBQTBGOztBREk5RixNQUFNLE9BQU8seUJBQXlCO0lBbUdkO0lBbEdwQixPQUFPLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBRTFCLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDakIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNWLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNwQixtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDNUIsZUFBZSxHQUFHLEtBQUss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QzVCLE9BQU8sSUFBSSxVQUFVLEVBQXVCLENBQUM7WUFFakQsSUFBSSxVQUFVLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxFQUFFO2dCQUN0QyxVQUFVLElBQUksR0FBRyxDQUFDO1lBRXRCLFVBQVUsSUFBSSxRQUFRLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRTlHLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztZQUM1SyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFD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eUI7WUFDaEMsZUFBVTtZQUFWLHFDQUFVO1lBUVcsZUFBYTtZQUFiLGtDQUFhOzs7dUZESTVELHlCQUF5QjtjQVZyQyxTQUFTOzJCQUNJLG1CQUFtQixhQUdsQixDQUFDO3dCQUNSLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLDBCQUEwQixFQUFDO3dCQUN4RCxLQUFLLEVBQUUsSUFBSTtxQkFDZCxDQUFDO2tFQUtPLFdBQVc7a0JBQW5CLEtBQUs7WUFDRyxJQUFJO2tCQUFaLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNHLG1CQUFtQjtrQkFBM0IsS0FBSztZQUNHLGVBQWU7a0JBQXZCLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyxHQUFHO2tCQUFYLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBRUksY0FBYztrQkFBdkIsTUFBTTtZQVlILE9BQU87a0JBRFYsS0FBSztZQW9CRixNQUFNO2tCQURULEtBQUs7WUFjRixRQUFRO2tCQURYLEtBQUs7WUFhRixJQUFJO2tCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIGZvcndhcmRSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBzd2l0Y2hNYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBJbmZvRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZS9kYXRhLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEluZm9EYXRhQWNjZXNzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnaW5mby1hdXRvY29tcGxldGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdhdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFt7XHJcbiAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5mb0F1dG9Db21wbGV0ZUNvbXBvbmVudCksXHJcbiAgICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvQXV0b0NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgICBjb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gICAgXHJcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG4gICAgQElucHV0KCkgbmFtZSA9ICcnO1xyXG4gICAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHNlbGVjdGZpcnN0ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZG5vcmVnaXN0ZXJzID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBnZXRkYXRhb25jaGFuZ2UgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGdldGRhdGFvbmNoYW5nZXRpbWUgPSA1MDA7XHJcbiAgICBASW5wdXQoKSBhcGk6IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBtZXRob2QgPSAnZ2V0Y2hhdmV2YWxvcic7XHJcbiAgICBASW5wdXQoKSBtYXhsaXN0ID0gMTA7XHJcbiAgICBASW5wdXQoKSBzdGFydHdpdGggPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIG1pbmNoYXIgPSAxO1xyXG4gICAgQElucHV0KCkgbm90b2tlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvbnNlbGVjdGVkaXRlbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBvcHRpb25zOiBhbnlbXTtcclxuICAgIHNlbGVjdGVkVmFsdWU6IGFueSA9IG51bGw7XHJcblxyXG4gICAgb25DaGFuZ2U6IGFueTtcclxuICAgIG9uVG91Y2hlZDogYW55O1xyXG4gICAgXHJcbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxuICAgIF9sb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGxvYWRpbmcoKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcclxuICAgIH1cclxuXHJcbiAgICBzZXQgbG9hZGluZyh2YWx1ZSl7XHJcbiAgICAgICAgdGhpcy5fbG9hZGluZyA9IHZhbHVlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBlbHNlIGlmICh0aGlzLl9kaXNhYmxlZC50b1N0cmluZygpID09ICcnKVxyXG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PSBmYWxzZSlcclxuICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRoaXMubG9hZGluZyk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIF9wYXJhbXM6IHN0cmluZyA9IG51bGw7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHBhcmFtcygpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHBhcmFtcyh2YWx1ZSl7XHJcbiAgICAgICAgdGhpcy5fcGFyYW1zID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKVxyXG4gICAgICAgICAgICB0aGlzLmdldERhdGEoKS5zdWJzY3JpYmUoYSA9PiB7IHRoaXMuZGF0YSA9IGEuZGF0YTsgdGhpcy5sb2FkaW5nID0gZmFsc2U7IH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBudWxsO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikgeyAgICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodmFsdWUpXHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgX2RhdGE6IGFueSA9IFtdO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBkYXRhKCl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGRhdGEodmFsdWUpe1xyXG4gICAgICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0ZGF0YW9uY2hhbmdlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuX2RhdGEgPT0gbnVsbCB8fCAodGhpcy5fZGF0YSAhPSBudWxsICYmIHRoaXMuX2RhdGEubGVuZ3RoID09IDApKSAmJiAhdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2VcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlLklkID09IG51bGwgPyB0aGlzLnNlbGVjdGVkVmFsdWUgOiB0aGlzLnNlbGVjdGVkVmFsdWUuSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGZpcnN0ICYmIHRoaXMuZGF0YSAhPSBudWxsICYmIHRoaXMuZGF0YS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuZGF0YVswXS5JZCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlZG5vcmVnaXN0ZXJzKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKCh0aGlzLmRhdGEgPT0gbnVsbCB8fCB0aGlzLmRhdGEubGVuZ3RoID09IDApKTtcclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kYXRhQWNlc3M6IEluZm9EYXRhU2VydmljZSkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWluY2hhciA9PSBudWxsIHx8IHRoaXMubWluY2hhciA8IDApIHRoaXMubWluY2hhciA9IDE7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5wbGFjZWhvbGRlci5yZXBsYWNlKC8gL2csICcnKSArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDApLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5nZXRkYXRhb25jaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCkuc3Vic2NyaWJlKGEgPT4geyB0aGlzLmRhdGEgPSBhLmRhdGE7IHRoaXMubG9hZGluZyA9IGZhbHNlOyB9KTtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4geyB0aGlzLm9wdGlvbnMgPSB0aGlzLmZpbHRlcih2YWx1ZSl9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5nZXRkYXRhb25jaGFuZ2V0aW1lKSwgXHJcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHZhbHVlID0+IHRoaXMuZ2V0RGF0YSh2YWx1ZSkpXHJcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKGEgPT4gdGhpcy5kYXRhID0gdGhpcy5vcHRpb25zID0gYS5kYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyKHZhbHVlOiBhbnkpOiBhbnlbXSB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUubGVuZ3RoIDwgdGhpcy5taW5jaGFyKSByZXR1cm4gW107XHJcbiAgICAgICAgbGV0IGZpbHRlclZhbHVlID0gdmFsdWUuTm9tZSA9PSBudWxsID8gdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDogdmFsdWUuTm9tZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3RhcnR3aXRoKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLk5vbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclZhbHVlKSA9PT0gMCB8fCAob3B0aW9uLkF1eCA9PSBudWxsID8gXCJcIiA6IG9wdGlvbi5BdXgudG9Mb3dlckNhc2UoKSA9PSBmaWx0ZXJWYWx1ZSkpLnNsaWNlKDAsIHRoaXMubWF4bGlzdCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLk5vbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclZhbHVlKSA+IC0xIHx8IChvcHRpb24uQXV4ID09IG51bGwgPyBcIlwiIDogb3B0aW9uLkF1eC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyVmFsdWUpID4gLTEpKS5zbGljZSgwLCB0aGlzLm1heGxpc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGEodmFsdWU6IGFueSA9IG51bGwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcGkgPT0gbnVsbCB8fCB0aGlzLmFwaSA9PSAnJylcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+KCk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZyA9ICF0aGlzLmdldGRhdGFvbmNoYW5nZTtcclxuICAgICAgICB0aGlzLmRhdGEgPSBbXTtcclxuICAgICAgICBsZXQgcGFyYW1ldGVycyA9IHRoaXMucGFyYW1zIHx8ICcnO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5nZXRkYXRhb25jaGFuZ2UpIHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT0gJycpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD4oKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzICE9IG51bGwgJiYgcGFyYW1ldGVycyAhPSAnJylcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgKz0gJyYnO1xyXG5cclxuICAgICAgICAgICAgcGFyYW1ldGVycyArPSBgbm9tZT0ke3ZhbHVlLk5vbWUgPT0gbnVsbCA/IHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA6IHZhbHVlLk5vbWV9JnRha2U9JHt0aGlzLm1heGxpc3R9YDtcclxuXHJcbiAgICAgICAgICAgIGxldCBtb2RlbCA9IHBhcmFtZXRlcnMuc3BsaXQoXCImXCIpLm1hcChjID0+ICh7IFtjLnNwbGl0KFwiPVwiKVswXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGMuc3BsaXQoXCI9XCIpWzBdLnN1YnN0cmluZygxKV06IGMuc3BsaXQoXCI9XCIpWzFdIH0pKS5yZWR1Y2UoKGEsYikgPT4gKHsuLi5hLCAuLi5ifSkpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ub3Rva2VuID8gdGhpcy5fZGF0YUFjZXNzLnBvc3ROb1Rva2VuKHRoaXMuYXBpLCBtb2RlbCwgdGhpcy5tZXRob2QpIDogdGhpcy5fZGF0YUFjZXNzLnBvc3QodGhpcy5hcGksIG1vZGVsLCB0aGlzLm1ldGhvZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5ub3Rva2VuID8gdGhpcy5fZGF0YUFjZXNzLmdldE5vVG9rZW4odGhpcy5hcGksIHRoaXMubWV0aG9kLCBwYXJhbWV0ZXJzKSA6IHRoaXMuX2RhdGFBY2Vzcy5nZXQodGhpcy5hcGksIHRoaXMubWV0aG9kLCBwYXJhbWV0ZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkJsdXIodmFsdWUpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZS5JZCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkVmFsdWUudHJpbSgpID09ICcnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBmaXJzdCA9IHRoaXMuZmlsdGVyKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChmaXJzdCAhPSBudWxsICYmIGZpcnN0Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKGZpcnN0WzBdLklkKTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfSwgMzAwKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvY3VzKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWluY2hhciAhPSBudWxsICYmIHRoaXMubWluY2hhciA9PSAwICYmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09ICcnKSlcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuY29udHJvbC5zZXRWYWx1ZSgnJyk7IH0sIDIwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcGxheUZuKG1vZGVsKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAobW9kZWwgPT0gbnVsbCB8fCBtb2RlbC5Ob21lID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgbGV0IGluZGV4U21hbGwgPSBtb2RlbC5Ob21lLmluZGV4T2YoJzxzbWFsbCcpO1xyXG4gICAgICAgIHJldHVybiBpbmRleFNtYWxsID4gLTEgPyBtb2RlbC5Ob21lLnN1YnN0cmluZygwLCBpbmRleFNtYWxsKS50cmltKCkgOiBtb2RlbC5Ob21lO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGxldCBvYmogPSB0aGlzLmRhdGEuZmluZChyID0+IHIuSWQgPT0gdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShvYmopO1xyXG5cclxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiBvYmogPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9uQ2hhbmdlICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vbnNlbGVjdGVkaXRlbSAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLm9uc2VsZWN0ZWRpdGVtLmVtaXQodGhpcy5kYXRhID09IG51bGwgPyBudWxsIDogdGhpcy5kYXRhLmZpbmQociA9PiByLklkID09IHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZG5vcmVnaXN0ZXJzICYmICh0aGlzLmRhdGEgPT0gbnVsbCB8fCB0aGlzLmRhdGEubGVuZ3RoID09IDApID8gdHJ1ZSA6IGlzRGlzYWJsZWQ7XHJcbiAgICB9XHJcbn0iLCI8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIFxyXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIChibHVyKT1cIm9uQmx1cigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudC50YXJnZXQudmFsdWUpXCIgI2lucHV0QXV0bz5cclxuXHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cIndyaXRlVmFsdWUob3B0aW9uLklkKVwiIFtpbm5lckhUTUxdPVwib3B0aW9uLk5vbWVcIiA+XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgXHJcbiAgICA8bWF0LWljb24gbWF0U3VmZml4IHN0eWxlPVwiY29sb3I6ICNhYWFcIj5zcGVsbGNoZWNrPC9tYXQtaWNvbj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbjxzZWN0aW9uIGNsYXNzPVwic2VsZWN0LWxvYWRpbmdcIj5cclxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgKm5nSWY9XCJsb2FkaW5nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG48L3NlY3Rpb24+Il19