@elxjs/ui 0.0.178 → 0.0.179

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.
@@ -0,0 +1,313 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, ContentChildren, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
+ import { EluxIcon } from '../icon';
4
+ import * as i0 from "@angular/core";
5
+ export class EluxCarouselFixedComponent {
6
+ constructor(renderer) {
7
+ this.renderer = renderer;
8
+ this.itemWidth = 200; // Fixed width in pixels
9
+ this.gap = 16; // Gap between items in pixels
10
+ this.removeArrows = false;
11
+ this.previousClickEventEmitter = new EventEmitter();
12
+ this.nextClickEventEmitter = new EventEmitter();
13
+ this.currentIndex = 0;
14
+ this.translateX = 0;
15
+ this.isDragging = false;
16
+ this.startX = 0;
17
+ this.currentX = 0;
18
+ this.initialTranslateX = 0;
19
+ this.dragOffset = 0;
20
+ this.containerWidth = 0;
21
+ this.maxTranslateX = 0;
22
+ this.minTranslateX = 0;
23
+ this.velocity = 0;
24
+ this.lastMoveTime = 0;
25
+ this.lastMoveX = 0;
26
+ }
27
+ ngAfterContentInit() {
28
+ this.calculateDimensions();
29
+ this.setItemWidths();
30
+ this.updateLimits();
31
+ this.items.changes.subscribe(() => {
32
+ this.calculateDimensions();
33
+ this.setItemWidths();
34
+ this.updateLimits();
35
+ this.goToFirstItem();
36
+ });
37
+ window.addEventListener('resize', () => this.onResize());
38
+ }
39
+ ngOnDestroy() {
40
+ window.removeEventListener('resize', () => this.onResize());
41
+ }
42
+ calculateDimensions() {
43
+ if (this.slidesContainer) {
44
+ this.containerWidth = this.slidesContainer.nativeElement.offsetWidth;
45
+ }
46
+ }
47
+ updateLimits() {
48
+ const totalWidth = this.items.length * (this.itemWidth + this.gap) - this.gap;
49
+ this.maxTranslateX = 0;
50
+ // Calculate minimum translateX to ensure last item is fully visible
51
+ if (totalWidth > this.containerWidth) {
52
+ this.minTranslateX = this.containerWidth - totalWidth;
53
+ // Add some padding to ensure last item is completely visible
54
+ const paddingOffset = this.gap;
55
+ this.minTranslateX -= paddingOffset;
56
+ }
57
+ else {
58
+ this.minTranslateX = 0;
59
+ }
60
+ }
61
+ onResize() {
62
+ this.calculateDimensions();
63
+ this.updateLimits();
64
+ this.updateTransform();
65
+ }
66
+ setItemWidths() {
67
+ this.items.forEach((item) => {
68
+ this.renderer.setStyle(item.nativeElement, 'width', `${this.itemWidth}px`);
69
+ this.renderer.setStyle(item.nativeElement, 'flex-shrink', '0');
70
+ this.renderer.setStyle(item.nativeElement, 'margin-right', `${this.gap}px`);
71
+ });
72
+ // Remove margin from last item
73
+ if (this.items.last) {
74
+ this.renderer.setStyle(this.items.last.nativeElement, 'margin-right', '0');
75
+ }
76
+ }
77
+ // Mouse events
78
+ onMouseDown(event) {
79
+ event.preventDefault();
80
+ this.startDrag(event.clientX);
81
+ }
82
+ onMouseMove(event) {
83
+ if (this.isDragging) {
84
+ event.preventDefault();
85
+ this.updateDrag(event.clientX);
86
+ }
87
+ }
88
+ onMouseUp(event) {
89
+ if (this.isDragging) {
90
+ this.endDrag();
91
+ }
92
+ }
93
+ onMouseLeave(event) {
94
+ if (this.isDragging) {
95
+ this.endDrag();
96
+ }
97
+ }
98
+ // Touch events
99
+ onTouchStart(event) {
100
+ event.preventDefault();
101
+ this.startDrag(event.touches[0].clientX);
102
+ }
103
+ onTouchMove(event) {
104
+ if (this.isDragging) {
105
+ event.preventDefault();
106
+ this.updateDrag(event.touches[0].clientX);
107
+ }
108
+ }
109
+ onTouchEnd(event) {
110
+ if (this.isDragging) {
111
+ this.endDrag();
112
+ }
113
+ }
114
+ startDrag(clientX) {
115
+ this.isDragging = true;
116
+ this.startX = clientX;
117
+ this.currentX = clientX;
118
+ this.initialTranslateX = this.translateX;
119
+ this.dragOffset = 0;
120
+ this.velocity = 0;
121
+ this.lastMoveTime = Date.now();
122
+ this.lastMoveX = clientX;
123
+ this.calculateDimensions();
124
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transition', 'none');
125
+ }
126
+ updateDrag(clientX) {
127
+ if (!this.isDragging)
128
+ return;
129
+ this.currentX = clientX;
130
+ const deltaX = this.currentX - this.startX;
131
+ const now = Date.now();
132
+ const timeDelta = now - this.lastMoveTime;
133
+ if (timeDelta > 0) {
134
+ this.velocity = (clientX - this.lastMoveX) / timeDelta;
135
+ }
136
+ this.lastMoveTime = now;
137
+ this.lastMoveX = clientX;
138
+ let resistedDeltaX = deltaX;
139
+ const potentialTranslateX = this.initialTranslateX + deltaX;
140
+ // Apply softer resistance at boundaries
141
+ if (potentialTranslateX > this.maxTranslateX) {
142
+ const overDrag = potentialTranslateX - this.maxTranslateX;
143
+ resistedDeltaX = deltaX - (overDrag * 0.5); // Reduced resistance for more natural feel
144
+ }
145
+ else if (potentialTranslateX < this.minTranslateX) {
146
+ const overDrag = this.minTranslateX - potentialTranslateX;
147
+ resistedDeltaX = deltaX + (overDrag * 0.5); // Reduced resistance for more natural feel
148
+ }
149
+ this.dragOffset = resistedDeltaX;
150
+ this.updateDragPosition();
151
+ }
152
+ updateDragPosition() {
153
+ const newTranslateX = this.initialTranslateX + this.dragOffset;
154
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transform', `translateX(${newTranslateX}px)`);
155
+ }
156
+ endDrag() {
157
+ if (!this.isDragging)
158
+ return;
159
+ this.isDragging = false;
160
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transition', 'transform 0.3s ease-out');
161
+ // Calculate how far we've actually moved in terms of items
162
+ const currentTranslateX = this.initialTranslateX + this.dragOffset;
163
+ const itemStep = this.itemWidth + this.gap;
164
+ const movedItemsFloat = Math.abs(currentTranslateX - this.initialTranslateX) / itemStep;
165
+ // More sensitive thresholds
166
+ const minThreshold = 0.3; // 30% of an item width
167
+ const dragDistance = Math.abs(this.currentX - this.startX);
168
+ const momentumThreshold = 0.3;
169
+ const hasSignificantVelocity = Math.abs(this.velocity) > momentumThreshold;
170
+ // If we've moved more than 30% of an item width OR have significant velocity
171
+ if (movedItemsFloat > minThreshold || hasSignificantVelocity || dragDistance > 60) {
172
+ // Calculate how many items to advance based on actual drag distance
173
+ let itemsToAdvance = Math.round(movedItemsFloat);
174
+ // For velocity-based movement, use a separate calculation
175
+ if (hasSignificantVelocity && movedItemsFloat < 1) {
176
+ const velocityMultiplier = Math.abs(this.velocity) * 2;
177
+ itemsToAdvance = Math.max(1, Math.floor(velocityMultiplier));
178
+ }
179
+ // Ensure minimum 1 item for significant drags, but don't double count
180
+ if (itemsToAdvance === 0 && movedItemsFloat >= minThreshold) {
181
+ itemsToAdvance = 1;
182
+ }
183
+ if (this.dragOffset > 0 || (hasSignificantVelocity && this.velocity > 0)) {
184
+ // Dragged right - go to previous items
185
+ this.goToPreviousItems(itemsToAdvance);
186
+ }
187
+ else if (this.dragOffset < 0 || (hasSignificantVelocity && this.velocity < 0)) {
188
+ // Dragged left - go to next items
189
+ this.goToNextItems(itemsToAdvance);
190
+ }
191
+ else {
192
+ this.snapToNearestItem();
193
+ }
194
+ }
195
+ else {
196
+ // Small movement - snap to nearest item
197
+ this.snapToNearestItem();
198
+ }
199
+ this.dragOffset = 0;
200
+ this.velocity = 0;
201
+ }
202
+ snapToNearestItem() {
203
+ const currentTranslateX = this.initialTranslateX + this.dragOffset;
204
+ const itemStep = this.itemWidth + this.gap;
205
+ // Find the closest valid position
206
+ let targetIndex = Math.round(-currentTranslateX / itemStep);
207
+ // Clamp to valid bounds
208
+ const maxIndex = this.getMaxIndex();
209
+ targetIndex = Math.max(0, Math.min(targetIndex, maxIndex));
210
+ this.currentIndex = targetIndex;
211
+ this.updateTransform();
212
+ }
213
+ goToPreviousItems(itemCount) {
214
+ // Use the current index instead of visual calculation to avoid double movement
215
+ const newIndex = Math.max(0, this.currentIndex - itemCount);
216
+ if (newIndex !== this.currentIndex) {
217
+ this.currentIndex = newIndex;
218
+ this.updateTransform();
219
+ this.previousClickEventEmitter.emit();
220
+ }
221
+ else {
222
+ this.snapToNearestItem();
223
+ }
224
+ }
225
+ goToNextItems(itemCount) {
226
+ // Use the current index instead of visual calculation to avoid double movement
227
+ const maxIndex = this.getMaxIndex();
228
+ const newIndex = Math.min(maxIndex, this.currentIndex + itemCount);
229
+ if (newIndex !== this.currentIndex) {
230
+ this.currentIndex = newIndex;
231
+ this.updateTransform();
232
+ this.nextClickEventEmitter.emit();
233
+ }
234
+ else {
235
+ this.snapToNearestItem();
236
+ }
237
+ }
238
+ canGoPrevious() {
239
+ return this.currentIndex > 0;
240
+ }
241
+ canGoNext() {
242
+ return this.currentIndex < this.getMaxIndex();
243
+ }
244
+ goToFirstItem() {
245
+ this.currentIndex = 0;
246
+ this.updateTransform();
247
+ }
248
+ prevItem() {
249
+ if (this.canGoPrevious()) {
250
+ this.currentIndex--;
251
+ this.updateTransform();
252
+ this.previousClickEventEmitter.emit();
253
+ }
254
+ }
255
+ nextItem() {
256
+ if (this.canGoNext()) {
257
+ this.currentIndex++;
258
+ this.updateTransform();
259
+ this.nextClickEventEmitter.emit();
260
+ }
261
+ }
262
+ updateTransform() {
263
+ const itemStep = this.itemWidth + this.gap;
264
+ this.translateX = -this.currentIndex * itemStep;
265
+ // Apply strict boundaries to ensure last item is always fully visible
266
+ this.translateX = Math.max(this.minTranslateX, Math.min(this.maxTranslateX, this.translateX));
267
+ // Recalculate currentIndex based on actual translateX to stay in sync
268
+ if (this.translateX <= this.minTranslateX) {
269
+ this.currentIndex = this.getMaxIndex();
270
+ }
271
+ else {
272
+ this.currentIndex = Math.max(0, Math.min(this.currentIndex, this.getMaxIndex()));
273
+ }
274
+ if (!this.isDragging && this.slidesContainer) {
275
+ this.renderer.setStyle(this.slidesContainer.nativeElement, 'transform', `translateX(${this.translateX}px)`);
276
+ }
277
+ }
278
+ getMaxIndex() {
279
+ const visibleWidth = this.containerWidth;
280
+ const totalItemsWidth = this.items.length * (this.itemWidth + this.gap) - this.gap;
281
+ if (totalItemsWidth <= visibleWidth) {
282
+ return 0;
283
+ }
284
+ // Calculate how many complete items can fit in the visible area
285
+ const itemsPerView = Math.floor(visibleWidth / (this.itemWidth + this.gap));
286
+ // Maximum index ensures the last item is always fully visible
287
+ const maxIndex = Math.max(0, this.items.length - itemsPerView);
288
+ return maxIndex;
289
+ }
290
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxCarouselFixedComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
291
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EluxCarouselFixedComponent, isStandalone: true, selector: "lib-elux-carousel-fixed", inputs: { itemWidth: "itemWidth", gap: "gap", removeArrows: "removeArrows" }, outputs: { previousClickEventEmitter: "previousClickEventEmitter", nextClickEventEmitter: "nextClickEventEmitter" }, queries: [{ propertyName: "items", predicate: ["carouselItem"], read: ElementRef }], viewQueries: [{ propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }], ngImport: i0, template: "<div class=\"c-carousel-fixed-container\">\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"c-carousel-fixed-footer\" [hidden]=\"removeArrows\">\n <button \n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <button \n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n </div>\n</div>\n", styles: [".c-carousel-fixed-container{position:relative;width:100%;padding-right:16px}.c-carousel-fixed-slides{display:flex;transition:transform .3s ease-out;touch-action:pan-y;cursor:grab;-webkit-user-select:none;user-select:none;will-change:transform;padding-right:16px}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;align-items:center;justify-content:center;gap:16px;padding:16px 0}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.1)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.5;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: EluxIcon, selector: "lib-elux-icon", inputs: ["color", "useSubscription", "icon", "description", "size", "height", "width", "sizeType"] }] }); }
292
+ }
293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxCarouselFixedComponent, decorators: [{
294
+ type: Component,
295
+ args: [{ standalone: true, selector: 'lib-elux-carousel-fixed', imports: [CommonModule, EluxIcon], template: "<div class=\"c-carousel-fixed-container\">\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"c-carousel-fixed-footer\" [hidden]=\"removeArrows\">\n <button \n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <button \n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n </div>\n</div>\n", styles: [".c-carousel-fixed-container{position:relative;width:100%;padding-right:16px}.c-carousel-fixed-slides{display:flex;transition:transform .3s ease-out;touch-action:pan-y;cursor:grab;-webkit-user-select:none;user-select:none;will-change:transform;padding-right:16px}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;align-items:center;justify-content:center;gap:16px;padding:16px 0}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.1)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.5;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}\n"] }]
296
+ }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { items: [{
297
+ type: ContentChildren,
298
+ args: ['carouselItem', { read: ElementRef }]
299
+ }], slidesContainer: [{
300
+ type: ViewChild,
301
+ args: ['slidesContainer']
302
+ }], itemWidth: [{
303
+ type: Input
304
+ }], gap: [{
305
+ type: Input
306
+ }], removeArrows: [{
307
+ type: Input
308
+ }], previousClickEventEmitter: [{
309
+ type: Output
310
+ }], nextClickEventEmitter: [{
311
+ type: Output
312
+ }] } });
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwtZml4ZWQvY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwtZml4ZWQvY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQVNuQyxNQUFNLE9BQU8sMEJBQTBCO0lBMEJyQyxZQUFvQixRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBdEI5QixjQUFTLEdBQVcsR0FBRyxDQUFDLENBQUMsd0JBQXdCO1FBQ2pELFFBQUcsR0FBVyxFQUFFLENBQUMsQ0FBQyw4QkFBOEI7UUFDaEQsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFN0IsOEJBQXlCLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUN0RCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBRTVELGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFFUCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2Isc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLGVBQVUsR0FB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WCxDQUFDO1FBRUQsZ0VBQWdFO1FBQ2hFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU1RSw4REFBOEQ7UUFDOUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFFL0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzsrR0E1VlUsMEJBQTBCO21HQUExQiwwQkFBMEIsb1VBQ0ksVUFBVSxpSkNackQsbXdDQW1DQSw0OUJEMUJZLFlBQVksK0JBQUUsUUFBUTs7NEZBRXJCLDBCQUEwQjtrQkFQdEMsU0FBUztpQ0FDSSxJQUFJLFlBQ04seUJBQXlCLFdBRzFCLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQzs4RUFHc0IsS0FBSztzQkFBM0QsZUFBZTt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUN2QixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFFbkIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWx1eEljb24gfSBmcm9tICcuLi9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnbGliLWVsdXgtY2Fyb3VzZWwtZml4ZWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJvdXNlbC1maXhlZC5jb21wb25lbnQuc2NzcyddLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBFbHV4SWNvbl0sXG59KVxuZXhwb3J0IGNsYXNzIEVsdXhDYXJvdXNlbEZpeGVkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZHJlbignY2Fyb3VzZWxJdGVtJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGl0ZW1zITogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICBAVmlld0NoaWxkKCdzbGlkZXNDb250YWluZXInKSBzbGlkZXNDb250YWluZXIhOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGl0ZW1XaWR0aDogbnVtYmVyID0gMjAwOyAvLyBGaXhlZCB3aWR0aCBpbiBwaXhlbHNcbiAgQElucHV0KCkgZ2FwOiBudW1iZXIgPSAxNjsgLy8gR2FwIGJldHdlZW4gaXRlbXMgaW4gcGl4ZWxzXG4gIEBJbnB1dCgpIHJlbW92ZUFycm93czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBwcmV2aW91c0NsaWNrRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG5leHRDbGlja0V2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgY3VycmVudEluZGV4ID0gMDtcbiAgdHJhbnNsYXRlWCA9IDA7XG5cbiAgcHJpdmF0ZSBpc0RyYWdnaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3RhcnRYID0gMDtcbiAgcHJpdmF0ZSBjdXJyZW50WCA9IDA7XG4gIHByaXZhdGUgaW5pdGlhbFRyYW5zbGF0ZVggPSAwO1xuICBwcml2YXRlIGRyYWdPZmZzZXQgPSAwO1xuICBwcml2YXRlIGNvbnRhaW5lcldpZHRoID0gMDtcbiAgcHJpdmF0ZSBtYXhUcmFuc2xhdGVYID0gMDtcbiAgcHJpdmF0ZSBtaW5UcmFuc2xhdGVYID0gMDtcbiAgcHJpdmF0ZSB2ZWxvY2l0eSA9IDA7XG4gIHByaXZhdGUgbGFzdE1vdmVUaW1lID0gMDtcbiAgcHJpdmF0ZSBsYXN0TW92ZVggPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5jYWxjdWxhdGVEaW1lbnNpb25zKCk7XG4gICAgdGhpcy5zZXRJdGVtV2lkdGhzKCk7XG4gICAgdGhpcy51cGRhdGVMaW1pdHMoKTtcblxuICAgIHRoaXMuaXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jYWxjdWxhdGVEaW1lbnNpb25zKCk7XG4gICAgICB0aGlzLnNldEl0ZW1XaWR0aHMoKTtcbiAgICAgIHRoaXMudXBkYXRlTGltaXRzKCk7XG4gICAgICB0aGlzLmdvVG9GaXJzdEl0ZW0oKTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLm9uUmVzaXplKCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMub25SZXNpemUoKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZURpbWVuc2lvbnMoKSB7XG4gICAgaWYgKHRoaXMuc2xpZGVzQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gdGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUxpbWl0cygpIHtcbiAgICBjb25zdCB0b3RhbFdpZHRoID0gdGhpcy5pdGVtcy5sZW5ndGggKiAodGhpcy5pdGVtV2lkdGggKyB0aGlzLmdhcCkgLSB0aGlzLmdhcDtcbiAgICB0aGlzLm1heFRyYW5zbGF0ZVggPSAwO1xuICAgIFxuICAgIC8vIENhbGN1bGF0ZSBtaW5pbXVtIHRyYW5zbGF0ZVggdG8gZW5zdXJlIGxhc3QgaXRlbSBpcyBmdWxseSB2aXNpYmxlXG4gICAgaWYgKHRvdGFsV2lkdGggPiB0aGlzLmNvbnRhaW5lcldpZHRoKSB7XG4gICAgICB0aGlzLm1pblRyYW5zbGF0ZVggPSB0aGlzLmNvbnRhaW5lcldpZHRoIC0gdG90YWxXaWR0aDtcbiAgICAgIFxuICAgICAgLy8gQWRkIHNvbWUgcGFkZGluZyB0byBlbnN1cmUgbGFzdCBpdGVtIGlzIGNvbXBsZXRlbHkgdmlzaWJsZVxuICAgICAgY29uc3QgcGFkZGluZ09mZnNldCA9IHRoaXMuZ2FwO1xuICAgICAgdGhpcy5taW5UcmFuc2xhdGVYIC09IHBhZGRpbmdPZmZzZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWluVHJhbnNsYXRlWCA9IDA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvblJlc2l6ZSgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZURpbWVuc2lvbnMoKTtcbiAgICB0aGlzLnVwZGF0ZUxpbWl0cygpO1xuICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gIH1cblxuICBwcml2YXRlIHNldEl0ZW1XaWR0aHMoKSB7XG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGl0ZW0ubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7dGhpcy5pdGVtV2lkdGh9cHhgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaXRlbS5uYXRpdmVFbGVtZW50LCAnZmxleC1zaHJpbmsnLCAnMCcpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpdGVtLm5hdGl2ZUVsZW1lbnQsICdtYXJnaW4tcmlnaHQnLCBgJHt0aGlzLmdhcH1weGApO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIFJlbW92ZSBtYXJnaW4gZnJvbSBsYXN0IGl0ZW1cbiAgICBpZiAodGhpcy5pdGVtcy5sYXN0KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaXRlbXMubGFzdC5uYXRpdmVFbGVtZW50LCAnbWFyZ2luLXJpZ2h0JywgJzAnKTtcbiAgICB9XG4gIH1cblxuICAvLyBNb3VzZSBldmVudHNcbiAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc3RhcnREcmFnKGV2ZW50LmNsaWVudFgpO1xuICB9XG5cbiAgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy51cGRhdGVEcmFnKGV2ZW50LmNsaWVudFgpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW91c2VVcChldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIHRoaXMuZW5kRHJhZygpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW91c2VMZWF2ZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIHRoaXMuZW5kRHJhZygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRvdWNoIGV2ZW50c1xuICBvblRvdWNoU3RhcnQoZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc3RhcnREcmFnKGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCk7XG4gIH1cblxuICBvblRvdWNoTW92ZShldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnVwZGF0ZURyYWcoZXZlbnQudG91Y2hlc1swXS5jbGllbnRYKTtcbiAgICB9XG4gIH1cblxuICBvblRvdWNoRW5kKGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgdGhpcy5lbmREcmFnKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydERyYWcoY2xpZW50WDogbnVtYmVyKSB7XG4gICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXJ0WCA9IGNsaWVudFg7XG4gICAgdGhpcy5jdXJyZW50WCA9IGNsaWVudFg7XG4gICAgdGhpcy5pbml0aWFsVHJhbnNsYXRlWCA9IHRoaXMudHJhbnNsYXRlWDtcbiAgICB0aGlzLmRyYWdPZmZzZXQgPSAwO1xuICAgIHRoaXMudmVsb2NpdHkgPSAwO1xuICAgIHRoaXMubGFzdE1vdmVUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmxhc3RNb3ZlWCA9IGNsaWVudFg7XG4gICAgXG4gICAgdGhpcy5jYWxjdWxhdGVEaW1lbnNpb25zKCk7XG4gICAgXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAndHJhbnNpdGlvbicsICdub25lJyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURyYWcoY2xpZW50WDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcpIHJldHVybjtcblxuICAgIHRoaXMuY3VycmVudFggPSBjbGllbnRYO1xuICAgIGNvbnN0IGRlbHRhWCA9IHRoaXMuY3VycmVudFggLSB0aGlzLnN0YXJ0WDtcbiAgICBcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHRpbWVEZWx0YSA9IG5vdyAtIHRoaXMubGFzdE1vdmVUaW1lO1xuICAgIGlmICh0aW1lRGVsdGEgPiAwKSB7XG4gICAgICB0aGlzLnZlbG9jaXR5ID0gKGNsaWVudFggLSB0aGlzLmxhc3RNb3ZlWCkgLyB0aW1lRGVsdGE7XG4gICAgfVxuICAgIHRoaXMubGFzdE1vdmVUaW1lID0gbm93O1xuICAgIHRoaXMubGFzdE1vdmVYID0gY2xpZW50WDtcblxuICAgIGxldCByZXNpc3RlZERlbHRhWCA9IGRlbHRhWDtcbiAgICBjb25zdCBwb3RlbnRpYWxUcmFuc2xhdGVYID0gdGhpcy5pbml0aWFsVHJhbnNsYXRlWCArIGRlbHRhWDtcbiAgICBcbiAgICAvLyBBcHBseSBzb2Z0ZXIgcmVzaXN0YW5jZSBhdCBib3VuZGFyaWVzXG4gICAgaWYgKHBvdGVudGlhbFRyYW5zbGF0ZVggPiB0aGlzLm1heFRyYW5zbGF0ZVgpIHtcbiAgICAgIGNvbnN0IG92ZXJEcmFnID0gcG90ZW50aWFsVHJhbnNsYXRlWCAtIHRoaXMubWF4VHJhbnNsYXRlWDtcbiAgICAgIHJlc2lzdGVkRGVsdGFYID0gZGVsdGFYIC0gKG92ZXJEcmFnICogMC41KTsgLy8gUmVkdWNlZCByZXNpc3RhbmNlIGZvciBtb3JlIG5hdHVyYWwgZmVlbFxuICAgIH0gZWxzZSBpZiAocG90ZW50aWFsVHJhbnNsYXRlWCA8IHRoaXMubWluVHJhbnNsYXRlWCkge1xuICAgICAgY29uc3Qgb3ZlckRyYWcgPSB0aGlzLm1pblRyYW5zbGF0ZVggLSBwb3RlbnRpYWxUcmFuc2xhdGVYO1xuICAgICAgcmVzaXN0ZWREZWx0YVggPSBkZWx0YVggKyAob3ZlckRyYWcgKiAwLjUpOyAvLyBSZWR1Y2VkIHJlc2lzdGFuY2UgZm9yIG1vcmUgbmF0dXJhbCBmZWVsXG4gICAgfVxuXG4gICAgdGhpcy5kcmFnT2Zmc2V0ID0gcmVzaXN0ZWREZWx0YVg7XG4gICAgdGhpcy51cGRhdGVEcmFnUG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRHJhZ1Bvc2l0aW9uKCkge1xuICAgIGNvbnN0IG5ld1RyYW5zbGF0ZVggPSB0aGlzLmluaXRpYWxUcmFuc2xhdGVYICsgdGhpcy5kcmFnT2Zmc2V0O1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLnNsaWRlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCBcbiAgICAgICd0cmFuc2Zvcm0nLCBcbiAgICAgIGB0cmFuc2xhdGVYKCR7bmV3VHJhbnNsYXRlWH1weClgXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5kRHJhZygpIHtcbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAndHJhbnNpdGlvbicsICd0cmFuc2Zvcm0gMC4zcyBlYXNlLW91dCcpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGhvdyBmYXIgd2UndmUgYWN0dWFsbHkgbW92ZWQgaW4gdGVybXMgb2YgaXRlbXNcbiAgICBjb25zdCBjdXJyZW50VHJhbnNsYXRlWCA9IHRoaXMuaW5pdGlhbFRyYW5zbGF0ZVggKyB0aGlzLmRyYWdPZmZzZXQ7XG4gICAgY29uc3QgaXRlbVN0ZXAgPSB0aGlzLml0ZW1XaWR0aCArIHRoaXMuZ2FwO1xuICAgIGNvbnN0IG1vdmVkSXRlbXNGbG9hdCA9IE1hdGguYWJzKGN1cnJlbnRUcmFuc2xhdGVYIC0gdGhpcy5pbml0aWFsVHJhbnNsYXRlWCkgLyBpdGVtU3RlcDtcbiAgICBcbiAgICAvLyBNb3JlIHNlbnNpdGl2ZSB0aHJlc2hvbGRzXG4gICAgY29uc3QgbWluVGhyZXNob2xkID0gMC4zOyAvLyAzMCUgb2YgYW4gaXRlbSB3aWR0aFxuICAgIGNvbnN0IGRyYWdEaXN0YW5jZSA9IE1hdGguYWJzKHRoaXMuY3VycmVudFggLSB0aGlzLnN0YXJ0WCk7XG4gICAgY29uc3QgbW9tZW50dW1UaHJlc2hvbGQgPSAwLjM7XG4gICAgY29uc3QgaGFzU2lnbmlmaWNhbnRWZWxvY2l0eSA9IE1hdGguYWJzKHRoaXMudmVsb2NpdHkpID4gbW9tZW50dW1UaHJlc2hvbGQ7XG4gICAgXG4gICAgLy8gSWYgd2UndmUgbW92ZWQgbW9yZSB0aGFuIDMwJSBvZiBhbiBpdGVtIHdpZHRoIE9SIGhhdmUgc2lnbmlmaWNhbnQgdmVsb2NpdHlcbiAgICBpZiAobW92ZWRJdGVtc0Zsb2F0ID4gbWluVGhyZXNob2xkIHx8IGhhc1NpZ25pZmljYW50VmVsb2NpdHkgfHwgZHJhZ0Rpc3RhbmNlID4gNjApIHtcbiAgICAgIFxuICAgICAgLy8gQ2FsY3VsYXRlIGhvdyBtYW55IGl0ZW1zIHRvIGFkdmFuY2UgYmFzZWQgb24gYWN0dWFsIGRyYWcgZGlzdGFuY2VcbiAgICAgIGxldCBpdGVtc1RvQWR2YW5jZSA9IE1hdGgucm91bmQobW92ZWRJdGVtc0Zsb2F0KTtcbiAgICAgIFxuICAgICAgLy8gRm9yIHZlbG9jaXR5LWJhc2VkIG1vdmVtZW50LCB1c2UgYSBzZXBhcmF0ZSBjYWxjdWxhdGlvblxuICAgICAgaWYgKGhhc1NpZ25pZmljYW50VmVsb2NpdHkgJiYgbW92ZWRJdGVtc0Zsb2F0IDwgMSkge1xuICAgICAgICBjb25zdCB2ZWxvY2l0eU11bHRpcGxpZXIgPSBNYXRoLmFicyh0aGlzLnZlbG9jaXR5KSAqIDI7XG4gICAgICAgIGl0ZW1zVG9BZHZhbmNlID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcih2ZWxvY2l0eU11bHRpcGxpZXIpKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gRW5zdXJlIG1pbmltdW0gMSBpdGVtIGZvciBzaWduaWZpY2FudCBkcmFncywgYnV0IGRvbid0IGRvdWJsZSBjb3VudFxuICAgICAgaWYgKGl0ZW1zVG9BZHZhbmNlID09PSAwICYmIG1vdmVkSXRlbXNGbG9hdCA+PSBtaW5UaHJlc2hvbGQpIHtcbiAgICAgICAgaXRlbXNUb0FkdmFuY2UgPSAxO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAodGhpcy5kcmFnT2Zmc2V0ID4gMCB8fCAoaGFzU2lnbmlmaWNhbnRWZWxvY2l0eSAmJiB0aGlzLnZlbG9jaXR5ID4gMCkpIHtcbiAgICAgICAgLy8gRHJhZ2dlZCByaWdodCAtIGdvIHRvIHByZXZpb3VzIGl0ZW1zXG4gICAgICAgIHRoaXMuZ29Ub1ByZXZpb3VzSXRlbXMoaXRlbXNUb0FkdmFuY2UpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYWdPZmZzZXQgPCAwIHx8IChoYXNTaWduaWZpY2FudFZlbG9jaXR5ICYmIHRoaXMudmVsb2NpdHkgPCAwKSkge1xuICAgICAgICAvLyBEcmFnZ2VkIGxlZnQgLSBnbyB0byBuZXh0IGl0ZW1zXG4gICAgICAgIHRoaXMuZ29Ub05leHRJdGVtcyhpdGVtc1RvQWR2YW5jZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNuYXBUb05lYXJlc3RJdGVtKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNtYWxsIG1vdmVtZW50IC0gc25hcCB0byBuZWFyZXN0IGl0ZW1cbiAgICAgIHRoaXMuc25hcFRvTmVhcmVzdEl0ZW0oKTtcbiAgICB9XG5cbiAgICB0aGlzLmRyYWdPZmZzZXQgPSAwO1xuICAgIHRoaXMudmVsb2NpdHkgPSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzbmFwVG9OZWFyZXN0SXRlbSgpIHtcbiAgICBjb25zdCBjdXJyZW50VHJhbnNsYXRlWCA9IHRoaXMuaW5pdGlhbFRyYW5zbGF0ZVggKyB0aGlzLmRyYWdPZmZzZXQ7XG4gICAgY29uc3QgaXRlbVN0ZXAgPSB0aGlzLml0ZW1XaWR0aCArIHRoaXMuZ2FwO1xuICAgIFxuICAgIC8vIEZpbmQgdGhlIGNsb3Nlc3QgdmFsaWQgcG9zaXRpb25cbiAgICBsZXQgdGFyZ2V0SW5kZXggPSBNYXRoLnJvdW5kKC1jdXJyZW50VHJhbnNsYXRlWCAvIGl0ZW1TdGVwKTtcbiAgICBcbiAgICAvLyBDbGFtcCB0byB2YWxpZCBib3VuZHNcbiAgICBjb25zdCBtYXhJbmRleCA9IHRoaXMuZ2V0TWF4SW5kZXgoKTtcbiAgICB0YXJnZXRJbmRleCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHRhcmdldEluZGV4LCBtYXhJbmRleCkpO1xuICAgIFxuICAgIHRoaXMuY3VycmVudEluZGV4ID0gdGFyZ2V0SW5kZXg7XG4gICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgfVxuXG4gIHByaXZhdGUgZ29Ub1ByZXZpb3VzSXRlbXMoaXRlbUNvdW50OiBudW1iZXIpIHtcbiAgICAvLyBVc2UgdGhlIGN1cnJlbnQgaW5kZXggaW5zdGVhZCBvZiB2aXN1YWwgY2FsY3VsYXRpb24gdG8gYXZvaWQgZG91YmxlIG1vdmVtZW50XG4gICAgY29uc3QgbmV3SW5kZXggPSBNYXRoLm1heCgwLCB0aGlzLmN1cnJlbnRJbmRleCAtIGl0ZW1Db3VudCk7XG4gICAgXG4gICAgaWYgKG5ld0luZGV4ICE9PSB0aGlzLmN1cnJlbnRJbmRleCkge1xuICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBuZXdJbmRleDtcbiAgICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgICB0aGlzLnByZXZpb3VzQ2xpY2tFdmVudEVtaXR0ZXIuZW1pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNuYXBUb05lYXJlc3RJdGVtKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnb1RvTmV4dEl0ZW1zKGl0ZW1Db3VudDogbnVtYmVyKSB7XG4gICAgLy8gVXNlIHRoZSBjdXJyZW50IGluZGV4IGluc3RlYWQgb2YgdmlzdWFsIGNhbGN1bGF0aW9uIHRvIGF2b2lkIGRvdWJsZSBtb3ZlbWVudFxuICAgIGNvbnN0IG1heEluZGV4ID0gdGhpcy5nZXRNYXhJbmRleCgpO1xuICAgIGNvbnN0IG5ld0luZGV4ID0gTWF0aC5taW4obWF4SW5kZXgsIHRoaXMuY3VycmVudEluZGV4ICsgaXRlbUNvdW50KTtcbiAgICBcbiAgICBpZiAobmV3SW5kZXggIT09IHRoaXMuY3VycmVudEluZGV4KSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IG5ld0luZGV4O1xuICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgICAgIHRoaXMubmV4dENsaWNrRXZlbnRFbWl0dGVyLmVtaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zbmFwVG9OZWFyZXN0SXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIGNhbkdvUHJldmlvdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEluZGV4ID4gMDtcbiAgfVxuXG4gIGNhbkdvTmV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5kZXggPCB0aGlzLmdldE1heEluZGV4KCk7XG4gIH1cblxuICBnb1RvRmlyc3RJdGVtKCkge1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gMDtcbiAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICB9XG5cbiAgcHJldkl0ZW0oKSB7XG4gICAgaWYgKHRoaXMuY2FuR29QcmV2aW91cygpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbmRleC0tO1xuICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgICAgIHRoaXMucHJldmlvdXNDbGlja0V2ZW50RW1pdHRlci5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgbmV4dEl0ZW0oKSB7XG4gICAgaWYgKHRoaXMuY2FuR29OZXh0KCkpIHtcbiAgICAgIHRoaXMuY3VycmVudEluZGV4Kys7XG4gICAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgICAgdGhpcy5uZXh0Q2xpY2tFdmVudEVtaXR0ZXIuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVHJhbnNmb3JtKCkge1xuICAgIGNvbnN0IGl0ZW1TdGVwID0gdGhpcy5pdGVtV2lkdGggKyB0aGlzLmdhcDtcbiAgICB0aGlzLnRyYW5zbGF0ZVggPSAtdGhpcy5jdXJyZW50SW5kZXggKiBpdGVtU3RlcDtcbiAgICBcbiAgICAvLyBBcHBseSBzdHJpY3QgYm91bmRhcmllcyB0byBlbnN1cmUgbGFzdCBpdGVtIGlzIGFsd2F5cyBmdWxseSB2aXNpYmxlXG4gICAgdGhpcy50cmFuc2xhdGVYID0gTWF0aC5tYXgodGhpcy5taW5UcmFuc2xhdGVYLCBNYXRoLm1pbih0aGlzLm1heFRyYW5zbGF0ZVgsIHRoaXMudHJhbnNsYXRlWCkpO1xuICAgIFxuICAgIC8vIFJlY2FsY3VsYXRlIGN1cnJlbnRJbmRleCBiYXNlZCBvbiBhY3R1YWwgdHJhbnNsYXRlWCB0byBzdGF5IGluIHN5bmNcbiAgICBpZiAodGhpcy50cmFuc2xhdGVYIDw9IHRoaXMubWluVHJhbnNsYXRlWCkge1xuICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSB0aGlzLmdldE1heEluZGV4KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4odGhpcy5jdXJyZW50SW5kZXgsIHRoaXMuZ2V0TWF4SW5kZXgoKSkpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZyAmJiB0aGlzLnNsaWRlc0NvbnRhaW5lcikge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgXG4gICAgICAgICd0cmFuc2Zvcm0nLCBcbiAgICAgICAgYHRyYW5zbGF0ZVgoJHt0aGlzLnRyYW5zbGF0ZVh9cHgpYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE1heEluZGV4KCk6IG51bWJlciB7XG4gICAgY29uc3QgdmlzaWJsZVdpZHRoID0gdGhpcy5jb250YWluZXJXaWR0aDtcbiAgICBjb25zdCB0b3RhbEl0ZW1zV2lkdGggPSB0aGlzLml0ZW1zLmxlbmd0aCAqICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuZ2FwKSAtIHRoaXMuZ2FwO1xuICAgIFxuICAgIGlmICh0b3RhbEl0ZW1zV2lkdGggPD0gdmlzaWJsZVdpZHRoKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2FsY3VsYXRlIGhvdyBtYW55IGNvbXBsZXRlIGl0ZW1zIGNhbiBmaXQgaW4gdGhlIHZpc2libGUgYXJlYVxuICAgIGNvbnN0IGl0ZW1zUGVyVmlldyA9IE1hdGguZmxvb3IodmlzaWJsZVdpZHRoIC8gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5nYXApKTtcbiAgICBcbiAgICAvLyBNYXhpbXVtIGluZGV4IGVuc3VyZXMgdGhlIGxhc3QgaXRlbSBpcyBhbHdheXMgZnVsbHkgdmlzaWJsZVxuICAgIGNvbnN0IG1heEluZGV4ID0gTWF0aC5tYXgoMCwgdGhpcy5pdGVtcy5sZW5ndGggLSBpdGVtc1BlclZpZXcpO1xuICAgIFxuICAgIHJldHVybiBtYXhJbmRleDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImMtY2Fyb3VzZWwtZml4ZWQtY29udGFpbmVyXCI+XG4gIDxkaXYgXG4gICAgY2xhc3M9XCJjLWNhcm91c2VsLWZpeGVkLXNsaWRlc1wiIFxuICAgICNzbGlkZXNDb250YWluZXJcbiAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGVYKCcgKyB0cmFuc2xhdGVYICsgJ3B4KSdcIiBcbiAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAgIChtb3VzZW1vdmUpPVwib25Nb3VzZU1vdmUoJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwib25Nb3VzZVVwKCRldmVudClcIlxuICAgIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgkZXZlbnQpXCJcbiAgICAodG91Y2hzdGFydCk9XCJvblRvdWNoU3RhcnQoJGV2ZW50KVwiIFxuICAgICh0b3VjaG1vdmUpPVwib25Ub3VjaE1vdmUoJGV2ZW50KVwiIFxuICAgICh0b3VjaGVuZCk9XCJvblRvdWNoRW5kKCRldmVudClcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjLWNhcm91c2VsLWZpeGVkLWZvb3RlclwiIFtoaWRkZW5dPVwicmVtb3ZlQXJyb3dzXCI+XG4gICAgPGJ1dHRvbiBcbiAgICAgIGNsYXNzPVwiYy1jYXJvdXNlbC1maXhlZC1uYXYgcHJldlwiIFxuICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Hb1ByZXZpb3VzKClcIlxuICAgICAgdGl0bGU9XCJJdGVtIGFudGVyaW9yXCIgXG4gICAgICBhcmlhLWxhYmVsPVwiSXRlbSBhbnRlcmlvclwiIFxuICAgICAgKGNsaWNrKT1cInByZXZJdGVtKClcIj5cbiAgICAgIDxsaWItZWx1eC1pY29uIFtpY29uXT1cIidDaGV2cm9uX0xlZnQuc3ZnJ1wiIFtzaXplXT1cIicxNidcIiBbc2l6ZVR5cGVdPVwiJ3B4J1wiIFtjb2xvcl09XCInIzAyMEYyRSdcIj48L2xpYi1lbHV4LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIFxuICAgICAgY2xhc3M9XCJjLWNhcm91c2VsLWZpeGVkLW5hdiBuZXh0XCIgXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbkdvTmV4dCgpXCJcbiAgICAgIHRpdGxlPVwiUHLDs3hpbW8gaXRlbVwiIFxuICAgICAgYXJpYS1sYWJlbD1cIlByw7N4aW1vIGl0ZW1cIiBcbiAgICAgIChjbGljayk9XCJuZXh0SXRlbSgpXCI+XG4gICAgICA8bGliLWVsdXgtaWNvbiBbaWNvbl09XCInQ2hldnJvbl9SaWdodC5zdmcnXCIgW3NpemVdPVwiJzE2J1wiIFtzaXplVHlwZV09XCIncHgnXCIgW2NvbG9yXT1cIicjMDIwRjJFJ1wiPjwvbGliLWVsdXgtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -57,7 +57,8 @@ export * from './card-4';
57
57
  export * from './dropdown-multiple';
