oasys-lib 2.4.1 → 2.6.0-rc.0
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.
- package/fesm2022/oasys-lib.mjs +347 -267
- package/fesm2022/oasys-lib.mjs.map +1 -1
- package/lib/components/form/errors-summary/errors-summary-item/form-errors-summary-item.component.d.ts +12 -0
- package/lib/components/form/errors-summary/errors-summary-item/form-errors-summary-item.component.d.ts.map +1 -0
- package/lib/components/form/errors-summary/errors-summary-title/form-errors-summary-title.component.d.ts +6 -0
- package/lib/components/form/errors-summary/errors-summary-title/form-errors-summary-title.component.d.ts.map +1 -0
- package/lib/components/form/errors-summary/form-errors-summary.component.d.ts +13 -0
- package/lib/components/form/errors-summary/form-errors-summary.component.d.ts.map +1 -0
- package/lib/components/form/errors-summary/index.d.ts +4 -0
- package/lib/components/form/errors-summary/index.d.ts.map +1 -0
- package/lib/components/form/form-group/index.d.ts +1 -1
- package/lib/components/form/form-group/index.d.ts.map +1 -1
- package/package.json +3 -5
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -1
- package/src/assets/bloomandwild/variables.css +1 -1
- package/src/assets/bloomon/variables.css +1 -1
- package/src/assets/global/scss-breakpoints.scss +1 -1
- package/esm2022/lib/components/alert/alert-cancel.directive.mjs +0 -22
- package/esm2022/lib/components/alert/alert-confirm.directive.mjs +0 -22
- package/esm2022/lib/components/alert/alert-content.directive.mjs +0 -14
- package/esm2022/lib/components/alert/alert-title.directive.mjs +0 -14
- package/esm2022/lib/components/alert/alert.component.mjs +0 -78
- package/esm2022/lib/components/alert/alert.module.mjs +0 -40
- package/esm2022/lib/components/alert/index.mjs +0 -7
- package/esm2022/lib/components/banner/banner.component.mjs +0 -62
- package/esm2022/lib/components/banner/banner.module.mjs +0 -16
- package/esm2022/lib/components/banner/index.mjs +0 -3
- package/esm2022/lib/components/button/button.component.mjs +0 -120
- package/esm2022/lib/components/button/button.mjs +0 -2
- package/esm2022/lib/components/button/button.module.mjs +0 -16
- package/esm2022/lib/components/button/index.mjs +0 -4
- package/esm2022/lib/components/button-group/button-group.component.mjs +0 -55
- package/esm2022/lib/components/button-group/button-group.module.mjs +0 -16
- package/esm2022/lib/components/button-group/index.mjs +0 -3
- package/esm2022/lib/components/card/card.component.mjs +0 -87
- package/esm2022/lib/components/card/card.mjs +0 -2
- package/esm2022/lib/components/card/card.module.mjs +0 -16
- package/esm2022/lib/components/card/index.mjs +0 -3
- package/esm2022/lib/components/carousel/carousel.component.mjs +0 -289
- package/esm2022/lib/components/carousel/carousel.module.mjs +0 -16
- package/esm2022/lib/components/carousel/index.mjs +0 -3
- package/esm2022/lib/components/divider/divider.component.mjs +0 -22
- package/esm2022/lib/components/divider/divider.mjs +0 -2
- package/esm2022/lib/components/divider/divider.module.mjs +0 -16
- package/esm2022/lib/components/divider/index.mjs +0 -3
- package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +0 -81
- package/esm2022/lib/components/form/checkbox/checkbox.module.mjs +0 -16
- package/esm2022/lib/components/form/checkbox/index.mjs +0 -3
- package/esm2022/lib/components/form/chip/chip.component.mjs +0 -88
- package/esm2022/lib/components/form/chip/chip.module.mjs +0 -16
- package/esm2022/lib/components/form/chip/index.mjs +0 -3
- package/esm2022/lib/components/form/combobox/combobox.component.mjs +0 -478
- package/esm2022/lib/components/form/combobox/combobox.mjs +0 -2
- package/esm2022/lib/components/form/combobox/combobox.module.mjs +0 -82
- package/esm2022/lib/components/form/combobox/index.mjs +0 -3
- package/esm2022/lib/components/form/errors/form-errors.component.mjs +0 -26
- package/esm2022/lib/components/form/errors/form-errors.module.mjs +0 -16
- package/esm2022/lib/components/form/errors/index.mjs +0 -3
- package/esm2022/lib/components/form/form-group/form-group.component.mjs +0 -32
- package/esm2022/lib/components/form/form-group/form-group.module.mjs +0 -16
- package/esm2022/lib/components/form/form-group/index.mjs +0 -3
- package/esm2022/lib/components/form/forms.mjs +0 -2
- package/esm2022/lib/components/form/radio/index.mjs +0 -3
- package/esm2022/lib/components/form/radio/radio.component.mjs +0 -80
- package/esm2022/lib/components/form/radio/radio.module.mjs +0 -16
- package/esm2022/lib/components/form/text-input/index.mjs +0 -3
- package/esm2022/lib/components/form/text-input/text-input.component.mjs +0 -185
- package/esm2022/lib/components/form/text-input/text-input.mjs +0 -2
- package/esm2022/lib/components/form/text-input/text-input.module.mjs +0 -16
- package/esm2022/lib/components/heading/heading.component.mjs +0 -107
- package/esm2022/lib/components/heading/heading.mjs +0 -2
- package/esm2022/lib/components/heading/heading.module.mjs +0 -16
- package/esm2022/lib/components/heading/index.mjs +0 -3
- package/esm2022/lib/components/hero/hero.component.mjs +0 -109
- package/esm2022/lib/components/hero/hero.module.mjs +0 -16
- package/esm2022/lib/components/hero/index.mjs +0 -3
- package/esm2022/lib/components/icon/icon.component.mjs +0 -61
- package/esm2022/lib/components/icon/icon.mjs +0 -2
- package/esm2022/lib/components/icon/icon.module.mjs +0 -16
- package/esm2022/lib/components/icon/index.mjs +0 -4
- package/esm2022/lib/components/image/image.component.mjs +0 -154
- package/esm2022/lib/components/image/image.mjs +0 -2
- package/esm2022/lib/components/image/image.module.mjs +0 -16
- package/esm2022/lib/components/image/index.mjs +0 -3
- package/esm2022/lib/components/label/index.mjs +0 -3
- package/esm2022/lib/components/label/label.component.mjs +0 -69
- package/esm2022/lib/components/label/label.module.mjs +0 -16
- package/esm2022/lib/components/layout/Layout.mjs +0 -2
- package/esm2022/lib/components/layout/box/box.component.mjs +0 -183
- package/esm2022/lib/components/layout/box/box.mjs +0 -3
- package/esm2022/lib/components/layout/container/container.component.mjs +0 -44
- package/esm2022/lib/components/layout/grid/grid-column.component.mjs +0 -55
- package/esm2022/lib/components/layout/grid/grid.component.mjs +0 -53
- package/esm2022/lib/components/layout/index.mjs +0 -8
- package/esm2022/lib/components/layout/layout.module.mjs +0 -40
- package/esm2022/lib/components/layout/stack/stack.component.mjs +0 -64
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.component.mjs +0 -37
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.module.mjs +0 -16
- package/esm2022/lib/components/navigation/breadcrumbs/index.mjs +0 -3
- package/esm2022/lib/components/navigation/tabs/tab/tab.component.mjs +0 -33
- package/esm2022/lib/components/navigation/tabs/tab-active/tab-active.component.mjs +0 -19
- package/esm2022/lib/components/navigation/tabs/tab-group/index.mjs +0 -4
- package/esm2022/lib/components/navigation/tabs/tab-group/tab-group.component.mjs +0 -38
- package/esm2022/lib/components/navigation/tabs/tab-group/tab-group.module.mjs +0 -27
- package/esm2022/lib/components/navigation/tabs/tab-header/tab-header.component.mjs +0 -70
- package/esm2022/lib/components/pill/index.mjs +0 -3
- package/esm2022/lib/components/pill/pill.component.mjs +0 -21
- package/esm2022/lib/components/pill/pill.mjs +0 -2
- package/esm2022/lib/components/pill/pill.module.mjs +0 -16
- package/esm2022/lib/components/pill-group/index.mjs +0 -3
- package/esm2022/lib/components/pill-group/pill-group.component.mjs +0 -41
- package/esm2022/lib/components/pill-group/pill-group.module.mjs +0 -16
- package/esm2022/lib/components/price/index.mjs +0 -3
- package/esm2022/lib/components/price/price.component.mjs +0 -32
- package/esm2022/lib/components/price/price.module.mjs +0 -16
- package/esm2022/lib/components/progress-bar/index.mjs +0 -2
- package/esm2022/lib/components/progress-bar/progress-bar.component.mjs +0 -23
- package/esm2022/lib/components/promo-card/index.mjs +0 -3
- package/esm2022/lib/components/promo-card/promo-card.component.mjs +0 -87
- package/esm2022/lib/components/promo-card/promo-card.module.mjs +0 -16
- package/esm2022/lib/components/section/index.mjs +0 -3
- package/esm2022/lib/components/section/section.component.mjs +0 -119
- package/esm2022/lib/components/section/section.module.mjs +0 -16
- package/esm2022/lib/components/select-card/index.mjs +0 -3
- package/esm2022/lib/components/select-card/select-card.component.mjs +0 -94
- package/esm2022/lib/components/select-card/select-card.module.mjs +0 -16
- package/esm2022/lib/components/seo-block/index.mjs +0 -3
- package/esm2022/lib/components/seo-block/seo-block.component.mjs +0 -84
- package/esm2022/lib/components/seo-block/seo-block.module.mjs +0 -16
- package/esm2022/lib/components/text/index.mjs +0 -3
- package/esm2022/lib/components/text/text.component.mjs +0 -29
- package/esm2022/lib/components/text/text.mjs +0 -2
- package/esm2022/lib/components/text/text.module.mjs +0 -16
- package/esm2022/lib/directives/autofocus/autofocus.directive.mjs +0 -31
- package/esm2022/lib/directives/emphasis/emphasis.directive.mjs +0 -38
- package/esm2022/lib/directives/href/href.directive.mjs +0 -26
- package/esm2022/lib/services/breakpoint.service.mjs +0 -49
- package/esm2022/lib/services/image.service.mjs +0 -68
- package/esm2022/lib/services/index.mjs +0 -4
- package/esm2022/lib/services/media-base-url.provider.mjs +0 -3
- package/esm2022/lib/services/routing-handler.provider.mjs +0 -3
- package/esm2022/lib/services/swiper.provider.mjs +0 -13
- package/esm2022/lib/services/token.service.mjs +0 -71
- package/esm2022/oasys-lib.mjs +0 -5
- package/esm2022/public-api.mjs +0 -37
|
@@ -1,478 +0,0 @@
|
|
|
1
|
-
import { DOCUMENT, NgClass } from '@angular/common';
|
|
2
|
-
import { Component, EventEmitter, Input, Output, forwardRef, ElementRef, Inject, ViewChild, ViewChildren, HostListener, signal, } from '@angular/core';
|
|
3
|
-
import { NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule, } from '@angular/forms';
|
|
4
|
-
import { LayoutStackComponent } from '../../layout/stack/stack.component';
|
|
5
|
-
import { LayoutBoxComponent } from '../../layout/box/box.component';
|
|
6
|
-
import { OasysAutofocusDirective } from '../../../directives/autofocus/autofocus.directive';
|
|
7
|
-
import { IconComponent } from '../../icon/icon.component';
|
|
8
|
-
import { EmphasisDirective } from '../../../directives/emphasis/emphasis.directive';
|
|
9
|
-
import { OasysButtonComponent } from '../../button';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/forms";
|
|
12
|
-
export class ComboboxComponent {
|
|
13
|
-
document;
|
|
14
|
-
label;
|
|
15
|
-
type = 'options';
|
|
16
|
-
options = [];
|
|
17
|
-
optional = true;
|
|
18
|
-
hint;
|
|
19
|
-
header;
|
|
20
|
-
footer;
|
|
21
|
-
autofocus = false;
|
|
22
|
-
disabled = false;
|
|
23
|
-
selected;
|
|
24
|
-
// Key value from options to be displayed as option label
|
|
25
|
-
displayKey;
|
|
26
|
-
// Key value from options to be used as icon in option label
|
|
27
|
-
iconNameKey;
|
|
28
|
-
// Key value from options be be value
|
|
29
|
-
valueKey;
|
|
30
|
-
// Available for Autocomplete
|
|
31
|
-
subtextKey;
|
|
32
|
-
placeholder;
|
|
33
|
-
// Will open the list of options on init
|
|
34
|
-
showOptions = false;
|
|
35
|
-
didChange = new EventEmitter();
|
|
36
|
-
didSearch = new EventEmitter();
|
|
37
|
-
didEdit = new EventEmitter();
|
|
38
|
-
textValue = '';
|
|
39
|
-
inputDidChange = false; // only show valdiation after a change event (ie. blur)
|
|
40
|
-
displayOptions = [];
|
|
41
|
-
_selectedOption;
|
|
42
|
-
_focusedOption;
|
|
43
|
-
_focusedOptionId;
|
|
44
|
-
id;
|
|
45
|
-
/** Whether or not the overlay panel is open. */
|
|
46
|
-
panelOpen = signal(false);
|
|
47
|
-
/**
|
|
48
|
-
* Selected option
|
|
49
|
-
*/
|
|
50
|
-
get selectedOption() {
|
|
51
|
-
return this._selectedOption || null;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Focused Option
|
|
55
|
-
*/
|
|
56
|
-
get focusedOption() {
|
|
57
|
-
return this._focusedOption || null;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Return the id of the focused option
|
|
61
|
-
*/
|
|
62
|
-
get focusedId() {
|
|
63
|
-
return this._focusedOptionId;
|
|
64
|
-
}
|
|
65
|
-
get valueOptionKey() {
|
|
66
|
-
return this.valueKey ? this.valueKey : 'value';
|
|
67
|
-
}
|
|
68
|
-
get displayOptionKey() {
|
|
69
|
-
return this.displayKey ? this.displayKey : 'label';
|
|
70
|
-
}
|
|
71
|
-
get subtextOptionKey() {
|
|
72
|
-
return this.subtextKey ? this.subtextKey : 'subtext';
|
|
73
|
-
}
|
|
74
|
-
textInput;
|
|
75
|
-
combobox;
|
|
76
|
-
optionsList;
|
|
77
|
-
constructor(document) {
|
|
78
|
-
this.document = document;
|
|
79
|
-
}
|
|
80
|
-
onChange = () => { };
|
|
81
|
-
onTouched = () => { };
|
|
82
|
-
onClick(targetElement) {
|
|
83
|
-
if (this.panelOpen()) {
|
|
84
|
-
const clickedInside = this.combobox.nativeElement.contains(targetElement);
|
|
85
|
-
if (!clickedInside) {
|
|
86
|
-
this.closePanel();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* On Change
|
|
92
|
-
* @param changes
|
|
93
|
-
*/
|
|
94
|
-
ngOnChanges(changes) {
|
|
95
|
-
// Detects if the autocomplete options list is chnaged after a selection of an option.
|
|
96
|
-
// Example: Address search can have options assigned to a group of options. One postcode to have x number of addreses
|
|
97
|
-
// If Options list is Changed as part of group option we let the options panel open to let user select a single option. This is considered as change input value(similar with type value)
|
|
98
|
-
if (this.type === 'autocomplete' && changes['options']) {
|
|
99
|
-
const optionchanges = changes['options'];
|
|
100
|
-
if (!this.options) {
|
|
101
|
-
this.closePanel();
|
|
102
|
-
}
|
|
103
|
-
if (optionchanges['currentValue'] !== optionchanges['previousValue'] &&
|
|
104
|
-
this.options?.length !== 0 &&
|
|
105
|
-
!optionchanges['firstChange']) {
|
|
106
|
-
this.resetOptionsList();
|
|
107
|
-
this.openPanel();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* On Init
|
|
113
|
-
*/
|
|
114
|
-
ngOnInit() {
|
|
115
|
-
this.id = this.label + Math.random();
|
|
116
|
-
this.resetSelection();
|
|
117
|
-
this.resetOptionsList();
|
|
118
|
-
if (this.selected) {
|
|
119
|
-
const selectedIndex = this.options.findIndex((option) => option[this.valueOptionKey] === this.selected[this.valueOptionKey]);
|
|
120
|
-
this.selectOption(this.options[selectedIndex], selectedIndex);
|
|
121
|
-
}
|
|
122
|
-
if (this.showOptions) {
|
|
123
|
-
this.openPanel();
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* After View Init
|
|
128
|
-
*/
|
|
129
|
-
ngAfterViewInit() {
|
|
130
|
-
this.setupValidationListener();
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Select Option
|
|
134
|
-
* @param option
|
|
135
|
-
*/
|
|
136
|
-
selectOption(option, index) {
|
|
137
|
-
this._selectedOption = option;
|
|
138
|
-
this._focusedOptionId = index;
|
|
139
|
-
this._focusedOption = option;
|
|
140
|
-
this.textValue = this._selectedOption[this.displayOptionKey];
|
|
141
|
-
this.onChange(this.textValue);
|
|
142
|
-
this.didChange.emit(this.selectedOption);
|
|
143
|
-
this.onTouched();
|
|
144
|
-
this.closePanel();
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* On Key Navigation
|
|
148
|
-
* @param event
|
|
149
|
-
*/
|
|
150
|
-
onKeyDown(event) {
|
|
151
|
-
switch (event.key) {
|
|
152
|
-
case 'Enter':
|
|
153
|
-
if (this.panelOpen()) {
|
|
154
|
-
this.pressEnter();
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
this.openPanel(event);
|
|
158
|
-
}
|
|
159
|
-
break;
|
|
160
|
-
case 'Tab':
|
|
161
|
-
if (this.panelOpen()) {
|
|
162
|
-
this.closePanel();
|
|
163
|
-
}
|
|
164
|
-
break;
|
|
165
|
-
case 'Escape':
|
|
166
|
-
if (this.panelOpen()) {
|
|
167
|
-
this.closePanel();
|
|
168
|
-
}
|
|
169
|
-
break;
|
|
170
|
-
}
|
|
171
|
-
// Logic for open panel
|
|
172
|
-
if (this.panelOpen()) {
|
|
173
|
-
this.pressArrows(event);
|
|
174
|
-
this.optionsList.get(this._focusedOptionId)?.nativeElement.focus();
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Toggle Options Panel
|
|
179
|
-
*/
|
|
180
|
-
togglePanel() {
|
|
181
|
-
this.panelOpen.set(!this.panelOpen());
|
|
182
|
-
this.initSelectedFocus();
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Clase Options Panel
|
|
186
|
-
*/
|
|
187
|
-
openPanel(event) {
|
|
188
|
-
event?.preventDefault();
|
|
189
|
-
if (!this.panelOpen()) {
|
|
190
|
-
this.panelOpen.set(true);
|
|
191
|
-
this.initSelectedFocus();
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Close Options Panel
|
|
196
|
-
*/
|
|
197
|
-
closePanel() {
|
|
198
|
-
this.panelOpen.set(false);
|
|
199
|
-
this.initSelectedFocus();
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Get Input display value
|
|
203
|
-
* @param textValue
|
|
204
|
-
*/
|
|
205
|
-
writeValue(textValue) {
|
|
206
|
-
if ((this.selected && typeof textValue !== 'string') || textValue === '') {
|
|
207
|
-
this.textValue = this._selectedOption[this.displayOptionKey];
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
this.textValue = textValue;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Register Form input chnage
|
|
215
|
-
* @param fn
|
|
216
|
-
*/
|
|
217
|
-
registerOnChange(fn) {
|
|
218
|
-
this.onChange = fn;
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Register form input touch
|
|
222
|
-
* @param fn
|
|
223
|
-
*/
|
|
224
|
-
registerOnTouched(fn) {
|
|
225
|
-
this.onTouched = fn;
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* On Model Change
|
|
229
|
-
* @param textValue
|
|
230
|
-
*/
|
|
231
|
-
onModelChange(textValue) {
|
|
232
|
-
this.textValue = textValue;
|
|
233
|
-
this.inputDidChange = true;
|
|
234
|
-
this.onChange(textValue);
|
|
235
|
-
this.onTouched();
|
|
236
|
-
this.didChange.emit(this.selectedOption);
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* On Model Change
|
|
240
|
-
* @param textValue
|
|
241
|
-
*/
|
|
242
|
-
onModelChangeAutocomplete(textValue) {
|
|
243
|
-
this.textValue = textValue;
|
|
244
|
-
this.inputDidChange = true;
|
|
245
|
-
this.onChange(textValue);
|
|
246
|
-
this.onTouched();
|
|
247
|
-
this.didChange.emit(this.selectedOption);
|
|
248
|
-
this.onAutocompleteListSearch(textValue);
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Event handling for Input value
|
|
252
|
-
*/
|
|
253
|
-
handleEvent() {
|
|
254
|
-
this.inputDidChange = true;
|
|
255
|
-
const inputElement = this.document.getElementById(this.id.toString());
|
|
256
|
-
inputElement?.removeEventListener('change', this);
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Clean Input
|
|
260
|
-
*/
|
|
261
|
-
cleanInput() {
|
|
262
|
-
this.textValue = '';
|
|
263
|
-
this.resetSelection();
|
|
264
|
-
this.resetOptionsList();
|
|
265
|
-
this.closePanel();
|
|
266
|
-
this.didSearch.emit(this.textValue);
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* On footer action
|
|
270
|
-
*/
|
|
271
|
-
onFooterAction() {
|
|
272
|
-
this.didEdit.emit();
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* On Focus Input
|
|
276
|
-
*/
|
|
277
|
-
onFocusInput() {
|
|
278
|
-
this.textInput.nativeElement.focus();
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* Search in Autocomplete
|
|
282
|
-
* @param textValue
|
|
283
|
-
*/
|
|
284
|
-
onAutocompleteListSearch(textValue) {
|
|
285
|
-
if (!textValue) {
|
|
286
|
-
this.closePanel();
|
|
287
|
-
this.resetSelection();
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
this.openPanel();
|
|
291
|
-
this.displayOptions = this.options.filter((option) => {
|
|
292
|
-
return (this.checkIncludesSubstring(option, this.displayOptionKey) ||
|
|
293
|
-
this.checkIncludesSubstring(option, this.subtextOptionKey));
|
|
294
|
-
});
|
|
295
|
-
if (this.displayOptions.length === 0) {
|
|
296
|
-
this.closePanel();
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
this.textInput.nativeElement.focus();
|
|
300
|
-
this.didSearch.emit(this.textValue);
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Check a susbcring is included in option value
|
|
304
|
-
* @param option
|
|
305
|
-
* @returns
|
|
306
|
-
*/
|
|
307
|
-
checkIncludesSubstring(option, key) {
|
|
308
|
-
return option[key]?.toString().toLowerCase().includes(this.textValue.toLowerCase());
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Set Input Validators
|
|
312
|
-
*/
|
|
313
|
-
setupValidationListener() {
|
|
314
|
-
const inputElement = this.document.getElementById(this.id.toString());
|
|
315
|
-
inputElement?.addEventListener('change', this);
|
|
316
|
-
}
|
|
317
|
-
/**
|
|
318
|
-
* Init focus mode or set the selected option as focused
|
|
319
|
-
*/
|
|
320
|
-
initSelectedFocus() {
|
|
321
|
-
if (this.panelOpen()) {
|
|
322
|
-
if (this._selectedOption) {
|
|
323
|
-
this._focusedOption = this._selectedOption;
|
|
324
|
-
}
|
|
325
|
-
else {
|
|
326
|
-
this._focusedOptionId = 0;
|
|
327
|
-
this._focusedOption = this.options[this._focusedOptionId];
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
/**
|
|
332
|
-
* Arrows Up/Down navigation inside Options Panel
|
|
333
|
-
*/
|
|
334
|
-
pressArrows(event) {
|
|
335
|
-
switch (event.key) {
|
|
336
|
-
case 'ArrowDown':
|
|
337
|
-
event.preventDefault();
|
|
338
|
-
event.stopPropagation();
|
|
339
|
-
this._focusedOptionId = Math.min(this._focusedOptionId + 1, this.displayOptions.length - 1);
|
|
340
|
-
this._focusedOption = this.displayOptions[this._focusedOptionId];
|
|
341
|
-
this.autocompleteOptionTextPreview();
|
|
342
|
-
break;
|
|
343
|
-
case 'ArrowUp':
|
|
344
|
-
event.preventDefault();
|
|
345
|
-
event.stopPropagation();
|
|
346
|
-
this._focusedOptionId = Math.max(this._focusedOptionId - 1, 0);
|
|
347
|
-
this._focusedOption = this.displayOptions[this._focusedOptionId];
|
|
348
|
-
this.autocompleteOptionTextPreview();
|
|
349
|
-
break;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Change textValue to preview the option in autocomplete
|
|
354
|
-
*/
|
|
355
|
-
autocompleteOptionTextPreview() {
|
|
356
|
-
if (this.type === 'autocomplete') {
|
|
357
|
-
this.textValue = this._focusedOption[this.displayOptionKey];
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Press Enter inside Options Panel
|
|
362
|
-
*/
|
|
363
|
-
pressEnter() {
|
|
364
|
-
if (this.panelOpen() &&
|
|
365
|
-
this._focusedOptionId < this.displayOptions.length &&
|
|
366
|
-
this._focusedOptionId >= 0) {
|
|
367
|
-
this.selectOption(this.displayOptions[this._focusedOptionId], this._focusedOptionId);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Reset selected option
|
|
372
|
-
*/
|
|
373
|
-
resetSelection() {
|
|
374
|
-
this._selectedOption = null;
|
|
375
|
-
this._focusedOption = null;
|
|
376
|
-
this._focusedOptionId = 0;
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* Reset to original or unfiltered option list
|
|
380
|
-
*/
|
|
381
|
-
resetOptionsList() {
|
|
382
|
-
this.displayOptions = this.options;
|
|
383
|
-
}
|
|
384
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ComboboxComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
385
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ComboboxComponent, isStandalone: true, selector: "ui-combobox", inputs: { label: "label", type: "type", options: "options", optional: "optional", hint: "hint", header: "header", footer: "footer", autofocus: "autofocus", disabled: "disabled", selected: "selected", displayKey: "displayKey", iconNameKey: "iconNameKey", valueKey: "valueKey", subtextKey: "subtextKey", placeholder: "placeholder", showOptions: "showOptions" }, outputs: { didChange: "didChange", didSearch: "didSearch", didEdit: "didEdit" }, host: { listeners: { "document:click": "onClick($event.target)" } }, providers: [
|
|
386
|
-
{
|
|
387
|
-
provide: NG_VALUE_ACCESSOR,
|
|
388
|
-
useExisting: forwardRef(() => ComboboxComponent),
|
|
389
|
-
multi: true,
|
|
390
|
-
},
|
|
391
|
-
], viewQueries: [{ propertyName: "textInput", first: true, predicate: ["textinput"], descendants: true, read: ElementRef }, { propertyName: "combobox", first: true, predicate: ["combobox"], descendants: true, read: ElementRef }, { propertyName: "optionsList", predicate: ["option"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ui-stack class=\"ui-combobox-container\" stack_gap=\"tight\">\n <div class=\"ui-combobox text-body--default text-body--regular\">\n <!-- Compbobox Options Input -->\n @if (type === 'options') {\n <div\n #combobox\n name=\"combobox\"\n tabindex=\"0\"\n (keydown)=\"onKeyDown($event)\"\n (mousedown)=\"togglePanel()\"\n role=\"combobox\"\n id=\"activedescendent-edit\"\n [attr.aria-label]=\"label\"\n [attr.aria-activedescendant]=\"panelOpen() ? 'activedescendent-opt-' + focusedId : null\"\n [attr.aria-expanded]=\"panelOpen()\"\n [attr.aria-controls]=\"'activedescendent-list'\"\n aria-readonly=\"true\"\n aria-owns=\"activedescendent-list\"\n aria-autocomplete=\"list\"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <ui-box box_space=\"none\" box_background=\"transparent\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" [for]=\"id\">{{ label }}</label>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChange($event)\"\n (blur)=\"onModelChange(textValue)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'on'\"\n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"selectedOption\"\n [placeholder]=\"placeholder || ''\"\n readonly=\"readonly\"\n tabindex=\"-1\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n <!-- Select Icon Chevron Area -->\n <div class=\"icon-container\" [ngClass]=\"{ expand: panelOpen() }\">\n <ui-icon icon_name=\"chevron-down\"></ui-icon>\n </div>\n </ui-stack>\n </div>\n }\n <!-- Combobox Autocomplete Input -->\n @if (type === 'autocomplete') {\n <div\n #combobox\n name=\"combobox\"\n tabindex=\"0\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"onFocusInput()\"\n role=\"combobox\"\n id=\"activedescendent-edit\"\n [attr.aria-label]=\"label\"\n [attr.aria-activedescendant]=\"panelOpen() ? 'activedescendent-opt-' + focusedId : null\"\n [attr.aria-expanded]=\"panelOpen()\"\n [attr.aria-controls]=\"'activedescendent-list'\"\n aria-readonly=\"true\"\n aria-owns=\"activedescendent-list\"\n aria-autocomplete=\"list\"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <ui-box box_space=\"none\" box_background=\"transparent\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" [for]=\"id\">{{ label }}</label>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChangeAutocomplete($event)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'list'\"\n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"textValue\"\n [placeholder]=\"placeholder || ''\"\n role=\"combobox\"\n tabindex=\"-1\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n\n <!-- Combobox Icon Clear Area -->\n <div class=\"icon-container\" [attr.aria-label]=\"'clean'\" (click)=\"cleanInput()\">\n @if (textValue) {\n <ui-icon icon_name=\"close\"></ui-icon>\n }\n </div>\n </ui-stack>\n </div>\n }\n <!-- Combobox Options Panel -->\n @if (panelOpen()) {\n <div\n class=\"ui-combobox-options\"\n [ngClass]=\"{ expand: panelOpen() }\"\n role=\"listbox\"\n id=\"activedescendent-list\"\n >\n <!-- Autocomplete Options Panel Header -->\n @if (header && type === 'autocomplete') {\n <div class=\"ui-combobox-header text-body--supporting\">\n <span>{{ header }}</span>\n </div>\n }\n\n <!-- Options list -->\n @for (option of displayOptions; track option; let i = $index) {\n <div\n #option\n class=\"ui-combobox-option\"\n [ngClass]=\"{\n selected: selectedOption === option,\n focus: focusedOption === option,\n }\"\n (click)=\"selectOption(option, i)\"\n (keydown)=\"onKeyDown($event)\"\n [id]=\"'activedescendent-opt-' + i\"\n [attr.aria-label]=\"\n selectedOption === option\n ? option[displayOptionKey] + ' is selected'\n : option[displayOptionKey]\n \"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <!-- Option display -->\n <div\n [attr.value]=\"valueKey ? option[valueKey] : option.value\"\n [attr.ngValue]=\"displayKey ? option[displayKey] : option.label\"\n >\n <ui-stack stack_direction=\"x\" stack_align=\"center\" stack_gap=\"tight\">\n @if (option.icon_name || (iconNameKey && option[iconNameKey])) {\n <ui-icon\n [icon_name]=\"iconNameKey ? option[iconNameKey] : option.icon_name\"\n ></ui-icon>\n }\n <!-- Display options label -->\n @if (type === 'options') {\n <span>{{ option[displayOptionKey] }}</span>\n }\n\n <!-- Display autocomplete option information and emphasis-->\n @if (type === 'autocomplete') {\n <ui-stack stack_gap=\"tiny\">\n <span\n ui-emphasis\n [searchText]=\"textValue\"\n [displayParagraph]=\"option[displayOptionKey]\"\n >\n </span>\n <p class=\"foreground-secondary-text\">\n {{ option[subtextOptionKey] }}\n </p>\n </ui-stack>\n }\n </ui-stack>\n </div>\n\n <!-- Selected icon -->\n @if (selectedOption === option) {\n <ui-icon icon_name=\"tick\"></ui-icon>\n }\n </ui-stack>\n </div>\n }\n <!-- Autocomplete Options Panel Footer -->\n @if (footer && type === 'autocomplete') {\n <div class=\"ui-combobox-footer\">\n <ui-button button_type=\"tertiary\" (click)=\"onFooterAction()\">\n {{ footer }}\n </ui-button>\n </div>\n }\n </div>\n }\n </div>\n <ui-stack stack_gap=\"none\">\n <div class=\"input-errors\">\n <div class=\"input-errors-content\">\n <ng-content select=\"ui-form-errors\"></ng-content>\n </div>\n </div>\n @if (hint) {\n <ui-box\n class=\"hint-container\"\n box_background=\"transparent\"\n box_space=\"none\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"near\"\n >\n <div class=\"ui-text-input-hint text-body--supporting text-color--supporting\">\n {{ hint }}\n </div>\n </ui-box>\n }\n </ui-stack>\n</ui-stack>\n", styles: ["html{font-size:62.5%}html,html body{font-family:var(--oasys-typography-body-body-font-family);font-weight:var(--oasys-typography-body-body-font-weight);font-size:var(--oasys-typography-body-body-font-size);line-height:var(--oasys-typography-body-body-line-height);color:var(--oasys-color-brand-foreground-primary)}html b,html bold,html strong,html body b,html body bold,html body strong{font-weight:var(--oasys-typography-body-emphasis-hero-font-weight)}html i,html body i{font-style:normal}h1,h2,h3,.text-heading,.text-body--expressive,.ui-rce blockquote,.ui-prose blockquote,article blockquote,.text-heading--body--expressive{font-family:var(--oasys-typography-heading-hero-desktop-font-family)}h4,h5,h6,.text-heading--functional,.ui-rce h3,.ui-prose h3,article h3,.ui-rce h2,.ui-prose h2,article h2{font-family:var(--oasys-typography-heading-func-primary-desktop-font-family)}ui-container h1,ui-container h2,ui-container h3,ui-container h4,ui-container h5,ui-container h6,ui-container p,ui-box h1,ui-box h2,ui-box h3,ui-box h4,ui-box h5,ui-box h6,ui-box p,ui-stack h1,ui-stack h2,ui-stack h3,ui-stack h4,ui-stack h5,ui-stack h6,ui-stack p,ui-grid h1,ui-grid h2,ui-grid h3,ui-grid h4,ui-grid h5,ui-grid h6,ui-grid p{margin:0}h1:not(.seo-h1){font-size:var(--oasys-typography-heading-hero-desktop-font-size);line-height:var(--oasys-typography-heading-hero-desktop-line-height);font-weight:var(--oasys-typography-heading-hero-desktop-font-weight)}@media only screen and (max-width: 767px){h1:not(.seo-h1){font-size:var(--oasys-typography-heading-hero-mobile-font-size);line-height:var(--oasys-typography-heading-hero-mobile-line-height);font-weight:var(--oasys-typography-heading-hero-mobile-font-weight)}}.text-heading--hero,h1.text-heading--hero,h2.text-heading--hero,h3.text-heading--hero,h4.text-heading--hero,h5.text-heading--hero,h6.text-heading--hero{font-family:var(--oasys-typography-heading-hero-desktop-font-family);font-size:var(--oasys-typography-heading-hero-desktop-font-size);line-height:var(--oasys-typography-heading-hero-desktop-line-height);font-weight:var(--oasys-typography-heading-hero-desktop-font-weight)}@media only screen and (max-width: 767px){.text-heading--hero,h1.text-heading--hero,h2.text-heading--hero,h3.text-heading--hero,h4.text-heading--hero,h5.text-heading--hero,h6.text-heading--hero{font-size:var(--oasys-typography-heading-hero-mobile-font-size);line-height:var(--oasys-typography-heading-hero-mobile-line-height);font-weight:var(--oasys-typography-heading-hero-mobile-font-weight)}}h2{font-size:var(--oasys-typography-heading-primary-desktop-font-size);line-height:var(--oasys-typography-heading-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-primary-desktop-font-weight)}@media only screen and (max-width: 767px){h2{font-size:var(--oasys-typography-heading-primary-mobile-font-size);line-height:var(--oasys-typography-heading-primary-mobile-line-height);font-weight:var(--oasys-typography-heading-primary-mobile-font-weight)}}.text-heading--primary,h1.text-heading--primary,h2.text-heading--primary,h3.text-heading--primary,h4.text-heading--primary,h5.text-heading--primary,h6.text-heading--primary{font-family:var(--oasys-typography-heading-hero-desktop-font-family);font-size:var(--oasys-typography-heading-primary-desktop-font-size);line-height:var(--oasys-typography-heading-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-primary-desktop-font-weight)}@media only screen and (max-width: 767px){.text-heading--primary,h1.text-heading--primary,h2.text-heading--primary,h3.text-heading--primary,h4.text-heading--primary,h5.text-heading--primary,h6.text-heading--primary{font-size:var(--oasys-typography-heading-primary-mobile-font-size);line-height:var(--oasys-typography-heading-primary-mobile-line-height);font-weight:var(--oasys-typography-heading-primary-mobile-font-weight)}}h3{font-size:var(--oasys-typography-heading-secondary-font-size);line-height:var(--oasys-typography-heading-secondary-line-height);font-weight:var(--oasys-typography-heading-secondary-font-weight)}.text-heading--secondary,h1.text-heading--secondary,h2.text-heading--secondary,h3.text-heading--secondary,h4.text-heading--secondary,h5.text-heading--secondary,h6.text-heading--secondary{font-family:var(--oasys-typography-heading-hero-desktop-font-family);font-size:var(--oasys-typography-heading-secondary-font-size);line-height:var(--oasys-typography-heading-secondary-line-height);font-weight:var(--oasys-typography-heading-secondary-font-weight)}h4{font-size:var(--oasys-typography-heading-func-primary-desktop-font-size);line-height:var(--oasys-typography-heading-func-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-primary-desktop-font-weight)}@media only screen and (max-width: 767px){h4{font-size:var(--oasys-typography-heading-func-primary-mobile-font-size);line-height:var(--oasys-typography-heading-func-primary-mobile-line-height)}}.text-heading--functional--primary,.ui-rce h2,.ui-prose h2,article h2,h1.text-heading--functional--primary,h2.text-heading--functional--primary,h3.text-heading--functional--primary,h4.text-heading--functional--primary,h5.text-heading--functional--primary,h6.text-heading--functional--primary{font-family:var(--oasys-typography-heading-func-primary-desktop-font-family);font-size:var(--oasys-typography-heading-func-primary-desktop-font-size);line-height:var(--oasys-typography-heading-func-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-primary-desktop-font-weight)}@media only screen and (max-width: 767px){.text-heading--functional--primary,.ui-rce h2,.ui-prose h2,article h2,h1.text-heading--functional--primary,h2.text-heading--functional--primary,h3.text-heading--functional--primary,h4.text-heading--functional--primary,h5.text-heading--functional--primary,h6.text-heading--functional--primary{font-size:var(--oasys-typography-heading-func-primary-mobile-font-size);line-height:var(--oasys-typography-heading-func-primary-mobile-line-height)}}h5{font-size:var(--oasys-typography-heading-func-secondary-desktop-font-size);line-height:var(--oasys-typography-heading-func-secondary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-secondary-desktop-font-weight)}@media only screen and (max-width: 767px){h5{font-size:var(--oasys-typography-heading-func-secondary-mobile-font-size);line-height:var(--oasys-typography-heading-func-secondary-mobile-line-height);font-weight:var(--oasys-typography-heading-func-secondary-mobile-font-weight)}}.text-heading--functional--secondary,.ui-rce h3,.ui-prose h3,article h3,h1.text-heading--functional--secondary,h2.text-heading--functional--secondary,h3.text-heading--functional--secondary,h4.text-heading--functional--secondary,h5.text-heading--functional--secondary,h6.text-heading--functional--secondary{font-family:var(--oasys-typography-heading-func-primary-desktop-font-family);font-size:var(--oasys-typography-heading-func-secondary-desktop-font-size);line-height:var(--oasys-typography-heading-func-secondary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-secondary-desktop-font-weight)}@media only screen and (max-width: 767px){.text-heading--functional--secondary,.ui-rce h3,.ui-prose h3,article h3,h1.text-heading--functional--secondary,h2.text-heading--functional--secondary,h3.text-heading--functional--secondary,h4.text-heading--functional--secondary,h5.text-heading--functional--secondary,h6.text-heading--functional--secondary{font-size:var(--oasys-typography-heading-func-secondary-mobile-font-size);line-height:var(--oasys-typography-heading-func-secondary-mobile-line-height);font-weight:var(--oasys-typography-heading-func-secondary-mobile-font-weight)}}label{-webkit-user-select:none;user-select:none;cursor:pointer}label,.text-label--primary{font-size:var(--oasys-typography-heading-label-primary-font-size);line-height:var(--oasys-typography-heading-label-primary-line-height);font-weight:var(--oasys-typography-heading-label-primary-font-weight)}.text-label--secondary{font-size:var(--oasys-typography-heading-label-secondary-font-size);line-height:var(--oasys-typography-heading-label-secondary-line-height);font-weight:var(--oasys-typography-heading-label-secondary-font-weight)}.text-body--expressive,.ui-rce blockquote,.ui-prose blockquote,article blockquote,.text-heading--body--expressive{font-size:var(--oasys-typography-body-expressive-font-size);line-height:var(--oasys-typography-body-expressive-line-height);font-weight:var(--oasys-typography-body-expressive-font-weight)}.text-body--hero,.ui-combobox input:-webkit-autofill:first-line,.ui-combobox .select:-webkit-autofill:first-line,.ui-rce h6,.ui-prose h6,article h6{font-size:var(--oasys-typography-body-hero-font-size);line-height:var(--oasys-typography-body-hero-line-height);font-weight:var(--oasys-typography-body-hero-font-weight)}.text-body--default,.ui-rce p{font-size:var(--oasys-typography-body-body-font-size);line-height:var(--oasys-typography-body-body-line-height);font-weight:var(--oasys-typography-body-body-font-weight)}.text-body--supporting{font-size:var(--oasys-typography-body-supporting-font-size);line-height:var(--oasys-typography-body-supporting-line-height);font-weight:var(--oasys-typography-body-supporting-body-weight)}.text-body--micro{font-size:var(--oasys-typography-body-micro-font-size);line-height:var(--oasys-typography-body-micro-line-height);font-weight:var(--oasys-typography-body-micro-body-weight)}.text-body--regular,.ui-rce h6,.ui-prose h6,article h6{font-weight:var(--oasys-typography-body-body-font-weight)}.text-body--line-through{text-decoration:var(--oasys-typography-body-line-through-body-text-decoration)}.text-body--emphasis,.ui-combobox input,.ui-combobox .select,.ui-rce h3,.ui-prose h3,article h3,.ui-rce h2,.ui-prose h2,article h2,a--standalone,.text-link--standalone,.ui-rce .ui-rce-embed a,.ui-rce .ui-rce-embed a:hover,.ui-prose .ui-rce-embed a,.ui-prose .ui-rce-embed a:hover,article .ui-rce-embed a,article .ui-rce-embed a:hover{font-weight:var(--oasys-typography-body-emphasis-hero-font-weight)}.text-color--on-light{color:var(--oasys-color-brand-foreground-primary)}.text-color--on-light.text-color--supporting,.text-color--on-light .text-color--supporting{color:var(--oasys-color-brand-foreground-secondary)}.text-color--on-dark{color:var(--oasys-color-brand-foreground-primary-on-dark)}.text-color--on-dark.text-color--supporting,.text-color--on-dark .text-color--supporting{color:var(--oasys-color-brand-foreground-secondary-on-dark)}.text-color--supporting{color:var(--oasys-color-brand-foreground-secondary)}.text-color--error{color:var(--oasys-color-system-foreground-negative)}.text-color--highlight{color:var(--oasys-color-brand-foreground-highlight)}a{color:inherit;text-decoration:none}.text--readable-width,.ui-rce blockquote,.ui-prose blockquote,article blockquote{max-width:70ch}a,.text-link,.ui-rce a,.ui-rce a:hover,.ui-prose a,.ui-prose a:hover,article a,article a:hover{text-decoration:none;cursor:pointer}a--standalone,.text-link--standalone,.ui-rce .ui-rce-embed a,.ui-rce .ui-rce-embed a:hover,.ui-prose .ui-rce-embed a,.ui-prose .ui-rce-embed a:hover,article .ui-rce-embed a,article .ui-rce-embed a:hover{text-decoration:underline}a--paragraph,.text-link--paragraph,.ui-rce a,.ui-rce a:hover,.ui-prose a,.ui-prose a:hover,article a,article a:hover{text-decoration:underline;font-weight:inherit}.ui-rce h2,.ui-prose h2,article h2{padding-top:var(--oasys-prose-vertical-adjustment-heading-primary-large-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-primary-large-bottom)}@media only screen and (max-width: 767px){.ui-rce h2,.ui-prose h2,article h2{padding-top:var(--oasys-prose-vertical-adjustment-heading-primary-small-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-primary-small-bottom)}}.ui-rce h3,.ui-prose h3,article h3{padding-top:var(--oasys-prose-vertical-adjustment-heading-secondary-large-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-secondary-large-bottom)}@media only screen and (max-width: 767px){.ui-rce h3,.ui-prose h3,article h3{padding-top:var(--oasys-prose-vertical-adjustment-heading-secondary-small-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-secondary-small-bottom)}}.ui-rce p,.ui-rce ul,.ui-rce ol,.ui-prose p,.ui-prose ul,.ui-prose ol,article p,article ul,article ol{margin-bottom:var(--oasys-prose-vertical-adjustment-paragraph-bottom)}.ui-rce p:empty,.ui-rce ul:empty,.ui-rce ol:empty,.ui-prose p:empty,.ui-prose ul:empty,.ui-prose ol:empty,article p:empty,article ul:empty,article ol:empty{display:none}.ui-rce blockquote,.ui-prose blockquote,article blockquote{padding-top:var(--oasys-prose-vertical-adjustment-blockquote-top);margin-bottom:var(--oasys-prose-vertical-adjustment-blockquote-bottom);text-align:center;margin:0 auto}.ui-rce hr,.ui-prose hr,article hr{display:block;width:100%;border:0;padding:0;margin:0;height:var(--oasys-size-unit-8);background:var(--oasys-color-brand-background-secondary);margin-top:var(--oasys-spacing-expanded);margin-bottom:var(--oasys-spacing-expanded)}.ui-rce ol,.ui-prose ol,article ol{list-style-type:decimal;list-style-position:inside}.ui-rce ul,.ui-prose ul,article ul{list-style:initial;list-style-position:inside}.ui-rce .ui-rce-embed,.ui-prose .ui-rce-embed,article .ui-rce-embed{padding-top:var(--oasys-prose-vertical-adjustment-component-top-bottom);margin-bottom:var(--oasys-prose-vertical-adjustment-component-top-bottom)}.ui-rce .ui-rce-embed ui-button a,.ui-rce .ui-rce-embed ui-button a:hover,.ui-prose .ui-rce-embed ui-button a,.ui-prose .ui-rce-embed ui-button a:hover,article .ui-rce-embed ui-button a,article .ui-rce-embed ui-button a:hover{text-decoration:none}.ui-rce>ui-box .ui-box-content>*:first-child{padding-top:0}.ui-rce>ui-box .ui-box-content>*:last-child{margin-bottom:0}.ui-rce .ui-rce-instance:last-of-type{padding-bottom:var(--oasys-spacing-expanded)}.ui-rce ui-button,.ui-rce img{display:inline-block;margin:0;margin-top:var(--oasys-spacing-near);margin-right:var(--oasys-spacing-near);vertical-align:top}.ui-rce ui-button:last-child,.ui-rce img:last-child{margin-right:0}.ui-rce img{width:100%}.ui-rce ol p,.ui-rce ul p{display:inline;margin:0}form fieldset legend{margin-bottom:var(--oasys-spacing-near)}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .ui-text-input,form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .ui-combobox,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .ui-text-input,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-danger)}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .input-errors,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .input-errors .input-errors-content,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .input-errors .input-errors-content{visibility:visible!important}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .hint-container,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .hint-container{display:none!important}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .ui-text-input,form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .ui-combobox,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .ui-text-input,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-danger)}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .input-errors,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .input-errors .input-errors-content,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .input-errors .input-errors-content{visibility:visible!important}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .hint-container,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .hint-container{display:none!important}.ui-checkbox input,.ui-radio input,.ui-text-input input,.ui-combobox input{appearance:none;margin:0;border:none}.ui-checkbox input,.ui-radio input{cursor:pointer}.ui-checkbox,.ui-radio{--_inset: var(--oasys-spacing-near);--_radius: var(--oasys-radius-soften);--_transition_duration: calc(var(--oasys-animation-duration) * 1ms)}.ui-checkbox input,.ui-radio input{position:absolute;inset:0;border-radius:var(--oasys-radius-soften)}.ui-checkbox input.secondary,.ui-radio input.secondary{inset:unset;top:var(--_inset);--_focusSize: var(--oasys-typography-heading-label-secondary-line-height);width:var(--_focusSize);height:var(--_focusSize)}.ui-checkbox input+label,.ui-radio input+label{width:inherit;display:flex;align-items:center;gap:var(--oasys-spacing-tight)}.ui-checkbox input+label .icon-container,.ui-radio input+label .icon-container{align-self:flex-start;padding:var(--oasys-component-checkbox-icon-inset);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected);border-radius:var(--_radius)}.ui-checkbox input+label .input-hint:empty,.ui-radio input+label .input-hint:empty{display:none}.ui-checkbox input+label.primary,.ui-radio input+label.primary{padding:var(--_inset);border-radius:var(--_radius);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-checkbox input+label.secondary,.ui-radio input+label.secondary{padding:var(--_inset) 0}.ui-checkbox input+label.secondary .icon-container,.ui-radio input+label.secondary .icon-container{background:transparent;border-radius:var(--_radius);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected)}.ui-checkbox input+label,.ui-checkbox input+label .icon-container,.ui-radio input+label,.ui-radio input+label .icon-container{transition:background-color calc(var(--_transition_duration) * 1ms),border-color calc(var(--_transition_duration) * 1ms)}.ui-checkbox input:hover+label.primary,.ui-checkbox input:checked+label.primary,.ui-radio input:hover+label.primary,.ui-radio input:checked+label.primary{background:var(--oasys-color-interaction-background-selected)}.ui-checkbox input:hover+label.secondary .icon-container,.ui-checkbox input:checked+label.secondary .icon-container,.ui-radio input:hover+label.secondary .icon-container,.ui-radio input:checked+label.secondary .icon-container{background:var(--oasys-color-interaction-background-selected)}.ui-checkbox input:checked+label.primary .icon-container,.ui-checkbox input:checked+label.secondary .icon-container,.ui-radio input:checked+label.primary .icon-container,.ui-radio input:checked+label.secondary .icon-container{background:var(--oasys-color-interaction-border-selected);border-color:var(--oasys-color-interaction-border-selected);color:var(--oasys-color-brand-foreground-primary-on-dark)}.ui-checkbox input:checked+label.primary,.ui-radio input:checked+label.primary{border-color:var(--oasys-color-interaction-border-selected)!important}.ui-checkbox input.ng-touched.ng-invalid+label,.ui-radio input.ng-touched.ng-invalid+label{color:var(--oasys-color-system-foreground-negative)}.ui-checkbox input.ng-touched.ng-invalid+label .icon-container,.ui-radio input.ng-touched.ng-invalid+label .icon-container{border-color:var(--oasys-color-system-foreground-negative)}.ui-chip .ui-checkbox input+label .icon-container.icon--hidden,.ui-chip .ui-radio input+label .icon-container.icon--hidden{display:none}.ui-chip .ui-checkbox input+label .label--center,.ui-chip .ui-radio input+label .label--center{margin:0 auto}.ui-chip .ui-checkbox input:checked+label.primary,.ui-chip .ui-radio input:checked+label.primary{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected)!important}.oasys-focus-style,.ui-combobox div[name=combobox]:focus,.ui-combobox div[name=combobox]:focus-visible,.ui-combobox div[name=combobox]:focus-within,[tabindex]:focus-visible,[tabindex]:focus,select:focus-visible,select:focus,textarea:focus-visible,textarea:focus,input:focus-visible,input:focus,button:focus-visible,button:focus,a:focus-visible,a:focus{outline:var(--oasys-border-width-focus) solid var(--oasys-color-interaction-border-focus);outline-offset:var(--oasys-border-width-focus-offset)}a:focus:not(:focus-visible){outline:none}button:focus:not(:focus-visible){outline:none}input:focus:not(:focus-visible){outline:none}textarea:focus:not(:focus-visible){outline:none}select:focus:not(:focus-visible){outline:none}[tabindex]:focus:not(:focus-visible){outline:none}:host{display:block;width:100%}:host.ng-touched.ng-dirty.ng-invalid:not(:focus-within) .ui-combobox-container .ui-text-input,:host.ng-touched.ng-dirty.ng-invalid:not(:focus-within) .ui-combobox-container .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-danger)}:host.ng-touched.ng-dirty.ng-invalid:not(:focus-within) .ui-combobox-container .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}:host.ng-touched.ng-dirty.ng-invalid:not(:focus-within) .ui-combobox-container .input-errors .input-errors-content{visibility:visible!important}:host.ng-touched.ng-dirty.ng-invalid:not(:focus-within) .ui-combobox-container .hint-container{display:none!important}.foreground-secondary-text{color:var(--oasys-color-brand-foreground-secondary)}.ui-combobox{background-color:var(--oasys-color-white);--_label-height: var(--oasys-typography-body-supporting-line-height);--_label-input-gap: var(--oasys-spacing-tiny);--_label-top-inset: var(--oasys-spacing-near);--_input-inset-top: calc( var(--_label-height) + var(--_label-input-gap) + var(--_label-top-inset) );--_preface-width: var(--oasys-component-text-input-preface-width);position:relative;transition:border calc(var(--oasys-animation-duration-long) * 1ms);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-footer,.ui-combobox-header{padding:var(--oasys-spacing-tight) var(--oasys-spacing-near);text-align:center}.ui-combobox-footer{cursor:pointer;border-top:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-header{color:var(--oasys-color-brand-foreground-secondary);border-bottom:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-options{--_ad: calc(var(--oasys-animation-duration-long) * 1ms);background-color:var(--oasys-color-white);box-shadow:0 24px 36px #2626261a;border-radius:var(--oasys-radius-soften);box-sizing:border-box;width:100%;height:auto;margin-top:var(--oasys-spacing-near);position:absolute;pointer-events:auto;outline:0;overflow:auto;transform-origin:top center;grid-template-rows:0fr;opacity:0;transition-timing-function:cubic-bezier(var(--oasys-animation-timing-function-soft));transition:opacity var(--_ad);will-change:opacity;z-index:1000}.ui-combobox-options.expand{opacity:1}.ui-combobox-option{cursor:pointer;border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) transparent;padding:var(--oasys-spacing-near);outline:none;outline-offset:none}.ui-combobox-option:hover,.ui-combobox-option.selected{background-color:var(--oasys-color-interaction-background-selected);border-radius:var(--oasys-radius-soften)}.ui-combobox-option.focus{border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) var(--oasys-color-interaction-border-focus)}.ui-combobox-option:focus-visible{border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) var(--oasys-color-interaction-border-focus)}.ui-combobox-container .input-errors{--_ad: calc(var(--oasys-animation-duration-long) * 1ms);display:grid;grid-template-rows:0fr;overflow:hidden;opacity:0;transform:translateY(-33%);transition:grid-template-rows var(--_ad),opacity var(--_ad),transform var(--_ad);transition-timing-function:cubic-bezier(var(--oasys-animation-timing-function-soft));will-change:grid-template-rows,transform,opacity}.ui-combobox-container .input-errors .input-errors-content{min-height:0;visibility:hidden;transition:visibility var(--_ad)}.ui-combobox-container .input-errors .hint-container{display:block!important}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus-within)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus-within)) .ui-combobox,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .ui-combobox,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus-within)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus-within)) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-danger)}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus-within)) .input-errors,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .input-errors,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus-within)) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus-within)) .input-errors .input-errors-content,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .input-errors .input-errors-content,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus-within)) .input-errors .input-errors-content{visibility:visible!important}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus-within)) .hint-container,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .hint-container,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus-within)) .hint-container{display:none!important}.ui-combobox-container:has(input:disabled) input,.ui-combobox-container:has(input:disabled) .select{background-color:none;color:var(--oasys-component-text-input-color-disabled-foreground)}.ui-combobox-container:has(input:disabled) .ui-combobox-input{background-color:var(--oasys-component-text-input-color-disabled-background)}.ui-combobox{border-radius:var(--oasys-radius-soften);width:100%}.ui-combobox input{border:none;width:100%;background-color:transparent;cursor:pointer}.ui-combobox input:focus{outline:none}.ui-combobox input,.ui-combobox .select{padding:var(--oasys-spacing-near);padding-top:var(--oasys-spacing-tiny)}.ui-combobox .label-container{padding-top:var(--oasys-spacing-near);padding-left:var(--oasys-spacing-near);width:calc(100% - var(--oasys-spacing-near) - var(--oasys-spacing-near))}.ui-combobox .label-container,.ui-combobox .label-container label{pointer-events:none;-webkit-user-select:none;user-select:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ui-combobox .icon-container{transition:all calc(var(--oasys-animation-duration-long) * 1ms) ease;transform-origin:center}.ui-combobox .icon-container:hover{transform:scale(1.1)}.ui-combobox .icon-container.expand{transform:rotate(-179.999deg)}.ui-combobox:has(.input-preface:not(:empty)){--_left-inset: calc(var(--oasys-spacing-near) + var(--_preface-width))}.ui-combobox:has(.input-preface:not(:empty)) .label-container{left:var(--_left-inset);width:calc(100% - var(--_left-inset) - var(--oasys-spacing-near))}.ui-combobox:has(.input-preface:not(:empty)) input,.ui-combobox:has(.input-preface:not(:empty)) .select{padding-left:var(--_left-inset)}.ui-combobox .input-preface{width:var(--_preface-width);height:100%;position:absolute;display:flex;justify-content:center;align-items:center;pointer-events:none;flex-direction:column;text-align:center;border-right:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox .input-preface:empty{visibility:hidden}.ui-combobox div[name=combobox]{cursor:pointer;padding-right:var(--oasys-spacing-near)}\n"], dependencies: [{ kind: "component", type: LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap", "stack_collapse_below"] }, { kind: "component", type: LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width", "box_border_color", "box_border_width", "box_border_style", "box_border_radius"] }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: OasysAutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "component", type: IconComponent, selector: "ui-icon", inputs: ["icon_size", "icon_size_override", "icon_name", "icon_context", "alt_text", "icon_class"] }, { kind: "directive", type: EmphasisDirective, selector: "[ui-emphasis]", inputs: ["searchText", "displayParagraph"] }, { kind: "component", type: OasysButtonComponent, selector: "ui-button", inputs: ["button_icon", "button_icon_placement", "button_size", "button_type", "button_full_width", "button_event_type", "button_disabled", "button_selected", "button_text_nowrap", "aria_label", "aria_role", "href"], outputs: ["clicked"] }] });
|
|
392
|
-
}
|
|
393
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ComboboxComponent, decorators: [{
|
|
394
|
-
type: Component,
|
|
395
|
-
args: [{ selector: 'ui-combobox', providers: [
|
|
396
|
-
{
|
|
397
|
-
provide: NG_VALUE_ACCESSOR,
|
|
398
|
-
useExisting: forwardRef(() => ComboboxComponent),
|
|
399
|
-
multi: true,
|
|
400
|
-
},
|
|
401
|
-
], standalone: true, imports: [
|
|
402
|
-
LayoutStackComponent,
|
|
403
|
-
LayoutBoxComponent,
|
|
404
|
-
ReactiveFormsModule,
|
|
405
|
-
FormsModule,
|
|
406
|
-
NgClass,
|
|
407
|
-
OasysAutofocusDirective,
|
|
408
|
-
IconComponent,
|
|
409
|
-
EmphasisDirective,
|
|
410
|
-
OasysButtonComponent,
|
|
411
|
-
], template: "<ui-stack class=\"ui-combobox-container\" stack_gap=\"tight\">\n <div class=\"ui-combobox text-body--default text-body--regular\">\n <!-- Compbobox Options Input -->\n @if (type === 'options') {\n <div\n #combobox\n name=\"combobox\"\n tabindex=\"0\"\n (keydown)=\"onKeyDown($event)\"\n (mousedown)=\"togglePanel()\"\n role=\"combobox\"\n id=\"activedescendent-edit\"\n [attr.aria-label]=\"label\"\n [attr.aria-activedescendant]=\"panelOpen() ? 'activedescendent-opt-' + focusedId : null\"\n [attr.aria-expanded]=\"panelOpen()\"\n [attr.aria-controls]=\"'activedescendent-list'\"\n aria-readonly=\"true\"\n aria-owns=\"activedescendent-list\"\n aria-autocomplete=\"list\"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <ui-box box_space=\"none\" box_background=\"transparent\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" [for]=\"id\">{{ label }}</label>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChange($event)\"\n (blur)=\"onModelChange(textValue)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'on'\"\n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"selectedOption\"\n [placeholder]=\"placeholder || ''\"\n readonly=\"readonly\"\n tabindex=\"-1\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n <!-- Select Icon Chevron Area -->\n <div class=\"icon-container\" [ngClass]=\"{ expand: panelOpen() }\">\n <ui-icon icon_name=\"chevron-down\"></ui-icon>\n </div>\n </ui-stack>\n </div>\n }\n <!-- Combobox Autocomplete Input -->\n @if (type === 'autocomplete') {\n <div\n #combobox\n name=\"combobox\"\n tabindex=\"0\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"onFocusInput()\"\n role=\"combobox\"\n id=\"activedescendent-edit\"\n [attr.aria-label]=\"label\"\n [attr.aria-activedescendant]=\"panelOpen() ? 'activedescendent-opt-' + focusedId : null\"\n [attr.aria-expanded]=\"panelOpen()\"\n [attr.aria-controls]=\"'activedescendent-list'\"\n aria-readonly=\"true\"\n aria-owns=\"activedescendent-list\"\n aria-autocomplete=\"list\"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <ui-box box_space=\"none\" box_background=\"transparent\">\n <!-- Select Label Area -->\n <div class=\"label-container\" stack_direction=\"x\">\n <label class=\"text-body--supporting text-body--regular\" [for]=\"id\">{{ label }}</label>\n </div>\n <input\n #textinput\n [id]=\"id\"\n [name]=\"id\"\n [ngModel]=\"textValue\"\n (ngModelChange)=\"onModelChangeAutocomplete($event)\"\n [ngClass]=\"inputDidChange ? 'ng-input-did-change' : 'ng-input-did-not-change'\"\n [attr.autocorrect]=\"'on'\"\n [attr.disabled]=\"disabled || null\"\n [autofocus]=\"autofocus\"\n [autocomplete]=\"'list'\"\n [required]=\"!optional\"\n [spellcheck]=\"'on'\"\n [type]=\"'text'\"\n [value]=\"textValue\"\n [placeholder]=\"placeholder || ''\"\n role=\"combobox\"\n tabindex=\"-1\"\n class=\"text-body--default text-body--regular\"\n />\n </ui-box>\n\n <!-- Combobox Icon Clear Area -->\n <div class=\"icon-container\" [attr.aria-label]=\"'clean'\" (click)=\"cleanInput()\">\n @if (textValue) {\n <ui-icon icon_name=\"close\"></ui-icon>\n }\n </div>\n </ui-stack>\n </div>\n }\n <!-- Combobox Options Panel -->\n @if (panelOpen()) {\n <div\n class=\"ui-combobox-options\"\n [ngClass]=\"{ expand: panelOpen() }\"\n role=\"listbox\"\n id=\"activedescendent-list\"\n >\n <!-- Autocomplete Options Panel Header -->\n @if (header && type === 'autocomplete') {\n <div class=\"ui-combobox-header text-body--supporting\">\n <span>{{ header }}</span>\n </div>\n }\n\n <!-- Options list -->\n @for (option of displayOptions; track option; let i = $index) {\n <div\n #option\n class=\"ui-combobox-option\"\n [ngClass]=\"{\n selected: selectedOption === option,\n focus: focusedOption === option,\n }\"\n (click)=\"selectOption(option, i)\"\n (keydown)=\"onKeyDown($event)\"\n [id]=\"'activedescendent-opt-' + i\"\n [attr.aria-label]=\"\n selectedOption === option\n ? option[displayOptionKey] + ' is selected'\n : option[displayOptionKey]\n \"\n >\n <ui-stack\n stack_direction=\"x\"\n stack_distribute=\"space-between\"\n stack_align=\"center\"\n stack_gap=\"tight\"\n >\n <!-- Option display -->\n <div\n [attr.value]=\"valueKey ? option[valueKey] : option.value\"\n [attr.ngValue]=\"displayKey ? option[displayKey] : option.label\"\n >\n <ui-stack stack_direction=\"x\" stack_align=\"center\" stack_gap=\"tight\">\n @if (option.icon_name || (iconNameKey && option[iconNameKey])) {\n <ui-icon\n [icon_name]=\"iconNameKey ? option[iconNameKey] : option.icon_name\"\n ></ui-icon>\n }\n <!-- Display options label -->\n @if (type === 'options') {\n <span>{{ option[displayOptionKey] }}</span>\n }\n\n <!-- Display autocomplete option information and emphasis-->\n @if (type === 'autocomplete') {\n <ui-stack stack_gap=\"tiny\">\n <span\n ui-emphasis\n [searchText]=\"textValue\"\n [displayParagraph]=\"option[displayOptionKey]\"\n >\n </span>\n <p class=\"foreground-secondary-text\">\n {{ option[subtextOptionKey] }}\n </p>\n </ui-stack>\n }\n </ui-stack>\n </div>\n\n <!-- Selected icon -->\n @if (selectedOption === option) {\n <ui-icon icon_name=\"tick\"></ui-icon>\n }\n </ui-stack>\n </div>\n }\n <!-- Autocomplete Options Panel Footer -->\n @if (footer && type === 'autocomplete') {\n <div class=\"ui-combobox-footer\">\n <ui-button button_type=\"tertiary\" (click)=\"onFooterAction()\">\n {{ footer }}\n </ui-button>\n </div>\n }\n </div>\n }\n </div>\n <ui-stack stack_gap=\"none\">\n <div class=\"input-errors\">\n <div class=\"input-errors-content\">\n <ng-content select=\"ui-form-errors\"></ng-content>\n </div>\n </div>\n @if (hint) {\n <ui-box\n class=\"hint-container\"\n box_background=\"transparent\"\n box_space=\"none\"\n box_space_left=\"near\"\n box_space_right=\"near\"\n box_space_bottom=\"near\"\n >\n <div class=\"ui-text-input-hint text-body--supporting text-color--supporting\">\n {{ hint }}\n </div>\n </ui-box>\n }\n </ui-stack>\n</ui-stack>\n", styles: ["html{font-size:62.5%}html,html body{font-family:var(--oasys-typography-body-body-font-family);font-weight:var(--oasys-typography-body-body-font-weight);font-size:var(--oasys-typography-body-body-font-size);line-height:var(--oasys-typography-body-body-line-height);color:var(--oasys-color-brand-foreground-primary)}html b,html bold,html strong,html body b,html body bold,html body strong{font-weight:var(--oasys-typography-body-emphasis-hero-font-weight)}html i,html body i{font-style:normal}h1,h2,h3,.text-heading,.text-body--expressive,.ui-rce blockquote,.ui-prose blockquote,article blockquote,.text-heading--body--expressive{font-family:var(--oasys-typography-heading-hero-desktop-font-family)}h4,h5,h6,.text-heading--functional,.ui-rce h3,.ui-prose h3,article h3,.ui-rce h2,.ui-prose h2,article h2{font-family:var(--oasys-typography-heading-func-primary-desktop-font-family)}ui-container h1,ui-container h2,ui-container h3,ui-container h4,ui-container h5,ui-container h6,ui-container p,ui-box h1,ui-box h2,ui-box h3,ui-box h4,ui-box h5,ui-box h6,ui-box p,ui-stack h1,ui-stack h2,ui-stack h3,ui-stack h4,ui-stack h5,ui-stack h6,ui-stack p,ui-grid h1,ui-grid h2,ui-grid h3,ui-grid h4,ui-grid h5,ui-grid h6,ui-grid p{margin:0}h1:not(.seo-h1){font-size:var(--oasys-typography-heading-hero-desktop-font-size);line-height:var(--oasys-typography-heading-hero-desktop-line-height);font-weight:var(--oasys-typography-heading-hero-desktop-font-weight)}@media only screen and (max-width: 767px){h1:not(.seo-h1){font-size:var(--oasys-typography-heading-hero-mobile-font-size);line-height:var(--oasys-typography-heading-hero-mobile-line-height);font-weight:var(--oasys-typography-heading-hero-mobile-font-weight)}}.text-heading--hero,h1.text-heading--hero,h2.text-heading--hero,h3.text-heading--hero,h4.text-heading--hero,h5.text-heading--hero,h6.text-heading--hero{font-family:var(--oasys-typography-heading-hero-desktop-font-family);font-size:var(--oasys-typography-heading-hero-desktop-font-size);line-height:var(--oasys-typography-heading-hero-desktop-line-height);font-weight:var(--oasys-typography-heading-hero-desktop-font-weight)}@media only screen and (max-width: 767px){.text-heading--hero,h1.text-heading--hero,h2.text-heading--hero,h3.text-heading--hero,h4.text-heading--hero,h5.text-heading--hero,h6.text-heading--hero{font-size:var(--oasys-typography-heading-hero-mobile-font-size);line-height:var(--oasys-typography-heading-hero-mobile-line-height);font-weight:var(--oasys-typography-heading-hero-mobile-font-weight)}}h2{font-size:var(--oasys-typography-heading-primary-desktop-font-size);line-height:var(--oasys-typography-heading-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-primary-desktop-font-weight)}@media only screen and (max-width: 767px){h2{font-size:var(--oasys-typography-heading-primary-mobile-font-size);line-height:var(--oasys-typography-heading-primary-mobile-line-height);font-weight:var(--oasys-typography-heading-primary-mobile-font-weight)}}.text-heading--primary,h1.text-heading--primary,h2.text-heading--primary,h3.text-heading--primary,h4.text-heading--primary,h5.text-heading--primary,h6.text-heading--primary{font-family:var(--oasys-typography-heading-hero-desktop-font-family);font-size:var(--oasys-typography-heading-primary-desktop-font-size);line-height:var(--oasys-typography-heading-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-primary-desktop-font-weight)}@media only screen and (max-width: 767px){.text-heading--primary,h1.text-heading--primary,h2.text-heading--primary,h3.text-heading--primary,h4.text-heading--primary,h5.text-heading--primary,h6.text-heading--primary{font-size:var(--oasys-typography-heading-primary-mobile-font-size);line-height:var(--oasys-typography-heading-primary-mobile-line-height);font-weight:var(--oasys-typography-heading-primary-mobile-font-weight)}}h3{font-size:var(--oasys-typography-heading-secondary-font-size);line-height:var(--oasys-typography-heading-secondary-line-height);font-weight:var(--oasys-typography-heading-secondary-font-weight)}.text-heading--secondary,h1.text-heading--secondary,h2.text-heading--secondary,h3.text-heading--secondary,h4.text-heading--secondary,h5.text-heading--secondary,h6.text-heading--secondary{font-family:var(--oasys-typography-heading-hero-desktop-font-family);font-size:var(--oasys-typography-heading-secondary-font-size);line-height:var(--oasys-typography-heading-secondary-line-height);font-weight:var(--oasys-typography-heading-secondary-font-weight)}h4{font-size:var(--oasys-typography-heading-func-primary-desktop-font-size);line-height:var(--oasys-typography-heading-func-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-primary-desktop-font-weight)}@media only screen and (max-width: 767px){h4{font-size:var(--oasys-typography-heading-func-primary-mobile-font-size);line-height:var(--oasys-typography-heading-func-primary-mobile-line-height)}}.text-heading--functional--primary,.ui-rce h2,.ui-prose h2,article h2,h1.text-heading--functional--primary,h2.text-heading--functional--primary,h3.text-heading--functional--primary,h4.text-heading--functional--primary,h5.text-heading--functional--primary,h6.text-heading--functional--primary{font-family:var(--oasys-typography-heading-func-primary-desktop-font-family);font-size:var(--oasys-typography-heading-func-primary-desktop-font-size);line-height:var(--oasys-typography-heading-func-primary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-primary-desktop-font-weight)}@media only screen and (max-width: 767px){.text-heading--functional--primary,.ui-rce h2,.ui-prose h2,article h2,h1.text-heading--functional--primary,h2.text-heading--functional--primary,h3.text-heading--functional--primary,h4.text-heading--functional--primary,h5.text-heading--functional--primary,h6.text-heading--functional--primary{font-size:var(--oasys-typography-heading-func-primary-mobile-font-size);line-height:var(--oasys-typography-heading-func-primary-mobile-line-height)}}h5{font-size:var(--oasys-typography-heading-func-secondary-desktop-font-size);line-height:var(--oasys-typography-heading-func-secondary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-secondary-desktop-font-weight)}@media only screen and (max-width: 767px){h5{font-size:var(--oasys-typography-heading-func-secondary-mobile-font-size);line-height:var(--oasys-typography-heading-func-secondary-mobile-line-height);font-weight:var(--oasys-typography-heading-func-secondary-mobile-font-weight)}}.text-heading--functional--secondary,.ui-rce h3,.ui-prose h3,article h3,h1.text-heading--functional--secondary,h2.text-heading--functional--secondary,h3.text-heading--functional--secondary,h4.text-heading--functional--secondary,h5.text-heading--functional--secondary,h6.text-heading--functional--secondary{font-family:var(--oasys-typography-heading-func-primary-desktop-font-family);font-size:var(--oasys-typography-heading-func-secondary-desktop-font-size);line-height:var(--oasys-typography-heading-func-secondary-desktop-line-height);font-weight:var(--oasys-typography-heading-func-secondary-desktop-font-weight)}@media only screen and (max-width: 767px){.text-heading--functional--secondary,.ui-rce h3,.ui-prose h3,article h3,h1.text-heading--functional--secondary,h2.text-heading--functional--secondary,h3.text-heading--functional--secondary,h4.text-heading--functional--secondary,h5.text-heading--functional--secondary,h6.text-heading--functional--secondary{font-size:var(--oasys-typography-heading-func-secondary-mobile-font-size);line-height:var(--oasys-typography-heading-func-secondary-mobile-line-height);font-weight:var(--oasys-typography-heading-func-secondary-mobile-font-weight)}}label{-webkit-user-select:none;user-select:none;cursor:pointer}label,.text-label--primary{font-size:var(--oasys-typography-heading-label-primary-font-size);line-height:var(--oasys-typography-heading-label-primary-line-height);font-weight:var(--oasys-typography-heading-label-primary-font-weight)}.text-label--secondary{font-size:var(--oasys-typography-heading-label-secondary-font-size);line-height:var(--oasys-typography-heading-label-secondary-line-height);font-weight:var(--oasys-typography-heading-label-secondary-font-weight)}.text-body--expressive,.ui-rce blockquote,.ui-prose blockquote,article blockquote,.text-heading--body--expressive{font-size:var(--oasys-typography-body-expressive-font-size);line-height:var(--oasys-typography-body-expressive-line-height);font-weight:var(--oasys-typography-body-expressive-font-weight)}.text-body--hero,.ui-combobox input:-webkit-autofill:first-line,.ui-combobox .select:-webkit-autofill:first-line,.ui-rce h6,.ui-prose h6,article h6{font-size:var(--oasys-typography-body-hero-font-size);line-height:var(--oasys-typography-body-hero-line-height);font-weight:var(--oasys-typography-body-hero-font-weight)}.text-body--default,.ui-rce p{font-size:var(--oasys-typography-body-body-font-size);line-height:var(--oasys-typography-body-body-line-height);font-weight:var(--oasys-typography-body-body-font-weight)}.text-body--supporting{font-size:var(--oasys-typography-body-supporting-font-size);line-height:var(--oasys-typography-body-supporting-line-height);font-weight:var(--oasys-typography-body-supporting-body-weight)}.text-body--micro{font-size:var(--oasys-typography-body-micro-font-size);line-height:var(--oasys-typography-body-micro-line-height);font-weight:var(--oasys-typography-body-micro-body-weight)}.text-body--regular,.ui-rce h6,.ui-prose h6,article h6{font-weight:var(--oasys-typography-body-body-font-weight)}.text-body--line-through{text-decoration:var(--oasys-typography-body-line-through-body-text-decoration)}.text-body--emphasis,.ui-combobox input,.ui-combobox .select,.ui-rce h3,.ui-prose h3,article h3,.ui-rce h2,.ui-prose h2,article h2,a--standalone,.text-link--standalone,.ui-rce .ui-rce-embed a,.ui-rce .ui-rce-embed a:hover,.ui-prose .ui-rce-embed a,.ui-prose .ui-rce-embed a:hover,article .ui-rce-embed a,article .ui-rce-embed a:hover{font-weight:var(--oasys-typography-body-emphasis-hero-font-weight)}.text-color--on-light{color:var(--oasys-color-brand-foreground-primary)}.text-color--on-light.text-color--supporting,.text-color--on-light .text-color--supporting{color:var(--oasys-color-brand-foreground-secondary)}.text-color--on-dark{color:var(--oasys-color-brand-foreground-primary-on-dark)}.text-color--on-dark.text-color--supporting,.text-color--on-dark .text-color--supporting{color:var(--oasys-color-brand-foreground-secondary-on-dark)}.text-color--supporting{color:var(--oasys-color-brand-foreground-secondary)}.text-color--error{color:var(--oasys-color-system-foreground-negative)}.text-color--highlight{color:var(--oasys-color-brand-foreground-highlight)}a{color:inherit;text-decoration:none}.text--readable-width,.ui-rce blockquote,.ui-prose blockquote,article blockquote{max-width:70ch}a,.text-link,.ui-rce a,.ui-rce a:hover,.ui-prose a,.ui-prose a:hover,article a,article a:hover{text-decoration:none;cursor:pointer}a--standalone,.text-link--standalone,.ui-rce .ui-rce-embed a,.ui-rce .ui-rce-embed a:hover,.ui-prose .ui-rce-embed a,.ui-prose .ui-rce-embed a:hover,article .ui-rce-embed a,article .ui-rce-embed a:hover{text-decoration:underline}a--paragraph,.text-link--paragraph,.ui-rce a,.ui-rce a:hover,.ui-prose a,.ui-prose a:hover,article a,article a:hover{text-decoration:underline;font-weight:inherit}.ui-rce h2,.ui-prose h2,article h2{padding-top:var(--oasys-prose-vertical-adjustment-heading-primary-large-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-primary-large-bottom)}@media only screen and (max-width: 767px){.ui-rce h2,.ui-prose h2,article h2{padding-top:var(--oasys-prose-vertical-adjustment-heading-primary-small-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-primary-small-bottom)}}.ui-rce h3,.ui-prose h3,article h3{padding-top:var(--oasys-prose-vertical-adjustment-heading-secondary-large-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-secondary-large-bottom)}@media only screen and (max-width: 767px){.ui-rce h3,.ui-prose h3,article h3{padding-top:var(--oasys-prose-vertical-adjustment-heading-secondary-small-top);margin-bottom:var(--oasys-prose-vertical-adjustment-heading-secondary-small-bottom)}}.ui-rce p,.ui-rce ul,.ui-rce ol,.ui-prose p,.ui-prose ul,.ui-prose ol,article p,article ul,article ol{margin-bottom:var(--oasys-prose-vertical-adjustment-paragraph-bottom)}.ui-rce p:empty,.ui-rce ul:empty,.ui-rce ol:empty,.ui-prose p:empty,.ui-prose ul:empty,.ui-prose ol:empty,article p:empty,article ul:empty,article ol:empty{display:none}.ui-rce blockquote,.ui-prose blockquote,article blockquote{padding-top:var(--oasys-prose-vertical-adjustment-blockquote-top);margin-bottom:var(--oasys-prose-vertical-adjustment-blockquote-bottom);text-align:center;margin:0 auto}.ui-rce hr,.ui-prose hr,article hr{display:block;width:100%;border:0;padding:0;margin:0;height:var(--oasys-size-unit-8);background:var(--oasys-color-brand-background-secondary);margin-top:var(--oasys-spacing-expanded);margin-bottom:var(--oasys-spacing-expanded)}.ui-rce ol,.ui-prose ol,article ol{list-style-type:decimal;list-style-position:inside}.ui-rce ul,.ui-prose ul,article ul{list-style:initial;list-style-position:inside}.ui-rce .ui-rce-embed,.ui-prose .ui-rce-embed,article .ui-rce-embed{padding-top:var(--oasys-prose-vertical-adjustment-component-top-bottom);margin-bottom:var(--oasys-prose-vertical-adjustment-component-top-bottom)}.ui-rce .ui-rce-embed ui-button a,.ui-rce .ui-rce-embed ui-button a:hover,.ui-prose .ui-rce-embed ui-button a,.ui-prose .ui-rce-embed ui-button a:hover,article .ui-rce-embed ui-button a,article .ui-rce-embed ui-button a:hover{text-decoration:none}.ui-rce>ui-box .ui-box-content>*:first-child{padding-top:0}.ui-rce>ui-box .ui-box-content>*:last-child{margin-bottom:0}.ui-rce .ui-rce-instance:last-of-type{padding-bottom:var(--oasys-spacing-expanded)}.ui-rce ui-button,.ui-rce img{display:inline-block;margin:0;margin-top:var(--oasys-spacing-near);margin-right:var(--oasys-spacing-near);vertical-align:top}.ui-rce ui-button:last-child,.ui-rce img:last-child{margin-right:0}.ui-rce img{width:100%}.ui-rce ol p,.ui-rce ul p{display:inline;margin:0}form fieldset legend{margin-bottom:var(--oasys-spacing-near)}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .ui-text-input,form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .ui-combobox,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .ui-text-input,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-danger)}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .input-errors,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .input-errors .input-errors-content,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .input-errors .input-errors-content{visibility:visible!important}form.ng-dirty .ui-text-input-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .hint-container,form.ng-dirty .ui-combobox-container:has(input.ng-invalid.ng-input-did-change:not(:focus-within)) .hint-container{display:none!important}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .ui-text-input,form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .ui-combobox,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .ui-text-input,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-danger)}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .input-errors,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .input-errors .input-errors-content,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .input-errors .input-errors-content{visibility:visible!important}form.ng-dirty.ng-submitted .ui-text-input-container:has(input.ng-invalid) .hint-container,form.ng-dirty.ng-submitted .ui-combobox-container:has(input.ng-invalid) .hint-container{display:none!important}.ui-checkbox input,.ui-radio input,.ui-text-input input,.ui-combobox input{appearance:none;margin:0;border:none}.ui-checkbox input,.ui-radio input{cursor:pointer}.ui-checkbox,.ui-radio{--_inset: var(--oasys-spacing-near);--_radius: var(--oasys-radius-soften);--_transition_duration: calc(var(--oasys-animation-duration) * 1ms)}.ui-checkbox input,.ui-radio input{position:absolute;inset:0;border-radius:var(--oasys-radius-soften)}.ui-checkbox input.secondary,.ui-radio input.secondary{inset:unset;top:var(--_inset);--_focusSize: var(--oasys-typography-heading-label-secondary-line-height);width:var(--_focusSize);height:var(--_focusSize)}.ui-checkbox input+label,.ui-radio input+label{width:inherit;display:flex;align-items:center;gap:var(--oasys-spacing-tight)}.ui-checkbox input+label .icon-container,.ui-radio input+label .icon-container{align-self:flex-start;padding:var(--oasys-component-checkbox-icon-inset);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected);border-radius:var(--_radius)}.ui-checkbox input+label .input-hint:empty,.ui-radio input+label .input-hint:empty{display:none}.ui-checkbox input+label.primary,.ui-radio input+label.primary{padding:var(--_inset);border-radius:var(--_radius);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-checkbox input+label.secondary,.ui-radio input+label.secondary{padding:var(--_inset) 0}.ui-checkbox input+label.secondary .icon-container,.ui-radio input+label.secondary .icon-container{background:transparent;border-radius:var(--_radius);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected)}.ui-checkbox input+label,.ui-checkbox input+label .icon-container,.ui-radio input+label,.ui-radio input+label .icon-container{transition:background-color calc(var(--_transition_duration) * 1ms),border-color calc(var(--_transition_duration) * 1ms)}.ui-checkbox input:hover+label.primary,.ui-checkbox input:checked+label.primary,.ui-radio input:hover+label.primary,.ui-radio input:checked+label.primary{background:var(--oasys-color-interaction-background-selected)}.ui-checkbox input:hover+label.secondary .icon-container,.ui-checkbox input:checked+label.secondary .icon-container,.ui-radio input:hover+label.secondary .icon-container,.ui-radio input:checked+label.secondary .icon-container{background:var(--oasys-color-interaction-background-selected)}.ui-checkbox input:checked+label.primary .icon-container,.ui-checkbox input:checked+label.secondary .icon-container,.ui-radio input:checked+label.primary .icon-container,.ui-radio input:checked+label.secondary .icon-container{background:var(--oasys-color-interaction-border-selected);border-color:var(--oasys-color-interaction-border-selected);color:var(--oasys-color-brand-foreground-primary-on-dark)}.ui-checkbox input:checked+label.primary,.ui-radio input:checked+label.primary{border-color:var(--oasys-color-interaction-border-selected)!important}.ui-checkbox input.ng-touched.ng-invalid+label,.ui-radio input.ng-touched.ng-invalid+label{color:var(--oasys-color-system-foreground-negative)}.ui-checkbox input.ng-touched.ng-invalid+label .icon-container,.ui-radio input.ng-touched.ng-invalid+label .icon-container{border-color:var(--oasys-color-system-foreground-negative)}.ui-chip .ui-checkbox input+label .icon-container.icon--hidden,.ui-chip .ui-radio input+label .icon-container.icon--hidden{display:none}.ui-chip .ui-checkbox input+label .label--center,.ui-chip .ui-radio input+label .label--center{margin:0 auto}.ui-chip .ui-checkbox input:checked+label.primary,.ui-chip .ui-radio input:checked+label.primary{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selected)!important}.oasys-focus-style,.ui-combobox div[name=combobox]:focus,.ui-combobox div[name=combobox]:focus-visible,.ui-combobox div[name=combobox]:focus-within,[tabindex]:focus-visible,[tabindex]:focus,select:focus-visible,select:focus,textarea:focus-visible,textarea:focus,input:focus-visible,input:focus,button:focus-visible,button:focus,a:focus-visible,a:focus{outline:var(--oasys-border-width-focus) solid var(--oasys-color-interaction-border-focus);outline-offset:var(--oasys-border-width-focus-offset)}a:focus:not(:focus-visible){outline:none}button:focus:not(:focus-visible){outline:none}input:focus:not(:focus-visible){outline:none}textarea:focus:not(:focus-visible){outline:none}select:focus:not(:focus-visible){outline:none}[tabindex]:focus:not(:focus-visible){outline:none}:host{display:block;width:100%}:host.ng-touched.ng-dirty.ng-invalid:not(:focus-within) .ui-combobox-container .ui-text-input,:host.ng-touched.ng-dirty.ng-invalid:not(:focus-within) .ui-combobox-container .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-danger)}:host.ng-touched.ng-dirty.ng-invalid:not(:focus-within) .ui-combobox-container .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}:host.ng-touched.ng-dirty.ng-invalid:not(:focus-within) .ui-combobox-container .input-errors .input-errors-content{visibility:visible!important}:host.ng-touched.ng-dirty.ng-invalid:not(:focus-within) .ui-combobox-container .hint-container{display:none!important}.foreground-secondary-text{color:var(--oasys-color-brand-foreground-secondary)}.ui-combobox{background-color:var(--oasys-color-white);--_label-height: var(--oasys-typography-body-supporting-line-height);--_label-input-gap: var(--oasys-spacing-tiny);--_label-top-inset: var(--oasys-spacing-near);--_input-inset-top: calc( var(--_label-height) + var(--_label-input-gap) + var(--_label-top-inset) );--_preface-width: var(--oasys-component-text-input-preface-width);position:relative;transition:border calc(var(--oasys-animation-duration-long) * 1ms);border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-footer,.ui-combobox-header{padding:var(--oasys-spacing-tight) var(--oasys-spacing-near);text-align:center}.ui-combobox-footer{cursor:pointer;border-top:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-header{color:var(--oasys-color-brand-foreground-secondary);border-bottom:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox-options{--_ad: calc(var(--oasys-animation-duration-long) * 1ms);background-color:var(--oasys-color-white);box-shadow:0 24px 36px #2626261a;border-radius:var(--oasys-radius-soften);box-sizing:border-box;width:100%;height:auto;margin-top:var(--oasys-spacing-near);position:absolute;pointer-events:auto;outline:0;overflow:auto;transform-origin:top center;grid-template-rows:0fr;opacity:0;transition-timing-function:cubic-bezier(var(--oasys-animation-timing-function-soft));transition:opacity var(--_ad);will-change:opacity;z-index:1000}.ui-combobox-options.expand{opacity:1}.ui-combobox-option{cursor:pointer;border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) transparent;padding:var(--oasys-spacing-near);outline:none;outline-offset:none}.ui-combobox-option:hover,.ui-combobox-option.selected{background-color:var(--oasys-color-interaction-background-selected);border-radius:var(--oasys-radius-soften)}.ui-combobox-option.focus{border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) var(--oasys-color-interaction-border-focus)}.ui-combobox-option:focus-visible{border-left:var(--oasys-border-width-focus-offset) var(--oasys-component-box-border-style-solid) var(--oasys-color-interaction-border-focus)}.ui-combobox-container .input-errors{--_ad: calc(var(--oasys-animation-duration-long) * 1ms);display:grid;grid-template-rows:0fr;overflow:hidden;opacity:0;transform:translateY(-33%);transition:grid-template-rows var(--_ad),opacity var(--_ad),transform var(--_ad);transition-timing-function:cubic-bezier(var(--oasys-animation-timing-function-soft));will-change:grid-template-rows,transform,opacity}.ui-combobox-container .input-errors .input-errors-content{min-height:0;visibility:hidden;transition:visibility var(--_ad)}.ui-combobox-container .input-errors .hint-container{display:block!important}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus-within)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus-within)) .ui-combobox,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .ui-combobox,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus-within)) .ui-text-input,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus-within)) .ui-combobox{border:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-danger)}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus-within)) .input-errors,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .input-errors,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus-within)) .input-errors{grid-template-rows:1fr;transform:translateY(0);opacity:1}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus-within)) .input-errors .input-errors-content,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .input-errors .input-errors-content,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus-within)) .input-errors .input-errors-content{visibility:visible!important}.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty.ng-input-did-change:not(:focus-within)) .hint-container,.ui-combobox-container:has(.ng-invalid.ng-touched.ng-dirty:not(:focus)) .hint-container,.ui-combobox-container:has(.ng-invalid.ng-touched:not(:focus-within)) .hint-container{display:none!important}.ui-combobox-container:has(input:disabled) input,.ui-combobox-container:has(input:disabled) .select{background-color:none;color:var(--oasys-component-text-input-color-disabled-foreground)}.ui-combobox-container:has(input:disabled) .ui-combobox-input{background-color:var(--oasys-component-text-input-color-disabled-background)}.ui-combobox{border-radius:var(--oasys-radius-soften);width:100%}.ui-combobox input{border:none;width:100%;background-color:transparent;cursor:pointer}.ui-combobox input:focus{outline:none}.ui-combobox input,.ui-combobox .select{padding:var(--oasys-spacing-near);padding-top:var(--oasys-spacing-tiny)}.ui-combobox .label-container{padding-top:var(--oasys-spacing-near);padding-left:var(--oasys-spacing-near);width:calc(100% - var(--oasys-spacing-near) - var(--oasys-spacing-near))}.ui-combobox .label-container,.ui-combobox .label-container label{pointer-events:none;-webkit-user-select:none;user-select:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ui-combobox .icon-container{transition:all calc(var(--oasys-animation-duration-long) * 1ms) ease;transform-origin:center}.ui-combobox .icon-container:hover{transform:scale(1.1)}.ui-combobox .icon-container.expand{transform:rotate(-179.999deg)}.ui-combobox:has(.input-preface:not(:empty)){--_left-inset: calc(var(--oasys-spacing-near) + var(--_preface-width))}.ui-combobox:has(.input-preface:not(:empty)) .label-container{left:var(--_left-inset);width:calc(100% - var(--_left-inset) - var(--oasys-spacing-near))}.ui-combobox:has(.input-preface:not(:empty)) input,.ui-combobox:has(.input-preface:not(:empty)) .select{padding-left:var(--_left-inset)}.ui-combobox .input-preface{width:var(--_preface-width);height:100%;position:absolute;display:flex;justify-content:center;align-items:center;pointer-events:none;flex-direction:column;text-align:center;border-right:var(--oasys-border-width-primary) solid var(--oasys-color-interaction-border-selectable)}.ui-combobox .input-preface:empty{visibility:hidden}.ui-combobox div[name=combobox]{cursor:pointer;padding-right:var(--oasys-spacing-near)}\n"] }]
|
|
412
|
-
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
413
|
-
type: Inject,
|
|
414
|
-
args: [DOCUMENT]
|
|
415
|
-
}] }], propDecorators: { label: [{
|
|
416
|
-
type: Input
|
|
417
|
-
}], type: [{
|
|
418
|
-
type: Input
|
|
419
|
-
}], options: [{
|
|
420
|
-
type: Input
|
|
421
|
-
}], optional: [{
|
|
422
|
-
type: Input
|
|
423
|
-
}], hint: [{
|
|
424
|
-
type: Input,
|
|
425
|
-
args: [{ required: false }]
|
|
426
|
-
}], header: [{
|
|
427
|
-
type: Input,
|
|
428
|
-
args: [{ required: false }]
|
|
429
|
-
}], footer: [{
|
|
430
|
-
type: Input,
|
|
431
|
-
args: [{ required: false }]
|
|
432
|
-
}], autofocus: [{
|
|
433
|
-
type: Input,
|
|
434
|
-
args: [{ required: false }]
|
|
435
|
-
}], disabled: [{
|
|
436
|
-
type: Input,
|
|
437
|
-
args: [{ required: false }]
|
|
438
|
-
}], selected: [{
|
|
439
|
-
type: Input,
|
|
440
|
-
args: [{ required: false }]
|
|
441
|
-
}], displayKey: [{
|
|
442
|
-
type: Input,
|
|
443
|
-
args: [{ required: false }]
|
|
444
|
-
}], iconNameKey: [{
|
|
445
|
-
type: Input,
|
|
446
|
-
args: [{ required: false }]
|
|
447
|
-
}], valueKey: [{
|
|
448
|
-
type: Input,
|
|
449
|
-
args: [{ required: false }]
|
|
450
|
-
}], subtextKey: [{
|
|
451
|
-
type: Input,
|
|
452
|
-
args: [{ required: false }]
|
|
453
|
-
}], placeholder: [{
|
|
454
|
-
type: Input,
|
|
455
|
-
args: [{ required: false }]
|
|
456
|
-
}], showOptions: [{
|
|
457
|
-
type: Input,
|
|
458
|
-
args: [{ required: false }]
|
|
459
|
-
}], didChange: [{
|
|
460
|
-
type: Output
|
|
461
|
-
}], didSearch: [{
|
|
462
|
-
type: Output
|
|
463
|
-
}], didEdit: [{
|
|
464
|
-
type: Output
|
|
465
|
-
}], textInput: [{
|
|
466
|
-
type: ViewChild,
|
|
467
|
-
args: ['textinput', { read: ElementRef }]
|
|
468
|
-
}], combobox: [{
|
|
469
|
-
type: ViewChild,
|
|
470
|
-
args: ['combobox', { read: ElementRef }]
|
|
471
|
-
}], optionsList: [{
|
|
472
|
-
type: ViewChildren,
|
|
473
|
-
args: ['option']
|
|
474
|
-
}], onClick: [{
|
|
475
|
-
type: HostListener,
|
|
476
|
-
args: ['document:click', ['$event.target']]
|
|
477
|
-
}] } });
|
|
478
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2FzeXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29hc3lzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBRU4sU0FBUyxFQUVULFlBQVksRUFHWixZQUFZLEVBQ1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQTBCcEQsTUFBTSxPQUFPLGlCQUFpQjtJQWlGVTtJQWhGN0IsS0FBSyxDQUFVO0lBQ2YsSUFBSSxHQUFpQixTQUFTLENBQUM7SUFDL0Is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aEIsU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBZ0RQLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUk1QyxRQUFRO3NCQURQLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFHbkIsV0FBVztzQkFBbEMsWUFBWTt1QkFBQyxRQUFRO2dCQVlmLE9BQU87c0JBTGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIGZvcndhcmRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgVmlld0NoaWxkLFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZHJlbixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBIb3N0TGlzdGVuZXIsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIEZvcm1zTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21ib2JveE9wdGlvbiwgQ29tYm9ib3hUeXBlIH0gZnJvbSAnLi9jb21ib2JveCc7XG5pbXBvcnQgeyBMYXlvdXRTdGFja0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2xheW91dC9zdGFjay9zdGFjay5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5b3V0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGF5b3V0L2JveC9ib3guY29tcG9uZW50JztcbmltcG9ydCB7IE9hc3lzQXV0b2ZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9hdXRvZm9jdXMvYXV0b2ZvY3VzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXBoYXNpc0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZW1waGFzaXMvZW1waGFzaXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9hc3lzQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktY29tYm9ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tYm9ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb21ib2JveC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvbWJvYm94Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBMYXlvdXRTdGFja0NvbXBvbmVudCxcbiAgICBMYXlvdXRCb3hDb21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0NsYXNzLFxuICAgIE9hc3lzQXV0b2ZvY3VzRGlyZWN0aXZlLFxuICAgIEljb25Db21wb25lbnQsXG4gICAgRW1waGFzaXNEaXJlY3RpdmUsXG4gICAgT2FzeXNCdXR0b25Db21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENvbWJvYm94Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR5cGU6IENvbWJvYm94VHlwZSA9ICdvcHRpb25zJztcbiAgQElucHV0KCkgb3B0aW9uczogQ29tYm9ib3hPcHRpb25bXSA9IFtdO1xuICBASW5wdXQoKSBvcHRpb25hbCA9IHRydWU7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pIGhpbnQ/OiBzdHJpbmc7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBoZWFkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBmb290ZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBhdXRvZm9jdXMgPSBmYWxzZTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBzZWxlY3RlZD86IENvbWJvYm94T3B0aW9uIHwgdW5rbm93bjtcbiAgLy8gS2V5IHZhbHVlIGZyb20gb3B0aW9ucyB0byBiZSBkaXNwbGF5ZWQgYXMgb3B0aW9uIGxhYmVsXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBkaXNwbGF5S2V5Pzogc3RyaW5nO1xuICAvLyBLZXkgdmFsdWUgZnJvbSBvcHRpb25zIHRvIGJlIHVzZWQgYXMgaWNvbiBpbiBvcHRpb24gbGFiZWxcbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pIGljb25OYW1lS2V5Pzogc3RyaW5nO1xuICAvLyBLZXkgdmFsdWUgZnJvbSBvcHRpb25zIGJlIGJlIHZhbHVlXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSB2YWx1ZUtleT86IHN0cmluZztcbiAgLy8gQXZhaWxhYmxlIGZvciBBdXRvY29tcGxldGVcbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pIHN1YnRleHRLZXk/OiBzdHJpbmc7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgLy8gV2lsbCBvcGVuIHRoZSBsaXN0IG9mIG9wdGlvbnMgb24gaW5pdFxuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UgfSkgc2hvd09wdGlvbnMgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgZGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG4gIEBPdXRwdXQoKSBkaWRTZWFyY2g6IEV2ZW50RW1pdHRlcjx1bmtub3duPiA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcbiAgQE91dHB1dCgpIGRpZEVkaXQ6IEV2ZW50RW1pdHRlcjx1bmtub3duPiA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcblxuICB0ZXh0VmFsdWUgPSAnJztcbiAgaW5wdXREaWRDaGFuZ2UgPSBmYWxzZTsgLy8gb25seSBzaG93IHZhbGRpYXRpb24gYWZ0ZXIgYSBjaGFuZ2UgZXZlbnQgKGllLiBibHVyKVxuICBkaXNwbGF5T3B0aW9uczogQ29tYm9ib3hPcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIF9zZWxlY3RlZE9wdGlvbjogQ29tYm9ib3hPcHRpb24gfCB1bmtub3duO1xuICBwcml2YXRlIF9mb2N1c2VkT3B0aW9uOiBDb21ib2JveE9wdGlvbiB8IHVua25vd247XG4gIHByaXZhdGUgX2ZvY3VzZWRPcHRpb25JZDogbnVtYmVyO1xuXG4gIGlkITogc3RyaW5nO1xuXG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgb3ZlcmxheSBwYW5lbCBpcyBvcGVuLiAqL1xuICBwYW5lbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBTZWxlY3RlZCBvcHRpb25cbiAgICovXG4gIGdldCBzZWxlY3RlZE9wdGlvbigpOiBDb21ib2JveE9wdGlvbiB8IHVua25vd24ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZE9wdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZWQgT3B0aW9uXG4gICAqL1xuICBnZXQgZm9jdXNlZE9wdGlvbigpOiBDb21ib2JveE9wdGlvbiB8IHVua25vd24ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkT3B0aW9uIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBpZCBvZiB0aGUgZm9jdXNlZCBvcHRpb25cbiAgICovXG4gIGdldCBmb2N1c2VkSWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZE9wdGlvbklkO1xuICB9XG5cbiAgZ2V0IHZhbHVlT3B0aW9uS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVLZXkgPyB0aGlzLnZhbHVlS2V5IDogJ3ZhbHVlJztcbiAgfVxuXG4gIGdldCBkaXNwbGF5T3B0aW9uS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheUtleSA/IHRoaXMuZGlzcGxheUtleSA6ICdsYWJlbCc7XG4gIH1cblxuICBnZXQgc3VidGV4dE9wdGlvbktleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN1YnRleHRLZXkgPyB0aGlzLnN1YnRleHRLZXkgOiAnc3VidGV4dCc7XG4gIH1cblxuICBAVmlld0NoaWxkKCd0ZXh0aW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgdGV4dElucHV0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCdjb21ib2JveCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBjb21ib2JveDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZHJlbignb3B0aW9uJykgb3B0aW9uc0xpc3Q6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQpIHt9XG5cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG5cbiAgLyoqXG4gICAqIENsaWNrIG91dHNpZGUgY29tYm9ib3ggY2xvc2UgdGhlIHBhbmVsXG4gICAqL1xuICBwdWJsaWMgb25DbGljayh0YXJnZXRFbGVtZW50OiBOb2RlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFuZWxPcGVuKCkpIHtcbiAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSB0aGlzLmNvbWJvYm94Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0RWxlbWVudCk7XG4gICAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcbiAgICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9uIENoYW5nZVxuICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIERldGVjdHMgaWYgdGhlIGF1dG9jb21wbGV0ZSBvcHRpb25zIGxpc3QgaXMgY2huYWdlZCBhZnRlciBhIHNlbGVjdGlvbiBvZiBhbiBvcHRpb24uXG4gICAgLy8gRXhhbXBsZTogQWRkcmVzcyBzZWFyY2ggY2FuIGhhdmUgb3B0aW9ucyBhc3NpZ25lZCB0byBhIGdyb3VwIG9mIG9wdGlvbnMuIE9uZSBwb3N0Y29kZSB0byBoYXZlIHggbnVtYmVyIG9mIGFkZHJlc2VzXG4gICAgLy8gSWYgT3B0aW9ucyBsaXN0IGlzIENoYW5nZWQgYXMgcGFydCBvZiBncm91cCBvcHRpb24gd2UgbGV0IHRoZSBvcHRpb25zIHBhbmVsIG9wZW4gdG8gbGV0IHVzZXIgc2VsZWN0IGEgc2luZ2xlIG9wdGlvbi4gVGhpcyBpcyBjb25zaWRlcmVkIGFzIGNoYW5nZSBpbnB1dCB2YWx1ZShzaW1pbGFyIHdpdGggdHlwZSB2YWx1ZSlcbiAgICBpZiAodGhpcy50eXBlID09PSAnYXV0b2NvbXBsZXRlJyAmJiBjaGFuZ2VzWydvcHRpb25zJ10pIHtcbiAgICAgIGNvbnN0IG9wdGlvbmNoYW5nZXMgPSBjaGFuZ2VzWydvcHRpb25zJ107XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucykge1xuICAgICAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9uY2hhbmdlc1snY3VycmVudFZhbHVlJ10gIT09IG9wdGlvbmNoYW5nZXNbJ3ByZXZpb3VzVmFsdWUnXSAmJlxuICAgICAgICB0aGlzLm9wdGlvbnM/Lmxlbmd0aCAhPT0gMCAmJlxuICAgICAgICAhb3B0aW9uY2hhbmdlc1snZmlyc3RDaGFuZ2UnXVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucmVzZXRPcHRpb25zTGlzdCgpO1xuICAgICAgICB0aGlzLm9wZW5QYW5lbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBJbml0XG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlkID0gdGhpcy5sYWJlbCArIE1hdGgucmFuZG9tKCk7XG4gICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgIHRoaXMucmVzZXRPcHRpb25zTGlzdCgpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLm9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAob3B0aW9uOiBDb21ib2JveE9wdGlvbiB8IHVua25vd24pID0+XG4gICAgICAgICAgb3B0aW9uW3RoaXMudmFsdWVPcHRpb25LZXldID09PSB0aGlzLnNlbGVjdGVkW3RoaXMudmFsdWVPcHRpb25LZXldLFxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0T3B0aW9uKHRoaXMub3B0aW9uc1tzZWxlY3RlZEluZGV4XSwgc2VsZWN0ZWRJbmRleCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dPcHRpb25zKSB7XG4gICAgICB0aGlzLm9wZW5QYW5lbCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBWaWV3IEluaXRcbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwVmFsaWRhdGlvbkxpc3RlbmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IE9wdGlvblxuICAgKiBAcGFyYW0gb3B0aW9uXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0T3B0aW9uKG9wdGlvbjogQ29tYm9ib3hPcHRpb24gfCB1bmtub3duLCBpbmRleD86IG51bWJlcikge1xuICAgIHRoaXMuX3NlbGVjdGVkT3B0aW9uID0gb3B0aW9uO1xuICAgIHRoaXMuX2ZvY3VzZWRPcHRpb25JZCA9IGluZGV4O1xuICAgIHRoaXMuX2ZvY3VzZWRPcHRpb24gPSBvcHRpb247XG4gICAgdGhpcy50ZXh0VmFsdWUgPSB0aGlzLl9zZWxlY3RlZE9wdGlvblt0aGlzLmRpc3BsYXlPcHRpb25LZXldO1xuXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnRleHRWYWx1ZSk7XG4gICAgdGhpcy5kaWRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkT3B0aW9uKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIEtleSBOYXZpZ2F0aW9uXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcHVibGljIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIGlmICh0aGlzLnBhbmVsT3BlbigpKSB7XG4gICAgICAgICAgdGhpcy5wcmVzc0VudGVyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5vcGVuUGFuZWwoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgaWYgKHRoaXMucGFuZWxPcGVuKCkpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgIGlmICh0aGlzLnBhbmVsT3BlbigpKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gTG9naWMgZm9yIG9wZW4gcGFuZWxcbiAgICBpZiAodGhpcy5wYW5lbE9wZW4oKSkge1xuICAgICAgdGhpcy5wcmVzc0Fycm93cyhldmVudCk7XG4gICAgICB0aGlzLm9wdGlvbnNMaXN0LmdldCh0aGlzLl9mb2N1c2VkT3B0aW9uSWQpPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBPcHRpb25zIFBhbmVsXG4gICAqL1xuICB0b2dnbGVQYW5lbCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhbmVsT3Blbi5zZXQoIXRoaXMucGFuZWxPcGVuKCkpO1xuICAgIHRoaXMuaW5pdFNlbGVjdGVkRm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGFzZSBPcHRpb25zIFBhbmVsXG4gICAqL1xuICBvcGVuUGFuZWwoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICghdGhpcy5wYW5lbE9wZW4oKSkge1xuICAgICAgdGhpcy5wYW5lbE9wZW4uc2V0KHRydWUpO1xuICAgICAgdGhpcy5pbml0U2VsZWN0ZWRGb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSBPcHRpb25zIFBhbmVsXG4gICAqL1xuICBjbG9zZVBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMucGFuZWxPcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5pbml0U2VsZWN0ZWRGb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBJbnB1dCBkaXNwbGF5IHZhbHVlXG4gICAqIEBwYXJhbSB0ZXh0VmFsdWVcbiAgICovXG4gIHdyaXRlVmFsdWUodGV4dFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoKHRoaXMuc2VsZWN0ZWQgJiYgdHlwZW9mIHRleHRWYWx1ZSAhPT0gJ3N0cmluZycpIHx8IHRleHRWYWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMudGV4dFZhbHVlID0gdGhpcy5fc2VsZWN0ZWRPcHRpb25bdGhpcy5kaXNwbGF5T3B0aW9uS2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZXh0VmFsdWUgPSB0ZXh0VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIEZvcm0gaW5wdXQgY2huYWdlXG4gICAqIEBwYXJhbSBmblxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGZvcm0gaW5wdXQgdG91Y2hcbiAgICogQHBhcmFtIGZuXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBNb2RlbCBDaGFuZ2VcbiAgICogQHBhcmFtIHRleHRWYWx1ZVxuICAgKi9cbiAgb25Nb2RlbENoYW5nZSh0ZXh0VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudGV4dFZhbHVlID0gdGV4dFZhbHVlO1xuICAgIHRoaXMuaW5wdXREaWRDaGFuZ2UgPSB0cnVlO1xuICAgIHRoaXMub25DaGFuZ2UodGV4dFZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMuZGlkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZE9wdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogT24gTW9kZWwgQ2hhbmdlXG4gICAqIEBwYXJhbSB0ZXh0VmFsdWVcbiAgICovXG4gIG9uTW9kZWxDaGFuZ2VBdXRvY29tcGxldGUodGV4dFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRleHRWYWx1ZSA9IHRleHRWYWx1ZTtcbiAgICB0aGlzLmlucHV0RGlkQ2hhbmdlID0gdHJ1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRleHRWYWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLmRpZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRPcHRpb24pO1xuXG4gICAgdGhpcy5vbkF1dG9jb21wbGV0ZUxpc3RTZWFyY2godGV4dFZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGluZyBmb3IgSW5wdXQgdmFsdWVcbiAgICovXG4gIGhhbmRsZUV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXREaWRDaGFuZ2UgPSB0cnVlO1xuXG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkLnRvU3RyaW5nKCkpO1xuICAgIGlucHV0RWxlbWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gSW5wdXRcbiAgICovXG4gIGNsZWFuSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy50ZXh0VmFsdWUgPSAnJztcbiAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgdGhpcy5yZXNldE9wdGlvbnNMaXN0KCk7XG4gICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgdGhpcy5kaWRTZWFyY2guZW1pdCh0aGlzLnRleHRWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogT24gZm9vdGVyIGFjdGlvblxuICAgKi9cbiAgb25Gb290ZXJBY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5kaWRFZGl0LmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBGb2N1cyBJbnB1dFxuICAgKi9cbiAgb25Gb2N1c0lucHV0KCk6IHZvaWQge1xuICAgIHRoaXMudGV4dElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggaW4gQXV0b2NvbXBsZXRlXG4gICAqIEBwYXJhbSB0ZXh0VmFsdWVcbiAgICovXG4gIHByaXZhdGUgb25BdXRvY29tcGxldGVMaXN0U2VhcmNoKHRleHRWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0ZXh0VmFsdWUpIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5QYW5lbCgpO1xuICAgICAgdGhpcy5kaXNwbGF5T3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdGlvbjogQ29tYm9ib3hPcHRpb248dW5rbm93bj4pID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICB0aGlzLmNoZWNrSW5jbHVkZXNTdWJzdHJpbmcob3B0aW9uLCB0aGlzLmRpc3BsYXlPcHRpb25LZXkpIHx8XG4gICAgICAgICAgdGhpcy5jaGVja0luY2x1ZGVzU3Vic3RyaW5nKG9wdGlvbiwgdGhpcy5zdWJ0ZXh0T3B0aW9uS2V5KVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5kaXNwbGF5T3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudGV4dElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmRpZFNlYXJjaC5lbWl0KHRoaXMudGV4dFZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBhIHN1c2JjcmluZyBpcyBpbmNsdWRlZCBpbiBvcHRpb24gdmFsdWVcbiAgICogQHBhcmFtIG9wdGlvblxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0luY2x1ZGVzU3Vic3RyaW5nKG9wdGlvbjogQ29tYm9ib3hPcHRpb248dW5rbm93bj4sIGtleTogc3RyaW5nKTogdW5rbm93biB7XG4gICAgcmV0dXJuIG9wdGlvbltrZXldPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy50ZXh0VmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IElucHV0IFZhbGlkYXRvcnNcbiAgICovXG4gIHByaXZhdGUgc2V0dXBWYWxpZGF0aW9uTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkLnRvU3RyaW5nKCkpO1xuICAgIGlucHV0RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdCBmb2N1cyBtb2RlIG9yIHNldCB0aGUgc2VsZWN0ZWQgb3B0aW9uIGFzIGZvY3VzZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdFNlbGVjdGVkRm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFuZWxPcGVuKCkpIHtcbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZE9wdGlvbikge1xuICAgICAgICB0aGlzLl9mb2N1c2VkT3B0aW9uID0gdGhpcy5fc2VsZWN0ZWRPcHRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9mb2N1c2VkT3B0aW9uSWQgPSAwO1xuICAgICAgICB0aGlzLl9mb2N1c2VkT3B0aW9uID0gdGhpcy5vcHRpb25zW3RoaXMuX2ZvY3VzZWRPcHRpb25JZF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFycm93cyBVcC9Eb3duIG5hdmlnYXRpb24gaW5zaWRlIE9wdGlvbnMgUGFuZWxcbiAgICovXG4gIHByaXZhdGUgcHJlc3NBcnJvd3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRPcHRpb25JZCA9IE1hdGgubWluKHRoaXMuX2ZvY3VzZWRPcHRpb25JZCArIDEsIHRoaXMuZGlzcGxheU9wdGlvbnMubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRPcHRpb24gPSB0aGlzLmRpc3BsYXlPcHRpb25zW3RoaXMuX2ZvY3VzZWRPcHRpb25JZF07XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9uVGV4dFByZXZpZXcoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRPcHRpb25JZCA9IE1hdGgubWF4KHRoaXMuX2ZvY3VzZWRPcHRpb25JZCAtIDEsIDApO1xuICAgICAgICB0aGlzLl9mb2N1c2VkT3B0aW9uID0gdGhpcy5kaXNwbGF5T3B0aW9uc1t0aGlzLl9mb2N1c2VkT3B0aW9uSWRdO1xuXG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9uVGV4dFByZXZpZXcoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0ZXh0VmFsdWUgdG8gcHJldmlldyB0aGUgb3B0aW9uIGluIGF1dG9jb21wbGV0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhdXRvY29tcGxldGVPcHRpb25UZXh0UHJldmlldygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50eXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgdGhpcy50ZXh0VmFsdWUgPSB0aGlzLl9mb2N1c2VkT3B0aW9uW3RoaXMuZGlzcGxheU9wdGlvbktleV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByZXNzIEVudGVyIGluc2lkZSBPcHRpb25zIFBhbmVsXG4gICAqL1xuICBwcml2YXRlIHByZXNzRW50ZXIoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5wYW5lbE9wZW4oKSAmJlxuICAgICAgdGhpcy5fZm9jdXNlZE9wdGlvbklkIDwgdGhpcy5kaXNwbGF5T3B0aW9ucy5sZW5ndGggJiZcbiAgICAgIHRoaXMuX2ZvY3VzZWRPcHRpb25JZCA+PSAwXG4gICAgKSB7XG4gICAgICB0aGlzLnNlbGVjdE9wdGlvbih0aGlzLmRpc3BsYXlPcHRpb25zW3RoaXMuX2ZvY3VzZWRPcHRpb25JZF0sIHRoaXMuX2ZvY3VzZWRPcHRpb25JZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHNlbGVjdGVkIG9wdGlvblxuICAgKi9cbiAgcHJpdmF0ZSByZXNldFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fZm9jdXNlZE9wdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fZm9jdXNlZE9wdGlvbklkID0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0byBvcmlnaW5hbCBvciB1bmZpbHRlcmVkIG9wdGlvbiBsaXN0XG4gICAqL1xuICBwcml2YXRlIHJlc2V0T3B0aW9uc0xpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5T3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgfVxufVxuIiwiPHVpLXN0YWNrIGNsYXNzPVwidWktY29tYm9ib3gtY29udGFpbmVyXCIgc3RhY2tfZ2FwPVwidGlnaHRcIj5cbiAgPGRpdiBjbGFzcz1cInVpLWNvbWJvYm94IHRleHQtYm9keS0tZGVmYXVsdCB0ZXh0LWJvZHktLXJlZ3VsYXJcIj5cbiAgICA8IS0tIENvbXBib2JveCBPcHRpb25zIElucHV0IC0tPlxuICAgIEBpZiAodHlwZSA9PT0gJ29wdGlvbnMnKSB7XG4gICAgICA8ZGl2XG4gICAgICAgICNjb21ib2JveFxuICAgICAgICBuYW1lPVwiY29tYm9ib3hcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwidG9nZ2xlUGFuZWwoKVwiXG4gICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgIGlkPVwiYWN0aXZlZGVzY2VuZGVudC1lZGl0XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJwYW5lbE9wZW4oKSA/ICdhY3RpdmVkZXNjZW5kZW50LW9wdC0nICsgZm9jdXNlZElkIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwicGFuZWxPcGVuKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIidhY3RpdmVkZXNjZW5kZW50LWxpc3QnXCJcbiAgICAgICAgYXJpYS1yZWFkb25seT1cInRydWVcIlxuICAgICAgICBhcmlhLW93bnM9XCJhY3RpdmVkZXNjZW5kZW50LWxpc3RcIlxuICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIlxuICAgICAgPlxuICAgICAgICA8dWktc3RhY2tcbiAgICAgICAgICBzdGFja19kaXJlY3Rpb249XCJ4XCJcbiAgICAgICAgICBzdGFja19kaXN0cmlidXRlPVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgc3RhY2tfYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICAgIHN0YWNrX2dhcD1cInRpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDx1aS1ib3ggYm94X3NwYWNlPVwibm9uZVwiIGJveF9iYWNrZ3JvdW5kPVwidHJhbnNwYXJlbnRcIj5cbiAgICAgICAgICAgIDwhLS0gU2VsZWN0IExhYmVsIEFyZWEgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtY29udGFpbmVyXCIgc3RhY2tfZGlyZWN0aW9uPVwieFwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWJvZHktLXN1cHBvcnRpbmcgdGV4dC1ib2R5LS1yZWd1bGFyXCIgW2Zvcl09XCJpZFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICN0ZXh0aW5wdXRcbiAgICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgW25hbWVdPVwiaWRcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ0ZXh0VmFsdWVcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbk1vZGVsQ2hhbmdlKHRleHRWYWx1ZSlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJpbnB1dERpZENoYW5nZSA/ICduZy1pbnB1dC1kaWQtY2hhbmdlJyA6ICduZy1pbnB1dC1kaWQtbm90LWNoYW5nZSdcIlxuICAgICAgICAgICAgICBbYXR0ci5hdXRvY29ycmVjdF09XCInb24nXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbnVsbFwiXG4gICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInb24nXCJcbiAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiFvcHRpb25hbFwiXG4gICAgICAgICAgICAgIFtzcGVsbGNoZWNrXT1cIidvbidcIlxuICAgICAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRPcHRpb25cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgICAgICByZWFkb25seT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LS1kZWZhdWx0IHRleHQtYm9keS0tcmVndWxhclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvdWktYm94PlxuICAgICAgICAgIDwhLS0gU2VsZWN0IEljb24gQ2hldnJvbiBBcmVhIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsgZXhwYW5kOiBwYW5lbE9wZW4oKSB9XCI+XG4gICAgICAgICAgICA8dWktaWNvbiBpY29uX25hbWU9XCJjaGV2cm9uLWRvd25cIj48L3VpLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdWktc3RhY2s+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPCEtLSBDb21ib2JveCBBdXRvY29tcGxldGUgSW5wdXQgLS0+XG4gICAgQGlmICh0eXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgPGRpdlxuICAgICAgICAjY29tYm9ib3hcbiAgICAgICAgbmFtZT1cImNvbWJvYm94XCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1c0lucHV0KClcIlxuICAgICAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICAgICBpZD1cImFjdGl2ZWRlc2NlbmRlbnQtZWRpdFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwicGFuZWxPcGVuKCkgPyAnYWN0aXZlZGVzY2VuZGVudC1vcHQtJyArIGZvY3VzZWRJZCA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInBhbmVsT3BlbigpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCInYWN0aXZlZGVzY2VuZGVudC1saXN0J1wiXG4gICAgICAgIGFyaWEtcmVhZG9ubHk9XCJ0cnVlXCJcbiAgICAgICAgYXJpYS1vd25zPVwiYWN0aXZlZGVzY2VuZGVudC1saXN0XCJcbiAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCJcbiAgICAgID5cbiAgICAgICAgPHVpLXN0YWNrXG4gICAgICAgICAgc3RhY2tfZGlyZWN0aW9uPVwieFwiXG4gICAgICAgICAgc3RhY2tfZGlzdHJpYnV0ZT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgICAgIHN0YWNrX2FsaWduPVwiY2VudGVyXCJcbiAgICAgICAgICBzdGFja19nYXA9XCJ0aWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICA8dWktYm94IGJveF9zcGFjZT1cIm5vbmVcIiBib3hfYmFja2dyb3VuZD1cInRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICA8IS0tIFNlbGVjdCBMYWJlbCBBcmVhIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWNvbnRhaW5lclwiIHN0YWNrX2RpcmVjdGlvbj1cInhcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1ib2R5LS1zdXBwb3J0aW5nIHRleHQtYm9keS0tcmVndWxhclwiIFtmb3JdPVwiaWRcIj57eyBsYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAjdGV4dGlucHV0XG4gICAgICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgICAgIFtuYW1lXT1cImlkXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwidGV4dFZhbHVlXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZUF1dG9jb21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaW5wdXREaWRDaGFuZ2UgPyAnbmctaW5wdXQtZGlkLWNoYW5nZScgOiAnbmctaW5wdXQtZGlkLW5vdC1jaGFuZ2UnXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXV0b2NvcnJlY3RdPVwiJ29uJ1wiXG4gICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IG51bGxcIlxuICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiJ2xpc3QnXCJcbiAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiFvcHRpb25hbFwiXG4gICAgICAgICAgICAgIFtzcGVsbGNoZWNrXT1cIidvbidcIlxuICAgICAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwidGV4dFZhbHVlXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LS1kZWZhdWx0IHRleHQtYm9keS0tcmVndWxhclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvdWktYm94PlxuXG4gICAgICAgICAgPCEtLSBDb21ib2JveCBJY29uIENsZWFyIEFyZWEgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInY2xlYW4nXCIgKGNsaWNrKT1cImNsZWFuSW5wdXQoKVwiPlxuICAgICAgICAgICAgQGlmICh0ZXh0VmFsdWUpIHtcbiAgICAgICAgICAgICAgPHVpLWljb24gaWNvbl9uYW1lPVwiY2xvc2VcIj48L3VpLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdWktc3RhY2s+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPCEtLSBDb21ib2JveCBPcHRpb25zIFBhbmVsIC0tPlxuICAgIEBpZiAocGFuZWxPcGVuKCkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ1aS1jb21ib2JveC1vcHRpb25zXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBleHBhbmQ6IHBhbmVsT3BlbigpIH1cIlxuICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgIGlkPVwiYWN0aXZlZGVzY2VuZGVudC1saXN0XCJcbiAgICAgID5cbiAgICAgICAgPCEtLSBBdXRvY29tcGxldGUgT3B0aW9ucyBQYW5lbCBIZWFkZXIgIC0tPlxuICAgICAgICBAaWYgKGhlYWRlciAmJiB0eXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1jb21ib2JveC1oZWFkZXIgdGV4dC1ib2R5LS1zdXBwb3J0aW5nXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBoZWFkZXIgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIE9wdGlvbnMgbGlzdCAtLT5cbiAgICAgICAgQGZvciAob3B0aW9uIG9mIGRpc3BsYXlPcHRpb25zOyB0cmFjayBvcHRpb247IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgI29wdGlvblxuICAgICAgICAgICAgY2xhc3M9XCJ1aS1jb21ib2JveC1vcHRpb25cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWRPcHRpb24gPT09IG9wdGlvbixcbiAgICAgICAgICAgICAgZm9jdXM6IGZvY3VzZWRPcHRpb24gPT09IG9wdGlvbixcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihvcHRpb24sIGkpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIFtpZF09XCInYWN0aXZlZGVzY2VuZGVudC1vcHQtJyArIGlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb24gPT09IG9wdGlvblxuICAgICAgICAgICAgICAgID8gb3B0aW9uW2Rpc3BsYXlPcHRpb25LZXldICsgJyBpcyBzZWxlY3RlZCdcbiAgICAgICAgICAgICAgICA6IG9wdGlvbltkaXNwbGF5T3B0aW9uS2V5XVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dWktc3RhY2tcbiAgICAgICAgICAgICAgc3RhY2tfZGlyZWN0aW9uPVwieFwiXG4gICAgICAgICAgICAgIHN0YWNrX2Rpc3RyaWJ1dGU9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgc3RhY2tfYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICAgICAgICBzdGFja19nYXA9XCJ0aWdodFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwhLS0gT3B0aW9uIGRpc3BsYXkgLS0+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZUtleSA/IG9wdGlvblt2YWx1ZUtleV0gOiBvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIFthdHRyLm5nVmFsdWVdPVwiZGlzcGxheUtleSA/IG9wdGlvbltkaXNwbGF5S2V5XSA6IG9wdGlvbi5sYWJlbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dWktc3RhY2sgc3RhY2tfZGlyZWN0aW9uPVwieFwiIHN0YWNrX2FsaWduPVwiY2VudGVyXCIgc3RhY2tfZ2FwPVwidGlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAob3B0aW9uLmljb25fbmFtZSB8fCAoaWNvbk5hbWVLZXkgJiYgb3B0aW9uW2ljb25OYW1lS2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHVpLWljb25cbiAgICAgICAgICAgICAgICAgICAgICBbaWNvbl9uYW1lXT1cImljb25OYW1lS2V5ID8gb3B0aW9uW2ljb25OYW1lS2V5XSA6IG9wdGlvbi5pY29uX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICA+PC91aS1pY29uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLSBEaXNwbGF5IG9wdGlvbnMgbGFiZWwgLS0+XG4gICAgICAgICAgICAgICAgICBAaWYgKHR5cGUgPT09ICdvcHRpb25zJykge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBvcHRpb25bZGlzcGxheU9wdGlvbktleV0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gRGlzcGxheSBhdXRvY29tcGxldGUgb3B0aW9uIGluZm9ybWF0aW9uIGFuZCBlbXBoYXNpcy0tPlxuICAgICAgICAgICAgICAgICAgQGlmICh0eXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICA8dWktc3RhY2sgc3RhY2tfZ2FwPVwidGlueVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICB1aS1lbXBoYXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwidGV4dFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5UGFyYWdyYXBoXT1cIm9wdGlvbltkaXNwbGF5T3B0aW9uS2V5XVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvcmVncm91bmQtc2Vjb25kYXJ5LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbltzdWJ0ZXh0T3B0aW9uS2V5XSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC91aS1zdGFjaz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3VpLXN0YWNrPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8IS0tIFNlbGVjdGVkIGljb24gLS0+XG4gICAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRPcHRpb24gPT09IG9wdGlvbikge1xuICAgICAgICAgICAgICAgIDx1aS1pY29uIGljb25fbmFtZT1cInRpY2tcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWktc3RhY2s+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBBdXRvY29tcGxldGUgT3B0aW9ucyBQYW5lbCBGb290ZXIgLS0+XG4gICAgICAgIEBpZiAoZm9vdGVyICYmIHR5cGUgPT09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInVpLWNvbWJvYm94LWZvb3RlclwiPlxuICAgICAgICAgICAgPHVpLWJ1dHRvbiBidXR0b25fdHlwZT1cInRlcnRpYXJ5XCIgKGNsaWNrKT1cIm9uRm9vdGVyQWN0aW9uKClcIj5cbiAgICAgICAgICAgICAge3sgZm9vdGVyIH19XG4gICAgICAgICAgICA8L3VpLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbiAgPHVpLXN0YWNrIHN0YWNrX2dhcD1cIm5vbmVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZXJyb3JzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZXJyb3JzLWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidWktZm9ybS1lcnJvcnNcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGhpbnQpIHtcbiAgICAgIDx1aS1ib3hcbiAgICAgICAgY2xhc3M9XCJoaW50LWNvbnRhaW5lclwiXG4gICAgICAgIGJveF9iYWNrZ3JvdW5kPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBib3hfc3BhY2U9XCJub25lXCJcbiAgICAgICAgYm94X3NwYWNlX2xlZnQ9XCJuZWFyXCJcbiAgICAgICAgYm94X3NwYWNlX3JpZ2h0PVwibmVhclwiXG4gICAgICAgIGJveF9zcGFjZV9ib3R0b209XCJuZWFyXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInVpLXRleHQtaW5wdXQtaGludCB0ZXh0LWJvZHktLXN1cHBvcnRpbmcgdGV4dC1jb2xvci0tc3VwcG9ydGluZ1wiPlxuICAgICAgICAgIHt7IGhpbnQgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3VpLWJveD5cbiAgICB9XG4gIDwvdWktc3RhY2s+XG48L3VpLXN0YWNrPlxuIl19
|