bpm-core 0.0.26 → 0.0.28

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 (49) hide show
  1. package/esm2022/lib/app/app.component.mjs +9 -10
  2. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +3 -3
  3. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +2 -2
  4. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +4 -40
  5. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +3 -3
  6. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +6 -4
  7. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +2 -2
  8. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +42 -31
  9. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +63 -14
  10. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +70 -137
  11. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +42 -78
  12. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +5 -19
  13. package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +23 -115
  14. package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +20 -72
  15. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +20 -74
  16. package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +20 -104
  17. package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +20 -39
  18. package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +27 -59
  19. package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +3 -6
  20. package/esm2022/lib/environments/environment.local.mjs +2 -2
  21. package/esm2022/lib/services/core.service.ts.mjs +7 -8
  22. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +2 -2
  23. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +37 -23
  24. package/fesm2022/bpm-core.mjs +538 -958
  25. package/fesm2022/bpm-core.mjs.map +1 -1
  26. package/lib/app/app.component.d.ts +1 -2
  27. package/lib/components/app-component-sections/activities/activities.component.d.ts +2 -2
  28. package/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.d.ts +1 -1
  29. package/lib/components/app-component-sections/form-section/form-section.component.d.ts +3 -4
  30. package/lib/components/app-component-sections/service-header/service-header.component.d.ts +1 -1
  31. package/lib/components/shared-components/action-buttons/action-buttons.component.d.ts +3 -1
  32. package/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.d.ts +1 -1
  33. package/lib/components/shared-components/form-field/checkbox/checkbox.component.d.ts +10 -7
  34. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +15 -5
  35. package/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.d.ts +15 -15
  36. package/lib/components/shared-components/form-field/date-picker/date-picker.component.d.ts +6 -13
  37. package/lib/components/shared-components/form-field/input/input.component.d.ts +2 -6
  38. package/lib/components/shared-components/form-field/input-currency/input-currency.component.d.ts +6 -23
  39. package/lib/components/shared-components/form-field/input-email/input-email.component.d.ts +4 -18
  40. package/lib/components/shared-components/form-field/input-mask/input-mask.component.d.ts +4 -18
  41. package/lib/components/shared-components/form-field/input-number/input-number.component.d.ts +5 -20
  42. package/lib/components/shared-components/form-field/input-telephone/input-telephone.component.d.ts +4 -15
  43. package/lib/components/shared-components/form-field/textarea/textarea.component.d.ts +5 -14
  44. package/lib/components/shared-components/form-field/validation-errors/validation-errors.component.d.ts +1 -2
  45. package/lib/services/core.service.ts.d.ts +1 -1
  46. package/lib/testComponent/request-details-section/request-details-section.component.d.ts +5 -7
  47. package/package.json +3 -2
  48. package/esm2022/lib/testComponent/services/state-machine.service.mjs +0 -148
  49. package/lib/testComponent/services/state-machine.service.d.ts +0 -29
@@ -5,23 +5,33 @@ import * as i1 from "../../../services";
5
5
  export class ControlValueAccessorDirective {
6
6
  injector;
7
7
  i18n;
8
- hasLabel = true;
9
8
  isReadOnly;
10
- hideOption = false;
11
9
  labelTextWriteMode;
10
+ labelTextReadMode;
12
11
  hint = '';
13
12
  loading;
14
13
  placeholder;
15
14
  type;
16
- value;
17
15
  showErrorMessage;
18
16
  showHint;
19
17
  showIfEmpty;
20
18
  insideTable;
19
+ mask;
20
+ label;
21
+ matSuffix;
22
+ minDateValue;
23
+ maxDateValue;
24
+ maxDate;
25
+ // @ViewChild('default')
26
+ datepickerObj;
27
+ minDate;
28
+ customMaxDate;
29
+ customMinDate;
30
+ value;
21
31
  control;
22
32
  required = false;
23
33
  maxLength;
24
- _isDisabled = false;
34
+ isDisabled = false;
25
35
  constructor(injector, i18n) {
26
36
  this.injector = injector;
27
37
  this.i18n = i18n;
@@ -48,11 +58,40 @@ export class ControlValueAccessorDirective {
48
58
  this.control = new FormControl();
49
59
  }
50
60
  this.setFormValidators();
61
+ this.setDateFormControl();
51
62
  }
52
63
  setFormValidators() {
53
64
  console.log(this.control);
54
65
  this.required = this.control?.hasValidator(Validators.required) ?? false;
55
66
  }
67
+ setDateFormControl() {
68
+ const today = new Date();
69
+ const currentYear = today.getFullYear();
70
+ const currentMonth = today.getMonth();
71
+ const currentDay = today.getDate();
72
+ if (this.minDate) {
73
+ if (this.minDate == 'today') {
74
+ this.minDateValue = new Date(currentYear, currentMonth, currentDay);
75
+ }
76
+ }
77
+ if (this.maxDate) {
78
+ if (this.maxDate == 'today') {
79
+ this.maxDateValue = new Date(currentYear, currentMonth, currentDay);
80
+ }
81
+ else if (this.maxDate == 'oneYear') {
82
+ this.maxDateValue = new Date(currentYear + 1, currentMonth, currentDay - 1);
83
+ }
84
+ }
85
+ else if (this.customMaxDate) {
86
+ const date = new Date(this.customMaxDate);
87
+ this.maxDateValue = new Date(date.getFullYear(), date.getMonth(), date.getDate());
88
+ }
89
+ // if (this.field) {
90
+ // this.date.setValue(this.field);
91
+ // }
92
+ if (this.required)
93
+ this.control.addValidators(Validators.required);
94
+ }
56
95
  writeValue(value) {
57
96
  this.value = value;
58
97
  }
@@ -61,24 +100,22 @@ export class ControlValueAccessorDirective {
61
100
  registerOnTouched(fn) {
62
101
  }
63
102
  setDisabledState(isDisabled) {
64
- this._isDisabled = isDisabled;
103
+ this.isDisabled = isDisabled;
65
104
  }
66
105
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ControlValueAccessorDirective, deps: [{ token: i0.Injector }, { token: i1.CoreI18nService }], target: i0.ɵɵFactoryTarget.Directive });
67
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: ControlValueAccessorDirective, selector: "[appControlValueAccessor]", inputs: { hasLabel: "hasLabel", isReadOnly: "isReadOnly", hideOption: "hideOption", labelTextWriteMode: "labelTextWriteMode", hint: "hint", loading: "loading", placeholder: "placeholder", type: "type", value: "value", showErrorMessage: "showErrorMessage", showHint: "showHint", showIfEmpty: "showIfEmpty", insideTable: "insideTable" }, ngImport: i0 });
106
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: ControlValueAccessorDirective, selector: "[appControlValueAccessor]", inputs: { isReadOnly: "isReadOnly", labelTextWriteMode: "labelTextWriteMode", labelTextReadMode: "labelTextReadMode", hint: "hint", loading: "loading", placeholder: "placeholder", type: "type", showErrorMessage: "showErrorMessage", showHint: "showHint", showIfEmpty: "showIfEmpty", insideTable: "insideTable", mask: "mask", label: "label", matSuffix: "matSuffix", maxDate: "maxDate", minDate: "minDate", customMaxDate: "customMaxDate", customMinDate: "customMinDate" }, ngImport: i0 });
68
107
  }