58
58
  export * from './loading-2';
59
59
  export * from './carousel';
60
+ export * from './carousel-fixed/carousel-fixed.component';
60
61
  export * from './arrow-link';
61
62
  export * from './switch';
62
63
  export * from './chip';
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi91aS9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFnQjtJQUMvQyxjQUFjO0lBQ2QsVUFBVTtJQUNWLGNBQWM7SUFDZCxZQUFZO0lBQ1osUUFBUTtJQUNSLGFBQWE7SUFDYixXQUFXO0lBQ1gsU0FBUztJQUNULGFBQWE7SUFDYixhQUFhO0lBQ2IsU0FBUztJQUNULHdCQUF3QjtJQUN4Qiw2QkFBNkI7SUFDN0IsV0FBVztJQUNYLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsVUFBVTtJQUNWLFFBQVE7Q0FDVCxDQUFDO0FBRUYsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbHV4QnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYic7XG5pbXBvcnQgeyBFbHV4QnV0dG9uIH0gZnJvbSAnLi9idXR0b24nO1xuaW1wb3J0IHsgRWx1eERyb3Bkb3duIH0gZnJvbSAnLi9kcm9wZG93bic7XG5pbXBvcnQgeyBFbHV4SWNvbiB9IGZyb20gJy4vaWNvbic7XG5pbXBvcnQgeyBFbHV4UGFnaW5hdG9yIH0gZnJvbSAnLi9wYWdpbmF0b3InO1xuaW1wb3J0IHsgRWx1eFN0ZXBCYXIgfSBmcm9tICcuL3N0ZXBiYXInO1xuaW1wb3J0IHsgRWx1eERhdGVwaWNrZXIgfSBmcm9tICcuL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgRWx1eFRvYXN0IH0gZnJvbSAnLi90b2FzdCc7XG5pbXBvcnQgeyBFbHV4RGF0YVRhYmxlIH0gZnJvbSAnLi9kYXRhdGFibGUnO1xuaW1wb3J0IHsgRWx1eEFjY29yZGlvbiB9IGZyb20gJy4vYWNjb3JkaW9uJztcbmltcG9ydCB7IEVsdXhNb2RhbCB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgRWx1eElucHV0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1zZWFyY2gnO1xuaW1wb3J0IHsgRWx1eExvYWRpbmcgfSBmcm9tICcuL2xvYWRpbmcnO1xuaW1wb3J0IHsgRWx1eElucHV0U2VhcmNoTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LXNlYXJjaC1tb2RhbC9pbnB1dC1zZWFyY2gtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEVsdXhEcm9wZG93bk11bHRpcGxlIH0gZnJvbSAnLi9kcm9wZG93bi1tdWx0aXBsZSc7XG5pbXBvcnQgeyBFbHV4Q2Fyb3VzZWxDb21wb25lbnQgfSBmcm9tICcuL2Nhcm91c2VsJztcbmltcG9ydCB7IEVsdXhTd2l0Y2ggfSBmcm9tICcuL3N3aXRjaCc7XG5pbXBvcnQgeyBFbHV4Q2hpcCB9IGZyb20gJy4vY2hpcCc7XG5cbmV4cG9ydCBjb25zdCBFbGVjdHJvbHV4Q29tcG9uZW50czogVHlwZTxhbnk+W10gPSBbXG4gIEVsdXhCcmVhZGNydW1iLFxuICBFbHV4QnV0dG9uLFxuICBFbHV4RGF0ZXBpY2tlcixcbiAgRWx1eERyb3Bkb3duLFxuICBFbHV4SWNvbixcbiAgRWx1eFBhZ2luYXRvcixcbiAgRWx1eFN0ZXBCYXIsXG4gIEVsdXhUb2FzdCxcbiAgRWx1eERhdGFUYWJsZSxcbiAgRWx1eEFjY29yZGlvbixcbiAgRWx1eE1vZGFsLFxuICBFbHV4SW5wdXRTZWFyY2hDb21wb25lbnQsXG4gIEVsdXhJbnB1dFNlYXJjaE1vZGFsQ29tcG9uZW50LFxuICBFbHV4TG9hZGluZyxcbiAgRWx1eERyb3Bkb3duTXVsdGlwbGUsXG4gIEVsdXhDYXJvdXNlbENvbXBvbmVudCxcbiAgRWx1eFN3aXRjaCxcbiAgRWx1eENoaXAsXG5dO1xuXG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWInO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bic7XG5leHBvcnQgKiBmcm9tICcuL2ljb24nO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdpbmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9zdGVwYmFyJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZXBpY2tlcic7XG5leHBvcnQgKiBmcm9tICcuL3RvYXN0JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vYWNjb3JkaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2FkaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtc2VhcmNoJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtc2VhcmNoLW1vZGFsJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC0xJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC0yJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC0zJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC00JztcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24tbXVsdGlwbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2FkaW5nLTInO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJvdXNlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Fycm93LWxpbmsnO1xuZXhwb3J0ICogZnJvbSAnLi9zd2l0Y2gnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGlwJztcbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi91aS9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFnQjtJQUMvQyxjQUFjO0lBQ2QsVUFBVTtJQUNWLGNBQWM7SUFDZCxZQUFZO0lBQ1osUUFBUTtJQUNSLGFBQWE7SUFDYixXQUFXO0lBQ1gsU0FBUztJQUNULGFBQWE7SUFDYixhQUFhO0lBQ2IsU0FBUztJQUNULHdCQUF3QjtJQUN4Qiw2QkFBNkI7SUFDN0IsV0FBVztJQUNYLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsVUFBVTtJQUNWLFFBQVE7Q0FDVCxDQUFDO0FBRUYsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVsdXhCcmVhZGNydW1iIH0gZnJvbSAnLi9icmVhZGNydW1iJztcbmltcG9ydCB7IEVsdXhCdXR0b24gfSBmcm9tICcuL2J1dHRvbic7XG5pbXBvcnQgeyBFbHV4RHJvcGRvd24gfSBmcm9tICcuL2Ryb3Bkb3duJztcbmltcG9ydCB7IEVsdXhJY29uIH0gZnJvbSAnLi9pY29uJztcbmltcG9ydCB7IEVsdXhQYWdpbmF0b3IgfSBmcm9tICcuL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBFbHV4U3RlcEJhciB9IGZyb20gJy4vc3RlcGJhcic7XG5pbXBvcnQgeyBFbHV4RGF0ZXBpY2tlciB9IGZyb20gJy4vZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBFbHV4VG9hc3QgfSBmcm9tICcuL3RvYXN0JztcbmltcG9ydCB7IEVsdXhEYXRhVGFibGUgfSBmcm9tICcuL2RhdGF0YWJsZSc7XG5pbXBvcnQgeyBFbHV4QWNjb3JkaW9uIH0gZnJvbSAnLi9hY2NvcmRpb24nO1xuaW1wb3J0IHsgRWx1eE1vZGFsIH0gZnJvbSAnLi9tb2RhbCc7XG5pbXBvcnQgeyBFbHV4SW5wdXRTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LXNlYXJjaCc7XG5pbXBvcnQgeyBFbHV4TG9hZGluZyB9IGZyb20gJy4vbG9hZGluZyc7XG5pbXBvcnQgeyBFbHV4SW5wdXRTZWFyY2hNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtc2VhcmNoLW1vZGFsL2lucHV0LXNlYXJjaC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWx1eERyb3Bkb3duTXVsdGlwbGUgfSBmcm9tICcuL2Ryb3Bkb3duLW11bHRpcGxlJztcbmltcG9ydCB7IEVsdXhDYXJvdXNlbENvbXBvbmVudCB9IGZyb20gJy4vY2Fyb3VzZWwnO1xuaW1wb3J0IHsgRWx1eFN3aXRjaCB9IGZyb20gJy4vc3dpdGNoJztcbmltcG9ydCB7IEVsdXhDaGlwIH0gZnJvbSAnLi9jaGlwJztcblxuZXhwb3J0IGNvbnN0IEVsZWN0cm9sdXhDb21wb25lbnRzOiBUeXBlPGFueT5bXSA9IFtcbiAgRWx1eEJyZWFkY3J1bWIsXG4gIEVsdXhCdXR0b24sXG4gIEVsdXhEYXRlcGlja2VyLFxuICBFbHV4RHJvcGRvd24sXG4gIEVsdXhJY29uLFxuICBFbHV4UGFnaW5hdG9yLFxuICBFbHV4U3RlcEJhcixcbiAgRWx1eFRvYXN0LFxuICBFbHV4RGF0YVRhYmxlLFxuICBFbHV4QWNjb3JkaW9uLFxuICBFbHV4TW9kYWwsXG4gIEVsdXhJbnB1dFNlYXJjaENvbXBvbmVudCxcbiAgRWx1eElucHV0U2VhcmNoTW9kYWxDb21wb25lbnQsXG4gIEVsdXhMb2FkaW5nLFxuICBFbHV4RHJvcGRvd25NdWx0aXBsZSxcbiAgRWx1eENhcm91c2VsQ29tcG9uZW50LFxuICBFbHV4U3dpdGNoLFxuICBFbHV4Q2hpcCxcbl07XG5cbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYic7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duJztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbic7XG5leHBvcnQgKiBmcm9tICcuL3BhZ2luYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3N0ZXBiYXInO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlcGlja2VyJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hY2NvcmRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RhbCc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWRpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1zZWFyY2gnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1zZWFyY2gtbW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLTEnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLTInO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLTMnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLTQnO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi1tdWx0aXBsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWRpbmctMic7XG5leHBvcnQgKiBmcm9tICcuL2Nhcm91c2VsJztcbmV4cG9ydCAqIGZyb20gJy4vY2Fyb3VzZWwtZml4ZWQvY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXJyb3ctbGluayc7XG5leHBvcnQgKiBmcm9tICcuL3N3aXRjaCc7XG5leHBvcnQgKiBmcm9tICcuL2NoaXAnO1xuIl19