@skyux/indicators 11.31.0 → 12.0.0-alpha.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/documentation.json +878 -866
- package/fesm2022/skyux-indicators.mjs +120 -115
- package/fesm2022/skyux-indicators.mjs.map +1 -1
- package/package.json +13 -17
- package/esm2022/index.mjs +0 -38
- package/esm2022/lib/modules/alert/alert.component.mjs +0 -133
- package/esm2022/lib/modules/alert/alert.module.mjs +0 -32
- package/esm2022/lib/modules/chevron/chevron.component.mjs +0 -78
- package/esm2022/lib/modules/chevron/chevron.module.mjs +0 -32
- package/esm2022/lib/modules/expansion-indicator/expansion-indicator.component.mjs +0 -31
- package/esm2022/lib/modules/expansion-indicator/expansion-indicator.module.mjs +0 -19
- package/esm2022/lib/modules/illustration/illustration-resolver.service.mjs +0 -13
- package/esm2022/lib/modules/illustration/illustration-size.mjs +0 -2
- package/esm2022/lib/modules/illustration/illustration.component.mjs +0 -45
- package/esm2022/lib/modules/illustration/illustration.module.mjs +0 -16
- package/esm2022/lib/modules/key-info/key-info-label.component.mjs +0 -21
- package/esm2022/lib/modules/key-info/key-info-layout-type.mjs +0 -2
- package/esm2022/lib/modules/key-info/key-info-value.component.mjs +0 -18
- package/esm2022/lib/modules/key-info/key-info.component.mjs +0 -30
- package/esm2022/lib/modules/key-info/key-info.module.mjs +0 -34
- package/esm2022/lib/modules/label/label-type.mjs +0 -2
- package/esm2022/lib/modules/label/label.component.mjs +0 -117
- package/esm2022/lib/modules/label/label.module.mjs +0 -20
- package/esm2022/lib/modules/shared/indicator-description-type.mjs +0 -2
- package/esm2022/lib/modules/shared/indicator-icon-type.mjs +0 -2
- package/esm2022/lib/modules/shared/indicator-icon-utility.mjs +0 -40
- package/esm2022/lib/modules/shared/indicator-icon.mjs +0 -2
- package/esm2022/lib/modules/shared/sky-indicators-resources.module.mjs +0 -76
- package/esm2022/lib/modules/status-indicator/status-indicator.component.mjs +0 -110
- package/esm2022/lib/modules/status-indicator/status-indicator.module.mjs +0 -39
- package/esm2022/lib/modules/text-highlight/text-highlight.directive.mjs +0 -152
- package/esm2022/lib/modules/text-highlight/text-highlight.module.mjs +0 -18
- package/esm2022/lib/modules/tokens/token.component.mjs +0 -120
- package/esm2022/lib/modules/tokens/tokens.component.mjs +0 -331
- package/esm2022/lib/modules/tokens/tokens.module.mjs +0 -35
- package/esm2022/lib/modules/tokens/types/token-selected-event-args.mjs +0 -2
- package/esm2022/lib/modules/tokens/types/token.mjs +0 -2
- package/esm2022/lib/modules/tokens/types/tokens-message-type.mjs +0 -24
- package/esm2022/lib/modules/tokens/types/tokens-message.mjs +0 -2
- package/esm2022/lib/modules/wait/wait-adapter.service.mjs +0 -226
- package/esm2022/lib/modules/wait/wait-page.component.mjs +0 -19
- package/esm2022/lib/modules/wait/wait.component.mjs +0 -173
- package/esm2022/lib/modules/wait/wait.module.mjs +0 -16
- package/esm2022/lib/modules/wait/wait.service.mjs +0 -159
- package/esm2022/skyux-indicators.mjs +0 -5
- package/esm2022/testing/legacy/alert-fixture.mjs +0 -70
- package/esm2022/testing/legacy/label-fixture.mjs +0 -42
- package/esm2022/testing/legacy/wait-fixture.mjs +0 -28
- package/esm2022/testing/modules/alert/alert-harness-filters.mjs +0 -2
- package/esm2022/testing/modules/alert/alert-harness.mjs +0 -112
- package/esm2022/testing/modules/chevron/chevron-harness.mjs +0 -38
- package/esm2022/testing/modules/help-inline/help-inline-harness-filters.mjs +0 -2
- package/esm2022/testing/modules/help-inline/help-inline-harness.mjs +0 -25
- package/esm2022/testing/modules/illustration/illustration-harness-filters.mjs +0 -2
- package/esm2022/testing/modules/illustration/illustration-harness.mjs +0 -54
- package/esm2022/testing/modules/key-info/key-info-harness-filters.mjs +0 -2
- package/esm2022/testing/modules/key-info/key-info-harness.mjs +0 -43
- package/esm2022/testing/modules/key-info/key-info-label-harness.mjs +0 -18
- package/esm2022/testing/modules/key-info/key-info-value-harness.mjs +0 -18
- package/esm2022/testing/modules/label/label-harness-filters.mjs +0 -2
- package/esm2022/testing/modules/label/label-harness.mjs +0 -88
- package/esm2022/testing/modules/status-indicator/status-indicator-harness-filters.mjs +0 -2
- package/esm2022/testing/modules/status-indicator/status-indicator-harness.mjs +0 -119
- package/esm2022/testing/modules/tokens/token-harness-filters.mjs +0 -2
- package/esm2022/testing/modules/tokens/token-harness.mjs +0 -63
- package/esm2022/testing/modules/tokens/tokens-harness-filters.mjs +0 -2
- package/esm2022/testing/modules/tokens/tokens-harness.mjs +0 -45
- package/esm2022/testing/modules/wait/wait-harness-filters.mjs +0 -2
- package/esm2022/testing/modules/wait/wait-harness.mjs +0 -60
- package/esm2022/testing/public-api.mjs +0 -15
- package/esm2022/testing/skyux-indicators-testing.mjs +0 -5
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
var _a;
|
|
2
|
-
import { Injectable, } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
const busyElements = {};
|
|
5
|
-
// Need to add the following to classes which contain static methods.
|
|
6
|
-
// See: https://github.com/ng-packagr/ng-packagr/issues/641
|
|
7
|
-
/**
|
|
8
|
-
* @internal
|
|
9
|
-
* @dynamic
|
|
10
|
-
*/
|
|
11
|
-
export class SkyWaitAdapterService {
|
|
12
|
-
static { this.isPageWaitActive = false; }
|
|
13
|
-
#focusableElements;
|
|
14
|
-
#renderer;
|
|
15
|
-
constructor(rendererFactory) {
|
|
16
|
-
this.#renderer = rendererFactory.createRenderer(undefined, null);
|
|
17
|
-
}
|
|
18
|
-
ngOnDestroy() {
|
|
19
|
-
this.#clearListeners();
|
|
20
|
-
}
|
|
21
|
-
setWaitBounds(waitEl) {
|
|
22
|
-
this.#renderer.setStyle(waitEl.nativeElement.parentElement, 'position', 'relative');
|
|
23
|
-
}
|
|
24
|
-
removeWaitBounds(waitEl) {
|
|
25
|
-
this.#renderer.removeStyle(waitEl.nativeElement.parentElement, 'position');
|
|
26
|
-
}
|
|
27
|
-
setBusyState(waitEl, isFullPage, isWaiting, isNonBlocking, waitComponentId) {
|
|
28
|
-
const busyEl = isFullPage
|
|
29
|
-
? document.body
|
|
30
|
-
: waitEl.nativeElement.parentElement;
|
|
31
|
-
if (!isNonBlocking) {
|
|
32
|
-
if (isWaiting) {
|
|
33
|
-
let restoreFocusElement = undefined;
|
|
34
|
-
let restoreFocusCheckElement = undefined;
|
|
35
|
-
this.#renderer.setAttribute(busyEl, 'aria-busy', 'true');
|
|
36
|
-
// Remove focus from page when full page blocking wait
|
|
37
|
-
if (isFullPage || busyEl.contains(document.activeElement)) {
|
|
38
|
-
if (document.activeElement !== document.body) {
|
|
39
|
-
restoreFocusElement = document.activeElement;
|
|
40
|
-
}
|
|
41
|
-
this.#clearDocumentFocus();
|
|
42
|
-
restoreFocusCheckElement = document.activeElement;
|
|
43
|
-
}
|
|
44
|
-
if (isFullPage) {
|
|
45
|
-
_a.isPageWaitActive = true;
|
|
46
|
-
const endListenerFunc = this.#renderer.listen(document.body, 'keydown', (event) => {
|
|
47
|
-
/*istanbul ignore else */
|
|
48
|
-
if (event.key) {
|
|
49
|
-
/* istanbul ignore else */
|
|
50
|
-
if (event.key.toLowerCase() === 'tab') {
|
|
51
|
-
event.target.blur();
|
|
52
|
-
event.preventDefault();
|
|
53
|
-
event.stopPropagation();
|
|
54
|
-
event.stopImmediatePropagation();
|
|
55
|
-
this.#clearDocumentFocus();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
if (waitComponentId) {
|
|
60
|
-
busyElements[waitComponentId] = {
|
|
61
|
-
listener: endListenerFunc,
|
|
62
|
-
busyEl: undefined,
|
|
63
|
-
restoreFocusElement,
|
|
64
|
-
restoreFocusCheckElement,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
const endListenerFunc = this.#renderer.listen(busyEl, 'focusin', (event) => {
|
|
70
|
-
/* istanbul ignore else */
|
|
71
|
-
if (!isNonBlocking) {
|
|
72
|
-
event.preventDefault();
|
|
73
|
-
event.stopPropagation();
|
|
74
|
-
event.stopImmediatePropagation();
|
|
75
|
-
if (_a.isPageWaitActive) {
|
|
76
|
-
this.#clearDocumentFocus();
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
// Propagate tab navigation if attempted into waited element
|
|
80
|
-
const target = event.target;
|
|
81
|
-
if (target) {
|
|
82
|
-
target.blur();
|
|
83
|
-
this.#focusNextElement(target, this.#isShift(event));
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
if (waitComponentId) {
|
|
89
|
-
busyElements[waitComponentId] = {
|
|
90
|
-
listener: endListenerFunc,
|
|
91
|
-
busyEl,
|
|
92
|
-
restoreFocusElement,
|
|
93
|
-
restoreFocusCheckElement,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
this.#renderer.removeAttribute(busyEl, 'aria-busy');
|
|
100
|
-
if (isFullPage) {
|
|
101
|
-
_a.isPageWaitActive = false;
|
|
102
|
-
}
|
|
103
|
-
if (waitComponentId && waitComponentId in busyElements) {
|
|
104
|
-
const busyElement = busyElements[waitComponentId];
|
|
105
|
-
busyElement.listener();
|
|
106
|
-
// If there is a restore focus element and the focus has not moved, restore focus.
|
|
107
|
-
if (busyElement.restoreFocusCheckElement === document.activeElement) {
|
|
108
|
-
busyElement.restoreFocusElement?.focus();
|
|
109
|
-
}
|
|
110
|
-
delete busyElements[waitComponentId];
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
#focusNextElement(targetElement, shiftKey) {
|
|
116
|
-
const focusable = this.#getFocusableElements();
|
|
117
|
-
// If shift tab, go in the other direction
|
|
118
|
-
const modifier = shiftKey ? -1 : 1;
|
|
119
|
-
// Find the next navigable element that isn't waiting
|
|
120
|
-
const startingIndex = focusable.indexOf(targetElement);
|
|
121
|
-
let curIndex = startingIndex + modifier;
|
|
122
|
-
while (focusable[curIndex] &&
|
|
123
|
-
this.#isElementBusyOrHidden(focusable[curIndex])) {
|
|
124
|
-
curIndex += modifier;
|
|
125
|
-
}
|
|
126
|
-
if (focusable[curIndex] &&
|
|
127
|
-
!this.#isElementBusyOrHidden(focusable[curIndex])) {
|
|
128
|
-
focusable[curIndex].focus();
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
// Try wrapping the navigation
|
|
132
|
-
/* istanbul ignore next */
|
|
133
|
-
/* sanity check */
|
|
134
|
-
curIndex = modifier > 0 ? 0 : focusable.length - 1;
|
|
135
|
-
while (curIndex !== startingIndex &&
|
|
136
|
-
focusable[curIndex] &&
|
|
137
|
-
this.#isElementBusyOrHidden(focusable[curIndex])) {
|
|
138
|
-
/* istanbul ignore next */
|
|
139
|
-
/* sanity check */
|
|
140
|
-
curIndex += modifier;
|
|
141
|
-
}
|
|
142
|
-
/* istanbul ignore else */
|
|
143
|
-
/* sanity check */
|
|
144
|
-
if (focusable[curIndex] &&
|
|
145
|
-
!this.#isElementBusyOrHidden(focusable[curIndex])) {
|
|
146
|
-
focusable[curIndex].focus();
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
// No valid target, wipe focus
|
|
150
|
-
this.#clearDocumentFocus();
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
// clear focusableElements list
|
|
154
|
-
this.#focusableElements = undefined;
|
|
155
|
-
}
|
|
156
|
-
#isShift(event) {
|
|
157
|
-
// Determine if shift+tab was used based on element order
|
|
158
|
-
const elements = this.#getFocusableElements().filter((elem) => !this.#isElementHidden(elem));
|
|
159
|
-
const previousInd = elements.indexOf(event.relatedTarget);
|
|
160
|
-
const currentInd = elements.indexOf(event.target);
|
|
161
|
-
return (previousInd === currentInd + 1 ||
|
|
162
|
-
(previousInd === 0 && currentInd === elements.length - 1) ||
|
|
163
|
-
previousInd > currentInd ||
|
|
164
|
-
!event.relatedTarget);
|
|
165
|
-
}
|
|
166
|
-
#isElementHidden(element) {
|
|
167
|
-
const style = window.getComputedStyle(element);
|
|
168
|
-
return style.display === 'none' || style.visibility === 'hidden';
|
|
169
|
-
}
|
|
170
|
-
#isElementBusyOrHidden(element) {
|
|
171
|
-
if (this.#isElementHidden(element)) {
|
|
172
|
-
return true;
|
|
173
|
-
}
|
|
174
|
-
for (const key of Object.keys(busyElements)) {
|
|
175
|
-
const parentElement = busyElements[key].busyEl;
|
|
176
|
-
if (parentElement && parentElement.contains(element)) {
|
|
177
|
-
return true;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
return false;
|
|
181
|
-
}
|
|
182
|
-
#clearDocumentFocus() {
|
|
183
|
-
const activeElement = document.activeElement;
|
|
184
|
-
/* istanbul ignore else */
|
|
185
|
-
if (activeElement) {
|
|
186
|
-
activeElement.blur();
|
|
187
|
-
}
|
|
188
|
-
document.body.focus();
|
|
189
|
-
}
|
|
190
|
-
#getFocusableElements() {
|
|
191
|
-
// Keep this cached so we can reduce queries
|
|
192
|
-
if (this.#focusableElements) {
|
|
193
|
-
return this.#focusableElements;
|
|
194
|
-
}
|
|
195
|
-
// Select all possible focusable elements
|
|
196
|
-
const focusableElements = 'a[href], ' +
|
|
197
|
-
'area[href], ' +
|
|
198
|
-
"input:not([disabled]):not([tabindex='-1']), " +
|
|
199
|
-
"button:not([disabled]):not([tabindex='-1']), " +
|
|
200
|
-
"select:not([disabled]):not([tabindex='-1']), " +
|
|
201
|
-
"textarea:not([disabled]):not([tabindex='-1']), " +
|
|
202
|
-
'iframe, object, embed, ' +
|
|
203
|
-
"*[tabindex]:not([tabindex='-1']), " +
|
|
204
|
-
'*[contenteditable=true]';
|
|
205
|
-
this.#focusableElements = Array.prototype.filter.call(document.body.querySelectorAll(focusableElements), (element) => {
|
|
206
|
-
return (element.offsetWidth > 0 ||
|
|
207
|
-
element.offsetHeight > 0 ||
|
|
208
|
-
element === document.activeElement);
|
|
209
|
-
});
|
|
210
|
-
return this.#focusableElements;
|
|
211
|
-
}
|
|
212
|
-
#clearListeners() {
|
|
213
|
-
_a.isPageWaitActive = false;
|
|
214
|
-
for (const key of Object.keys(busyElements)) {
|
|
215
|
-
busyElements[key].listener();
|
|
216
|
-
delete busyElements[key];
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyWaitAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
220
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyWaitAdapterService }); }
|
|
221
|
-
}
|
|
222
|
-
_a = SkyWaitAdapterService;
|
|
223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyWaitAdapterService, decorators: [{
|
|
224
|
-
type: Injectable
|
|
225
|
-
}], ctorParameters: () => [{ type: i0.RendererFactory2 }] });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0LWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFVBQVUsR0FJWCxNQUFNLGVBQWUsQ0FBQzs7QUFFdkIsTUFBTSxZQUFZLEdBUWQsRUFBRSxDQUFDO0FBRVAscUVBQXFFO0FBQ3JFLDJEQUEyRDtBQUMzRDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8scUJBQXFCO2FBQ2xCLHFCQUFnQixHQUFHLEtBQUssQUFBUixDQUFTO0lBRXZDLGtCQUFrQixDQUE0QjtJQUM5QyxTQUFTLENBQVk7SUFFckIsWUFBWSxlQUFpQztRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sYUFBYSxDQUFDLE1BQWtCO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFDbEMsVUFBVSxFQUNWLFVBQVUsQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVNLGdCQUFnQixDQUFDLE1BQWtCO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFTSxZQUFZLENBQ2pCLE1BQWtCLEVBQ2xCLFVBQW1CLEVBQ25CLFNBQWtCLEVBQ2xCLGFBQXNCLEVBQ3RCLGVBQXdCO1FBRXhCLE1BQU0sTUFBTSxHQUFHLFVBQVU7WUFDdkIsQ0FBQyxDQUFDLFFB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QUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxlQUFlO1FBQ2IsRUFBcUIsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDL0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDNUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdCLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDOytHQW5SVSxxQkFBcUI7bUhBQXJCLHFCQUFxQjs7OzRGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgUmVuZGVyZXJGYWN0b3J5Mixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IGJ1c3lFbGVtZW50czogUmVjb3JkPFxuICBzdHJpbmcsXG4gIHtcbiAgICBidXN5RWw6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICAgIHJlc3RvcmVGb2N1c0VsZW1lbnQ/OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICByZXN0b3JlRm9jdXNDaGVja0VsZW1lbnQ/OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgfVxuPiA9IHt9O1xuXG4vLyBOZWVkIHRvIGFkZCB0aGUgZm9sbG93aW5nIHRvIGNsYXNzZXMgd2hpY2ggY29udGFpbiBzdGF0aWMgbWV0aG9kcy5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvNjQxXG4vKipcbiAqIEBpbnRlcm5hbFxuICogQGR5bmFtaWNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVdhaXRBZGFwdGVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBzdGF0aWMgaXNQYWdlV2FpdEFjdGl2ZSA9IGZhbHNlO1xuXG4gICNmb2N1c2FibGVFbGVtZW50czogSFRNTEVsZW1lbnRbXSB8IHVuZGVmaW5lZDtcbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IocmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyKSB7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCBudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNjbGVhckxpc3RlbmVycygpO1xuICB9XG5cbiAgcHVibGljIHNldFdhaXRCb3VuZHMod2FpdEVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB3YWl0RWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LFxuICAgICAgJ3Bvc2l0aW9uJyxcbiAgICAgICdyZWxhdGl2ZScsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVXYWl0Qm91bmRzKHdhaXRFbDogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZVN0eWxlKHdhaXRFbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsICdwb3NpdGlvbicpO1xuICB9XG5cbiAgcHVibGljIHNldEJ1c3lTdGF0ZShcbiAgICB3YWl0RWw6IEVsZW1lbnRSZWYsXG4gICAgaXNGdWxsUGFnZTogYm9vbGVhbixcbiAgICBpc1dhaXRpbmc6IGJvb2xlYW4sXG4gICAgaXNOb25CbG9ja2luZzogYm9vbGVhbixcbiAgICB3YWl0Q29tcG9uZW50SWQ/OiBzdHJpbmcsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGJ1c3lFbCA9IGlzRnVsbFBhZ2VcbiAgICAgID8gZG9jdW1lbnQuYm9keVxuICAgICAgOiB3YWl0RWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgaWYgKCFpc05vbkJsb2NraW5nKSB7XG4gICAgICBpZiAoaXNXYWl0aW5nKSB7XG4gICAgICAgIGxldCByZXN0b3JlRm9jdXNFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IHJlc3RvcmVGb2N1c0NoZWNrRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuI3JlbmRlcmVyLnNldEF0dHJpYnV0ZShidXN5RWwsICdhcmlhLWJ1c3knLCAndHJ1ZScpO1xuXG4gICAgICAgIC8vIFJlbW92ZSBmb2N1cyBmcm9tIHBhZ2Ugd2hlbiBmdWxsIHBhZ2UgYmxvY2tpbmcgd2FpdFxuICAgICAgICBpZiAoaXNGdWxsUGFnZSB8fCBidXN5RWwuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgICAgICAgcmVzdG9yZUZvY3VzRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuI2NsZWFyRG9jdW1lbnRGb2N1cygpO1xuICAgICAgICAgIHJlc3RvcmVGb2N1c0NoZWNrRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNGdWxsUGFnZSkge1xuICAgICAgICAgIFNreVdhaXRBZGFwdGVyU2VydmljZS5pc1BhZ2VXYWl0QWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICBjb25zdCBlbmRMaXN0ZW5lckZ1bmMgPSB0aGlzLiNyZW5kZXJlci5saXN0ZW4oXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgICAgICAgJ2tleWRvd24nLFxuICAgICAgICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAndGFiJykge1xuICAgICAgICAgICAgICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLiNjbGVhckRvY3VtZW50Rm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICh3YWl0Q29tcG9uZW50SWQpIHtcbiAgICAgICAgICAgIGJ1c3lFbGVtZW50c1t3YWl0Q29tcG9uZW50SWRdID0ge1xuICAgICAgICAgICAgICBsaXN0ZW5lcjogZW5kTGlzdGVuZXJGdW5jLFxuICAgICAgICAgICAgICBidXN5RWw6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzRWxlbWVudCxcbiAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzQ2hlY2tFbGVtZW50LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZW5kTGlzdGVuZXJGdW5jID0gdGhpcy4jcmVuZGVyZXIubGlzdGVuKFxuICAgICAgICAgICAgYnVzeUVsLFxuICAgICAgICAgICAgJ2ZvY3VzaW4nLFxuICAgICAgICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICAgIGlmICghaXNOb25CbG9ja2luZykge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoU2t5V2FpdEFkYXB0ZXJTZXJ2aWNlLmlzUGFnZVdhaXRBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuI2NsZWFyRG9jdW1lbnRGb2N1cygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBQcm9wYWdhdGUgdGFiIG5hdmlnYXRpb24gaWYgYXR0ZW1wdGVkIGludG8gd2FpdGVkIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNmb2N1c05leHRFbGVtZW50KHRhcmdldCwgdGhpcy4jaXNTaGlmdChldmVudCkpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHdhaXRDb21wb25lbnRJZCkge1xuICAgICAgICAgICAgYnVzeUVsZW1lbnRzW3dhaXRDb21wb25lbnRJZF0gPSB7XG4gICAgICAgICAgICAgIGxpc3RlbmVyOiBlbmRMaXN0ZW5lckZ1bmMsXG4gICAgICAgICAgICAgIGJ1c3lFbCxcbiAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzRWxlbWVudCxcbiAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzQ2hlY2tFbGVtZW50LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShidXN5RWwsICdhcmlhLWJ1c3knKTtcblxuICAgICAgICBpZiAoaXNGdWxsUGFnZSkge1xuICAgICAgICAgIFNreVdhaXRBZGFwdGVyU2VydmljZS5pc1BhZ2VXYWl0QWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod2FpdENvbXBvbmVudElkICYmIHdhaXRDb21wb25lbnRJZCBpbiBidXN5RWxlbWVudHMpIHtcbiAgICAgICAgICBjb25zdCBidXN5RWxlbWVudCA9IGJ1c3lFbGVtZW50c1t3YWl0Q29tcG9uZW50SWRdO1xuXG4gICAgICAgICAgYnVzeUVsZW1lbnQubGlzdGVuZXIoKTtcblxuICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcmVzdG9yZSBmb2N1cyBlbGVtZW50IGFuZCB0aGUgZm9jdXMgaGFzIG5vdCBtb3ZlZCwgcmVzdG9yZSBmb2N1cy5cbiAgICAgICAgICBpZiAoYnVzeUVsZW1lbnQucmVzdG9yZUZvY3VzQ2hlY2tFbGVtZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBidXN5RWxlbWVudC5yZXN0b3JlRm9jdXNFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRlbGV0ZSBidXN5RWxlbWVudHNbd2FpdENvbXBvbmVudElkXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNmb2N1c05leHRFbGVtZW50KHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBzaGlmdEtleTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGZvY3VzYWJsZSA9IHRoaXMuI2dldEZvY3VzYWJsZUVsZW1lbnRzKCk7XG5cbiAgICAvLyBJZiBzaGlmdCB0YWIsIGdvIGluIHRoZSBvdGhlciBkaXJlY3Rpb25cbiAgICBjb25zdCBtb2RpZmllciA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xuXG4gICAgLy8gRmluZCB0aGUgbmV4dCBuYXZpZ2FibGUgZWxlbWVudCB0aGF0IGlzbid0IHdhaXRpbmdcbiAgICBjb25zdCBzdGFydGluZ0luZGV4ID0gZm9jdXNhYmxlLmluZGV4T2YodGFyZ2V0RWxlbWVudCk7XG4gICAgbGV0IGN1ckluZGV4ID0gc3RhcnRpbmdJbmRleCArIG1vZGlmaWVyO1xuICAgIHdoaWxlIChcbiAgICAgIGZvY3VzYWJsZVtjdXJJbmRleF0gJiZcbiAgICAgIHRoaXMuI2lzRWxlbWVudEJ1c3lPckhpZGRlbihmb2N1c2FibGVbY3VySW5kZXhdKVxuICAgICkge1xuICAgICAgY3VySW5kZXggKz0gbW9kaWZpZXI7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZm9jdXNhYmxlW2N1ckluZGV4XSAmJlxuICAgICAgIXRoaXMuI2lzRWxlbWVudEJ1c3lPckhpZGRlbihmb2N1c2FibGVbY3VySW5kZXhdKVxuICAgICkge1xuICAgICAgZm9jdXNhYmxlW2N1ckluZGV4XS5mb2N1cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUcnkgd3JhcHBpbmcgdGhlIG5hdmlnYXRpb25cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgIGN1ckluZGV4ID0gbW9kaWZpZXIgPiAwID8gMCA6IGZvY3VzYWJsZS5sZW5ndGggLSAxO1xuICAgICAgd2hpbGUgKFxuICAgICAgICBjdXJJbmRleCAhPT0gc3RhcnRpbmdJbmRleCAmJlxuICAgICAgICBmb2N1c2FibGVbY3VySW5kZXhdICYmXG4gICAgICAgIHRoaXMuI2lzRWxlbWVudEJ1c3lPckhpZGRlbihmb2N1c2FibGVbY3VySW5kZXhdKVxuICAgICAgKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgICBjdXJJbmRleCArPSBtb2RpZmllcjtcbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgaWYgKFxuICAgICAgICBmb2N1c2FibGVbY3VySW5kZXhdICYmXG4gICAgICAgICF0aGlzLiNpc0VsZW1lbnRCdXN5T3JIaWRkZW4oZm9jdXNhYmxlW2N1ckluZGV4XSlcbiAgICAgICkge1xuICAgICAgICBmb2N1c2FibGVbY3VySW5kZXhdLmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBObyB2YWxpZCB0YXJnZXQsIHdpcGUgZm9jdXNcbiAgICAgICAgdGhpcy4jY2xlYXJEb2N1bWVudEZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2xlYXIgZm9jdXNhYmxlRWxlbWVudHMgbGlzdFxuICAgIHRoaXMuI2ZvY3VzYWJsZUVsZW1lbnRzID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgI2lzU2hpZnQoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgLy8gRGV0ZXJtaW5lIGlmIHNoaWZ0K3RhYiB3YXMgdXNlZCBiYXNlZCBvbiBlbGVtZW50IG9yZGVyXG4gICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLiNnZXRGb2N1c2FibGVFbGVtZW50cygpLmZpbHRlcihcbiAgICAgIChlbGVtKSA9PiAhdGhpcy4jaXNFbGVtZW50SGlkZGVuKGVsZW0pLFxuICAgICk7XG5cbiAgICBjb25zdCBwcmV2aW91c0luZCA9IGVsZW1lbnRzLmluZGV4T2YoKGV2ZW50IGFzIGFueSkucmVsYXRlZFRhcmdldCk7XG4gICAgY29uc3QgY3VycmVudEluZCA9IGVsZW1lbnRzLmluZGV4T2YoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcblxuICAgIHJldHVybiAoXG4gICAgICBwcmV2aW91c0luZCA9PT0gY3VycmVudEluZCArIDEgfHxcbiAgICAgIChwcmV2aW91c0luZCA9PT0gMCAmJiBjdXJyZW50SW5kID09PSBlbGVtZW50cy5sZW5ndGggLSAxKSB8fFxuICAgICAgcHJldmlvdXNJbmQgPiBjdXJyZW50SW5kIHx8XG4gICAgICAhKGV2ZW50IGFzIGFueSkucmVsYXRlZFRhcmdldFxuICAgICk7XG4gIH1cblxuICAjaXNFbGVtZW50SGlkZGVuKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICByZXR1cm4gc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnIHx8IHN0eWxlLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nO1xuICB9XG5cbiAgI2lzRWxlbWVudEJ1c3lPckhpZGRlbihlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLiNpc0VsZW1lbnRIaWRkZW4oZWxlbWVudCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGJ1c3lFbGVtZW50cykpIHtcbiAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBidXN5RWxlbWVudHNba2V5XS5idXN5RWw7XG4gICAgICBpZiAocGFyZW50RWxlbWVudCAmJiBwYXJlbnRFbGVtZW50LmNvbnRhaW5zKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAjY2xlYXJEb2N1bWVudEZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgYWN0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYm9keS5mb2N1cygpO1xuICB9XG5cbiAgI2dldEZvY3VzYWJsZUVsZW1lbnRzKCk6IEhUTUxFbGVtZW50W10ge1xuICAgIC8vIEtlZXAgdGhpcyBjYWNoZWQgc28gd2UgY2FuIHJlZHVjZSBxdWVyaWVzXG4gICAgaWYgKHRoaXMuI2ZvY3VzYWJsZUVsZW1lbnRzKSB7XG4gICAgICByZXR1cm4gdGhpcy4jZm9jdXNhYmxlRWxlbWVudHM7XG4gICAgfVxuXG4gICAgLy8gU2VsZWN0IGFsbCBwb3NzaWJsZSBmb2N1c2FibGUgZWxlbWVudHNcbiAgICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9XG4gICAgICAnYVtocmVmXSwgJyArXG4gICAgICAnYXJlYVtocmVmXSwgJyArXG4gICAgICBcImlucHV0Om5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmluZGV4PSctMSddKSwgXCIgK1xuICAgICAgXCJidXR0b246bm90KFtkaXNhYmxlZF0pOm5vdChbdGFiaW5kZXg9Jy0xJ10pLCBcIiArXG4gICAgICBcInNlbGVjdDpub3QoW2Rpc2FibGVkXSk6bm90KFt0YWJpbmRleD0nLTEnXSksIFwiICtcbiAgICAgIFwidGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pOm5vdChbdGFiaW5kZXg9Jy0xJ10pLCBcIiArXG4gICAgICAnaWZyYW1lLCBvYmplY3QsIGVtYmVkLCAnICtcbiAgICAgIFwiKlt0YWJpbmRleF06bm90KFt0YWJpbmRleD0nLTEnXSksIFwiICtcbiAgICAgICcqW2NvbnRlbnRlZGl0YWJsZT10cnVlXSc7XG5cbiAgICB0aGlzLiNmb2N1c2FibGVFbGVtZW50cyA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChcbiAgICAgIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbChmb2N1c2FibGVFbGVtZW50cyksXG4gICAgICAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBlbGVtZW50Lm9mZnNldFdpZHRoID4gMCB8fFxuICAgICAgICAgIGVsZW1lbnQub2Zmc2V0SGVpZ2h0ID4gMCB8fFxuICAgICAgICAgIGVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy4jZm9jdXNhYmxlRWxlbWVudHM7XG4gIH1cblxuICAjY2xlYXJMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgU2t5V2FpdEFkYXB0ZXJTZXJ2aWNlLmlzUGFnZVdhaXRBY3RpdmUgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhidXN5RWxlbWVudHMpKSB7XG4gICAgICBidXN5RWxlbWVudHNba2V5XS5saXN0ZW5lcigpO1xuICAgICAgZGVsZXRlIGJ1c3lFbGVtZW50c1trZXldO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { SkyWaitComponent } from './wait.component';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* @internal
|
|
6
|
-
*/
|
|
7
|
-
export class SkyWaitPageComponent {
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyWaitPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SkyWaitPageComponent, isStandalone: true, selector: "sky-wait-page", inputs: { hasBlockingWait: "hasBlockingWait", hasNonBlockingWait: "hasNonBlockingWait" }, ngImport: i0, template: "<div class=\"sky-wait-page\">\n <sky-wait\n data-sky-id=\"page-wait-non-blocking\"\n [isFullPage]=\"true\"\n [isNonBlocking]=\"true\"\n [isWaiting]=\"hasNonBlockingWait\"\n />\n <sky-wait\n data-sky-id=\"page-wait-blocking\"\n [isFullPage]=\"true\"\n [isWaiting]=\"hasBlockingWait\"\n />\n</div>\n", styles: [".sky-wait-page ::ng-deep .sky-wait-mask-loading-fixed{z-index:2000}\n"], dependencies: [{ kind: "component", type: SkyWaitComponent, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking", "screenReaderCompletedText"] }] }); }
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyWaitPageComponent, decorators: [{
|
|
12
|
-
type: Component,
|
|
13
|
-
args: [{ standalone: true, selector: 'sky-wait-page', imports: [SkyWaitComponent], template: "<div class=\"sky-wait-page\">\n <sky-wait\n data-sky-id=\"page-wait-non-blocking\"\n [isFullPage]=\"true\"\n [isNonBlocking]=\"true\"\n [isWaiting]=\"hasNonBlockingWait\"\n />\n <sky-wait\n data-sky-id=\"page-wait-blocking\"\n [isFullPage]=\"true\"\n [isWaiting]=\"hasBlockingWait\"\n />\n</div>\n", styles: [".sky-wait-page ::ng-deep .sky-wait-mask-loading-fixed{z-index:2000}\n"] }]
|
|
14
|
-
}], propDecorators: { hasBlockingWait: [{
|
|
15
|
-
type: Input
|
|
16
|
-
}], hasNonBlockingWait: [{
|
|
17
|
-
type: Input
|
|
18
|
-
}] } });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbmRpY2F0b3JzL3NyYy9saWIvbW9kdWxlcy93YWl0L3dhaXQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0LXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRXBEOztHQUVHO0FBUUgsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO21HQUFwQixvQkFBb0IsbUtDZGpDLG9VQWFBLCtIRERZLGdCQUFnQjs7NEZBRWYsb0JBQW9CO2tCQVBoQyxTQUFTO2lDQUNJLElBQUksWUFDTixlQUFlLFdBR2hCLENBQUMsZ0JBQWdCLENBQUM7OEJBSXBCLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lXYWl0Q29tcG9uZW50IH0gZnJvbSAnLi93YWl0LmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3NreS13YWl0LXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2FpdC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2FpdC1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtTa3lXYWl0Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5V2FpdFBhZ2VDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGFzQmxvY2tpbmdXYWl0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoYXNOb25CbG9ja2luZ1dhaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LXdhaXQtcGFnZVwiPlxuICA8c2t5LXdhaXRcbiAgICBkYXRhLXNreS1pZD1cInBhZ2Utd2FpdC1ub24tYmxvY2tpbmdcIlxuICAgIFtpc0Z1bGxQYWdlXT1cInRydWVcIlxuICAgIFtpc05vbkJsb2NraW5nXT1cInRydWVcIlxuICAgIFtpc1dhaXRpbmddPVwiaGFzTm9uQmxvY2tpbmdXYWl0XCJcbiAgLz5cbiAgPHNreS13YWl0XG4gICAgZGF0YS1za3ktaWQ9XCJwYWdlLXdhaXQtYmxvY2tpbmdcIlxuICAgIFtpc0Z1bGxQYWdlXT1cInRydWVcIlxuICAgIFtpc1dhaXRpbmddPVwiaGFzQmxvY2tpbmdXYWl0XCJcbiAgLz5cbjwvZGl2PlxuIl19
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, ElementRef, Input, inject, } from '@angular/core';
|
|
3
|
-
import { SkyLiveAnnouncerService } from '@skyux/core';
|
|
4
|
-
import { SkyLibResourcesService } from '@skyux/i18n';
|
|
5
|
-
import { BehaviorSubject, Subject } from 'rxjs';
|
|
6
|
-
import { take, takeUntil } from 'rxjs/operators';
|
|
7
|
-
import { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';
|
|
8
|
-
import { SkyWaitAdapterService } from './wait-adapter.service';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/common";
|
|
11
|
-
let nextId = 0;
|
|
12
|
-
export class SkyWaitComponent {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.ariaLabelStream = new BehaviorSubject('');
|
|
15
|
-
this.ariaLiveText = '';
|
|
16
|
-
this.screenReaderCompletedTextStream = new BehaviorSubject('');
|
|
17
|
-
this.#id = `sky-wait-${++nextId}`;
|
|
18
|
-
this.#ngUnsubscribe = new Subject();
|
|
19
|
-
this.#adapterService = inject(SkyWaitAdapterService);
|
|
20
|
-
this.#elRef = inject(ElementRef);
|
|
21
|
-
this.#liveAnnouncer = inject(SkyLiveAnnouncerService);
|
|
22
|
-
this.#resourceSvc = inject(SkyLibResourcesService);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* The ARIA label for the wait icon.
|
|
26
|
-
* This sets the icon's `aria-label` attribute to provide a text equivalent for screen readers
|
|
27
|
-
* [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) when an element or page loads and when users tab to a wait icon.
|
|
28
|
-
* The default value varies based on whether the wait is for an element or a page and whether it is a blocking wait. For example, the default for a page-level blocking wait is "Page loading. Please wait."
|
|
29
|
-
* For element-level waits, we recommend that consumers overwrite the default to describe the specific element.
|
|
30
|
-
* "For more information, see the Design tab and the [WAI-ARIA `aria-label` definition](https://www.w3.org/TR/wai-aria/#aria-label).
|
|
31
|
-
*/
|
|
32
|
-
set ariaLabel(value) {
|
|
33
|
-
this.#customAriaLabel = value;
|
|
34
|
-
this.#publishAriaLabel();
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* When set to `true`, wait indication appears on the parent element of the `sky-wait` component.
|
|
38
|
-
*/
|
|
39
|
-
set isWaiting(value) {
|
|
40
|
-
if (!this.isFullPage) {
|
|
41
|
-
if (value) {
|
|
42
|
-
this.#adapterService.setWaitBounds(this.#elRef);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
this.#adapterService.removeWaitBounds(this.#elRef);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
this.#adapterService.setBusyState(this.#elRef, !!this.isFullPage, !!value, !!this.isNonBlocking, this.#id);
|
|
49
|
-
if (value) {
|
|
50
|
-
this.#liveAnnouncer.announce(this.ariaLabelStream.getValue());
|
|
51
|
-
}
|
|
52
|
-
else if (this.#_isWaiting) {
|
|
53
|
-
// NOTE: This should only happen if the wait was previously waiting and no longer is waiting.
|
|
54
|
-
this.#liveAnnouncer.announce(this.screenReaderCompletedTextStream.getValue());
|
|
55
|
-
}
|
|
56
|
-
this.#_isWaiting = value;
|
|
57
|
-
}
|
|
58
|
-
get isWaiting() {
|
|
59
|
-
return this.#_isWaiting;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* When set to `true`, wait indication appears on the page level instead of the
|
|
63
|
-
* parent element level. We recommend that you use the `beginBlockingPageWait` or
|
|
64
|
-
* `beginNonBlockingPageWait` functions of the `SkyWaitService` instead of setting this
|
|
65
|
-
* on the component level.
|
|
66
|
-
* @default false
|
|
67
|
-
*/
|
|
68
|
-
set isFullPage(value) {
|
|
69
|
-
/* istanbul ignore else: untestable */
|
|
70
|
-
if (value) {
|
|
71
|
-
this.#adapterService.removeWaitBounds(this.#elRef);
|
|
72
|
-
}
|
|
73
|
-
else if (this.isWaiting) {
|
|
74
|
-
this.#adapterService.setWaitBounds(this.#elRef);
|
|
75
|
-
}
|
|
76
|
-
this.#_isFullPage = value;
|
|
77
|
-
this.#publishAriaLabel();
|
|
78
|
-
this.#publishScreenReaderCompletedText();
|
|
79
|
-
}
|
|
80
|
-
get isFullPage() {
|
|
81
|
-
return this.#_isFullPage;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* When set to `true`, wait indication appears in the bottom left corner of the element
|
|
85
|
-
* instead of hiding the entire parent element.
|
|
86
|
-
* @default false
|
|
87
|
-
*/
|
|
88
|
-
set isNonBlocking(value) {
|
|
89
|
-
this.#_isNonBlocking = value;
|
|
90
|
-
this.#publishAriaLabel();
|
|
91
|
-
}
|
|
92
|
-
get isNonBlocking() {
|
|
93
|
-
return this.#_isNonBlocking;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Screen reader text [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) when the wait toggles off.
|
|
97
|
-
* The default varies based on whether the wait is for an element or a page.
|
|
98
|
-
* For example, the default for a page-level wait is "Page loading complete."
|
|
99
|
-
* For element-level waits, we recommend that consumers overwrite the default to describe the specific element.
|
|
100
|
-
* For more information, see the Design tab and the [WCAG documentation on status messages](https://www.w3.org/WAI/WCAG21/Understanding/status-messages.html).
|
|
101
|
-
*/
|
|
102
|
-
set screenReaderCompletedText(value) {
|
|
103
|
-
this.#customScreenReaderCompletedText = value;
|
|
104
|
-
this.#publishScreenReaderCompletedText();
|
|
105
|
-
}
|
|
106
|
-
#customAriaLabel;
|
|
107
|
-
#customScreenReaderCompletedText;
|
|
108
|
-
#id;
|
|
109
|
-
#ngUnsubscribe;
|
|
110
|
-
#_isFullPage;
|
|
111
|
-
#_isNonBlocking;
|
|
112
|
-
#_isWaiting;
|
|
113
|
-
#adapterService;
|
|
114
|
-
#elRef;
|
|
115
|
-
#liveAnnouncer;
|
|
116
|
-
#resourceSvc;
|
|
117
|
-
ngOnInit() {
|
|
118
|
-
this.#publishAriaLabel();
|
|
119
|
-
this.#publishScreenReaderCompletedText();
|
|
120
|
-
}
|
|
121
|
-
ngOnDestroy() {
|
|
122
|
-
this.#ngUnsubscribe.next();
|
|
123
|
-
this.#ngUnsubscribe.complete();
|
|
124
|
-
}
|
|
125
|
-
#publishAriaLabel() {
|
|
126
|
-
if (this.#customAriaLabel) {
|
|
127
|
-
this.ariaLabelStream.next(this.#customAriaLabel);
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
const type = this.isFullPage ? '_page' : '';
|
|
131
|
-
const blocking = this.isNonBlocking ? '' : '_blocking';
|
|
132
|
-
const key = `skyux_wait${type}${blocking}_aria_alt_text`;
|
|
133
|
-
this.#resourceSvc
|
|
134
|
-
.getString(key)
|
|
135
|
-
.pipe(take(1), takeUntil(this.#ngUnsubscribe))
|
|
136
|
-
.subscribe((value) => {
|
|
137
|
-
this.ariaLabelStream.next(value);
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
#publishScreenReaderCompletedText() {
|
|
142
|
-
if (this.#customScreenReaderCompletedText) {
|
|
143
|
-
this.screenReaderCompletedTextStream.next(this.#customScreenReaderCompletedText);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
const type = this.isFullPage ? '_page' : '';
|
|
147
|
-
const key = `skyux_wait${type}_screen_reader_completed_text`;
|
|
148
|
-
this.#resourceSvc
|
|
149
|
-
.getString(key)
|
|
150
|
-
.pipe(take(1), takeUntil(this.#ngUnsubscribe))
|
|
151
|
-
.subscribe((value) => {
|
|
152
|
-
this.screenReaderCompletedTextStream.next(value);
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyWaitComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
157
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SkyWaitComponent, isStandalone: true, selector: "sky-wait", inputs: { ariaLabel: "ariaLabel", isWaiting: "isWaiting", isFullPage: "isFullPage", isNonBlocking: "isNonBlocking", screenReaderCompletedText: "screenReaderCompletedText" }, providers: [SkyWaitAdapterService], ngImport: i0, template: "<div\n class=\"sky-wait-container\"\n [ngClass]=\"{\n 'sky-wait-full-page': isFullPage,\n 'sky-wait-non-blocking': isNonBlocking\n }\"\n>\n @if (isWaiting) {\n <div\n class=\"sky-wait-mask\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabelStream | async\"\n [ngClass]=\"{\n 'sky-wait-mask-loading-fixed': isFullPage,\n 'sky-wait-mask-loading-non-blocking': isNonBlocking,\n 'sky-wait-mask-loading-blocking': !isNonBlocking\n }\"\n >\n <div class=\"sky-wait\">\n <div class=\"sky-wait-double-bounce1\"></div>\n <div class=\"sky-wait-double-bounce2\"></div>\n </div>\n </div>\n }\n</div>\n", styles: [".sky-wait-mask-loading-blocking{margin:auto;position:absolute;inset:0;background-color:#ffffffb3;z-index:1000}.sky-wait-mask-loading-fixed{position:fixed}.sky-wait{width:50px;height:50px;margin-top:-25px;margin-left:-25px;position:absolute;top:50%;left:50%}.sky-wait-mask-loading-non-blocking{bottom:0}.sky-wait-mask-loading-non-blocking .sky-wait{inset:auto auto 0 0;margin-left:auto;margin-right:auto}.sky-wait-double-bounce1,.sky-wait-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#72bf44;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:sk-bounce 2s infinite ease-in-out;animation:sk-bounce 2s infinite ease-in-out}.sky-wait-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-bounce{0%,to{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes sk-bounce{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.sky-wait-container.sky-wait-active{position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: SkyIndicatorsResourcesModule }] }); }
|
|
158
|
-
}
|
|
159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyWaitComponent, decorators: [{
|
|
160
|
-
type: Component,
|
|
161
|
-
args: [{ standalone: true, selector: 'sky-wait', providers: [SkyWaitAdapterService], imports: [CommonModule, SkyIndicatorsResourcesModule], template: "<div\n class=\"sky-wait-container\"\n [ngClass]=\"{\n 'sky-wait-full-page': isFullPage,\n 'sky-wait-non-blocking': isNonBlocking\n }\"\n>\n @if (isWaiting) {\n <div\n class=\"sky-wait-mask\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabelStream | async\"\n [ngClass]=\"{\n 'sky-wait-mask-loading-fixed': isFullPage,\n 'sky-wait-mask-loading-non-blocking': isNonBlocking,\n 'sky-wait-mask-loading-blocking': !isNonBlocking\n }\"\n >\n <div class=\"sky-wait\">\n <div class=\"sky-wait-double-bounce1\"></div>\n <div class=\"sky-wait-double-bounce2\"></div>\n </div>\n </div>\n }\n</div>\n", styles: [".sky-wait-mask-loading-blocking{margin:auto;position:absolute;inset:0;background-color:#ffffffb3;z-index:1000}.sky-wait-mask-loading-fixed{position:fixed}.sky-wait{width:50px;height:50px;margin-top:-25px;margin-left:-25px;position:absolute;top:50%;left:50%}.sky-wait-mask-loading-non-blocking{bottom:0}.sky-wait-mask-loading-non-blocking .sky-wait{inset:auto auto 0 0;margin-left:auto;margin-right:auto}.sky-wait-double-bounce1,.sky-wait-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#72bf44;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:sk-bounce 2s infinite ease-in-out;animation:sk-bounce 2s infinite ease-in-out}.sky-wait-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-bounce{0%,to{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes sk-bounce{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.sky-wait-container.sky-wait-active{position:relative}\n"] }]
|
|
162
|
-
}], propDecorators: { ariaLabel: [{
|
|
163
|
-
type: Input
|
|
164
|
-
}], isWaiting: [{
|
|
165
|
-
type: Input
|
|
166
|
-
}], isFullPage: [{
|
|
167
|
-
type: Input
|
|
168
|
-
}], isNonBlocking: [{
|
|
169
|
-
type: Input
|
|
170
|
-
}], screenReaderCompletedText: [{
|
|
171
|
-
type: Input
|
|
172
|
-
}] } });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbmRpY2F0b3JzL3NyYy9saWIvbW9kdWxlcy93YWl0L3dhaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFFL0QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBVWYsTUFBTSxPQUFPLGdCQUFnQjtJQVI3QjtRQWlIUyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLG9DQUErQixHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBSXpFLFFBQUcsR0FBRyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDN0Is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VTtzQkFEcEIsS0FBSztnQkF3QkssYUFBYTtzQkFEdkIsS0FBSztnQkFrQksseUJBQXlCO3NCQURuQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TGl2ZUFubm91bmNlclNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5SW5kaWNhdG9yc1Jlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktaW5kaWNhdG9ycy1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5V2FpdEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi93YWl0LWFkYXB0ZXIuc2VydmljZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdza3ktd2FpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93YWl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2FpdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lXYWl0QWRhcHRlclNlcnZpY2VdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa3lJbmRpY2F0b3JzUmVzb3VyY2VzTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5V2FpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgd2FpdCBpY29uLlxuICAgKiBUaGlzIHNldHMgdGhlIGljb24ncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkgd2hlbiBhbiBlbGVtZW50IG9yIHBhZ2UgbG9hZHMgYW5kIHdoZW4gdXNlcnMgdGFiIHRvIGEgd2FpdCBpY29uLlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSB2YXJpZXMgYmFzZWQgb24gd2hldGhlciB0aGUgd2FpdCBpcyBmb3IgYW4gZWxlbWVudCBvciBhIHBhZ2UgYW5kIHdoZXRoZXIgaXQgaXMgYSBibG9ja2luZyB3YWl0LiBGb3IgZXhhbXBsZSwgdGhlIGRlZmF1bHQgZm9yIGEgcGFnZS1sZXZlbCBibG9ja2luZyB3YWl0IGlzIFwiUGFnZSBsb2FkaW5nLiBQbGVhc2Ugd2FpdC5cIlxuICAgKiBGb3IgZWxlbWVudC1sZXZlbCB3YWl0cywgd2UgcmVjb21tZW5kIHRoYXQgY29uc3VtZXJzIG92ZXJ3cml0ZSB0aGUgZGVmYXVsdCB0byBkZXNjcmliZSB0aGUgc3BlY2lmaWMgZWxlbWVudC5cbiAgICogXCJGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBEZXNpZ24gdGFiIGFuZCB0aGUgW1dBSS1BUklBIGBhcmlhLWxhYmVsYCBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhTGFiZWwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2N1c3RvbUFyaWFMYWJlbCA9IHZhbHVlO1xuICAgIHRoaXMuI3B1Ymxpc2hBcmlhTGFiZWwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHdhaXQgaW5kaWNhdGlvbiBhcHBlYXJzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCBvZiB0aGUgYHNreS13YWl0YCBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlzV2FpdGluZyh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdGhpcy5pc0Z1bGxQYWdlKSB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0V2FpdEJvdW5kcyh0aGlzLiNlbFJlZik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5yZW1vdmVXYWl0Qm91bmRzKHRoaXMuI2VsUmVmKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRCdXN5U3RhdGUoXG4gICAgICB0aGlzLiNlbFJlZixcbiAgICAgICEhdGhpcy5pc0Z1bGxQYWdlLFxuICAgICAgISF2YWx1ZSxcbiAgICAgICEhdGhpcy5pc05vbkJsb2NraW5nLFxuICAgICAgdGhpcy4jaWQsXG4gICAgKTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbGl2ZUFubm91bmNlci5hbm5vdW5jZSh0aGlzLmFyaWFMYWJlbFN0cmVhbS5nZXRWYWx1ZSgpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuI19pc1dhaXRpbmcpIHtcbiAgICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIGlmIHRoZSB3YWl0IHdhcyBwcmV2aW91c2x5IHdhaXRpbmcgYW5kIG5vIGxvbmdlciBpcyB3YWl0aW5nLlxuICAgICAgdGhpcy4jbGl2ZUFubm91bmNlci5hbm5vdW5jZShcbiAgICAgICAgdGhpcy5zY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0U3RyZWFtLmdldFZhbHVlKCksXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuI19pc1dhaXRpbmcgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNXYWl0aW5nKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfaXNXYWl0aW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIGB0cnVlYCwgd2FpdCBpbmRpY2F0aW9uIGFwcGVhcnMgb24gdGhlIHBhZ2UgbGV2ZWwgaW5zdGVhZCBvZiB0aGVcbiAgICogcGFyZW50IGVsZW1lbnQgbGV2ZWwuIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgdGhlIGBiZWdpbkJsb2NraW5nUGFnZVdhaXRgIG9yXG4gICAqIGBiZWdpbk5vbkJsb2NraW5nUGFnZVdhaXRgIGZ1bmN0aW9ucyBvZiB0aGUgYFNreVdhaXRTZXJ2aWNlYCBpbnN0ZWFkIG9mIHNldHRpbmcgdGhpc1xuICAgKiBvbiB0aGUgY29tcG9uZW50IGxldmVsLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpc0Z1bGxQYWdlKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2U6IHVudGVzdGFibGUgKi9cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnJlbW92ZVdhaXRCb3VuZHModGhpcy4jZWxSZWYpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1dhaXRpbmcpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldFdhaXRCb3VuZHModGhpcy4jZWxSZWYpO1xuICAgIH1cblxuICAgIHRoaXMuI19pc0Z1bGxQYWdlID0gdmFsdWU7XG4gICAgdGhpcy4jcHVibGlzaEFyaWFMYWJlbCgpO1xuICAgIHRoaXMuI3B1Ymxpc2hTY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRnVsbFBhZ2UoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19pc0Z1bGxQYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIGB0cnVlYCwgd2FpdCBpbmRpY2F0aW9uIGFwcGVhcnMgaW4gdGhlIGJvdHRvbSBsZWZ0IGNvcm5lciBvZiB0aGUgZWxlbWVudFxuICAgKiBpbnN0ZWFkIG9mIGhpZGluZyB0aGUgZW50aXJlIHBhcmVudCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpc05vbkJsb2NraW5nKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2lzTm9uQmxvY2tpbmcgPSB2YWx1ZTtcbiAgICB0aGlzLiNwdWJsaXNoQXJpYUxhYmVsKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTm9uQmxvY2tpbmcoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19pc05vbkJsb2NraW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjcmVlbiByZWFkZXIgdGV4dCBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpIHdoZW4gdGhlIHdhaXQgdG9nZ2xlcyBvZmYuXG4gICAqICBUaGUgZGVmYXVsdCB2YXJpZXMgYmFzZWQgb24gd2hldGhlciB0aGUgd2FpdCBpcyBmb3IgYW4gZWxlbWVudCBvciBhIHBhZ2UuXG4gICAqIEZvciBleGFtcGxlLCB0aGUgZGVmYXVsdCBmb3IgYSBwYWdlLWxldmVsIHdhaXQgaXMgXCJQYWdlIGxvYWRpbmcgY29tcGxldGUuXCJcbiAgICogRm9yIGVsZW1lbnQtbGV2ZWwgd2FpdHMsIHdlIHJlY29tbWVuZCB0aGF0IGNvbnN1bWVycyBvdmVyd3JpdGUgdGhlIGRlZmF1bHQgdG8gZGVzY3JpYmUgdGhlIHNwZWNpZmljIGVsZW1lbnQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIERlc2lnbiB0YWIgYW5kIHRoZSBbV0NBRyBkb2N1bWVudGF0aW9uIG9uIHN0YXR1cyBtZXNzYWdlc10oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9XQ0FHMjEvVW5kZXJzdGFuZGluZy9zdGF0dXMtbWVzc2FnZXMuaHRtbCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNjcmVlblJlYWRlckNvbXBsZXRlZFRleHQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2N1c3RvbVNjcmVlblJlYWRlckNvbXBsZXRlZFRleHQgPSB2YWx1ZTtcbiAgICB0aGlzLiNwdWJsaXNoU2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dCgpO1xuICB9XG5cbiAgcHVibGljIGFyaWFMYWJlbFN0cmVhbSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHB1YmxpYyBhcmlhTGl2ZVRleHQgPSAnJztcbiAgcHVibGljIHNjcmVlblJlYWRlckNvbXBsZXRlZFRleHRTdHJlYW0gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gICNjdXN0b21BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI2N1c3RvbVNjcmVlblJlYWRlckNvbXBsZXRlZFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI2lkID0gYHNreS13YWl0LSR7KytuZXh0SWR9YDtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfaXNGdWxsUGFnZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgI19pc05vbkJsb2NraW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAjX2lzV2FpdGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICByZWFkb25seSAjYWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5V2FpdEFkYXB0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2VsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICByZWFkb25seSAjbGl2ZUFubm91bmNlciA9IGluamVjdChTa3lMaXZlQW5ub3VuY2VyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZVN2YyA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jcHVibGlzaEFyaWFMYWJlbCgpO1xuICAgIHRoaXMuI3B1Ymxpc2hTY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgI3B1Ymxpc2hBcmlhTGFiZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2N1c3RvbUFyaWFMYWJlbCkge1xuICAgICAgdGhpcy5hcmlhTGFiZWxTdHJlYW0ubmV4dCh0aGlzLiNjdXN0b21BcmlhTGFiZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5pc0Z1bGxQYWdlID8gJ19wYWdlJyA6ICcnO1xuICAgICAgY29uc3QgYmxvY2tpbmcgPSB0aGlzLmlzTm9uQmxvY2tpbmcgPyAnJyA6ICdfYmxvY2tpbmcnO1xuICAgICAgY29uc3Qga2V5ID0gYHNreXV4X3dhaXQke3R5cGV9JHtibG9ja2luZ31fYXJpYV9hbHRfdGV4dGA7XG4gICAgICB0aGlzLiNyZXNvdXJjZVN2Y1xuICAgICAgICAuZ2V0U3RyaW5nKGtleSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSwgdGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuYXJpYUxhYmVsU3RyZWFtLm5leHQodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjcHVibGlzaFNjcmVlblJlYWRlckNvbXBsZXRlZFRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2N1c3RvbVNjcmVlblJlYWRlckNvbXBsZXRlZFRleHQpIHtcbiAgICAgIHRoaXMuc2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dFN0cmVhbS5uZXh0KFxuICAgICAgICB0aGlzLiNjdXN0b21TY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0LFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuaXNGdWxsUGFnZSA/ICdfcGFnZScgOiAnJztcbiAgICAgIGNvbnN0IGtleSA9IGBza3l1eF93YWl0JHt0eXBlfV9zY3JlZW5fcmVhZGVyX2NvbXBsZXRlZF90ZXh0YDtcbiAgICAgIHRoaXMuI3Jlc291cmNlU3ZjXG4gICAgICAgIC5nZXRTdHJpbmcoa2V5KVxuICAgICAgICAucGlwZSh0YWtlKDEpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0U3RyZWFtLm5leHQodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktd2FpdC1jb250YWluZXJcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS13YWl0LWZ1bGwtcGFnZSc6IGlzRnVsbFBhZ2UsXG4gICAgJ3NreS13YWl0LW5vbi1ibG9ja2luZyc6IGlzTm9uQmxvY2tpbmdcbiAgfVwiXG4+XG4gIEBpZiAoaXNXYWl0aW5nKSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktd2FpdC1tYXNrXCJcbiAgICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFN0cmVhbSB8IGFzeW5jXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS13YWl0LW1hc2stbG9hZGluZy1maXhlZCc6IGlzRnVsbFBhZ2UsXG4gICAgICAgICdza3ktd2FpdC1tYXNrLWxvYWRpbmctbm9uLWJsb2NraW5nJzogaXNOb25CbG9ja2luZyxcbiAgICAgICAgJ3NreS13YWl0LW1hc2stbG9hZGluZy1ibG9ja2luZyc6ICFpc05vbkJsb2NraW5nXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LXdhaXRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS13YWl0LWRvdWJsZS1ib3VuY2UxXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktd2FpdC1kb3VibGUtYm91bmNlMlwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { SkyWaitComponent } from './wait.component';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class SkyWaitModule {
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyWaitModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SkyWaitModule, imports: [SkyWaitComponent], exports: [SkyWaitComponent] }); }
|
|
7
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyWaitModule, imports: [SkyWaitComponent] }); }
|
|
8
|
-
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyWaitModule, decorators: [{
|
|
10
|
-
type: NgModule,
|
|
11
|
-
args: [{
|
|
12
|
-
imports: [SkyWaitComponent],
|
|
13
|
-
exports: [SkyWaitComponent],
|
|
14
|
-
}]
|
|
15
|
-
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU1wRCxNQUFNLE9BQU8sYUFBYTsrR0FBYixhQUFhO2dIQUFiLGFBQWEsWUFIZCxnQkFBZ0IsYUFDaEIsZ0JBQWdCO2dIQUVmLGFBQWEsWUFIZCxnQkFBZ0I7OzRGQUdmLGFBQWE7a0JBSnpCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVdhaXRDb21wb25lbnQgfSBmcm9tICcuL3dhaXQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1NreVdhaXRDb21wb25lbnRdLFxuICBleHBvcnRzOiBbU2t5V2FpdENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVdhaXRNb2R1bGUge31cbiJdfQ==
|