69
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ControlValueAccessorDirective, decorators: [{
70
109
  type: Directive,
71
110
  args: [{
72
111
  selector: '[appControlValueAccessor]',
73
112
  }]
74
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.CoreI18nService }], propDecorators: { hasLabel: [{
75
- type: Input
76
- }], isReadOnly: [{
77
- type: Input
78
- }], hideOption: [{
113
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.CoreI18nService }], propDecorators: { isReadOnly: [{
79
114
  type: Input
80
115
  }], labelTextWriteMode: [{
81
116
  type: Input
117
+ }], labelTextReadMode: [{
118
+ type: Input
82
119
  }], hint: [{
83
120
  type: Input
84
121
  }], loading: [{
@@ -87,8 +124,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
87
124
  type: Input
88
125
  }], type: [{
89
126
  type: Input
90
- }], value: [{
91
- type: Input
92
127
  }], showErrorMessage: [{
93
128
  type: Input
94
129
  }], showHint: [{
@@ -97,5 +132,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
97
132
  type: Input
98
133
  }], insideTable: [{
99
134
  type: Input
135
+ }], mask: [{
136
+ type: Input
137
+ }], label: [{
138
+ type: Input
139
+ }], matSuffix: [{
140
+ type: Input
141
+ }], maxDate: [{
142
+ type: Input
143
+ }], minDate: [{
144
+ type: Input
145
+ }], customMaxDate: [{
146
+ type: Input
147
+ }], customMinDate: [{
148
+ type: Input
100
149
  }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFZLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBRUwsV0FBVyxFQUNYLFVBQVUsRUFDVixTQUFTLEVBQ1QsZUFBZSxFQUNmLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDOzs7QUFNeEIsTUFBTSxPQUFPLDZCQUE2QjtJQTBCcEI7SUFBMkI7SUF2QnRDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsVUFBVSxDQUFVO0lBQ3BCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsa0JBQWtCLENBQVM7SUFDM0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNWLE9BQU8sQ0FBVztJQUNsQixXQUFXLENBQVM7SUFDcEIsSUFBSSxDQUFTO0lBQ2IsS0FBSyxDQUFNO0lBQ1gsZ0JBQWdCLENBQVM7SUFDekIsUUFBUSxDQUFTO0lBQ2pCLFdBQVcsQ0FBUztJQUNwQixXQUFXLENBQU07SUFLMUIsT0FBTyxDQUEwQjtJQUNqQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFNBQVMsQ0FBTTtJQUVQLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFFNUIsWUFBb0IsUUFBa0IsRUFBUyxJQUFxQjtRQUFoRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBaUI7SUFBRyxDQUFDO0lBRXhFLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRCxRQUFRLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxlQUFlO29CQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRO3lCQUN6QixHQUFHLENBQUMsa0JBQWtCLENBQUM7eUJBQ3ZCLFVBQVUsQ0FBQyxXQUE4QixDQUFDLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1I7b0JBQ0UsSUFBSSxDQUFDLE9BQU8sR0FBSSxXQUFvQzt5QkFDakQsSUFBbUIsQ0FBQztvQkFDdkIsTUFBTTtZQUNWLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUUzRSxDQUFDO0lBQ0QsVUFBVSxDQUFDLEtBQVc7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQThCO0lBRS9DLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO0lBQ2hDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDO3VHQXRFVSw2QkFBNkI7MkZBQTdCLDZCQUE2Qjs7MkZBQTdCLDZCQUE2QjtrQkFIekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2lCQUN0QzsyR0FJVSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIFZhbGlkYXRvcnMsXHJcbiAgTmdDb250cm9sLFxyXG4gIEZvcm1Db250cm9sTmFtZSxcclxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgRm9ybUNvbnRyb2xEaXJlY3RpdmUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3JlSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHBDb250cm9sVmFsdWVBY2Nlc3Nvcl0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT5cclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXRcclxue1xyXG4gIEBJbnB1dCgpIGhhc0xhYmVsID0gdHJ1ZTtcclxuICBASW5wdXQoKSBpc1JlYWRPbmx5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhpZGVPcHRpb24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBsYWJlbFRleHRXcml0ZU1vZGU6IHN0cmluZztcclxuICBASW5wdXQoKSBoaW50ID0gJyc7XHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmFsdWU6IGFueTtcclxuICBASW5wdXQoKSBzaG93RXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0hpbnQ6IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93SWZFbXB0eTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGluc2lkZVRhYmxlOiBhbnk7XHJcbiAgXHJcblxyXG5cclxuXHJcbiAgY29udHJvbDogRm9ybUNvbnRyb2wgfCB1bmRlZmluZWQ7XHJcbiAgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBtYXhMZW5ndGg6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBfaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHVibGljIGkxOG46IENvcmVJMThuU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEZvcm1Db250cm9sKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtQ29udHJvbCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sKTtcclxuICAgICAgc3dpdGNoIChmb3JtQ29udHJvbC5jb25zdHJ1Y3Rvcikge1xyXG4gICAgICAgIGNhc2UgRm9ybUNvbnRyb2xOYW1lOlxyXG4gICAgICAgICAgdGhpcy5jb250cm9sID0gdGhpcy5pbmplY3RvclxyXG4gICAgICAgICAgICAuZ2V0KEZvcm1Hcm91cERpcmVjdGl2ZSlcclxuICAgICAgICAgICAgLmdldENvbnRyb2woZm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2xOYW1lKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wgPSAoZm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2xEaXJlY3RpdmUpXHJcbiAgICAgICAgICAgIC5mb3JtIGFzIEZvcm1Db250cm9sO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0Rm9ybVZhbGlkYXRvcnMoKVxyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybVZhbGlkYXRvcnMoKXtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuY29udHJvbClcclxuICAgIHRoaXMucmVxdWlyZWQgPSB0aGlzLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/PyBmYWxzZTtcclxuXHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IFR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWw6IFR5cGUgfCBudWxsKSA9PiBUeXBlKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IFR5cGUpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxufVxyXG4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFZLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBRUwsV0FBVyxFQUNYLFVBQVUsRUFDVixTQUFTLEVBQ1QsZUFBZSxFQUNmLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDOzs7QUFNeEIsTUFBTSxPQUFPLDZCQUE2QjtJQWtDcEI7SUFBMkI7SUEvQnRDLFVBQVUsQ0FBVTtJQUNwQixrQkFBa0IsQ0FBUztJQUMzQixpQkFBaUIsQ0FBUztJQUMxQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ1YsT0FBTyxDQUFXO0lBQ2xCLFdBQVcsQ0FBUztJQUNwQixJQUFJLENBQVM7SUFDYixnQkFBZ0IsQ0FBUztJQUN6QixRQUFRLENBQVM7SUFDakIsV0FBVyxDQUFTO0lBQ3BCLFdBQVcsQ0FBTTtJQUNqQixJQUFJLENBQU07SUFDVixLQUFLLENBQVU7SUFDZixTQUFTLENBQVU7SUFFNUIsWUFBWSxDQUFLO0lBQ2pCLFlBQVksQ0FBSztJQUNSLE9BQU8sQ0FBUztJQUN6Qix3QkFBd0I7SUFDakIsYUFBYSxDQUFPO0lBQ2xCLE9BQU8sQ0FBUztJQUNoQixhQUFhLENBQUs7SUFDbEIsYUFBYSxDQUFLO0lBRTNCLEtBQUssQ0FBTTtJQUNYLE9BQU8sQ0FBMEI7SUFDakMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixTQUFTLENBQU07SUFFZixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5CLFlBQW9CLFFBQWtCLEVBQVMsSUFBcUI7UUFB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YSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBQ0QsVUFBVSxDQUFDLEtBQVc7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQThCO0lBRS9DLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO0lBQ2hDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO3VHQTFHVSw2QkFBNkI7MkZBQTdCLDZCQUE2Qjs7MkZBQTdCLDZCQUE2QjtrQkFIekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2lCQUN0QzsyR0FJVSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIFZhbGlkYXRvcnMsXHJcbiAgTmdDb250cm9sLFxyXG4gIEZvcm1Db250cm9sTmFtZSxcclxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgRm9ybUNvbnRyb2xEaXJlY3RpdmUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3JlSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHBDb250cm9sVmFsdWVBY2Nlc3Nvcl0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT5cclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXRcclxue1xyXG4gIEBJbnB1dCgpIGlzUmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbGFiZWxUZXh0V3JpdGVNb2RlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbGFiZWxUZXh0UmVhZE1vZGU6IHN0cmluZztcclxuICBASW5wdXQoKSBoaW50ID0gJyc7XHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0Vycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dIaW50OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0lmRW1wdHk6IHN0cmluZztcclxuICBASW5wdXQoKSBpbnNpZGVUYWJsZTogYW55O1xyXG4gIEBJbnB1dCgpIG1hc2s6IGFueTtcclxuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcclxuICBASW5wdXQoKSBtYXRTdWZmaXg6IGJvb2xlYW47XHJcblxyXG4gIG1pbkRhdGVWYWx1ZTogYW55XHJcbiAgbWF4RGF0ZVZhbHVlOiBhbnlcclxuICBASW5wdXQoKSBtYXhEYXRlOiBzdHJpbmc7XHJcbiAgLy8gQFZpZXdDaGlsZCgnZGVmYXVsdCcpXHJcbiAgcHVibGljIGRhdGVwaWNrZXJPYmohOiBhbnk7XHJcbiAgQElucHV0KCkgbWluRGF0ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGN1c3RvbU1heERhdGU6IGFueVxyXG4gIEBJbnB1dCgpIGN1c3RvbU1pbkRhdGU6IGFueVxyXG5cclxuICB2YWx1ZTogYW55O1xyXG4gIGNvbnRyb2w6IEZvcm1Db250cm9sIHwgdW5kZWZpbmVkO1xyXG4gIHJlcXVpcmVkID0gZmFsc2U7XHJcbiAgbWF4TGVuZ3RoOiBhbnk7XHJcblxyXG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybUNvbnRyb2woKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCk7XHJcbiAgICAgIHN3aXRjaCAoZm9ybUNvbnRyb2wuY29uc3RydWN0b3IpIHtcclxuICAgICAgICBjYXNlIEZvcm1Db250cm9sTmFtZTpcclxuICAgICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuaW5qZWN0b3JcclxuICAgICAgICAgICAgLmdldChGb3JtR3JvdXBEaXJlY3RpdmUpXHJcbiAgICAgICAgICAgIC5nZXRDb250cm9sKGZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sTmFtZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5jb250cm9sID0gKGZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sRGlyZWN0aXZlKVxyXG4gICAgICAgICAgICAuZm9ybSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEZvcm1WYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLnNldERhdGVGb3JtQ29udHJvbCgpXHJcbiAgfVxyXG5cclxuICBzZXRGb3JtVmFsaWRhdG9ycygpe1xyXG4gICAgY29uc29sZS5sb2codGhpcy5jb250cm9sKVxyXG4gICAgdGhpcy5yZXF1aXJlZCA9IHRoaXMuY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZUZvcm1Db250cm9sKCl7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50WWVhciA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBjdXJyZW50TW9udGggPSB0b2RheS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgY3VycmVudERheSA9IHRvZGF5LmdldERhdGUoKTtcclxuICAgIGlmICh0aGlzLm1pbkRhdGUpIHtcclxuICAgICAgaWYgKHRoaXMubWluRGF0ZSA9PSAndG9kYXknKSB7XHJcbiAgICAgICAgdGhpcy5taW5EYXRlVmFsdWUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgY3VycmVudE1vbnRoLCBjdXJyZW50RGF5KVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubWF4RGF0ZSkge1xyXG4gICAgICBpZiAodGhpcy5tYXhEYXRlID09ICd0b2RheScpIHtcclxuICAgICAgICB0aGlzLm1heERhdGVWYWx1ZSA9IG5ldyBEYXRlKGN1cnJlbnRZZWFyLCBjdXJyZW50TW9udGgsIGN1cnJlbnREYXkpXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhEYXRlID09ICdvbmVZZWFyJykge1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZVZhbHVlID0gbmV3IERhdGUoY3VycmVudFllYXIgKyAxLCBjdXJyZW50TW9udGgsIGN1cnJlbnREYXkgLSAxKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmN1c3RvbU1heERhdGUpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VzdG9tTWF4RGF0ZSlcclxuICAgICAgdGhpcy5tYXhEYXRlVmFsdWUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICh0aGlzLmZpZWxkKSB7XHJcbiAgICAvLyAgIHRoaXMuZGF0ZS5zZXRWYWx1ZSh0aGlzLmZpZWxkKTtcclxuICAgIC8vIH1cclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB0aGlzLmNvbnRyb2wuYWRkVmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gIH1cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBUeXBlKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsOiBUeXBlIHwgbnVsbCkgPT4gVHlwZSk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBUeXBlKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,201 +1,134 @@
1
1
  /* eslint-disable @typescript-eslint/no-this-alias */
2
2
  /* eslint-disable no-var */
3
- import { ReactiveFormsModule, Validators } from '@angular/forms';
3
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
4
4
  /* eslint-disable @typescript-eslint/no-explicit-any */
5
5
  /* eslint-disable @angular-eslint/use-lifecycle-interface */
6
6
  /* eslint-disable @angular-eslint/component-selector */
7
- import { Component, Input, Output, EventEmitter } from '@angular/core';
7
+ import { Component, Input, Output, EventEmitter, CUSTOM_ELEMENTS_SCHEMA, forwardRef } from '@angular/core';
8
8
  import { FormControl } from '@angular/forms';
9
- import { MatError, MatFormField, MatHint } from '@angular/material/form-field';
10
- import { map, startWith } from 'rxjs/operators';
11
- import { BaseComponent } from '../base-component/base-component.component';
9
+ import { MatError, MatFormField, MatFormFieldModule, MatHint } from '@angular/material/form-field';
12
10
  import { InfoItemComponent } from "../info-item/info-item.component";
13
- import { AsyncPipe, NgClass, NgForOf, NgIf } from "@angular/common";
11
+ import { NgClass, NgForOf, NgIf } from "@angular/common";
14
12
  import { MatAutocomplete, MatAutocompleteTrigger, MatOption } from "@angular/material/autocomplete";
13
+ import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
14
+ import { MatInputModule } from '@angular/material/input';
15
+ import { ValidationErrorsComponent } from "../validation-errors/validation-errors.component";
15
16
  import * as i0 from "@angular/core";
16
17
  import * as i1 from "@angular/forms";
17
- export class CustomSearchableComponent extends BaseComponent {
18
- myControl = new FormControl();
18
+ import * as i2 from "@angular/material/form-field";
19
+ import * as i3 from "@angular/material/input";
20
+ export class CustomSearchableComponent extends ControlValueAccessorDirective {
19
21
  options;
20
- label;
21
22
  selectedValue = new EventEmitter();
22
- resetByDeleteBtn = new EventEmitter();
23
23
  isLengthGreaterThan4 = new EventEmitter();
24
- noData = false;
25
- filteredOptions;
26
- // @Input() floatLabel: FloatLabelType = 'auto';
24
+ disabled = false;
25
+ name = 'name';
26
+ displayedLable;
27
+ key = 'description';
27
28
  floatLabel = 'auto';
28
29
  className = 'bordered-input';
29
- // @Input() disabled: boolean = false;
30
- // form: FormGroup = new FormGroup({});
31
- ngOnInit() {
32
- // this.resetPropagator.subscribe(this, this.clearInput);
33
- if (this.field?.key) {
34
- const obj = {
35
- description: this.field.value,
36
- value: this.field.key
37
- };
38
- this.myControl.setValue(obj);
39
- }
40
- if (this.required) {
41
- this.controller.setValidators([Validators.required]);
42
- }
43
- // var leftDomain = false;
44
- // const self = this
45
- // var interval = setInterval(function () {
46
- // try {
47
- // if (self.field?.key) {
48
- // if (self.lov?.options?.length) {
49
- // const obj = {
50
- // description: self.field.value,
51
- // value: self.field.key
52
- // }
53
- // self.myControl.setValue(obj)
54
- // }
55
- // else {
56
- // leftDomain = true;
57
- // }
58
- // } else {
59
- // leftDomain = true;
60
- // }
61
- // }
62
- // catch (e) {
63
- // if (leftDomain || !self.field?.key) {
64
- // clearInterval(interval);
65
- // return;
66
- // }
67
- // leftDomain = true;
68
- // }
69
- // }, 1000);
70
- }
30
+ noData = false;
31
+ filteredOptions;
32
+ searchControl = new FormControl();
71
33
  clearInput() {
34
+ this.control.setValue(null);
35
+ this.searchControl.setValue(null);
72
36
  if (!this.isReadOnly) {
73
- this.myControl.setValue(null);
74
- this.controller.setValue(null);
75
- this.emitedValue.emit({
76
- key: null,
77
- value: null
78
- });
37
+ this.setFilteredOptions();
79
38
  }
80
39
  }
40
+ onFocusOut() {
41
+ this.control.markAsTouched();
42
+ }
81
43
  onKeyDown(e, input) {
82
44
  setTimeout(() => {
83
45
  //reset in case no value and delete or backspace pressed
84
- if ((e.keyCode == 8 || e.keyCode == 46) && !this.myControl.value) {
85
- if (this.field) {
86
- this.field.key = null;
87
- this.field.value = null;
46
+ if ((e.keyCode == 8 || e.keyCode == 46) && !this.control.value) {
47
+ if (this.control) {
48
+ this.control.setValue(null);
88
49
  }
89
- this.myControl.setValue(null);
90
50
  input.focus();
91
- this.resetByDeleteBtn.emit();
92
51
  }
93
52
  });
94
53
  }
95
54
  ngOnChanges(changes) {
96
- console.log(changes);
97
- if (changes?.['disabled']) {
98
- changes?.['disabled']?.currentValue ? this.myControl.disable() : this.myControl.enable();
99
- }
100
- if (changes?.['field']?.currentValue?.key == null) {
101
- // this.myControl.setValue(null)
55
+ this.setFilteredOptions();
56
+ }
57
+ onValueChange(data) {
58
+ this.setFilteredOptions(data);
59
+ }
60
+ setFilteredOptions(data) {
61
+ if (this.options.length > 0) {
62
+ this.noData = false;
63
+ // this.loading = false
64
+ this.filteredOptions = data?.target?.value ? this._filter(data.target.value) : this.options.slice(0, 30);
65
+ this.filteredOptions;
102
66
  }
103
67
  else {
104
- this.controller.setValue(changes['field'].currentValue.key);
105
- }
106
- this.loading = !!(changes['loading'] && changes['loading'].currentValue);
107
- if (changes['options'] && changes['options'].currentValue) {
108
- // this.loading = true
109
- this.options = changes['options'].currentValue;
110
- if (this.options.length > 0) {
111
- // console.log('yes')
112
- this.noData = false;
113
- // this.loading = false
114
- this.filteredOptions = this.myControl.valueChanges.pipe(startWith(''), map(value => {
115
- console.log(value);
116
- return (value ? this._filter(value) : this.options.slice(0, 30));
117
- }));
118
- }
119
- else {
120
- this.noData = true;
121
- }
68
+ this.noData = true;
122
69
  }
123
70
  }
124
- onValueChange() {
125
- // this.myControl.setErrors({'incorrect': true});
126
- }
127
- focusOutFunction(event) {
128
- console.log("event", event);
129
- // if(!this.field.key || !this.myControl?.valid){
130
- // this.clearInput()
131
- // // this.field.key=null
132
- // // this.myControl.setValue(null);
133
- // }
134
- }
135
71
  _filter(value) {
136
72
  const filterValue = typeof value === 'string' ? value?.toLowerCase() : value;
137
73
  return this.options.filter((option) => Object.values(option).join('')?.toLowerCase().includes(filterValue)).slice(0, 30);
138
74
  }
139
75
  displayFn(option) {
140
- return option ? option.description : '';
76
+ return option ? option : '';
141
77
  }
142
78
  getAutoComplete(value) {
143
- console.log('value', value);
144
- if (this.name == 'organizationDetails') {
145
- this.emitedValue.emit({
146
- key: value.value,
147
- orgId: value.orgId,
148
- value: value.description
149
- });
150
- }
151
- else {
152
- this.myControl.setValue(value.value);
153
- this.emitedValue.emit({
154
- key: value.value,
155
- value: value.description
156
- });
157
- }
158
- }
159
- onLoadOptions(event) {
160
- const input = event.target.value;
161
- if (input.length >= 4) {
162
- this.isLengthGreaterThan4.emit(input);
163
- }
79
+ this.control.setValue({ key: value[this.key] });
80
+ this.searchControl.setValue(value[this.key]);
164
81
  }
165
82
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CustomSearchableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
166
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: CustomSearchableComponent, isStandalone: true, selector: "app-custom-searchable", inputs: { myControl: "myControl", options: "options", label: "label", floatLabel: "floatLabel", className: "className" }, outputs: { selectedValue: "selectedValue", resetByDeleteBtn: "resetByDeleteBtn", isLengthGreaterThan4: "isLengthGreaterThan4" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"isReadOnly && field?.value\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"hasLabel\" [value]=\"field?.value\"></app-info-item>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!isReadOnly\">\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required\" class=\"fs-11 fc-dark-gray\">\r\n {{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : (disabled || loading) }\"\r\n [floatLabel]=\"floatLabel\" >\r\n <!-- (click)=\"clearInput()\" -->\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <!-- <bdi> -->\r\n <input #autocompleteInput type=\"text\" (keydown)=\"onKeyDown($event, autocompleteInput)\" [attr.disabled]=\"disabled \" [placeholder]=\"label\" aria-label=\"Number\" matInput\r\n (input)=\"onValueChange()\" [formControl]=\"myControl\"\r\n [value]=\"field?.value\" ngDefaultControl [name]=\"name\" [matAutocomplete]=\"auto\">\r\n <!-- </bdi> -->\r\n </label>\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix *ngIf=\"loading\"></span>\r\n <span class=\"sfi sfi-close d-inline-block fc-black cursor-pointer\" (click)=\"clearInput()\" matSuffix\r\n *ngIf=\"!loading && field?.value\"></span>\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" [displayWith]=\"displayFn\" \r\n (optionSelected)='getAutoComplete($event.option.value)'>\r\n <ng-container *ngIf=\"!noData\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n <figure *ngIf=\"option['avatar_url']\" class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\">\r\n </figure>\r\n <span *ngIf=\"option['avatar_url']\" class=\"mx-2\"></span>\r\n <!-- <bdi> -->\r\n {{option['description']}}\r\n <!-- </bdi> -->\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <mat-error class=\"mb-2\" *ngIf=\"(!myControl?.valid)\">{{i18n.translate('validSelectError')}}{{label}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n </mat-form-field>\r\n</ng-container>\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}\n"], dependencies: [{ kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }] });
83
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: CustomSearchableComponent, isStandalone: true, selector: "app-custom-searchable", inputs: { options: "options", disabled: "disabled", name: "name", displayedLable: "displayedLable", key: "key", floatLabel: "floatLabel", className: "className" }, outputs: { selectedValue: "selectedValue", isLengthGreaterThan4: "isLengthGreaterThan4" }, providers: [
84
+ {
85
+ provide: NG_VALUE_ACCESSOR,
86
+ useExisting: forwardRef(() => CustomSearchableComponent),
87
+ multi: true,
88
+ },
89
+ ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"isReadOnly && control?.value\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"label ? true: false\" [value]=\"control?.value\"></app-info-item>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!isReadOnly\">\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"label\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required\" class=\"fs-11 fc-dark-gray\">\r\n {{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : (disabled || loading) }\"\r\n [floatLabel]=\"floatLabel\" >\r\n <!-- (click)=\"clearInput()\" -->\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <!-- <bdi> -->\r\n <input #autocompleteInput type=\"text\" (keydown)=\"onKeyDown($event, autocompleteInput)\" [attr.disabled]=\"disabled \" [placeholder]=\"label\" aria-label=\"Number\" matInput\r\n (input)=\"onValueChange($event)\" [formControl]=\"searchControl\"\r\n ngDefaultControl [name]=\"'test'\" [matAutocomplete]=\"auto\" [value]=\"value\" (focusout)=\"onFocusOut()\">\r\n <!-- </bdi> -->\r\n </label>\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix *ngIf=\"loading\"></span>\r\n <span class=\"sfi sfi-close d-inline-block fc-black cursor-pointer\" (click)=\"clearInput()\" matSuffix\r\n *ngIf=\"!loading && control?.value\"></span>\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" [displayWith]=\"displayFn\" \r\n (optionSelected)='getAutoComplete($event.option.value)'>\r\n <ng-container *ngIf=\"!noData\">\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n <figure *ngIf=\"option['avatar_url']\" class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\">\r\n </figure>\r\n <span *ngIf=\"option['avatar_url']\" class=\"mx-2\"></span>\r\n <!-- <bdi> -->\r\n {{option[displayedLable]}}\r\n <!-- </bdi> -->\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{i18n.translate('validSelectError')}}{{label}}\r\n </mat-error> -->\r\n\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n\r\n</ng-container>\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}\n"], dependencies: [{ kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: ValidationErrorsComponent, selector: "app-validation-errors", inputs: ["errors", "customErrorMessages"] }] });
167
90
  }
168
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CustomSearchableComponent, decorators: [{
169
92
  type: Component,
170
- args: [{ selector: 'app-custom-searchable', imports: [
93
+ args: [{ selector: 'app-custom-searchable', schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [
171
94
  InfoItemComponent,
172
95
  NgClass,
173
96
  NgIf,
174
97
  ReactiveFormsModule,
175
98
  MatAutocomplete,
176
99
  MatOption,
177
- AsyncPipe,
178
100
  MatAutocompleteTrigger,
179
101
  MatError,
180
102
  MatHint,
181
103
  NgForOf,
182
- MatFormField
183
- ], standalone: true, template: "<ng-container *ngIf=\"isReadOnly && field?.value\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"hasLabel\" [value]=\"field?.value\"></app-info-item>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!isReadOnly\">\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required\" class=\"fs-11 fc-dark-gray\">\r\n {{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : (disabled || loading) }\"\r\n [floatLabel]=\"floatLabel\" >\r\n <!-- (click)=\"clearInput()\" -->\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <!-- <bdi> -->\r\n <input #autocompleteInput type=\"text\" (keydown)=\"onKeyDown($event, autocompleteInput)\" [attr.disabled]=\"disabled \" [placeholder]=\"label\" aria-label=\"Number\" matInput\r\n (input)=\"onValueChange()\" [formControl]=\"myControl\"\r\n [value]=\"field?.value\" ngDefaultControl [name]=\"name\" [matAutocomplete]=\"auto\">\r\n <!-- </bdi> -->\r\n </label>\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix *ngIf=\"loading\"></span>\r\n <span class=\"sfi sfi-close d-inline-block fc-black cursor-pointer\" (click)=\"clearInput()\" matSuffix\r\n *ngIf=\"!loading && field?.value\"></span>\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" [displayWith]=\"displayFn\" \r\n (optionSelected)='getAutoComplete($event.option.value)'>\r\n <ng-container *ngIf=\"!noData\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n <figure *ngIf=\"option['avatar_url']\" class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\">\r\n </figure>\r\n <span *ngIf=\"option['avatar_url']\" class=\"mx-2\"></span>\r\n <!-- <bdi> -->\r\n {{option['description']}}\r\n <!-- </bdi> -->\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <mat-error class=\"mb-2\" *ngIf=\"(!myControl?.valid)\">{{i18n.translate('validSelectError')}}{{label}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n </mat-form-field>\r\n</ng-container>\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}\n"] }]
184
- }], propDecorators: { myControl: [{
185
- type: Input
186
- }], options: [{
187
- type: Input
188
- }], label: [{
104
+ MatFormField,
105
+ MatFormFieldModule,
106
+ MatInputModule,
107
+ ValidationErrorsComponent
108
+ ], standalone: true, providers: [
109
+ {
110
+ provide: NG_VALUE_ACCESSOR,
111
+ useExisting: forwardRef(() => CustomSearchableComponent),
112
+ multi: true,
113
+ },
114
+ ], template: "<ng-container *ngIf=\"isReadOnly && control?.value\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"label ? true: false\" [value]=\"control?.value\"></app-info-item>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!isReadOnly\">\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"label\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n <span *ngIf=\"!required\" class=\"fs-11 fc-dark-gray\">\r\n {{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : (disabled || loading) }\"\r\n [floatLabel]=\"floatLabel\" >\r\n <!-- (click)=\"clearInput()\" -->\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <!-- <bdi> -->\r\n <input #autocompleteInput type=\"text\" (keydown)=\"onKeyDown($event, autocompleteInput)\" [attr.disabled]=\"disabled \" [placeholder]=\"label\" aria-label=\"Number\" matInput\r\n (input)=\"onValueChange($event)\" [formControl]=\"searchControl\"\r\n ngDefaultControl [name]=\"'test'\" [matAutocomplete]=\"auto\" [value]=\"value\" (focusout)=\"onFocusOut()\">\r\n <!-- </bdi> -->\r\n </label>\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix *ngIf=\"loading\"></span>\r\n <span class=\"sfi sfi-close d-inline-block fc-black cursor-pointer\" (click)=\"clearInput()\" matSuffix\r\n *ngIf=\"!loading && control?.value\"></span>\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" [displayWith]=\"displayFn\" \r\n (optionSelected)='getAutoComplete($event.option.value)'>\r\n <ng-container *ngIf=\"!noData\">\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n <figure *ngIf=\"option['avatar_url']\" class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\">\r\n </figure>\r\n <span *ngIf=\"option['avatar_url']\" class=\"mx-2\"></span>\r\n <!-- <bdi> -->\r\n {{option[displayedLable]}}\r\n <!-- </bdi> -->\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{i18n.translate('validSelectError')}}{{label}}\r\n </mat-error> -->\r\n\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n\r\n</ng-container>\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}\n"] }]
115
+ }], propDecorators: { options: [{
189
116
  type: Input
190
117
  }], selectedValue: [{
191
118
  type: Output
192
- }], resetByDeleteBtn: [{
193
- type: Output
194
119
  }], isLengthGreaterThan4: [{
195
120
  type: Output
121
+ }], disabled: [{
122
+ type: Input
123
+ }], name: [{
124
+ type: Input
125
+ }], displayedLable: [{
126
+ type: Input
127
+ }], key: [{
128
+ type: Input
196
129
  }], floatLabel: [{
197
130
  type: Input
198
131
  }], className: [{
199
132
  type: Input
200
133
  }] } });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlYXJjaGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvY3VzdG9tLXNlYXJjaGFibGUtYXV0b2NvbXBsZXRlL2N1c3RvbS1zZWFyY2hhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL2N1c3RvbS1zZWFyY2hhYmxlLWF1dG9jb21wbGV0ZS9jdXN0b20tc2VhcmNoYWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsMkJBQTJCO0FBQzNCLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCx1REFBdUQ7QUFDdkQsNERBQTREO0FBQzVELHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUF5QyxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFpQixRQUFRLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzdGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJ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Z01BQ2pCLE9BQU8sb0ZBQ1AsSUFBSSw0RkFDSixtQkFBbUIsMGtCQUNuQixlQUFlLHlXQUNmLFNBQVMsZ0pBQ1QsU0FBUyw4Q0FDVCxzQkFBc0IscVFBQ3RCLFFBQVEsa0ZBQ1IsT0FBTyw4RUFDUCxPQUFPLG1IQUNQLFlBQVk7OzJGQU9ILHlCQUF5QjtrQkF2QnJDLFNBQVM7K0JBQ0UsdUJBQXVCLFdBR3hCO3dCQUNQLGlCQUFpQjt3QkFDakIsT0FBTzt3QkFDUCxJQUFJO3dCQUNKLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixTQUFTO3dCQUNULFNBQVM7d0JBQ1Qsc0JBQXNCO3dCQUN0QixRQUFRO3dCQUNSLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxZQUFZO3FCQUNiLGNBQ1csSUFBSTs4QkFNUCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUlFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzICovXHJcbi8qIGVzbGludC1kaXNhYmxlIG5vLXZhciAqL1xyXG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtGbG9hdExhYmVsVHlwZSwgTWF0RXJyb3IsIE1hdEZvcm1GaWVsZCwgTWF0SGludH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UtY29tcG9uZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7SW5mb0l0ZW1Db21wb25lbnR9IGZyb20gXCIuLi9pbmZvLWl0ZW0vaW5mby1pdGVtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0FzeW5jUGlwZSwgTmdDbGFzcywgTmdGb3JPZiwgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgTWF0T3B0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLXNlYXJjaGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tc2VhcmNoYWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXNlYXJjaGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBJbmZvSXRlbUNvbXBvbmVudCxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBOZ0lmLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEF1dG9jb21wbGV0ZSxcclxuICAgIE1hdE9wdGlvbixcclxuICAgIEFzeW5jUGlwZSxcclxuICAgIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXHJcbiAgICBNYXRFcnJvcixcclxuICAgIE1hdEhpbnQsXHJcbiAgICBOZ0Zvck9mLFxyXG4gICAgTWF0Rm9ybUZpZWxkXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21TZWFyY2hhYmxlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbXlDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnMhOiBhbnk7XHJcbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkVmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlc2V0QnlEZWxldGVCdG4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlzTGVuZ3RoR3JlYXRlclRoYW40ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIG5vRGF0YSA9IGZhbHNlO1xyXG4gIGZpbHRlcmVkT3B0aW9ucyE6IE9ic2VydmFibGU8YW55PjtcclxuICAvLyBASW5wdXQoKSBmbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcclxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBhbnkgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJ2JvcmRlcmVkLWlucHV0JztcclxuICAvLyBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vIGZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gdGhpcy5yZXNldFByb3BhZ2F0b3Iuc3Vic2NyaWJlKHRoaXMsIHRoaXMuY2xlYXJJbnB1dCk7XHJcbiAgICBpZiAodGhpcy5maWVsZD8ua2V5KSB7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5maWVsZC52YWx1ZSxcclxuICAgICAgICB2YWx1ZTogdGhpcy5maWVsZC5rZXlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWx1ZShvYmopXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy5jb250cm9sbGVyLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB2YXIgbGVmdERvbWFpbiA9IGZhbHNlO1xyXG4gICAgLy8gY29uc3Qgc2VsZiA9IHRoaXNcclxuICAgIC8vIHZhciBpbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcclxuICAgIC8vICAgdHJ5IHtcclxuICAgIC8vICAgICBpZiAoc2VsZi5maWVsZD8ua2V5KSB7XHJcblxyXG4gICAgLy8gICAgICAgaWYgKHNlbGYubG92Py5vcHRpb25zPy5sZW5ndGgpIHtcclxuICAgIC8vICAgICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBzZWxmLmZpZWxkLnZhbHVlLFxyXG4gICAgLy8gICAgICAgICAgIHZhbHVlOiBzZWxmLmZpZWxkLmtleVxyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIHNlbGYubXlDb250cm9sLnNldFZhbHVlKG9iailcclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICAgIGVsc2Uge1xyXG4gICAgLy8gICAgICAgICBsZWZ0RG9tYWluID0gdHJ1ZTtcclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICB9IGVsc2Uge1xyXG4gICAgLy8gICAgICAgbGVmdERvbWFpbiA9IHRydWU7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGNhdGNoIChlKSB7XHJcbiAgICAvLyAgICAgaWYgKGxlZnREb21haW4gfHwgIXNlbGYuZmllbGQ/LmtleSkge1xyXG4gICAgLy8gICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAvLyAgICAgICByZXR1cm47XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGxlZnREb21haW4gPSB0cnVlO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIGNsZWFySW5wdXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSkge1xyXG4gICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWx1ZShudWxsKVxyXG4gICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHRoaXMuZW1pdGVkVmFsdWUuZW1pdCh7XHJcbiAgICAgICAga2V5OiBudWxsLFxyXG4gICAgICAgIHZhbHVlOiBudWxsXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCwgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpe1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vcmVzZXQgaW4gY2FzZSBubyB2YWx1ZSBhbmQgZGVsZXRlIG9yIGJhY2tzcGFjZSBwcmVzc2VkXHJcbiAgICAgIGlmKCAoZS5rZXlDb2RlID09IDggfHwgZS5rZXlDb2RlID09IDQ2KSAmJiAhdGhpcy5teUNvbnRyb2wudmFsdWUpe1xyXG4gICAgICAgIGlmKHRoaXMuZmllbGQpe1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5rZXkgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5maWVsZC52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubXlDb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIGlucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgdGhpcy5yZXNldEJ5RGVsZXRlQnRuLmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnNvbGUubG9nKGNoYW5nZXMpXHJcbiAgICBpZiAoY2hhbmdlcz8uWydkaXNhYmxlZCddKSB7XHJcbiAgICAgIGNoYW5nZXM/LlsnZGlzYWJsZWQnXT8uY3VycmVudFZhbHVlID8gdGhpcy5teUNvbnRyb2wuZGlzYWJsZSgpIDogdGhpcy5teUNvbnRyb2wuZW5hYmxlKClcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlcz8uWydmaWVsZCddPy5jdXJyZW50VmFsdWU/LmtleSA9PSBudWxsKSB7XHJcbiAgICAgIC8vIHRoaXMubXlDb250cm9sLnNldFZhbHVlKG51bGwpXHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgdGhpcy5jb250cm9sbGVyLnNldFZhbHVlKGNoYW5nZXNbJ2ZpZWxkJ10uY3VycmVudFZhbHVlLmtleSlcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gISEoY2hhbmdlc1snbG9hZGluZyddICYmIGNoYW5nZXNbJ2xvYWRpbmcnXS5jdXJyZW50VmFsdWUpO1xyXG4gICAgaWYgKGNoYW5nZXNbJ29wdGlvbnMnXSAmJiBjaGFuZ2VzWydvcHRpb25zJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIC8vIHRoaXMubG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5vcHRpb25zID0gY2hhbmdlc1snb3B0aW9ucyddLmN1cnJlbnRWYWx1ZVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygneWVzJylcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlXHJcbiAgICAgICAgLy8gdGhpcy5sb2FkaW5nID0gZmFsc2VcclxuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMubXlDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgICAgc3RhcnRXaXRoKCcnKSxcclxuICAgICAgICAgIG1hcCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlID8gdGhpcy5fZmlsdGVyKHZhbHVlKSA6IHRoaXMub3B0aW9ucy5zbGljZSgwLCAzMCkpXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBvblZhbHVlQ2hhbmdlKCkge1xyXG4gICAgLy8gdGhpcy5teUNvbnRyb2wuc2V0RXJyb3JzKHsnaW5jb3JyZWN0JzogdHJ1ZX0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXRGdW5jdGlvbihldmVudCkge1xyXG4gICAgY29uc29sZS5sb2coXCJldmVudFwiLCBldmVudClcclxuICAgIC8vIGlmKCF0aGlzLmZpZWxkLmtleSB8fCAhdGhpcy5teUNvbnRyb2w/LnZhbGlkKXtcclxuICAgIC8vICAgdGhpcy5jbGVhcklucHV0KClcclxuICAgIC8vICAgLy8gdGhpcy5maWVsZC5rZXk9bnVsbFxyXG4gICAgLy8gICAvLyB0aGlzLm15Q29udHJvbC5zZXRWYWx1ZShudWxsKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbHRlcih2YWx1ZTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlPy50b0xvd2VyQ2FzZSgpIDogdmFsdWU7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbHRlcigob3B0aW9uOiBhbnkpID0+IE9iamVjdC52YWx1ZXMob3B0aW9uKS5qb2luKCcnKT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpLnNsaWNlKDAsIDMwKTtcclxuICB9XHJcblxyXG4gIGRpc3BsYXlGbihvcHRpb246IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uLmRlc2NyaXB0aW9uIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRBdXRvQ29tcGxldGUodmFsdWU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ3ZhbHVlJywgdmFsdWUpO1xyXG4gICAgaWYgKHRoaXMubmFtZSA9PSAnb3JnYW5pemF0aW9uRGV0YWlscycpIHtcclxuICAgICAgdGhpcy5lbWl0ZWRWYWx1ZS5lbWl0KHtcclxuICAgICAgICBrZXk6IHZhbHVlLnZhbHVlLFxyXG4gICAgICAgIG9yZ0lkOiB2YWx1ZS5vcmdJZCxcclxuICAgICAgICB2YWx1ZTogdmFsdWUuZGVzY3JpcHRpb25cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubXlDb250cm9sLnNldFZhbHVlKHZhbHVlLnZhbHVlKTtcclxuICAgICAgdGhpcy5lbWl0ZWRWYWx1ZS5lbWl0KHtcclxuICAgICAgICBrZXk6IHZhbHVlLnZhbHVlLFxyXG4gICAgICAgIHZhbHVlOiB2YWx1ZS5kZXNjcmlwdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Mb2FkT3B0aW9ucyhldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIGlmIChpbnB1dC5sZW5ndGggPj0gNCkge1xyXG4gICAgICB0aGlzLmlzTGVuZ3RoR3JlYXRlclRoYW40LmVtaXQoaW5wdXQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXNSZWFkT25seSAmJiBmaWVsZD8udmFsdWVcIj5cclxuICA8YXBwLWluZm8taXRlbSBjbGFzcz1cImluZm8taXRlbSB3LTEwMFwiIFtsYWJlbF09XCJsYWJlbFwiIFtpbnNpZGVUYWJsZV09XCJpbnNpZGVUYWJsZVwiIFtoYXNMYWJlbF09XCJoYXNMYWJlbFwiIFt2YWx1ZV09XCJmaWVsZD8udmFsdWVcIj48L2FwcC1pbmZvLWl0ZW0+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1JlYWRPbmx5XCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0xXCIgKm5nSWY9XCJoYXNMYWJlbFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTBcIj57e2xhYmVsfX08L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFyZXF1aXJlZFwiIGNsYXNzPVwiZnMtMTEgZmMtZGFyay1ncmF5XCI+XHJcbiAgICAgIHt7aTE4bi50cmFuc2xhdGUoJ09wdGlvbmFsJyl9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInByaW1hcnktZm9ybSB7e2NsYXNzTmFtZX19XCIgW25nQ2xhc3NdPVwieydpbnB1dC1kaXNhYmxlZCcgOiAoZGlzYWJsZWQgfHwgbG9hZGluZykgfVwiXHJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCIgPlxyXG4gICAgPCEtLSAoY2xpY2spPVwiY2xlYXJJbnB1dCgpXCIgLS0+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktc2VhcmNoIGZjLWNvcmFsIGZzLTE4XCIgbWF0UHJlZml4Pjwvc3Bhbj5cclxuICAgIDxsYWJlbCBjbGFzcz1cIm1hdC1mb3JtLWNvbnRlbnRcIj5cclxuICAgICAgPCEtLSA8YmRpPiAtLT5cclxuICAgICAgPGlucHV0ICNhdXRvY29tcGxldGVJbnB1dCB0eXBlPVwidGV4dFwiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQsIGF1dG9jb21wbGV0ZUlucHV0KVwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkIFwiIFtwbGFjZWhvbGRlcl09XCJsYWJlbFwiIGFyaWEtbGFiZWw9XCJOdW1iZXJcIiBtYXRJbnB1dFxyXG4gICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZSgpXCIgW2Zvcm1Db250cm9sXT1cIm15Q29udHJvbFwiXHJcbiAgICAgIFt2YWx1ZV09XCJmaWVsZD8udmFsdWVcIiBuZ0RlZmF1bHRDb250cm9sIFtuYW1lXT1cIm5hbWVcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIj5cclxuICAgIDwhLS0gPC9iZGk+IC0tPlxyXG4gIDwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktc3Bpbm5lciBkLWlubGluZS1ibG9jayBzcGluIGZjLWNvcmFsXCIgbWF0U3VmZml4ICpuZ0lmPVwibG9hZGluZ1wiPjwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1jbG9zZSBkLWlubGluZS1ibG9jayBmYy1ibGFjayBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbGVhcklucHV0KClcIiBtYXRTdWZmaXhcclxuICAgICAgKm5nSWY9XCIhbG9hZGluZyAmJiBmaWVsZD8udmFsdWVcIj48L3NwYW4+XHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZSBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCIgXHJcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9J2dldEF1dG9Db21wbGV0ZSgkZXZlbnQub3B0aW9uLnZhbHVlKSc+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9EYXRhXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMgfCBhc3luY1wiIFt2YWx1ZV09XCJvcHRpb25cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxmaWd1cmUgKm5nSWY9XCJvcHRpb25bJ2F2YXRhcl91cmwnXVwiIGNsYXNzPVwiaW1nLWNhcmQgc21hbGwgY2lyY2xlZC1pbWcgcC0wIG0tMFwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJvcHRpb25bJ2F2YXRhcl91cmwnXVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICA8L2ZpZ3VyZT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb25bJ2F2YXRhcl91cmwnXVwiIGNsYXNzPVwibXgtMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICA8IS0tIDxiZGk+IC0tPlxyXG4gICAgICAgICAgICAge3tvcHRpb25bJ2Rlc2NyaXB0aW9uJ119fVxyXG4gICAgICAgICAgIDwhLS0gPC9iZGk+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vRGF0YVwiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPk5vIERhdGE8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cIighbXlDb250cm9sPy52YWxpZClcIj57e2kxOG4udHJhbnNsYXRlKCd2YWxpZFNlbGVjdEVycm9yJyl9fXt7bGFiZWx9fVxyXG4gICAgPC9tYXQtZXJyb3I+XHJcbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJzaG93SGludFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktY2hlY2stY2lyY2xlIGZvbnQtMTAgZmMtZGFyay1ncmF5XCIgW25nQ2xhc3NdPVwieydmYy1vYXNpcy1saWdodC1pbXAnOnZhbHVlfVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLW9ueXhcIj57e2hpbnR9fTwvc3Bhbj5cclxuICAgIDwvbWF0LWhpbnQ+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlYXJjaGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvY3VzdG9tLXNlYXJjaGFibGUtYXV0b2NvbXBsZXRlL2N1c3RvbS1zZWFyY2hhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL2N1c3RvbS1zZWFyY2hhYmxlLWF1dG9jb21wbGV0ZS9jdXN0b20tc2VhcmNoYWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsMkJBQTJCO0FBQzNCLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLHVEQUF1RDtBQUN2RCw0REFBNEQ7QUFDNUQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWlCLHNCQUFzQixFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFbEcsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7Ozs7O0FBb0M3RixNQUFNLE9BQU8seUJBQWlDLFNBQVEsNkJBQW1DO0lBQzlFLE9BQU8sQ0FBTztJQUNiLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25DLG9CQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDM0MsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixJQUFJLEdBQVUsTUFBTSxDQUFDO0lBQ3JCLGNBQWMsQ0FBUztJQUN2QixHQUFHLEdBQVcsYUFBYSxDQUFDO0lBQzVCLFVBQVUsR0FBUSxNQUFNLENBQUM7SUFDekIsU0FBUyxHQUFHLGdCQUFnQixDQUFDO0lBRXRDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixlQUFlLENBQU87SUFDdEIsYUFBYSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUE7SUFFakMsVUFBVTtRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUM5QixDQUFDO0lBRUQsU0FBUyxDQUFDLENBQWdCLEVBQUUsS0FBdUI7UUFDakQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLHdEQUF3RDtZQUN4RCxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFDLENBQUM7Z0JBQzlELElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBQyxDQUFDO29CQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUM3QixDQUFDO2dCQUNELEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO0lBQzNCLENBQUM7SUFDRCxhQUFhLENBQUMsSUFBSTtRQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQUs7UUFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQTtZQUNuQix1QkFBdUI7WUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDeEcsSUFBSSxDQUFDLGVBQWUsQ0FBQTtRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFBO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRU8sT0FBTyxDQUFDLEtBQVU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hJLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBVztRQUNuQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUMsR0FBRyxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO3VHQXJFVSx5QkFBeUI7MkZBQXpCLHlCQUF5QixtVUFYekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysc0VDOUNILDYvRkF3REEsNEdEaENJLGlCQUFpQixnTUFDakIsT0FBTyxvRkFDUCxJQUFJLDRGQUNKLG1CQUFtQiwwa0JBQ25CLGVBQWUseVdBQ2YsU0FBUyxxSkFDVCxzQkFBc0IscVFBRXRCLE9BQU8sOEVBQ1AsT0FBTyxtSEFDUCxZQUFZLDJMQUNaLGtCQUFrQixnU0FDbEIsY0FBYywyV0FDZCx5QkFBeUI7OzJGQWNoQix5QkFBeUI7a0JBakNyQyxTQUFTOytCQUNFLHVCQUF1QixXQUd4QixDQUFDLHNCQUFzQixDQUFDLFdBQ3hCO3dCQUNQLGlCQUFpQjt3QkFDakIsT0FBTzt3QkFDUCxJQUFJO3dCQUNKLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixTQUFTO3dCQUNULHNCQUFzQjt3QkFDdEIsUUFBUTt3QkFDUixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QseUJBQXlCO3FCQUM1QixjQUNhLElBQUksYUFDTDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBTVEsT0FBTztzQkFBZixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzICovXHJcbi8qIGVzbGludC1kaXNhYmxlIG5vLXZhciAqL1xyXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3VzZS1saWZlY3ljbGUtaW50ZXJmYWNlICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFNpbXBsZUNoYW5nZXMsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIGZvcndhcmRSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RXJyb3IsIE1hdEZvcm1GaWVsZCwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRIaW50fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuXHJcbmltcG9ydCB7SW5mb0l0ZW1Db21wb25lbnR9IGZyb20gXCIuLi9pbmZvLWl0ZW0vaW5mby1pdGVtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nRm9yT2YsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJy4uL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQgfSBmcm9tIFwiLi4vdmFsaWRhdGlvbi1lcnJvcnMvdmFsaWRhdGlvbi1lcnJvcnMuY29tcG9uZW50XCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLXNlYXJjaGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tc2VhcmNoYWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXNlYXJjaGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgSW5mb0l0ZW1Db21wb25lbnQsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTmdJZixcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRBdXRvY29tcGxldGUsXHJcbiAgICBNYXRPcHRpb24sXHJcbiAgICBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLFxyXG4gICAgTWF0RXJyb3IsXHJcbiAgICBNYXRIaW50LFxyXG4gICAgTmdGb3JPZixcclxuICAgIE1hdEZvcm1GaWVsZCxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgVmFsaWRhdGlvbkVycm9yc0NvbXBvbmVudFxyXG5dLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDdXN0b21TZWFyY2hhYmxlQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF1cclxufSlcclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEN1c3RvbVNlYXJjaGFibGVDb21wb25lbnQgPFR5cGU+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG9wdGlvbnMhOiBhbnk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkVmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlzTGVuZ3RoR3JlYXRlclRoYW40ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0nbmFtZSc7XHJcbiAgQElucHV0KCkgZGlzcGxheWVkTGFibGU6IHN0cmluZztcclxuICBASW5wdXQoKSBrZXk6IHN0cmluZyA9ICdkZXNjcmlwdGlvbic7XHJcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogYW55ID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICdib3JkZXJlZC1pbnB1dCc7XHJcblxyXG4gIG5vRGF0YSA9IGZhbHNlO1xyXG4gIGZpbHRlcmVkT3B0aW9ucyE6IGFueTtcclxuICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKClcclxuXHJcbiAgY2xlYXJJbnB1dCgpIHtcclxuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShudWxsKVxyXG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKG51bGwpXHJcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSkge1xyXG4gICAgICB0aGlzLnNldEZpbHRlcmVkT3B0aW9ucygpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzT3V0KCl7XHJcbiAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpXHJcbiAgfVxyXG5cclxuICBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCwgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpe1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vcmVzZXQgaW4gY2FzZSBubyB2YWx1ZSBhbmQgZGVsZXRlIG9yIGJhY2tzcGFjZSBwcmVzc2VkXHJcbiAgICAgIGlmKCAoZS5rZXlDb2RlID09IDggfHwgZS5rZXlDb2RlID09IDQ2KSAmJiAhdGhpcy5jb250cm9sLnZhbHVlKXtcclxuICAgICAgICBpZih0aGlzLmNvbnRyb2wpe1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG51bGwpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlucHV0LmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICB0aGlzLnNldEZpbHRlcmVkT3B0aW9ucygpXHJcbiAgfVxyXG4gIG9uVmFsdWVDaGFuZ2UoZGF0YSkge1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJlZE9wdGlvbnMoZGF0YSlcclxuICB9XHJcblxyXG4gIHNldEZpbHRlcmVkT3B0aW9ucyhkYXRhPykge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubm9EYXRhID0gZmFsc2VcclxuICAgICAgLy8gdGhpcy5sb2FkaW5nID0gZmFsc2VcclxuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBkYXRhPy50YXJnZXQ/LnZhbHVlID8gdGhpcy5fZmlsdGVyKGRhdGEudGFyZ2V0LnZhbHVlKSA6IHRoaXMub3B0aW9ucy5zbGljZSgwLCAzMClcclxuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyKHZhbHVlOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWU/LnRvTG93ZXJDYXNlKCkgOiB2YWx1ZTtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVyKChvcHRpb246IGFueSkgPT4gT2JqZWN0LnZhbHVlcyhvcHRpb24pLmpvaW4oJycpPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkuc2xpY2UoMCwgMzApO1xyXG4gIH1cclxuXHJcbiAgZGlzcGxheUZuKG9wdGlvbjogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24gOiAnJztcclxuICB9XHJcblxyXG4gIGdldEF1dG9Db21wbGV0ZSh2YWx1ZTogYW55KSB7XHJcbiAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoe2tleTp2YWx1ZVt0aGlzLmtleV19KTtcclxuICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZVt0aGlzLmtleV0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmVhZE9ubHkgJiYgY29udHJvbD8udmFsdWVcIj5cclxuICA8YXBwLWluZm8taXRlbSBjbGFzcz1cImluZm8taXRlbSB3LTEwMFwiIFtsYWJlbF09XCJsYWJlbFwiIFtpbnNpZGVUYWJsZV09XCJpbnNpZGVUYWJsZVwiIFtoYXNMYWJlbF09XCJsYWJlbCA/IHRydWU6IGZhbHNlXCIgW3ZhbHVlXT1cImNvbnRyb2w/LnZhbHVlXCI+PC9hcHAtaW5mby1pdGVtPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNSZWFkT25seVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMVwiICpuZ0lmPVwibGFiZWxcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0wXCI+e3tsYWJlbH19PC9zcGFuPlxyXG4gICAgPHNwYW4gKm5nSWY9XCIhcmVxdWlyZWRcIiBjbGFzcz1cImZzLTExIGZjLWRhcmstZ3JheVwiPlxyXG4gICAgICB7e2kxOG4udHJhbnNsYXRlKCdPcHRpb25hbCcpfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwcmltYXJ5LWZvcm0ge3tjbGFzc05hbWV9fVwiIFtuZ0NsYXNzXT1cInsnaW5wdXQtZGlzYWJsZWQnIDogKGRpc2FibGVkIHx8IGxvYWRpbmcpIH1cIlxyXG4gICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiID5cclxuICAgIDwhLS0gKGNsaWNrKT1cImNsZWFySW5wdXQoKVwiIC0tPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLXNlYXJjaCBmYy1jb3JhbCBmcy0xOFwiIG1hdFByZWZpeD48L3NwYW4+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgIDwhLS0gPGJkaT4gLS0+XHJcbiAgICAgIDxpbnB1dCAjYXV0b2NvbXBsZXRlSW5wdXQgdHlwZT1cInRleHRcIiAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50LCBhdXRvY29tcGxldGVJbnB1dClcIiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCBcIiBbcGxhY2Vob2xkZXJdPVwibGFiZWxcIiBhcmlhLWxhYmVsPVwiTnVtYmVyXCIgbWF0SW5wdXRcclxuICAgICAgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcclxuICAgICAgIG5nRGVmYXVsdENvbnRyb2wgW25hbWVdPVwiJ3Rlc3QnXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgW3ZhbHVlXT1cInZhbHVlXCIgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoKVwiPlxyXG4gICAgPCEtLSA8L2JkaT4gLS0+XHJcbiAgPC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1zcGlubmVyIGQtaW5saW5lLWJsb2NrIHNwaW4gZmMtY29yYWxcIiBtYXRTdWZmaXggKm5nSWY9XCJsb2FkaW5nXCI+PC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLWNsb3NlIGQtaW5saW5lLWJsb2NrIGZjLWJsYWNrIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsZWFySW5wdXQoKVwiIG1hdFN1ZmZpeFxyXG4gICAgICAqbmdJZj1cIiFsb2FkaW5nICYmIGNvbnRyb2w/LnZhbHVlXCI+PC9zcGFuPlxyXG4gICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGblwiIFxyXG4gICAgICAob3B0aW9uU2VsZWN0ZWQpPSdnZXRBdXRvQ29tcGxldGUoJGV2ZW50Lm9wdGlvbi52YWx1ZSknPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5vRGF0YVwiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGZpZ3VyZSAqbmdJZj1cIm9wdGlvblsnYXZhdGFyX3VybCddXCIgY2xhc3M9XCJpbWctY2FyZCBzbWFsbCBjaXJjbGVkLWltZyBwLTAgbS0wXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIm9wdGlvblsnYXZhdGFyX3VybCddXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgIDwvZmlndXJlPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvblsnYXZhdGFyX3VybCddXCIgY2xhc3M9XCJteC0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgIDwhLS0gPGJkaT4gLS0+XHJcbiAgICAgICAgICAgICB7e29wdGlvbltkaXNwbGF5ZWRMYWJsZV19fVxyXG4gICAgICAgICAgIDwhLS0gPC9iZGk+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vRGF0YVwiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPk5vIERhdGE8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgPCEtLSA8bWF0LWVycm9yIGNsYXNzPVwibWItMlwiICpuZ0lmPVwiKCFjb250cm9sPy52YWxpZClcIj57e2kxOG4udHJhbnNsYXRlKCd2YWxpZFNlbGVjdEVycm9yJyl9fXt7bGFiZWx9fVxyXG4gICAgPC9tYXQtZXJyb3I+IC0tPlxyXG5cclxuICAgIDxtYXQtaGludCAqbmdJZj1cInNob3dIaW50XCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1jaGVjay1jaXJjbGUgZm9udC0xMCBmYy1kYXJrLWdyYXlcIiBbbmdDbGFzc109XCJ7J2ZjLW9hc2lzLWxpZ2h0LWltcCc6dmFsdWV9XCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm14LTFcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTIgZmMtb255eFwiPnt7aGludH19PC9zcGFuPlxyXG4gICAgPC9tYXQtaGludD5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDxhcHAtdmFsaWRhdGlvbi1lcnJvcnMgW2Vycm9yc109XCJjb250cm9sLmVycm9yc1wiPjwvYXBwLXZhbGlkYXRpb24tZXJyb3JzPlxyXG5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==