@worktile/gantt 12.1.0-next.0 → 12.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/bundles/worktile-gantt.umd.js +821 -907
  2. package/bundles/worktile-gantt.umd.js.map +1 -1
  3. package/class/event.d.ts +4 -0
  4. package/class/item.d.ts +4 -5
  5. package/components/calendar/{grid/calendar-grid.component.d.ts → calendar.component.d.ts} +10 -8
  6. package/components/links/links.component.d.ts +3 -2
  7. package/components/main/gantt-main.component.d.ts +4 -4
  8. package/components/table/gantt-table.component.d.ts +42 -0
  9. package/esm2015/class/event.js +3 -1
  10. package/esm2015/class/item.js +1 -1
  11. package/esm2015/components/bar/bar-drag.js +6 -1
  12. package/esm2015/components/calendar/calendar.component.js +86 -0
  13. package/esm2015/components/links/links.component.js +42 -19
  14. package/esm2015/components/main/gantt-main.component.js +5 -5
  15. package/esm2015/components/table/gantt-table.component.js +163 -0
  16. package/esm2015/gantt-dom.service.js +2 -5
  17. package/esm2015/gantt-drag-container.js +2 -1
  18. package/esm2015/gantt-item-upper.js +4 -5
  19. package/esm2015/gantt-print.service.js +2 -2
  20. package/esm2015/gantt-upper.js +110 -35
  21. package/esm2015/gantt.component.js +34 -169
  22. package/esm2015/gantt.config.js +13 -0
  23. package/esm2015/gantt.module.js +22 -18
  24. package/esm2015/public-api.js +2 -1
  25. package/esm2015/root.component.js +7 -8
  26. package/esm2015/table/gantt-table.component.js +9 -3
  27. package/esm2015/utils/helpers.js +10 -9
  28. package/esm2015/views/day.js +2 -2
  29. package/esm2015/views/month.js +3 -3
  30. package/esm2015/views/quarter.js +3 -3
  31. package/esm2015/views/view.js +4 -2
  32. package/esm2015/views/week.js +3 -3
  33. package/esm2015/views/year.js +2 -2
  34. package/fesm2015/worktile-gantt.js +794 -874
  35. package/fesm2015/worktile-gantt.js.map +1 -1
  36. package/gantt-dom.service.d.ts +0 -1
  37. package/gantt-drag-container.d.ts +1 -0
  38. package/gantt-upper.d.ts +23 -5
  39. package/gantt.component.d.ts +8 -27
  40. package/gantt.config.d.ts +23 -0
  41. package/gantt.module.d.ts +13 -16
  42. package/main.bundle.scss +206 -233
  43. package/package.json +1 -1
  44. package/public-api.d.ts +1 -0
  45. package/table/gantt-table.component.d.ts +4 -2
  46. package/utils/helpers.d.ts +3 -5
  47. package/views/view.d.ts +2 -0
  48. package/components/calendar/header/calendar-header.component.d.ts +0 -21
  49. package/components/table/body/gantt-table-body.component.d.ts +0 -24
  50. package/components/table/header/gantt-table-header.component.d.ts +0 -29
  51. package/esm2015/components/calendar/grid/calendar-grid.component.js +0 -76
  52. package/esm2015/components/calendar/header/calendar-header.component.js +0 -70
  53. package/esm2015/components/table/body/gantt-table-body.component.js +0 -68
  54. package/esm2015/components/table/header/gantt-table-header.component.js +0 -126
@@ -1,60 +1,32 @@
1
- import { Component, ChangeDetectionStrategy, Input, EventEmitter, Output, ContentChildren, ViewChild, ContentChild, Optional, forwardRef } from '@angular/core';
2
- import { startWith, takeUntil, take, finalize, skip } from 'rxjs/operators';
1
+ import { Component, ChangeDetectionStrategy, Input, EventEmitter, Output, ContentChildren, ContentChild, forwardRef, Inject } from '@angular/core';
2
+ import { startWith, takeUntil, take, finalize } from 'rxjs/operators';
3
3
  import { Subject } from 'rxjs';
4
4
  import { GanttUpper, GANTT_UPPER_TOKEN } from './gantt-upper';
5
5
  import { NgxGanttTableColumnComponent } from './table/gantt-column.component';
6
+ import { sideWidth } from './gantt.styles';
6
7
  import { coerceCssPixelValue } from '@angular/cdk/coercion';
7
8
  import { NgxGanttTableComponent } from './table/gantt-table.component';
8
- import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
9
- import { keyBy, recursiveItems, uniqBy } from './utils/helpers';
10
- import { GanttDomService, ScrollDirection } from './gantt-dom.service';
11
- import { GanttDragContainer } from './gantt-drag-container';
12
9
  import { GANTT_ABSTRACT_TOKEN } from './gantt-abstract';
13
- import { defaultColumnWidth } from './components/table/header/gantt-table-header.component';
10
+ import { defaultColumnWidth } from './components/table/gantt-table.component';
11
+ import { GANTT_GLOBAL_CONFIG } from './gantt.config';
14
12
  import * as i0 from "@angular/core";
15
- import * as i1 from "./gantt-dom.service";
16
- import * as i2 from "./gantt-drag-container";
17
- import * as i3 from "./gantt-print.service";
18
- import * as i4 from "./components/table/header/gantt-table-header.component";
19
- import * as i5 from "./components/calendar/header/calendar-header.component";
20
- import * as i6 from "@angular/cdk/scrolling";
21
- import * as i7 from "./components/table/body/gantt-table-body.component";
22
- import * as i8 from "./components/calendar/grid/calendar-grid.component";
23
- import * as i9 from "./components/main/gantt-main.component";
24
- import * as i10 from "./components/drag-backdrop/drag-backdrop.component";
13
+ import * as i1 from "./root.component";
14
+ import * as i2 from "./components/table/gantt-table.component";
15
+ import * as i3 from "./components/main/gantt-main.component";
25
16
  export class NgxGanttComponent extends GanttUpper {
26
- constructor(elementRef, cdr, ngZone, dom, dragContainer, printService) {
27
- super(elementRef, cdr, ngZone);
28
- this.dom = dom;
29
- this.dragContainer = dragContainer;
30
- this.printService = printService;
17
+ constructor(elementRef, cdr, ngZone, config) {
18
+ super(elementRef, cdr, ngZone, config);
31
19
  this.maxLevel = 2;
32
20
  this.linkDragStarted = new EventEmitter();
33
21
  this.linkDragEnded = new EventEmitter();
34
22
  this.lineClick = new EventEmitter();
35
- this.flatData = [];
36
- this.tempData = [];
23
+ this.selectedChange = new EventEmitter();
37
24
  this.ngUnsubscribe$ = new Subject();
38
- this.dragContainer = dragContainer;
39
- this.computeAllRefs = false;
25
+ this.sideTableWidth = sideWidth;
40
26
  }
41
27
  ngOnInit() {
42
28
  super.onInit();
43
- this.buildVirtualFlatData();
44
29
  this.ngZone.onStable.pipe(take(1)).subscribe(() => {
45
- this.dom.initialize(this.elementRef);
46
- if (this.printService) {
47
- this.printService.register(this.elementRef);
48
- }
49
- this.setupViewScroll();
50
- // 优化初始化时Scroll滚动体验问题,通过透明度解决,默认透明度为0,滚动结束后恢复
51
- this.elementRef.nativeElement.style.opacity = '1';
52
- this.viewChange.pipe(startWith(null)).subscribe(() => {
53
- this.scrollToToday();
54
- });
55
- this.dragContainer.dragEnded.subscribe((event) => {
56
- this.computeTempDataRefs();
57
- });
58
30
  this.dragContainer.linkDragStarted.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((event) => {
59
31
  this.linkDragStarted.emit(event);
60
32
  });
@@ -62,9 +34,6 @@ export class NgxGanttComponent extends GanttUpper {
62
34
  this.linkDragEnded.emit(event);
63
35
  });
64
36
  });
65
- this.view.start$.pipe(skip(1), takeUntil(this.unsubscribe$)).subscribe(() => {
66
- this.computeTempDataRefs();
67
- });
68
37
  }
69
38
  ngAfterViewInit() {
70
39
  this.columns.changes.pipe(startWith(true), takeUntil(this.ngUnsubscribe$)).subscribe(() => {
@@ -75,40 +44,9 @@ export class NgxGanttComponent extends GanttUpper {
75
44
  });
76
45
  this.cdr.detectChanges();
77
46
  });
78
- this.virtualScroll.renderedRangeStream.subscribe((range) => {
79
- const linksElement = this.elementRef.nativeElement.querySelector('.gantt-links-overlay');
80
- linksElement.style.top = `${-(this.styles.lineHeight * range.start)}px`;
81
- this.rangeStart = range.start;
82
- this.rangeEnd = range.end;
83
- this.tempData = this.flatData.slice(range.start, range.end);
84
- this.computeTempDataRefs();
85
- });
86
47
  }
