@ieeesa-npm/presentation 0.22.0 → 0.22.1

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 (57) hide show
  1. package/esm2022/lib/assets/constants.json +10 -0
  2. package/esm2022/lib/components/accordion/accordion.component.mjs +3 -3
  3. package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +3 -3
  4. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +3 -3
  5. package/esm2022/lib/components/card/card.component.mjs +3 -3
  6. package/esm2022/lib/components/checkbox/checkbox.component.mjs +3 -3
  7. package/esm2022/lib/components/chips/chips.component.mjs +3 -3
  8. package/esm2022/lib/components/data-table/data-table.component.mjs +3 -3
  9. package/esm2022/lib/components/date-picker/date-picker.component.mjs +3 -3
  10. package/esm2022/lib/components/date-picker-header/date-picker-header.component.mjs +3 -3
  11. package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +37 -3
  12. package/esm2022/lib/components/file-upload/file-upload.component.mjs +3 -3
  13. package/esm2022/lib/components/filter/filter.component.mjs +3 -3
  14. package/esm2022/lib/components/footer/footer.component.mjs +3 -3
  15. package/esm2022/lib/components/form-error/form-error.component.mjs +3 -3
  16. package/esm2022/lib/components/form-support-text/form-support-text.component.mjs +3 -3
  17. package/esm2022/lib/components/header/header.component.mjs +3 -3
  18. package/esm2022/lib/components/icon-button/icon-button.component.mjs +3 -3
  19. package/esm2022/lib/components/image-preview/image-preview.component.mjs +3 -3
  20. package/esm2022/lib/components/inactive-tenant/inactive-tenant.component.mjs +3 -3
  21. package/esm2022/lib/components/input/input.component.mjs +3 -3
  22. package/esm2022/lib/components/list/list.component.mjs +3 -3
  23. package/esm2022/lib/components/loader/loader.component.mjs +3 -3
  24. package/esm2022/lib/components/menu/menu.component.mjs +3 -3
  25. package/esm2022/lib/components/modal/modal.component.mjs +3 -3
  26. package/esm2022/lib/components/modal-confirmation/modal-confirmation.component.mjs +3 -3
  27. package/esm2022/lib/components/multi-select-autocomplete/multi-select-autocomplete.component.mjs +302 -0
  28. package/esm2022/lib/components/navigation-menu/navigation-menu.component.mjs +3 -3
  29. package/esm2022/lib/components/notification/notification.component.mjs +3 -3
  30. package/esm2022/lib/components/radio/radio.component.mjs +3 -3
  31. package/esm2022/lib/components/rich-text-editor/rich-text-editor.component.mjs +3 -3
  32. package/esm2022/lib/components/search/search.component.mjs +3 -3
  33. package/esm2022/lib/components/select/select.component.mjs +3 -3
  34. package/esm2022/lib/components/slide-toggle/slide-toggle.component.mjs +3 -3
  35. package/esm2022/lib/components/tabs/tabs.component.mjs +3 -3
  36. package/esm2022/lib/components/text-area/text-area.component.mjs +3 -3
  37. package/esm2022/lib/components/tile/tile.component.mjs +3 -3
  38. package/esm2022/lib/components/time-picker/time-picker.component.mjs +3 -3
  39. package/esm2022/lib/components/toggle-button/toggle-button.component.mjs +3 -3
  40. package/esm2022/lib/components/welcome/welcome.component.mjs +3 -3
  41. package/esm2022/lib/directives/dynamic-form-field/dynamic-form-field.directive.mjs +30 -2
  42. package/esm2022/lib/models/field-config.model.mjs +1 -1
  43. package/esm2022/lib/models/form-control-types.model.mjs +2 -1
  44. package/esm2022/public-api.mjs +1 -2
  45. package/fesm2022/ieeesa-npm-presentation.mjs +441 -92
  46. package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
  47. package/lib/components/chips/chips.component.d.ts +10 -0
  48. package/lib/components/dynamic-form/dynamic-form.component.d.ts +24 -1
  49. package/lib/components/file-upload/file-upload.component.d.ts +10 -0
  50. package/lib/components/multi-select-autocomplete/multi-select-autocomplete.component.d.ts +128 -0
  51. package/lib/directives/dynamic-form-field/dynamic-form-field.directive.d.ts +5 -1
  52. package/lib/models/field-config.model.d.ts +1 -0
  53. package/lib/models/form-control-types.model.d.ts +1 -0
  54. package/lib/services/file-upload.service.d.ts +17 -16
  55. package/package.json +1 -1
  56. package/public-api.d.ts +0 -1
  57. package/src/lib/assets/constants.json +10 -0
