@villedemontreal/angular-ui 16.2.1 → 16.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/alert/alert.component.mjs +2 -2
- package/esm2022/lib/alert/index.mjs +2 -2
- package/esm2022/lib/alert/module.mjs +2 -2
- package/esm2022/lib/avatar/avatar.component.mjs +2 -2
- package/esm2022/lib/avatar/index.mjs +2 -2
- package/esm2022/lib/avatar/module.mjs +2 -2
- package/esm2022/lib/badge/badge.component.mjs +2 -2
- package/esm2022/lib/badge/index.mjs +2 -2
- package/esm2022/lib/badge/module.mjs +2 -2
- package/esm2022/lib/bao.module.mjs +2 -2
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +2 -2
- package/esm2022/lib/breadcrumb/index.mjs +2 -2
- package/esm2022/lib/breadcrumb/module.mjs +2 -2
- package/esm2022/lib/button/button.component.mjs +2 -2
- package/esm2022/lib/button/index.mjs +2 -2
- package/esm2022/lib/button/module.mjs +2 -2
- package/esm2022/lib/card/card.component.mjs +2 -2
- package/esm2022/lib/card/index.mjs +2 -2
- package/esm2022/lib/card/module.mjs +2 -2
- package/esm2022/lib/checkbox/checkbox-group.component.mjs +2 -2
- package/esm2022/lib/checkbox/checkbox.component.mjs +1 -1
- package/esm2022/lib/checkbox/index.mjs +2 -2
- package/esm2022/lib/checkbox/module.mjs +2 -2
- package/esm2022/lib/common-components/error-text/errorText.component.mjs +2 -2
- package/esm2022/lib/common-components/guiding-text/guidingText.component.mjs +2 -2
- package/esm2022/lib/common-components/index.mjs +2 -2
- package/esm2022/lib/common-components/label-text/labelText.component.mjs +2 -2
- package/esm2022/lib/common-components/module.mjs +2 -2
- package/esm2022/lib/common-components/title-text/titleText.component.mjs +2 -2
- package/esm2022/lib/core/breakpoints.mjs +2 -2
- package/esm2022/lib/core/colors.mjs +1 -1
- package/esm2022/lib/core/index.mjs +2 -2
- package/esm2022/lib/dropdown-menu/dropdown-menu.component.mjs +2 -2
- package/esm2022/lib/dropdown-menu/index.mjs +2 -2
- package/esm2022/lib/dropdown-menu/module.mjs +2 -2
- package/esm2022/lib/file/file-input.component.mjs +18 -9
- package/esm2022/lib/file/file-intl.mjs +2 -2
- package/esm2022/lib/file/file-preview.component.mjs +2 -2
- package/esm2022/lib/file/index.mjs +2 -2
- package/esm2022/lib/file/module.mjs +2 -2
- package/esm2022/lib/header-info/header-info.component.mjs +2 -2
- package/esm2022/lib/header-info/index.mjs +2 -2
- package/esm2022/lib/header-info/module.mjs +2 -2
- package/esm2022/lib/hyperlink/hyperlink.component.mjs +2 -2
- package/esm2022/lib/hyperlink/index.mjs +2 -2
- package/esm2022/lib/hyperlink/module.mjs +2 -2
- package/esm2022/lib/icon/bao-icon-registry.mjs +2 -2
- package/esm2022/lib/icon/icon.component.mjs +2 -2
- package/esm2022/lib/icon/icons-dictionary.mjs +2 -2
- package/esm2022/lib/icon/index.mjs +2 -2
- package/esm2022/lib/icon/module.mjs +2 -2
- package/esm2022/lib/list/index.mjs +2 -2
- package/esm2022/lib/list/list.component.mjs +2 -2
- package/esm2022/lib/list/module.mjs +2 -2
- package/esm2022/lib/message-bar/index.mjs +2 -2
- package/esm2022/lib/message-bar/message-bar.component.mjs +2 -2
- package/esm2022/lib/message-bar/module.mjs +2 -2
- package/esm2022/lib/modal/index.mjs +2 -2
- package/esm2022/lib/modal/modal-config.mjs +10 -2
- package/esm2022/lib/modal/modal-container.mjs +3 -3
- package/esm2022/lib/modal/modal-directives.mjs +2 -2
- package/esm2022/lib/modal/modal-ref.mjs +21 -18
- package/esm2022/lib/modal/modal.mjs +87 -15
- package/esm2022/lib/modal/module.mjs +2 -2
- package/esm2022/lib/pagination/index.mjs +2 -2
- package/esm2022/lib/pagination/module.mjs +2 -2
- package/esm2022/lib/pagination/pagination.component.mjs +8 -2
- package/esm2022/lib/radio/index.mjs +2 -2
- package/esm2022/lib/radio/module.mjs +2 -2
- package/esm2022/lib/radio/radio-group.component.mjs +2 -2
- package/esm2022/lib/radio/radio.component.mjs +1 -1
- package/esm2022/lib/shared/enum/display-mode.mjs +1 -1
- package/esm2022/lib/shared/index.mjs +2 -2
- package/esm2022/lib/snack-bar/index.mjs +2 -2
- package/esm2022/lib/snack-bar/module.mjs +2 -2
- package/esm2022/lib/snack-bar/simple-snack-bar.component.mjs +2 -2
- package/esm2022/lib/snack-bar/snack-bar-animations.mjs +2 -2
- package/esm2022/lib/snack-bar/snack-bar-config.mjs +1 -1
- package/esm2022/lib/snack-bar/snack-bar-container.mjs +1 -1
- package/esm2022/lib/snack-bar/snack-bar-ref.mjs +1 -1
- package/esm2022/lib/snack-bar/snack-bar.mjs +1 -1
- package/esm2022/lib/summary/index.mjs +2 -2
- package/esm2022/lib/summary/list-summary.component.mjs +2 -2
- package/esm2022/lib/summary/module.mjs +2 -2
- package/esm2022/lib/summary/summary.component.mjs +2 -2
- package/esm2022/lib/system-header/index.mjs +2 -2
- package/esm2022/lib/system-header/module.mjs +2 -2
- package/esm2022/lib/system-header/system-header.component.mjs +1 -1
- package/esm2022/lib/tabs/index.mjs +2 -2
- package/esm2022/lib/tabs/module.mjs +2 -2
- package/esm2022/lib/tabs/tabs.component.mjs +2 -2
- package/esm2022/lib/tag/index.mjs +2 -2
- package/esm2022/lib/tag/module.mjs +2 -2
- package/esm2022/lib/tag/tag.component.mjs +2 -2
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/villedemontreal-angular-ui.mjs +219 -122
- package/fesm2022/villedemontreal-angular-ui.mjs.map +1 -1
- package/lib/modal/modal-config.d.ts +12 -1
- package/lib/modal/modal.d.ts +3 -3
- package/package.json +1 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 2026 Ville de Montreal. All rights reserved.
|
|
3
3
|
* Licensed under the MIT license.
|
|
4
4
|
* See LICENSE file in the project root for full license information.
|
|
5
5
|
*/
|
|
6
6
|
/* eslint-disable @typescript-eslint/no-unsafe-return*/
|
|
7
|
+
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
8
|
+
import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
7
9
|
import { Directive, Injectable, InjectionToken, Injector, Optional, SkipSelf, TemplateRef } from '@angular/core';
|
|
8
10
|
import { defer, startWith, Subject } from 'rxjs';
|
|
11
|
+
import { BaoModalInitialConfig, eModalDesktopWidthSize, eModalMobileWidthSize, eModalVariant, FILTER_MODAL_WIDTH } from './modal-config';
|
|
9
12
|
import { BaoModalContainer } from './modal-container';
|
|
10
13
|
import { BaoModalRef } from './modal-ref';
|
|
11
|
-
import { BaoModalInitialConfig, eModalDesktopWidthSize, eModalMobileWidthSize } from './modal-config';
|
|
12
|
-
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
13
|
-
import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
15
|
import * as i1 from "@angular/cdk/overlay";
|
|
16
16
|
/** Injection token that can be used to access the data that was passed in to a modal. */
|
|
@@ -110,15 +110,71 @@ export class BaoModalBase {
|
|
|
110
110
|
* Creates an overlay config from a modal config.
|
|
111
111
|
*/
|
|
112
112
|
_getOverlayConfig(config) {
|
|
113
|
+
let positionStrategy;
|
|
114
|
+
let hasBackdrop = config.hasBackdrop;
|
|
115
|
+
let backdropClass = config.backdropClass;
|
|
116
|
+
if (config.variant === eModalVariant.FILTER && config.triggerElement) {
|
|
117
|
+
// Use connected positioning for filter variant
|
|
118
|
+
positionStrategy = this._overlay
|
|
119
|
+
.position()
|
|
120
|
+
.flexibleConnectedTo(config.triggerElement.nativeElement)
|
|
121
|
+
.withLockedPosition()
|
|
122
|
+
.withGrowAfterOpen()
|
|
123
|
+
.withPositions([
|
|
124
|
+
{
|
|
125
|
+
// top-left of the overlay is connected to bottom-left of the origin;
|
|
126
|
+
originX: 'start',
|
|
127
|
+
originY: 'bottom',
|
|
128
|
+
overlayX: 'start',
|
|
129
|
+
overlayY: 'top'
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
// bottom-left of the overlay is connected to top-left of the origin;
|
|
133
|
+
originX: 'start',
|
|
134
|
+
originY: 'top',
|
|
135
|
+
overlayX: 'start',
|
|
136
|
+
overlayY: 'bottom'
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
// top-right of the overlay is connected to bottom-right of the origin;
|
|
140
|
+
originX: 'end',
|
|
141
|
+
originY: 'bottom',
|
|
142
|
+
overlayX: 'end',
|
|
143
|
+
overlayY: 'top'
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
// bottom-right of the overlay is connected to top-right of the origin;
|
|
147
|
+
originX: 'end',
|
|
148
|
+
originY: 'top',
|
|
149
|
+
overlayX: 'end',
|
|
150
|
+
overlayY: 'bottom'
|
|
151
|
+
}
|
|
152
|
+
]);
|
|
153
|
+
// Filter variant should have transparent backdrop
|
|
154
|
+
hasBackdrop = true;
|
|
155
|
+
backdropClass = 'bao-overlay-transparent-backdrop';
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
// Use global positioning for default variant
|
|
159
|
+
positionStrategy = this._overlay.position().global();
|
|
160
|
+
}
|
|
113
161
|
const state = new OverlayConfig({
|
|
114
|
-
positionStrategy
|
|
162
|
+
positionStrategy,
|
|
115
163
|
scrollStrategy: this._overlay.scrollStrategies.block(),
|
|
116
164
|
panelClass: config.panelClass,
|
|
117
|
-
hasBackdrop
|
|
118
|
-
disposeOnNavigation: config.closeOnNavigation
|
|
165
|
+
hasBackdrop,
|
|
166
|
+
disposeOnNavigation: config.closeOnNavigation,
|
|
167
|
+
// Set dimensions for filter variant in OverlayConfig instead of via updateSize()
|
|
168
|
+
width: config.variant === eModalVariant.FILTER
|
|
169
|
+
? FILTER_MODAL_WIDTH
|
|
170
|
+
: config.width,
|
|
171
|
+
minWidth: config.minWidth,
|
|
172
|
+
minHeight: config.minHeight,
|
|
173
|
+
maxWidth: config.maxWidth,
|
|
174
|
+
maxHeight: config.maxHeight
|
|
119
175
|
});
|
|
120
|
-
if (
|
|
121
|
-
state.backdropClass =
|
|
176
|
+
if (backdropClass) {
|
|
177
|
+
state.backdropClass = backdropClass;
|
|
122
178
|
}
|
|
123
179
|
return state;
|
|
124
180
|
}
|
|
@@ -154,9 +210,13 @@ export class BaoModalBase {
|
|
|
154
210
|
const contentRef = modalContainer.attachComponentPortal(new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector));
|
|
155
211
|
modalRef.componentInstance = contentRef.instance;
|
|
156
212
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
213
|
+
// Only update size and position for global variant
|
|
214
|
+
// Filter variant dimensions are set in OverlayConfig and positioning is handled by FlexibleConnectedPositionStrategy
|
|
215
|
+
if (config.variant !== eModalVariant.FILTER) {
|
|
216
|
+
modalRef
|
|
217
|
+
.updateSize(config.width, config.height)
|
|
218
|
+
.updatePosition(config.position);
|
|
219
|
+
}
|
|
160
220
|
return modalRef;
|
|
161
221
|
}
|
|
162
222
|
/**
|
|
@@ -237,12 +297,24 @@ export class BaoModalBase {
|
|
|
237
297
|
const mobilClass = config?.mobileSize || eModalMobileWidthSize.FULL;
|
|
238
298
|
const data = config?.data || null;
|
|
239
299
|
const ariaLabelledBy = config?.ariaLabelledBy || null;
|
|
300
|
+
const variant = config?.variant || eModalVariant.GLOBAL;
|
|
301
|
+
const triggerElement = config?.triggerElement;
|
|
302
|
+
// Add variant class for styling
|
|
303
|
+
const variantClass = variant === eModalVariant.FILTER
|
|
304
|
+
? 'bao-modal-filter'
|
|
305
|
+
: 'bao-modal-global';
|
|
306
|
+
// Filter variant does not have responsive css classes
|
|
307
|
+
const panelClass = variant === eModalVariant.FILTER
|
|
308
|
+
? [variantClass]
|
|
309
|
+
: [desktopClass, mobilClass, variantClass];
|
|
240
310
|
return {
|
|
241
311
|
...defaultOptions,
|
|
242
312
|
...{
|
|
243
|
-
panelClass
|
|
313
|
+
panelClass,
|
|
244
314
|
ariaLabelledBy,
|
|
245
|
-
data
|
|
315
|
+
data,
|
|
316
|
+
variant,
|
|
317
|
+
triggerElement
|
|
246
318
|
}
|
|
247
319
|
};
|
|
248
320
|
}
|
|
@@ -269,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
|
|
|
269
341
|
}, {
|
|
270
342
|
type: SkipSelf
|
|
271
343
|
}] }, { type: i1.OverlayContainer }]; } });
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvbW9kYWwvbW9kYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUVSLFFBQVEsRUFDUixRQUFRLEVBRVIsV0FBVyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQWMsU0FBUyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUEwQixNQUFNLG1CQUFtQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUVMLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUdMLGFBQWEsRUFHZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUV0RSx5RkFBeUY7QUFDekYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFVLGNBQWMsQ0FBQyxDQUFDO0FBRzFFLE1BQU0sT0FBZ0IsWUFBWTtJQW1CaEMsWUFDVSxRQUFpQixFQUNqQixTQUFtQixFQUNuQixZQUF5QyxFQUN6QyxpQkFBbUMsRUFDbkMsb0JBQWdELEVBQ2hELG1CQUE0QixFQUM1QixlQUF3QztRQU54QyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsaUJBQVksR0FBWixZQUFZLENBQTZCO1FBQ3pDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMseUJBQW9C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QUFjLElBQUksSUFBSSxDQUFDO1FBRXRELE9BQU87WUFDTCxHQUFHLGNBQWM7WUFDakIsR0FBRztnQkFDRCxVQUFVLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO2dCQUN0QyxjQUFjO2dCQUNkLElBQUk7YUFDTDtTQUNGLENBQUM7SUFDSixDQUFDOzhHQW5VbUIsWUFBWTtrR0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQURqQyxTQUFTOztBQXVVVjs7R0FFRztBQUVILE1BQU0sT0FBTyxRQUFTLFNBQVEsWUFBK0I7SUFDM0QsWUFDRSxPQUFnQixFQUNoQixRQUFrQixFQUNNLFdBQXFCLEVBQzdDLGdCQUFrQztRQUVsQyxLQUFLLENBQ0gsT0FBTyxFQUNQLFFBQVEsRUFDUixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsY0FBYyxDQUNmLENBQUM7SUFDSixDQUFDOzhHQWhCVSxRQUFRO2tIQUFSLFFBQVE7OzJGQUFSLFFBQVE7a0JBRHBCLFVBQVU7OzBCQUtOLFFBQVE7OzBCQUFJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI1IFZpbGxlIGRlIE1vbnRyZWFsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm4qL1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFNraXBTZWxmLFxuICBTdGF0aWNQcm92aWRlcixcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZlciwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhb01vZGFsQ29udGFpbmVyLCBfQmFvTW9kYWxDb250YWluZXJCYXNlIH0gZnJvbSAnLi9tb2RhbC1jb250YWluZXInO1xuaW1wb3J0IHsgQmFvTW9kYWxSZWYgfSBmcm9tICcuL21vZGFsLXJlZic7XG5pbXBvcnQge1xuICBCYW9Nb2RhbENvbmZpZyxcbiAgQmFvTW9kYWxJbml0aWFsQ29uZmlnLFxuICBlTW9kYWxEZXNrdG9wV2lkdGhTaXplLFxuICBlTW9kYWxNb2JpbGVXaWR0aFNpemVcbn0gZnJvbSAnLi9tb2RhbC1jb25maWcnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50VHlwZSxcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgT3ZlcmxheUNvbnRhaW5lcixcbiAgT3ZlcmxheVJlZlxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIGRhdGEgdGhhdCB3YXMgcGFzc2VkIGluIHRvIGEgbW9kYWwuICovXG5leHBvcnQgY29uc3QgQkFPX01PREFMX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48dW5rbm93bj4oJ0Jhb01vZGFsRGF0YScpO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYW9Nb2RhbEJhc2U8QyBleHRlbmRzIF9CYW9Nb2RhbENvbnRhaW5lckJhc2U+XG4gIGltcGxlbWVudHMgT25EZXN0cm95XG57XG4gIHB1YmxpYyByZWFkb25seSBhZnRlckFsbENsb3NlZDogT2JzZXJ2YWJsZTx2b2lkPiA9IGRlZmVyKCgpID0+XG4gICAgdGhpcy5vcGVuTW9kYWxzLmxlbmd0aFxuICAgICAgPyB0aGlzLmdldEFmdGVyQWxsQ2xvc2VkKClcbiAgICAgIDogdGhpcy5nZXRBZnRlckFsbENsb3NlZCgpLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCkpXG4gICk7XG5cbiAgcHJpdmF0ZSBfb3Blbk1vZGFsc0F0VGhpc0xldmVsOiBCYW9Nb2RhbFJlZjx1bmtub3duPltdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FmdGVyQWxsQ2xvc2VkQXRUaGlzTGV2ZWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hZnRlck9wZW5lZEF0VGhpc0xldmVsID0gbmV3IFN1YmplY3Q8XG4gICAgQmFvTW9kYWxSZWY8dW5rbm93bj5cbiAgPigpO1xuICBwcml2YXRlIF9hcmlhSGlkZGVuRWxlbWVudHMgPSBuZXcgTWFwPEVsZW1lbnQsIHN0cmluZyB8IG51bGw+KCk7XG4gIHByaXZhdGUgX21vZGFsQW5pbWF0aW5nT3BlbiA9IGZhbHNlO1xuICBwcml2YXRlIF9hbmltYXRpb25TdGF0ZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfbGFzdE1vZGFsUmVmOiBCYW9Nb2RhbFJlZjx1bmtub3duPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIF9wYXJlbnRNb2RhbDogQmFvTW9kYWxCYXNlPEM+IHwgdW5kZWZpbmVkLFxuICAgIHByaXZhdGUgX292ZXJsYXlDb250YWluZXI6IE92ZXJsYXlDb250YWluZXIsXG4gICAgcHJpdmF0ZSBfbW9kYWxSZWZDb25zdHJ1Y3RvcjogVHlwZTxCYW9Nb2RhbFJlZjx1bmtub3duPj4sXG4gICAgcHJpdmF0ZSBfbW9kYWxDb250YWluZXJUeXBlOiBUeXBlPEM+LFxuICAgIHByaXZhdGUgX21vZGFsRGF0YVRva2VuOiBJbmplY3Rpb25Ub2tlbjx1bmtub3duPlxuICApIHt9XG5cbiAgLyoqIEtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50bHktb3BlbiBtb2RhbHMuICovXG4gIHB1YmxpYyBnZXQgb3Blbk1vZGFscygpOiBCYW9Nb2RhbFJlZjx1bmtub3duPltdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50TW9kYWxcbiAgICAgID8gdGhpcy5fcGFyZW50TW9kYWwub3Blbk1vZGFsc1xuICAgICAgOiB0aGlzLl9vcGVuTW9kYWxzQXRUaGlzTGV2ZWw7XG4gIH1cblxuICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBhIG1vZGFsIGhhcyBiZWVuIG9wZW5lZC4gKi9cbiAgcHVibGljIGdldCBhZnRlck9wZW5lZCgpOiBTdWJqZWN0PEJhb01vZGFsUmVmPHVua25vd24+PiB7XG4gICAgLy8gTWF5YmUgdHlwZXNjcmlwdCB2ZXJzaW9uIGRpZmZlcmVuY2VcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50TW9kYWxcbiAgICAgID8gdGhpcy5fcGFyZW50TW9kYWwuYWZ0ZXJPcGVuZWRcbiAgICAgIDogdGhpcy5fYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBZnRlckFsbENsb3NlZCgpOiBTdWJqZWN0PHZvaWQ+IHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9wYXJlbnRNb2RhbDtcbiAgICByZXR1cm4gcGFyZW50XG4gICAgICA/IHBhcmVudC5nZXRBZnRlckFsbENsb3NlZCgpXG4gICAgICA6IHRoaXMuX2FmdGVyQWxsQ2xvc2VkQXRUaGlzTGV2ZWw7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgYSBtb2RhbCBtb2RhbCBjb250YWluaW5nIHRoZSBnaXZlbiB0ZW1wbGF0ZS5cbiAgICovXG4gIHB1YmxpYyBvcGVuPFQ+KFxuICAgIGNvbXBvbmVudE9yVGVtcGxhdGVSZWY6IENvbXBvbmVudFR5cGU8VD4gfCBUZW1wbGF0ZVJlZjxUPixcbiAgICBjb25maWc/OiBCYW9Nb2RhbENvbmZpZ1xuICApOiBCYW9Nb2RhbFJlZjx1bmtub3duPiB7XG4gICAgY29uc3QgY29uZiA9IHRoaXMuX2FwcGx5Q29uZmlnRGVmYXVsdHMoY29uZmlnLCBuZXcgQmFvTW9kYWxJbml0aWFsQ29uZmlnKCkpO1xuXG4gICAgLy8gSWYgdGhlcmUgaXMgYSBtb2RhbCB0aGF0IGlzIGN1cnJlbnRseSBhbmltYXRpbmcgb3BlbiwgcmV0dXJuIHRoZSBNYXRtb2RhbFJlZiBvZiB0aGF0IG1vZGFsXG4gICAgaWYgKHRoaXMuX21vZGFsQW5pbWF0aW5nT3Blbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2xhc3RNb2RhbFJlZjtcbiAgICB9XG5cbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5fY3JlYXRlT3ZlcmxheShjb25mKTtcbiAgICBjb25zdCBtb2RhbENvbnRhaW5lciA9IHRoaXMuX2F0dGFjaE1vZGFsQ29udGFpbmVyKG92ZXJsYXlSZWYsIGNvbmYpO1xuXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLl9hdHRhY2hNb2RhbENvbnRlbnQ8VD4oXG4gICAgICBjb21wb25lbnRPclRlbXBsYXRlUmVmLFxuICAgICAgbW9kYWxDb250YWluZXIsXG4gICAgICBvdmVybGF5UmVmLFxuICAgICAgY29uZlxuICAgICk7XG4gICAgdGhpcy5fbGFzdE1vZGFsUmVmID0gbW9kYWxSZWY7XG5cbiAgICAvLyBJZiB0aGlzIGlzIHRoZSBmaXJzdCBtb2RhbCB0aGF0IHdlJ3JlIG9wZW5pbmcsIGhpZGUgYWxsIHRoZSBub24tb3ZlcmxheSBjb250ZW50LlxuICAgIGlmICghdGhpcy5vcGVuTW9kYWxzLmxlbmd0aCkge1xuICAgICAgdGhpcy5faGlkZU5vbk1vZGFsQ29udGVudEZyb21Bc3Npc3RpdmVUZWNobm9sb2d5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuTW9kYWxzLnB1c2gobW9kYWxSZWYpO1xuICAgIG1vZGFsUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3JlbW92ZU9wZW5Nb2RhbChtb2RhbFJlZikpO1xuICAgIHRoaXMuYWZ0ZXJPcGVuZWQubmV4dChtb2RhbFJlZik7XG5cbiAgICAvLyBOb3RpZnkgdGhlIG1vZGFsIGNvbnRhaW5lciB0aGF0IHRoZSBjb250ZW50IGhhcyBiZWVuIGF0dGFjaGVkLlxuICAgIG1vZGFsQ29udGFpbmVyLl9pbml0aWFsaXplV2l0aEF0dGFjaGVkQ29udGVudCgpO1xuXG4gICAgcmV0dXJuIG1vZGFsUmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyBhbGwgb2YgdGhlIGN1cnJlbnRseS1vcGVuIG1vZGFscy5cbiAgICovXG4gIHB1YmxpYyBjbG9zZUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9zZU1vZGFscyh0aGlzLm9wZW5Nb2RhbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuIG9wZW4gbW9kYWwgYnkgaXRzIGlkLlxuICAgKi9cbiAgcHVibGljIGdldE1vZGFsQnlJZChpZDogc3RyaW5nKTogQmFvTW9kYWxSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9wZW5Nb2RhbHMuZmluZChtb2RhbCA9PiBtb2RhbC5pZCA9PT0gaWQpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIC8vIE9ubHkgY2xvc2UgdGhlIG1vZGFscyBhdCB0aGlzIGxldmVsIG9uIGRlc3Ryb3lcbiAgICAvLyBzaW5jZSB0aGUgcGFyZW50IHNlcnZpY2UgbWF5IHN0aWxsIGJlIGFjdGl2ZS5cbiAgICB0aGlzLl9jbG9zZU1vZGFscyh0aGlzLl9vcGVuTW9kYWxzQXRUaGlzTGV2ZWwpO1xuICAgIHRoaXMuX2FmdGVyQWxsQ2xvc2VkQXRUaGlzTGV2ZWwuY29tcGxldGUoKTtcbiAgICB0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsLmNvbXBsZXRlKCk7XG4gICAgLy8gQ2xlYW4gdXAgYW55IHN1YnNjcmlwdGlvbnMgdG8gbW9kYWxzIHRoYXQgbmV2ZXIgZmluaXNoZWQgb3BlbmluZy5cbiAgICBpZiAodGhpcy5fYW5pbWF0aW9uU3RhdGVTdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLl9hbmltYXRpb25TdGF0ZVN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgb3ZlcmxheSBpbnRvIHdoaWNoIHRoZSBtb2RhbCB3aWxsIGJlIGxvYWRlZC5cbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZU92ZXJsYXkoY29uZmlnOiBCYW9Nb2RhbEluaXRpYWxDb25maWcpOiBPdmVybGF5UmVmIHtcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5fZ2V0T3ZlcmxheUNvbmZpZyhjb25maWcpO1xuICAgIHJldHVybiB0aGlzLl9vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIG92ZXJsYXkgY29uZmlnIGZyb20gYSBtb2RhbCBjb25maWcuXG4gICAqL1xuICBwcml2YXRlIF9nZXRPdmVybGF5Q29uZmlnKGNvbmZpZzogQmFvTW9kYWxJbml0aWFsQ29uZmlnKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgY29uc3Qgc3RhdGUgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCksXG4gICAgICBwYW5lbENsYXNzOiBjb25maWcucGFuZWxDbGFzcyxcbiAgICAgIGhhc0JhY2tkcm9wOiBjb25maWcuaGFzQmFja2Ryb3AsXG4gICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiBjb25maWcuY2xvc2VPbk5hdmlnYXRpb25cbiAgICB9KTtcblxuICAgIGlmIChjb25maWcuYmFja2Ryb3BDbGFzcykge1xuICAgICAgc3RhdGUuYmFja2Ryb3BDbGFzcyA9IGNvbmZpZy5iYWNrZHJvcENsYXNzO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyBhIG1vZGFsIGNvbnRhaW5lciB0byBhIG1vZGFsJ3MgYWxyZWFkeS1jcmVhdGVkIG92ZXJsYXkuXG4gICAqL1xuICBwcml2YXRlIF9hdHRhY2hNb2RhbENvbnRhaW5lcihcbiAgICBvdmVybGF5OiBPdmVybGF5UmVmLFxuICAgIGNvbmZpZzogQmFvTW9kYWxJbml0aWFsQ29uZmlnXG4gICk6IEMge1xuICAgIGNvbnN0IHVzZXJJbmplY3RvciA9XG4gICAgICBjb25maWcgJiYgY29uZmlnLnZpZXdDb250YWluZXJSZWYgJiYgY29uZmlnLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3I7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB1c2VySW5qZWN0b3IgfHwgdGhpcy5faW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEJhb01vZGFsSW5pdGlhbENvbmZpZywgdXNlVmFsdWU6IGNvbmZpZyB9XVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChcbiAgICAgIHRoaXMuX21vZGFsQ29udGFpbmVyVHlwZSxcbiAgICAgIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgaW5qZWN0b3JcbiAgICApO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IG92ZXJsYXkuYXR0YWNoPEM+KGNvbnRhaW5lclBvcnRhbCk7XG4gICAgY29udGFpbmVyUmVmLmluc3RhbmNlLl9zdGFydE9wZW5BbmltYXRpb24oKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoZXMgdGhlIHVzZXItcHJvdmlkZWQgY29tcG9uZW50IHRvIHRoZSBhbHJlYWR5LWNyZWF0ZWQgbW9kYWwgY29udGFpbmVyLlxuICAgKi9cbiAgcHJpdmF0ZSBfYXR0YWNoTW9kYWxDb250ZW50PFQ+KFxuICAgIGNvbXBvbmVudE9yVGVtcGxhdGVSZWY6IENvbXBvbmVudFR5cGU8VD4gfCBUZW1wbGF0ZVJlZjxUPixcbiAgICBtb2RhbENvbnRhaW5lcjogQyxcbiAgICBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgIGNvbmZpZzogQmFvTW9kYWxJbml0aWFsQ29uZmlnXG4gICk6IEJhb01vZGFsUmVmPHVua25vd24+IHtcbiAgICAvLyBDcmVhdGUgYSByZWZlcmVuY2UgdG8gdGhlIG1vZGFsIHdlJ3JlIGNyZWF0aW5nIGluIG9yZGVyIHRvIGdpdmUgdGhlIHVzZXIgYSBoYW5kbGVcbiAgICAvLyB0byBtb2RpZnkgYW5kIGNsb3NlIGl0LlxuICAgIGNvbnN0IG1vZGFsUmVmID0gbmV3IHRoaXMuX21vZGFsUmVmQ29uc3RydWN0b3IoXG4gICAgICBvdmVybGF5UmVmLFxuICAgICAgbW9kYWxDb250YWluZXIsXG4gICAgICBjb25maWcuaWRcbiAgICApO1xuXG4gICAgaWYgKGNvbXBvbmVudE9yVGVtcGxhdGVSZWYgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgbW9kYWxDb250YWluZXIuYXR0YWNoVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgIG5ldyBUZW1wbGF0ZVBvcnRhbChjb21wb25lbnRPclRlbXBsYXRlUmVmLCBudWxsLCA8dW5rbm93bj57XG4gICAgICAgICAgJGltcGxpY2l0OiBjb25maWcuZGF0YSxcbiAgICAgICAgICBtb2RhbFJlZlxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLl9jcmVhdGVJbmplY3Rvcihjb25maWcsIG1vZGFsUmVmLCBtb2RhbENvbnRhaW5lcik7XG4gICAgICBjb25zdCBjb250ZW50UmVmID0gbW9kYWxDb250YWluZXIuYXR0YWNoQ29tcG9uZW50UG9ydGFsPFQ+KFxuICAgICAgICBuZXcgQ29tcG9uZW50UG9ydGFsKFxuICAgICAgICAgIGNvbXBvbmVudE9yVGVtcGxhdGVSZWYsXG4gICAgICAgICAgY29uZmlnLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgaW5qZWN0b3JcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlID0gY29udGVudFJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBtb2RhbFJlZlxuICAgICAgLnVwZGF0ZVNpemUoY29uZmlnLndpZHRoLCBjb25maWcuaGVpZ2h0KVxuICAgICAgLnVwZGF0ZVBvc2l0aW9uKGNvbmZpZy5wb3NpdGlvbik7XG5cbiAgICByZXR1cm4gbW9kYWxSZWY7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGN1c3RvbSBpbmplY3RvciB0byBiZSB1c2VkIGluc2lkZSB0aGUgbW9kYWwuIFRoaXMgYWxsb3dzIGEgY29tcG9uZW50IGxvYWRlZCBpbnNpZGVcbiAgICogb2YgYSBtb2RhbCB0byBjbG9zZSBpdHNlbGYgYW5kLCBvcHRpb25hbGx5LCB0byByZXR1cm4gYSB2YWx1ZS5cbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZUluamVjdG9yKFxuICAgIGNvbmZpZzogQmFvTW9kYWxJbml0aWFsQ29uZmlnLFxuICAgIG1vZGFsUmVmOiBCYW9Nb2RhbFJlZjx1bmtub3duPixcbiAgICBtb2RhbENvbnRhaW5lcjogQ1xuICApOiBJbmplY3RvciB7XG4gICAgY29uc3QgdXNlckluamVjdG9yID1cbiAgICAgIGNvbmZpZyAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZiAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZi5pbmplY3RvcjtcblxuICAgIC8vIFRoZSBtb2RhbCBjb250YWluZXIgc2hvdWxkIGJlIHByb3ZpZGVkIGFzIHRoZSBtb2RhbCBjb250YWluZXIgYW5kIHRoZSBtb2RhbCdzXG4gICAgLy8gY29udGVudCBhcmUgY3JlYXRlZCBvdXQgb2YgdGhlIHNhbWUgYFZpZXdDb250YWluZXJSZWZgIGFuZCBhcyBzdWNoLCBhcmUgc2libGluZ3NcbiAgICAvLyBmb3IgaW5qZWN0b3IgcHVycG9zZXMuIFRvIGFsbG93IHRoZSBoaWVyYXJjaHkgdGhhdCBpcyBleHBlY3RlZCwgdGhlIG1vZGFsXG4gICAgLy8gY29udGFpbmVyIGlzIGV4cGxpY2l0bHkgcHJvdmlkZWQgaW4gdGhlIGluamVjdG9yLlxuICAgIGNvbnN0IHByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSA9IFtcbiAgICAgIHsgcHJvdmlkZTogdGhpcy5fbW9kYWxDb250YWluZXJUeXBlLCB1c2VWYWx1ZTogbW9kYWxDb250YWluZXIgfSxcbiAgICAgIHsgcHJvdmlkZTogdGhpcy5fbW9kYWxEYXRhVG9rZW4sIHVzZVZhbHVlOiBjb25maWcuZGF0YSB9LFxuICAgICAgeyBwcm92aWRlOiB0aGlzLl9tb2RhbFJlZkNvbnN0cnVjdG9yLCB1c2VWYWx1ZTogbW9kYWxSZWYgfVxuICAgIF07XG5cbiAgICByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogdXNlckluamVjdG9yIHx8IHRoaXMuX2luamVjdG9yLFxuICAgICAgcHJvdmlkZXJzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIG1vZGFsIGZyb20gdGhlIGFycmF5IG9mIG9wZW4gbW9kYWxzLlxuICAgKi9cbiAgcHJpdmF0ZSBfcmVtb3ZlT3Blbk1vZGFsKG1vZGFsUmVmOiBCYW9Nb2RhbFJlZjx1bmtub3duPikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcGVuTW9kYWxzLmluZGV4T2YobW9kYWxSZWYpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMub3Blbk1vZGFscy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAvLyBJZiBhbGwgdGhlIG1vZGFscyB3ZXJlIGNsb3NlZCwgcmVtb3ZlL3Jlc3RvcmUgdGhlIGBhcmlhLWhpZGRlbmBcbiAgICAgIC8vIHRvIGEgdGhlIHNpYmxpbmdzIGFuZCBlbWl0IHRvIHRoZSBgYWZ0ZXJBbGxDbG9zZWRgIHN0cmVhbS5cbiAgICAgIGlmICghdGhpcy5vcGVuTW9kYWxzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuZm9yRWFjaCgocHJldmlvdXNWYWx1ZSwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGlmIChwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCBwcmV2aW91c1ZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5nZXRBZnRlckFsbENsb3NlZCgpLm5leHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgYWxsIG9mIHRoZSBjb250ZW50IHRoYXQgaXNuJ3QgYW4gb3ZlcmxheSBmcm9tIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LlxuICAgKi9cbiAgcHJpdmF0ZSBfaGlkZU5vbk1vZGFsQ29udGVudEZyb21Bc3Npc3RpdmVUZWNobm9sb2d5KCkge1xuICAgIGNvbnN0IG92ZXJsYXlDb250YWluZXIgPSB0aGlzLl9vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKTtcblxuICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBvdmVybGF5IGNvbnRhaW5lciBpcyBhdHRhY2hlZCB0byB0aGUgRE9NLlxuICAgIGlmIChvdmVybGF5Q29udGFpbmVyLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHNpYmxpbmdzID0gb3ZlcmxheUNvbnRhaW5lci5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuXG4gICAgICBmb3IgKGxldCBpID0gc2libGluZ3MubGVuZ3RoIC0gMTsgaSA+IC0xOyBpLS0pIHtcbiAgICAgICAgY29uc3Qgc2libGluZyA9IHNpYmxpbmdzW2ldO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBzaWJsaW5nICE9PSBvdmVybGF5Q29udGFpbmVyICYmXG4gICAgICAgICAgc2libGluZy5ub2RlTmFtZSAhPT0gJ1NDUklQVCcgJiZcbiAgICAgICAgICBzaWJsaW5nLm5vZGVOYW1lICE9PSAnU1RZTEUnICYmXG4gICAgICAgICAgIXNpYmxpbmcuaGFzQXR0cmlidXRlKCdhcmlhLWxpdmUnKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuc2V0KFxuICAgICAgICAgICAgc2libGluZyxcbiAgICAgICAgICAgIHNpYmxpbmcuZ2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzaWJsaW5nLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlcyBhbGwgb2YgdGhlIG1vZGFscyBpbiBhbiBhcnJheS4gKi9cbiAgcHJpdmF0ZSBfY2xvc2VNb2RhbHMobW9kYWxzOiBCYW9Nb2RhbFJlZjx1bmtub3duPltdKSB7XG4gICAgbGV0IGkgPSBtb2RhbHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIG1vZGFsc1tpXS5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGRlZmF1bHQgb3B0aW9ucyB0byB0aGUgbW9kYWwgY29uZmlnLlxuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlDb25maWdEZWZhdWx0cyhcbiAgICBjb25maWc/OiBCYW9Nb2RhbENvbmZpZyxcbiAgICBkZWZhdWx0T3B0aW9ucz86IEJhb01vZGFsSW5pdGlhbENvbmZpZ1xuICApOiBCYW9Nb2RhbEluaXRpYWxDb25maWcge1xuICAgIGNvbnN0IGRlc2t0b3BDbGFzcyA9IGNvbmZpZz8uc2l6ZSB8fCBlTW9kYWxEZXNrdG9wV2lkdGhTaXplLlNNQUxMO1xuICAgIGNvbnN0IG1vYmlsQ2xhc3MgPSBjb25maWc/Lm1vYmlsZVNpemUgfHwgZU1vZGFsTW9iaWxlV2lkdGhTaXplLkZVTEw7XG4gICAgY29uc3QgZGF0YSA9IGNvbmZpZz8uZGF0YSB8fCBudWxsO1xuICAgIGNvbnN0IGFyaWFMYWJlbGxlZEJ5ID0gY29uZmlnPy5hcmlhTGFiZWxsZWRCeSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgICAgLi4ue1xuICAgICAgICBwYW5lbENsYXNzOiBbZGVza3RvcENsYXNzLCBtb2JpbENsYXNzXSxcbiAgICAgICAgYXJpYUxhYmVsbGVkQnksXG4gICAgICAgIGRhdGFcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogU2VydmljZSB0byBvcGVuIG1vZGFsLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQmFvTW9kYWwgZXh0ZW5kcyBCYW9Nb2RhbEJhc2U8QmFvTW9kYWxDb250YWluZXI+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcGFyZW50TW9kYWw6IEJhb01vZGFsLFxuICAgIG92ZXJsYXlDb250YWluZXI6IE92ZXJsYXlDb250YWluZXJcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBvdmVybGF5LFxuICAgICAgaW5qZWN0b3IsXG4gICAgICBwYXJlbnRNb2RhbCxcbiAgICAgIG92ZXJsYXlDb250YWluZXIsXG4gICAgICBCYW9Nb2RhbFJlZixcbiAgICAgIEJhb01vZGFsQ29udGFpbmVyLFxuICAgICAgQkFPX01PREFMX0RBVEFcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvbW9kYWwvbW9kYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILHVEQUF1RDtBQUN2RCxPQUFPLEVBSUwsYUFBYSxFQUdkLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUVSLFFBQVEsRUFDUixRQUFRLEVBRVIsV0FBVyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQWMsU0FBUyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUVMLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixrQkFBa0IsRUFDbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQTBCLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBRTFDLHlGQUF5RjtBQUN6RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQVUsY0FBYyxDQUFDLENBQUM7QUFHMUUsTUFBTSxPQUFnQixZQUFZO0lBbUJoQyxZQUNVLFFBQWlCLEVBQ2pCLFNBQW1CLEVBQ25CLFlBQXlDLEVBQ3pDLGlCQUFtQyxFQUNuQyxvQkFBZ0QsRUFDaEQsbUJBQTRCLEVBQzVCLGVBQXdDO1FBTnhDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixpQkFBWSxHQUFaLFlBQVksQ0FBNkI7UUFDekMsc0JBQWlCLEdBQWpCLGlC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UUFBUyxTQUFRLFlBQStCO0lBQzNELFlBQ0UsT0FBZ0IsRUFDaEIsUUFBa0IsRUFDTSxXQUFxQixFQUM3QyxnQkFBa0M7UUFFbEMsS0FBSyxDQUNILE9BQU8sRUFDUCxRQUFRLEVBQ1IsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLGNBQWMsQ0FDZixDQUFDO0lBQ0osQ0FBQzs4R0FoQlUsUUFBUTtrSEFBUixRQUFROzsyRkFBUixRQUFRO2tCQURwQixVQUFVOzswQkFLTixRQUFROzswQkFBSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNiBWaWxsZSBkZSBNb250cmVhbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudFR5cGUsXG4gIENvbm5lY3RlZFBvc2l0aW9uLFxuICBPdmVybGF5LFxuICBPdmVybGF5Q29uZmlnLFxuICBPdmVybGF5Q29udGFpbmVyLFxuICBPdmVybGF5UmVmXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBTa2lwU2VsZixcbiAgU3RhdGljUHJvdmlkZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVmZXIsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBCYW9Nb2RhbENvbmZpZyxcbiAgQmFvTW9kYWxJbml0aWFsQ29uZmlnLFxuICBlTW9kYWxEZXNrdG9wV2lkdGhTaXplLFxuICBlTW9kYWxNb2JpbGVXaWR0aFNpemUsXG4gIGVNb2RhbFZhcmlhbnQsXG4gIEZJTFRFUl9NT0RBTF9XSURUSFxufSBmcm9tICcuL21vZGFsLWNvbmZpZyc7XG5pbXBvcnQgeyBfQmFvTW9kYWxDb250YWluZXJCYXNlLCBCYW9Nb2RhbENvbnRhaW5lciB9IGZyb20gJy4vbW9kYWwtY29udGFpbmVyJztcbmltcG9ydCB7IEJhb01vZGFsUmVmIH0gZnJvbSAnLi9tb2RhbC1yZWYnO1xuXG4vKiogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBkYXRhIHRoYXQgd2FzIHBhc3NlZCBpbiB0byBhIG1vZGFsLiAqL1xuZXhwb3J0IGNvbnN0IEJBT19NT0RBTF9EQVRBID0gbmV3IEluamVjdGlvblRva2VuPHVua25vd24+KCdCYW9Nb2RhbERhdGEnKTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFvTW9kYWxCYXNlPEMgZXh0ZW5kcyBfQmFvTW9kYWxDb250YWluZXJCYXNlPlxuICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICBwdWJsaWMgcmVhZG9ubHkgYWZ0ZXJBbGxDbG9zZWQ6IE9ic2VydmFibGU8dm9pZD4gPSBkZWZlcigoKSA9PlxuICAgIHRoaXMub3Blbk1vZGFscy5sZW5ndGhcbiAgICAgID8gdGhpcy5nZXRBZnRlckFsbENsb3NlZCgpXG4gICAgICA6IHRoaXMuZ2V0QWZ0ZXJBbGxDbG9zZWQoKS5waXBlKHN0YXJ0V2l0aCh1bmRlZmluZWQpKVxuICApO1xuXG4gIHByaXZhdGUgX29wZW5Nb2RhbHNBdFRoaXNMZXZlbDogQmFvTW9kYWxSZWY8dW5rbm93bj5bXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbCA9IG5ldyBTdWJqZWN0PFxuICAgIEJhb01vZGFsUmVmPHVua25vd24+XG4gID4oKTtcbiAgcHJpdmF0ZSBfYXJpYUhpZGRlbkVsZW1lbnRzID0gbmV3IE1hcDxFbGVtZW50LCBzdHJpbmcgfCBudWxsPigpO1xuICBwcml2YXRlIF9tb2RhbEFuaW1hdGluZ09wZW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYW5pbWF0aW9uU3RhdGVTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX2xhc3RNb2RhbFJlZjogQmFvTW9kYWxSZWY8dW5rbm93bj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBfcGFyZW50TW9kYWw6IEJhb01vZGFsQmFzZTxDPiB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIF9vdmVybGF5Q29udGFpbmVyOiBPdmVybGF5Q29udGFpbmVyLFxuICAgIHByaXZhdGUgX21vZGFsUmVmQ29uc3RydWN0b3I6IFR5cGU8QmFvTW9kYWxSZWY8dW5rbm93bj4+LFxuICAgIHByaXZhdGUgX21vZGFsQ29udGFpbmVyVHlwZTogVHlwZTxDPixcbiAgICBwcml2YXRlIF9tb2RhbERhdGFUb2tlbjogSW5qZWN0aW9uVG9rZW48dW5rbm93bj5cbiAgKSB7fVxuXG4gIC8qKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudGx5LW9wZW4gbW9kYWxzLiAqL1xuICBwdWJsaWMgZ2V0IG9wZW5Nb2RhbHMoKTogQmFvTW9kYWxSZWY8dW5rbm93bj5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudE1vZGFsXG4gICAgICA/IHRoaXMuX3BhcmVudE1vZGFsLm9wZW5Nb2RhbHNcbiAgICAgIDogdGhpcy5fb3Blbk1vZGFsc0F0VGhpc0xldmVsO1xuICB9XG5cbiAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gYSBtb2RhbCBoYXMgYmVlbiBvcGVuZWQuICovXG4gIHB1YmxpYyBnZXQgYWZ0ZXJPcGVuZWQoKTogU3ViamVjdDxCYW9Nb2RhbFJlZjx1bmtub3duPj4ge1xuICAgIC8vIE1heWJlIHR5cGVzY3JpcHQgdmVyc2lvbiBkaWZmZXJlbmNlXG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudE1vZGFsXG4gICAgICA/IHRoaXMuX3BhcmVudE1vZGFsLmFmdGVyT3BlbmVkXG4gICAgICA6IHRoaXMuX2FmdGVyT3BlbmVkQXRUaGlzTGV2ZWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWZ0ZXJBbGxDbG9zZWQoKTogU3ViamVjdDx2b2lkPiB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fcGFyZW50TW9kYWw7XG4gICAgcmV0dXJuIHBhcmVudFxuICAgICAgPyBwYXJlbnQuZ2V0QWZ0ZXJBbGxDbG9zZWQoKVxuICAgICAgOiB0aGlzLl9hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgbW9kYWwgbW9kYWwgY29udGFpbmluZyB0aGUgZ2l2ZW4gdGVtcGxhdGUuXG4gICAqL1xuICBwdWJsaWMgb3BlbjxUPihcbiAgICBjb21wb25lbnRPclRlbXBsYXRlUmVmOiBDb21wb25lbnRUeXBlPFQ+IHwgVGVtcGxhdGVSZWY8VD4sXG4gICAgY29uZmlnPzogQmFvTW9kYWxDb25maWdcbiAgKTogQmFvTW9kYWxSZWY8dW5rbm93bj4ge1xuICAgIGNvbnN0IGNvbmYgPSB0aGlzLl9hcHBseUNvbmZpZ0RlZmF1bHRzKGNvbmZpZywgbmV3IEJhb01vZGFsSW5pdGlhbENvbmZpZygpKTtcblxuICAgIC8vIElmIHRoZXJlIGlzIGEgbW9kYWwgdGhhdCBpcyBjdXJyZW50bHkgYW5pbWF0aW5nIG9wZW4sIHJldHVybiB0aGUgTWF0bW9kYWxSZWYgb2YgdGhhdCBtb2RhbFxuICAgIGlmICh0aGlzLl9tb2RhbEFuaW1hdGluZ09wZW4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9sYXN0TW9kYWxSZWY7XG4gICAgfVxuXG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMuX2NyZWF0ZU92ZXJsYXkoY29uZik7XG4gICAgY29uc3QgbW9kYWxDb250YWluZXIgPSB0aGlzLl9hdHRhY2hNb2RhbENvbnRhaW5lcihvdmVybGF5UmVmLCBjb25mKTtcblxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5fYXR0YWNoTW9kYWxDb250ZW50PFQ+KFxuICAgICAgY29tcG9uZW50T3JUZW1wbGF0ZVJlZixcbiAgICAgIG1vZGFsQ29udGFpbmVyLFxuICAgICAgb3ZlcmxheVJlZixcbiAgICAgIGNvbmZcbiAgICApO1xuICAgIHRoaXMuX2xhc3RNb2RhbFJlZiA9IG1vZGFsUmVmO1xuXG4gICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgbW9kYWwgdGhhdCB3ZSdyZSBvcGVuaW5nLCBoaWRlIGFsbCB0aGUgbm9uLW92ZXJsYXkgY29udGVudC5cbiAgICBpZiAoIXRoaXMub3Blbk1vZGFscy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2hpZGVOb25Nb2RhbENvbnRlbnRGcm9tQXNzaXN0aXZlVGVjaG5vbG9neSgpO1xuICAgIH1cblxuICAgIHRoaXMub3Blbk1vZGFscy5wdXNoKG1vZGFsUmVmKTtcbiAgICBtb2RhbFJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9yZW1vdmVPcGVuTW9kYWwobW9kYWxSZWYpKTtcbiAgICB0aGlzLmFmdGVyT3BlbmVkLm5leHQobW9kYWxSZWYpO1xuXG4gICAgLy8gTm90aWZ5IHRoZSBtb2RhbCBjb250YWluZXIgdGhhdCB0aGUgY29udGVudCBoYXMgYmVlbiBhdHRhY2hlZC5cbiAgICBtb2RhbENvbnRhaW5lci5faW5pdGlhbGl6ZVdpdGhBdHRhY2hlZENvbnRlbnQoKTtcblxuICAgIHJldHVybiBtb2RhbFJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgYWxsIG9mIHRoZSBjdXJyZW50bHktb3BlbiBtb2RhbHMuXG4gICAqL1xuICBwdWJsaWMgY2xvc2VBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvc2VNb2RhbHModGhpcy5vcGVuTW9kYWxzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbiBvcGVuIG1vZGFsIGJ5IGl0cyBpZC5cbiAgICovXG4gIHB1YmxpYyBnZXRNb2RhbEJ5SWQoaWQ6IHN0cmluZyk6IEJhb01vZGFsUmVmPHVua25vd24+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuTW9kYWxzLmZpbmQobW9kYWwgPT4gbW9kYWwuaWQgPT09IGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAvLyBPbmx5IGNsb3NlIHRoZSBtb2RhbHMgYXQgdGhpcyBsZXZlbCBvbiBkZXN0cm95XG4gICAgLy8gc2luY2UgdGhlIHBhcmVudCBzZXJ2aWNlIG1heSBzdGlsbCBiZSBhY3RpdmUuXG4gICAgdGhpcy5fY2xvc2VNb2RhbHModGhpcy5fb3Blbk1vZGFsc0F0VGhpc0xldmVsKTtcbiAgICB0aGlzLl9hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbC5jb21wbGV0ZSgpO1xuICAgIC8vIENsZWFuIHVwIGFueSBzdWJzY3JpcHRpb25zIHRvIG1vZGFscyB0aGF0IG5ldmVyIGZpbmlzaGVkIG9wZW5pbmcuXG4gICAgaWYgKHRoaXMuX2FuaW1hdGlvblN0YXRlU3Vic2NyaXB0aW9ucykge1xuICAgICAgdGhpcy5fYW5pbWF0aW9uU3RhdGVTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIG92ZXJsYXkgaW50byB3aGljaCB0aGUgbW9kYWwgd2lsbCBiZSBsb2FkZWQuXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVPdmVybGF5KGNvbmZpZzogQmFvTW9kYWxJbml0aWFsQ29uZmlnKTogT3ZlcmxheVJlZiB7XG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRoaXMuX2dldE92ZXJsYXlDb25maWcoY29uZmlnKTtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBvdmVybGF5IGNvbmZpZyBmcm9tIGEgbW9kYWwgY29uZmlnLlxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0T3ZlcmxheUNvbmZpZyhjb25maWc6IEJhb01vZGFsSW5pdGlhbENvbmZpZyk6IE92ZXJsYXlDb25maWcge1xuICAgIGxldCBwb3NpdGlvblN0cmF0ZWd5O1xuICAgIGxldCBoYXNCYWNrZHJvcCA9IGNvbmZpZy5oYXNCYWNrZHJvcDtcbiAgICBsZXQgYmFja2Ryb3BDbGFzcyA9IGNvbmZpZy5iYWNrZHJvcENsYXNzO1xuXG4gICAgaWYgKGNvbmZpZy52YXJpYW50ID09PSBlTW9kYWxWYXJpYW50LkZJTFRFUiAmJiBjb25maWcudHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIC8vIFVzZSBjb25uZWN0ZWQgcG9zaXRpb25pbmcgZm9yIGZpbHRlciB2YXJpYW50XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxuICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhjb25maWcudHJpZ2dlckVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbigpXG4gICAgICAgIC53aXRoR3Jvd0FmdGVyT3BlbigpXG4gICAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyB0b3AtbGVmdCBvZiB0aGUgb3ZlcmxheSBpcyBjb25uZWN0ZWQgdG8gYm90dG9tLWxlZnQgb2YgdGhlIG9yaWdpbjtcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgICAgfSBhcyBDb25uZWN0ZWRQb3NpdGlvbixcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBib3R0b20tbGVmdCBvZiB0aGUgb3ZlcmxheSBpcyBjb25uZWN0ZWQgdG8gdG9wLWxlZnQgb2YgdGhlIG9yaWdpbjtcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nXG4gICAgICAgICAgfSBhcyBDb25uZWN0ZWRQb3NpdGlvbixcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyB0b3AtcmlnaHQgb2YgdGhlIG92ZXJsYXkgaXMgY29ubmVjdGVkIHRvIGJvdHRvbS1yaWdodCBvZiB0aGUgb3JpZ2luO1xuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgICAgIH0gYXMgQ29ubmVjdGVkUG9zaXRpb24sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gYm90dG9tLXJpZ2h0IG9mIHRoZSBvdmVybGF5IGlzIGNvbm5lY3RlZCB0byB0b3AtcmlnaHQgb2YgdGhlIG9yaWdpbjtcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICAgICAgICB9IGFzIENvbm5lY3RlZFBvc2l0aW9uXG4gICAgICAgIF0pO1xuICAgICAgLy8gRmlsdGVyIHZhcmlhbnQgc2hvdWxkIGhhdmUgdHJhbnNwYXJlbnQgYmFja2Ryb3BcbiAgICAgIGhhc0JhY2tkcm9wID0gdHJ1ZTtcbiAgICAgIGJhY2tkcm9wQ2xhc3MgPSAnYmFvLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVc2UgZ2xvYmFsIHBvc2l0aW9uaW5nIGZvciBkZWZhdWx0IHZhcmlhbnRcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGUgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLFxuICAgICAgcGFuZWxDbGFzczogY29uZmlnLnBhbmVsQ2xhc3MsXG4gICAgICBoYXNCYWNrZHJvcCxcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IGNvbmZpZy5jbG9zZU9uTmF2aWdhdGlvbixcbiAgICAgIC8vIFNldCBkaW1lbnNpb25zIGZvciBmaWx0ZXIgdmFyaWFudCBpbiBPdmVybGF5Q29uZmlnIGluc3RlYWQgb2YgdmlhIHVwZGF0ZVNpemUoKVxuICAgICAgd2lkdGg6XG4gICAgICAgIGNvbmZpZy52YXJpYW50ID09PSBlTW9kYWxWYXJpYW50LkZJTFRFUlxuICAgICAgICAgID8gRklMVEVSX01PREFMX1dJRFRIXG4gICAgICAgICAgOiBjb25maWcud2lkdGgsXG4gICAgICBtaW5XaWR0aDogY29uZmlnLm1pbldpZHRoLFxuICAgICAgbWluSGVpZ2h0OiBjb25maWcubWluSGVpZ2h0LFxuICAgICAgbWF4V2lkdGg6IGNvbmZpZy5tYXhXaWR0aCxcbiAgICAgIG1heEhlaWdodDogY29uZmlnLm1heEhlaWdodFxuICAgIH0pO1xuXG4gICAgaWYgKGJhY2tkcm9wQ2xhc3MpIHtcbiAgICAgIHN0YXRlLmJhY2tkcm9wQ2xhc3MgPSBiYWNrZHJvcENsYXNzO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyBhIG1vZGFsIGNvbnRhaW5lciB0byBhIG1vZGFsJ3MgYWxyZWFkeS1jcmVhdGVkIG92ZXJsYXkuXG4gICAqL1xuICBwcml2YXRlIF9hdHRhY2hNb2RhbENvbnRhaW5lcihcbiAgICBvdmVybGF5OiBPdmVybGF5UmVmLFxuICAgIGNvbmZpZzogQmFvTW9kYWxJbml0aWFsQ29uZmlnXG4gICk6IEMge1xuICAgIGNvbnN0IHVzZXJJbmplY3RvciA9XG4gICAgICBjb25maWcgJiYgY29uZmlnLnZpZXdDb250YWluZXJSZWYgJiYgY29uZmlnLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3I7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB1c2VySW5qZWN0b3IgfHwgdGhpcy5faW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEJhb01vZGFsSW5pdGlhbENvbmZpZywgdXNlVmFsdWU6IGNvbmZpZyB9XVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChcbiAgICAgIHRoaXMuX21vZGFsQ29udGFpbmVyVHlwZSxcbiAgICAgIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgaW5qZWN0b3JcbiAgICApO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IG92ZXJsYXkuYXR0YWNoPEM+KGNvbnRhaW5lclBvcnRhbCk7XG4gICAgY29udGFpbmVyUmVmLmluc3RhbmNlLl9zdGFydE9wZW5BbmltYXRpb24oKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoZXMgdGhlIHVzZXItcHJvdmlkZWQgY29tcG9uZW50IHRvIHRoZSBhbHJlYWR5LWNyZWF0ZWQgbW9kYWwgY29udGFpbmVyLlxuICAgKi9cbiAgcHJpdmF0ZSBfYXR0YWNoTW9kYWxDb250ZW50PFQ+KFxuICAgIGNvbXBvbmVudE9yVGVtcGxhdGVSZWY6IENvbXBvbmVudFR5cGU8VD4gfCBUZW1wbGF0ZVJlZjxUPixcbiAgICBtb2RhbENvbnRhaW5lcjogQyxcbiAgICBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgIGNvbmZpZzogQmFvTW9kYWxJbml0aWFsQ29uZmlnXG4gICk6IEJhb01vZGFsUmVmPHVua25vd24+IHtcbiAgICAvLyBDcmVhdGUgYSByZWZlcmVuY2UgdG8gdGhlIG1vZGFsIHdlJ3JlIGNyZWF0aW5nIGluIG9yZGVyIHRvIGdpdmUgdGhlIHVzZXIgYSBoYW5kbGVcbiAgICAvLyB0byBtb2RpZnkgYW5kIGNsb3NlIGl0LlxuICAgIGNvbnN0IG1vZGFsUmVmID0gbmV3IHRoaXMuX21vZGFsUmVmQ29uc3RydWN0b3IoXG4gICAgICBvdmVybGF5UmVmLFxuICAgICAgbW9kYWxDb250YWluZXIsXG4gICAgICBjb25maWcuaWRcbiAgICApO1xuXG4gICAgaWYgKGNvbXBvbmVudE9yVGVtcGxhdGVSZWYgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgbW9kYWxDb250YWluZXIuYXR0YWNoVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgIG5ldyBUZW1wbGF0ZVBvcnRhbChjb21wb25lbnRPclRlbXBsYXRlUmVmLCBudWxsLCA8dW5rbm93bj57XG4gICAgICAgICAgJGltcGxpY2l0OiBjb25maWcuZGF0YSxcbiAgICAgICAgICBtb2RhbFJlZlxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLl9jcmVhdGVJbmplY3Rvcihjb25maWcsIG1vZGFsUmVmLCBtb2RhbENvbnRhaW5lcik7XG4gICAgICBjb25zdCBjb250ZW50UmVmID0gbW9kYWxDb250YWluZXIuYXR0YWNoQ29tcG9uZW50UG9ydGFsPFQ+KFxuICAgICAgICBuZXcgQ29tcG9uZW50UG9ydGFsKFxuICAgICAgICAgIGNvbXBvbmVudE9yVGVtcGxhdGVSZWYsXG4gICAgICAgICAgY29uZmlnLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgaW5qZWN0b3JcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlID0gY29udGVudFJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICAvLyBPbmx5IHVwZGF0ZSBzaXplIGFuZCBwb3NpdGlvbiBmb3IgZ2xvYmFsIHZhcmlhbnRcbiAgICAvLyBGaWx0ZXIgdmFyaWFudCBkaW1lbnNpb25zIGFyZSBzZXQgaW4gT3ZlcmxheUNvbmZpZyBhbmQgcG9zaXRpb25pbmcgaXMgaGFuZGxlZCBieSBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3lcbiAgICBpZiAoY29uZmlnLnZhcmlhbnQgIT09IGVNb2RhbFZhcmlhbnQuRklMVEVSKSB7XG4gICAgICBtb2RhbFJlZlxuICAgICAgICAudXBkYXRlU2l6ZShjb25maWcud2lkdGgsIGNvbmZpZy5oZWlnaHQpXG4gICAgICAgIC51cGRhdGVQb3NpdGlvbihjb25maWcucG9zaXRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gbW9kYWxSZWY7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGN1c3RvbSBpbmplY3RvciB0byBiZSB1c2VkIGluc2lkZSB0aGUgbW9kYWwuIFRoaXMgYWxsb3dzIGEgY29tcG9uZW50IGxvYWRlZCBpbnNpZGVcbiAgICogb2YgYSBtb2RhbCB0byBjbG9zZSBpdHNlbGYgYW5kLCBvcHRpb25hbGx5LCB0byByZXR1cm4gYSB2YWx1ZS5cbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZUluamVjdG9yKFxuICAgIGNvbmZpZzogQmFvTW9kYWxJbml0aWFsQ29uZmlnLFxuICAgIG1vZGFsUmVmOiBCYW9Nb2RhbFJlZjx1bmtub3duPixcbiAgICBtb2RhbENvbnRhaW5lcjogQ1xuICApOiBJbmplY3RvciB7XG4gICAgY29uc3QgdXNlckluamVjdG9yID1cbiAgICAgIGNvbmZpZyAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZiAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZi5pbmplY3RvcjtcblxuICAgIC8vIFRoZSBtb2RhbCBjb250YWluZXIgc2hvdWxkIGJlIHByb3ZpZGVkIGFzIHRoZSBtb2RhbCBjb250YWluZXIgYW5kIHRoZSBtb2RhbCdzXG4gICAgLy8gY29udGVudCBhcmUgY3JlYXRlZCBvdXQgb2YgdGhlIHNhbWUgYFZpZXdDb250YWluZXJSZWZgIGFuZCBhcyBzdWNoLCBhcmUgc2libGluZ3NcbiAgICAvLyBmb3IgaW5qZWN0b3IgcHVycG9zZXMuIFRvIGFsbG93IHRoZSBoaWVyYXJjaHkgdGhhdCBpcyBleHBlY3RlZCwgdGhlIG1vZGFsXG4gICAgLy8gY29udGFpbmVyIGlzIGV4cGxpY2l0bHkgcHJvdmlkZWQgaW4gdGhlIGluamVjdG9yLlxuICAgIGNvbnN0IHByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSA9IFtcbiAgICAgIHsgcHJvdmlkZTogdGhpcy5fbW9kYWxDb250YWluZXJUeXBlLCB1c2VWYWx1ZTogbW9kYWxDb250YWluZXIgfSxcbiAgICAgIHsgcHJvdmlkZTogdGhpcy5fbW9kYWxEYXRhVG9rZW4sIHVzZVZhbHVlOiBjb25maWcuZGF0YSB9LFxuICAgICAgeyBwcm92aWRlOiB0aGlzLl9tb2RhbFJlZkNvbnN0cnVjdG9yLCB1c2VWYWx1ZTogbW9kYWxSZWYgfVxuICAgIF07XG5cbiAgICByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogdXNlckluamVjdG9yIHx8IHRoaXMuX2luamVjdG9yLFxuICAgICAgcHJvdmlkZXJzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIG1vZGFsIGZyb20gdGhlIGFycmF5IG9mIG9wZW4gbW9kYWxzLlxuICAgKi9cbiAgcHJpdmF0ZSBfcmVtb3ZlT3Blbk1vZGFsKG1vZGFsUmVmOiBCYW9Nb2RhbFJlZjx1bmtub3duPikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcGVuTW9kYWxzLmluZGV4T2YobW9kYWxSZWYpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMub3Blbk1vZGFscy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAvLyBJZiBhbGwgdGhlIG1vZGFscyB3ZXJlIGNsb3NlZCwgcmVtb3ZlL3Jlc3RvcmUgdGhlIGBhcmlhLWhpZGRlbmBcbiAgICAgIC8vIHRvIGEgdGhlIHNpYmxpbmdzIGFuZCBlbWl0IHRvIHRoZSBgYWZ0ZXJBbGxDbG9zZWRgIHN0cmVhbS5cbiAgICAgIGlmICghdGhpcy5vcGVuTW9kYWxzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuZm9yRWFjaCgocHJldmlvdXNWYWx1ZSwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGlmIChwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCBwcmV2aW91c1ZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5nZXRBZnRlckFsbENsb3NlZCgpLm5leHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgYWxsIG9mIHRoZSBjb250ZW50IHRoYXQgaXNuJ3QgYW4gb3ZlcmxheSBmcm9tIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LlxuICAgKi9cbiAgcHJpdmF0ZSBfaGlkZU5vbk1vZGFsQ29udGVudEZyb21Bc3Npc3RpdmVUZWNobm9sb2d5KCkge1xuICAgIGNvbnN0IG92ZXJsYXlDb250YWluZXIgPSB0aGlzLl9vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKTtcblxuICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBvdmVybGF5IGNvbnRhaW5lciBpcyBhdHRhY2hlZCB0byB0aGUgRE9NLlxuICAgIGlmIChvdmVybGF5Q29udGFpbmVyLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHNpYmxpbmdzID0gb3ZlcmxheUNvbnRhaW5lci5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuXG4gICAgICBmb3IgKGxldCBpID0gc2libGluZ3MubGVuZ3RoIC0gMTsgaSA+IC0xOyBpLS0pIHtcbiAgICAgICAgY29uc3Qgc2libGluZyA9IHNpYmxpbmdzW2ldO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBzaWJsaW5nICE9PSBvdmVybGF5Q29udGFpbmVyICYmXG4gICAgICAgICAgc2libGluZy5ub2RlTmFtZSAhPT0gJ1NDUklQVCcgJiZcbiAgICAgICAgICBzaWJsaW5nLm5vZGVOYW1lICE9PSAnU1RZTEUnICYmXG4gICAgICAgICAgIXNpYmxpbmcuaGFzQXR0cmlidXRlKCdhcmlhLWxpdmUnKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuc2V0KFxuICAgICAgICAgICAgc2libGluZyxcbiAgICAgICAgICAgIHNpYmxpbmcuZ2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzaWJsaW5nLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlcyBhbGwgb2YgdGhlIG1vZGFscyBpbiBhbiBhcnJheS4gKi9cbiAgcHJpdmF0ZSBfY2xvc2VNb2RhbHMobW9kYWxzOiBCYW9Nb2RhbFJlZjx1bmtub3duPltdKSB7XG4gICAgbGV0IGkgPSBtb2RhbHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIG1vZGFsc1tpXS5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGRlZmF1bHQgb3B0aW9ucyB0byB0aGUgbW9kYWwgY29uZmlnLlxuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlDb25maWdEZWZhdWx0cyhcbiAgICBjb25maWc/OiBCYW9Nb2RhbENvbmZpZyxcbiAgICBkZWZhdWx0T3B0aW9ucz86IEJhb01vZGFsSW5pdGlhbENvbmZpZ1xuICApOiBCYW9Nb2RhbEluaXRpYWxDb25maWcge1xuICAgIGNvbnN0IGRlc2t0b3BDbGFzcyA9IGNvbmZpZz8uc2l6ZSB8fCBlTW9kYWxEZXNrdG9wV2lkdGhTaXplLlNNQUxMO1xuICAgIGNvbnN0IG1vYmlsQ2xhc3MgPSBjb25maWc/Lm1vYmlsZVNpemUgfHwgZU1vZGFsTW9iaWxlV2lkdGhTaXplLkZVTEw7XG4gICAgY29uc3QgZGF0YSA9IGNvbmZpZz8uZGF0YSB8fCBudWxsO1xuICAgIGNvbnN0IGFyaWFMYWJlbGxlZEJ5ID0gY29uZmlnPy5hcmlhTGFiZWxsZWRCeSB8fCBudWxsO1xuICAgIGNvbnN0IHZhcmlhbnQgPSBjb25maWc/LnZhcmlhbnQgfHwgZU1vZGFsVmFyaWFudC5HTE9CQUw7XG4gICAgY29uc3QgdHJpZ2dlckVsZW1lbnQgPSBjb25maWc/LnRyaWdnZXJFbGVtZW50O1xuXG4gICAgLy8gQWRkIHZhcmlhbnQgY2xhc3MgZm9yIHN0eWxpbmdcbiAgICBjb25zdCB2YXJpYW50Q2xhc3MgPVxuICAgICAgdmFyaWFudCA9PT0gZU1vZGFsVmFyaWFudC5GSUxURVJcbiAgICAgICAgPyAnYmFvLW1vZGFsLWZpbHRlcidcbiAgICAgICAgOiAnYmFvLW1vZGFsLWdsb2JhbCc7XG4gICAgLy8gRmlsdGVyIHZhcmlhbnQgZG9lcyBub3QgaGF2ZSByZXNwb25zaXZlIGNzcyBjbGFzc2VzXG4gICAgY29uc3QgcGFuZWxDbGFzcyA9XG4gICAgICB2YXJpYW50ID09PSBlTW9kYWxWYXJpYW50LkZJTFRFUlxuICAgICAgICA/IFt2YXJpYW50Q2xhc3NdXG4gICAgICAgIDogW2Rlc2t0b3BDbGFzcywgbW9iaWxDbGFzcywgdmFyaWFudENsYXNzXTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAuLi57XG4gICAgICAgIHBhbmVsQ2xhc3MsXG4gICAgICAgIGFyaWFMYWJlbGxlZEJ5LFxuICAgICAgICBkYXRhLFxuICAgICAgICB2YXJpYW50LFxuICAgICAgICB0cmlnZ2VyRWxlbWVudFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBTZXJ2aWNlIHRvIG9wZW4gbW9kYWwuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCYW9Nb2RhbCBleHRlbmRzIEJhb01vZGFsQmFzZTxCYW9Nb2RhbENvbnRhaW5lcj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBvdmVybGF5OiBPdmVybGF5LFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwYXJlbnRNb2RhbDogQmFvTW9kYWwsXG4gICAgb3ZlcmxheUNvbnRhaW5lcjogT3ZlcmxheUNvbnRhaW5lclxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIG92ZXJsYXksXG4gICAgICBpbmplY3RvcixcbiAgICAgIHBhcmVudE1vZGFsLFxuICAgICAgb3ZlcmxheUNvbnRhaW5lcixcbiAgICAgIEJhb01vZGFsUmVmLFxuICAgICAgQmFvTW9kYWxDb250YWluZXIsXG4gICAgICBCQU9fTU9EQUxfREFUQVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 2026 Ville de Montreal. All rights reserved.
|
|
3
3
|
* Licensed under the MIT license.
|
|
4
4
|
* See LICENSE file in the project root for full license information.
|
|
5
5
|
*/
|
|
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
|
|
|
26
26
|
providers: [BaoModal]
|
|
27
27
|
}]
|
|
28
28
|
}] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL21vZGFsL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFbkQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBUTVELE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7K0dBQWQsY0FBYyxpQkFSRCxpQkFBaUIsRUFBRSxhQUFhLGFBRzlDLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxhQUgzQixpQkFBaUIsRUFBRSxhQUFhOytHQVE3QyxjQUFjLGFBRmQsQ0FBQyxRQUFRLENBQUMsWUFIWCxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVk7OzJGQUt4QyxjQUFjO2tCQU4xQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDO29CQUNwRCxZQUFZLEVBQUUsZ0JBQWdCO29CQUM5QixPQUFPLEVBQUUsZ0JBQWdCO29CQUN6QixTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNiBWaWxsZSBkZSBNb250cmVhbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhb01vZGFsIH0gZnJvbSAnLi9tb2RhbCc7XG5pbXBvcnQgeyBCYW9Nb2RhbENvbnRhaW5lciB9IGZyb20gJy4vbW9kYWwtY29udGFpbmVyJztcbmltcG9ydCB7IEJhb01vZGFsQ2xvc2UgfSBmcm9tICcuL21vZGFsLWRpcmVjdGl2ZXMnO1xuXG5jb25zdCBNT0RBTF9ESVJFQ1RJVkVTID0gW0Jhb01vZGFsQ29udGFpbmVyLCBCYW9Nb2RhbENsb3NlXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgT3ZlcmxheU1vZHVsZSwgUG9ydGFsTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBNT0RBTF9ESVJFQ1RJVkVTLFxuICBleHBvcnRzOiBNT0RBTF9ESVJFQ1RJVkVTLFxuICBwcm92aWRlcnM6IFtCYW9Nb2RhbF1cbn0pXG5leHBvcnQgY2xhc3MgQmFvTW9kYWxNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 2026 Ville de Montreal. All rights reserved.
|
|
3
3
|
* Licensed under the MIT license.
|
|
4
4
|
* See LICENSE file in the project root for full license information.
|
|
5
5
|
*/
|
|
6
6
|
export * from './module';
|
|
7
7
|
export * from './pagination.component';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvcGFnaW5hdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 2026 Ville de Montreal. All rights reserved.
|
|
3
3
|
* Licensed under the MIT license.
|
|
4
4
|
* See LICENSE file in the project root for full license information.
|
|
5
5
|
*/
|
|
@@ -22,4 +22,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
|
|
|
22
22
|
exports: [BaoPaginationComponent]
|
|
23
23
|
}]
|
|
24
24
|
}] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL3BhZ2luYXRpb24vbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFPaEUsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsaUJBSGYsc0JBQXNCLGFBRDNCLFlBQVksRUFBRSxhQUFhLEVBQUUsV0FBVyxhQUV4QyxzQkFBc0I7K0dBRXJCLG1CQUFtQixZQUpwQixZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVc7OzJGQUl2QyxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUM7b0JBQ25ELFlBQVksRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUN0QyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI2IFZpbGxlIGRlIE1vbnRyZWFsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYW9JY29uTW9kdWxlIH0gZnJvbSAnLi4vaWNvbic7XG5pbXBvcnQgeyBCYW9QYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJhb0ljb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbQmFvUGFnaW5hdGlvbkNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtCYW9QYWdpbmF0aW9uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBCYW9QYWdpbmF0aW9uTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 2026 Ville de Montreal. All rights reserved.
|
|
3
3
|
* Licensed under the MIT license.
|
|
4
4
|
* See LICENSE file in the project root for full license information.
|
|
5
5
|
*/
|
|
@@ -92,6 +92,12 @@ export class BaoPaginationComponent {
|
|
|
92
92
|
if (changes.hasOwnProperty('currentPage')) {
|
|
93
93
|
this.displayedPages = this.buildPageNumbers();
|
|
94
94
|
}
|
|
95
|
+
if (changes.hasOwnProperty('totalItems')) {
|
|
96
|
+
this.startItem = this.updateStartItem();
|
|
97
|
+
this.endItem = this.updateEndItem();
|
|
98
|
+
this.totalPages = this.updateTotalPages();
|
|
99
|
+
this.displayedPages = this.buildPageNumbers();
|
|
100
|
+
}
|
|
95
101
|
}
|
|
96
102
|
/**
|
|
97
103
|
* Navigate to specific page
|
|
@@ -208,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
|
|
|
208
214
|
}], itemsPerPageChanged: [{
|
|
209
215
|
type: Output
|
|
210
216
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDOzs7OztBQVd2QixNQUFNLE9BQU8sc0JBQXNCO0lBOERqQyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXhEMUM7O1dBRUc7UUFFSSxpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUNqQzs7V0FFRztRQUVJLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQy9COztXQUVHO1FBRUksb0JBQWUsR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JEOztXQUVHO1FBRUksY0FBUyxHQUFXLE9BQU8sQ0FBQztRQUNuQzs7V0FFRztRQUVJLDZCQUF3QixHQUFZLElBQUksQ0FBQztRQUNoRDs7V0FFRztRQUVJLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRDs7V0FFRztRQUVJLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFLeEQ7O1dBRUc7UUFDSyxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBZTVCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFF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QU1DLFNBQVM7c0JBRGYsS0FBSztnQkFNQyx3QkFBd0I7c0JBRDlCLEtBQUs7Z0JBTUMsV0FBVztzQkFEakIsTUFBTTtnQkFNQSxtQkFBbUI7c0JBRHpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI1IFZpbGxlIGRlIE1vbnRyZWFsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiYW8tcGFnaW5hdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdiYW8tcGFnaW5hdGlvbidcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9QYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0b3RhbEl0ZW1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGFzIHNlbGVjdGVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGl0ZW1zUGVyUGFnZTogbnVtYmVyID0gMTA7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBwYWdlIG51bWJlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcbiAgLyoqXG4gICAqIFRoZSBkaWZmZXJlbnQgcGFnZSBzaXplIG9wdGlvbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFsxMCwgMjUsIDUwLCAxMDBdO1xuICAvKipcbiAgICogVGhlIGxhYmVsIGZvciB0aGUgdHlwZSBvZiBpdGVtcyB0aGF0IGFyZSBkaXNwbGF5ZWQgb24gdGhlIHBhZ2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpdGVtTGFiZWw6IHN0cmluZyA9ICdpdGVtcyc7XG4gIC8qKlxuICAgKiBJZiBzZWxlY3RvciBmb3IgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIHNob3VsZCBiZSBkaXNwbGF5ZWQgb3Igbm90XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0l0ZW1zUGVyUGFnZVNlbGVjdG9yOiBib29sZWFuID0gdHJ1ZTtcbiAgLyoqXG4gICAqIEV2ZW50RW1pdHRlciB0aGF0IHRyaWdnZXJzIHdoZW4gdGhlcmUgaXMgYSBwYWdlIGNoYW5nZSBhbmQgZW1pdHMgcGFnZSBudW1iZXIgKGluZGV4IGFkanVzdGVkKVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAvKipcbiAgICogRXZlbnRFbWl0dGVyIHRoYXQgdHJpZ2dlcnMgd2hlbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGlzIGNoYW5nZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGl0ZW1zUGVyUGFnZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgLyoqXG4gICAqIFBhZ2UgbnVtYmVyIGxpc3QgdG8gZGlzcGxheVxuICAgKi9cbiAgcHVibGljIGRpc3BsYXllZFBhZ2VzOiBudW1iZXJbXTtcbiAgLyoqXG4gICAqIE1heCBudW1iZXIgb2YgcGFnZXMgdG8gZGlzcGxheVxuICAgKi9cbiAgcHJpdmF0ZSBfbWF4UGFnZXM6IG51bWJlciA9IDU7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcGFnZXMgaW4gdG90YWwuXG4gICAqL1xuICBwcml2YXRlIF90b3RhbFBhZ2VzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiBmaXJzdCBpdGVtIGJlaW5nIGRpc3BsYXllZCBvbiBjdXJyZW50IHBhZ2UuXG4gICAqL1xuICBwcml2YXRlIF9zdGFydEl0ZW06IG51bWJlcjtcbiAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIGxhc3QgaXRlbSBiZWluZyBkaXNwbGF5ZWQgb24gY3VycmVudCBwYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBfZW5kSXRlbTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuZGlzcGxheWVkUGFnZXMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzO1xuICB9XG5cbiAgcHVibGljIHNldCB0b3RhbFBhZ2VzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl90b3RhbFBhZ2VzID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXJ0SXRlbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zdGFydEl0ZW07XG4gIH1cblxuICBwdWJsaWMgc2V0IHN0YXJ0SXRlbSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRJdGVtID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuZEl0ZW0oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kSXRlbTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZW5kSXRlbSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZW5kSXRlbSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCByYW5nZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3RhcnRJdGVtfSDDoCAke3RoaXMuZW5kSXRlbX0gc3VyICR7dGhpcy50b3RhbEl0ZW1zfSAke3RoaXMuaXRlbUxhYmVsfWA7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyB0aGF0IGluZGljYXRlcyBpZiBhIHByZXZpb3VzIHBhZ2UgZXhpc3RzIGZvciB0aGUgY3VycmVudCBsaXN0XG4gICAqL1xuICBwdWJsaWMgZ2V0IGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlICE9PSAxO1xuICB9XG4gIC8qKlxuICAgKiBGbGFnIHRoYXQgaW5kaWNhdGVzIGlmIGEgbmV4dCBwYWdlIGV4aXN0cyBmb3IgdGhlIGN1cnJlbnQgbGlzdFxuICAgKi9cbiAgcHVibGljIGdldCBoYXNOZXh0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlIDwgdGhpcy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRJdGVtID0gdGhpcy51cGRhdGVTdGFydEl0ZW0oKTtcbiAgICB0aGlzLmVuZEl0ZW0gPSB0aGlzLnVwZGF0ZUVuZEl0ZW0oKTtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSB0aGlzLnVwZGF0ZVRvdGFsUGFnZXMoKTtcbiAgICB0aGlzLmRpc3BsYXllZFBhZ2VzID0gdGhpcy5idWlsZFBhZ2VOdW1iZXJzKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBsaXN0IG9mIGRpc3BsYXllZCBwYWdlcyB3aGVuIGN1cnJlbnQgcGFnZSBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnY3VycmVudFBhZ2UnKSkge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRQYWdlcyA9IHRoaXMuYnVpbGRQYWdlTnVtYmVycygpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogTmF2aWdhdGUgdG8gc3BlY2lmaWMgcGFnZVxuICAgKi9cbiAgcHVibGljIGdvVG8ocGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2U7XG4gICAgdGhpcy5zdGFydEl0ZW0gPSB0aGlzLnVwZGF0ZVN0YXJ0SXRlbSgpO1xuICAgIHRoaXMuZW5kSXRlbSA9IHRoaXMudXBkYXRlRW5kSXRlbSgpO1xuICAgIHRoaXMuZGlzcGxheWVkUGFnZXMgPSB0aGlzLmJ1aWxkUGFnZU51bWJlcnMoKTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQocGFnZSAtIDEpO1xuICB9XG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSB0byBwcmV2aW91cyBwYWdlXG4gICAqL1xuICBwdWJsaWMgaGFuZGxlUHJldmlvdXNDbGljaygpIHtcbiAgICBpZiAodGhpcy5oYXNQcmV2aW91cykge1xuICAgICAgdGhpcy5nb1RvKHRoaXMuY3VycmVudFBhZ2UgLSAxKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIG5leHQgcGFnZVxuICAgKi9cbiAgcHVibGljIGhhbmRsZU5leHRDbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNOZXh0KSB7XG4gICAgICB0aGlzLmdvVG8odGhpcy5jdXJyZW50UGFnZSArIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYWxsIHJlcXVpcmVkIHZhcmlhYmxlcyB3aGVuZXZlciB0aGUgbnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXllZCBwZXIgcGFnZSBpcyBjaGFuZ2VkLlxuICAgKiBAcGFyYW0gdmFsdWUgTmV3IGFtb3VudCBvZiBpdGVtcyBwZXIgcGFnZVxuICAgKi9cbiAgcHVibGljIGhhbmRsZVBhZ2VTaXplQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnN0YXJ0SXRlbSA9IHRoaXMudXBkYXRlU3RhcnRJdGVtKCk7XG4gICAgdGhpcy5lbmRJdGVtID0gdGhpcy51cGRhdGVFbmRJdGVtKCk7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdGhpcy51cGRhdGVUb3RhbFBhZ2VzKCk7XG4gICAgdGhpcy5kaXNwbGF5ZWRQYWdlcyA9IHRoaXMuYnVpbGRQYWdlTnVtYmVycygpO1xuICAgIHRoaXMuaXRlbXNQZXJQYWdlQ2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5pdGVtc1BlclBhZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGFydEl0ZW0oKTogbnVtYmVyIHtcbiAgICBjb25zdCBzdGFydEl0ZW0gPSBNYXRoLm1pbihcbiAgICAgICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLml0ZW1zUGVyUGFnZSArIDEsXG4gICAgICBNYXRoLmZsb29yKHRoaXMudG90YWxJdGVtcyAvIDEwKSAqIDEwXG4gICAgKTtcbiAgICByZXR1cm4gc3RhcnRJdGVtIHx8IDE7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUVuZEl0ZW0oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4oXG4gICAgICB0aGlzLnN0YXJ0SXRlbSArIE51bWJlcih0aGlzLml0ZW1zUGVyUGFnZSkgLSAxLFxuICAgICAgdGhpcy50b3RhbEl0ZW1zXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBzZXJpZXMgb2YgcGFnZSBudW1iZXJzIHRvIGRpc3BsYXkuIFRoZSBsaXN0IGFsd2F5cyBzdGFydHMgd2l0aCBwYWdlIDFcbiAgICogYW5kIGVuZHMgd2l0aCBsYXN0IHBhZ2UuXG4gICAqIEFkZHMgbmVnYXRpdmUgbnVtYmVycyBmb3IgZWxsaXBzaXMuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkUGFnZU51bWJlcnMoKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHBhZ2VzID0gW107XG4gICAgLy8gSWYgdG90YWwgcGFnZXMgYXJlIDUgb3IgbGVzcywgaW5jbHVkZSBhbGwgcGFnZXNcbiAgICBpZiAodGhpcy50b3RhbFBhZ2VzIDw9IHRoaXMuX21heFBhZ2VzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLnRvdGFsUGFnZXM7IGkrKykge1xuICAgICAgICBwYWdlcy5wdXNoKGkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWdlcy5wdXNoKDEpO1xuICAgICAgLy8gRGV0ZXJtaW5lIG1pZGRsZSBwYWdlc1xuICAgICAgbGV0IG1pZGRsZVBhZ2VzID0gW107XG4gICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA8PSAzKSB7XG4gICAgICAgIG1pZGRsZVBhZ2VzID0gWzIsIDMsIDQsIC0xXTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGFnZSA+PSB0aGlzLnRvdGFsUGFnZXMgLSAyKSB7XG4gICAgICAgIG1pZGRsZVBhZ2VzID0gW1xuICAgICAgICAgIC0xLFxuICAgICAgICAgIHRoaXMudG90YWxQYWdlcyAtIDMsXG4gICAgICAgICAgdGhpcy50b3RhbFBhZ2VzIC0gMixcbiAgICAgICAgICB0aGlzLnRvdGFsUGFnZXMgLSAxXG4gICAgICAgIF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtaWRkbGVQYWdlcyA9IFtcbiAgICAgICAgICAtMSxcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlIC0gMSxcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgKyAxLFxuICAgICAgICAgIC0xXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgICBwYWdlcy5wdXNoKC4uLm1pZGRsZVBhZ2VzKTtcbiAgICAgIHBhZ2VzLnB1c2godGhpcy50b3RhbFBhZ2VzKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhZ2VzO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaXRlbXMtZGlwbGF5ZWQtY29udHJvbHNcIj5cbiAgPHNwYW4gY2xhc3M9XCJyYW5nZS1kaXNwbGF5XCI+XG4gICAge3sgcmFuZ2VMYWJlbCB9fVxuICA8L3NwYW4+XG4gIDxkaXYgKm5nSWY9XCJzaG93SXRlbXNQZXJQYWdlU2VsZWN0b3JcIiBjbGFzcz1cIml0ZW1zLXBlci1wYWdlXCI+XG4gICAgPGxhYmVsIGZvcj1cIml0ZW1zLXBlci1wYWdlLXNlbGVjdFwiIGNsYXNzPVwic2VsZWN0LWxhYmVsXCJcbiAgICAgID5JdGVtcyBwYXIgcGFnZVxuICAgIDwvbGFiZWw+XG4gICAgPHNlbGVjdFxuICAgICAgWyhuZ01vZGVsKV09XCJpdGVtc1BlclBhZ2VcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBuYW1lPVwiaXRlbXMtcGVyLXBhZ2VcIlxuICAgICAgaWQ9XCJpdGVtcy1wZXItcGFnZS1zZWxlY3RcIlxuICAgICAgY2xhc3M9XCJkcm9wZG93bi1zZWxlY3RcIlxuICAgID5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNpemUgb2YgcGFnZVNpemVPcHRpb25zXCIgW3ZhbHVlXT1cInNpemVcIj5cbiAgICAgICAge3sgc2l6ZSB9fVxuICAgICAgPC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuPC9kaXY+XG48bmF2IGFyaWEtbGFiZWw9XCJQYWdpbmF0aW9uXCIgY2xhc3M9XCJwYWdlLWNvbnRyb2xzXCI+XG4gIDx1bD5cbiAgICA8bGlcbiAgICAgIGNsYXNzPVwicGFnZS1pdGVtXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6ICFoYXNQcmV2aW91cyB9XCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiIWhhc1ByZXZpb3VzID8gJ3RydWUnIDogbnVsbFwiXG4gICAgPlxuICAgICAgPGFcbiAgICAgICAgY2xhc3M9XCJwYWdlLWxpbmtcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGhhbmRsZVByZXZpb3VzQ2xpY2soKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBoYW5kbGVQcmV2aW91c0NsaWNrKClcIlxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgaGFuZGxlUHJldmlvdXNDbGljaygpXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgID5cbiAgICAgICAgPGJhby1pY29uIHRpdGxlPVwiUGFnZSBwcsOpY8OpZGVudGVcIiBzdmdJY29uPVwiaWNvbi1jaGV2cm9uLWxlZnRcIj48L2Jhby1pY29uXG4gICAgICA+PC9hPlxuICAgIDwvbGk+XG4gICAgPGxpXG4gICAgICBjbGFzcz1cInBhZ2UtaXRlbVwiXG4gICAgICAqbmdGb3I9XCJsZXQgcGFnZSBvZiBkaXNwbGF5ZWRQYWdlc1wiXG4gICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogcGFnZSA9PT0gY3VycmVudFBhZ2UgfVwiXG4gICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwicGFnZSA9PT0gY3VycmVudFBhZ2UgPyAncGFnZScgOiBudWxsXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZSA+IDA7IGVsc2UgZWxsaXBzaXNcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgcGFnZSB9fTwvc3Bhbj5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cInBhZ2UtbGlua1wiXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBnb1RvKHBhZ2UpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZ29UbyhwYWdlKVwiXG4gICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGdvVG8ocGFnZSlcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgPnt7IHBhZ2UgfX08L2FcbiAgICAgICAgPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2VsbGlwc2lzPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbGluayBlbGxpcHNpc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPi4uLjwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9saT5cblxuICAgIDxsaVxuICAgICAgY2xhc3M9XCJwYWdlLWl0ZW1cIlxuICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogIWhhc05leHQgfVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIiFoYXNOZXh0ID8gJ3RydWUnIDogbnVsbFwiXG4gICAgPlxuICAgICAgPGFcbiAgICAgICAgY2xhc3M9XCJwYWdlLWxpbmtcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGhhbmRsZU5leHRDbGljaygpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGhhbmRsZU5leHRDbGljaygpXCJcbiAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGhhbmRsZU5leHRDbGljaygpXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgID5cbiAgICAgICAgPGJhby1pY29uIHRpdGxlPVwiUGFnZSBzdWl2YW50ZVwiIHN2Z0ljb249XCJpY29uLWNoZXZyb24tcmlnaHRcIj48L2Jhby1pY29uXG4gICAgICA+PC9hPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L25hdj5cbiJdfQ==
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDOzs7OztBQVd2QixNQUFNLE9BQU8sc0JBQXNCO0lBOERqQyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXhEMUM7O1dBRUc7UUFFSSxpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUNqQzs7V0FFRztRQUVJLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQy9COztXQUVHO1FBRUksb0JBQWUsR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JEOztXQUVHO1FBRUksY0FBUyxHQUFXLE9BQU8sQ0FBQztRQUNuQzs7V0FFRztRQUVJLDZCQUF3QixHQUFZLElBQUksQ0FBQztRQUNoRDs7V0FFRztRQUVJLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRDs7V0FFRztRQUVJLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFLeEQ7O1dBRUc7UUFDSyxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBZTVCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFF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TyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQWxPVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiw4WkMxQm5DLG1pRkE2RUE7OzJGRG5EYSxzQkFBc0I7a0JBVGxDLFNBQVM7K0JBQ0UsZ0JBQWdCLGlCQUdYLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osS0FBSyxFQUFFLGdCQUFnQjtxQkFDeEI7d0dBT00sVUFBVTtzQkFEaEIsS0FBSztnQkFNQyxZQUFZO3NCQURsQixLQUFLO2dCQU1DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBTUMsZUFBZTtzQkFEckIsS0FBSztnQkFNQyxTQUFTO3NCQURmLEtBQUs7Z0JBTUMsd0JBQXdCO3NCQUQ5QixLQUFLO2dCQU1DLFdBQVc7c0JBRGpCLE1BQU07Z0JBTUEsbUJBQW1CO3NCQUR6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNiBWaWxsZSBkZSBNb250cmVhbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFvLXBhZ2luYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2luYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYmFvLXBhZ2luYXRpb24nXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFvUGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdG90YWxJdGVtczogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZSBhcyBzZWxlY3RlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpdGVtc1BlclBhZ2U6IG51bWJlciA9IDEwO1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgcGFnZSBudW1iZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIC8qKlxuICAgKiBUaGUgZGlmZmVyZW50IHBhZ2Ugc2l6ZSBvcHRpb25zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBbMTAsIDI1LCA1MCwgMTAwXTtcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIHR5cGUgb2YgaXRlbXMgdGhhdCBhcmUgZGlzcGxheWVkIG9uIHRoZSBwYWdlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXRlbUxhYmVsOiBzdHJpbmcgPSAnaXRlbXMnO1xuICAvKipcbiAgICogSWYgc2VsZWN0b3IgZm9yIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZSBzaG91bGQgYmUgZGlzcGxheWVkIG9yIG5vdFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dJdGVtc1BlclBhZ2VTZWxlY3RvcjogYm9vbGVhbiA9IHRydWU7XG4gIC8qKlxuICAgKiBFdmVudEVtaXR0ZXIgdGhhdCB0cmlnZ2VycyB3aGVuIHRoZXJlIGlzIGEgcGFnZSBjaGFuZ2UgYW5kIGVtaXRzIHBhZ2UgbnVtYmVyIChpbmRleCBhZGp1c3RlZClcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcGFnZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgLyoqXG4gICAqIEV2ZW50RW1pdHRlciB0aGF0IHRyaWdnZXJzIHdoZW4gdGhlIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZSBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpdGVtc1BlclBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIC8qKlxuICAgKiBQYWdlIG51bWJlciBsaXN0IHRvIGRpc3BsYXlcbiAgICovXG4gIHB1YmxpYyBkaXNwbGF5ZWRQYWdlczogbnVtYmVyW107XG4gIC8qKlxuICAgKiBNYXggbnVtYmVyIG9mIHBhZ2VzIHRvIGRpc3BsYXlcbiAgICovXG4gIHByaXZhdGUgX21heFBhZ2VzOiBudW1iZXIgPSA1O1xuICAvKipcbiAgICogTnVtYmVyIG9mIHBhZ2VzIGluIHRvdGFsLlxuICAgKi9cbiAgcHJpdmF0ZSBfdG90YWxQYWdlczogbnVtYmVyO1xuICAvKipcbiAgICogUG9zaXRpb24gb2YgZmlyc3QgaXRlbSBiZWluZyBkaXNwbGF5ZWQgb24gY3VycmVudCBwYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBfc3RhcnRJdGVtOiBudW1iZXI7XG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiBsYXN0IGl0ZW0gYmVpbmcgZGlzcGxheWVkIG9uIGN1cnJlbnQgcGFnZS5cbiAgICovXG4gIHByaXZhdGUgX2VuZEl0ZW06IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLmRpc3BsYXllZFBhZ2VzID0gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxQYWdlcztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdG90YWxQYWdlcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fdG90YWxQYWdlcyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGFydEl0ZW0oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRJdGVtO1xuICB9XG5cbiAgcHVibGljIHNldCBzdGFydEl0ZW0odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N0YXJ0SXRlbSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmRJdGVtKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZEl0ZW07XG4gIH1cblxuICBwdWJsaWMgc2V0IGVuZEl0ZW0odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2VuZEl0ZW0gPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmFuZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN0YXJ0SXRlbX0gw6AgJHt0aGlzLmVuZEl0ZW19IHN1ciAke3RoaXMudG90YWxJdGVtc30gJHt0aGlzLml0ZW1MYWJlbH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgdGhhdCBpbmRpY2F0ZXMgaWYgYSBwcmV2aW91cyBwYWdlIGV4aXN0cyBmb3IgdGhlIGN1cnJlbnQgbGlzdFxuICAgKi9cbiAgcHVibGljIGdldCBoYXNQcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSAhPT0gMTtcbiAgfVxuICAvKipcbiAgICogRmxhZyB0aGF0IGluZGljYXRlcyBpZiBhIG5leHQgcGFnZSBleGlzdHMgZm9yIHRoZSBjdXJyZW50IGxpc3RcbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzTmV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA8IHRoaXMudG90YWxQYWdlcztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0SXRlbSA9IHRoaXMudXBkYXRlU3RhcnRJdGVtKCk7XG4gICAgdGhpcy5lbmRJdGVtID0gdGhpcy51cGRhdGVFbmRJdGVtKCk7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdGhpcy51cGRhdGVUb3RhbFBhZ2VzKCk7XG4gICAgdGhpcy5kaXNwbGF5ZWRQYWdlcyA9IHRoaXMuYnVpbGRQYWdlTnVtYmVycygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgbGlzdCBvZiBkaXNwbGF5ZWQgcGFnZXMgd2hlbiBjdXJyZW50IHBhZ2UgaXMgY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2N1cnJlbnRQYWdlJykpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkUGFnZXMgPSB0aGlzLmJ1aWxkUGFnZU51bWJlcnMoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3RvdGFsSXRlbXMnKSkge1xuICAgICAgdGhpcy5zdGFydEl0ZW0gPSB0aGlzLnVwZGF0ZVN0YXJ0SXRlbSgpO1xuICAgICAgdGhpcy5lbmRJdGVtID0gdGhpcy51cGRhdGVFbmRJdGVtKCk7XG4gICAgICB0aGlzLnRvdGFsUGFnZXMgPSB0aGlzLnVwZGF0ZVRvdGFsUGFnZXMoKTtcbiAgICAgIHRoaXMuZGlzcGxheWVkUGFnZXMgPSB0aGlzLmJ1aWxkUGFnZU51bWJlcnMoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIHNwZWNpZmljIHBhZ2VcbiAgICovXG4gIHB1YmxpYyBnb1RvKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMuc3RhcnRJdGVtID0gdGhpcy51cGRhdGVTdGFydEl0ZW0oKTtcbiAgICB0aGlzLmVuZEl0ZW0gPSB0aGlzLnVwZGF0ZUVuZEl0ZW0oKTtcbiAgICB0aGlzLmRpc3BsYXllZFBhZ2VzID0gdGhpcy5idWlsZFBhZ2VOdW1iZXJzKCk7XG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHBhZ2UgLSAxKTtcbiAgfVxuICAvKipcbiAgICogTmF2aWdhdGUgdG8gcHJldmlvdXMgcGFnZVxuICAgKi9cbiAgcHVibGljIGhhbmRsZVByZXZpb3VzQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMuaGFzUHJldmlvdXMpIHtcbiAgICAgIHRoaXMuZ29Ubyh0aGlzLmN1cnJlbnRQYWdlIC0gMSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSB0byBuZXh0IHBhZ2VcbiAgICovXG4gIHB1YmxpYyBoYW5kbGVOZXh0Q2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzTmV4dCkge1xuICAgICAgdGhpcy5nb1RvKHRoaXMuY3VycmVudFBhZ2UgKyAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFsbCByZXF1aXJlZCB2YXJpYWJsZXMgd2hlbmV2ZXIgdGhlIG51bWJlciBvZiBpdGVtcyBkaXNwbGF5ZWQgcGVyIHBhZ2UgaXMgY2hhbmdlZC5cbiAgICogQHBhcmFtIHZhbHVlIE5ldyBhbW91bnQgb2YgaXRlbXMgcGVyIHBhZ2VcbiAgICovXG4gIHB1YmxpYyBoYW5kbGVQYWdlU2l6ZUNoYW5nZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5zdGFydEl0ZW0gPSB0aGlzLnVwZGF0ZVN0YXJ0SXRlbSgpO1xuICAgIHRoaXMuZW5kSXRlbSA9IHRoaXMudXBkYXRlRW5kSXRlbSgpO1xuICAgIHRoaXMudG90YWxQYWdlcyA9IHRoaXMudXBkYXRlVG90YWxQYWdlcygpO1xuICAgIHRoaXMuZGlzcGxheWVkUGFnZXMgPSB0aGlzLmJ1aWxkUGFnZU51bWJlcnMoKTtcbiAgICB0aGlzLml0ZW1zUGVyUGFnZUNoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMudG90YWxJdGVtcyAvIHRoaXMuaXRlbXNQZXJQYWdlKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhcnRJdGVtKCk6IG51bWJlciB7XG4gICAgY29uc3Qgc3RhcnRJdGVtID0gTWF0aC5taW4oXG4gICAgICAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5pdGVtc1BlclBhZ2UgKyAxLFxuICAgICAgTWF0aC5mbG9vcih0aGlzLnRvdGFsSXRlbXMgLyAxMCkgKiAxMFxuICAgICk7XG4gICAgcmV0dXJuIHN0YXJ0SXRlbSB8fCAxO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVFbmRJdGVtKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKFxuICAgICAgdGhpcy5zdGFydEl0ZW0gKyBOdW1iZXIodGhpcy5pdGVtc1BlclBhZ2UpIC0gMSxcbiAgICAgIHRoaXMudG90YWxJdGVtc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgc2VyaWVzIG9mIHBhZ2UgbnVtYmVycyB0byBkaXNwbGF5LiBUaGUgbGlzdCBhbHdheXMgc3RhcnRzIHdpdGggcGFnZSAxXG4gICAqIGFuZCBlbmRzIHdpdGggbGFzdCBwYWdlLlxuICAgKiBBZGRzIG5lZ2F0aXZlIG51bWJlcnMgZm9yIGVsbGlwc2lzLlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFBhZ2VOdW1iZXJzKCk6IG51bWJlcltdIHtcbiAgICBjb25zdCBwYWdlcyA9IFtdO1xuICAgIC8vIElmIHRvdGFsIHBhZ2VzIGFyZSA1IG9yIGxlc3MsIGluY2x1ZGUgYWxsIHBhZ2VzXG4gICAgaWYgKHRoaXMudG90YWxQYWdlcyA8PSB0aGlzLl9tYXhQYWdlcykge1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy50b3RhbFBhZ2VzOyBpKyspIHtcbiAgICAgICAgcGFnZXMucHVzaChpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGFnZXMucHVzaCgxKTtcbiAgICAgIC8vIERldGVybWluZSBtaWRkbGUgcGFnZXNcbiAgICAgIGxldCBtaWRkbGVQYWdlcyA9IFtdO1xuICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPD0gMykge1xuICAgICAgICBtaWRkbGVQYWdlcyA9IFsyLCAzLCA0LCAtMV07XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFBhZ2UgPj0gdGhpcy50b3RhbFBhZ2VzIC0gMikge1xuICAgICAgICBtaWRkbGVQYWdlcyA9IFtcbiAgICAgICAgICAtMSxcbiAgICAgICAgICB0aGlzLnRvdGFsUGFnZXMgLSAzLFxuICAgICAgICAgIHRoaXMudG90YWxQYWdlcyAtIDIsXG4gICAgICAgICAgdGhpcy50b3RhbFBhZ2VzIC0gMVxuICAgICAgICBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWlkZGxlUGFnZXMgPSBbXG4gICAgICAgICAgLTEsXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSAtIDEsXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlICsgMSxcbiAgICAgICAgICAtMVxuICAgICAgICBdO1xuICAgICAgfVxuICAgICAgcGFnZXMucHVzaCguLi5taWRkbGVQYWdlcyk7XG4gICAgICBwYWdlcy5wdXNoKHRoaXMudG90YWxQYWdlcyk7XG4gICAgfVxuICAgIHJldHVybiBwYWdlcztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIml0ZW1zLWRpcGxheWVkLWNvbnRyb2xzXCI+XG4gIDxzcGFuIGNsYXNzPVwicmFuZ2UtZGlzcGxheVwiPlxuICAgIHt7IHJhbmdlTGFiZWwgfX1cbiAgPC9zcGFuPlxuICA8ZGl2ICpuZ0lmPVwic2hvd0l0ZW1zUGVyUGFnZVNlbGVjdG9yXCIgY2xhc3M9XCJpdGVtcy1wZXItcGFnZVwiPlxuICAgIDxsYWJlbCBmb3I9XCJpdGVtcy1wZXItcGFnZS1zZWxlY3RcIiBjbGFzcz1cInNlbGVjdC1sYWJlbFwiXG4gICAgICA+SXRlbXMgcGFyIHBhZ2VcbiAgICA8L2xhYmVsPlxuICAgIDxzZWxlY3RcbiAgICAgIFsobmdNb2RlbCldPVwiaXRlbXNQZXJQYWdlXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZVBhZ2VTaXplQ2hhbmdlKCRldmVudClcIlxuICAgICAgbmFtZT1cIml0ZW1zLXBlci1wYWdlXCJcbiAgICAgIGlkPVwiaXRlbXMtcGVyLXBhZ2Utc2VsZWN0XCJcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tc2VsZWN0XCJcbiAgICA+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIHBhZ2VTaXplT3B0aW9uc1wiIFt2YWx1ZV09XCJzaXplXCI+XG4gICAgICAgIHt7IHNpemUgfX1cbiAgICAgIDwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5hdiBhcmlhLWxhYmVsPVwiUGFnaW5hdGlvblwiIGNsYXNzPVwicGFnZS1jb250cm9sc1wiPlxuICA8dWw+XG4gICAgPGxpXG4gICAgICBjbGFzcz1cInBhZ2UtaXRlbVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiAhaGFzUHJldmlvdXMgfVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIiFoYXNQcmV2aW91cyA/ICd0cnVlJyA6IG51bGxcIlxuICAgID5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwicGFnZS1saW5rXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBoYW5kbGVQcmV2aW91c0NsaWNrKClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgaGFuZGxlUHJldmlvdXNDbGljaygpXCJcbiAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGhhbmRsZVByZXZpb3VzQ2xpY2soKVwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICA+XG4gICAgICAgIDxiYW8taWNvbiB0aXRsZT1cIlBhZ2UgcHLDqWPDqWRlbnRlXCIgc3ZnSWNvbj1cImljb24tY2hldnJvbi1sZWZ0XCI+PC9iYW8taWNvblxuICAgICAgPjwvYT5cbiAgICA8L2xpPlxuICAgIDxsaVxuICAgICAgY2xhc3M9XCJwYWdlLWl0ZW1cIlxuICAgICAgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgZGlzcGxheWVkUGFnZXNcIlxuICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHBhZ2UgPT09IGN1cnJlbnRQYWdlIH1cIlxuICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cInBhZ2UgPT09IGN1cnJlbnRQYWdlID8gJ3BhZ2UnIDogbnVsbFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2UgPiAwOyBlbHNlIGVsbGlwc2lzXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPnt7IHBhZ2UgfX08L3NwYW4+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJwYWdlLWxpbmtcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZ29UbyhwYWdlKVwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGdvVG8ocGFnZSlcIlxuICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBnb1RvKHBhZ2UpXCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgID57eyBwYWdlIH19PC9hXG4gICAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNlbGxpcHNpcz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWxpbmsgZWxsaXBzaXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4uLi48L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbGk+XG5cbiAgICA8bGlcbiAgICAgIGNsYXNzPVwicGFnZS1pdGVtXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6ICFoYXNOZXh0IH1cIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCIhaGFzTmV4dCA/ICd0cnVlJyA6IG51bGxcIlxuICAgID5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwicGFnZS1saW5rXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBoYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBoYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBoYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICA+XG4gICAgICAgIDxiYW8taWNvbiB0aXRsZT1cIlBhZ2Ugc3VpdmFudGVcIiBzdmdJY29uPVwiaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9iYW8taWNvblxuICAgICAgPjwvYT5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9uYXY+XG4iXX0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 2026 Ville de Montreal. All rights reserved.
|
|
3
3
|
* Licensed under the MIT license.
|
|
4
4
|
* See LICENSE file in the project root for full license information.
|
|
5
5
|
*/
|
|
6
6
|
export * from './module';
|
|
7
7
|
export * from './radio.component';
|
|
8
8
|
export * from './radio-group.component';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXVpL3NyYy9saWIvcmFkaW8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9yYWRpby5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9yYWRpby1ncm91cC5jb21wb25lbnQnO1xuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 2026 Ville de Montreal. All rights reserved.
|
|
3
3
|
* Licensed under the MIT license.
|
|
4
4
|
* See LICENSE file in the project root for full license information.
|
|
5
5
|
*/
|
|
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
|
|
|
51
51
|
exports: RADIO_DIRECTIVES
|
|
52
52
|
}]
|
|
53
53
|
}] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL3JhZGlvL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ3BCLE1BQU0sbUJBQW1CLENBQUM7O0FBRTNCLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQiw0QkFBNEI7Q0FDN0IsQ0FBQztBQWNGLE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7K0dBQWQsY0FBYyxpQkFqQnpCLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsNEJBQTRCLGFBSzFCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLHlCQUF5QjtZQUN6QixlQUFlO1lBQ2YsZUFBZSxhQVpqQix1QkFBdUI7WUFDdkIsbUJBQW1CO1lBQ25CLDRCQUE0QjsrR0FlakIsY0FBYyxZQVZ2QixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsZUFBZTtZQUNmLGVBQWU7OzJGQUtOLGNBQWM7a0JBWjFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZixlQUFlO3FCQUNoQjtvQkFDRCxZQUFZLEVBQUUsZ0JBQWdCO29CQUM5QixPQUFPLEVBQUUsZ0JBQWdCO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuaW1wb3J0IHsgT2JzZXJ2ZXJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL29ic2VydmVycyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFvQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IEJhb0NvbW1vbkNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICcuLi9jb21tb24tY29tcG9uZW50cy9tb2R1bGUnO1xuaW1wb3J0IHsgQmFvUmFkaW9CdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4vcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEJhb1JhZGlvQnV0dG9uQ29tcG9uZW50LFxuICBCYW9SYWRpb0Rlc2NyaXB0aW9uXG59IGZyb20gJy4vcmFkaW8uY29tcG9uZW50JztcblxuY29uc3QgUkFESU9fRElSRUNUSVZFUyA9IFtcbiAgQmFvUmFkaW9CdXR0b25Db21wb25lbnQsXG4gIEJhb1JhZGlvRGVzY3JpcHRpb24sXG4gIEJhb1JhZGlvQnV0dG9uR3JvdXBDb21wb25lbnRcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCYW9Db21tb25Db21wb25lbnRzTW9kdWxlLFxuICAgIEJhb0J1dHRvbk1vZHVsZSxcbiAgICBPYnNlcnZlcnNNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBSQURJT19ESVJFQ1RJVkVTLFxuICBleHBvcnRzOiBSQURJT19ESVJFQ1RJVkVTXG59KVxuZXhwb3J0IGNsYXNzIEJhb1JhZGlvTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 2026 Ville de Montreal. All rights reserved.
|
|
3
3
|
* Licensed under the MIT license.
|
|
4
4
|
* See LICENSE file in the project root for full license information.
|
|
5
5
|
*/
|
|
@@ -246,4 +246,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
|
|
|
246
246
|
}], required: [{
|
|
247
247
|
type: Input
|
|
248
248
|
}] } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL3JhZGlvL3JhZGlvLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9yYWRpby9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUlMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLENBQUM7OztBQUU1Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FDL0MscUJBQXFCLENBQ3RCLENBQUM7QUFDRjs7R0FFRztBQUNILElBQUksc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBa0IvQixNQUFNLE9BQU8sNEJBQTRCO0lBbUN2QyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTNCMUM7O1dBRUc7UUFDdUIsV0FBTSxHQUM5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBUTdCOztXQUVHO1FBQ0ksb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBR3JDLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzdCLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBbUMsSUFBSSxDQUFDO1FBQ2pELG1CQUFjLEdBQUcs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QVQ1QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNEJBQTRCLENBQUM7Z0JBQzNELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFO1NBQ3hFLDZGQWdCaUMsdUJBQXVCLCtMQ2xFM0Qsa2RBa0JBOzsyRkRrQ2EsNEJBQTRCO2tCQWhCeEMsU0FBUzsrQkFFTix5RUFBeUUsWUFDakUsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDZCQUE2QixDQUFDOzRCQUMzRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyw4QkFBOEIsRUFBRTtxQkFDeEU7d0dBUWUsRUFBRTtzQkFBakIsS0FBSztnQkFLb0IsTUFBTTtzQkFBL0IsTUFBTTtnQkFPQyxlQUFlO3NCQUp0QixlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO3dCQUMxRCxXQUFXLEVBQUUsSUFBSTtxQkFDbEI7O3NCQUNBLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkE0QnJDLElBQUk7c0JBRFAsS0FBSztnQkFTRixLQUFLO3NCQURSLEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI1IFZpbGxlIGRlIE1vbnRyZWFsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhb1JhZGlvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLic7XG5cbi8qKlxuICogV2UgaGF2ZSB0byBpbmplY3QgdGhlIHJhZGlvIGJ1dHRvbiBncm91cCBhbmQgYWxsIGl0cyBjaGlsZHJlbiB0byBlYWNoIGNoaWxkLlxuICovXG5leHBvcnQgY29uc3QgQkFPX1JBRElPX0dST1VQID0gbmV3IEluamVjdGlvblRva2VuPEJhb1JhZGlvQnV0dG9uR3JvdXBDb21wb25lbnQ+KFxuICAnQmFvUmFkaW9CdXR0b25Hcm91cCdcbik7XG4vKipcbiAqIFVuaXF1ZSBJRCBmb3IgZWFjaCByYWRpbyBncm91cCBjb3VudGVyXG4gKi9cbmxldCByYWRpb0dyb3VwTmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOlxuICAgICdiYW8tcmFkaW8tYnV0dG9uLWdyb3VwLCBbYmFvLXJhZGlvLWJ1dHRvbi1ncm91cF0sIFtiYW9SYWRpb0J1dHRvbkdyb3VwXScsXG4gIGV4cG9ydEFzOiAnYmFvUmFkaW9Hcm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQmFvUmFkaW9CdXR0b25Hcm91cENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBCQU9fUkFESU9fR1JPVVAsIHVzZUV4aXN0aW5nOiBCYW9SYWRpb0J1dHRvbkdyb3VwQ29tcG9uZW50IH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBCYW9SYWRpb0J1dHRvbkdyb3VwQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXRcbntcbiAgLyoqXG4gICAqIFRoZSBjaGVja2JveCBncm91cCBJRC4gSXQgaXMgc2V0IGR5bmFtaWNhbGx5IHdpdGggYW4gdW5pcXVlIElEIGJ5IGRlZmF1bHRcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWl0IHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0ZWQgcmFkaW8gYnV0dG9uXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBCYW9SYWRpb0J1dHRvbkNvbXBvbmVudCksIHtcbiAgICBkZXNjZW5kYW50czogdHJ1ZVxuICB9KVxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSBzdGF0aWNDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBhcmlhLWRlc2NyaWJlZGJ5IGZvciB3ZWIgYWNjZXNzaWJpbHR5XG4gICAqL1xuICBwdWJsaWMgYXJpYURlc2NyaWJlZGJ5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9yYWRpb3M6IFF1ZXJ5TGlzdDxCYW9SYWRpb0J1dHRvbkNvbXBvbmVudD47XG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3NlbGVjdGVkOiBCYW9SYWRpb0J1dHRvbkNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfdW5pcXVlSWQgPSBgYmFvLWNoZWNrYm94LWdyb3VwLSR7KytyYWRpb0dyb3VwTmV4dFVuaXF1ZUlkfWA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgaWYgKCF0aGlzLmlkKSB7XG4gICAgICB0aGlzLmlkID0gdGhpcy5fdW5pcXVlSWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBhbGwgcmFkaW8gYnV0dG9ucy4gRGVmYXVsdCA6IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBuYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIHJhZGlvIGJ1dHRvbi4gRGVmYXVsdCA6IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHdoaWNoIHJhZGlvIGJ1dHRvbiBpcyBzZWxlY3RlZC4gRGVmYXVsdCA6IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwZCBpcyBkaXNhYmxlZC4gRGVmYXVsdCA6IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJhZGlvIGJ1dHRvbiBncm91cGQgaXMgcmVxdWlyZWQuIERlZmF1bHQgOiBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5fbmFtZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlUmFkaW9CdXR0b25OYW1lcygpO1xuICB9XG5cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRSYWRpb0Zyb21WYWx1ZSgpO1xuICAgICAgdGhpcy5jaGVja1NlbGVjdGVkUmFkaW9CdXR0b24oKTtcbiAgICB9XG4gIH1cblxuICBzZXQgc2VsZWN0ZWQoc2VsZWN0ZWQ6IEJhb1JhZGlvQnV0dG9uQ29tcG9uZW50IHwgbnVsbCkge1xuICAgIHRoaXMuX3NlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkID8gc2VsZWN0ZWQudmFsdWUgOiBudWxsO1xuICAgIHRoaXMuY2hlY2tTZWxlY3RlZFJhZGlvQnV0dG9uKCk7XG4gIH1cblxuICBzZXQgZGlzYWJsZWQodmFsdWUpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5tYXJrUmFkaW9zRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLm1hcmtSYWRpb3NGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zZXRBcmlhRGVzY3JpYmVkQnlUb0Rlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvblRvdWNoKCkgY2FsbGVkIGZyb20gdGhlIGJ1dHRvbiBjaGlsZHJlblxuICAgKi9cbiAgcHVibGljIG9uR3JvdXBUb3VjaCgpIHtcbiAgICBpZiAodGhpcy5vblRvdWNoKSB7XG4gICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFsbCByYWRpbyBidXR0b24gbmFtZVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVJhZGlvQnV0dG9uTmFtZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JhZGlvcykge1xuICAgICAgdGhpcy5fcmFkaW9zLmZvckVhY2goKHJhZGlvOiBCYW9SYWRpb0J1dHRvbkNvbXBvbmVudCkgPT4ge1xuICAgICAgICByYWRpby5uYW1lID0gdGhpcy5uYW1lO1xuICAgICAgICByYWRpby5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgd2hpY2ggcmFkaW8gYnV0dG9uIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVNlbGVjdGVkUmFkaW9Gcm9tVmFsdWUoKTogdm9pZCB7XG4gICAgY29uc3QgaXNBbHJlYWR5U2VsZWN0ZWQgPVxuICAgICAgdGhpcy5fc2VsZWN0ZWQgIT09IG51bGwgJiYgdGhpcy5fc2VsZWN0ZWQudmFsdWUgPT09IHRoaXMuX3ZhbHVlO1xuICAgIGlmICh0aGlzLl9yYWRpb3MgJiYgIWlzQWxyZWFkeVNlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IG51bGw7XG4gICAgICB0aGlzLl9yYWRpb3MuZm9yRWFjaCgocmFkaW86IEJhb1JhZGlvQnV0dG9uQ29tcG9uZW50KSA9PiB7XG4gICAgICAgIHJhZGlvLmNoZWNrZWQgPSB0aGlzLnZhbHVlID09PSByYWRpby52YWx1ZTtcbiAgICAgICAgaWYgKHJhZGlvLmNoZWNrZWQpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHJhZGlvO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNoZWNrZWQgcHJvcGVydHkgb24gc2VsZWN0ZWQgcmFkaW8gYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgY2hlY2tTZWxlY3RlZFJhZGlvQnV0dG9uKCkge1xuICAgIGlmICh0aGlzLl9zZWxlY3RlZCAmJiAhdGhpcy5fc2VsZWN0ZWQuY2hlY2tlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWQuY2hlY2tlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXQgdGhlIHZhbHVlIG9mIHRoZSBuZXcgc2VsZWN0ZWQgcmFkaW8gYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgZW1pdENoYW5nZUV2ZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIG1hcmtGb3JDaGVjayBmdW5jdGlvbiBvbiBhbGwgcmFkaW8gYnV0dG9ucyBzaW5jZSBvbmUgb2YgdGhlIHBhcmVudCBpbnB1dHMgY291bGQndCBoYXZlIGNoYW5nZSBtZWFud2hpbGUuIFByZXZlbnQgY2hhbmdlIGRldGVjdGlvbiBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBtYXJrUmFkaW9zRm9yQ2hlY2soKSB7XG4gICAgaWYgKHRoaXMuX3JhZGlvcykge1xuICAgICAgdGhpcy5fcmFkaW9zLmZvckVhY2goKHJhZGlvOiBCYW9SYWRpb0J1dHRvbkNvbXBvbmVudCkgPT5cbiAgICAgICAgcmFkaW8ubWFya0ZvckNoZWNrKClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQ29udGVudENoYW5nZSgpIHtcbiAgICB0aGlzLnNldEFyaWFEZXNjcmliZWRCeVRvRGVzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1vZGVsQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0IHRoZSBhcmlhLWRlc2NyaWJlZGJ5IHByb3BlcnR5IHRvIGJhby1ndWlkaW5nLXRleHQgaWYgYXZhaWxhYmxlXG4gICAqL1xuICBwcml2YXRlIHNldEFyaWFEZXNjcmliZWRCeVRvRGVzY3JpcHRpb24oKSB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKHRoaXMuc3RhdGljQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4pO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuc2hvd0FyaWFEZXNjcmliZWRCeShmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93QXJpYURlc2NyaWJlZEJ5KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93QXJpYURlc2NyaWJlZEJ5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5hcmlhRGVzY3JpYmVkYnkgPSB2YWx1ZSA/IGAke3RoaXMuaWR9LWFyaWFkZXNjcmliZWRieWAgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBvblRvdWNoOiAoKSA9PiBhbnkgPSAoKSA9PiB1bmRlZmluZWQ7XG59XG4iLCI8ZmllbGRzZXRcbiAgcm9sZT1cInJhZGlvZ3JvdXBcIlxuICBjbGFzcz1cImJhby1yYWRpby1idXR0b24tZ3JvdXBcIlxuICBbaWRdPVwiaWRcIlxuICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRieVwiXG4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYmFvLXJhZGlvLWJ1dHRvbi1ncm91cC1kZXNjcmlwdGlvblwiXG4gICAgW2F0dHIuaWRdPVwiYXJpYURlc2NyaWJlZGJ5XCJcbiAgICAjY29udGFpbmVyXG4gICAgKGNka09ic2VydmVDb250ZW50KT1cIm9uQ29udGVudENoYW5nZSgpXCJcbiAgPlxuICAgIDxuZy1jb250ZW50XG4gICAgICBzZWxlY3Q9XCJiYW8tZXJyb3IsIFtiYW8tZXJyb3JdLCBiYW8tZ3VpZGluZy10ZXh0LCBbYmFvLWd1aWRpbmctdGV4dF1cIlxuICAgID48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9maWVsZHNldD5cbiJdfQ==
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL3JhZGlvL3JhZGlvLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9yYWRpby9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUlMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLENBQUM7OztBQUU1Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FDL0MscUJBQXFCLENBQ3RCLENBQUM7QUFDRjs7R0FFRztBQUNILElBQUksc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBa0IvQixNQUFNLE9BQU8sNEJBQTRCO0lBbUN2QyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTNCMUM7O1dBRUc7UUFDdUIsV0FBTSxHQUM5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBUTdCOztXQUVHO1FBQ0ksb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBR3JDLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzdCLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBbUMsSUFBSSxDQUFDO1FBQ2pELG1CQUFjLEdBQUcs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QVQ1QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNEJBQTRCLENBQUM7Z0JBQzNELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFO1NBQ3hFLDZGQWdCaUMsdUJBQXVCLCtMQ2xFM0Qsa2RBa0JBOzsyRkRrQ2EsNEJBQTRCO2tCQWhCeEMsU0FBUzsrQkFFTix5RUFBeUUsWUFDakUsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDZCQUE2QixDQUFDOzRCQUMzRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyw4QkFBOEIsRUFBRTtxQkFDeEU7d0dBUWUsRUFBRTtzQkFBakIsS0FBSztnQkFLb0IsTUFBTTtzQkFBL0IsTUFBTTtnQkFPQyxlQUFlO3NCQUp0QixlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO3dCQUMxRCxXQUFXLEVBQUUsSUFBSTtxQkFDbEI7O3NCQUNBLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkE0QnJDLElBQUk7c0JBRFAsS0FBSztnQkFTRixLQUFLO3NCQURSLEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI2IFZpbGxlIGRlIE1vbnRyZWFsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhb1JhZGlvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLic7XG5cbi8qKlxuICogV2UgaGF2ZSB0byBpbmplY3QgdGhlIHJhZGlvIGJ1dHRvbiBncm91cCBhbmQgYWxsIGl0cyBjaGlsZHJlbiB0byBlYWNoIGNoaWxkLlxuICovXG5leHBvcnQgY29uc3QgQkFPX1JBRElPX0dST1VQID0gbmV3IEluamVjdGlvblRva2VuPEJhb1JhZGlvQnV0dG9uR3JvdXBDb21wb25lbnQ+KFxuICAnQmFvUmFkaW9CdXR0b25Hcm91cCdcbik7XG4vKipcbiAqIFVuaXF1ZSBJRCBmb3IgZWFjaCByYWRpbyBncm91cCBjb3VudGVyXG4gKi9cbmxldCByYWRpb0dyb3VwTmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOlxuICAgICdiYW8tcmFkaW8tYnV0dG9uLWdyb3VwLCBbYmFvLXJhZGlvLWJ1dHRvbi1ncm91cF0sIFtiYW9SYWRpb0J1dHRvbkdyb3VwXScsXG4gIGV4cG9ydEFzOiAnYmFvUmFkaW9Hcm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQmFvUmFkaW9CdXR0b25Hcm91cENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBCQU9fUkFESU9fR1JPVVAsIHVzZUV4aXN0aW5nOiBCYW9SYWRpb0J1dHRvbkdyb3VwQ29tcG9uZW50IH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBCYW9SYWRpb0J1dHRvbkdyb3VwQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXRcbntcbiAgLyoqXG4gICAqIFRoZSBjaGVja2JveCBncm91cCBJRC4gSXQgaXMgc2V0IGR5bmFtaWNhbGx5IHdpdGggYW4gdW5pcXVlIElEIGJ5IGRlZmF1bHRcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWl0IHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0ZWQgcmFkaW8gYnV0dG9uXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBCYW9SYWRpb0J1dHRvbkNvbXBvbmVudCksIHtcbiAgICBkZXNjZW5kYW50czogdHJ1ZVxuICB9KVxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSBzdGF0aWNDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBhcmlhLWRlc2NyaWJlZGJ5IGZvciB3ZWIgYWNjZXNzaWJpbHR5XG4gICAqL1xuICBwdWJsaWMgYXJpYURlc2NyaWJlZGJ5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9yYWRpb3M6IFF1ZXJ5TGlzdDxCYW9SYWRpb0J1dHRvbkNvbXBvbmVudD47XG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3NlbGVjdGVkOiBCYW9SYWRpb0J1dHRvbkNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfdW5pcXVlSWQgPSBgYmFvLWNoZWNrYm94LWdyb3VwLSR7KytyYWRpb0dyb3VwTmV4dFVuaXF1ZUlkfWA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgaWYgKCF0aGlzLmlkKSB7XG4gICAgICB0aGlzLmlkID0gdGhpcy5fdW5pcXVlSWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBhbGwgcmFkaW8gYnV0dG9ucy4gRGVmYXVsdCA6IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBuYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIHJhZGlvIGJ1dHRvbi4gRGVmYXVsdCA6IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHdoaWNoIHJhZGlvIGJ1dHRvbiBpcyBzZWxlY3RlZC4gRGVmYXVsdCA6IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwZCBpcyBkaXNhYmxlZC4gRGVmYXVsdCA6IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJhZGlvIGJ1dHRvbiBncm91cGQgaXMgcmVxdWlyZWQuIERlZmF1bHQgOiBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5fbmFtZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlUmFkaW9CdXR0b25OYW1lcygpO1xuICB9XG5cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRSYWRpb0Zyb21WYWx1ZSgpO1xuICAgICAgdGhpcy5jaGVja1NlbGVjdGVkUmFkaW9CdXR0b24oKTtcbiAgICB9XG4gIH1cblxuICBzZXQgc2VsZWN0ZWQoc2VsZWN0ZWQ6IEJhb1JhZGlvQnV0dG9uQ29tcG9uZW50IHwgbnVsbCkge1xuICAgIHRoaXMuX3NlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkID8gc2VsZWN0ZWQudmFsdWUgOiBudWxsO1xuICAgIHRoaXMuY2hlY2tTZWxlY3RlZFJhZGlvQnV0dG9uKCk7XG4gIH1cblxuICBzZXQgZGlzYWJsZWQodmFsdWUpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5tYXJrUmFkaW9zRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLm1hcmtSYWRpb3NGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zZXRBcmlhRGVzY3JpYmVkQnlUb0Rlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvblRvdWNoKCkgY2FsbGVkIGZyb20gdGhlIGJ1dHRvbiBjaGlsZHJlblxuICAgKi9cbiAgcHVibGljIG9uR3JvdXBUb3VjaCgpIHtcbiAgICBpZiAodGhpcy5vblRvdWNoKSB7XG4gICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFsbCByYWRpbyBidXR0b24gbmFtZVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVJhZGlvQnV0dG9uTmFtZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JhZGlvcykge1xuICAgICAgdGhpcy5fcmFkaW9zLmZvckVhY2goKHJhZGlvOiBCYW9SYWRpb0J1dHRvbkNvbXBvbmVudCkgPT4ge1xuICAgICAgICByYWRpby5uYW1lID0gdGhpcy5uYW1lO1xuICAgICAgICByYWRpby5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgd2hpY2ggcmFkaW8gYnV0dG9uIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVNlbGVjdGVkUmFkaW9Gcm9tVmFsdWUoKTogdm9pZCB7XG4gICAgY29uc3QgaXNBbHJlYWR5U2VsZWN0ZWQgPVxuICAgICAgdGhpcy5fc2VsZWN0ZWQgIT09IG51bGwgJiYgdGhpcy5fc2VsZWN0ZWQudmFsdWUgPT09IHRoaXMuX3ZhbHVlO1xuICAgIGlmICh0aGlzLl9yYWRpb3MgJiYgIWlzQWxyZWFkeVNlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IG51bGw7XG4gICAgICB0aGlzLl9yYWRpb3MuZm9yRWFjaCgocmFkaW86IEJhb1JhZGlvQnV0dG9uQ29tcG9uZW50KSA9PiB7XG4gICAgICAgIHJhZGlvLmNoZWNrZWQgPSB0aGlzLnZhbHVlID09PSByYWRpby52YWx1ZTtcbiAgICAgICAgaWYgKHJhZGlvLmNoZWNrZWQpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHJhZGlvO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNoZWNrZWQgcHJvcGVydHkgb24gc2VsZWN0ZWQgcmFkaW8gYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgY2hlY2tTZWxlY3RlZFJhZGlvQnV0dG9uKCkge1xuICAgIGlmICh0aGlzLl9zZWxlY3RlZCAmJiAhdGhpcy5fc2VsZWN0ZWQuY2hlY2tlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWQuY2hlY2tlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXQgdGhlIHZhbHVlIG9mIHRoZSBuZXcgc2VsZWN0ZWQgcmFkaW8gYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgZW1pdENoYW5nZUV2ZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIG1hcmtGb3JDaGVjayBmdW5jdGlvbiBvbiBhbGwgcmFkaW8gYnV0dG9ucyBzaW5jZSBvbmUgb2YgdGhlIHBhcmVudCBpbnB1dHMgY291bGQndCBoYXZlIGNoYW5nZSBtZWFud2hpbGUuIFByZXZlbnQgY2hhbmdlIGRldGVjdGlvbiBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBtYXJrUmFkaW9zRm9yQ2hlY2soKSB7XG4gICAgaWYgKHRoaXMuX3JhZGlvcykge1xuICAgICAgdGhpcy5fcmFkaW9zLmZvckVhY2goKHJhZGlvOiBCYW9SYWRpb0J1dHRvbkNvbXBvbmVudCkgPT5cbiAgICAgICAgcmFkaW8ubWFya0ZvckNoZWNrKClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQ29udGVudENoYW5nZSgpIHtcbiAgICB0aGlzLnNldEFyaWFEZXNjcmliZWRCeVRvRGVzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1vZGVsQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0IHRoZSBhcmlhLWRlc2NyaWJlZGJ5IHByb3BlcnR5IHRvIGJhby1ndWlkaW5nLXRleHQgaWYgYXZhaWxhYmxlXG4gICAqL1xuICBwcml2YXRlIHNldEFyaWFEZXNjcmliZWRCeVRvRGVzY3JpcHRpb24oKSB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKHRoaXMuc3RhdGljQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4pO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuc2hvd0FyaWFEZXNjcmliZWRCeShmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93QXJpYURlc2NyaWJlZEJ5KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93QXJpYURlc2NyaWJlZEJ5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5hcmlhRGVzY3JpYmVkYnkgPSB2YWx1ZSA/IGAke3RoaXMuaWR9LWFyaWFkZXNjcmliZWRieWAgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBvblRvdWNoOiAoKSA9PiBhbnkgPSAoKSA9PiB1bmRlZmluZWQ7XG59XG4iLCI8ZmllbGRzZXRcbiAgcm9sZT1cInJhZGlvZ3JvdXBcIlxuICBjbGFzcz1cImJhby1yYWRpby1idXR0b24tZ3JvdXBcIlxuICBbaWRdPVwiaWRcIlxuICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRieVwiXG4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYmFvLXJhZGlvLWJ1dHRvbi1ncm91cC1kZXNjcmlwdGlvblwiXG4gICAgW2F0dHIuaWRdPVwiYXJpYURlc2NyaWJlZGJ5XCJcbiAgICAjY29udGFpbmVyXG4gICAgKGNka09ic2VydmVDb250ZW50KT1cIm9uQ29udGVudENoYW5nZSgpXCJcbiAgPlxuICAgIDxuZy1jb250ZW50XG4gICAgICBzZWxlY3Q9XCJiYW8tZXJyb3IsIFtiYW8tZXJyb3JdLCBiYW8tZ3VpZGluZy10ZXh0LCBbYmFvLWd1aWRpbmctdGV4dF1cIlxuICAgID48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9maWVsZHNldD5cbiJdfQ==
|