nxt-pick-datetime 17.0.1 → 19.0.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/README.md +53 -53
- package/assets/picker.scss +673 -673
- package/fesm2022/nxt-pick-datetime-moment-adapter.mjs +23 -26
- package/fesm2022/nxt-pick-datetime-moment-adapter.mjs.map +1 -1
- package/fesm2022/nxt-pick-datetime-native-adapter.mjs +22 -24
- package/fesm2022/nxt-pick-datetime-native-adapter.mjs.map +1 -1
- package/fesm2022/nxt-pick-datetime.mjs +77 -75
- package/fesm2022/nxt-pick-datetime.mjs.map +1 -1
- package/lib/class/date-time.class.d.ts +1 -1
- package/moment-adapter/moment-adapter.module.d.ts +2 -0
- package/moment-adapter/public-api.d.ts +1 -1
- package/native-adapter/native-adapter.module.d.ts +2 -0
- package/native-adapter/public-api.d.ts +1 -1
- package/package.json +10 -15
- package/esm2022/lib/class/date-time-adapter.class.mjs +0 -97
- package/esm2022/lib/class/date-time-format.class.mjs +0 -4
- package/esm2022/lib/class/date-time.class.mjs +0 -95
- package/esm2022/lib/class/dialog-config.class.mjs +0 -47
- package/esm2022/lib/class/dialog-ref.class.mjs +0 -119
- package/esm2022/lib/date-time/calendar/calendar.component.mjs +0 -346
- package/esm2022/lib/date-time/calendar-body/calendar-body.component.mjs +0 -151
- package/esm2022/lib/date-time/calendar-month-view/calendar-month-view.component.mjs +0 -429
- package/esm2022/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.mjs +0 -358
- package/esm2022/lib/date-time/calendar-year-view/calendar-year-view.component.mjs +0 -362
- package/esm2022/lib/date-time/date-time-inline/date-time-inline.component.mjs +0 -275
- package/esm2022/lib/date-time/date-time-picker/date-time-picker.component.mjs +0 -541
- package/esm2022/lib/date-time/date-time-picker-container/date-time-picker-container.animations.mjs +0 -19
- package/esm2022/lib/date-time/date-time-picker-container/date-time-picker-container.component.mjs +0 -389
- package/esm2022/lib/date-time/date-time-picker-input.directive.mjs +0 -618
- package/esm2022/lib/date-time/date-time-picker-intl.service.mjs +0 -61
- package/esm2022/lib/date-time/date-time-picker-trigger.directive.mjs +0 -70
- package/esm2022/lib/date-time/date-time.module.mjs +0 -96
- package/esm2022/lib/date-time/number-fixed-len.pipe.mjs +0 -22
- package/esm2022/lib/date-time/timer/timer.component.mjs +0 -299
- package/esm2022/lib/date-time/timer-box/timer-box.component.mjs +0 -95
- package/esm2022/lib/dialog/dialog-container/dialog-container.component.mjs +0 -248
- package/esm2022/lib/dialog/dialog.module.mjs +0 -42
- package/esm2022/lib/dialog/dialog.service.mjs +0 -251
- package/esm2022/lib/utils/object.mjs +0 -24
- package/esm2022/moment-adapter/date-time-adapter.class.mjs +0 -220
- package/esm2022/moment-adapter/date-time-format.class.mjs +0 -13
- package/esm2022/moment-adapter/moment-adapter.module.mjs +0 -37
- package/esm2022/moment-adapter/nxt-pick-datetime-moment-adapter.mjs +0 -5
- package/esm2022/moment-adapter/public-api.mjs +0 -3
- package/esm2022/native-adapter/date-time-adapter.class.mjs +0 -366
- package/esm2022/native-adapter/date-time-format.class.mjs +0 -13
- package/esm2022/native-adapter/native-adapter.module.mjs +0 -37
- package/esm2022/native-adapter/nxt-pick-datetime-native-adapter.mjs +0 -5
- package/esm2022/native-adapter/public-api.mjs +0 -2
- package/esm2022/nxt-pick-datetime.mjs +0 -5
- package/esm2022/public-api.mjs +0 -14
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
|
|
2
|
-
import { ComponentPortal } from '@angular/cdk/portal';
|
|
3
|
-
import { Location } from '@angular/common';
|
|
4
|
-
import { Inject, Injectable, InjectionToken, Injector, Optional, SkipSelf, TemplateRef } from '@angular/core';
|
|
5
|
-
import { defer, of, Subject } from 'rxjs';
|
|
6
|
-
import { concatAll } from 'rxjs/operators';
|
|
7
|
-
import { DialogConfig } from '../class/dialog-config.class';
|
|
8
|
-
import { DialogRef } from '../class/dialog-ref.class';
|
|
9
|
-
import { extendObject } from '../utils/object';
|
|
10
|
-
import { DialogContainerComponent } from './dialog-container/dialog-container.component';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@angular/cdk/overlay";
|
|
13
|
-
/** @internal */
|
|
14
|
-
export const NXT_DIALOG_DATA = new InjectionToken('NXT_DIALOG_DATA');
|
|
15
|
-
/**
|
|
16
|
-
* Injection token that determines the scroll handling while the dialog is open.
|
|
17
|
-
*
|
|
18
|
-
* @internal
|
|
19
|
-
*/
|
|
20
|
-
export const NXT_DIALOG_SCROLL_STRATEGY = new InjectionToken('NXT_DIALOG_SCROLL_STRATEGY');
|
|
21
|
-
/** @internal */
|
|
22
|
-
export function NXT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {
|
|
23
|
-
const fn = () => overlay.scrollStrategies.block();
|
|
24
|
-
return fn;
|
|
25
|
-
}
|
|
26
|
-
/** @internal */
|
|
27
|
-
export const NXT_DIALOG_SCROLL_STRATEGY_PROVIDER = {
|
|
28
|
-
provide: NXT_DIALOG_SCROLL_STRATEGY,
|
|
29
|
-
deps: [Overlay],
|
|
30
|
-
useFactory: NXT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY
|
|
31
|
-
};
|
|
32
|
-
/**
|
|
33
|
-
* Injection token that can be used to specify default dialog options.
|
|
34
|
-
*
|
|
35
|
-
* @internal
|
|
36
|
-
*/
|
|
37
|
-
export const NXT_DIALOG_DEFAULT_OPTIONS = new InjectionToken('NXT_DIALOG_DEFAULT_OPTIONS');
|
|
38
|
-
/** @internal */
|
|
39
|
-
export class DialogService {
|
|
40
|
-
/** Keeps track of the currently-open dialogs */
|
|
41
|
-
get openDialogs() {
|
|
42
|
-
return this.parentDialog
|
|
43
|
-
? this.parentDialog.openDialogs
|
|
44
|
-
: this._openDialogsAtThisLevel;
|
|
45
|
-
}
|
|
46
|
-
/** Stream that emits when a dialog has been isOpen */
|
|
47
|
-
get afterOpen() {
|
|
48
|
-
return this.parentDialog
|
|
49
|
-
? this.parentDialog.afterOpen
|
|
50
|
-
: this._afterOpenAtThisLevel;
|
|
51
|
-
}
|
|
52
|
-
get _afterAllClosed() {
|
|
53
|
-
const parent = this.parentDialog;
|
|
54
|
-
return parent
|
|
55
|
-
? parent._afterAllClosed
|
|
56
|
-
: this._afterAllClosedAtThisLevel;
|
|
57
|
-
}
|
|
58
|
-
constructor(overlay, injector, location, scrollStrategy, defaultOptions, parentDialog, overlayContainer) {
|
|
59
|
-
this.overlay = overlay;
|
|
60
|
-
this.injector = injector;
|
|
61
|
-
this.location = location;
|
|
62
|
-
this.defaultOptions = defaultOptions;
|
|
63
|
-
this.parentDialog = parentDialog;
|
|
64
|
-
this.overlayContainer = overlayContainer;
|
|
65
|
-
this.ariaHiddenElements = new Map();
|
|
66
|
-
this._openDialogsAtThisLevel = [];
|
|
67
|
-
this._afterOpenAtThisLevel = new Subject();
|
|
68
|
-
this._afterAllClosedAtThisLevel = new Subject();
|
|
69
|
-
/**
|
|
70
|
-
* Stream that emits when all open dialog have finished closing.
|
|
71
|
-
* Will emit on subscribe if there are no open dialogs to begin with.
|
|
72
|
-
*/
|
|
73
|
-
this.afterAllClosed = defer(() => this._openDialogsAtThisLevel.length
|
|
74
|
-
? this._afterAllClosed
|
|
75
|
-
: of([undefined], this._afterAllClosed).pipe(concatAll()));
|
|
76
|
-
this.scrollStrategy = scrollStrategy;
|
|
77
|
-
if (!parentDialog && location) {
|
|
78
|
-
location.subscribe(() => this.closeAll());
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
open(componentOrTemplateRef, config) {
|
|
82
|
-
config = applyConfigDefaults(config, this.defaultOptions);
|
|
83
|
-
if (config.id && this.getDialogById(config.id)) {
|
|
84
|
-
throw Error(`Dialog with id "${config.id}" exists already. The dialog id must be unique.`);
|
|
85
|
-
}
|
|
86
|
-
const overlayRef = this.createOverlay(config);
|
|
87
|
-
const dialogContainer = this.attachDialogContainer(overlayRef, config);
|
|
88
|
-
const dialogRef = this.attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config);
|
|
89
|
-
if (!this.openDialogs.length) {
|
|
90
|
-
this.hideNonDialogContentFromAssistiveTechnology();
|
|
91
|
-
}
|
|
92
|
-
this.openDialogs.push(dialogRef);
|
|
93
|
-
dialogRef
|
|
94
|
-
.afterClosed()
|
|
95
|
-
.subscribe(() => this.removeOpenDialog(dialogRef));
|
|
96
|
-
this.afterOpen.next(dialogRef);
|
|
97
|
-
return dialogRef;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Closes all of the currently-open dialogs.
|
|
101
|
-
*/
|
|
102
|
-
closeAll() {
|
|
103
|
-
let i = this.openDialogs.length;
|
|
104
|
-
while (i--) {
|
|
105
|
-
this.openDialogs[i].close();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Finds an open dialog by its id.
|
|
110
|
-
*
|
|
111
|
-
* @param id ID to use when looking up the dialog.
|
|
112
|
-
*/
|
|
113
|
-
getDialogById(id) {
|
|
114
|
-
return this.openDialogs.find(dialog => dialog.id === id);
|
|
115
|
-
}
|
|
116
|
-
attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config) {
|
|
117
|
-
const dialogRef = new DialogRef(overlayRef, dialogContainer, config.id, this.location);
|
|
118
|
-
if (config.hasBackdrop) {
|
|
119
|
-
overlayRef.backdropClick().subscribe(() => {
|
|
120
|
-
if (!dialogRef.disableClose) {
|
|
121
|
-
dialogRef.close();
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
if (!(componentOrTemplateRef instanceof TemplateRef)) {
|
|
126
|
-
const injector = this.createInjector(config, dialogRef, dialogContainer);
|
|
127
|
-
const contentRef = dialogContainer.attachComponentPortal(new ComponentPortal(componentOrTemplateRef, undefined, injector));
|
|
128
|
-
dialogRef.componentInstance = contentRef.instance;
|
|
129
|
-
}
|
|
130
|
-
dialogRef
|
|
131
|
-
.updateSize(config.width, config.height)
|
|
132
|
-
.updatePosition(config.position);
|
|
133
|
-
return dialogRef;
|
|
134
|
-
}
|
|
135
|
-
createInjector(config, dialogRef, dialogContainer) {
|
|
136
|
-
const userInjector = config &&
|
|
137
|
-
config.viewContainerRef &&
|
|
138
|
-
config.viewContainerRef.injector;
|
|
139
|
-
return Injector.create({
|
|
140
|
-
providers: [
|
|
141
|
-
{ provide: DialogRef, useValue: dialogRef },
|
|
142
|
-
{ provide: DialogContainerComponent, useValue: dialogContainer },
|
|
143
|
-
{ provide: NXT_DIALOG_DATA, useValue: config.data }
|
|
144
|
-
],
|
|
145
|
-
parent: userInjector || this.injector
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
createOverlay(config) {
|
|
149
|
-
const overlayConfig = this.getOverlayConfig(config);
|
|
150
|
-
return this.overlay.create(overlayConfig);
|
|
151
|
-
}
|
|
152
|
-
attachDialogContainer(overlayRef, config) {
|
|
153
|
-
const containerPortal = new ComponentPortal(DialogContainerComponent, config.viewContainerRef);
|
|
154
|
-
const containerRef = overlayRef.attach(containerPortal);
|
|
155
|
-
containerRef.instance.setConfig(config);
|
|
156
|
-
return containerRef.instance;
|
|
157
|
-
}
|
|
158
|
-
getOverlayConfig(dialogConfig) {
|
|
159
|
-
const state = new OverlayConfig({
|
|
160
|
-
positionStrategy: this.overlay.position().global(),
|
|
161
|
-
scrollStrategy: dialogConfig.scrollStrategy || this.scrollStrategy(),
|
|
162
|
-
panelClass: dialogConfig.paneClass,
|
|
163
|
-
hasBackdrop: dialogConfig.hasBackdrop,
|
|
164
|
-
minWidth: dialogConfig.minWidth,
|
|
165
|
-
minHeight: dialogConfig.minHeight,
|
|
166
|
-
maxWidth: dialogConfig.maxWidth,
|
|
167
|
-
maxHeight: dialogConfig.maxHeight
|
|
168
|
-
});
|
|
169
|
-
if (dialogConfig.backdropClass) {
|
|
170
|
-
state.backdropClass = dialogConfig.backdropClass;
|
|
171
|
-
}
|
|
172
|
-
return state;
|
|
173
|
-
}
|
|
174
|
-
removeOpenDialog(dialogRef) {
|
|
175
|
-
const index = this._openDialogsAtThisLevel.indexOf(dialogRef);
|
|
176
|
-
if (index > -1) {
|
|
177
|
-
this.openDialogs.splice(index, 1);
|
|
178
|
-
// If all the dialogs were closed, remove/restore the `aria-hidden`
|
|
179
|
-
// to a the siblings and emit to the `afterAllClosed` stream.
|
|
180
|
-
if (!this.openDialogs.length) {
|
|
181
|
-
this.ariaHiddenElements.forEach((previousValue, element) => {
|
|
182
|
-
if (previousValue) {
|
|
183
|
-
element.setAttribute('aria-hidden', previousValue);
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
element.removeAttribute('aria-hidden');
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
this.ariaHiddenElements.clear();
|
|
190
|
-
this._afterAllClosed.next();
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Hides all of the content that isn't an overlay from assistive technology.
|
|
196
|
-
*/
|
|
197
|
-
hideNonDialogContentFromAssistiveTechnology() {
|
|
198
|
-
const overlayContainer = this.overlayContainer.getContainerElement();
|
|
199
|
-
// Ensure that the overlay container is attached to the DOM.
|
|
200
|
-
if (overlayContainer.parentElement) {
|
|
201
|
-
const siblings = overlayContainer.parentElement.children;
|
|
202
|
-
for (let i = siblings.length - 1; i > -1; i--) {
|
|
203
|
-
const sibling = siblings[i];
|
|
204
|
-
if (sibling !== overlayContainer &&
|
|
205
|
-
sibling.nodeName !== 'SCRIPT' &&
|
|
206
|
-
sibling.nodeName !== 'STYLE' &&
|
|
207
|
-
!sibling.hasAttribute('aria-live')) {
|
|
208
|
-
this.ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));
|
|
209
|
-
sibling.setAttribute('aria-hidden', 'true');
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DialogService, deps: [{ token: i1.Overlay }, { token: i0.Injector }, { token: Location, optional: true }, { token: NXT_DIALOG_SCROLL_STRATEGY }, { token: NXT_DIALOG_DEFAULT_OPTIONS, optional: true }, { token: DialogService, optional: true, skipSelf: true }, { token: i1.OverlayContainer }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
215
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DialogService }); }
|
|
216
|
-
}
|
|
217
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DialogService, decorators: [{
|
|
218
|
-
type: Injectable
|
|
219
|
-
}], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.Injector }, { type: undefined, decorators: [{
|
|
220
|
-
type: Optional
|
|
221
|
-
}, {
|
|
222
|
-
type: Inject,
|
|
223
|
-
args: [Location]
|
|
224
|
-
}] }, { type: undefined, decorators: [{
|
|
225
|
-
type: Inject,
|
|
226
|
-
args: [NXT_DIALOG_SCROLL_STRATEGY]
|
|
227
|
-
}] }, { type: undefined, decorators: [{
|
|
228
|
-
type: Optional
|
|
229
|
-
}, {
|
|
230
|
-
type: Inject,
|
|
231
|
-
args: [NXT_DIALOG_DEFAULT_OPTIONS]
|
|
232
|
-
}] }, { type: undefined, decorators: [{
|
|
233
|
-
type: Optional
|
|
234
|
-
}, {
|
|
235
|
-
type: SkipSelf
|
|
236
|
-
}, {
|
|
237
|
-
type: Inject,
|
|
238
|
-
args: [DialogService]
|
|
239
|
-
}] }, { type: i1.OverlayContainer }] });
|
|
240
|
-
/**
|
|
241
|
-
* Applies default options to the dialog config.
|
|
242
|
-
*
|
|
243
|
-
* @param config Config to be modified.
|
|
244
|
-
* @param defaultOptions Default config setting
|
|
245
|
-
* @returns The new configuration object.
|
|
246
|
-
* @internal
|
|
247
|
-
*/
|
|
248
|
-
function applyConfigDefaults(config, defaultOptions) {
|
|
249
|
-
return extendObject(new DialogConfig(), config, defaultOptions);
|
|
250
|
-
}
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9waWNrLWRhdGV0aW1lL3NyYy9saWIvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFnRCxNQUFNLHNCQUFzQixDQUFBO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQWlCLE1BQU0scUJBQXFCLENBQUE7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNILE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUE7OztBQUV4RixnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFNLGlCQUFpQixDQUFDLENBQUE7QUFFekU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUUxRCw0QkFBNEIsQ0FBQyxDQUFBO0FBRS9CLGdCQUFnQjtBQUNoQixNQUFNLFVBQVUsMkNBQTJDLENBQ3ZELE9BQWdCO0lBRWhCLE1BQU0s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QUFjLENBQUMsQ0FBQTtBQUNuRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheUNvbnRhaW5lciwgT3ZlcmxheVJlZiwgU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSdcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIE9wdGlvbmFsLCBTa2lwU2VsZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZGVmZXIsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNvbmNhdEFsbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnLi4vY2xhc3MvZGlhbG9nLWNvbmZpZy5jbGFzcydcbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJy4uL2NsYXNzL2RpYWxvZy1yZWYuY2xhc3MnXG5pbXBvcnQgeyBleHRlbmRPYmplY3QgfSBmcm9tICcuLi91dGlscy9vYmplY3QnXG5pbXBvcnQgeyBEaWFsb2dDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2RpYWxvZy1jb250YWluZXIvZGlhbG9nLWNvbnRhaW5lci5jb21wb25lbnQnXG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBOWFRfRElBTE9HX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignTlhUX0RJQUxPR19EQVRBJylcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBkZXRlcm1pbmVzIHRoZSBzY3JvbGwgaGFuZGxpbmcgd2hpbGUgdGhlIGRpYWxvZyBpcyBvcGVuLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgTlhUX0RJQUxPR19TQ1JPTExfU1RSQVRFR1kgPSBuZXcgSW5qZWN0aW9uVG9rZW48XG4gICAgKCkgPT4gU2Nyb2xsU3RyYXRlZ3lcbj4oJ05YVF9ESUFMT0dfU0NST0xMX1NUUkFURUdZJylcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGZ1bmN0aW9uIE5YVF9ESUFMT0dfU0NST0xMX1NUUkFURUdZX1BST1ZJREVSX0ZBQ1RPUlkoXG4gICAgb3ZlcmxheTogT3ZlcmxheVxuKTogKCkgPT4gU2Nyb2xsU3RyYXRlZ3kge1xuICAgIGNvbnN0IGZuID0gKCkgPT4gb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKClcbiAgICByZXR1cm4gZm5cbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IE5YVF9ESUFMT0dfU0NST0xMX1NUUkFURUdZX1BST1ZJREVSID0ge1xuICAgIHByb3ZpZGU6IE5YVF9ESUFMT0dfU0NST0xMX1NUUkFURUdZLFxuICAgIGRlcHM6IFtPdmVybGF5XSxcbiAgICB1c2VGYWN0b3J5OiBOWFRfRElBTE9HX1NDUk9MTF9TVFJBVEVHWV9QUk9WSURFUl9GQUNUT1JZXG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBkZWZhdWx0IGRpYWxvZyBvcHRpb25zLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgTlhUX0RJQUxPR19ERUZBVUxUX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGlhbG9nQ29uZmlnPihcbiAgICAnTlhUX0RJQUxPR19ERUZBVUxUX09QVElPTlMnXG4pXG5cbi8qKiBAaW50ZXJuYWwgKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFyaWFIaWRkZW5FbGVtZW50cyA9IG5ldyBNYXA8RWxlbWVudCwgc3RyaW5nIHwgbnVsbD4oKVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbDogQXJyYXk8RGlhbG9nUmVmPGFueT4+ID0gW11cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hZnRlck9wZW5BdFRoaXNMZXZlbCA9IG5ldyBTdWJqZWN0PERpYWxvZ1JlZjxhbnk+PigpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAgIC8qKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudGx5LW9wZW4gZGlhbG9ncyAqL1xuICAgIGdldCBvcGVuRGlhbG9ncygpOiBBcnJheTxEaWFsb2dSZWY8YW55Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnREaWFsb2dcbiAgICAgICAgICAgID8gdGhpcy5wYXJlbnREaWFsb2cub3BlbkRpYWxvZ3NcbiAgICAgICAgICAgIDogdGhpcy5fb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbFxuICAgIH1cblxuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGEgZGlhbG9nIGhhcyBiZWVuIGlzT3BlbiAqL1xuICAgIGdldCBhZnRlck9wZW4oKTogU3ViamVjdDxEaWFsb2dSZWY8YW55Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnREaWFsb2dcbiAgICAgICAgICAgID8gdGhpcy5wYXJlbnREaWFsb2cuYWZ0ZXJPcGVuXG4gICAgICAgICAgICA6IHRoaXMuX2FmdGVyT3BlbkF0VGhpc0xldmVsXG4gICAgfVxuXG4gICAgZ2V0IF9hZnRlckFsbENsb3NlZCgpOiBTdWJqZWN0PHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5wYXJlbnREaWFsb2dcbiAgICAgICAgcmV0dXJuIHBhcmVudFxuICAgICAgICAgICAgPyBwYXJlbnQuX2FmdGVyQWxsQ2xvc2VkXG4gICAgICAgICAgICA6IHRoaXMuX2FmdGVyQWxsQ2xvc2VkQXRUaGlzTGV2ZWxcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGFsbCBvcGVuIGRpYWxvZyBoYXZlIGZpbmlzaGVkIGNsb3NpbmcuXG4gICAgICogV2lsbCBlbWl0IG9uIHN1YnNjcmliZSBpZiB0aGVyZSBhcmUgbm8gb3BlbiBkaWFsb2dzIHRvIGJlZ2luIHdpdGguXG4gICAgICovXG5cbiAgICByZWFkb25seSBhZnRlckFsbENsb3NlZCA9IGRlZmVyKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgdGhpcy5fb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbC5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2FmdGVyQWxsQ2xvc2VkXG4gICAgICAgICAgICAgICAgOiBvZihbdW5kZWZpbmVkXSwgdGhpcy5fYWZ0ZXJBbGxDbG9zZWQpLnBpcGUoY29uY2F0QWxsKCkpXG4gICAgKVxuXG4gICAgcHJpdmF0ZSBzY3JvbGxTdHJhdGVneTogKCkgPT4gU2Nyb2xsU3RyYXRlZ3lcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KExvY2F0aW9uKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbiAgICAgICAgQEluamVjdChOWFRfRElBTE9HX1NDUk9MTF9TVFJBVEVHWSlcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6ICgpID0+IFNjcm9sbFN0cmF0ZWd5LFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KE5YVF9ESUFMT0dfREVGQVVMVF9PUFRJT05TKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRPcHRpb25zOiBEaWFsb2dDb25maWcgfCB1bmRlZmluZWQsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTa2lwU2VsZigpXG4gICAgICAgIEBJbmplY3QoRGlhbG9nU2VydmljZSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnREaWFsb2c6IERpYWxvZ1NlcnZpY2UgfCB1bmRlZmluZWQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheUNvbnRhaW5lcjogT3ZlcmxheUNvbnRhaW5lclxuICAgICkge1xuICAgICAgICB0aGlzLnNjcm9sbFN0cmF0ZWd5ID0gc2Nyb2xsU3RyYXRlZ3lcbiAgICAgICAgaWYgKCFwYXJlbnREaWFsb2cgJiYgbG9jYXRpb24pIHtcbiAgICAgICAgICAgIGxvY2F0aW9uLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlQWxsKCkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuPFQ+KFxuICAgICAgICBjb21wb25lbnRPclRlbXBsYXRlUmVmOiBDb21wb25lbnRUeXBlPFQ+IHwgVGVtcGxhdGVSZWY8VD4sXG4gICAgICAgIGNvbmZpZz86IERpYWxvZ0NvbmZpZ1xuICAgICk6IERpYWxvZ1JlZjxhbnk+IHtcbiAgICAgICAgY29uZmlnID0gYXBwbHlDb25maWdEZWZhdWx0cyhjb25maWcsIHRoaXMuZGVmYXVsdE9wdGlvbnMpXG5cbiAgICAgICAgaWYgKGNvbmZpZy5pZCAmJiB0aGlzLmdldERpYWxvZ0J5SWQoY29uZmlnLmlkKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYERpYWxvZyB3aXRoIGlkIFwiJHtjb25maWcuaWR9XCIgZXhpc3RzIGFscmVhZHkuIFRoZSBkaWFsb2cgaWQgbXVzdCBiZSB1bmlxdWUuYClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkoY29uZmlnKVxuICAgICAgICBjb25zdCBkaWFsb2dDb250YWluZXIgPSB0aGlzLmF0dGFjaERpYWxvZ0NvbnRhaW5lcihvdmVybGF5UmVmLCBjb25maWcpXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuYXR0YWNoRGlhbG9nQ29udGVudDxUPihcbiAgICAgICAgICAgIGNvbXBvbmVudE9yVGVtcGxhdGVSZWYsXG4gICAgICAgICAgICBkaWFsb2dDb250YWluZXIsXG4gICAgICAgICAgICBvdmVybGF5UmVmLFxuICAgICAgICAgICAgY29uZmlnXG4gICAgICAgIClcblxuICAgICAgICBpZiAoIXRoaXMub3BlbkRpYWxvZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVOb25EaWFsb2dDb250ZW50RnJvbUFzc2lzdGl2ZVRlY2hub2xvZ3koKVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcGVuRGlhbG9ncy5wdXNoKGRpYWxvZ1JlZilcbiAgICAgICAgZGlhbG9nUmVmXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlbW92ZU9wZW5EaWFsb2coZGlhbG9nUmVmKSlcbiAgICAgICAgdGhpcy5hZnRlck9wZW4ubmV4dChkaWFsb2dSZWYpXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWZcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgYWxsIG9mIHRoZSBjdXJyZW50bHktb3BlbiBkaWFsb2dzLlxuICAgICAqL1xuICAgIGNsb3NlQWxsKCk6IHZvaWQge1xuICAgICAgICBsZXQgaSA9IHRoaXMub3BlbkRpYWxvZ3MubGVuZ3RoXG5cbiAgICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuRGlhbG9nc1tpXS5jbG9zZSgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhbiBvcGVuIGRpYWxvZyBieSBpdHMgaWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQgSUQgdG8gdXNlIHdoZW4gbG9va2luZyB1cCB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIGdldERpYWxvZ0J5SWQoaWQ6IHN0cmluZyk6IERpYWxvZ1JlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbkRpYWxvZ3MuZmluZChkaWFsb2cgPT4gZGlhbG9nLmlkID09PSBpZClcbiAgICB9XG5cbiAgICBwcml2YXRlIGF0dGFjaERpYWxvZ0NvbnRlbnQ8VD4oXG4gICAgICAgIGNvbXBvbmVudE9yVGVtcGxhdGVSZWY6IENvbXBvbmVudFR5cGU8VD4gfCBUZW1wbGF0ZVJlZjxUPixcbiAgICAgICAgZGlhbG9nQ29udGFpbmVyOiBEaWFsb2dDb250YWluZXJDb21wb25lbnQsXG4gICAgICAgIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsXG4gICAgICAgIGNvbmZpZzogRGlhbG9nQ29uZmlnXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IG5ldyBEaWFsb2dSZWY8VD4oXG4gICAgICAgICAgICBvdmVybGF5UmVmLFxuICAgICAgICAgICAgZGlhbG9nQ29udGFpbmVyLFxuICAgICAgICAgICAgY29uZmlnLmlkLFxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvblxuICAgICAgICApXG5cbiAgICAgICAgaWYgKGNvbmZpZy5oYXNCYWNrZHJvcCkge1xuICAgICAgICAgICAgb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEoY29tcG9uZW50T3JUZW1wbGF0ZVJlZiBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSkge1xuICAgICAgICAgICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNyZWF0ZUluamVjdG9yPFQ+KFxuICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICBkaWFsb2dSZWYsXG4gICAgICAgICAgICAgICAgZGlhbG9nQ29udGFpbmVyXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBjb250ZW50UmVmID0gZGlhbG9nQ29udGFpbmVyLmF0dGFjaENvbXBvbmVudFBvcnRhbChcbiAgICAgICAgICAgICAgICBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudE9yVGVtcGxhdGVSZWYsIHVuZGVmaW5lZCwgaW5qZWN0b3IpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UgPSBjb250ZW50UmVmLmluc3RhbmNlXG4gICAgICAgIH1cblxuICAgICAgICBkaWFsb2dSZWZcbiAgICAgICAgICAgIC51cGRhdGVTaXplKGNvbmZpZy53aWR0aCwgY29uZmlnLmhlaWdodClcbiAgICAgICAgICAgIC51cGRhdGVQb3NpdGlvbihjb25maWcucG9zaXRpb24pXG5cbiAgICAgICAgcmV0dXJuIGRpYWxvZ1JlZlxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSW5qZWN0b3I8VD4oXG4gICAgICAgIGNvbmZpZzogRGlhbG9nQ29uZmlnLFxuICAgICAgICBkaWFsb2dSZWY6IERpYWxvZ1JlZjxUPixcbiAgICAgICAgZGlhbG9nQ29udGFpbmVyOiBEaWFsb2dDb250YWluZXJDb21wb25lbnRcbiAgICApIHtcbiAgICAgICAgY29uc3QgdXNlckluamVjdG9yID1cbiAgICAgICAgICAgIGNvbmZpZyAmJlxuICAgICAgICAgICAgY29uZmlnLnZpZXdDb250YWluZXJSZWYgJiZcbiAgICAgICAgICAgIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yXG5cbiAgICAgICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IERpYWxvZ1JlZiwgdXNlVmFsdWU6IGRpYWxvZ1JlZiB9LFxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogRGlhbG9nQ29udGFpbmVyQ29tcG9uZW50LCB1c2VWYWx1ZTogZGlhbG9nQ29udGFpbmVyIH0sXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBOWFRfRElBTE9HX0RBVEEsIHVzZVZhbHVlOiBjb25maWcuZGF0YSB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcGFyZW50OiB1c2VySW5qZWN0b3IgfHwgdGhpcy5pbmplY3RvclxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3ZlcmxheShjb25maWc6IERpYWxvZ0NvbmZpZyk6IE92ZXJsYXlSZWYge1xuICAgICAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKGNvbmZpZylcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZylcbiAgICB9XG5cbiAgICBwcml2YXRlIGF0dGFjaERpYWxvZ0NvbnRhaW5lcihcbiAgICAgICAgb3ZlcmxheVJlZjogT3ZlcmxheVJlZixcbiAgICAgICAgY29uZmlnOiBEaWFsb2dDb25maWdcbiAgICApOiBEaWFsb2dDb250YWluZXJDb21wb25lbnQge1xuICAgICAgICBjb25zdCBjb250YWluZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFxuICAgICAgICAgICAgRGlhbG9nQ29udGFpbmVyQ29tcG9uZW50LFxuICAgICAgICAgICAgY29uZmlnLnZpZXdDb250YWluZXJSZWZcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBjb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxcbiAgICAgICAgICAgIERpYWxvZ0NvbnRhaW5lckNvbXBvbmVudFxuICAgICAgICA+ID0gb3ZlcmxheVJlZi5hdHRhY2goY29udGFpbmVyUG9ydGFsKVxuICAgICAgICBjb250YWluZXJSZWYuaW5zdGFuY2Uuc2V0Q29uZmlnKGNvbmZpZylcblxuICAgICAgICByZXR1cm4gY29udGFpbmVyUmVmLmluc3RhbmNlXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPdmVybGF5Q29uZmlnKGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCksXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTpcbiAgICAgICAgICAgICAgICBkaWFsb2dDb25maWcuc2Nyb2xsU3RyYXRlZ3kgfHwgdGhpcy5zY3JvbGxTdHJhdGVneSgpLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogZGlhbG9nQ29uZmlnLnBhbmVDbGFzcyxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBkaWFsb2dDb25maWcuaGFzQmFja2Ryb3AsXG4gICAgICAgICAgICBtaW5XaWR0aDogZGlhbG9nQ29uZmlnLm1pbldpZHRoLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiBkaWFsb2dDb25maWcubWluSGVpZ2h0LFxuICAgICAgICAgICAgbWF4V2lkdGg6IGRpYWxvZ0NvbmZpZy5tYXhXaWR0aCxcbiAgICAgICAgICAgIG1heEhlaWdodDogZGlhbG9nQ29uZmlnLm1heEhlaWdodFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChkaWFsb2dDb25maWcuYmFja2Ryb3BDbGFzcykge1xuICAgICAgICAgICAgc3RhdGUuYmFja2Ryb3BDbGFzcyA9IGRpYWxvZ0NvbmZpZy5iYWNrZHJvcENsYXNzXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3RhdGVcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZU9wZW5EaWFsb2coZGlhbG9nUmVmOiBEaWFsb2dSZWY8YW55Pik6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX29wZW5EaWFsb2dzQXRUaGlzTGV2ZWwuaW5kZXhPZihkaWFsb2dSZWYpXG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRpYWxvZ3Muc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICAgICAgLy8gSWYgYWxsIHRoZSBkaWFsb2dzIHdlcmUgY2xvc2VkLCByZW1vdmUvcmVzdG9yZSB0aGUgYGFyaWEtaGlkZGVuYFxuICAgICAgICAgICAgLy8gdG8gYSB0aGUgc2libGluZ3MgYW5kIGVtaXQgdG8gdGhlIGBhZnRlckFsbENsb3NlZGAgc3RyZWFtLlxuICAgICAgICAgICAgaWYgKCF0aGlzLm9wZW5EaWFsb2dzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXJpYUhpZGRlbkVsZW1lbnRzLmZvckVhY2goKHByZXZpb3VzVmFsdWUsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIHByZXZpb3VzVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHRoaXMuYXJpYUhpZGRlbkVsZW1lbnRzLmNsZWFyKClcbiAgICAgICAgICAgICAgICB0aGlzLl9hZnRlckFsbENsb3NlZC5uZXh0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIGFsbCBvZiB0aGUgY29udGVudCB0aGF0IGlzbid0IGFuIG92ZXJsYXkgZnJvbSBhc3Npc3RpdmUgdGVjaG5vbG9neS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGhpZGVOb25EaWFsb2dDb250ZW50RnJvbUFzc2lzdGl2ZVRlY2hub2xvZ3koKSB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlDb250YWluZXIgPSB0aGlzLm92ZXJsYXlDb250YWluZXIuZ2V0Q29udGFpbmVyRWxlbWVudCgpXG5cbiAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIG92ZXJsYXkgY29udGFpbmVyIGlzIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gICAgICAgIGlmIChvdmVybGF5Q29udGFpbmVyLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNpYmxpbmdzID0gb3ZlcmxheUNvbnRhaW5lci5wYXJlbnRFbGVtZW50LmNoaWxkcmVuXG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzaWJsaW5ncy5sZW5ndGggLSAxOyBpID4gLTE7IGktLSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpYmxpbmcgPSBzaWJsaW5nc1tpXVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzaWJsaW5nICE9PSBvdmVybGF5Q29udGFpbmVyICYmXG4gICAgICAgICAgICAgICAgICAgIHNpYmxpbmcubm9kZU5hbWUgIT09ICdTQ1JJUFQnICYmXG4gICAgICAgICAgICAgICAgICAgIHNpYmxpbmcubm9kZU5hbWUgIT09ICdTVFlMRScgJiZcbiAgICAgICAgICAgICAgICAgICAgIXNpYmxpbmcuaGFzQXR0cmlidXRlKCdhcmlhLWxpdmUnKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFyaWFIaWRkZW5FbGVtZW50cy5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZy5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBzaWJsaW5nLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEFwcGxpZXMgZGVmYXVsdCBvcHRpb25zIHRvIHRoZSBkaWFsb2cgY29uZmlnLlxuICpcbiAqIEBwYXJhbSBjb25maWcgQ29uZmlnIHRvIGJlIG1vZGlmaWVkLlxuICogQHBhcmFtIGRlZmF1bHRPcHRpb25zIERlZmF1bHQgY29uZmlnIHNldHRpbmdcbiAqIEByZXR1cm5zIFRoZSBuZXcgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gYXBwbHlDb25maWdEZWZhdWx0cyhcbiAgICBjb25maWc/OiBEaWFsb2dDb25maWcsXG4gICAgZGVmYXVsdE9wdGlvbnM/OiBEaWFsb2dDb25maWdcbik6IERpYWxvZ0NvbmZpZyB7XG4gICAgcmV0dXJuIGV4dGVuZE9iamVjdChuZXcgRGlhbG9nQ29uZmlnKCksIGNvbmZpZywgZGVmYXVsdE9wdGlvbnMpXG59XG4iXX0=
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extends an object with the *enumerable* and *own* properties of one or more source objects,
|
|
3
|
-
* similar to Object.assign.
|
|
4
|
-
*
|
|
5
|
-
* @param dest The object which will have properties copied to it.
|
|
6
|
-
* @param sources The source objects from which properties will be copied.
|
|
7
|
-
* @internal
|
|
8
|
-
*/
|
|
9
|
-
export function extendObject(dest, ...sources) {
|
|
10
|
-
if (dest == null || dest == undefined) {
|
|
11
|
-
throw TypeError('Cannot convert undefined or null to object');
|
|
12
|
-
}
|
|
13
|
-
for (const source of sources) {
|
|
14
|
-
if (source != null && source != undefined) {
|
|
15
|
-
for (const key in source) {
|
|
16
|
-
if (source.hasOwnProperty(key)) {
|
|
17
|
-
dest[key] = source[key];
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return dest;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGljay1kYXRldGltZS9zcmMvbGliL3V0aWxzL29iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFTLEVBQUUsR0FBRyxPQUFjO0lBQ3JELElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksU0FBUyxFQUFFO1FBQ25DLE1BQU0sU0FBUyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7S0FDaEU7SUFFRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtRQUMxQixJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLFNBQVMsRUFBRTtZQUN2QyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRTtnQkFDdEIsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2lCQUMxQjthQUNKO1NBQ0o7S0FDSjtJQUVELE9BQU8sSUFBSSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXh0ZW5kcyBhbiBvYmplY3Qgd2l0aCB0aGUgKmVudW1lcmFibGUqIGFuZCAqb3duKiBwcm9wZXJ0aWVzIG9mIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzLFxuICogc2ltaWxhciB0byBPYmplY3QuYXNzaWduLlxuICpcbiAqIEBwYXJhbSBkZXN0IFRoZSBvYmplY3Qgd2hpY2ggd2lsbCBoYXZlIHByb3BlcnRpZXMgY29waWVkIHRvIGl0LlxuICogQHBhcmFtIHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzIGZyb20gd2hpY2ggcHJvcGVydGllcyB3aWxsIGJlIGNvcGllZC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kT2JqZWN0KGRlc3Q6IGFueSwgLi4uc291cmNlczogYW55W10pOiBhbnkge1xuICAgIGlmIChkZXN0ID09IG51bGwgfHwgZGVzdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QnKVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmIHNvdXJjZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBkZXN0W2tleV0gPSBzb3VyY2Vba2V5XVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZXN0XG59XG4iXX0=
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, InjectionToken, LOCALE_ID, Optional } from '@angular/core';
|
|
2
|
-
import moment from 'moment';
|
|
3
|
-
import { DateTimeAdapter } from 'nxt-pick-datetime';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/** InjectionToken for moment date adapter to configure options */
|
|
6
|
-
export const NXT_MOMENT_DATE_TIME_ADAPTER_OPTIONS = new InjectionToken('NXT_MOMENT_DATE_TIME_ADAPTER_OPTIONS', {
|
|
7
|
-
providedIn: 'root',
|
|
8
|
-
factory: NXT_MOMENT_DATE_TIME_ADAPTER_OPTIONS_FACTORY
|
|
9
|
-
});
|
|
10
|
-
/** @internal */
|
|
11
|
-
export function NXT_MOMENT_DATE_TIME_ADAPTER_OPTIONS_FACTORY() {
|
|
12
|
-
return {
|
|
13
|
-
useUtc: false
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Creates an array and fills it with values.
|
|
18
|
-
*
|
|
19
|
-
* @internal
|
|
20
|
-
*/
|
|
21
|
-
function range(length, valueFunction) {
|
|
22
|
-
const valuesArray = Array(length);
|
|
23
|
-
for (let i = 0; i < length; i++) {
|
|
24
|
-
valuesArray[i] = valueFunction(i);
|
|
25
|
-
}
|
|
26
|
-
return valuesArray;
|
|
27
|
-
}
|
|
28
|
-
export class MomentDateTimeAdapter extends DateTimeAdapter {
|
|
29
|
-
constructor(dateTimeLocale, options) {
|
|
30
|
-
super();
|
|
31
|
-
this.options = options;
|
|
32
|
-
this._localeData = {};
|
|
33
|
-
this.setLocale(dateTimeLocale || moment.locale());
|
|
34
|
-
}
|
|
35
|
-
setLocale(locale) {
|
|
36
|
-
super.setLocale(locale);
|
|
37
|
-
const momentLocaleData = moment.localeData(locale);
|
|
38
|
-
this._localeData = {
|
|
39
|
-
longMonths: momentLocaleData.months(),
|
|
40
|
-
shortMonths: momentLocaleData.monthsShort(),
|
|
41
|
-
longDaysOfWeek: momentLocaleData.weekdays(),
|
|
42
|
-
shortDaysOfWeek: momentLocaleData.weekdaysShort(),
|
|
43
|
-
narrowDaysOfWeek: momentLocaleData.weekdaysMin(),
|
|
44
|
-
dates: range(31, (i) => this.createDate(2017, 0, i + 1).format('D'))
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
getYear(date) {
|
|
48
|
-
return this.clone(date).year();
|
|
49
|
-
}
|
|
50
|
-
getMonth(date) {
|
|
51
|
-
return this.clone(date).month();
|
|
52
|
-
}
|
|
53
|
-
getDay(date) {
|
|
54
|
-
return this.clone(date).day();
|
|
55
|
-
}
|
|
56
|
-
getDate(date) {
|
|
57
|
-
return this.clone(date).date();
|
|
58
|
-
}
|
|
59
|
-
getHours(date) {
|
|
60
|
-
return this.clone(date).hours();
|
|
61
|
-
}
|
|
62
|
-
getMinutes(date) {
|
|
63
|
-
return this.clone(date).minutes();
|
|
64
|
-
}
|
|
65
|
-
getSeconds(date) {
|
|
66
|
-
return this.clone(date).seconds();
|
|
67
|
-
}
|
|
68
|
-
getTime(date) {
|
|
69
|
-
return this.clone(date).valueOf();
|
|
70
|
-
}
|
|
71
|
-
getNumDaysInMonth(date) {
|
|
72
|
-
return this.clone(date).daysInMonth();
|
|
73
|
-
}
|
|
74
|
-
differenceInCalendarDays(dateLeft, dateRight) {
|
|
75
|
-
return this.clone(dateLeft).diff(dateRight, 'days');
|
|
76
|
-
}
|
|
77
|
-
getYearName(date) {
|
|
78
|
-
return this.clone(date).format('YYYY');
|
|
79
|
-
}
|
|
80
|
-
getMonthNames(style) {
|
|
81
|
-
return style === 'long' ? this._localeData.longMonths : this._localeData.shortMonths;
|
|
82
|
-
}
|
|
83
|
-
getDayOfWeekNames(style) {
|
|
84
|
-
if (style === 'long') {
|
|
85
|
-
return this._localeData.longDaysOfWeek;
|
|
86
|
-
}
|
|
87
|
-
if (style === 'short') {
|
|
88
|
-
return this._localeData.shortDaysOfWeek;
|
|
89
|
-
}
|
|
90
|
-
return this._localeData.narrowDaysOfWeek;
|
|
91
|
-
}
|
|
92
|
-
getDateNames() {
|
|
93
|
-
return this._localeData.dates;
|
|
94
|
-
}
|
|
95
|
-
toIso8601(date) {
|
|
96
|
-
return this.clone(date).format();
|
|
97
|
-
}
|
|
98
|
-
isEqual(dateLeft, dateRight) {
|
|
99
|
-
if (dateLeft && dateRight) {
|
|
100
|
-
return this.clone(dateLeft).isSame(this.clone(dateRight));
|
|
101
|
-
}
|
|
102
|
-
return dateLeft === dateRight;
|
|
103
|
-
}
|
|
104
|
-
isSameDay(dateLeft, dateRight) {
|
|
105
|
-
if (dateLeft && dateRight) {
|
|
106
|
-
return this.clone(dateLeft).isSame(this.clone(dateRight), 'day');
|
|
107
|
-
}
|
|
108
|
-
return dateLeft === dateRight;
|
|
109
|
-
}
|
|
110
|
-
isValid(date) {
|
|
111
|
-
return this.clone(date).isValid();
|
|
112
|
-
}
|
|
113
|
-
invalid() {
|
|
114
|
-
return moment.invalid();
|
|
115
|
-
}
|
|
116
|
-
isDateInstance(obj) {
|
|
117
|
-
return moment.isMoment(obj);
|
|
118
|
-
}
|
|
119
|
-
addCalendarYears(date, amount) {
|
|
120
|
-
return this.clone(date).add({ years: amount });
|
|
121
|
-
}
|
|
122
|
-
addCalendarMonths(date, amount) {
|
|
123
|
-
return this.clone(date).add({ months: amount });
|
|
124
|
-
}
|
|
125
|
-
addCalendarDays(date, amount) {
|
|
126
|
-
return this.clone(date).add({ days: amount });
|
|
127
|
-
}
|
|
128
|
-
setHours(date, amount) {
|
|
129
|
-
return this.clone(date).hours(amount);
|
|
130
|
-
}
|
|
131
|
-
setMinutes(date, amount) {
|
|
132
|
-
return this.clone(date).minutes(amount);
|
|
133
|
-
}
|
|
134
|
-
setSeconds(date, amount) {
|
|
135
|
-
return this.clone(date).seconds(amount);
|
|
136
|
-
}
|
|
137
|
-
createDate(year, month, date, hours = 0, minutes = 0, seconds = 0) {
|
|
138
|
-
if (month < 0 || month > 11) {
|
|
139
|
-
throw Error(`Invalid month index "${month}". Month index has to be between 0 and 11.`);
|
|
140
|
-
}
|
|
141
|
-
if (date < 1) {
|
|
142
|
-
throw Error(`Invalid date "${date}". Date has to be greater than 0.`);
|
|
143
|
-
}
|
|
144
|
-
if (hours < 0 || hours > 23) {
|
|
145
|
-
throw Error(`Invalid hours "${hours}". Hours has to be between 0 and 23.`);
|
|
146
|
-
}
|
|
147
|
-
if (minutes < 0 || minutes > 59) {
|
|
148
|
-
throw Error(`Invalid minutes "${minutes}". Minutes has to between 0 and 59.`);
|
|
149
|
-
}
|
|
150
|
-
if (seconds < 0 || seconds > 59) {
|
|
151
|
-
throw Error(`Invalid seconds "${seconds}". Seconds has to be between 0 and 59.`);
|
|
152
|
-
}
|
|
153
|
-
const result = this.createMoment({ year, month, date, hours, minutes, seconds }).locale(this.locale);
|
|
154
|
-
// If the result isn't valid, the date must have been out of bounds for this month.
|
|
155
|
-
if (!result.isValid()) {
|
|
156
|
-
throw Error(`Invalid date "${date}" for month with index "${month}".`);
|
|
157
|
-
}
|
|
158
|
-
return result;
|
|
159
|
-
}
|
|
160
|
-
clone(date) {
|
|
161
|
-
return this.createMoment(date).clone().locale(this.locale);
|
|
162
|
-
}
|
|
163
|
-
now() {
|
|
164
|
-
return this.createMoment().locale(this.locale);
|
|
165
|
-
}
|
|
166
|
-
format(date, displayFormat) {
|
|
167
|
-
date = this.clone(date);
|
|
168
|
-
if (!this.isValid(date)) {
|
|
169
|
-
throw Error('MomentDateTimeAdapter: Cannot format invalid date.');
|
|
170
|
-
}
|
|
171
|
-
return date.format(displayFormat);
|
|
172
|
-
}
|
|
173
|
-
parse(value, parseFormat) {
|
|
174
|
-
if (value && typeof value === 'string') {
|
|
175
|
-
return this.createMoment(value, parseFormat, this.locale);
|
|
176
|
-
}
|
|
177
|
-
return value ? this.createMoment(value).locale(this.locale) : undefined;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Returns the given value if given a valid Moment or undefined. Deserializes valid ISO 8601 strings
|
|
181
|
-
* (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid Moments and empty
|
|
182
|
-
* string into undefined. Returns an invalid date for all other values.
|
|
183
|
-
*/
|
|
184
|
-
deserialize(value) {
|
|
185
|
-
let date;
|
|
186
|
-
if (value instanceof Date) {
|
|
187
|
-
date = this.createMoment(value);
|
|
188
|
-
}
|
|
189
|
-
if (typeof value === 'string') {
|
|
190
|
-
if (!value) {
|
|
191
|
-
return undefined;
|
|
192
|
-
}
|
|
193
|
-
date = this.createMoment(value, moment.ISO_8601).locale(this.locale);
|
|
194
|
-
}
|
|
195
|
-
if (date && this.isValid(date)) {
|
|
196
|
-
return date;
|
|
197
|
-
}
|
|
198
|
-
return super.deserialize(value);
|
|
199
|
-
}
|
|
200
|
-
/** Creates a Moment instance while respecting the current UTC settings */
|
|
201
|
-
createMoment(...args) {
|
|
202
|
-
return (this.options && this.options.useUtc) ? moment.utc(...args) : moment(...args);
|
|
203
|
-
}
|
|
204
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: MomentDateTimeAdapter, deps: [{ token: LOCALE_ID, optional: true }, { token: NXT_MOMENT_DATE_TIME_ADAPTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
205
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: MomentDateTimeAdapter }); }
|
|
206
|
-
}
|
|
207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: MomentDateTimeAdapter, decorators: [{
|
|
208
|
-
type: Injectable
|
|
209
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
210
|
-
type: Optional
|
|
211
|
-
}, {
|
|
212
|
-
type: Inject,
|
|
213
|
-
args: [LOCALE_ID]
|
|
214
|
-
}] }, { type: undefined, decorators: [{
|
|
215
|
-
type: Optional
|
|
216
|
-
}, {
|
|
217
|
-
type: Inject,
|
|
218
|
-
args: [NXT_MOMENT_DATE_TIME_ADAPTER_OPTIONS]
|
|
219
|
-
}] }] });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWFkYXB0ZXIuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9waWNrLWRhdGV0aW1lL21vbWVudC1hZGFwdGVyL3NyYy9kYXRlLXRpbWUtYWRhcHRlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN2RixPQUFPLE1BQWtCLE1BQU0sUUFBUSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTs7QUFZbkQsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLElBQUksY0FBYyxDQUNsRSxzQ0FBc0MsRUFBRTtJQUN4QyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsNENBQTRDO0NBQ3hELENBQUMsQ0FBQTtBQUVGLGdCQUFnQjtBQUNoQixNQUFNLFVBQVUsNENBQTRDO0lBQ3hELE9BQU87UUFDSCxNQUFNLEVBQUUsS0FBSztLQUNoQixDQUFBO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLEtBQUssQ0FBSSxNQUFjLEVBQUUsYUFBbUM7SUFDakUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDN0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNwQztJQUNELE9BQU8sV0FBVyxDQUFBO0FBQ3RCLENBQUM7QUFHRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBdUI7SUFXOUQsWUFHSSxjQUF1QixFQUdOLE9BQXNDO1FBRXZELEtBQUssRUFBRSxDQUFB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S0FBSyxLQUFLLFFBQVEsRUFBRTtZQUMzQixJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNSLE9BQU8sU0FBUyxDQUFBO2FBQ25CO1lBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQ3ZFO1FBQ0QsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQTtTQUNkO1FBQ0QsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCwwRUFBMEU7SUFDbEUsWUFBWSxDQUFDLEdBQUcsSUFBVztRQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQ3hGLENBQUM7OEdBN09RLHFCQUFxQixrQkFhbEIsU0FBUyw2QkFHVCxvQ0FBb0M7a0hBaEJ2QyxxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQWFGLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsU0FBUzs7MEJBRWhCLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgTE9DQUxFX0lELCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IERhdGVUaW1lQWRhcHRlciB9IGZyb20gJ254dC1waWNrLWRhdGV0aW1lJ1xuXG4vKiogQ29uZmlndXJhYmxlIG9wdGlvbnMgZm9yIHtAc2VlIE1vbWVudERhdGVBZGFwdGVyfSAqL1xuZXhwb3J0IGludGVyZmFjZSBNb21lbnREYXRlVGltZUFkYXB0ZXJPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBUdXJucyB0aGUgdXNlIG9mIHV0YyBkYXRlcyBvbiBvciBvZmYuXG4gICAgICogQ2hhbmdpbmcgdGhpcyB3aWxsIGNoYW5nZSBob3cgdGhlIERhdGVUaW1lUGlja2VyIG91dHB1dCB2YWx1ZS5cbiAgICAgKiB7QGRlZmF1bHQgZmFsc2V9XG4gICAgICovXG4gICAgdXNlVXRjOiBib29sZWFuXG59XG5cbi8qKiBJbmplY3Rpb25Ub2tlbiBmb3IgbW9tZW50IGRhdGUgYWRhcHRlciB0byBjb25maWd1cmUgb3B0aW9ucyAqL1xuZXhwb3J0IGNvbnN0IE5YVF9NT01FTlRfREFURV9USU1FX0FEQVBURVJfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNb21lbnREYXRlVGltZUFkYXB0ZXJPcHRpb25zPihcbiAgICAnTlhUX01PTUVOVF9EQVRFX1RJTUVfQURBUFRFUl9PUFRJT05TJywge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiBOWFRfTU9NRU5UX0RBVEVfVElNRV9BREFQVEVSX09QVElPTlNfRkFDVE9SWVxufSlcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGZ1bmN0aW9uIE5YVF9NT01FTlRfREFURV9USU1FX0FEQVBURVJfT1BUSU9OU19GQUNUT1JZKCk6IE1vbWVudERhdGVUaW1lQWRhcHRlck9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICAgIHVzZVV0YzogZmFsc2VcbiAgICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBhbmQgZmlsbHMgaXQgd2l0aCB2YWx1ZXMuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIHJhbmdlPFQ+KGxlbmd0aDogbnVtYmVyLCB2YWx1ZUZ1bmN0aW9uOiAoaW5kZXg6IG51bWJlcikgPT4gVCk6IFRbXSB7XG4gICAgY29uc3QgdmFsdWVzQXJyYXkgPSBBcnJheShsZW5ndGgpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YWx1ZXNBcnJheVtpXSA9IHZhbHVlRnVuY3Rpb24oaSlcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlc0FycmF5XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNb21lbnREYXRlVGltZUFkYXB0ZXIgZXh0ZW5kcyBEYXRlVGltZUFkYXB0ZXI8TW9tZW50PiB7XG5cbiAgICBwcml2YXRlIF9sb2NhbGVEYXRhOiB7XG4gICAgICAgIGxvbmdNb250aHM6IHN0cmluZ1tdXG4gICAgICAgIHNob3J0TW9udGhzOiBzdHJpbmdbXVxuICAgICAgICBsb25nRGF5c09mV2Vlazogc3RyaW5nW11cbiAgICAgICAgc2hvcnREYXlzT2ZXZWVrOiBzdHJpbmdbXVxuICAgICAgICBuYXJyb3dEYXlzT2ZXZWVrOiBzdHJpbmdbXVxuICAgICAgICBkYXRlczogc3RyaW5nW11cbiAgICB9ID0ge30gYXMgYW55XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChMT0NBTEVfSUQpXG4gICAgICAgIGRhdGVUaW1lTG9jYWxlPzogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KE5YVF9NT01FTlRfREFURV9USU1FX0FEQVBURVJfT1BUSU9OUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zPzogTW9tZW50RGF0ZVRpbWVBZGFwdGVyT3B0aW9uc1xuICAgICkge1xuICAgICAgICBzdXBlcigpXG4gICAgICAgIHRoaXMuc2V0TG9jYWxlKGRhdGVUaW1lTG9jYWxlIHx8IG1vbWVudC5sb2NhbGUoKSlcbiAgICB9XG5cbiAgICBvdmVycmlkZSBzZXRMb2NhbGUobG9jYWxlOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIuc2V0TG9jYWxlKGxvY2FsZSlcblxuICAgICAgICBjb25zdCBtb21lbnRMb2NhbGVEYXRhID0gbW9tZW50LmxvY2FsZURhdGEobG9jYWxlKVxuICAgICAgICB0aGlzLl9sb2NhbGVEYXRhID0ge1xuICAgICAgICAgICAgbG9uZ01vbnRoczogbW9tZW50TG9jYWxlRGF0YS5tb250aHMoKSxcbiAgICAgICAgICAgIHNob3J0TW9udGhzOiBtb21lbnRMb2NhbGVEYXRhLm1vbnRoc1Nob3J0KCksXG4gICAgICAgICAgICBsb25nRGF5c09mV2VlazogbW9tZW50TG9jYWxlRGF0YS53ZWVrZGF5cygpLFxuICAgICAgICAgICAgc2hvcnREYXlzT2ZXZWVrOiBtb21lbnRMb2NhbGVEYXRhLndlZWtkYXlzU2hvcnQoKSxcbiAgICAgICAgICAgIG5hcnJvd0RheXNPZldlZWs6IG1vbWVudExvY2FsZURhdGEud2Vla2RheXNNaW4oKSxcbiAgICAgICAgICAgIGRhdGVzOiByYW5nZSgzMSwgKGkpID0+IHRoaXMuY3JlYXRlRGF0ZSgyMDE3LCAwLCBpICsgMSkuZm9ybWF0KCdEJykpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRZZWFyKGRhdGU6IE1vbWVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKGRhdGUpLnllYXIoKVxuICAgIH1cblxuICAgIGdldE1vbnRoKGRhdGU6IE1vbWVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKGRhdGUpLm1vbnRoKClcbiAgICB9XG5cbiAgICBnZXREYXkoZGF0ZTogTW9tZW50KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoZGF0ZSkuZGF5KClcbiAgICB9XG5cbiAgICBnZXREYXRlKGRhdGU6IE1vbWVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKGRhdGUpLmRhdGUoKVxuICAgIH1cblxuICAgIGdldEhvdXJzKGRhdGU6IE1vbWVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKGRhdGUpLmhvdXJzKClcbiAgICB9XG5cbiAgICBnZXRNaW51dGVzKGRhdGU6IE1vbWVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKGRhdGUpLm1pbnV0ZXMoKVxuICAgIH1cblxuICAgIGdldFNlY29uZHMoZGF0ZTogTW9tZW50KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoZGF0ZSkuc2Vjb25kcygpXG4gICAgfVxuXG4gICAgZ2V0VGltZShkYXRlOiBNb21lbnQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9uZShkYXRlKS52YWx1ZU9mKClcbiAgICB9XG5cbiAgICBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBNb21lbnQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9uZShkYXRlKS5kYXlzSW5Nb250aCgpXG4gICAgfVxuXG4gICAgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGVMZWZ0OiBNb21lbnQsIGRhdGVSaWdodDogTW9tZW50KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoZGF0ZUxlZnQpLmRpZmYoZGF0ZVJpZ2h0LCAnZGF5cycpXG4gICAgfVxuXG4gICAgZ2V0WWVhck5hbWUoZGF0ZTogTW9tZW50KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoZGF0ZSkuZm9ybWF0KCdZWVlZJylcbiAgICB9XG5cbiAgICBnZXRNb250aE5hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBzdHlsZSA9PT0gJ2xvbmcnID8gdGhpcy5fbG9jYWxlRGF0YS5sb25nTW9udGhzIDogdGhpcy5fbG9jYWxlRGF0YS5zaG9ydE1vbnRoc1xuICAgIH1cblxuICAgIGdldERheU9mV2Vla05hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmIChzdHlsZSA9PT0gJ2xvbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF0YS5sb25nRGF5c09mV2Vla1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdHlsZSA9PT0gJ3Nob3J0Jykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZURhdGEuc2hvcnREYXlzT2ZXZWVrXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZURhdGEubmFycm93RGF5c09mV2Vla1xuICAgIH1cblxuICAgIGdldERhdGVOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRhLmRhdGVzXG4gICAgfVxuXG4gICAgdG9Jc284NjAxKGRhdGU6IE1vbWVudCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKGRhdGUpLmZvcm1hdCgpXG4gICAgfVxuXG4gICAgaXNFcXVhbChkYXRlTGVmdDogTW9tZW50LCBkYXRlUmlnaHQ6IE1vbWVudCk6IGJvb2xlYW4ge1xuXG4gICAgICAgIGlmIChkYXRlTGVmdCAmJiBkYXRlUmlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKGRhdGVMZWZ0KS5pc1NhbWUodGhpcy5jbG9uZShkYXRlUmlnaHQpKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGVMZWZ0ID09PSBkYXRlUmlnaHRcbiAgICB9XG5cbiAgICBpc1NhbWVEYXkoZGF0ZUxlZnQ6IE1vbWVudCwgZGF0ZVJpZ2h0OiBNb21lbnQpOiBib29sZWFuIHtcblxuICAgICAgICBpZiAoZGF0ZUxlZnQgJiYgZGF0ZVJpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZShkYXRlTGVmdCkuaXNTYW1lKHRoaXMuY2xvbmUoZGF0ZVJpZ2h0KSwgJ2RheScpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZUxlZnQgPT09IGRhdGVSaWdodFxuICAgIH1cblxuICAgIGlzVmFsaWQoZGF0ZTogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKGRhdGUpLmlzVmFsaWQoKVxuICAgIH1cblxuICAgIGludmFsaWQoKTogTW9tZW50IHtcbiAgICAgICAgcmV0dXJuIG1vbWVudC5pbnZhbGlkKClcbiAgICB9XG5cbiAgICBpc0RhdGVJbnN0YW5jZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gbW9tZW50LmlzTW9tZW50KG9iailcbiAgICB9XG5cbiAgICBhZGRDYWxlbmRhclllYXJzKGRhdGU6IE1vbWVudCwgYW1vdW50OiBudW1iZXIpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9uZShkYXRlKS5hZGQoeyB5ZWFyczogYW1vdW50IH0pXG4gICAgfVxuXG4gICAgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogTW9tZW50LCBhbW91bnQ6IG51bWJlcik6IE1vbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKGRhdGUpLmFkZCh7IG1vbnRoczogYW1vdW50IH0pXG4gICAgfVxuXG4gICAgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IE1vbWVudCwgYW1vdW50OiBudW1iZXIpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9uZShkYXRlKS5hZGQoeyBkYXlzOiBhbW91bnQgfSlcbiAgICB9XG5cbiAgICBzZXRIb3VycyhkYXRlOiBNb21lbnQsIGFtb3VudDogbnVtYmVyKTogTW9tZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoZGF0ZSkuaG91cnMoYW1vdW50KVxuICAgIH1cblxuICAgIHNldE1pbnV0ZXMoZGF0ZTogTW9tZW50LCBhbW91bnQ6IG51bWJlcik6IE1vbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKGRhdGUpLm1pbnV0ZXMoYW1vdW50KVxuICAgIH1cblxuICAgIHNldFNlY29uZHMoZGF0ZTogTW9tZW50LCBhbW91bnQ6IG51bWJlcik6IE1vbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKGRhdGUpLnNlY29uZHMoYW1vdW50KVxuICAgIH1cblxuICAgIGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXRlOiBudW1iZXIpOiBNb21lbnRcbiAgICBjcmVhdGVEYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF0ZTogbnVtYmVyLCBob3VyczogbnVtYmVyID0gMCwgbWludXRlczogbnVtYmVyID0gMCwgc2Vjb25kczogbnVtYmVyID0gMCk6IE1vbWVudCB7XG4gICAgICAgIGlmIChtb250aCA8IDAgfHwgbW9udGggPiAxMSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgbW9udGggaW5kZXggXCIke21vbnRofVwiLiBNb250aCBpbmRleCBoYXMgdG8gYmUgYmV0d2VlbiAwIGFuZCAxMS5gKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGUgPCAxKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlIFwiJHtkYXRlfVwiLiBEYXRlIGhhcyB0byBiZSBncmVhdGVyIHRoYW4gMC5gKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhvdXJzIDwgMCB8fCBob3VycyA+IDIzKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBob3VycyBcIiR7aG91cnN9XCIuIEhvdXJzIGhhcyB0byBiZSBiZXR3ZWVuIDAgYW5kIDIzLmApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWludXRlcyA8IDAgfHwgbWludXRlcyA+IDU5KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBtaW51dGVzIFwiJHttaW51dGVzfVwiLiBNaW51dGVzIGhhcyB0byBiZXR3ZWVuIDAgYW5kIDU5LmApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2Vjb25kcyA8IDAgfHwgc2Vjb25kcyA+IDU5KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBzZWNvbmRzIFwiJHtzZWNvbmRzfVwiLiBTZWNvbmRzIGhhcyB0byBiZSBiZXR3ZWVuIDAgYW5kIDU5LmApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNyZWF0ZU1vbWVudCh7IHllYXIsIG1vbnRoLCBkYXRlLCBob3VycywgbWludXRlcywgc2Vjb25kcyB9KS5sb2NhbGUodGhpcy5sb2NhbGUpXG5cbiAgICAgICAgLy8gSWYgdGhlIHJlc3VsdCBpc24ndCB2YWxpZCwgdGhlIGRhdGUgbXVzdCBoYXZlIGJlZW4gb3V0IG9mIGJvdW5kcyBmb3IgdGhpcyBtb250aC5cbiAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlIFwiJHtkYXRlfVwiIGZvciBtb250aCB3aXRoIGluZGV4IFwiJHttb250aH1cIi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIGNsb25lKGRhdGU6IE1vbWVudCk6IE1vbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU1vbWVudChkYXRlKS5jbG9uZSgpLmxvY2FsZSh0aGlzLmxvY2FsZSlcbiAgICB9XG5cbiAgICBub3coKTogTW9tZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTW9tZW50KCkubG9jYWxlKHRoaXMubG9jYWxlKVxuICAgIH1cblxuICAgIGZvcm1hdChkYXRlOiBNb21lbnQsIGRpc3BsYXlGb3JtYXQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmNsb25lKGRhdGUpXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignTW9tZW50RGF0ZVRpbWVBZGFwdGVyOiBDYW5ub3QgZm9ybWF0IGludmFsaWQgZGF0ZS4nKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChkaXNwbGF5Rm9ybWF0KVxuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBhbnksIHBhcnNlRm9ybWF0OiBhbnkpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTW9tZW50KHZhbHVlLCBwYXJzZUZvcm1hdCwgdGhpcy5sb2NhbGUpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlID8gdGhpcy5jcmVhdGVNb21lbnQodmFsdWUpLmxvY2FsZSh0aGlzLmxvY2FsZSkgOiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBnaXZlbiB2YWx1ZSBpZiBnaXZlbiBhIHZhbGlkIE1vbWVudCBvciB1bmRlZmluZWQuIERlc2VyaWFsaXplcyB2YWxpZCBJU08gODYwMSBzdHJpbmdzXG4gICAgICogKGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMzM5LnR4dCkgYW5kIHZhbGlkIERhdGUgb2JqZWN0cyBpbnRvIHZhbGlkIE1vbWVudHMgYW5kIGVtcHR5XG4gICAgICogc3RyaW5nIGludG8gdW5kZWZpbmVkLiBSZXR1cm5zIGFuIGludmFsaWQgZGF0ZSBmb3IgYWxsIG90aGVyIHZhbHVlcy5cbiAgICAgKi9cbiAgICBvdmVycmlkZSBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55KTogTW9tZW50IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGRhdGVcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuY3JlYXRlTW9tZW50KHZhbHVlKVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuY3JlYXRlTW9tZW50KHZhbHVlLCBtb21lbnQuSVNPXzg2MDEpLmxvY2FsZSh0aGlzLmxvY2FsZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0ZSAmJiB0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1cGVyLmRlc2VyaWFsaXplKHZhbHVlKVxuICAgIH1cblxuICAgIC8qKiBDcmVhdGVzIGEgTW9tZW50IGluc3RhbmNlIHdoaWxlIHJlc3BlY3RpbmcgdGhlIGN1cnJlbnQgVVRDIHNldHRpbmdzICovXG4gICAgcHJpdmF0ZSBjcmVhdGVNb21lbnQoLi4uYXJnczogYW55W10pOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMudXNlVXRjKSA/IG1vbWVudC51dGMoLi4uYXJncykgOiBtb21lbnQoLi4uYXJncylcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @internal
|
|
3
|
-
*/
|
|
4
|
-
export const NXT_MOMENT_DATE_TIME_FORMATS = {
|
|
5
|
-
parseInput: 'l LT',
|
|
6
|
-
fullPickerInput: 'l LT',
|
|
7
|
-
datePickerInput: 'l',
|
|
8
|
-
timePickerInput: 'LT',
|
|
9
|
-
monthYearLabel: 'MMM YYYY',
|
|
10
|
-
dateA11yLabel: 'LL',
|
|
11
|
-
monthYearA11yLabel: 'MMMM YYYY'
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWZvcm1hdC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BpY2stZGF0ZXRpbWUvbW9tZW50LWFkYXB0ZXIvc3JjL2RhdGUtdGltZS1mb3JtYXQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBb0I7SUFDekQsVUFBVSxFQUFFLE1BQU07SUFDbEIsZUFBZSxFQUFFLE1BQU07SUFDdkIsZUFBZSxFQUFFLEdBQUc7SUFDcEIsZUFBZSxFQUFFLElBQUk7SUFDckIsY0FBYyxFQUFFLFVBQVU7SUFDMUIsYUFBYSxFQUFFLElBQUk7SUFDbkIsa0JBQWtCLEVBQUUsV0FBVztDQUNsQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVRpbWVGb3JtYXRzIH0gZnJvbSAnbnh0LXBpY2stZGF0ZXRpbWUnXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBOWFRfTU9NRU5UX0RBVEVfVElNRV9GT1JNQVRTOiBEYXRlVGltZUZvcm1hdHMgPSB7XG4gICAgcGFyc2VJbnB1dDogJ2wgTFQnLFxuICAgIGZ1bGxQaWNrZXJJbnB1dDogJ2wgTFQnLFxuICAgIGRhdGVQaWNrZXJJbnB1dDogJ2wnLFxuICAgIHRpbWVQaWNrZXJJbnB1dDogJ0xUJyxcbiAgICBtb250aFllYXJMYWJlbDogJ01NTSBZWVlZJyxcbiAgICBkYXRlQTExeUxhYmVsOiAnTEwnLFxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWSdcbn1cbiJdfQ==
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { LOCALE_ID, NgModule } from '@angular/core';
|
|
2
|
-
import { DateTimeAdapter, NXT_DATE_TIME_FORMATS } from 'nxt-pick-datetime';
|
|
3
|
-
import { MomentDateTimeAdapter, NXT_MOMENT_DATE_TIME_ADAPTER_OPTIONS } from './date-time-adapter.class';
|
|
4
|
-
import { NXT_MOMENT_DATE_TIME_FORMATS } from './date-time-format.class';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class MomentDateTimeModule {
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: MomentDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: MomentDateTimeModule }); }
|
|
9
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: MomentDateTimeModule, providers: [
|
|
10
|
-
{
|
|
11
|
-
provide: DateTimeAdapter,
|
|
12
|
-
useClass: MomentDateTimeAdapter,
|
|
13
|
-
deps: [LOCALE_ID, NXT_MOMENT_DATE_TIME_ADAPTER_OPTIONS]
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
provide: NXT_DATE_TIME_FORMATS,
|
|
17
|
-
useValue: NXT_MOMENT_DATE_TIME_FORMATS
|
|
18
|
-
}
|
|
19
|
-
] }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: MomentDateTimeModule, decorators: [{
|
|
22
|
-
type: NgModule,
|
|
23
|
-
args: [{
|
|
24
|
-
providers: [
|
|
25
|
-
{
|
|
26
|
-
provide: DateTimeAdapter,
|
|
27
|
-
useClass: MomentDateTimeAdapter,
|
|
28
|
-
deps: [LOCALE_ID, NXT_MOMENT_DATE_TIME_ADAPTER_OPTIONS]
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
provide: NXT_DATE_TIME_FORMATS,
|
|
32
|
-
useValue: NXT_MOMENT_DATE_TIME_FORMATS
|
|
33
|
-
}
|
|
34
|
-
]
|
|
35
|
-
}]
|
|
36
|
-
}] });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9tZW50LWFkYXB0ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGljay1kYXRldGltZS9tb21lbnQtYWRhcHRlci9zcmMvbW9tZW50LWFkYXB0ZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN2RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7QUFldkUsTUFBTSxPQUFPLG9CQUFvQjs4R0FBcEIsb0JBQW9COytHQUFwQixvQkFBb0I7K0dBQXBCLG9CQUFvQixhQVpsQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsb0NBQW9DLENBQUM7YUFDMUQ7WUFDRDtnQkFDSSxPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixRQUFRLEVBQUUsNEJBQTRCO2FBQ3pDO1NBQ0o7OzJGQUVRLG9CQUFvQjtrQkFiaEMsUUFBUTttQkFBQztvQkFDTixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxxQkFBcUI7NEJBQy9CLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxvQ0FBb0MsQ0FBQzt5QkFDMUQ7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLDRCQUE0Qjt5QkFDekM7cUJBQ0o7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMT0NBTEVfSUQsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IERhdGVUaW1lQWRhcHRlciwgTlhUX0RBVEVfVElNRV9GT1JNQVRTIH0gZnJvbSAnbnh0LXBpY2stZGF0ZXRpbWUnXG5pbXBvcnQgeyBNb21lbnREYXRlVGltZUFkYXB0ZXIsIE5YVF9NT01FTlRfREFURV9USU1FX0FEQVBURVJfT1BUSU9OUyB9IGZyb20gJy4vZGF0ZS10aW1lLWFkYXB0ZXIuY2xhc3MnXG5pbXBvcnQgeyBOWFRfTU9NRU5UX0RBVEVfVElNRV9GT1JNQVRTIH0gZnJvbSAnLi9kYXRlLXRpbWUtZm9ybWF0LmNsYXNzJ1xuXG5ATmdNb2R1bGUoe1xuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBEYXRlVGltZUFkYXB0ZXIsXG4gICAgICAgICAgICB1c2VDbGFzczogTW9tZW50RGF0ZVRpbWVBZGFwdGVyLFxuICAgICAgICAgICAgZGVwczogW0xPQ0FMRV9JRCwgTlhUX01PTUVOVF9EQVRFX1RJTUVfQURBUFRFUl9PUFRJT05TXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOWFRfREFURV9USU1FX0ZPUk1BVFMsXG4gICAgICAgICAgICB1c2VWYWx1ZTogTlhUX01PTUVOVF9EQVRFX1RJTUVfRk9STUFUU1xuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBNb21lbnREYXRlVGltZU1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnh0LXBpY2stZGF0ZXRpbWUtbW9tZW50LWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9waWNrLWRhdGV0aW1lL21vbWVudC1hZGFwdGVyL3NyYy9ueHQtcGljay1kYXRldGltZS1tb21lbnQtYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|