@agorapulse/ui-components 18.0.35 → 18.0.36
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/agorapulse-ui-components-18.0.36.tgz +0 -0
- package/directives/checkbox.directive.d.ts +60 -0
- package/directives/public_api.d.ts +1 -0
- package/esm2022/directives/checkbox.directive.mjs +442 -0
- package/esm2022/directives/public_api.mjs +2 -1
- package/esm2022/index.mjs +2 -2
- package/esm2022/nav-selector/nav-selector-category/nav-selector-category.component.mjs +3 -3
- package/esm2022/nav-selector/nav-selector-group/nav-selector-group.component.mjs +3 -3
- package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.component.mjs +3 -3
- package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.mjs +3 -3
- package/esm2022/nav-selector/utils/nav-selector.filter.mjs +2 -2
- package/esm2022/nav-selector/utils/nav-selector.merger.mjs +2 -2
- package/fesm2022/agorapulse-ui-components-directives.mjs +442 -3
- package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs +10 -10
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components.mjs +1 -1
- package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/package.json +1 -1
- package/agorapulse-ui-components-18.0.35.tgz +0 -0
|
Binary file
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare const AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR: {
|
|
5
|
+
provide: import("@angular/core").InjectionToken<readonly ControlValueAccessor[]>;
|
|
6
|
+
useExisting: import("@angular/core").Type<any>;
|
|
7
|
+
multi: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare class CheckboxDirective implements ControlValueAccessor, OnInit, OnDestroy {
|
|
10
|
+
private readonly symbolRegistry;
|
|
11
|
+
private readonly elementRef;
|
|
12
|
+
private readonly renderer;
|
|
13
|
+
private readonly viewContainer;
|
|
14
|
+
ariaLabel?: string;
|
|
15
|
+
ariaLabelledby?: string;
|
|
16
|
+
ariaDescribedby?: string;
|
|
17
|
+
disabled: boolean;
|
|
18
|
+
set indeterminate(indeterminate: boolean);
|
|
19
|
+
get indeterminate(): boolean;
|
|
20
|
+
set checked(checked: boolean);
|
|
21
|
+
get checked(): boolean;
|
|
22
|
+
required: boolean;
|
|
23
|
+
set name(name: string);
|
|
24
|
+
get name(): string;
|
|
25
|
+
readonly change: EventEmitter<boolean>;
|
|
26
|
+
private _checked;
|
|
27
|
+
private _indeterminate;
|
|
28
|
+
private _name;
|
|
29
|
+
private _controlValueAccessorChangeFn;
|
|
30
|
+
private _onTouched;
|
|
31
|
+
private listeners;
|
|
32
|
+
private styleElement;
|
|
33
|
+
private wrapper;
|
|
34
|
+
private checkmarkContainer;
|
|
35
|
+
private indeterminateContainer;
|
|
36
|
+
private symbolComponent?;
|
|
37
|
+
ngOnInit(): void;
|
|
38
|
+
ngOnDestroy(): void;
|
|
39
|
+
private createCheckboxStructure;
|
|
40
|
+
private createOverlayContainer;
|
|
41
|
+
private createCheckmarkSymbol;
|
|
42
|
+
private createIndeterminateBar;
|
|
43
|
+
private updateCheckmarkVisibility;
|
|
44
|
+
private setupEventListeners;
|
|
45
|
+
private applyCheckboxStyles;
|
|
46
|
+
onBlur(): void;
|
|
47
|
+
private onValueChange;
|
|
48
|
+
writeValue(value: boolean): void;
|
|
49
|
+
registerOnChange(fn: (value: boolean) => void): void;
|
|
50
|
+
registerOnTouched(fn: () => void): void;
|
|
51
|
+
setDisabledState(isDisabled: boolean): void;
|
|
52
|
+
validate(): false | {
|
|
53
|
+
invalid: boolean;
|
|
54
|
+
};
|
|
55
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxDirective, never>;
|
|
56
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CheckboxDirective, "input[type=\"checkbox\"][apCheckbox]", never, { "ariaLabel": { "alias": "aria-label"; "required": false; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; }; "ariaDescribedby": { "alias": "aria-describedby"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; "required": { "alias": "required"; "required": false; }; "name": { "alias": "name"; "required": true; }; }, { "change": "change"; }, never, never, true, never>;
|
|
57
|
+
static ngAcceptInputType_disabled: unknown;
|
|
58
|
+
static ngAcceptInputType_indeterminate: unknown;
|
|
59
|
+
static ngAcceptInputType_required: unknown;
|
|
60
|
+
}
|
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
import { apCheck, SymbolComponent, SymbolRegistry } from '@agorapulse/ui-symbol';
|
|
2
|
+
import { booleanAttribute, Directive, ElementRef, EventEmitter, forwardRef, inject, Input, Output, Renderer2, ViewContainerRef, } from '@angular/core';
|
|
3
|
+
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export const AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR = {
|
|
6
|
+
provide: NG_VALUE_ACCESSOR,
|
|
7
|
+
useExisting: forwardRef(() => CheckboxDirective),
|
|
8
|
+
multi: true,
|
|
9
|
+
};
|
|
10
|
+
/*
|
|
11
|
+
Host bindings is important here:
|
|
12
|
+
- This provides encapsulation and reactivity regardless of how the directive is used in templates.
|
|
13
|
+
- It guarantees that properties like checked, disabled, required, and ARIA attributes always reflect
|
|
14
|
+
only the directive's logic, not just consumer bindings.
|
|
15
|
+
- So we need to have host bindings for all the properties that we want to control.
|
|
16
|
+
- We could also use @HostListener.
|
|
17
|
+
*/
|
|
18
|
+
export class CheckboxDirective {
|
|
19
|
+
symbolRegistry = inject(SymbolRegistry);
|
|
20
|
+
elementRef = inject((ElementRef));
|
|
21
|
+
renderer = inject(Renderer2);
|
|
22
|
+
viewContainer = inject(ViewContainerRef);
|
|
23
|
+
ariaLabel;
|
|
24
|
+
ariaLabelledby;
|
|
25
|
+
ariaDescribedby;
|
|
26
|
+
disabled = false;
|
|
27
|
+
set indeterminate(indeterminate) {
|
|
28
|
+
if (indeterminate) {
|
|
29
|
+
this._checked = false;
|
|
30
|
+
}
|
|
31
|
+
this._indeterminate = indeterminate;
|
|
32
|
+
const input = this.elementRef.nativeElement;
|
|
33
|
+
if (input) {
|
|
34
|
+
input.indeterminate = indeterminate;
|
|
35
|
+
}
|
|
36
|
+
// Only update visibility if containers are ready
|
|
37
|
+
if (this.checkmarkContainer && this.indeterminateContainer) {
|
|
38
|
+
this.updateCheckmarkVisibility();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
get indeterminate() {
|
|
42
|
+
return this._indeterminate;
|
|
43
|
+
}
|
|
44
|
+
set checked(checked) {
|
|
45
|
+
this._checked = checked;
|
|
46
|
+
// Only update visibility if containers are ready
|
|
47
|
+
if (this.checkmarkContainer && this.indeterminateContainer) {
|
|
48
|
+
this.updateCheckmarkVisibility();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
get checked() {
|
|
52
|
+
return this._checked;
|
|
53
|
+
}
|
|
54
|
+
required = false;
|
|
55
|
+
set name(name) {
|
|
56
|
+
this._name = name;
|
|
57
|
+
}
|
|
58
|
+
get name() {
|
|
59
|
+
return this._name;
|
|
60
|
+
}
|
|
61
|
+
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
62
|
+
change = new EventEmitter();
|
|
63
|
+
_checked = false;
|
|
64
|
+
_indeterminate = false;
|
|
65
|
+
_name = '';
|
|
66
|
+
_controlValueAccessorChangeFn = () => { };
|
|
67
|
+
_onTouched = () => { };
|
|
68
|
+
listeners = [];
|
|
69
|
+
styleElement;
|
|
70
|
+
wrapper;
|
|
71
|
+
checkmarkContainer;
|
|
72
|
+
indeterminateContainer;
|
|
73
|
+
symbolComponent;
|
|
74
|
+
ngOnInit() {
|
|
75
|
+
this.symbolRegistry.registerSymbols([apCheck]);
|
|
76
|
+
this.createCheckboxStructure();
|
|
77
|
+
this.setupEventListeners();
|
|
78
|
+
}
|
|
79
|
+
ngOnDestroy() {
|
|
80
|
+
this.listeners.forEach(unlisten => unlisten());
|
|
81
|
+
if (this.styleElement && this.styleElement.parentNode) {
|
|
82
|
+
this.styleElement.parentNode.removeChild(this.styleElement);
|
|
83
|
+
}
|
|
84
|
+
if (this.symbolComponent) {
|
|
85
|
+
this.symbolComponent.destroy();
|
|
86
|
+
}
|
|
87
|
+
if (this.checkmarkContainer && this.checkmarkContainer.parentNode) {
|
|
88
|
+
this.checkmarkContainer.parentNode.removeChild(this.checkmarkContainer);
|
|
89
|
+
}
|
|
90
|
+
if (this.indeterminateContainer && this.indeterminateContainer.parentNode) {
|
|
91
|
+
this.indeterminateContainer.parentNode.removeChild(this.indeterminateContainer);
|
|
92
|
+
}
|
|
93
|
+
// Move input back out of wrapper and remove wrapper
|
|
94
|
+
if (this.wrapper && this.wrapper.parentNode) {
|
|
95
|
+
const input = this.elementRef.nativeElement;
|
|
96
|
+
this.renderer.insertBefore(this.wrapper.parentNode, input, this.wrapper);
|
|
97
|
+
this.wrapper.parentNode.removeChild(this.wrapper);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
createCheckboxStructure() {
|
|
101
|
+
const input = this.elementRef.nativeElement;
|
|
102
|
+
const parent = input.parentElement;
|
|
103
|
+
// Hot take - Input doesn't need positioning since it will be wrapped
|
|
104
|
+
// Make input's parent use inline-flex for alignment
|
|
105
|
+
if (parent) {
|
|
106
|
+
this.renderer.setStyle(parent, 'display', 'inline-flex');
|
|
107
|
+
this.renderer.setStyle(parent, 'align-items', 'center');
|
|
108
|
+
this.renderer.setStyle(parent, 'gap', 'var(--ref-spacing-xxs)');
|
|
109
|
+
}
|
|
110
|
+
this.renderer.addClass(input, 'ap-checkbox-styled');
|
|
111
|
+
this.checkmarkContainer = this.createOverlayContainer('ap-checkbox-checkmark');
|
|
112
|
+
this.wrapper = this.renderer.createElement('span');
|
|
113
|
+
this.renderer.setStyle(this.wrapper, 'position', 'relative');
|
|
114
|
+
this.renderer.setStyle(this.wrapper, 'display', 'inline-flex');
|
|
115
|
+
this.renderer.setStyle(this.wrapper, 'align-items', 'center');
|
|
116
|
+
this.renderer.setStyle(this.wrapper, 'vertical-align', 'middle');
|
|
117
|
+
this.renderer.insertBefore(parent, this.wrapper, input);
|
|
118
|
+
this.renderer.appendChild(this.wrapper, input);
|
|
119
|
+
this.renderer.appendChild(this.wrapper, this.checkmarkContainer);
|
|
120
|
+
this.indeterminateContainer = this.createOverlayContainer('ap-checkbox-indeterminate');
|
|
121
|
+
this.renderer.appendChild(this.wrapper, this.indeterminateContainer);
|
|
122
|
+
this.createCheckmarkSymbol();
|
|
123
|
+
this.createIndeterminateBar();
|
|
124
|
+
this.applyCheckboxStyles();
|
|
125
|
+
this.updateCheckmarkVisibility();
|
|
126
|
+
}
|
|
127
|
+
createOverlayContainer(className) {
|
|
128
|
+
const container = this.renderer.createElement('span');
|
|
129
|
+
this.renderer.addClass(container, className);
|
|
130
|
+
this.renderer.setStyle(container, 'position', 'absolute');
|
|
131
|
+
this.renderer.setStyle(container, 'top', '50%');
|
|
132
|
+
this.renderer.setStyle(container, 'left', '50%');
|
|
133
|
+
this.renderer.setStyle(container, 'transform', 'translate(-50%, -50%)');
|
|
134
|
+
this.renderer.setStyle(container, 'width', 'auto');
|
|
135
|
+
this.renderer.setStyle(container, 'height', 'auto');
|
|
136
|
+
this.renderer.setStyle(container, 'display', 'flex');
|
|
137
|
+
this.renderer.setStyle(container, 'justify-content', 'center');
|
|
138
|
+
this.renderer.setStyle(container, 'align-items', 'center');
|
|
139
|
+
this.renderer.setStyle(container, 'pointer-events', 'none');
|
|
140
|
+
this.renderer.setStyle(container, 'opacity', '0');
|
|
141
|
+
this.renderer.setStyle(container, 'z-index', '1');
|
|
142
|
+
return container;
|
|
143
|
+
}
|
|
144
|
+
createCheckmarkSymbol() {
|
|
145
|
+
// Create the symbol component
|
|
146
|
+
this.symbolComponent = this.viewContainer.createComponent(SymbolComponent);
|
|
147
|
+
// Set inputs using setInput method for signal-based inputs
|
|
148
|
+
this.symbolComponent.setInput('symbolId', 'check');
|
|
149
|
+
this.symbolComponent.setInput('color', 'white');
|
|
150
|
+
this.symbolComponent.setInput('size', 10);
|
|
151
|
+
// Append the symbol to our checkmark container
|
|
152
|
+
this.renderer.appendChild(this.checkmarkContainer, this.symbolComponent.location.nativeElement);
|
|
153
|
+
}
|
|
154
|
+
createIndeterminateBar() {
|
|
155
|
+
// Create the indeterminate bar element exactly like the component
|
|
156
|
+
const bar = this.renderer.createElement('span');
|
|
157
|
+
this.renderer.setStyle(bar, 'height', '1.5px');
|
|
158
|
+
this.renderer.setStyle(bar, 'background', 'var(--ref-color-white)');
|
|
159
|
+
this.renderer.setStyle(bar, 'width', '8px');
|
|
160
|
+
// Append the bar to the indeterminate container
|
|
161
|
+
this.renderer.appendChild(this.indeterminateContainer, bar);
|
|
162
|
+
}
|
|
163
|
+
updateCheckmarkVisibility() {
|
|
164
|
+
if (this.checkmarkContainer) {
|
|
165
|
+
const opacity = this._checked && !this._indeterminate ? '1' : '0';
|
|
166
|
+
this.renderer.setStyle(this.checkmarkContainer, 'opacity', opacity);
|
|
167
|
+
}
|
|
168
|
+
if (this.indeterminateContainer) {
|
|
169
|
+
const opacity = this._indeterminate && !this._checked ? '1' : '0';
|
|
170
|
+
this.renderer.setStyle(this.indeterminateContainer, 'opacity', opacity);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
setupEventListeners() {
|
|
174
|
+
const input = this.elementRef.nativeElement;
|
|
175
|
+
// Input change listener (native checkbox change)
|
|
176
|
+
const changeListener = this.renderer.listen(input, 'change', () => {
|
|
177
|
+
this.onValueChange();
|
|
178
|
+
});
|
|
179
|
+
this.listeners.push(changeListener);
|
|
180
|
+
// Listen for label clicks to ensure focus is maintained
|
|
181
|
+
const parent = input.parentElement;
|
|
182
|
+
if (parent) {
|
|
183
|
+
const labelClickListener = this.renderer.listen(parent, 'click', (event) => {
|
|
184
|
+
const target = event.target;
|
|
185
|
+
// If clicking on a label that targets our input, ensure focus
|
|
186
|
+
if (target.tagName === 'LABEL' && target.getAttribute('for') === this.name) {
|
|
187
|
+
// Small delay to ensure the label click is processed first
|
|
188
|
+
setTimeout(() => {
|
|
189
|
+
input.focus();
|
|
190
|
+
}, 0);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
this.listeners.push(labelClickListener);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
applyCheckboxStyles() {
|
|
197
|
+
// Style the input directly without moving DOM elements
|
|
198
|
+
const styles = `
|
|
199
|
+
/* Complete reset and custom styling for our checkbox */
|
|
200
|
+
input[type="checkbox"].ap-checkbox-styled {
|
|
201
|
+
/* Targeted reset of problematic properties */
|
|
202
|
+
appearance: none !important;
|
|
203
|
+
-webkit-appearance: none !important;
|
|
204
|
+
-moz-appearance: none !important;
|
|
205
|
+
|
|
206
|
+
/* Our custom styling - use !important to override any global styles */
|
|
207
|
+
display: inline-block !important;
|
|
208
|
+
width: 16px !important;
|
|
209
|
+
height: 16px !important;
|
|
210
|
+
min-width: 16px !important;
|
|
211
|
+
min-height: 16px !important;
|
|
212
|
+
margin: 0 !important;
|
|
213
|
+
padding: 0 !important;
|
|
214
|
+
border: 1px solid var(--ref-color-grey-60);
|
|
215
|
+
border-radius: var(--sys-border-radius-sm);
|
|
216
|
+
background: var(--ref-color-white);
|
|
217
|
+
background-color: var(--ref-color-white);
|
|
218
|
+
box-sizing: border-box;
|
|
219
|
+
position: relative;
|
|
220
|
+
cursor: pointer;
|
|
221
|
+
vertical-align: middle;
|
|
222
|
+
|
|
223
|
+
/* Ensure no other styles can interfere */
|
|
224
|
+
box-shadow: none;
|
|
225
|
+
text-decoration: none;
|
|
226
|
+
font: inherit;
|
|
227
|
+
color: inherit;
|
|
228
|
+
letter-spacing: normal;
|
|
229
|
+
word-spacing: normal;
|
|
230
|
+
text-transform: none;
|
|
231
|
+
text-indent: 0;
|
|
232
|
+
text-shadow: none;
|
|
233
|
+
text-align: start;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/* Hover state */
|
|
237
|
+
input[type="checkbox"].ap-checkbox-styled:hover {
|
|
238
|
+
border-color: var(--ref-color-grey-80);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/* Active/pressed state */
|
|
242
|
+
input[type="checkbox"].ap-checkbox-styled:active {
|
|
243
|
+
border-color: var(--ref-color-grey-100);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/* Checked state */
|
|
247
|
+
input[type="checkbox"].ap-checkbox-styled:checked {
|
|
248
|
+
background: var(--ref-color-electric-blue-100);
|
|
249
|
+
border-color: var(--ref-color-electric-blue-100);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* Checked hover state */
|
|
253
|
+
input[type="checkbox"].ap-checkbox-styled:checked:hover {
|
|
254
|
+
background: var(--ref-color-electric-blue-80);
|
|
255
|
+
border-color: var(--ref-color-electric-blue-100);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/* Checked active/pressed state */
|
|
259
|
+
input[type="checkbox"].ap-checkbox-styled:checked:active {
|
|
260
|
+
background: var(--ref-color-electric-blue-60);
|
|
261
|
+
border-color: var(--ref-color-electric-blue-100);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/* Indeterminate state */
|
|
265
|
+
input[type="checkbox"].ap-checkbox-styled:indeterminate {
|
|
266
|
+
background: var(--ref-color-electric-blue-100);
|
|
267
|
+
border-color: var(--ref-color-electric-blue-100);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/* Disabled state */
|
|
271
|
+
input[type="checkbox"].ap-checkbox-styled:disabled {
|
|
272
|
+
border-color: var(--ref-color-grey-20);
|
|
273
|
+
background: var(--ref-color-grey-10);
|
|
274
|
+
cursor: default;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
input[type="checkbox"].ap-checkbox-styled:disabled:checked {
|
|
278
|
+
background: var(--ref-color-grey-20);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/* Focus state - only show on hover-capable devices like the component */
|
|
282
|
+
@media (hover: hover) {
|
|
283
|
+
input[type="checkbox"].ap-checkbox-styled:focus:not(.disabled) {
|
|
284
|
+
outline: 3px solid var(--ref-color-electric-blue-100) !important;
|
|
285
|
+
outline-offset: 1px !important;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/* Label styling - targets labels that follow our wrapper containing styled checkboxes */
|
|
290
|
+
span:has(input[type="checkbox"].ap-checkbox-styled) + label {
|
|
291
|
+
display: flex;
|
|
292
|
+
align-items: center;
|
|
293
|
+
font-family: var(--comp-forms-label-font-family);
|
|
294
|
+
font-size: var(--comp-forms-label-size);
|
|
295
|
+
font-weight: var(--comp-forms-label-font-weight);
|
|
296
|
+
line-height: var(--comp-forms-label-line-height);
|
|
297
|
+
color: var(--comp-forms-label-text-color);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/* Empty label styling */
|
|
301
|
+
span:has(input[type="checkbox"].ap-checkbox-styled) + label:empty {
|
|
302
|
+
display: none;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/* Disabled label styling */
|
|
306
|
+
span:has(input[type="checkbox"].ap-checkbox-styled:disabled) + label {
|
|
307
|
+
color: var(--ref-color-grey-60);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/* Label hover styling */
|
|
311
|
+
span:has(input[type="checkbox"].ap-checkbox-styled) + label:hover:not(.disabled) {
|
|
312
|
+
cursor: pointer;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/* Disabled label hover */
|
|
316
|
+
span:has(input[type="checkbox"].ap-checkbox-styled:disabled) + label:hover {
|
|
317
|
+
cursor: default;
|
|
318
|
+
}
|
|
319
|
+
`;
|
|
320
|
+
// Create and append style element
|
|
321
|
+
this.styleElement = this.renderer.createElement('style');
|
|
322
|
+
this.renderer.appendChild(this.styleElement, this.renderer.createText(styles));
|
|
323
|
+
this.renderer.appendChild(document.head, this.styleElement);
|
|
324
|
+
}
|
|
325
|
+
onBlur() {
|
|
326
|
+
this._onTouched();
|
|
327
|
+
}
|
|
328
|
+
onValueChange() {
|
|
329
|
+
if (!this.disabled) {
|
|
330
|
+
const input = this.elementRef.nativeElement;
|
|
331
|
+
if (this._indeterminate) {
|
|
332
|
+
// When indeterminate, clicking should go to checked state
|
|
333
|
+
this._checked = true;
|
|
334
|
+
this._indeterminate = false;
|
|
335
|
+
input.checked = true;
|
|
336
|
+
input.indeterminate = false;
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
// Normal toggle behavior
|
|
340
|
+
this._checked = input.checked;
|
|
341
|
+
}
|
|
342
|
+
this.updateCheckmarkVisibility();
|
|
343
|
+
this.change.emit(this._checked);
|
|
344
|
+
this._controlValueAccessorChangeFn(this._checked);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
// ControlValueAccessor implementation
|
|
348
|
+
writeValue(value) {
|
|
349
|
+
this._checked = value;
|
|
350
|
+
const input = this.elementRef.nativeElement;
|
|
351
|
+
input.checked = value;
|
|
352
|
+
// Ensure indeterminate state is properly set
|
|
353
|
+
input.indeterminate = this._indeterminate;
|
|
354
|
+
this.updateCheckmarkVisibility();
|
|
355
|
+
}
|
|
356
|
+
registerOnChange(fn) {
|
|
357
|
+
this._controlValueAccessorChangeFn = fn;
|
|
358
|
+
}
|
|
359
|
+
registerOnTouched(fn) {
|
|
360
|
+
this._onTouched = fn;
|
|
361
|
+
}
|
|
362
|
+
setDisabledState(isDisabled) {
|
|
363
|
+
this.disabled = isDisabled;
|
|
364
|
+
const input = this.elementRef.nativeElement;
|
|
365
|
+
input.disabled = isDisabled;
|
|
366
|
+
}
|
|
367
|
+
validate() {
|
|
368
|
+
const isNotValid = !this._checked && this.required;
|
|
369
|
+
return (isNotValid && {
|
|
370
|
+
invalid: true,
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
374
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.9", type: CheckboxDirective, isStandalone: true, selector: "input[type=\"checkbox\"][apCheckbox]", inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], disabled: ["disabled", "disabled", booleanAttribute], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], checked: "checked", required: ["required", "required", booleanAttribute], name: "name" }, outputs: { change: "change" }, host: { listeners: { "blur": "onBlur()" }, properties: { "disabled": "disabled", "required": "required", "checked": "checked", "attr.aria-label": "ariaLabel", "attr.aria-labelledby": "ariaLabelledby", "attr.aria-describedby": "ariaDescribedby", "attr.data-test": "name", "id": "name" } }, providers: [
|
|
375
|
+
AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR,
|
|
376
|
+
{
|
|
377
|
+
provide: NG_VALIDATORS,
|
|
378
|
+
useExisting: CheckboxDirective,
|
|
379
|
+
multi: true,
|
|
380
|
+
},
|
|
381
|
+
], ngImport: i0 });
|
|
382
|
+
}
|
|
383
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CheckboxDirective, decorators: [{
|
|
384
|
+
type: Directive,
|
|
385
|
+
args: [{
|
|
386
|
+
selector: 'input[type="checkbox"][apCheckbox]',
|
|
387
|
+
standalone: true,
|
|
388
|
+
providers: [
|
|
389
|
+
AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR,
|
|
390
|
+
{
|
|
391
|
+
provide: NG_VALIDATORS,
|
|
392
|
+
useExisting: CheckboxDirective,
|
|
393
|
+
multi: true,
|
|
394
|
+
},
|
|
395
|
+
],
|
|
396
|
+
host: {
|
|
397
|
+
'(blur)': 'onBlur()',
|
|
398
|
+
'[disabled]': 'disabled',
|
|
399
|
+
'[required]': 'required',
|
|
400
|
+
'[checked]': 'checked',
|
|
401
|
+
'[attr.aria-label]': 'ariaLabel',
|
|
402
|
+
'[attr.aria-labelledby]': 'ariaLabelledby',
|
|
403
|
+
'[attr.aria-describedby]': 'ariaDescribedby',
|
|
404
|
+
'[attr.data-test]': 'name',
|
|
405
|
+
'[id]': 'name',
|
|
406
|
+
},
|
|
407
|
+
}]
|
|
408
|
+
}], propDecorators: { ariaLabel: [{
|
|
409
|
+
type: Input,
|
|
410
|
+
args: ['aria-label']
|
|
411
|
+
}], ariaLabelledby: [{
|
|
412
|
+
type: Input,
|
|
413
|
+
args: ['aria-labelledby']
|
|
414
|
+
}], ariaDescribedby: [{
|
|
415
|
+
type: Input,
|
|
416
|
+
args: ['aria-describedby']
|
|
417
|
+
}], disabled: [{
|
|
418
|
+
type: Input,
|
|
419
|
+
args: [{
|
|
420
|
+
transform: booleanAttribute,
|
|
421
|
+
}]
|
|
422
|
+
}], indeterminate: [{
|
|
423
|
+
type: Input,
|
|
424
|
+
args: [{
|
|
425
|
+
transform: booleanAttribute,
|
|
426
|
+
}]
|
|
427
|
+
}], checked: [{
|
|
428
|
+
type: Input
|
|
429
|
+
}], required: [{
|
|
430
|
+
type: Input,
|
|
431
|
+
args: [{
|
|
432
|
+
transform: booleanAttribute,
|
|
433
|
+
}]
|
|
434
|
+
}], name: [{
|
|
435
|
+
type: Input,
|
|
436
|
+
args: [{
|
|
437
|
+
required: true,
|
|
438
|
+
}]
|
|
439
|
+
}], change: [{
|
|
440
|
+
type: Output
|
|
441
|
+
}] } });
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL2RpcmVjdGl2ZXMvc3JjL2NoZWNrYm94LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRixPQUFPLEVBQ0gsZ0JBQWdCLEVBRWhCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXhGLE1BQU0sQ0FBQyxNQUFNLDRDQUE0QyxHQUFHO0lBQ3hELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztJQUNoRCxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRjs7Ozs7OztFQU9FO0FBd0JGLE1BQU0sT0FBTyxpQkFBaUI7SUFDVCxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUE0QixDQUFBLENBQUMsQ0FBQztJQUNsRCxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLGFBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVyQyxTQUFTLENBQVU7SUFDZCxjQUFjLENBQVU7SUFDdkIsZUFBZSxDQUFVO0lBS3BELFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsSUFHSSxhQUFhLENBQUMsYUFBc0I7UUFDcEMsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLEtBQUssQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3hDLENBQUM7UUFDRCxpREFBaUQ7UUFDakQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQ0ksT0FBTyxDQUFDLE9BQWdCO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLGlEQUFpRDtRQUNqRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBS0QsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUVqQixJQUdJLElBQUksQ0FBQyxJQUFZO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELDREQUE0RDtJQUN6QyxNQUFNLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7SUFFdkUsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCw2QkFBNkIsR0FBNkIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ25FLFVBQVUsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFbEMsU0FBUyxHQUFtQixFQUFFLENBQUM7SUFDL0IsWUFBWSxDQUFvQjtJQUNoQyxPQUFPLENBQWU7SUFDdEIsa0JBQWtCLENBQWU7SUFDakMsc0JBQXNCLENBQWU7SUFDckMsZUFBZSxDQUFpQztJQUV4RCxRQUFRO1FBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFDRCxvREFBb0Q7UUFDcEQsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDTCxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFFbkMscUVBQXFFO1FBRXJFLG9EQUFvRDtRQUNwRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRS9FLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXZGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFOUIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFNBQWlCO1FBQzVDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRU8scUJBQXFCO1FBQ3pCLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTNFLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUUxQywrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsa0VBQWtFO1FBQ2xFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFNUMsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8seUJBQXlCO1FBQzdCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFFNUMsaURBQWlEO1FBQ2pELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQzlELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXBDLHdEQUF3RDtRQUN4RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ25DLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUU7Z0JBQ25GLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO2dCQUMzQyw4REFBOEQ7Z0JBQzlELElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3pFLDJEQUEyRDtvQkFDM0QsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDWixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2xCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDVixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDTCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLHVEQUF1RDtRQUN2RCxNQUFNLE1BQU0sR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQXlIZCxDQUFDO1FBRUYsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFHRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFFNUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3RCLDBEQUEwRDtnQkFDMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDckIsS0FBSyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDaEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLHlCQUF5QjtnQkFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2xDLENBQUM7WUFFRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0wsQ0FBQztJQUdELHNDQUFzQztJQUN0QyxVQUFVLENBQUMsS0FBYztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUM1QyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN0Qiw2Q0FBNkM7UUFDN0MsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUE0QjtRQUN6QyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUM1QyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsUUFBUTtRQUNKLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25ELE9BQU8sQ0FDSCxVQUFVLElBQUk7WUFDVixPQUFPLEVBQUUsSUFBSTtTQUNoQixDQUNKLENBQUM7SUFDTixDQUFDO3VHQWphUSxpQkFBaUI7MkZBQWpCLGlCQUFpQiw4UUFXWCxnQkFBZ0IscURBS2hCLGdCQUFnQiwwREFtQ2hCLGdCQUFnQiw4VkF2RXBCO1lBQ1AsNENBQTRDO1lBQzVDO2dCQUNJLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsaUJBQWlCO2dCQUM5QixLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0o7OzJGQWFRLGlCQUFpQjtrQkF2QjdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG9DQUFvQztvQkFDOUMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUCw0Q0FBNEM7d0JBQzVDOzRCQUNJLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLG1CQUFtQjs0QkFDOUIsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7b0JBQ0QsSUFBSSxFQUFFO3dCQUNGLFFBQVEsRUFBRSxVQUFVO3dCQUNwQixZQUFZLEVBQUUsVUFBVTt3QkFDeEIsWUFBWSxFQUFFLFVBQVU7d0JBQ3hCLFdBQVcsRUFBRSxTQUFTO3dCQUN0QixtQkFBbUIsRUFBRSxXQUFXO3dCQUNoQyx3QkFBd0IsRUFBRSxnQkFBZ0I7d0JBQzFDLHlCQUF5QixFQUFFLGlCQUFpQjt3QkFDNUMsa0JBQWtCLEVBQUUsTUFBTTt3QkFDMUIsTUFBTSxFQUFFLE1BQU07cUJBQ2pCO2lCQUNKOzhCQU93QixTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ08sY0FBYztzQkFBdkMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ0csZUFBZTtzQkFBekMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBS3pCLFFBQVE7c0JBSFAsS0FBSzt1QkFBQzt3QkFDSCxTQUFTLEVBQUUsZ0JBQWdCO3FCQUM5QjtnQkFNRyxhQUFhO3NCQUhoQixLQUFLO3VCQUFDO3dCQUNILFNBQVMsRUFBRSxnQkFBZ0I7cUJBQzlCO2dCQXFCRyxPQUFPO3NCQURWLEtBQUs7Z0JBZ0JOLFFBQVE7c0JBSFAsS0FBSzt1QkFBQzt3QkFDSCxTQUFTLEVBQUUsZ0JBQWdCO3FCQUM5QjtnQkFNRyxJQUFJO3NCQUhQLEtBQUs7dUJBQUM7d0JBQ0gsUUFBUSxFQUFFLElBQUk7cUJBQ2pCO2dCQVNrQixNQUFNO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXBDaGVjaywgU3ltYm9sQ29tcG9uZW50LCBTeW1ib2xSZWdpc3RyeSB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLXN5bWJvbCc7XG5pbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBBUF9DSEVDS0JPWF9ESVJFQ1RJVkVfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUiA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGVja2JveERpcmVjdGl2ZSksXG4gICAgbXVsdGk6IHRydWUsXG59O1xuXG4vKlxuICAgIEhvc3QgYmluZGluZ3MgaXMgaW1wb3J0YW50IGhlcmU6XG4gICAgLSBUaGlzIHByb3ZpZGVzIGVuY2Fwc3VsYXRpb24gYW5kIHJlYWN0aXZpdHkgcmVnYXJkbGVzcyBvZiBob3cgdGhlIGRpcmVjdGl2ZSBpcyB1c2VkIGluIHRlbXBsYXRlcy5cbiAgICAtIEl0IGd1YXJhbnRlZXMgdGhhdCBwcm9wZXJ0aWVzIGxpa2UgY2hlY2tlZCwgZGlzYWJsZWQsIHJlcXVpcmVkLCBhbmQgQVJJQSBhdHRyaWJ1dGVzIGFsd2F5cyByZWZsZWN0XG4gICAgb25seSB0aGUgZGlyZWN0aXZlJ3MgbG9naWMsIG5vdCBqdXN0IGNvbnN1bWVyIGJpbmRpbmdzLlxuICAgIC0gU28gd2UgbmVlZCB0byBoYXZlIGhvc3QgYmluZGluZ3MgZm9yIGFsbCB0aGUgcHJvcGVydGllcyB0aGF0IHdlIHdhbnQgdG8gY29udHJvbC5cbiAgICAtIFdlIGNvdWxkIGFsc28gdXNlIEBIb3N0TGlzdGVuZXIuXG4qL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl1bYXBDaGVja2JveF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEFQX0NIRUNLQk9YX0RJUkVDVElWRV9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IENoZWNrYm94RGlyZWN0aXZlLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoYmx1ciknOiAnb25CbHVyKCknLFxuICAgICAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgICAgICdbcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAgICAgJ1tjaGVja2VkXSc6ICdjaGVja2VkJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCcsXG4gICAgICAgICdbYXR0ci5hcmlhLWxhYmVsbGVkYnldJzogJ2FyaWFMYWJlbGxlZGJ5JyxcbiAgICAgICAgJ1thdHRyLmFyaWEtZGVzY3JpYmVkYnldJzogJ2FyaWFEZXNjcmliZWRieScsXG4gICAgICAgICdbYXR0ci5kYXRhLXRlc3RdJzogJ25hbWUnLFxuICAgICAgICAnW2lkXSc6ICduYW1lJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveERpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzeW1ib2xSZWdpc3RyeSA9IGluamVjdChTeW1ib2xSZWdpc3RyeSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXIgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBhcmlhTGFiZWw/OiBzdHJpbmc7XG4gICAgQElucHV0KCdhcmlhLWxhYmVsbGVkYnknKSBhcmlhTGFiZWxsZWRieT86IHN0cmluZztcbiAgICBASW5wdXQoJ2FyaWEtZGVzY3JpYmVkYnknKSBhcmlhRGVzY3JpYmVkYnk/OiBzdHJpbmc7XG4gICAgXG4gICAgQElucHV0KHtcbiAgICAgICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICAgIH0pXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBcbiAgICBASW5wdXQoe1xuICAgICAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgfSlcbiAgICBzZXQgaW5kZXRlcm1pbmF0ZShpbmRldGVybWluYXRlOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpbmRldGVybWluYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IGluZGV0ZXJtaW5hdGU7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgaW5wdXQuaW5kZXRlcm1pbmF0ZSA9IGluZGV0ZXJtaW5hdGU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT25seSB1cGRhdGUgdmlzaWJpbGl0eSBpZiBjb250YWluZXJzIGFyZSByZWFkeVxuICAgICAgICBpZiAodGhpcy5jaGVja21hcmtDb250YWluZXIgJiYgdGhpcy5pbmRldGVybWluYXRlQ29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNoZWNrbWFya1Zpc2liaWxpdHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXRlcm1pbmF0ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBcbiAgICBzZXQgY2hlY2tlZChjaGVja2VkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrZWQgPSBjaGVja2VkO1xuICAgICAgICAvLyBPbmx5IHVwZGF0ZSB2aXNpYmlsaXR5IGlmIGNvbnRhaW5lcnMgYXJlIHJlYWR5XG4gICAgICAgIGlmICh0aGlzLmNoZWNrbWFya0NvbnRhaW5lciAmJiB0aGlzLmluZGV0ZXJtaW5hdGVDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hlY2ttYXJrVmlzaWJpbGl0eSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tlZDtcbiAgICB9XG5cbiAgICBASW5wdXQoe1xuICAgICAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgfSlcbiAgICByZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSlcbiAgICBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gICAgfVxuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgX2NoZWNrZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfbmFtZSA9ICcnO1xuICAgIHByaXZhdGUgX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm46ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAgIHByaXZhdGUgX29uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAgIFxuICAgIHByaXZhdGUgbGlzdGVuZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuICAgIHByaXZhdGUgc3R5bGVFbGVtZW50ITogSFRNTFN0eWxlRWxlbWVudDtcbiAgICBwcml2YXRlIHdyYXBwZXIhOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIGNoZWNrbWFya0NvbnRhaW5lciE6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgaW5kZXRlcm1pbmF0ZUNvbnRhaW5lciE6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgc3ltYm9sQ29tcG9uZW50PzogQ29tcG9uZW50UmVmPFN5bWJvbENvbXBvbmVudD47XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zeW1ib2xSZWdpc3RyeS5yZWdpc3RlclN5bWJvbHMoW2FwQ2hlY2tdKTtcbiAgICAgICAgdGhpcy5jcmVhdGVDaGVja2JveFN0cnVjdHVyZSgpO1xuICAgICAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaCh1bmxpc3RlbiA9PiB1bmxpc3RlbigpKTtcbiAgICAgICAgaWYgKHRoaXMuc3R5bGVFbGVtZW50ICYmIHRoaXMuc3R5bGVFbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5zdHlsZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN5bWJvbENvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5zeW1ib2xDb21wb25lbnQuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNoZWNrbWFya0NvbnRhaW5lciAmJiB0aGlzLmNoZWNrbWFya0NvbnRhaW5lci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrbWFya0NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuY2hlY2ttYXJrQ29udGFpbmVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlQ29udGFpbmVyICYmIHRoaXMuaW5kZXRlcm1pbmF0ZUNvbnRhaW5lci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmluZGV0ZXJtaW5hdGVDb250YWluZXIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1vdmUgaW5wdXQgYmFjayBvdXQgb2Ygd3JhcHBlciBhbmQgcmVtb3ZlIHdyYXBwZXJcbiAgICAgICAgaWYgKHRoaXMud3JhcHBlciAmJiB0aGlzLndyYXBwZXIucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKHRoaXMud3JhcHBlci5wYXJlbnROb2RlLCBpbnB1dCwgdGhpcy53cmFwcGVyKTtcbiAgICAgICAgICAgIHRoaXMud3JhcHBlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMud3JhcHBlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNoZWNrYm94U3RydWN0dXJlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBpbnB1dC5wYXJlbnRFbGVtZW50O1xuICAgICAgICBcbiAgICAgICAgLy8gSG90IHRha2UgLSBJbnB1dCBkb2Vzbid0IG5lZWQgcG9zaXRpb25pbmcgc2luY2UgaXQgd2lsbCBiZSB3cmFwcGVkXG4gICAgICAgIFxuICAgICAgICAvLyBNYWtlIGlucHV0J3MgcGFyZW50IHVzZSBpbmxpbmUtZmxleCBmb3IgYWxpZ25tZW50XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocGFyZW50LCAnZGlzcGxheScsICdpbmxpbmUtZmxleCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShwYXJlbnQsICdhbGlnbi1pdGVtcycsICdjZW50ZXInKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocGFyZW50LCAnZ2FwJywgJ3ZhcigtLXJlZi1zcGFjaW5nLXh4cyknKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhpbnB1dCwgJ2FwLWNoZWNrYm94LXN0eWxlZCcpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5jaGVja21hcmtDb250YWluZXIgPSB0aGlzLmNyZWF0ZU92ZXJsYXlDb250YWluZXIoJ2FwLWNoZWNrYm94LWNoZWNrbWFyaycpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy53cmFwcGVyID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy53cmFwcGVyLCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLndyYXBwZXIsICdkaXNwbGF5JywgJ2lubGluZS1mbGV4Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy53cmFwcGVyLCAnYWxpZ24taXRlbXMnLCAnY2VudGVyJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy53cmFwcGVyLCAndmVydGljYWwtYWxpZ24nLCAnbWlkZGxlJyk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShwYXJlbnQsIHRoaXMud3JhcHBlciwgaW5wdXQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMud3JhcHBlciwgaW5wdXQpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIsIHRoaXMuY2hlY2ttYXJrQ29udGFpbmVyKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNvbnRhaW5lciA9IHRoaXMuY3JlYXRlT3ZlcmxheUNvbnRhaW5lcignYXAtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZScpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIsIHRoaXMuaW5kZXRlcm1pbmF0ZUNvbnRhaW5lcik7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmNyZWF0ZUNoZWNrbWFya1N5bWJvbCgpO1xuICAgICAgICB0aGlzLmNyZWF0ZUluZGV0ZXJtaW5hdGVCYXIoKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuYXBwbHlDaGVja2JveFN0eWxlcygpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy51cGRhdGVDaGVja21hcmtWaXNpYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5Q29udGFpbmVyKGNsYXNzTmFtZTogc3RyaW5nKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhjb250YWluZXIsIGNsYXNzTmFtZSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250YWluZXIsICd0b3AnLCAnNTAlJyk7IFxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbnRhaW5lciwgJ2xlZnQnLCAnNTAlJyk7ICAgXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyLCAndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgtNTAlLCAtNTAlKScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbnRhaW5lciwgJ3dpZHRoJywgJ2F1dG8nKTsgXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyLCAnaGVpZ2h0JywgJ2F1dG8nKTsgXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyLCAnZGlzcGxheScsICdmbGV4Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyLCAnanVzdGlmeS1jb250ZW50JywgJ2NlbnRlcicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbnRhaW5lciwgJ2FsaWduLWl0ZW1zJywgJ2NlbnRlcicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbnRhaW5lciwgJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250YWluZXIsICdvcGFjaXR5JywgJzAnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250YWluZXIsICd6LWluZGV4JywgJzEnKTtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNoZWNrbWFya1N5bWJvbCgpOiB2b2lkIHtcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBzeW1ib2wgY29tcG9uZW50XG4gICAgICAgIHRoaXMuc3ltYm9sQ29tcG9uZW50ID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChTeW1ib2xDb21wb25lbnQpO1xuICAgICAgICBcbiAgICAgICAgLy8gU2V0IGlucHV0cyB1c2luZyBzZXRJbnB1dCBtZXRob2QgZm9yIHNpZ25hbC1iYXNlZCBpbnB1dHNcbiAgICAgICAgdGhpcy5zeW1ib2xDb21wb25lbnQuc2V0SW5wdXQoJ3N5bWJvbElkJywgJ2NoZWNrJyk7XG4gICAgICAgIHRoaXMuc3ltYm9sQ29tcG9uZW50LnNldElucHV0KCdjb2xvcicsICd3aGl0ZScpO1xuICAgICAgICB0aGlzLnN5bWJvbENvbXBvbmVudC5zZXRJbnB1dCgnc2l6ZScsIDEwKTtcbiAgICAgICAgXG4gICAgICAgIC8vIEFwcGVuZCB0aGUgc3ltYm9sIHRvIG91ciBjaGVja21hcmsgY29udGFpbmVyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5jaGVja21hcmtDb250YWluZXIsIHRoaXMuc3ltYm9sQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSW5kZXRlcm1pbmF0ZUJhcigpOiB2b2lkIHtcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbmRldGVybWluYXRlIGJhciBlbGVtZW50IGV4YWN0bHkgbGlrZSB0aGUgY29tcG9uZW50XG4gICAgICAgIGNvbnN0IGJhciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGJhciwgJ2hlaWdodCcsICcxLjVweCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGJhciwgJ2JhY2tncm91bmQnLCAndmFyKC0tcmVmLWNvbG9yLXdoaXRlKScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGJhciwgJ3dpZHRoJywgJzhweCcpO1xuICAgICAgICBcbiAgICAgICAgLy8gQXBwZW5kIHRoZSBiYXIgdG8gdGhlIGluZGV0ZXJtaW5hdGUgY29udGFpbmVyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5pbmRldGVybWluYXRlQ29udGFpbmVyLCBiYXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ2hlY2ttYXJrVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2ttYXJrQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBvcGFjaXR5ID0gdGhpcy5fY2hlY2tlZCAmJiAhdGhpcy5faW5kZXRlcm1pbmF0ZSA/ICcxJyA6ICcwJztcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5jaGVja21hcmtDb250YWluZXIsICdvcGFjaXR5Jywgb3BhY2l0eSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc3Qgb3BhY2l0eSA9IHRoaXMuX2luZGV0ZXJtaW5hdGUgJiYgIXRoaXMuX2NoZWNrZWQgPyAnMScgOiAnMCc7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5kZXRlcm1pbmF0ZUNvbnRhaW5lciwgJ29wYWNpdHknLCBvcGFjaXR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgXG4gICAgICAgIC8vIElucHV0IGNoYW5nZSBsaXN0ZW5lciAobmF0aXZlIGNoZWNrYm94IGNoYW5nZSlcbiAgICAgICAgY29uc3QgY2hhbmdlTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihpbnB1dCwgJ2NoYW5nZScsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5saXN0ZW5lcnMucHVzaChjaGFuZ2VMaXN0ZW5lcik7XG4gICAgICAgIFxuICAgICAgICAvLyBMaXN0ZW4gZm9yIGxhYmVsIGNsaWNrcyB0byBlbnN1cmUgZm9jdXMgaXMgbWFpbnRhaW5lZFxuICAgICAgICBjb25zdCBwYXJlbnQgPSBpbnB1dC5wYXJlbnRFbGVtZW50O1xuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBsYWJlbENsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihwYXJlbnQsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICAvLyBJZiBjbGlja2luZyBvbiBhIGxhYmVsIHRoYXQgdGFyZ2V0cyBvdXIgaW5wdXQsIGVuc3VyZSBmb2N1c1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0xBQkVMJyAmJiB0YXJnZXQuZ2V0QXR0cmlidXRlKCdmb3InKSA9PT0gdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNtYWxsIGRlbGF5IHRvIGVuc3VyZSB0aGUgbGFiZWwgY2xpY2sgaXMgcHJvY2Vzc2VkIGZpcnN0XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGxhYmVsQ2xpY2tMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5Q2hlY2tib3hTdHlsZXMoKTogdm9pZCB7XG4gICAgICAgIC8vIFN0eWxlIHRoZSBpbnB1dCBkaXJlY3RseSB3aXRob3V0IG1vdmluZyBET00gZWxlbWVudHNcbiAgICAgICAgY29uc3Qgc3R5bGVzID0gYFxuICAgICAgICAgICAgLyogQ29tcGxldGUgcmVzZXQgYW5kIGN1c3RvbSBzdHlsaW5nIGZvciBvdXIgY2hlY2tib3ggKi9cbiAgICAgICAgICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQge1xuICAgICAgICAgICAgICAgIC8qIFRhcmdldGVkIHJlc2V0IG9mIHByb2JsZW1hdGljIHByb3BlcnRpZXMgKi9cbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLyogT3VyIGN1c3RvbSBzdHlsaW5nIC0gdXNlICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgYW55IGdsb2JhbCBzdHlsZXMgKi9cbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDE2cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcmVmLWNvbG9yLWdyZXktNjApO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN5cy1ib3JkZXItcmFkaXVzLXNtKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1yZWYtY29sb3Itd2hpdGUpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJlZi1jb2xvci13aGl0ZSk7XG4gICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLyogRW5zdXJlIG5vIG90aGVyIHN0eWxlcyBjYW4gaW50ZXJmZXJlICovXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICAgICAgICAgICAgICAgIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgICAgICAgICAgICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHN0YXJ0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvKiBIb3ZlciBzdGF0ZSAqL1xuICAgICAgICAgICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLmFwLWNoZWNrYm94LXN0eWxlZDpob3ZlciB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1yZWYtY29sb3ItZ3JleS04MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIEFjdGl2ZS9wcmVzc2VkIHN0YXRlICovXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1yZWYtY29sb3ItZ3JleS0xMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvKiBDaGVja2VkIHN0YXRlICovXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmNoZWNrZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTEwMCk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1yZWYtY29sb3ItZWxlY3RyaWMtYmx1ZS0xMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvKiBDaGVja2VkIGhvdmVyIHN0YXRlICovXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmNoZWNrZWQ6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTgwKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIENoZWNrZWQgYWN0aXZlL3ByZXNzZWQgc3RhdGUgKi9cbiAgICAgICAgICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQ6Y2hlY2tlZDphY3RpdmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTYwKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIEluZGV0ZXJtaW5hdGUgc3RhdGUgKi9cbiAgICAgICAgICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQ6aW5kZXRlcm1pbmF0ZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcmVmLWNvbG9yLWVsZWN0cmljLWJsdWUtMTAwKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIERpc2FibGVkIHN0YXRlICovXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmRpc2FibGVkIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXJlZi1jb2xvci1ncmV5LTIwKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1yZWYtY29sb3ItZ3JleS0xMCk7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmRpc2FibGVkOmNoZWNrZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJlZi1jb2xvci1ncmV5LTIwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLyogRm9jdXMgc3RhdGUgLSBvbmx5IHNob3cgb24gaG92ZXItY2FwYWJsZSBkZXZpY2VzIGxpa2UgdGhlIGNvbXBvbmVudCAqL1xuICAgICAgICAgICAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAgICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0uYXAtY2hlY2tib3gtc3R5bGVkOmZvY3VzOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogM3B4IHNvbGlkIHZhcigtLXJlZi1jb2xvci1lbGVjdHJpYy1ibHVlLTEwMCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDFweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLyogTGFiZWwgc3R5bGluZyAtIHRhcmdldHMgbGFiZWxzIHRoYXQgZm9sbG93IG91ciB3cmFwcGVyIGNvbnRhaW5pbmcgc3R5bGVkIGNoZWNrYm94ZXMgKi9cbiAgICAgICAgICAgIHNwYW46aGFzKGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQpICsgbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tY29tcC1mb3Jtcy1sYWJlbC1mb250LWZhbWlseSk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1jb21wLWZvcm1zLWxhYmVsLXNpemUpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1jb21wLWZvcm1zLWxhYmVsLWZvbnQtd2VpZ2h0KTtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0tY29tcC1mb3Jtcy1sYWJlbC1saW5lLWhlaWdodCk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLWNvbXAtZm9ybXMtbGFiZWwtdGV4dC1jb2xvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIEVtcHR5IGxhYmVsIHN0eWxpbmcgKi9cbiAgICAgICAgICAgIHNwYW46aGFzKGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQpICsgbGFiZWw6ZW1wdHkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIERpc2FibGVkIGxhYmVsIHN0eWxpbmcgKi9cbiAgICAgICAgICAgIHNwYW46aGFzKGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQ6ZGlzYWJsZWQpICsgbGFiZWwge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1yZWYtY29sb3ItZ3JleS02MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qIExhYmVsIGhvdmVyIHN0eWxpbmcgKi9cbiAgICAgICAgICAgIHNwYW46aGFzKGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQpICsgbGFiZWw6aG92ZXI6bm90KC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLyogRGlzYWJsZWQgbGFiZWwgaG92ZXIgKi9cbiAgICAgICAgICAgIHNwYW46aGFzKGlucHV0W3R5cGU9XCJjaGVja2JveFwiXS5hcC1jaGVja2JveC1zdHlsZWQ6ZGlzYWJsZWQpICsgbGFiZWw6aG92ZXIge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYDtcbiAgICAgICAgXG4gICAgICAgIC8vIENyZWF0ZSBhbmQgYXBwZW5kIHN0eWxlIGVsZW1lbnRcbiAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5zdHlsZUVsZW1lbnQsIHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChzdHlsZXMpKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgfVxuXG5cbiAgICBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25WYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAodGhpcy5faW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIFdoZW4gaW5kZXRlcm1pbmF0ZSwgY2xpY2tpbmcgc2hvdWxkIGdvIHRvIGNoZWNrZWQgc3RhdGVcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaW5wdXQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBOb3JtYWwgdG9nZ2xlIGJlaGF2aW9yXG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tlZCA9IGlucHV0LmNoZWNrZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hlY2ttYXJrVmlzaWJpbGl0eSgpO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLl9jaGVja2VkKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5fY2hlY2tlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudGF0aW9uXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGVja2VkID0gdmFsdWU7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgLy8gRW5zdXJlIGluZGV0ZXJtaW5hdGUgc3RhdGUgaXMgcHJvcGVybHkgc2V0XG4gICAgICAgIGlucHV0LmluZGV0ZXJtaW5hdGUgPSB0aGlzLl9pbmRldGVybWluYXRlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNoZWNrbWFya1Zpc2liaWxpdHkoKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaW5wdXQuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKCkge1xuICAgICAgICBjb25zdCBpc05vdFZhbGlkID0gIXRoaXMuX2NoZWNrZWQgJiYgdGhpcy5yZXF1aXJlZDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGlzTm90VmFsaWQgJiYge1xuICAgICAgICAgICAgICAgIGludmFsaWQ6IHRydWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxufSJdfQ==
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export * from './autosize-textarea.directive';
|
|
2
2
|
export * from './base-button.directive';
|
|
3
|
+
export * from './checkbox.directive';
|
|
3
4
|
export * from './default-image.directive';
|
|
4
5
|
export * from './ellipsis.directive';
|
|
5
6
|
export * from './equal-validator.directive';
|
|
6
7
|
export * from './frozen-gif.directive';
|
|
7
8
|
export * from './multi-style-text.directive';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9kaXJlY3RpdmVzL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXV0b3NpemUtdGV4dGFyZWEuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1idXR0b24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tib3guZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC1pbWFnZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9lbGxpcHNpcy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9lcXVhbC12YWxpZGF0b3IuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZnJvemVuLWdpZi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9tdWx0aS1zdHlsZS10ZXh0LmRpcmVjdGl2ZSc7XG4iXX0=
|