@@ -0,0 +1,302 @@
1
+ import { COMMA, ENTER } from '@angular/cdk/keycodes';
2
+ import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
3
+ import { CommonModule } from '@angular/common';
4
+ import { MatAutocompleteModule, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, } from '@angular/material/autocomplete';
5
+ import { ReactiveFormsModule } from '@angular/forms';
6
+ import { MatButtonModule } from '@angular/material/button';
7
+ import { MatCheckboxModule } from '@angular/material/checkbox';
8
+ import { MatOptionModule } from '@angular/material/core';
9
+ import { MatIconModule } from '@angular/material/icon';
10
+ import { MatInputModule } from '@angular/material/input';
11
+ import { Subject, fromEvent } from 'rxjs';
12
+ import { map, takeUntil, filter, debounceTime } from 'rxjs/operators';
13
+ import * as autocompleteConstInfo from '../../assets/constants.json';
14
+ import { MatChipsModule } from '@angular/material/chips';
15
+ import { FormControlType } from '../../models/form-control-types.model';
16
+ import { FormErrorComponent } from '../form-error/form-error.component';
17
+ import { FormSupportTextComponent } from '../form-support-text/form-support-text.component';
18
+ import * as i0 from "@angular/core";
19
+ import * as i1 from "../../services/form-utility.service";
20
+ import * as i2 from "@angular/common";
21
+ import * as i3 from "@angular/forms";
22
+ import * as i4 from "@angular/material/core";
23
+ import * as i5 from "@angular/material/autocomplete";
24
+ import * as i6 from "@angular/material/input";
25
+ import * as i7 from "@angular/material/form-field";
26
+ import * as i8 from "@angular/material/button";
27
+ import * as i9 from "@angular/material/checkbox";
28
+ import * as i10 from "@angular/material/chips";
29
+ /**
30
+ * MultiSelectAutocompleteComponent allows to search the option(s) from the list and select the option(s) from the autocomplete search results.
31
+ * @class MultiSelectAutocompleteComponent
32
+ * @implements {OnInit}
33
+ * @implements {FormField}
34
+ * @implements {OnDestroy}
35
+ * @implements {AfterViewInit}
36
+ */
37
+ export class MultiSelectAutocompleteComponent {
38
+ /**
39
+ * Sets the options for multi select autocomplete.
40
+ * @memberof MultiSelectAutocompleteComponent
41
+ */
42
+ set multiSelectAutoCompleteOptions(value) {
43
+ this.autoCompleteOptionList = value;
44
+ }
45
+ /**
46
+ * Returns the autocomplete options list.
47
+ * @readonly
48
+ * @type {AutoCompleteOption[]}
49
+ * @memberof MultiSelectAutocompleteComponent
50
+ */
51
+ get multiSelectAutoCompleteOptions() {
52
+ return this.autoCompleteOptionList;
53
+ }
54
+ // eslint-disable-next-line no-unused-vars, no-empty-function
55
+ constructor(formUtilityService) {
56
+ this.formUtilityService = formUtilityService;
57
+ this.separatorKeysCodes = [ENTER, COMMA];
58
+ this.selectedOptions = [];
59
+ this.multiSelectAutoCompleteSearchValue = new EventEmitter();
60
+ this.multiSelectAutoCompleteClearSearchValue = new EventEmitter();
61
+ this.multiSelectAutoCompleteOptionsSelected = new EventEmitter();
62
+ this.destroy$ = new Subject();
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
+ this.autocompleteConstInfo = autocompleteConstInfo;
65
+ this.removeIconURL = this.autocompleteConstInfo?.multiSelectAutoComplete?.icons?.remove;
66
+ this.clearAllIconURL = this.autocompleteConstInfo?.multiSelectAutoComplete?.icons?.clearAll;
67
+ }
68
+ /**
69
+ * Implementation of ngOnInit lifecycle hook method to initialize components instance properties.
70
+ * @memberof MultiSelectAutocompleteComponent
71
+ */
72
+ ngOnInit() {
73
+ this.config =
74
+ this.config ??
75
+ this.formUtilityService.getFormFieldConfig('multiSelectAutocomplete', FormControlType.AUTO_COMPLETE);
76
+ this.group =
77
+ this.group ??
78
+ this.formUtilityService.getFormGroup('multiSelectAutocomplete');
79
+ this.multiSelectAutoCompleteOptions =
80
+ this.config?.multiSelectAutoCompleteOptions ??
81
+ this.multiSelectAutoCompleteOptions;
82
+ if (this.config?.value)
83
+ this.selectedOptions = this.config?.value;
84
+ }
85
+ /**
86
+ * Initialize the form control change event once the form control is ready on ngAfterViewInit by calling onValueChanges method.
87
+ * @memberof MultiSelectAutocompleteComponent
88
+ */
89
+ ngAfterViewInit() {
90
+ this.onValueChanges();
91
+ }
92
+ /**
93
+ * Emits an multiSelectAutoCompleteSearchValue change event when the value is changed and value is greater than minCharToSearch or equal to zero.
94
+ * @memberof MultiSelectAutocompleteComponent
95
+ */
96
+ onValueChanges() {
97
+ fromEvent(this.multiSelectAutoComplete?.nativeElement, 'keyup')
98
+ .pipe(takeUntil(this.destroy$),
99
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
100
+ map((event) => event?.target?.value), filter(
101
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
102
+ (res) => res?.length <
103
+ this.autocompleteConstInfo?.autocomplete?.minCharToSearch &&
104
+ res?.length !== 0), debounceTime(this.autocompleteConstInfo?.autocomplete?.debounceTime))
105
+ .subscribe((text) => {
106
+ if (text === '')
107
+ this.handleFieldError();
108
+ this.multiSelectAutoCompleteClearSearchValue.emit(text);
109
+ });
110
+ this.group?.controls[this.config?.controlName]?.valueChanges
111
+ .pipe(takeUntil(this.destroy$), filter(
112
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
+ (res) => res?.length >=
114
+ this.autocompleteConstInfo?.autocomplete?.minCharToSearch ||
115
+ res?.length === 0), debounceTime(this.autocompleteConstInfo?.autocomplete?.debounceTime))
116
+ .subscribe((text) => {
117
+ this.multiSelectAutoCompleteSearchValue.emit(text);
118
+ if (text === '')
119
+ this.handleFieldError();
120
+ });
121
+ }
122
+ /**
123
+ * Handles field error by setting the appropriate form control errors.
124
+ * @memberof MultiSelectAutocompleteComponent
125
+ */
126
+ handleFieldError() {
127
+ if (this.selectedOptions?.length) {
128
+ this.group?.get(this.config?.controlName)?.setErrors({
129
+ required: false,
130
+ });
131
+ }
132
+ }
133
+ /**
134
+ * Adds a newly entered option to the selectedOptions array.
135
+ * @param {*} event -The event containing the input and value.
136
+ * @memberof MultiSelectAutocompleteComponent
137
+ */
138
+ add(event) {
139
+ const input = event?.input;
140
+ const value = event?.value;
141
+ const selectedOption = {
142
+ id: '',
143
+ name: value?.trim(),
144
+ };
145
+ if ((value || '').trim()) {
146
+ this.selectedOptions.push(selectedOption);
147
+ }
148
+ if (input) {
149
+ input.value = '';
150
+ }
151
+ this.formatSelectedOption(this.selectedOptions);
152
+ }
153
+ /**
154
+ * Removes a selected option from the selectedOptions array.
155
+ * @param {SelectOption} removedOption -The option to remove.
156
+ * @memberof MultiSelectAutocompleteComponent
157
+ */
158
+ onOptionRemoved(removedOption) {
159
+ const index = this.selectedOptions?.findIndex((option) => option.id === removedOption.id);
160
+ if (index >= 0) {
161
+ this.selectedOptions?.splice(index, 1);
162
+ }
163
+ if (this.selectedOptions?.length === 0) {
164
+ this.group.value[this.config?.controlName] = '';
165
+ this.group?.controls[this.config?.controlName].setValue('');
166
+ this.selectedOptions = [];
167
+ this.autoCompleteOptionList = [];
168
+ this.handleFieldError();
169
+ }
170
+ this.formatSelectedOption(this.selectedOptions);
171
+ }
172
+ /**
173
+ * Handles the selection of an autocomplete option.
174
+ * @param {AutoCompleteOption} option -The selected autocomplete option.
175
+ * @return {AutoCompleteOption}
176
+ * @memberof MultiSelectAutocompleteComponent
177
+ */
178
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
179
+ onChange(option) {
180
+ const value = option?.value;
181
+ if (this.isCheckboxSelected(value)) {
182
+ this.onOptionRemoved(value);
183
+ }
184
+ else {
185
+ this.selectedOptions.push(value);
186
+ }
187
+ this.formatSelectedOption(this.selectedOptions);
188
+ requestAnimationFrame(() => {
189
+ this.multiSelectAutoComplete?.nativeElement.focus();
190
+ });
191
+ return value;
192
+ }
193
+ /**
194
+ * Formats the selected options and emits the multiSelectAutoCompleteOptionSelected event.
195
+ * @param {SelectOption[]} selectedOptions -Array of selected options.
196
+ * @memberof MultiSelectAutocompleteComponent
197
+ */
198
+ formatSelectedOption(selectedOptions) {
199
+ const formattedOptions = selectedOptions?.map((option) => {
200
+ return {
201
+ id: option.id,
202
+ name: option.name,
203
+ };
204
+ });
205
+ this.multiSelectAutoCompleteOptionsSelected?.emit(formattedOptions);
206
+ }
207
+ /**
208
+ * Displays the name of the option
209
+ * @param {AutoCompleteOption} option
210
+ * @return {*} {string}
211
+ * @memberof MultiSelectAutocompleteComponent
212
+ */
213
+ displayOptionName(option) {
214
+ return option?.name ? option.name : '';
215
+ }
216
+ /**
217
+ * Tracks the option by its index or id.
218
+ * @param {number} index
219
+ * @param {SelectOption} option
220
+ * @return {*} {(number | string)}
221
+ * @memberof MultiSelectAutocompleteComponent
222
+ */
223
+ trackByFn(index, option) {
224
+ return option.id;
225
+ }
226
+ /**
227
+ * Checks if the checkbox is selected.
228
+ * @param {AutoCompleteOption} option
229
+ * @return {*} {boolean}
230
+ * @memberof MultiSelectAutocompleteComponent
231
+ */
232
+ isCheckboxSelected(option) {
233
+ return this.selectedOptions?.some((item) => item.id === option.id);
234
+ }
235
+ /**
236
+ * Clears all selected options.
237
+ * @memberof MultiSelectAutocompleteComponent
238
+ */
239
+ clearSelections() {
240
+ this.group.value[this.config?.controlName] = '';
241
+ this.group?.controls[this.config?.controlName].setValue('');
242
+ this.selectedOptions = [];
243
+ this.autoCompleteOptionList = [];
244
+ this.formatSelectedOption(this.selectedOptions);
245
+ this.handleFieldError();
246
+ }
247
+ /**
248
+ * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.
249
+ * @memberof MultiSelectAutocompleteComponent
250
+ */
251
+ ngOnDestroy() {
252
+ this.destroy$.next(true);
253
+ this.destroy$.unsubscribe();
254
+ }
255
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectAutocompleteComponent, deps: [{ token: i1.FormUtilityService }], target: i0.ɵɵFactoryTarget.Component }); }
256
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiSelectAutocompleteComponent, isStandalone: true, selector: "ieeesa-multi-select-autocomplete", inputs: { multiSelectAutoCompleteOptions: "multiSelectAutoCompleteOptions" }, outputs: { multiSelectAutoCompleteSearchValue: "multiSelectAutoCompleteSearchValue", multiSelectAutoCompleteClearSearchValue: "multiSelectAutoCompleteClearSearchValue", multiSelectAutoCompleteOptionsSelected: "multiSelectAutoCompleteOptionsSelected" }, providers: [
257
+ {
258
+ provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,
259
+ useValue: {
260
+ overlayPanelClass: 'ieeesa-multi-select-autocomplete-overlay-panel',
261
+ },
262
+ },
263
+ ], viewQueries: [{ propertyName: "multiSelectAutoComplete", first: true, predicate: ["multiSelectAutoComplete"], descendants: true }, { propertyName: "matACTrigger", first: true, predicate: ["autocompleteTrigger"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"ieeesa-multi-select-autocomplete\"\r\n [formGroup]=\"group\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-multi-select-autocomplete-field__label-left'\r\n : 'ieeesa-multi-select-autocomplete-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-multi-select-autocomplete__label\"\r\n >{{ config.label }}</mat-label\r\n >\r\n <mat-form-field\r\n class=\"ieeesa-multi-select-autocomplete__mat-form-field\"\r\n appearance=\"outline\"\r\n >\r\n <mat-chip-grid\r\n #chipGrid\r\n [attr.aria-label]=\"autocompleteConstInfo?.multiSelectAutoComplete?.ariaLabel?.selectedOptions\"\r\n >\r\n <mat-chip-row\r\n *ngFor=\"let option of selectedOptions; trackBy: trackByFn\"\r\n [attr.aria-label]=\"option?.name\"\r\n [removable]=\"true\"\r\n (removed)=\"onOptionRemoved(option)\"\r\n >\r\n <p class=\"ieeesa-label-lg-bold-16 m-0\">\r\n {{ option.name }}<span *ngIf=\"option.id === '' \">*</span>\r\n </p>\r\n <button\r\n matChipRemove\r\n [attr.aria-label]=\"autocompleteConstInfo?.multiSelectAutoComplete?.ariaLabel?.removeOption + option.name\"\r\n >\r\n <svg class=\"ieeesa-chip__svg-avatar\" matChipAvatar>\r\n <use [attr.xlink:href]=\"removeIconURL\"></use>\r\n </svg>\r\n </button>\r\n </mat-chip-row>\r\n </mat-chip-grid>\r\n <input\r\n matInput\r\n class=\"ieeesa-multi-select-autocomplete__input ieeesa-title-sm-16\"\r\n [matAutocomplete]=\"matAutocomplete\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n [attr.aria-label]=\"config.ariaLabel\"\r\n [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n #multiSelectAutoComplete\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n [matChipInputFor]=\"chipGrid\"\r\n />\r\n <mat-autocomplete\r\n #matAutocomplete=\"matAutocomplete\"\r\n (optionSelected)=\"onChange($event.option)\"\r\n [displayWith]=\"displayOptionName\"\r\n class=\"ieeesa-multi-select-autocomplete__autocomplete-list\"\r\n >\r\n <mat-option\r\n *ngFor=\"let option of autoCompleteOptionList; trackBy: trackByFn\"\r\n [value]=\"option\"\r\n >\r\n <mat-checkbox color=\"primary\" [checked]=\"isCheckboxSelected(option)\">\r\n </mat-checkbox>\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"autocompleteConstInfo.ariaLabel.clear\"\r\n *ngIf=\"selectedOptions.length > 0\"\r\n (click)=\"clearSelections()\"\r\n >\r\n <svg class=\"ieeesa-multi-select-autocomplete__svg-clear-all\">\r\n <use [attr.xlink:href]=\"clearAllIconURL\"></use>\r\n </svg>\r\n </button>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n <ieeesa-form-support-text\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n ></ieeesa-form-support-text>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-multi-select-autocomplete__mat-form-field{width:100%}.ieeesa-multi-select-autocomplete__label-left{display:flex}.ieeesa-multi-select-autocomplete__label-top{display:block}.ieeesa-multi-select-autocomplete__svg-clear-all{height:24px;width:24px}.ieeesa-multi-select-autocomplete__input::placeholder{font-size:1rem!important;font-weight:400!important;color:#000!important}.ieeesa-multi-select-autocomplete .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete .mdc-notched-outline__notch{border:unset;border-bottom:1px solid #878b8f;border-color:#878b8f!important}.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #00629b}.ieeesa-multi-select-autocomplete .mat-mdc-form-field-subscript-wrapper{display:none}.ieeesa-multi-select-autocomplete .mat-mdc-form-field{min-height:52px;width:-webkit-fill-available;width:-moz-available}.ieeesa-multi-select-autocomplete .mat-mdc-text-field-wrapper{height:auto;min-width:210px;width:auto;background:#fff;border-top:1px solid #878b8f;border-right:1px solid #878b8f;border-left:1px solid #878b8f;border-radius:4px}.ieeesa-multi-select-autocomplete .mat-mdc-form-field-focus-overlay{background:#fff}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .ieeesa-multi-select-autocomplete__label{color:#00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #00629b;border-color:#00629b!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading{border-top:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing{border-right:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading{border-left:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .ieeesa-multi-select-autocomplete__label{color:#ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #ba0c2f;border-color:#ba0c2f!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading{border-top:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing{border-right:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading{border-left:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .ieeesa-label-lg-bold-16{color:#49454f}.ieeesa-multi-select-autocomplete .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding:10px 0!important}.ieeesa-multi-select-autocomplete .mdc-evolution-chip-set{min-height:5px}.ieeesa-multi-select-autocomplete .mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){padding:10px 0 10px 10px;border-radius:.25em;border:1px solid #79747e;background-color:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe!important;--mdc-chip-elevated-container-color: $ieeesa-chips-background}.ieeesa-multi-select-autocomplete .mdc-evolution-chip__icon--primary{color:#000!important;height:18px;width:18px}.ieeesa-multi-select-autocomplete .mat-mdc-chip-action-label .ieeesa-label-lg-bold-16{color:#49454f}.ieeesa-multi-select-autocomplete-overlay-panel .mdc-list-item{color:#000;font-family:Calibri Regular;font-size:1rem}.ieeesa-multi-select-autocomplete-overlay-panel .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after{display:none}.ieeesa-multi-select-autocomplete-overlay-panel .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#00629b;border-color:#00629b}.ieeesa-multi-select-autocomplete-overlay-panel .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:#00629b}.mdc-evolution-chip__graphic.mat-mdc-chip-graphic{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormErrorComponent, selector: "ieeesa-form-error", inputs: ["formGroup", "config", "submitResponse"] }, { kind: "component", type: FormSupportTextComponent, selector: "ieeesa-form-support-text", inputs: ["formGroup", "config"], outputs: ["supportTextLinkClick"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.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: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "directive", type: i10.MatChipAvatar, selector: "mat-chip-avatar, [matChipAvatar]" }, { kind: "component", type: i10.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i10.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }], encapsulation: i0.ViewEncapsulation.None }); }
264
+ }
265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectAutocompleteComponent, decorators: [{
266
+ type: Component,
267
+ args: [{ selector: 'ieeesa-multi-select-autocomplete', standalone: true, imports: [
268
+ CommonModule,
269
+ ReactiveFormsModule,
270
+ FormErrorComponent,
271
+ FormSupportTextComponent,
272
+ MatOptionModule,
273
+ MatAutocompleteModule,
274
+ MatInputModule,
275
+ MatIconModule,
276
+ MatButtonModule,
277
+ MatCheckboxModule,
278
+ MatChipsModule,
279
+ ], providers: [
280
+ {
281
+ provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,
282
+ useValue: {
283
+ overlayPanelClass: 'ieeesa-multi-select-autocomplete-overlay-panel',
284
+ },
285
+ },
286
+ ], encapsulation: ViewEncapsulation.None, template: "<div\r\n class=\"ieeesa-multi-select-autocomplete\"\r\n [formGroup]=\"group\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-multi-select-autocomplete-field__label-left'\r\n : 'ieeesa-multi-select-autocomplete-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-multi-select-autocomplete__label\"\r\n >{{ config.label }}</mat-label\r\n >\r\n <mat-form-field\r\n class=\"ieeesa-multi-select-autocomplete__mat-form-field\"\r\n appearance=\"outline\"\r\n >\r\n <mat-chip-grid\r\n #chipGrid\r\n [attr.aria-label]=\"autocompleteConstInfo?.multiSelectAutoComplete?.ariaLabel?.selectedOptions\"\r\n >\r\n <mat-chip-row\r\n *ngFor=\"let option of selectedOptions; trackBy: trackByFn\"\r\n [attr.aria-label]=\"option?.name\"\r\n [removable]=\"true\"\r\n (removed)=\"onOptionRemoved(option)\"\r\n >\r\n <p class=\"ieeesa-label-lg-bold-16 m-0\">\r\n {{ option.name }}<span *ngIf=\"option.id === '' \">*</span>\r\n </p>\r\n <button\r\n matChipRemove\r\n [attr.aria-label]=\"autocompleteConstInfo?.multiSelectAutoComplete?.ariaLabel?.removeOption + option.name\"\r\n >\r\n <svg class=\"ieeesa-chip__svg-avatar\" matChipAvatar>\r\n <use [attr.xlink:href]=\"removeIconURL\"></use>\r\n </svg>\r\n </button>\r\n </mat-chip-row>\r\n </mat-chip-grid>\r\n <input\r\n matInput\r\n class=\"ieeesa-multi-select-autocomplete__input ieeesa-title-sm-16\"\r\n [matAutocomplete]=\"matAutocomplete\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n [attr.aria-label]=\"config.ariaLabel\"\r\n [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n #multiSelectAutoComplete\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n [matChipInputFor]=\"chipGrid\"\r\n />\r\n <mat-autocomplete\r\n #matAutocomplete=\"matAutocomplete\"\r\n (optionSelected)=\"onChange($event.option)\"\r\n [displayWith]=\"displayOptionName\"\r\n class=\"ieeesa-multi-select-autocomplete__autocomplete-list\"\r\n >\r\n <mat-option\r\n *ngFor=\"let option of autoCompleteOptionList; trackBy: trackByFn\"\r\n [value]=\"option\"\r\n >\r\n <mat-checkbox color=\"primary\" [checked]=\"isCheckboxSelected(option)\">\r\n </mat-checkbox>\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"autocompleteConstInfo.ariaLabel.clear\"\r\n *ngIf=\"selectedOptions.length > 0\"\r\n (click)=\"clearSelections()\"\r\n >\r\n <svg class=\"ieeesa-multi-select-autocomplete__svg-clear-all\">\r\n <use [attr.xlink:href]=\"clearAllIconURL\"></use>\r\n </svg>\r\n </button>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n <ieeesa-form-support-text\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n ></ieeesa-form-support-text>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-multi-select-autocomplete__mat-form-field{width:100%}.ieeesa-multi-select-autocomplete__label-left{display:flex}.ieeesa-multi-select-autocomplete__label-top{display:block}.ieeesa-multi-select-autocomplete__svg-clear-all{height:24px;width:24px}.ieeesa-multi-select-autocomplete__input::placeholder{font-size:1rem!important;font-weight:400!important;color:#000!important}.ieeesa-multi-select-autocomplete .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete .mdc-notched-outline__notch{border:unset;border-bottom:1px solid #878b8f;border-color:#878b8f!important}.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #00629b}.ieeesa-multi-select-autocomplete .mat-mdc-form-field-subscript-wrapper{display:none}.ieeesa-multi-select-autocomplete .mat-mdc-form-field{min-height:52px;width:-webkit-fill-available;width:-moz-available}.ieeesa-multi-select-autocomplete .mat-mdc-text-field-wrapper{height:auto;min-width:210px;width:auto;background:#fff;border-top:1px solid #878b8f;border-right:1px solid #878b8f;border-left:1px solid #878b8f;border-radius:4px}.ieeesa-multi-select-autocomplete .mat-mdc-form-field-focus-overlay{background:#fff}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .ieeesa-multi-select-autocomplete__label{color:#00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #00629b;border-color:#00629b!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading{border-top:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing{border-right:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading{border-left:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .ieeesa-multi-select-autocomplete__label{color:#ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #ba0c2f;border-color:#ba0c2f!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading{border-top:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing{border-right:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading{border-left:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .ieeesa-label-lg-bold-16{color:#49454f}.ieeesa-multi-select-autocomplete .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding:10px 0!important}.ieeesa-multi-select-autocomplete .mdc-evolution-chip-set{min-height:5px}.ieeesa-multi-select-autocomplete .mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){padding:10px 0 10px 10px;border-radius:.25em;border:1px solid #79747e;background-color:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe!important;--mdc-chip-elevated-container-color: $ieeesa-chips-background}.ieeesa-multi-select-autocomplete .mdc-evolution-chip__icon--primary{color:#000!important;height:18px;width:18px}.ieeesa-multi-select-autocomplete .mat-mdc-chip-action-label .ieeesa-label-lg-bold-16{color:#49454f}.ieeesa-multi-select-autocomplete-overlay-panel .mdc-list-item{color:#000;font-family:Calibri Regular;font-size:1rem}.ieeesa-multi-select-autocomplete-overlay-panel .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after{display:none}.ieeesa-multi-select-autocomplete-overlay-panel .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#00629b;border-color:#00629b}.ieeesa-multi-select-autocomplete-overlay-panel .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:#00629b}.mdc-evolution-chip__graphic.mat-mdc-chip-graphic{display:none}\n"] }]
287
+ }], ctorParameters: function () { return [{ type: i1.FormUtilityService }]; }, propDecorators: { multiSelectAutoCompleteOptions: [{
288
+ type: Input
289
+ }], multiSelectAutoCompleteSearchValue: [{
290
+ type: Output
291
+ }], multiSelectAutoCompleteClearSearchValue: [{
292
+ type: Output
293
+ }], multiSelectAutoCompleteOptionsSelected: [{
294
+ type: Output
295
+ }], multiSelectAutoComplete: [{
296
+ type: ViewChild,
297
+ args: ['multiSelectAutoComplete']
298
+ }], matACTrigger: [{
299
+ type: ViewChild,
300
+ args: ['autocompleteTrigger']
301
+ }] } });
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL211bHRpLXNlbGVjdC1hdXRvY29tcGxldGUvbXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL211bHRpLXNlbGVjdC1hdXRvY29tcGxldGUvbXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixnQ0FBZ0MsR0FFakMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFB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a2V5Y29kZXMnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcbiAgTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsXHJcbiAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsLCBmaWx0ZXIsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0ICogYXMgYXV0b2NvbXBsZXRlQ29uc3RJbmZvIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50LCBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tY29udHJvbC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1VdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tdXRpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F1dG9jb21wbGV0ZS1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZWxlY3RPcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VsZWN0LW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpZWxkLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1TdXBwb3J0VGV4dENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tc3VwcG9ydC10ZXh0L2Zvcm0tc3VwcG9ydC10ZXh0LmNvbXBvbmVudCc7XHJcbi8qKlxyXG4gKiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudCBhbGxvd3MgdG8gc2VhcmNoIHRoZSBvcHRpb24ocykgZnJvbSB0aGUgbGlzdCBhbmQgc2VsZWN0IHRoZSBvcHRpb24ocykgZnJvbSB0aGUgYXV0b2NvbXBsZXRlIHNlYXJjaCByZXN1bHRzLlxyXG4gKiBAY2xhc3MgTXVsdGlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICogQGltcGxlbWVudHMge0Zvcm1GaWVsZH1cclxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cclxuICogQGltcGxlbWVudHMge0FmdGVyVmlld0luaXR9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1tdWx0aS1zZWxlY3QtYXV0b2NvbXBsZXRlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3JtRXJyb3JDb21wb25lbnQsXHJcbiAgICBGb3JtU3VwcG9ydFRleHRDb21wb25lbnQsXHJcbiAgICBNYXRPcHRpb25Nb2R1bGUsXHJcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdENoaXBzTW9kdWxlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE1BVF9BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TLFxyXG4gICAgICB1c2VWYWx1ZToge1xyXG4gICAgICAgIG92ZXJsYXlQYW5lbENsYXNzOiAnaWVlZXNhLW11bHRpLXNlbGVjdC1hdXRvY29tcGxldGUtb3ZlcmxheS1wYW5lbCcsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLXNlbGVjdC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL211bHRpLXNlbGVjdC1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgRm9ybUZpZWxkLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcclxue1xyXG4gIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcclxuICBjb25maWchOiBGaWVsZENvbmZpZztcclxuICBncm91cCE6IEZvcm1Hcm91cDtcclxuICBzZWxlY3RlZE9wdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgYXV0b0NvbXBsZXRlT3B0aW9uTGlzdCE6IEF1dG9Db21wbGV0ZU9wdGlvbltdO1xyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIG9wdGlvbnMgZm9yIG11bHRpIHNlbGVjdCBhdXRvY29tcGxldGUuXHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbXVsdGlTZWxlY3RBdXRvQ29tcGxldGVPcHRpb25zKHZhbHVlOiBBdXRvQ29tcGxldGVPcHRpb25bXSkge1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGVPcHRpb25MaXN0ID0gdmFsdWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGF1dG9jb21wbGV0ZSBvcHRpb25zIGxpc3QuXHJcbiAgICogQHJlYWRvbmx5XHJcbiAgICogQHR5cGUge0F1dG9Db21wbGV0ZU9wdGlvbltdfVxyXG4gICAqIEBtZW1iZXJvZiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvbnMoKTogQXV0b0NvbXBsZXRlT3B0aW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlT3B0aW9uTGlzdDtcclxuICB9XHJcbiAgQE91dHB1dCgpIG11bHRpU2VsZWN0QXV0b0NvbXBsZXRlU2VhcmNoVmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgbXVsdGlTZWxlY3RBdXRvQ29tcGxldGVDbGVhclNlYXJjaFZhbHVlID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvbnNTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8XHJcbiAgICBBdXRvQ29tcGxldGVPcHRpb25bXVxyXG4gID4oKTtcclxuICBAVmlld0NoaWxkKCdtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZScpIG11bHRpU2VsZWN0QXV0b0NvbXBsZXRlITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGVUcmlnZ2VyJykgbWF0QUNUcmlnZ2VyITogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBhdXRvY29tcGxldGVDb25zdEluZm86IGFueSA9IGF1dG9jb21wbGV0ZUNvbnN0SW5mbztcclxuICByZW1vdmVJY29uVVJMID1cclxuICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29uc3RJbmZvPy5tdWx0aVNlbGVjdEF1dG9Db21wbGV0ZT8uaWNvbnM/LnJlbW92ZTtcclxuICBjbGVhckFsbEljb25VUkwgPVxyXG4gICAgdGhpcy5hdXRvY29tcGxldGVDb25zdEluZm8/Lm11bHRpU2VsZWN0QXV0b0NvbXBsZXRlPy5pY29ucz8uY2xlYXJBbGw7XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycywgbm8tZW1wdHktZnVuY3Rpb25cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1VdGlsaXR5U2VydmljZTogRm9ybVV0aWxpdHlTZXJ2aWNlKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbXBsZW1lbnRhdGlvbiBvZiBuZ09uSW5pdCBsaWZlY3ljbGUgaG9vayBtZXRob2QgdG8gaW5pdGlhbGl6ZSBjb21wb25lbnRzIGluc3RhbmNlIHByb3BlcnRpZXMuXHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZyA9XHJcbiAgICAgIHRoaXMuY29uZmlnID8/XHJcbiAgICAgIHRoaXMuZm9ybVV0aWxpdHlTZXJ2aWNlLmdldEZvcm1GaWVsZENvbmZpZyhcclxuICAgICAgICAnbXVsdGlTZWxlY3RBdXRvY29tcGxldGUnLFxyXG4gICAgICAgIEZvcm1Db250cm9sVHlwZS5BVVRPX0NPTVBMRVRFXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmdyb3VwID1cclxuICAgICAgdGhpcy5ncm91cCA/P1xyXG4gICAgICB0aGlzLmZvcm1VdGlsaXR5U2VydmljZS5nZXRGb3JtR3JvdXAoJ211bHRpU2VsZWN0QXV0b2NvbXBsZXRlJyk7XHJcbiAgICB0aGlzLm11bHRpU2VsZWN0QXV0b0NvbXBsZXRlT3B0aW9ucyA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5tdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvbnMgPz9cclxuICAgICAgdGhpcy5tdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvbnM7XHJcbiAgICBpZiAodGhpcy5jb25maWc/LnZhbHVlKSB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IHRoaXMuY29uZmlnPy52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGZvcm0gY29udHJvbCBjaGFuZ2UgZXZlbnQgb25jZSB0aGUgZm9ybSBjb250cm9sIGlzIHJlYWR5IG9uIG5nQWZ0ZXJWaWV3SW5pdCBieSBjYWxsaW5nIG9uVmFsdWVDaGFuZ2VzIG1ldGhvZC5cclxuICAgKiBAbWVtYmVyb2YgTXVsdGlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyBhbiBtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZVNlYXJjaFZhbHVlIGNoYW5nZSBldmVudCB3aGVuIHRoZSB2YWx1ZSBpcyBjaGFuZ2VkIGFuZCB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gbWluQ2hhclRvU2VhcmNoIG9yIGVxdWFsIHRvIHplcm8uXHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25WYWx1ZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBmcm9tRXZlbnQodGhpcy5tdWx0aVNlbGVjdEF1dG9Db21wbGV0ZT8ubmF0aXZlRWxlbWVudCwgJ2tleXVwJylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgbWFwKChldmVudDogYW55KSA9PiBldmVudD8udGFyZ2V0Py52YWx1ZSksXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgIChyZXM6IGFueSkgPT5cclxuICAgICAgICAgICAgcmVzPy5sZW5ndGggPFxyXG4gICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29uc3RJbmZvPy5hdXRvY29tcGxldGU/Lm1pbkNoYXJUb1NlYXJjaCAmJlxyXG4gICAgICAgICAgICByZXM/Lmxlbmd0aCAhPT0gMFxyXG4gICAgICAgICksXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuYXV0b2NvbXBsZXRlQ29uc3RJbmZvPy5hdXRvY29tcGxldGU/LmRlYm91bmNlVGltZSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodGV4dCA9PT0gJycpIHRoaXMuaGFuZGxlRmllbGRFcnJvcigpO1xyXG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RBdXRvQ29tcGxldGVDbGVhclNlYXJjaFZhbHVlLmVtaXQodGV4dCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ3JvdXA/LmNvbnRyb2xzW3RoaXMuY29uZmlnPy5jb250cm9sTmFtZV0/LnZhbHVlQ2hhbmdlc1xyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgIChyZXM6IGFueSkgPT5cclxuICAgICAgICAgICAgcmVzPy5sZW5ndGggPj1cclxuICAgICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnN0SW5mbz8uYXV0b2NvbXBsZXRlPy5taW5DaGFyVG9TZWFyY2ggfHxcclxuICAgICAgICAgICAgcmVzPy5sZW5ndGggPT09IDBcclxuICAgICAgICApLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmF1dG9jb21wbGV0ZUNvbnN0SW5mbz8uYXV0b2NvbXBsZXRlPy5kZWJvdW5jZVRpbWUpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgodGV4dDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdEF1dG9Db21wbGV0ZVNlYXJjaFZhbHVlLmVtaXQodGV4dCk7XHJcbiAgICAgICAgaWYgKHRleHQgPT09ICcnKSB0aGlzLmhhbmRsZUZpZWxkRXJyb3IoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGZpZWxkIGVycm9yIGJ5IHNldHRpbmcgdGhlIGFwcHJvcHJpYXRlIGZvcm0gY29udHJvbCBlcnJvcnMuXHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgaGFuZGxlRmllbGRFcnJvcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXA/LmdldCh0aGlzLmNvbmZpZz8uY29udHJvbE5hbWUpPy5zZXRFcnJvcnMoe1xyXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIGEgbmV3bHkgZW50ZXJlZCBvcHRpb24gdG8gdGhlIHNlbGVjdGVkT3B0aW9ucyBhcnJheS5cclxuICAgKiBAcGFyYW0geyp9IGV2ZW50IC1UaGUgZXZlbnQgY29udGFpbmluZyB0aGUgaW5wdXQgYW5kIHZhbHVlLlxyXG4gICAqIEBtZW1iZXJvZiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGFkZChldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQ/LmlucHV0O1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudD8udmFsdWU7XHJcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IHtcclxuICAgICAgaWQ6ICcnLFxyXG4gICAgICBuYW1lOiB2YWx1ZT8udHJpbSgpLFxyXG4gICAgfTtcclxuICAgIGlmICgodmFsdWUgfHwgJycpLnRyaW0oKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5wdXNoKHNlbGVjdGVkT3B0aW9uKTtcclxuICAgIH1cclxuICAgIGlmIChpbnB1dCkge1xyXG4gICAgICBpbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtYXRTZWxlY3RlZE9wdGlvbih0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgc2VsZWN0ZWQgb3B0aW9uIGZyb20gdGhlIHNlbGVjdGVkT3B0aW9ucyBhcnJheS5cclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wdGlvbn0gcmVtb3ZlZE9wdGlvbiAtVGhlIG9wdGlvbiB0byByZW1vdmUuXHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25PcHRpb25SZW1vdmVkKHJlbW92ZWRPcHRpb246IFNlbGVjdE9wdGlvbik6IHZvaWQge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkT3B0aW9ucz8uZmluZEluZGV4KFxyXG4gICAgICAob3B0aW9uOiBTZWxlY3RPcHRpb24pID0+IG9wdGlvbi5pZCA9PT0gcmVtb3ZlZE9wdGlvbi5pZFxyXG4gICAgKTtcclxuICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zPy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb25zPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5ncm91cC52YWx1ZVt0aGlzLmNvbmZpZz8uY29udHJvbE5hbWVdID0gJyc7XHJcbiAgICAgIHRoaXMuZ3JvdXA/LmNvbnRyb2xzW3RoaXMuY29uZmlnPy5jb250cm9sTmFtZV0uc2V0VmFsdWUoJycpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgICB0aGlzLmF1dG9Db21wbGV0ZU9wdGlvbkxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5oYW5kbGVGaWVsZEVycm9yKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvcm1hdFNlbGVjdGVkT3B0aW9uKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIHNlbGVjdGlvbiBvZiBhbiBhdXRvY29tcGxldGUgb3B0aW9uLlxyXG4gICAqIEBwYXJhbSB7QXV0b0NvbXBsZXRlT3B0aW9ufSBvcHRpb24gIC1UaGUgc2VsZWN0ZWQgYXV0b2NvbXBsZXRlIG9wdGlvbi5cclxuICAgKiBAcmV0dXJuIHtBdXRvQ29tcGxldGVPcHRpb259XHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvbkNoYW5nZShvcHRpb246IGFueSk6IEF1dG9Db21wbGV0ZU9wdGlvbiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IG9wdGlvbj8udmFsdWU7XHJcbiAgICBpZiAodGhpcy5pc0NoZWNrYm94U2VsZWN0ZWQodmFsdWUpKSB7XHJcbiAgICAgIHRoaXMub25PcHRpb25SZW1vdmVkKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtYXRTZWxlY3RlZE9wdGlvbih0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICB0aGlzLm11bHRpU2VsZWN0QXV0b0NvbXBsZXRlPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdHMgdGhlIHNlbGVjdGVkIG9wdGlvbnMgYW5kIGVtaXRzIHRoZSBtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvblNlbGVjdGVkIGV2ZW50LlxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9uW119IHNlbGVjdGVkT3B0aW9ucyAtQXJyYXkgb2Ygc2VsZWN0ZWQgb3B0aW9ucy5cclxuICAgKiBAbWVtYmVyb2YgTXVsdGlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcclxuICAgKi9cclxuICBmb3JtYXRTZWxlY3RlZE9wdGlvbihzZWxlY3RlZE9wdGlvbnM6IFNlbGVjdE9wdGlvbltdKSB7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWRPcHRpb25zID0gc2VsZWN0ZWRPcHRpb25zPy5tYXAoKG9wdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGlkOiBvcHRpb24uaWQsXHJcbiAgICAgICAgbmFtZTogb3B0aW9uLm5hbWUsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIHRoaXMubXVsdGlTZWxlY3RBdXRvQ29tcGxldGVPcHRpb25zU2VsZWN0ZWQ/LmVtaXQoZm9ybWF0dGVkT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5cyB0aGUgbmFtZSBvZiB0aGUgb3B0aW9uXHJcbiAgICogQHBhcmFtIHtBdXRvQ29tcGxldGVPcHRpb259IG9wdGlvblxyXG4gICAqIEByZXR1cm4geyp9ICB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRpc3BsYXlPcHRpb25OYW1lKG9wdGlvbjogQXV0b0NvbXBsZXRlT3B0aW9uKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBvcHRpb24/Lm5hbWUgPyBvcHRpb24ubmFtZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhY2tzIHRoZSBvcHRpb24gYnkgaXRzIGluZGV4IG9yIGlkLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9ufSBvcHRpb25cclxuICAgKiBAcmV0dXJuIHsqfSAgeyhudW1iZXIgfCBzdHJpbmcpfVxyXG4gICAqIEBtZW1iZXJvZiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBvcHRpb246IFNlbGVjdE9wdGlvbik6IG51bWJlciB8IHN0cmluZyB7XHJcbiAgICByZXR1cm4gb3B0aW9uLmlkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIHRoZSBjaGVja2JveCBpcyBzZWxlY3RlZC5cclxuICAgKiBAcGFyYW0ge0F1dG9Db21wbGV0ZU9wdGlvbn0gb3B0aW9uXHJcbiAgICogQHJldHVybiB7Kn0gIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGlzQ2hlY2tib3hTZWxlY3RlZChvcHRpb246IEF1dG9Db21wbGV0ZU9wdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb25zPy5zb21lKChpdGVtKSA9PiBpdGVtLmlkID09PSBvcHRpb24uaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXJzIGFsbCBzZWxlY3RlZCBvcHRpb25zLlxyXG4gICAqIEBtZW1iZXJvZiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNsZWFyU2VsZWN0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXAudmFsdWVbdGhpcy5jb25maWc/LmNvbnRyb2xOYW1lXSA9ICcnO1xyXG4gICAgdGhpcy5ncm91cD8uY29udHJvbHNbdGhpcy5jb25maWc/LmNvbnRyb2xOYW1lXS5zZXRWYWx1ZSgnJyk7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGVPcHRpb25MaXN0ID0gW107XHJcbiAgICB0aGlzLmZvcm1hdFNlbGVjdGVkT3B0aW9uKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcclxuICAgIHRoaXMuaGFuZGxlRmllbGRFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW1wbGVtZW50YXRpb24gb2YgbmdPbkRlc3Ryb3kgbGlmZWN5Y2xlIGhvb2sgbWV0aG9kIHRvIHVuc3Vic2NyaWJlIHRoZSBvcGVuIG9ic2VydmFibGUgc3Vic2NyaXB0aW9ucy5cclxuICAgKiBAbWVtYmVyb2YgTXVsdGlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLW11bHRpLXNlbGVjdC1hdXRvY29tcGxldGVcIlxyXG4gIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxyXG4gICpuZ0lmPVwiZ3JvdXBcIlxyXG4gIFtuZ0NsYXNzXT1cIlxyXG4gICAgY29uZmlnLmlzTGFiZWxBbGlnbmVkTGVmdFxyXG4gICAgICA/ICdpZWVlc2EtbXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS1maWVsZF9fbGFiZWwtbGVmdCdcclxuICAgICAgOiAnaWVlZXNhLW11bHRpLXNlbGVjdC1hdXRvY29tcGxldGUtZmllbGRfX2xhYmVsLXRvcCdcclxuICBcIlxyXG4+XHJcbiAgPG1hdC1sYWJlbCBjbGFzcz1cImllZWVzYS1ib2R5LXNtLTE0IGllZWVzYS1tdWx0aS1zZWxlY3QtYXV0b2NvbXBsZXRlX19sYWJlbFwiXHJcbiAgICA+e3sgY29uZmlnLmxhYmVsIH19PC9tYXQtbGFiZWxcclxuICA+XHJcbiAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICBjbGFzcz1cImllZWVzYS1tdWx0aS1zZWxlY3QtYXV0b2NvbXBsZXRlX19tYXQtZm9ybS1maWVsZFwiXHJcbiAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgPlxyXG4gICAgPG1hdC1jaGlwLWdyaWRcclxuICAgICAgI2NoaXBHcmlkXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXV0b2NvbXBsZXRlQ29uc3RJbmZvPy5tdWx0aVNlbGVjdEF1dG9Db21wbGV0ZT8uYXJpYUxhYmVsPy5zZWxlY3RlZE9wdGlvbnNcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWNoaXAtcm93XHJcbiAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWxlY3RlZE9wdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJvcHRpb24/Lm5hbWVcIlxyXG4gICAgICAgIFtyZW1vdmFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgKHJlbW92ZWQpPVwib25PcHRpb25SZW1vdmVkKG9wdGlvbilcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJpZWVlc2EtbGFiZWwtbGctYm9sZC0xNiBtLTBcIj5cclxuICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19PHNwYW4gKm5nSWY9XCJvcHRpb24uaWQgPT09ICcnIFwiPio8L3NwYW4+XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG1hdENoaXBSZW1vdmVcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXV0b2NvbXBsZXRlQ29uc3RJbmZvPy5tdWx0aVNlbGVjdEF1dG9Db21wbGV0ZT8uYXJpYUxhYmVsPy5yZW1vdmVPcHRpb24gKyBvcHRpb24ubmFtZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImllZWVzYS1jaGlwX19zdmctYXZhdGFyXCIgbWF0Q2hpcEF2YXRhcj5cclxuICAgICAgICAgICAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cInJlbW92ZUljb25VUkxcIj48L3VzZT5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1jaGlwLXJvdz5cclxuICAgIDwvbWF0LWNoaXAtZ3JpZD5cclxuICAgIDxpbnB1dFxyXG4gICAgICBtYXRJbnB1dFxyXG4gICAgICBjbGFzcz1cImllZWVzYS1tdWx0aS1zZWxlY3QtYXV0b2NvbXBsZXRlX19pbnB1dCBpZWVlc2EtdGl0bGUtc20tMTZcIlxyXG4gICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25maWcucGxhY2Vob2xkZXIgPz8gJydcIlxyXG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbmZpZy5jb250cm9sTmFtZVwiXHJcbiAgICAgIFtuYW1lXT1cImNvbmZpZy5jb250cm9sTmFtZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uZmlnLmFyaWFMYWJlbFwiXHJcbiAgICAgIFthcmlhLWRlc2NyaWJlZGJ5XT1cImNvbmZpZy5hcmlhRGVzY3JpYmVkQnlJZCA/PyAnJ1wiXHJcbiAgICAgICNtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZVxyXG4gICAgICBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCJcclxuICAgICAgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZCgkZXZlbnQpXCJcclxuICAgICAgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwR3JpZFwiXHJcbiAgICAvPlxyXG4gICAgPG1hdC1hdXRvY29tcGxldGVcclxuICAgICAgI21hdEF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbkNoYW5nZSgkZXZlbnQub3B0aW9uKVwiXHJcbiAgICAgIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5T3B0aW9uTmFtZVwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLW11bHRpLXNlbGVjdC1hdXRvY29tcGxldGVfX2F1dG9jb21wbGV0ZS1saXN0XCJcclxuICAgID5cclxuICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGF1dG9Db21wbGV0ZU9wdGlvbkxpc3Q7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWNoZWNrYm94IGNvbG9yPVwicHJpbWFyeVwiIFtjaGVja2VkXT1cImlzQ2hlY2tib3hTZWxlY3RlZChvcHRpb24pXCI+XHJcbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgbWF0U3VmZml4XHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImF1dG9jb21wbGV0ZUNvbnN0SW5mby5hcmlhTGFiZWwuY2xlYXJcIlxyXG4gICAgICAqbmdJZj1cInNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCJcclxuICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9ucygpXCJcclxuICAgID5cclxuICAgICAgPHN2ZyBjbGFzcz1cImllZWVzYS1tdWx0aS1zZWxlY3QtYXV0b2NvbXBsZXRlX19zdmctY2xlYXItYWxsXCI+XHJcbiAgICAgICAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cImNsZWFyQWxsSWNvblVSTFwiPjwvdXNlPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPGllZWVzYS1mb3JtLWVycm9yIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIiBbY29uZmlnXT1cImNvbmZpZ1wiPiA8L2llZWVzYS1mb3JtLWVycm9yPlxyXG4gIDxpZWVlc2EtZm9ybS1zdXBwb3J0LXRleHRcclxuICAgIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxyXG4gICAgW2NvbmZpZ109XCJjb25maWdcIlxyXG4gID48L2llZWVzYS1mb3JtLXN1cHBvcnQtdGV4dD5cclxuPC9kaXY+XHJcbiJdfQ==