87
48
  ngOnChanges(changes) {
88
49
  super.onChanges(changes);
89
- if (!this.firstChange) {
90
- if (changes.viewType && changes.viewType.currentValue) {
91
- this.tempData = this.flatData.slice(this.rangeStart, this.rangeEnd);
92
- this.computeTempDataRefs();
93
- }
94
- if (changes.originItems || changes.originGroups) {
95
- this.buildVirtualFlatData();
96
- this.tempData = this.flatData.slice(this.rangeStart, this.rangeEnd);
97
- this.computeTempDataRefs();
98
- }
99
- }
100
- }
101
- expandGroup(group) {
102
- group.setExpand(!group.expanded);
103
- this.afterExpand();
104
- this.expandChange.emit();
105
- this.cdr.detectChanges();
106
- }
107
- expandAll() {
108
- this.expandGroups(true);
109
- }
110
- collapseAll() {
111
- this.expandGroups(false);
112
50
  }
113
51
  expandChildren(item) {
114
52
  if (!item.expanded) {
@@ -118,7 +56,6 @@ export class NgxGanttComponent extends GanttUpper {
118
56
  this.childrenResolve(item.origin)
119
57
  .pipe(take(1), finalize(() => {
120
58
  item.loading = false;
121
- this.afterExpand();
122
59
  this.expandChange.emit();
123
60
  this.cdr.detectChanges();
124
61
  }))
@@ -129,107 +66,37 @@ export class NgxGanttComponent extends GanttUpper {
129
66
  }
130
67
  else {
131
68
  this.computeItemsRefs(...item.children);
132
- this.afterExpand();
133
69
  this.expandChange.emit();
134
70
  }
135
71
  }
136
72
  else {
137
73
  item.setExpand(false);
138
- this.afterExpand();
139
74
  this.expandChange.emit();
140
75
  }
141
76
  }
142
- buildVirtualFlatData() {
143
- const virtualData = [];
144
- if (this.groups.length) {
145
- this.groups.forEach((group) => {
146
- virtualData.push(group);
147
- if (group.expanded) {
148
- const items = recursiveItems(group.items, 0);
149
- virtualData.push(...items);
150
- }
151
- });
77
+ selectItem(selectEvent) {
78
+ var _a;
79
+ if (!this.selectable) {
80
+ return;
152
81
  }
153
- if (this.items.length) {
154
- virtualData.push(...recursiveItems(this.items, 0));
82
+ const { event, selectedValue } = selectEvent;
83
+ this.selectionModel.toggle(selectedValue.id);
84
+ const selectedIds = this.selectionModel.selected;
85
+ if (this.multiple) {
86
+ const selectedValue = this.getGanttItems(selectedIds).map((item) => item.origin);
87
+ this.selectedChange.emit({ event, selectedValue });
155
88
  }
156
- this.flatData = [...virtualData];
157
- this.flatDataMap = keyBy(this.flatData, 'id');
158
- }
159
- afterExpand() {
160
- this.buildVirtualFlatData();
161
- this.tempData = this.flatData.slice(this.rangeStart, this.rangeEnd);
162
- }
163
- trackBy(item, index) {
164
- return item.id || index;
165
- }
166
- scrollToToday() {
167
- const x = this.view.getTodayXPoint();
168
- this.dom.scrollMainContainer(x);
169
- }
170
- setupViewScroll() {
171
- if (this.disabledLoadOnScroll) {
172
- return;
89
+ else {
90
+ const selectedValue = (_a = this.getGanttItem(selectedIds[0])) === null || _a === void 0 ? void 0 : _a.origin;
91
+ this.selectedChange.emit({ event, selectedValue });
173
92
  }
174
- this.dom
175
- .getViewerScroll()
176
- .pipe(takeUntil(this.unsubscribe$))
177
- .subscribe((event) => {
178
- if (event.direction === ScrollDirection.LEFT) {
179
- const dates = this.view.addStartDate();
180
- if (dates) {
181
- event.target.scrollLeft += this.view.getDateRangeWidth(dates.start, dates.end);
182
- this.ngZone.run(() => {
183
- this.loadOnScroll.emit({ start: dates.start.getUnixTime(), end: dates.end.getUnixTime() });
184
- });
185
- }
186
- }
187
- if (event.direction === ScrollDirection.RIGHT) {
188
- const dates = this.view.addEndDate();
189
- if (dates) {
190
- this.ngZone.run(() => {
191
- this.loadOnScroll.emit({ start: dates.start.getUnixTime(), end: dates.end.getUnixTime() });
192
- });
193
- }
194
- }
195
- this.cdr.detectChanges();
196
- });
197
- }
198
- expandGroups(expanded) {
199
- this.groups.forEach((group) => {
200
- group.setExpand(expanded);
201
- });
202
- this.afterExpand();
203
- this.expandChange.next();
204
- this.cdr.detectChanges();
205
- }
206
- computeTempDataRefs() {
207
- const tempItemData = [];
208
- this.tempData.forEach((data) => {
209
- if (!data.hasOwnProperty('items')) {
210
- const item = data;
211
- if (item.links) {
212
- item.links.forEach((link) => {
213
- if (this.flatDataMap[link]) {
214
- tempItemData.push(this.flatDataMap[link]);
215
- }
216
- });
217
- }
218
- tempItemData.push(data);
219
- }
220
- });
221
- this.computeItemsRefs(...uniqBy(tempItemData, 'id'));
222
- this.flatData = [...this.flatData];
223
- this.tempData = [...this.tempData];
224
93
  }
225
94
  ngOnDestroy() {
226
95
  super.onDestroy();
227
96
  }
228
97
  }
229
- NgxGanttComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: NgxGanttComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.GanttDomService }, { token: i2.GanttDragContainer }, { token: i3.GanttPrintService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
230
- NgxGanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: NgxGanttComponent, selector: "ngx-gantt", inputs: { maxLevel: "maxLevel", async: "async", childrenResolve: "childrenResolve", linkable: "linkable" }, outputs: { linkDragStarted: "linkDragStarted", linkDragEnded: "linkDragEnded", lineClick: "lineClick" }, providers: [
231
- GanttDomService,
232
- GanttDragContainer,
98
+ NgxGanttComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: NgxGanttComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: GANTT_GLOBAL_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
99
+ NgxGanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: NgxGanttComponent, selector: "ngx-gantt", inputs: { maxLevel: "maxLevel", async: "async", childrenResolve: "childrenResolve", linkable: "linkable" }, outputs: { linkDragStarted: "linkDragStarted", linkDragEnded: "linkDragEnded", lineClick: "lineClick", selectedChange: "selectedChange" }, providers: [
233
100
  {
234
101
  provide: GANTT_UPPER_TOKEN,
235
102
  useExisting: NgxGanttComponent
@@ -238,7 +105,7 @@ NgxGanttComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
238
105
  provide: GANTT_ABSTRACT_TOKEN,
239
106
  useExisting: forwardRef(() => NgxGanttComponent)
240
107
  }
241
- ], queries: [{ propertyName: "table", first: true, predicate: NgxGanttTableComponent, descendants: true }, { propertyName: "tableEmptyTemplate", first: true, predicate: ["tableEmpty"], descendants: true, static: true }, { propertyName: "columns", predicate: NgxGanttTableColumnComponent, descendants: true }], viewQueries: [{ propertyName: "virtualScroll", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"gantt-header\">\n <gantt-table-header #tableHeader [columns]=\"columns\"></gantt-table-header>\n <div class=\"gantt-container-header\">\n <gantt-calendar-header></gantt-calendar-header>\n </div>\n</div>\n\n<cdk-virtual-scroll-viewport\n class=\"gantt-virtual-scroll-viewport\"\n [itemSize]=\"styles.lineHeight\"\n [minBufferPx]=\"styles.lineHeight * 10\"\n [maxBufferPx]=\"styles.lineHeight * 20\"\n>\n <ng-container *cdkVirtualFor=\"let item of flatData; trackBy: trackBy\"></ng-container>\n <div class=\"gantt-side\" [style.width.px]=\"tableHeader.tableWidth\">\n <div class=\"gantt-side-container\">\n <gantt-table-body\n [tempData]=\"tempData\"\n [columns]=\"columns\"\n [groupTemplate]=\"groupTemplate\"\n [emptyTemplate]=\"tableEmptyTemplate\"\n ></gantt-table-body>\n </div>\n </div>\n <div class=\"gantt-container\">\n <gantt-calendar-grid></gantt-calendar-grid>\n <div class=\"gantt-main\">\n <gantt-main\n [tempData]=\"tempData\"\n [flatData]=\"flatData\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n (barClick)=\"barClick.emit($event)\"\n (lineClick)=\"lineClick.emit($event)\"\n >\n </gantt-main>\n </div>\n </div>\n</cdk-virtual-scroll-viewport>\n\n<gantt-drag-backdrop [style.left.px]=\"tableHeader.tableWidth\"></gantt-drag-backdrop>\n", components: [{ type: i4.GanttTableHeaderComponent, selector: "gantt-table-header", inputs: ["columns"] }, { type: i5.GanttCalendarHeaderComponent, selector: "gantt-calendar-header" }, { type: i6.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i7.GanttTableBodyComponent, selector: "gantt-table-body", inputs: ["tempData", "columns", "groupTemplate", "emptyTemplate"] }, { type: i8.GanttCalendarGridComponent, selector: "gantt-calendar-grid" }, { type: i9.GanttMainComponent, selector: "gantt-main", inputs: ["tempData", "flatData", "groupHeaderTemplate", "itemTemplate", "barTemplate", "rangeTemplate"], outputs: ["barClick", "lineClick"] }, { type: i10.GanttDragBackdropComponent, selector: "gantt-drag-backdrop" }], directives: [{ type: i6.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i6.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
108
+ ], queries: [{ propertyName: "table", first: true, predicate: NgxGanttTableComponent, descendants: true }, { propertyName: "tableEmptyTemplate", first: true, predicate: ["tableEmpty"], descendants: true, static: true }, { propertyName: "columns", predicate: NgxGanttTableColumnComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ngx-gantt-root>\n <ng-template #sideTemplate>\n <gantt-table\n [groups]=\"groups\"\n [items]=\"items\"\n [columns]=\"columns\"\n [groupTemplate]=\"groupTemplate\"\n [emptyTemplate]=\"tableEmptyTemplate\"\n [rowBeforeTemplate]=\"table?.rowBeforeTemplate\"\n [rowAfterTemplate]=\"table?.rowAfterTemplate\"\n (itemClick)=\"selectItem($event)\"\n ></gantt-table>\n </ng-template>\n <ng-template #mainTemplate>\n <gantt-main\n [groups]=\"groups\"\n [items]=\"items\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n (barClick)=\"barClick.emit($event)\"\n (lineClick)=\"lineClick.emit($event)\"\n >\n </gantt-main>\n </ng-template>\n</ngx-gantt-root>\n", components: [{ type: i1.NgxGanttRootComponent, selector: "ngx-gantt-root", inputs: ["sideWidth"] }, { type: i2.GanttTableComponent, selector: "gantt-table", inputs: ["groups", "items", "columns", "groupTemplate", "emptyTemplate", "rowBeforeTemplate", "rowAfterTemplate"], outputs: ["itemClick"] }, { type: i3.GanttMainComponent, selector: "gantt-main", inputs: ["groups", "items", "groupHeaderTemplate", "itemTemplate", "barTemplate", "rangeTemplate"], outputs: ["barClick", "lineClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
242
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: NgxGanttComponent, decorators: [{
243
110
  type: Component,
244
111
  args: [{
@@ -246,8 +113,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
246
113
  templateUrl: './gantt.component.html',
247
114
  changeDetection: ChangeDetectionStrategy.OnPush,
248
115
  providers: [
249
- GanttDomService,
250
- GanttDragContainer,
251
116
  {
252
117
  provide: GANTT_UPPER_TOKEN,
253
118
  useExisting: NgxGanttComponent
@@ -258,8 +123,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
258
123
  }
259
124
  ]
260
125
  }]
261
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.GanttDomService }, { type: i2.GanttDragContainer }, { type: i3.GanttPrintService, decorators: [{
262
- type: Optional
126
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
127
+ type: Inject,
128
+ args: [GANTT_GLOBAL_CONFIG]
263
129
  }] }]; }, propDecorators: { maxLevel: [{
264
130
  type: Input
265
131
  }], async: [{
@@ -274,6 +140,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
274
140
  type: Output
275
141
  }], lineClick: [{
276
142
  type: Output
143
+ }], selectedChange: [{
144
+ type: Output
277
145
  }], table: [{
278
146
  type: ContentChild,
279
147
  args: [NgxGanttTableComponent]
@@ -283,8 +151,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
283
151
  }], tableEmptyTemplate: [{
284
152
  type: ContentChild,
285
153
  args: ['tableEmpty', { static: true }]
286
- }], virtualScroll: [{
287
- type: ViewChild,
288
- args: [CdkVirtualScrollViewport]
289
154
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2dhbnR0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9nYW50dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUdULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFNTixlQUFlLEVBR2YsU0FBUyxFQUNULFlBQVksRUFFWixRQUFRLEVBQ1IsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xFLE9BQU8sRUFBYyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxF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aUI7NEJBQzFCLFdBQVcsbUJBQW1CO3lCQUNqQzt3QkFDRDs0QkFDSSxPQUFPLEVBQUUsb0JBQW9COzRCQUM3QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQzt5QkFDbkQ7cUJBQ0o7aUJBQ0o7OzBCQTBDUSxRQUFROzRDQXhDSixRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRStCLEtBQUs7c0JBQTFDLFlBQVk7dUJBQUMsc0JBQXNCO2dCQUVrQyxPQUFPO3NCQUE1RSxlQUFlO3VCQUFDLDRCQUE0QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFFdEIsa0JBQWtCO3NCQUEvRCxZQUFZO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRVAsYUFBYTtzQkFBakQsU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgRWxlbWVudFJlZixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgT3B0aW9uYWwsXG4gICAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YWtlLCBmaW5hbGl6ZSwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdhbnR0VXBwZXIsIEdBTlRUX1VQUEVSX1RPS0VOIH0gZnJvbSAnLi9nYW50dC11cHBlcic7XG5pbXBvcnQgeyBHYW50dExpbmtEcmFnRXZlbnQsIEdhbnR0TGluZUNsaWNrRXZlbnQsIEdhbnR0SXRlbUludGVybmFsLCBHYW50dEl0ZW0sIEdhbnR0R3JvdXBJbnRlcm5hbCB9IGZyb20gJy4vY2xhc3MnO1xuaW1wb3J0IHsgTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUvZ2FudHQtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb2VyY2VDc3NQaXhlbFZhbHVlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IE5neEdhbnR0VGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlL2dhbnR0LXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IERpY3Rpb25hcnksIGtleUJ5LCByZWN1cnNpdmVJdGVtcywgdW5pcUJ5IH0gZnJvbSAnLi91dGlscy9oZWxwZXJzJztcbmltcG9ydCB7IEdhbnR0RG9tU2VydmljZSwgU2Nyb2xsRGlyZWN0aW9uIH0gZnJvbSAnLi9nYW50dC1kb20uc2VydmljZSc7XG5pbXBvcnQgeyBHYW50dERyYWdDb250YWluZXIgfSBmcm9tICcuL2dhbnR0LWRyYWctY29udGFpbmVyJztcbmltcG9ydCB7IEdhbnR0UHJpbnRTZXJ2aWNlIH0gZnJvbSAnLi9nYW50dC1wcmludC5zZXJ2aWNlJztcbmltcG9ydCB7IEdBTlRUX0FCU1RSQUNUX1RPS0VOIH0gZnJvbSAnLi9nYW50dC1hYnN0cmFjdCc7XG5pbXBvcnQgeyBkZWZhdWx0Q29sdW1uV2lkdGggfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvaGVhZGVyL2dhbnR0LXRhYmxlLWhlYWRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1nYW50dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dhbnR0LmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgR2FudHREb21TZXJ2aWNlLFxuICAgICAgICBHYW50dERyYWdDb250YWluZXIsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEdBTlRUX1VQUEVSX1RPS0VOLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IE5neEdhbnR0Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEdBTlRUX0FCU1RSQUNUX1RPS0VOLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmd4R2FudHRDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbnR0Q29tcG9uZW50IGV4dGVuZHMgR2FudHRVcHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIG1heExldmVsID0gMjtcblxuICAgIEBJbnB1dCgpIGFzeW5jOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgY2hpbGRyZW5SZXNvbHZlOiAoR2FudHRJdGVtKSA9PiBPYnNlcnZhYmxlPEdhbnR0SXRlbVtdPjtcblxuICAgIEBJbnB1dCgpIGxpbmthYmxlOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIGxpbmtEcmFnU3RhcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHRMaW5rRHJhZ0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIGxpbmtEcmFnRW5kZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0TGlua0RyYWdFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSBsaW5lQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0TGluZUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBAQ29udGVudENoaWxkKE5neEdhbnR0VGFibGVDb21wb25lbnQpIHRhYmxlOiBOZ3hHYW50dFRhYmxlQ29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGNvbHVtbnM6IFF1ZXJ5TGlzdDxOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3RhYmxlRW1wdHknLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZUVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCkgdmlydHVhbFNjcm9sbDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgcHVibGljIGZsYXREYXRhOiAoR2FudHRHcm91cEludGVybmFsIHwgR2FudHRJdGVtSW50ZXJuYWwpW10gPSBbXTtcblxuICAgIHB1YmxpYyB0ZW1wRGF0YTogKEdhbnR0R3JvdXBJbnRlcm5hbCB8IEdhbnR0SXRlbUludGVybmFsKVtdID0gW107XG5cbiAgICBwcml2YXRlIHJhbmdlU3RhcnQ6IG51bWJlcjtcblxuICAgIHByaXZhdGUgcmFuZ2VFbmQ6IG51bWJlcjtcblxuICAgIHByaXZhdGUgZmxhdERhdGFNYXA6IERpY3Rpb25hcnk8R2FudHRHcm91cEludGVybmFsIHwgR2FudHRJdGVtSW50ZXJuYWw+O1xuXG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGRvbTogR2FudHREb21TZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZHJhZ0NvbnRhaW5lcjogR2FudHREcmFnQ29udGFpbmVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHByaW50U2VydmljZTogR2FudHRQcmludFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBuZ1pvbmUpO1xuICAgICAgICB0aGlzLmRyYWdDb250YWluZXIgPSBkcmFnQ29udGFpbmVyO1xuICAgICAgICB0aGlzLmNvbXB1dGVBbGxSZWZzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm9uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMuYnVpbGRWaXJ0dWFsRmxhdERhdGEoKTtcblxuICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvbS5pbml0aWFsaXplKHRoaXMuZWxlbWVudFJlZik7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmludFNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByaW50U2VydmljZS5yZWdpc3Rlcih0aGlzLmVsZW1lbnRSZWYpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldHVwVmlld1Njcm9sbCgpO1xuICAgICAgICAgICAgLy8g5LyY5YyW5Yid5aeL5YyW5pe2U2Nyb2xs5rua5Yqo5L2T6aqM6Zeu6aKY77yM6YCa6L+H6YCP5piO5bqm6Kej5Yaz77yM6buY6K6k6YCP5piO5bqm5Li6MO+8jOa7muWKqOe7k+adn+WQjuaBouWkjVxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3BhY2l0eSA9ICcxJztcbiAgICAgICAgICAgIHRoaXMudmlld0NoYW5nZS5waXBlKHN0YXJ0V2l0aChudWxsKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvVG9kYXkoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ0VuZGVkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVUZW1wRGF0YVJlZnMoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIubGlua0RyYWdTdGFydGVkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKGV2ZW50OiBHYW50dExpbmtEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmtEcmFnU3RhcnRlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIubGlua0RyYWdFbmRlZC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKChldmVudDogR2FudHRMaW5rRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rRHJhZ0VuZGVkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudmlldy5zdGFydCQucGlwZShza2lwKDEpLCB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wdXRlVGVtcERhdGFSZWZzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5zLmNoYW5nZXMucGlwZShzdGFydFdpdGgodHJ1ZSksIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbHVtbi5jb2x1bW5XaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY29sdW1uV2lkdGggPSBjb2VyY2VDc3NQaXhlbFZhbHVlKGRlZmF1bHRDb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudmlydHVhbFNjcm9sbC5yZW5kZXJlZFJhbmdlU3RyZWFtLnN1YnNjcmliZSgocmFuZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmtzRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5nYW50dC1saW5rcy1vdmVybGF5JykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgICAgICBsaW5rc0VsZW1lbnQuc3R5bGUudG9wID0gYCR7LSh0aGlzLnN0eWxlcy5saW5lSGVpZ2h0ICogcmFuZ2Uuc3RhcnQpfXB4YDtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VTdGFydCA9IHJhbmdlLnN0YXJ0O1xuICAgICAgICAgICAgdGhpcy5yYW5nZUVuZCA9IHJhbmdlLmVuZDtcbiAgICAgICAgICAgIHRoaXMudGVtcERhdGEgPSB0aGlzLmZsYXREYXRhLnNsaWNlKHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpO1xuICAgICAgICAgICAgdGhpcy5jb21wdXRlVGVtcERhdGFSZWZzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgc3VwZXIub25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBpZiAoIXRoaXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VzLnZpZXdUeXBlICYmIGNoYW5nZXMudmlld1R5cGUuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZW1wRGF0YSA9IHRoaXMuZmxhdERhdGEuc2xpY2UodGhpcy5yYW5nZVN0YXJ0LCB0aGlzLnJhbmdlRW5kKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVUZW1wRGF0YVJlZnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGFuZ2VzLm9yaWdpbkl0ZW1zIHx8IGNoYW5nZXMub3JpZ2luR3JvdXBzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZFZpcnR1YWxGbGF0RGF0YSgpO1xuICAgICAgICAgICAgICAgIHRoaXMudGVtcERhdGEgPSB0aGlzLmZsYXREYXRhLnNsaWNlKHRoaXMucmFuZ2VTdGFydCwgdGhpcy5yYW5nZUVuZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlVGVtcERhdGFSZWZzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHBhbmRHcm91cChncm91cDogR2FudHRHcm91cEludGVybmFsKSB7XG4gICAgICAgIGdyb3VwLnNldEV4cGFuZCghZ3JvdXAuZXhwYW5kZWQpO1xuICAgICAgICB0aGlzLmFmdGVyRXhwYW5kKCk7XG4gICAgICAgIHRoaXMuZXhwYW5kQ2hhbmdlLmVtaXQoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIGV4cGFuZEFsbCgpIHtcbiAgICAgICAgdGhpcy5leHBhbmRHcm91cHModHJ1ZSk7XG4gICAgfVxuXG4gICAgY29sbGFwc2VBbGwoKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kR3JvdXBzKGZhbHNlKTtcbiAgICB9XG5cbiAgICBleHBhbmRDaGlsZHJlbihpdGVtOiBHYW50dEl0ZW1JbnRlcm5hbCkge1xuICAgICAgICBpZiAoIWl0ZW0uZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIGl0ZW0uc2V0RXhwYW5kKHRydWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuYXN5bmMgJiYgdGhpcy5jaGlsZHJlblJlc29sdmUgJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpdGVtLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5SZXNvbHZlKGl0ZW0ub3JpZ2luKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZnRlckV4cGFuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kQ2hhbmdlLmVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmFkZENoaWxkcmVuKGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUl0ZW1zUmVmcyguLi5pdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUl0ZW1zUmVmcyguLi5pdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFmdGVyRXhwYW5kKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRDaGFuZ2UuZW1pdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbS5zZXRFeHBhbmQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5hZnRlckV4cGFuZCgpO1xuICAgICAgICAgICAgdGhpcy5leHBhbmRDaGFuZ2UuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRWaXJ0dWFsRmxhdERhdGEoKSB7XG4gICAgICAgIGNvbnN0IHZpcnR1YWxEYXRhID0gW107XG4gICAgICAgIGlmICh0aGlzLmdyb3Vwcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgdmlydHVhbERhdGEucHVzaChncm91cCk7XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gcmVjdXJzaXZlSXRlbXMoZ3JvdXAuaXRlbXMsIDApO1xuICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsRGF0YS5wdXNoKC4uLml0ZW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgdmlydHVhbERhdGEucHVzaCguLi5yZWN1cnNpdmVJdGVtcyh0aGlzLml0ZW1zLCAwKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mbGF0RGF0YSA9IFsuLi52aXJ0dWFsRGF0YV07XG4gICAgICAgIHRoaXMuZmxhdERhdGFNYXAgPSBrZXlCeSh0aGlzLmZsYXREYXRhLCAnaWQnKTtcbiAgICB9XG5cbiAgICBhZnRlckV4cGFuZCgpIHtcbiAgICAgICAgdGhpcy5idWlsZFZpcnR1YWxGbGF0RGF0YSgpO1xuICAgICAgICB0aGlzLnRlbXBEYXRhID0gdGhpcy5mbGF0RGF0YS5zbGljZSh0aGlzLnJhbmdlU3RhcnQsIHRoaXMucmFuZ2VFbmQpO1xuICAgIH1cblxuICAgIHRyYWNrQnkoaXRlbTogR2FudHRHcm91cEludGVybmFsIHwgR2FudHRJdGVtSW50ZXJuYWwsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgfHwgaW5kZXg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY3JvbGxUb1RvZGF5KCkge1xuICAgICAgICBjb25zdCB4ID0gdGhpcy52aWV3LmdldFRvZGF5WFBvaW50KCk7XG4gICAgICAgIHRoaXMuZG9tLnNjcm9sbE1haW5Db250YWluZXIoeCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cFZpZXdTY3JvbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkTG9hZE9uU2Nyb2xsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kb21cbiAgICAgICAgICAgIC5nZXRWaWV3ZXJTY3JvbGwoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRpcmVjdGlvbiA9PT0gU2Nyb2xsRGlyZWN0aW9uLkxFRlQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZXMgPSB0aGlzLnZpZXcuYWRkU3RhcnREYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnNjcm9sbExlZnQgKz0gdGhpcy52aWV3LmdldERhdGVSYW5nZVdpZHRoKGRhdGVzLnN0YXJ0LCBkYXRlcy5lbmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRPblNjcm9sbC5lbWl0KHsgc3RhcnQ6IGRhdGVzLnN0YXJ0LmdldFVuaXhUaW1lKCksIGVuZDogZGF0ZXMuZW5kLmdldFVuaXhUaW1lKCkgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGlyZWN0aW9uID09PSBTY3JvbGxEaXJlY3Rpb24uUklHSFQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZXMgPSB0aGlzLnZpZXcuYWRkRW5kRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkT25TY3JvbGwuZW1pdCh7IHN0YXJ0OiBkYXRlcy5zdGFydC5nZXRVbml4VGltZSgpLCBlbmQ6IGRhdGVzLmVuZC5nZXRVbml4VGltZSgpIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHBhbmRHcm91cHMoZXhwYW5kZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgICAgIGdyb3VwLnNldEV4cGFuZChleHBhbmRlZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWZ0ZXJFeHBhbmQoKTtcbiAgICAgICAgdGhpcy5leHBhbmRDaGFuZ2UubmV4dCgpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlVGVtcERhdGFSZWZzKCkge1xuICAgICAgICBjb25zdCB0ZW1wSXRlbURhdGEgPSBbXTtcbiAgICAgICAgdGhpcy50ZW1wRGF0YS5mb3JFYWNoKChkYXRhOiBHYW50dEdyb3VwSW50ZXJuYWwgfCBHYW50dEl0ZW1JbnRlcm5hbCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KCdpdGVtcycpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGRhdGEgYXMgR2FudHRJdGVtSW50ZXJuYWw7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGlua3MpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5saW5rcy5mb3JFYWNoKChsaW5rKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mbGF0RGF0YU1hcFtsaW5rXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBJdGVtRGF0YS5wdXNoKHRoaXMuZmxhdERhdGFNYXBbbGlua10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGVtcEl0ZW1EYXRhLnB1c2goZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbXB1dGVJdGVtc1JlZnMoLi4udW5pcUJ5KHRlbXBJdGVtRGF0YSwgJ2lkJykpO1xuICAgICAgICB0aGlzLmZsYXREYXRhID0gWy4uLnRoaXMuZmxhdERhdGFdO1xuICAgICAgICB0aGlzLnRlbXBEYXRhID0gWy4uLnRoaXMudGVtcERhdGFdO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5vbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2FudHQtaGVhZGVyXCI+XG4gIDxnYW50dC10YWJsZS1oZWFkZXIgI3RhYmxlSGVhZGVyIFtjb2x1bW5zXT1cImNvbHVtbnNcIj48L2dhbnR0LXRhYmxlLWhlYWRlcj5cbiAgPGRpdiBjbGFzcz1cImdhbnR0LWNvbnRhaW5lci1oZWFkZXJcIj5cbiAgICA8Z2FudHQtY2FsZW5kYXItaGVhZGVyPjwvZ2FudHQtY2FsZW5kYXItaGVhZGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gIGNsYXNzPVwiZ2FudHQtdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcIlxuICBbaXRlbVNpemVdPVwic3R5bGVzLmxpbmVIZWlnaHRcIlxuICBbbWluQnVmZmVyUHhdPVwic3R5bGVzLmxpbmVIZWlnaHQgKiAxMFwiXG4gIFttYXhCdWZmZXJQeF09XCJzdHlsZXMubGluZUhlaWdodCAqIDIwXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqY2RrVmlydHVhbEZvcj1cImxldCBpdGVtIG9mIGZsYXREYXRhOyB0cmFja0J5OiB0cmFja0J5XCI+PC9uZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJnYW50dC1zaWRlXCIgW3N0eWxlLndpZHRoLnB4XT1cInRhYmxlSGVhZGVyLnRhYmxlV2lkdGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ2FudHQtc2lkZS1jb250YWluZXJcIj5cbiAgICAgIDxnYW50dC10YWJsZS1ib2R5XG4gICAgICAgIFt0ZW1wRGF0YV09XCJ0ZW1wRGF0YVwiXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICBbZ3JvdXBUZW1wbGF0ZV09XCJncm91cFRlbXBsYXRlXCJcbiAgICAgICAgW2VtcHR5VGVtcGxhdGVdPVwidGFibGVFbXB0eVRlbXBsYXRlXCJcbiAgICAgID48L2dhbnR0LXRhYmxlLWJvZHk+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZ2FudHQtY29udGFpbmVyXCI+XG4gICAgPGdhbnR0LWNhbGVuZGFyLWdyaWQ+PC9nYW50dC1jYWxlbmRhci1ncmlkPlxuICAgIDxkaXYgY2xhc3M9XCJnYW50dC1tYWluXCI+XG4gICAgICA8Z2FudHQtbWFpblxuICAgICAgICBbdGVtcERhdGFdPVwidGVtcERhdGFcIlxuICAgICAgICBbZmxhdERhdGFdPVwiZmxhdERhdGFcIlxuICAgICAgICBbZ3JvdXBIZWFkZXJUZW1wbGF0ZV09XCJncm91cEhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgICBbYmFyVGVtcGxhdGVdPVwiYmFyVGVtcGxhdGVcIlxuICAgICAgICBbcmFuZ2VUZW1wbGF0ZV09XCJyYW5nZVRlbXBsYXRlXCJcbiAgICAgICAgKGJhckNsaWNrKT1cImJhckNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChsaW5lQ2xpY2spPVwibGluZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICA8L2dhbnR0LW1haW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG5cbjxnYW50dC1kcmFnLWJhY2tkcm9wIFtzdHlsZS5sZWZ0LnB4XT1cInRhYmxlSGVhZGVyLnRhYmxlV2lkdGhcIj48L2dhbnR0LWRyYWctYmFja2Ryb3A+XG4iXX0=
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2dhbnR0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9nYW50dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUdULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFNTixlQUFlLEVBR2YsWUFBWSxFQUVaLFVBQVUsRUFDVixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDOUUsT0FBTyxFQUFxQixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQWdCeEUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFVBQVU7SUEyQjdDLFlBQ0ksVUFBbUMsRUFDbkMsR0FBc0IsRUFDdEIsTUFBYyxFQUNlLE1BQXlCO1FBRXRELEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQWhDbEMsYUFBUSxHQUFHLENBQUMsQ0FBQztRQVFaLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFFekQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUV2RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFFcEQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQVExRCxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFaEMsbUJBQWMsR0FBRyxTQUFTLENBQUM7SUFTbEMsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFZixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQXlCLEVBQUUsRUFBRTtnQkFDNUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQXlCLEVBQUUsRUFBRTtnQkFDMUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0RixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtvQkFDckIsTUFBTSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2lCQUNoRTtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQXVCO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNsRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO3FCQUM1QixJQUFJLENBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFFBQVEsQ0FBQyxHQUFHLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxDQUNMO3FCQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVDLENBQUMsQ0FBQyxDQUFDO2FBQ1Y7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzVCO1NBQ0o7YUFBTTtZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBK0I7O1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xCLE9BQU87U0FDVjtRQUNELE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsV0FBVyxDQUFDO1FBQzdDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFFLGFBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFNUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQ3REO2FBQU07WUFDSCxNQUFNLGFBQWEsR0FBRyxNQUFBLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBDQUFFLE1BQU0sQ0FBQztZQUNoRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQ3REO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7OEdBL0dRLGlCQUFpQixtR0ErQmQsbUJBQW1CO2tHQS9CdEIsaUJBQWlCLDJSQVhmO1FBQ1A7WUFDSSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxpQkFBaUI7U0FDakM7UUFDRDtZQUNJLE9BQU8sRUFBRSxvQkFBb0I7WUFDN0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztTQUNuRDtLQUNKLDZEQW1CYSxzQkFBc0IsOEtBRW5CLDRCQUE0Qiw0RkNsRWpELG0xQkEyQkE7MkZEb0JhLGlCQUFpQjtrQkFmN0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsV0FBVyxFQUFFLHdCQUF3QjtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLG1CQUFtQjt5QkFDakM7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLG9CQUFvQjs0QkFDN0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7eUJBQ25EO3FCQUNKO2lCQUNKOzswQkFnQ1EsTUFBTTsyQkFBQyxtQkFBbUI7NENBOUJ0QixRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsY0FBYztzQkFBdkIsTUFBTTtnQkFFK0IsS0FBSztzQkFBMUMsWUFBWTt1QkFBQyxzQkFBc0I7Z0JBRWtDLE9BQU87c0JBQTVFLGVBQWU7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUV0QixrQkFBa0I7c0JBQS9ELFlBQVk7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIElucHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRha2UsIGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR2FudHRVcHBlciwgR0FOVFRfVVBQRVJfVE9LRU4gfSBmcm9tICcuL2dhbnR0LXVwcGVyJztcbmltcG9ydCB7IEdhbnR0TGlua0RyYWdFdmVudCwgR2FudHRMaW5lQ2xpY2tFdmVudCwgR2FudHRJdGVtSW50ZXJuYWwsIEdhbnR0SXRlbSwgR2FudHRTZWxlY3RlZEV2ZW50IH0gZnJvbSAnLi9jbGFzcyc7XG5pbXBvcnQgeyBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS9nYW50dC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IHNpZGVXaWR0aCB9IGZyb20gJy4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IGNvZXJjZUNzc1BpeGVsVmFsdWUgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgTmd4R2FudHRUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUvZ2FudHQtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IEdBTlRUX0FCU1RSQUNUX1RPS0VOIH0gZnJvbSAnLi9nYW50dC1hYnN0cmFjdCc7XG5pbXBvcnQgeyBkZWZhdWx0Q29sdW1uV2lkdGggfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvZ2FudHQtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IEdhbnR0R2xvYmFsQ29uZmlnLCBHQU5UVF9HTE9CQUxfQ09ORklHIH0gZnJvbSAnLi9nYW50dC5jb25maWcnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtZ2FudHQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9nYW50dC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEdBTlRUX1VQUEVSX1RPS0VOLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IE5neEdhbnR0Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEdBTlRUX0FCU1RSQUNUX1RPS0VOLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmd4R2FudHRDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbnR0Q29tcG9uZW50IGV4dGVuZHMgR2FudHRVcHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIG1heExldmVsID0gMjtcblxuICAgIEBJbnB1dCgpIGFzeW5jOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgY2hpbGRyZW5SZXNvbHZlOiAoR2FudHRJdGVtKSA9PiBPYnNlcnZhYmxlPEdhbnR0SXRlbVtdPjtcblxuICAgIEBJbnB1dCgpIGxpbmthYmxlOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIGxpbmtEcmFnU3RhcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHRMaW5rRHJhZ0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIGxpbmtEcmFnRW5kZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0TGlua0RyYWdFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSBsaW5lQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0TGluZUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0U2VsZWN0ZWRFdmVudD4oKTtcblxuICAgIEBDb250ZW50Q2hpbGQoTmd4R2FudHRUYWJsZUNvbXBvbmVudCkgdGFibGU6IE5neEdhbnR0VGFibGVDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY29sdW1uczogUXVlcnlMaXN0PE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQ+O1xuXG4gICAgQENvbnRlbnRDaGlsZCgndGFibGVFbXB0eScsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlRW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHVibGljIHNpZGVUYWJsZVdpZHRoID0gc2lkZVdpZHRoO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChHQU5UVF9HTE9CQUxfQ09ORklHKSBjb25maWc6IEdhbnR0R2xvYmFsQ29uZmlnXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkciwgbmdab25lLCBjb25maWcpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5vbkluaXQoKTtcblxuICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIubGlua0RyYWdTdGFydGVkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKGV2ZW50OiBHYW50dExpbmtEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmtEcmFnU3RhcnRlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmxpbmtEcmFnRW5kZWQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoZXZlbnQ6IEdhbnR0TGlua0RyYWdFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGlua0RyYWdFbmRlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuY29sdW1ucy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRydWUpLCB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFjb2x1bW4uY29sdW1uV2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNvbHVtbldpZHRoID0gY29lcmNlQ3NzUGl4ZWxWYWx1ZShkZWZhdWx0Q29sdW1uV2lkdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIHN1cGVyLm9uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICB9XG5cbiAgICBleHBhbmRDaGlsZHJlbihpdGVtOiBHYW50dEl0ZW1JbnRlcm5hbCkge1xuICAgICAgICBpZiAoIWl0ZW0uZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIGl0ZW0uc2V0RXhwYW5kKHRydWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuYXN5bmMgJiYgdGhpcy5jaGlsZHJlblJlc29sdmUgJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpdGVtLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5SZXNvbHZlKGl0ZW0ub3JpZ2luKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmRDaGFuZ2UuZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYWRkQ2hpbGRyZW4oaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlSXRlbXNSZWZzKC4uLml0ZW0uY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlSXRlbXNSZWZzKC4uLml0ZW0uY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kQ2hhbmdlLmVtaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW0uc2V0RXhwYW5kKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kQ2hhbmdlLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdEl0ZW0oc2VsZWN0RXZlbnQ6IEdhbnR0U2VsZWN0ZWRFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgZXZlbnQsIHNlbGVjdGVkVmFsdWUgfSA9IHNlbGVjdEV2ZW50O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnRvZ2dsZSgoc2VsZWN0ZWRWYWx1ZSBhcyBHYW50dEl0ZW0pLmlkKTtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZElkcyA9IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gdGhpcy5nZXRHYW50dEl0ZW1zKHNlbGVjdGVkSWRzKS5tYXAoKGl0ZW0pID0+IGl0ZW0ub3JpZ2luKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh7IGV2ZW50LCBzZWxlY3RlZFZhbHVlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHRoaXMuZ2V0R2FudHRJdGVtKHNlbGVjdGVkSWRzWzBdKT8ub3JpZ2luO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHsgZXZlbnQsIHNlbGVjdGVkVmFsdWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIub25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPG5neC1nYW50dC1yb290PlxuICA8bmctdGVtcGxhdGUgI3NpZGVUZW1wbGF0ZT5cbiAgICA8Z2FudHQtdGFibGVcbiAgICAgIFtncm91cHNdPVwiZ3JvdXBzXCJcbiAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgIFtncm91cFRlbXBsYXRlXT1cImdyb3VwVGVtcGxhdGVcIlxuICAgICAgW2VtcHR5VGVtcGxhdGVdPVwidGFibGVFbXB0eVRlbXBsYXRlXCJcbiAgICAgIFtyb3dCZWZvcmVUZW1wbGF0ZV09XCJ0YWJsZT8ucm93QmVmb3JlVGVtcGxhdGVcIlxuICAgICAgW3Jvd0FmdGVyVGVtcGxhdGVdPVwidGFibGU/LnJvd0FmdGVyVGVtcGxhdGVcIlxuICAgICAgKGl0ZW1DbGljayk9XCJzZWxlY3RJdGVtKCRldmVudClcIlxuICAgID48L2dhbnR0LXRhYmxlPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI21haW5UZW1wbGF0ZT5cbiAgICA8Z2FudHQtbWFpblxuICAgICAgW2dyb3Vwc109XCJncm91cHNcIlxuICAgICAgW2l0ZW1zXT1cIml0ZW1zXCJcbiAgICAgIFtncm91cEhlYWRlclRlbXBsYXRlXT1cImdyb3VwSGVhZGVyVGVtcGxhdGVcIlxuICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgW2JhclRlbXBsYXRlXT1cImJhclRlbXBsYXRlXCJcbiAgICAgIFtyYW5nZVRlbXBsYXRlXT1cInJhbmdlVGVtcGxhdGVcIlxuICAgICAgKGJhckNsaWNrKT1cImJhckNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAobGluZUNsaWNrKT1cImxpbmVDbGljay5lbWl0KCRldmVudClcIlxuICAgID5cbiAgICA8L2dhbnR0LW1haW4+XG4gIDwvbmctdGVtcGxhdGU+XG48L25neC1nYW50dC1yb290PlxuIl19
@@ -0,0 +1,13 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const defaultConfig = {
3
+ dateFormat: {
4
+ week: '第w周',
5
+ month: 'M月',
6
+ quarter: 'QQQ',
7
+ year: 'yyyy年',
8
+ yearMonth: 'yyyy年MM月',
9
+ yearQuarter: 'yyyy年QQQ',
10
+ }
11
+ };
12
+ export const GANTT_GLOBAL_CONFIG = new InjectionToken('GANTT_GLOBAL_CONFIG');
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2dhbnR0LmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBZS9DLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUN6QixVQUFVLEVBQUU7UUFDUixJQUFJLEVBQUUsS0FBSztRQUNYLEtBQUssRUFBRSxJQUFJO1FBQ1gsT0FBTyxFQUFFLEtBQUs7UUFDZCxJQUFJLEVBQUUsT0FBTztRQUNiLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLFdBQVcsRUFBRSxVQUFVO0tBQzFCO0NBQ0osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFvQixxQkFBcUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBHYW50dERhdGVGb3JtYXQge1xuICAgIHdlZWs/OiBzdHJpbmc7XG4gICAgbW9udGg/OiBzdHJpbmc7XG4gICAgcXVhcnRlcj86IHN0cmluZztcbiAgICB5ZWFyPzogc3RyaW5nO1xuICAgIHllYXJNb250aD86IHN0cmluZztcbiAgICB5ZWFyUXVhcnRlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHYW50dEdsb2JhbENvbmZpZyB7XG4gICAgZGF0ZUZvcm1hdD86IEdhbnR0RGF0ZUZvcm1hdDtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb25maWcgPSB7XG4gICAgZGF0ZUZvcm1hdDoge1xuICAgICAgICB3ZWVrOiAn56ysd+WRqCcsXG4gICAgICAgIG1vbnRoOiAnTeaciCcsXG4gICAgICAgIHF1YXJ0ZXI6ICdRUVEnLFxuICAgICAgICB5ZWFyOiAneXl5eeW5tCcsXG4gICAgICAgIHllYXJNb250aDogJ3l5eXnlubRNTeaciCcsXG4gICAgICAgIHllYXJRdWFydGVyOiAneXl5eeW5tFFRUScsXG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEdBTlRUX0dMT0JBTF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48R2FudHRHbG9iYWxDb25maWc+KCdHQU5UVF9HTE9CQUxfQ09ORklHJyk7XG4iXX0=
@@ -3,6 +3,8 @@ import { CommonModule } from '@angular/common';
3
3
  import { NgxGanttComponent } from './gantt.component';
4
4
  import { NgxGanttTableComponent } from './table/gantt-table.component';
5
5
  import { NgxGanttTableColumnComponent } from './table/gantt-column.component';
6
+ import { GanttCalendarComponent } from './components/calendar/calendar.component';
7
+ import { GanttTableComponent } from './components/table/gantt-table.component';
6
8
  import { NgxGanttBarComponent } from './components/bar/bar.component';
7
9
  import { GanttMainComponent } from './components/main/gantt-main.component';
8
10
  import { GanttIconComponent } from './components/icon/icon.component';
@@ -12,11 +14,7 @@ import { NgxGanttRootComponent } from './root.component';
12
14
  import { NgxGanttRangeComponent } from './components/range/range.component';
13
15
  import { IsGanttRangeItemPipe, IsGanttBarItemPipe, IsGanttCustomItemPipe } from './gantt.pipe';
14
16
  import { DragDropModule } from '@angular/cdk/drag-drop';
15
- import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
16
- import { GanttTableHeaderComponent } from './components/table/header/gantt-table-header.component';
17
- import { GanttCalendarHeaderComponent } from './components/calendar/header/calendar-header.component';
18
- import { GanttCalendarGridComponent } from './components/calendar/grid/calendar-grid.component';
19
- import { GanttTableBodyComponent } from './components/table/body/gantt-table-body.component';
17
+ import { GANTT_GLOBAL_CONFIG, defaultConfig } from './gantt.config';
20
18
  import * as i0 from "@angular/core";
21
19
  export class NgxGanttModule {
22
20
  }
@@ -24,11 +22,9 @@ NgxGanttModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version:
24
22
  NgxGanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: NgxGanttModule, declarations: [NgxGanttComponent,
25
23
  NgxGanttTableComponent,
26
24
  NgxGanttTableColumnComponent,
27
- GanttTableHeaderComponent,
28
- GanttTableBodyComponent,
25
+ GanttTableComponent,
29
26
  GanttMainComponent,
30
- GanttCalendarHeaderComponent,
31
- GanttCalendarGridComponent,
27
+ GanttCalendarComponent,
32
28
  GanttLinksComponent,
33
29
  NgxGanttBarComponent,
34
30
  GanttIconComponent,
@@ -37,17 +33,22 @@ NgxGanttModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
37
33
  NgxGanttRootComponent,
38
34
  IsGanttRangeItemPipe,
39
35
  IsGanttBarItemPipe,
40
- IsGanttCustomItemPipe], imports: [CommonModule, DragDropModule, ScrollingModule], exports: [NgxGanttComponent,
36
+ IsGanttCustomItemPipe], imports: [CommonModule, DragDropModule], exports: [NgxGanttComponent,
41
37
  NgxGanttTableComponent,
42
38
  NgxGanttTableColumnComponent,
43
39
  NgxGanttRootComponent,
44
40
  NgxGanttBarComponent,
45
41
  NgxGanttRangeComponent] });
46
- NgxGanttModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: NgxGanttModule, providers: [CdkVirtualScrollViewport], imports: [[CommonModule, DragDropModule, ScrollingModule]] });
42
+ NgxGanttModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: NgxGanttModule, providers: [
43
+ {
44
+ provide: GANTT_GLOBAL_CONFIG,
45
+ useValue: defaultConfig
46
+ }
47
+ ], imports: [[CommonModule, DragDropModule]] });
47
48
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: NgxGanttModule, decorators: [{
48
49
  type: NgModule,
49
50
  args: [{
50
- imports: [CommonModule, DragDropModule, ScrollingModule],
51
+ imports: [CommonModule, DragDropModule],
51
52
  exports: [
52
53
  NgxGanttComponent,
53
54
  NgxGanttTableComponent,
@@ -60,11 +61,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
60
61
  NgxGanttComponent,
61
62
  NgxGanttTableComponent,
62
63
  NgxGanttTableColumnComponent,
63
- GanttTableHeaderComponent,
64
- GanttTableBodyComponent,
64
+ GanttTableComponent,
65
65
  GanttMainComponent,
66
- GanttCalendarHeaderComponent,
67
- GanttCalendarGridComponent,
66
+ GanttCalendarComponent,
68
67
  GanttLinksComponent,
69
68
  NgxGanttBarComponent,
70
69
  GanttIconComponent,
@@ -75,7 +74,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
75
74
  IsGanttBarItemPipe,
76
75
  IsGanttCustomItemPipe
77
76
  ],
78
- providers: [CdkVirtualScrollViewport]
77
+ providers: [
78
+ {
79
+ provide: GANTT_GLOBAL_CONFIG,
80
+ useValue: defaultConfig
81
+ }
82
+ ]
79
83
  }]
80
84
  }] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2dhbnR0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNuRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN0RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7QUFpQzdGLE1BQU0sT0FBTyxjQUFjOzsyR0FBZCxjQUFjOzRHQUFkLGNBQWMsaUJBcEJuQixpQkFBaUI7UUFDakIsc0JBQXNCO1FBQ3RCLDRCQUE0QjtRQUM1Qix5QkFBeUI7UUFDekIsdUJBQXVCO1FBQ3ZCLGtCQUFrQjtRQUNsQiw0QkFBNEI7UUFDNUIsMEJBQTBCO1FBQzFCLG1CQUFtQjtRQUNuQixvQkFBb0I7UUFDcEIsa0JBQWtCO1FBQ2xCLDBCQUEwQjtRQUMxQixzQkFBc0I7UUFDdEIscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQixrQkFBa0I7UUFDbEIscUJBQXFCLGFBMUJmLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBZSxhQUVuRCxpQkFBaUI7UUFDakIsc0JBQXNCO1FBQ3RCLDRCQUE0QjtRQUM1QixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLHNCQUFzQjs0R0F1QmpCLGNBQWMsYUFGWixDQUFDLHdCQUF3QixDQUFDLFlBNUI1QixDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDOzJGQThCL0MsY0FBYztrQkEvQjFCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxlQUFlLENBQUM7b0JBQ3hELE9BQU8sRUFBRTt3QkFDTCxpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3dCQUM1QixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3FCQUN6QjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1YsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLDRCQUE0Qjt3QkFDNUIseUJBQXlCO3dCQUN6Qix1QkFBdUI7d0JBQ3ZCLGtCQUFrQjt3QkFDbEIsNEJBQTRCO3dCQUM1QiwwQkFBMEI7d0JBQzFCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLDBCQUEwQjt3QkFDMUIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixxQkFBcUI7cUJBQ3hCO29CQUNELFNBQVMsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2lCQUN4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4R2FudHRDb21wb25lbnQgfSBmcm9tICcuL2dhbnR0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS9nYW50dC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUvZ2FudHQtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dEJhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9iYXIvYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dE1haW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWFpbi9nYW50dC1tYWluLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dEljb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dERyYWdCYWNrZHJvcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kcmFnLWJhY2tkcm9wL2RyYWctYmFja2Ryb3AuY29tcG9uZW50JztcbmltcG9ydCB7IEdhbnR0TGlua3NDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50JztcbmltcG9ydCB7IE5neEdhbnR0Um9vdENvbXBvbmVudCB9IGZyb20gJy4vcm9vdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4R2FudHRSYW5nZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yYW5nZS9yYW5nZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXNHYW50dFJhbmdlSXRlbVBpcGUsIElzR2FudHRCYXJJdGVtUGlwZSwgSXNHYW50dEN1c3RvbUl0ZW1QaXBlIH0gZnJvbSAnLi9nYW50dC5waXBlJztcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgR2FudHRUYWJsZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS9oZWFkZXIvZ2FudHQtdGFibGUtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dENhbGVuZGFySGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhbGVuZGFyL2hlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdhbnR0Q2FsZW5kYXJHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhbGVuZGFyL2dyaWQvY2FsZW5kYXItZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2FudHRUYWJsZUJvZHlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvYm9keS9nYW50dC10YWJsZS1ib2R5LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHJhZ0Ryb3BNb2R1bGUsIFNjcm9sbGluZ01vZHVsZV0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBOZ3hHYW50dENvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRSb290Q29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dEJhckNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRSYW5nZUNvbXBvbmVudFxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIE5neEdhbnR0Q29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dFRhYmxlQ29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgICBHYW50dFRhYmxlSGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBHYW50dFRhYmxlQm9keUNvbXBvbmVudCxcbiAgICAgICAgR2FudHRNYWluQ29tcG9uZW50LFxuICAgICAgICBHYW50dENhbGVuZGFySGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBHYW50dENhbGVuZGFyR3JpZENvbXBvbmVudCxcbiAgICAgICAgR2FudHRMaW5rc0NvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRCYXJDb21wb25lbnQsXG4gICAgICAgIEdhbnR0SWNvbkNvbXBvbmVudCxcbiAgICAgICAgR2FudHREcmFnQmFja2Ryb3BDb21wb25lbnQsXG4gICAgICAgIE5neEdhbnR0UmFuZ2VDb21wb25lbnQsXG4gICAgICAgIE5neEdhbnR0Um9vdENvbXBvbmVudCxcbiAgICAgICAgSXNHYW50dFJhbmdlSXRlbVBpcGUsXG4gICAgICAgIElzR2FudHRCYXJJdGVtUGlwZSxcbiAgICAgICAgSXNHYW50dEN1c3RvbUl0ZW1QaXBlXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnRdXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbnR0TW9kdWxlIHt9XG4iXX0=
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2dhbnR0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFvQ3BFLE1BQU0sT0FBTyxjQUFjOzsyR0FBZCxjQUFjOzRHQUFkLGNBQWMsaUJBdkJuQixpQkFBaUI7UUFDakIsc0JBQXNCO1FBQ3RCLDRCQUE0QjtRQUM1QixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLHNCQUFzQjtRQUN0QixtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLGtCQUFrQjtRQUNsQiwwQkFBMEI7UUFDMUIsc0JBQXNCO1FBQ3RCLHFCQUFxQjtRQUNyQixvQkFBb0I7UUFDcEIsa0JBQWtCO1FBQ2xCLHFCQUFxQixhQXhCZixZQUFZLEVBQUUsY0FBYyxhQUVsQyxpQkFBaUI7UUFDakIsc0JBQXNCO1FBQ3RCLDRCQUE0QjtRQUM1QixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLHNCQUFzQjs0R0EwQmpCLGNBQWMsYUFQWjtRQUNQO1lBQ0ksT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixRQUFRLEVBQUUsYUFBYTtTQUMxQjtLQUNKLFlBL0JRLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQzsyRkFpQzlCLGNBQWM7a0JBbEMxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRTt3QkFDTCxpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3dCQUM1QixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3FCQUN6QjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1YsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLDRCQUE0Qjt3QkFDNUIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIsMEJBQTBCO3dCQUMxQixzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLHFCQUFxQjtxQkFDeEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFFBQVEsRUFBRSxhQUFhO3lCQUMxQjtxQkFDSjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4R2FudHRDb21wb25lbnQgfSBmcm9tICcuL2dhbnR0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS9nYW50dC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUvZ2FudHQtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL2dhbnR0LXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dEJhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9iYXIvYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dE1haW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWFpbi9nYW50dC1tYWluLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dEljb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dERyYWdCYWNrZHJvcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kcmFnLWJhY2tkcm9wL2RyYWctYmFja2Ryb3AuY29tcG9uZW50JztcbmltcG9ydCB7IEdhbnR0TGlua3NDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50JztcbmltcG9ydCB7IE5neEdhbnR0Um9vdENvbXBvbmVudCB9IGZyb20gJy4vcm9vdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4R2FudHRSYW5nZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yYW5nZS9yYW5nZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXNHYW50dFJhbmdlSXRlbVBpcGUsIElzR2FudHRCYXJJdGVtUGlwZSwgSXNHYW50dEN1c3RvbUl0ZW1QaXBlIH0gZnJvbSAnLi9nYW50dC5waXBlJztcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBHQU5UVF9HTE9CQUxfQ09ORklHLCBkZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi9nYW50dC5jb25maWcnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERyYWdEcm9wTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIE5neEdhbnR0Q29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dFRhYmxlQ29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dFJvb3RDb21wb25lbnQsXG4gICAgICAgIE5neEdhbnR0QmFyQ29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dFJhbmdlQ29tcG9uZW50XG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgTmd4R2FudHRDb21wb25lbnQsXG4gICAgICAgIE5neEdhbnR0VGFibGVDb21wb25lbnQsXG4gICAgICAgIE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgICAgIEdhbnR0VGFibGVDb21wb25lbnQsXG4gICAgICAgIEdhbnR0TWFpbkNvbXBvbmVudCxcbiAgICAgICAgR2FudHRDYWxlbmRhckNvbXBvbmVudCxcbiAgICAgICAgR2FudHRMaW5rc0NvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRCYXJDb21wb25lbnQsXG4gICAgICAgIEdhbnR0SWNvbkNvbXBvbmVudCxcbiAgICAgICAgR2FudHREcmFnQmFja2Ryb3BDb21wb25lbnQsXG4gICAgICAgIE5neEdhbnR0UmFuZ2VDb21wb25lbnQsXG4gICAgICAgIE5neEdhbnR0Um9vdENvbXBvbmVudCxcbiAgICAgICAgSXNHYW50dFJhbmdlSXRlbVBpcGUsXG4gICAgICAgIElzR2FudHRCYXJJdGVtUGlwZSxcbiAgICAgICAgSXNHYW50dEN1c3RvbUl0ZW1QaXBlXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogR0FOVFRfR0xPQkFMX0NPTkZJRyxcbiAgICAgICAgICAgIHVzZVZhbHVlOiBkZWZhdWx0Q29uZmlnXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbnR0TW9kdWxlIHt9XG4iXX0=
@@ -15,4 +15,5 @@ export * from './views/view';
15
15
  export * from './gantt-item-upper';
16
16
  export * from './gantt.pipe';
17
17
  export * from './gantt-print.service';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGdhbnR0XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9nYW50dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9nYW50dC11cHBlcic7XG5leHBvcnQgKiBmcm9tICcuL3Jvb3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZ2FudHQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUvZ2FudHQtdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUvZ2FudHQtY29sdW1uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvYmFyL2Jhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3JhbmdlL3JhbmdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdzL3ZpZXcnO1xuZXhwb3J0ICogZnJvbSAnLi9nYW50dC1pdGVtLXVwcGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZ2FudHQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2dhbnR0LXByaW50LnNlcnZpY2UnO1xuIl19
18
+ export * from './gantt.config';
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZ2FudHRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2dhbnR0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2dhbnR0LXVwcGVyJztcbmV4cG9ydCAqIGZyb20gJy4vcm9vdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9nYW50dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS9nYW50dC10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS9nYW50dC1jb2x1bW4uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9iYXIvYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcmFuZ2UvcmFuZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlld3Mvdmlldyc7XG5leHBvcnQgKiBmcm9tICcuL2dhbnR0LWl0ZW0tdXBwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9nYW50dC5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vZ2FudHQtcHJpbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2dhbnR0LmNvbmZpZyc7XG4iXX0=