@fundamental-ngx/core 0.44.0-rc.6 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/action-bar/action-bar.component.mjs +3 -2
- package/esm2022/alert/alert-service/alert.service.mjs +3 -3
- package/esm2022/alert/alert-utils/alert-config.mjs +3 -2
- package/esm2022/alert/alert-utils/alert-container.component.mjs +3 -2
- package/esm2022/alert/alert-utils/alert-ref.mjs +3 -2
- package/esm2022/alert/alert.component.mjs +3 -3
- package/esm2022/alert/alert.module.mjs +3 -3
- package/esm2022/avatar/avatar.component.mjs +3 -3
- package/esm2022/bar/directives/bar-element.directive.mjs +3 -2
- package/esm2022/carousel/carousel.component.mjs +4 -4
- package/esm2022/date-picker/date-picker.component.mjs +9 -8
- package/esm2022/datetime-picker/datetime-picker.component.mjs +8 -7
- package/esm2022/dialog/dialog-footer-button/dialog-footer-button.component.mjs +3 -2
- package/esm2022/dialog/directives/dialog-decisive-button.directive.mjs +3 -2
- package/esm2022/feed-list-item/components/item/feed-list-item.component.mjs +4 -4
- package/esm2022/form/form-label/form-label.component.mjs +5 -4
- package/esm2022/inline-help/inline-help.directive.mjs +3 -2
- package/esm2022/input-group/input-group.component.mjs +4 -3
- package/esm2022/link/link.component.mjs +3 -3
- package/esm2022/list/list-item/list-item.component.mjs +6 -6
- package/esm2022/message-box/directives/message-box-decisive-button.directive.mjs +3 -2
- package/esm2022/message-box/message-box-footer-button/message-box-footer-button.component.mjs +3 -2
- package/esm2022/pagination/pagination.component.mjs +10 -10
- package/esm2022/popover/base/base-popover.class.mjs +5 -4
- package/esm2022/popover/popover.component.mjs +3 -2
- package/esm2022/product-switch/product-switch/product-switch.component.mjs +3 -2
- package/esm2022/shellbar/shellbar-actions/shellbar-actions.component.mjs +3 -2
- package/esm2022/slider/slider.component.mjs +5 -4
- package/esm2022/split-button/split-button.component.mjs +4 -3
- package/esm2022/splitter/splitter.component.mjs +3 -2
- package/esm2022/step-input/step-input.component.mjs +4 -4
- package/esm2022/switch/switch.component.mjs +5 -4
- package/esm2022/tabs/tab-item-expand/tab-item-expand.component.mjs +3 -2
- package/esm2022/tabs/tab-list.component.mjs +3 -3
- package/esm2022/time/i18n/time-i18n.mjs +3 -2
- package/esm2022/token/token.component.mjs +4 -4
- package/esm2022/toolbar/toolbar.component.mjs +3 -3
- package/esm2022/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +8 -7
- package/esm2022/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +3 -2
- package/fesm2022/fundamental-ngx-core-action-bar.mjs +2 -1
- package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-alert.mjs +7 -7
- package/fesm2022/fundamental-ngx-core-alert.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-bar.mjs +2 -1
- package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +8 -7
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +7 -6
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +3 -2
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +4 -3
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-inline-help.mjs +2 -1
- package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-input-group.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-list.mjs +5 -5
- package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +3 -2
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +9 -9
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +6 -5
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +3 -2
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-splitter.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +4 -3
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +8 -7
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fundamental-ngx-core-v0.44.0.tgz +0 -0
- package/package.json +3 -3
- package/schematics/add-dependencies/index.js +4 -4
- package/fundamental-ngx-core-v0.44.0-rc.6.tgz +0 -0
|
@@ -2,7 +2,7 @@ import { LiveAnnouncer } from '@angular/cdk/a11y';
|
|
|
2
2
|
import { coerceArray, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
3
3
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, QueryList, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
|
|
4
4
|
import { firstValueFrom, Observable, Subscription } from 'rxjs';
|
|
5
|
-
import { FocusKeyManagerItemDirective, FocusKeyManagerListDirective, RtlService } from '@fundamental-ngx/cdk/utils';
|
|
5
|
+
import { FocusKeyManagerItemDirective, FocusKeyManagerListDirective, RtlService, warnOnce } from '@fundamental-ngx/cdk/utils';
|
|
6
6
|
import { PaginationService } from './pagination.service';
|
|
7
7
|
import { FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';
|
|
8
8
|
import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
|
|
@@ -61,7 +61,7 @@ export class PaginationComponent {
|
|
|
61
61
|
* This property is mainly provided to support reading in the right language for screen reader.
|
|
62
62
|
*/
|
|
63
63
|
set itemsPerPageLabel(value) {
|
|
64
|
-
|
|
64
|
+
warnOnce("Property itemsPerPageLabel is deprecated. Use i18n capabilities 'corePagination.itemsPerPageLabel' key instead.");
|
|
65
65
|
this._itemsPerPageLabel = value;
|
|
66
66
|
}
|
|
67
67
|
get itemsPerPageLabel() {
|
|
@@ -85,7 +85,7 @@ export class PaginationComponent {
|
|
|
85
85
|
* This property is mainly provided to support reading in the right language for screen reader.
|
|
86
86
|
*/
|
|
87
87
|
set firstLabel(value) {
|
|
88
|
-
|
|
88
|
+
warnOnce("Property firstLabel is deprecated. Use i18n capabilities 'corePagination.firstLabel' key instead.");
|
|
89
89
|
this._firstLabel = value;
|
|
90
90
|
}
|
|
91
91
|
get firstLabel() {
|
|
@@ -97,7 +97,7 @@ export class PaginationComponent {
|
|
|
97
97
|
* This property is mainly provided to support reading in the right language for screen reader.
|
|
98
98
|
*/
|
|
99
99
|
set previousLabel(value) {
|
|
100
|
-
|
|
100
|
+
warnOnce("Property previousLabel is deprecated. Use i18n capabilities 'corePagination.previousLabel' key instead.");
|
|
101
101
|
this._previousLabel = value;
|
|
102
102
|
}
|
|
103
103
|
get previousLabel() {
|
|
@@ -157,7 +157,7 @@ export class PaginationComponent {
|
|
|
157
157
|
* This property is mainly provided to support reading in the right language for screen reader.
|
|
158
158
|
*/
|
|
159
159
|
set currentPageAriaLabel(value) {
|
|
160
|
-
|
|
160
|
+
warnOnce("Property currentPageAriaLabel is deprecated. Use i18n capabilities 'corePagination.currentPageAriaLabel' key instead.");
|
|
161
161
|
this._currentPageAriaLabel = value;
|
|
162
162
|
}
|
|
163
163
|
get currentPageAriaLabel() {
|
|
@@ -172,7 +172,7 @@ export class PaginationComponent {
|
|
|
172
172
|
*/
|
|
173
173
|
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
174
174
|
set labelBeforeInputMobile(value) {
|
|
175
|
-
|
|
175
|
+
warnOnce("Property labelBeforeInputMobile is deprecated. Use i18n capabilities 'corePagination.labelBeforeInputMobile' key instead.");
|
|
176
176
|
this._labelBeforeInputMobile = value;
|
|
177
177
|
}
|
|
178
178
|
get labelBeforeInputMobile() {
|
|
@@ -186,7 +186,7 @@ export class PaginationComponent {
|
|
|
186
186
|
* This property is mainly provided to support i18n.
|
|
187
187
|
*/
|
|
188
188
|
set labelAfterInputMobile(value) {
|
|
189
|
-
|
|
189
|
+
warnOnce("Property labelAfterInputMobile is deprecated. Use i18n capabilities 'corePagination.labelAfterInputMobile' key instead.");
|
|
190
190
|
this._labelAfterInputMobile = value;
|
|
191
191
|
}
|
|
192
192
|
get labelAfterInputMobile() {
|
|
@@ -198,7 +198,7 @@ export class PaginationComponent {
|
|
|
198
198
|
* This property is mainly provided to support reading in the right language for screen reader.
|
|
199
199
|
*/
|
|
200
200
|
set inputAriaLabel(value) {
|
|
201
|
-
|
|
201
|
+
warnOnce("Property inputAriaLabel is deprecated. Use i18n capabilities 'corePagination.inputAriaLabel' key instead.");
|
|
202
202
|
this._inputAriaLabel = value;
|
|
203
203
|
}
|
|
204
204
|
get inputAriaLabel() {
|
|
@@ -358,7 +358,7 @@ export class PaginationComponent {
|
|
|
358
358
|
}
|
|
359
359
|
/** @deprecated, use {@link paginationObject} getter instead */
|
|
360
360
|
getPaginationObject() {
|
|
361
|
-
|
|
361
|
+
warnOnce('PaginationComponent: getPaginationObject() is deprecated, use paginationObject getter instead');
|
|
362
362
|
return this.paginationObject;
|
|
363
363
|
}
|
|
364
364
|
/** @hidden */
|
|
@@ -497,4 +497,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
497
497
|
}], itemsPerPageChange: [{
|
|
498
498
|
type: Output
|
|
499
499
|
}] } });
|
|
500
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdoRSxPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUU1QixVQUFVLEVBQ2IsTUFBTSw0QkFBNEIsQ0FBQztBQUdwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFjLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFFaEgsa0VBQWtFO0FBQ2xFLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBVWxDLElBQUksa0JBQWtCLEdBQUcsQ0FB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QkFLMUMsbUJBQW1CO3NCQUQzQixTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLckQsRUFBRTtzQkFERCxLQUFLO2dCQUtGLE1BQU07c0JBRFQsS0FBSztnQkFVTixVQUFVO3NCQURULEtBQUs7Z0JBS0YsV0FBVztzQkFEZCxLQUFLO2dCQVVGLFlBQVk7c0JBRGYsS0FBSztnQkFpQk4sb0JBQW9CO3NCQURuQixLQUFLO2dCQVNGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFpQkYsbUJBQW1CO3NCQUR0QixLQUFLO2dCQWdCTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBUU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQVNGLFVBQVU7c0JBRGIsS0FBSztnQkFxQkYsYUFBYTtzQkFEaEIsS0FBSztnQkFxQkYsU0FBUztzQkFEWixLQUFLO2dCQW1CRixTQUFTO3NCQURaLEtBQUs7Z0JBbUJGLFNBQVM7c0JBRFosS0FBSztnQkFtQkYsU0FBUztzQkFEWixLQUFLO2dCQW1CRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBd0JGLHNCQUFzQjtzQkFEekIsS0FBSztnQkF1QkYscUJBQXFCO3NCQUR4QixLQUFLO2dCQXFCRixjQUFjO3NCQURqQixLQUFLO2dCQWlCTixlQUFlO3NCQURkLE1BQU07Z0JBS1Asa0JBQWtCO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQXJyYXksIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgICBGb2N1c0tleU1hbmFnZXJJdGVtRGlyZWN0aXZlLFxuICAgIEZvY3VzS2V5TWFuYWdlckxpc3REaXJlY3RpdmUsXG4gICAgTnVsbGFibGUsXG4gICAgUnRsU2VydmljZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmltcG9ydCB7IFBhZ2luYXRpb24gfSBmcm9tICcuL3BhZ2luYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuL3BhZ2luYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGRF9MQU5HVUFHRSwgRmRMYW5ndWFnZSwgVHJhbnNsYXRpb25SZXNvbHZlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5cbi8qKiBDb25zdGFudCByZXByZXNlbnRpbmcgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlLiAqL1xuY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDEwO1xuXG5pbnRlcmZhY2UgQ3VycmVudFNob3dpbmcge1xuICAgIGZyb206IG51bWJlcjtcbiAgICB0bzogbnVtYmVyO1xuICAgIHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgaGFzIGJlZW4gcmVuYW1lZCB0byBcInRvdGFsQ291bnRcIiAqL1xuICAgIG9mOiBudW1iZXI7XG59XG5cbmxldCBwYWdpbmF0aW9uVW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFRoZSBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHByb3ZpZGUgbmF2aWdhdGlvbiBiZXR3ZWVuIHBhZ2VkIGluZm9ybWF0aW9uLlxuICogYGBgaHRtbFxuICogPGZkLXBhZ2luYXRpb25cbiAqICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cIjUwXCJcbiAqICAgICAgICAgIFtpdGVtc1BlclBhZ2VdPVwiMTBcIlxuICogICAgICAgICAgW2N1cnJlbnRQYWdlXT1cIjNcIj5cbiAqIDwvZmQtcGFnaW5hdGlvbj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXBhZ2luYXRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtQYWdpbmF0aW9uU2VydmljZSwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtcGFnaW5hdGlvbicsXG4gICAgICAgICdbY2xhc3MuZmQtcGFnaW5hdGlvbi0tbW9iaWxlXSc6ICdtb2JpbGUnLFxuICAgICAgICAnW2NsYXNzLmZkLXBhZ2luYXRpb24tLXNob3J0XSc6ICdfbGFzdFBhZ2UgPD0gOSdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChGb2N1c0tleU1hbmFnZXJMaXN0RGlyZWN0aXZlKVxuICAgIHJlYWRvbmx5IF9mb2N1c0tleU1hbmFnZXJMaXN0OiBGb2N1c0tleU1hbmFnZXJMaXN0RGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEZvY3VzS2V5TWFuYWdlckl0ZW1EaXJlY3RpdmUpXG4gICAgcmVhZG9ubHkgX2ZvY3VzS2V5TWFuYWdlckl0ZW1zOiBRdWVyeUxpc3Q8Rm9jdXNLZXlNYW5hZ2VySXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3BhZ2VJbnB1dEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICByZWFkb25seSBfcGFnZUlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY3VycmVudFBhZ2VFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcmVhZG9ubHkgX2N1cnJlbnRQYWdlRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBJZCBmb3IgdGhlIHBhZ2luYXRpb24gY29tcG9uZW50LiBJZiBvbWl0dGVkLCBhIHVuaXF1ZSBvbmUgaXMgZ2VuZXJhdGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZyA9ICdmZC1wYWdpbmF0aW9uLScgKyBwYWdpbmF0aW9uVW5pcXVlSWQrKztcblxuICAgIC8qKiBXaGV0aGVyIGNvbXBvbmVudCBzaG91bGQgYmUgc2hvd24gaW4gdGhlIG1vYmlsZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1vYmlsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX21vYmlsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBtb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2JpbGU7XG4gICAgfVxuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRvdGFsSXRlbXM6IG51bWJlcjtcblxuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGN1cnJlbnRQYWdlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSBNYXRoLmZsb29yKGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCAxKSk7XG4gICAgfVxuICAgIGdldCBjdXJyZW50UGFnZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2U7XG4gICAgfVxuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBpdGVtc1BlclBhZ2UodmFsdWU6IG51bWJlcikge1xuICAgICAgICB2YWx1ZSA9IE1hdGguZmxvb3IoY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UpKTtcblxuICAgICAgICB0aGlzLl9pdGVtc1BlclBhZ2UgPSBNYXRoLm1heCh2YWx1ZSwgMSk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCk7XG4gICAgfVxuICAgIGdldCBpdGVtc1BlclBhZ2UoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VzdG9tIHRlbXBsYXRlIHNob3cgcmFuZ2Ugb2YgaXRlbSBieSBjdXJyZW50IHBhZ2Ugb2YgaXRlbXMuXG4gICAgICogSXQgaGFzIGhpZ2hlciBwcmlvcml0eSB0aGFuIGBpdGVtc1BlclBhZ2VPcHRpb25zYCBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1zUGVyUGFnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBMYWJlbCBmb3Igb3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBtYWlubHkgcHJvdmlkZWQgdG8gc3VwcG9ydCByZWFkaW5nIGluIHRoZSByaWdodCBsYW5ndWFnZSBmb3Igc2NyZWVuIHJlYWRlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBpdGVtc1BlclBhZ2VMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgaXRlbXNQZXJQYWdlTGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5pdGVtc1BlclBhZ2VMYWJlbCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5faXRlbXNQZXJQYWdlTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaXRlbXNQZXJQYWdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZUxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXRlbXNQZXJQYWdlTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBvcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBpdGVtc1BlclBhZ2VPcHRpb25zKHZhbHVlOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLl9pdGVtc1BlclBhZ2VPcHRpb25zID0gY29lcmNlQXJyYXk8bnVtYmVyPih2YWx1ZSlcbiAgICAgICAgICAgIC5tYXAoKHYpID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIDApKVxuICAgICAgICAgICAgLm1hcCgodikgPT4gTWF0aC5mbG9vcih2KSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHYpID0+IHYgPiAwKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcblxuICAgICAgICB0aGlzLl91cGRhdGVEaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMoKTtcbiAgICB9XG4gICAgZ2V0IGl0ZW1zUGVyUGFnZU9wdGlvbnMoKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNQZXJQYWdlT3B0aW9ucztcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0byBkaXNwbGF5IHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMuICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5VG90YWxJdGVtcyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdGVtcGxhdGUgc2hvdyByYW5nZSBvZiBpdGVtIGJ5IGN1cnJlbnQgcGFnZSBvZiBpdGVtcy5cbiAgICAgKiBEZWZhdWx0IHZpZXc6IFNob3dpbmcge3sgZnJvbSB9fS17eyB0byB9fSBvZiB7eyBvZiB9fVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVRleHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTGFiZWwgZm9yIHRoZSAnZmlyc3QnIHBhZ2UgYnV0dG9uLlxuICAgICAqIFRoaXMgcHJvcGVydHkgaXMgbWFpbmx5IHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVhZGluZyBpbiB0aGUgcmlnaHQgbGFuZ3VhZ2UgZm9yIHNjcmVlbiByZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmlyc3RMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgZmlyc3RMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVQYWdpbmF0aW9uLmZpcnN0TGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2ZpcnN0TGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZmlyc3RMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3RMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZpcnN0TGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTGFiZWwgZm9yIHRoZSAncHJldmlvdXMnIHBhZ2UgYnV0dG9uLlxuICAgICAqIFRoaXMgcHJvcGVydHkgaXMgbWFpbmx5IHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVhZGluZyBpbiB0aGUgcmlnaHQgbGFuZ3VhZ2UgZm9yIHNjcmVlbiByZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcHJldmlvdXNMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgcHJldmlvdXNMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVQYWdpbmF0aW9uLnByZXZpb3VzTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgcHJldmlvdXNMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZpb3VzTGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTGFiZWwgZm9yIHRoZSAnbmV4dCcgcGFnZSBidXR0b24uXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBtYWlubHkgcHJvdmlkZWQgdG8gc3VwcG9ydCByZWFkaW5nIGluIHRoZSByaWdodCBsYW5ndWFnZSBmb3Igc2NyZWVuIHJlYWRlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBuZXh0TGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJQcm9wZXJ0eSBuZXh0TGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5uZXh0TGFiZWwnIGtleSBpbnN0ZWFkLlwiKTtcbiAgICAgICAgdGhpcy5fbmV4dExhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IG5leHRMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmV4dExhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbmV4dExhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIExhYmVsIGZvciB0aGUgJ2xhc3QnIHBhZ2UgYnV0dG9uLlxuICAgICAqIFRoaXMgcHJvcGVydHkgaXMgbWFpbmx5IHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVhZGluZyBpbiB0aGUgcmlnaHQgbGFuZ3VhZ2UgZm9yIHNjcmVlbiByZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbGFzdExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiUHJvcGVydHkgbGFzdExhYmVsIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVBhZ2luYXRpb24ubGFzdExhYmVsJyBrZXkgaW5zdGVhZC5cIik7XG4gICAgICAgIHRoaXMuX2xhc3RMYWJlbCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBsYXN0TGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xhc3RMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBBcmlhIGxhYmVsIGZvciB0aGUgbmF2aWdhdGlvbiBlbGVtZW50XG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBtYWlubHkgcHJvdmlkZWQgdG8gc3VwcG9ydCByZWFkaW5nIGluIHRoZSByaWdodCBsYW5ndWFnZSBmb3Igc2NyZWVuIHJlYWRlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhcmlhTGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJQcm9wZXJ0eSBhcmlhTGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5hcmlhTGFiZWwnIGtleSBpbnN0ZWFkLlwiKTtcbiAgICAgICAgdGhpcy5fYXJpYUxhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXJpYUxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIExhYmVsIGZvciB0aGUgJ1BhZ2UgJyBwYWdlIGJ1dHRvbi4gUGFnZSBudW1iZXIgcGFzc2VkIGFzIGZ1bmN0aW9uIHBhcmFtZXRlci5cbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IHJlYWRpbmcgaW4gdGhlIHJpZ2h0IGxhbmd1YWdlIGZvciBzY3JlZW4gcmVhZGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHBhZ2VMYWJlbCh2YWx1ZTogTnVsbGFibGU8KHBhZ2U6IG51bWJlcikgPT4gc3RyaW5nPikge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJQcm9wZXJ0eSBwYWdlTGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5wYWdlTGFiZWwnIGtleSBpbnN0ZWFkLlwiKTtcbiAgICAgICAgdGhpcy5fcGFnZUxhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHBhZ2VMYWJlbCgpOiBOdWxsYWJsZTwocGFnZTogbnVtYmVyKSA9PiBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2VMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3BhZ2VMYWJlbDogTnVsbGFibGU8KHBhZ2U6IG51bWJlcikgPT4gc3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogRnVuY3Rpb24gdG8gY3JlYXRlIGN1cnJlbnQgcGFnZSBhcmlhIGxhYmVsLCBjdXJyZW50IHBhZ2UgcGFzc2VkIGFzIGEgcGFyYW1ldGVyIG9mIHRoZSBmdW5jdGlvblxuICAgICAqIFRoaXMgcHJvcGVydHkgaXMgbWFpbmx5IHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVhZGluZyBpbiB0aGUgcmlnaHQgbGFuZ3VhZ2UgZm9yIHNjcmVlbiByZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY3VycmVudFBhZ2VBcmlhTGFiZWwodmFsdWU6IE51bGxhYmxlPChjdXJyZW50UGFnZTogbnVtYmVyKSA9PiBzdHJpbmc+KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgY3VycmVudFBhZ2VBcmlhTGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5jdXJyZW50UGFnZUFyaWFMYWJlbCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fY3VycmVudFBhZ2VBcmlhTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudFBhZ2VBcmlhTGFiZWwoKTogTnVsbGFibGU8KGN1cnJlbnRQYWdlOiBudW1iZXIpID0+IHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2VBcmlhTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jdXJyZW50UGFnZUFyaWFMYWJlbDogTnVsbGFibGU8KGN1cnJlbnRQYWdlOiBudW1iZXIpID0+IHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFBhZ2UgbGFiZWwgdG8gYmUgc2hvd24gYmVmb3JlIGN1cnJlbnQgcGFnZSBpbnB1dCBpbiBtb2JpbGUgbW9kZS5cbiAgICAgKiBJbiBjb25qdWN0aW9uIHdpdGggQHBhZ2VMYWJlbEFmdGVySW5wdXRNb2JpbGUgZ2VuZXJhdGVzIHRoZSBsYWJlbCBmb3IgdGhlIGlucHV0LlxuICAgICAqIEV4YW1wbGU6ICdQYWdlJyArIGlucHV0ICsgcGFnZUxhYmVsQWZ0ZXJJbnB1dE1vYmlsZVxuICAgICAqIFRoaXMgcHJvcGVydHkgaXMgbWFpbmx5IHByb3ZpZGVkIHRvIHN1cHBvcnQgaTE4bi5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxhYmVsQmVmb3JlSW5wdXRNb2JpbGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBcIlByb3BlcnR5IGxhYmVsQmVmb3JlSW5wdXRNb2JpbGUgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5sYWJlbEJlZm9yZUlucHV0TW9iaWxlJyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9sYWJlbEJlZm9yZUlucHV0TW9iaWxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGxhYmVsQmVmb3JlSW5wdXRNb2JpbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsQmVmb3JlSW5wdXRNb2JpbGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sYWJlbEJlZm9yZUlucHV0TW9iaWxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFBhZ2UgbGFiZWwgdG8gYmUgc2hvd24gYWZ0ZXIgY3VycmVudCBwYWdlIGlucHV0IGluIG1vYmlsZSBtb2RlLiBQYWdlcyBjb3VudCBwYXNzZWQgYXMgdGhlIGZ1bmN0aW9uIHBhcmFtZXRlci5cbiAgICAgKiBJbiBjb25qdWN0aW9uIHdpdGggQHBhZ2VMYWJlbEJlZm9yZUlucHV0TW9iaWxlIGdlbmVyYXRlcyB0aGUgbGFiZWwgZm9yIHRoZSBpbnB1dC5cbiAgICAgKiBFeGFtcGxlOiBwYWdlTGFiZWxCZWZvcmVJbnB1dE1vYmlsZSArIGlucHV0ICsgJ29mIDUwMCcuXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBtYWlubHkgcHJvdmlkZWQgdG8gc3VwcG9ydCBpMThuLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxhYmVsQWZ0ZXJJbnB1dE1vYmlsZSh2YWx1ZTogTnVsbGFibGU8KHBhZ2VzQ291bnQ6IG51bWJlcikgPT4gc3RyaW5nPikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBcIlByb3BlcnR5IGxhYmVsQWZ0ZXJJbnB1dE1vYmlsZSBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVQYWdpbmF0aW9uLmxhYmVsQWZ0ZXJJbnB1dE1vYmlsZScga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbGFiZWxBZnRlcklucHV0TW9iaWxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGxhYmVsQWZ0ZXJJbnB1dE1vYmlsZSgpOiBOdWxsYWJsZTwocGFnZXNDb3VudDogbnVtYmVyKSA9PiBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsQWZ0ZXJJbnB1dE1vYmlsZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xhYmVsQWZ0ZXJJbnB1dE1vYmlsZTogTnVsbGFibGU8KHBhZ2VzQ291bnQ6IG51bWJlcikgPT4gc3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogQ3VycmVudCBwYWdlIGlucHV0IGFyaWEgbGFiZWwsIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiAoY3VycmVudFBhZ2U6IG51bWJlciwgcGFnZXNDb3VudDogbnVtYmVyKS5cbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IHJlYWRpbmcgaW4gdGhlIHJpZ2h0IGxhbmd1YWdlIGZvciBzY3JlZW4gcmVhZGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlucHV0QXJpYUxhYmVsKHZhbHVlOiBOdWxsYWJsZTwoY3VycmVudFBhZ2U6IG51bWJlciwgcGFnZXNDb3VudDogbnVtYmVyKSA9PiBzdHJpbmc+KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgaW5wdXRBcmlhTGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5pbnB1dEFyaWFMYWJlbCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5faW5wdXRBcmlhTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRBcmlhTGFiZWwoKTogTnVsbGFibGU8KGN1cnJlbnRQYWdlOiBudW1iZXIsIHBhZ2VzQ291bnQ6IG51bWJlcikgPT4gc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnB1dEFyaWFMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lucHV0QXJpYUxhYmVsOiBOdWxsYWJsZTwoY3VycmVudFBhZ2U6IG51bWJlciwgcGFnZXNDb3VudDogbnVtYmVyKSA9PiBzdHJpbmc+O1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcGFnZSBpcyBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHBhZ2VDaGFuZ2VTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBpdGVtcyBwZXIgcGFnZSBvcHRpb24gaXMgY2hhbmdlZC4qL1xuICAgIEBPdXRwdXQoKVxuICAgIGl0ZW1zUGVyUGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGFnZXM6IG51bWJlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wYWdlc0JlZm9yZUN1cnJlbnQ6IG51bWJlcltdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGFnZXNBZnRlckN1cnJlbnQ6IG51bWJlcltdO1xuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHNcbiAgICAgKiB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zLCB0aGUgY3VycmVudCBwYWdlLCBhbmQgdGhlIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZS5cbiAgICAgKi9cbiAgICBnZXQgcGFnaW5hdGlvbk9iamVjdCgpOiBQYWdpbmF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvdGFsSXRlbXM6IHRoaXMudG90YWxJdGVtcyxcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgaXRlbXNQZXJQYWdlOiB0aGlzLml0ZW1zUGVyUGFnZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9sYXN0UGFnZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uU2VydmljZS5nZXRUb3RhbFBhZ2VzKHRoaXMucGFnaW5hdGlvbk9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNGaXJzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlID09PSAxO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzTGFzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlID09PSB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmdldFRvdGFsUGFnZXModGhpcy5wYWdpbmF0aW9uT2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfdG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uU2VydmljZS5nZXRUb3RhbFBhZ2VzKHRoaXMucGFnaW5hdGlvbk9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3RvdGFsUGFnZXNFbGVtZW50SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyAnX190b3RhbCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX21vcmVFbGVtZW50VmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvblNlcnZpY2UubW9yZUVsZW1lbnRWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jdXJyZW50U2hvd2luZzogQ3VycmVudFNob3dpbmcgPSB7XG4gICAgICAgIGZyb206IDAsXG4gICAgICAgIHRvOiAwLFxuICAgICAgICBvZjogMCxcbiAgICAgICAgdG90YWxDb3VudDogMFxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2l0ZW1zUGVyUGFnZTogbnVtYmVyID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbW9iaWxlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2l0ZW1zUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jdXJyZW50UGFnZSA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyYW5zbGF0aW9uUmVzb2x2ZXIgPSBuZXcgVHJhbnNsYXRpb25SZXNvbHZlcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwYWdpbmF0aW9uU2VydmljZTogUGFnaW5hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIsXG4gICAgICAgIEBJbmplY3QoRkRfTEFOR1VBR0UpIHByaXZhdGUgcmVhZG9ubHkgX2xhbmd1YWdlOiBPYnNlcnZhYmxlPEZkTGFuZ3VhZ2U+LFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlLFxuICAgICAgICByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlclxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcz8uY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBjaGFuZ2VzLmN1cnJlbnRQYWdlLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFBhZ2UgfHwgdGhpcy5jdXJyZW50UGFnZSA8IDEpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdG90YWxQYWdlcyA9IHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZ2V0VG90YWxQYWdlcyh0aGlzLnBhZ2luYXRpb25PYmplY3QpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiB0b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRvdGFsUGFnZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVmcmVzaFBhZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5fcnRsU2VydmljZT8ucnRsLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9yZWZyZXNoUGFnZXMoKSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNraXBJdGVtUHJlZGljYXRlKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShpdGVtLm5hdGl2ZUVsZW1lbnQpLmRpc3BsYXkgPT09ICdub25lJyB8fFxuICAgICAgICAgICAgaXRlbS5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKSA9PT0gJ3RydWUnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGVzIHRvIGEgc3BlY2lmaWMgcGFnZS5cbiAgICAgKiBAcGFyYW0gcGFnZSBUaGUgcGFnZSB0byBuYXZpZ2F0ZSB0by5cbiAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIG1vdXNlIGV2ZW50IChvcHRpb25hbCkuXG4gICAgICovXG4gICAgZ29Ub1BhZ2UocGFnZTogbnVtYmVyLCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChwYWdlID4gdGhpcy5fbGFzdFBhZ2UgfHwgcGFnZSA8IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlZnJlc2hQYWdlcygpO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNDdXJyZW50UGFnZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlU3RhcnQuZW1pdChwYWdlKTtcblxuICAgICAgICB0aGlzLl9hbm5vdW5jZVBhZ2UocGFnZSk7XG4gICAgfVxuXG4gICAgLyoqIE5hdmlnYXRlcyB0byB0aGUgZmlyc3QgcGFnZSAqL1xuICAgIGdvVG9GaXJzdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ29Ub1BhZ2UoMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGVzIHRvIGEgcHJldmlvdXMgcGFnZS5cbiAgICAgKi9cbiAgICBwcmV2aW91c1BhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ29Ub1BhZ2UodGhpcy5jdXJyZW50UGFnZSAtIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byB0aGUgbmV4dCBwYWdlLlxuICAgICAqL1xuICAgIG5leHRQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKHRoaXMuY3VycmVudFBhZ2UgKyAxKTtcbiAgICB9XG5cbiAgICAvKiogTmF2aWdhdGVzIHRvIHRoZSBsYXN0IHBhZ2UgKi9cbiAgICBnb1RvTGFzdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ29Ub1BhZ2UodGhpcy5fbGFzdFBhZ2UpO1xuICAgIH1cblxuICAgIC8qKiBAZGVwcmVjYXRlZCwgdXNlIHtAbGluayBwYWdpbmF0aW9uT2JqZWN0fSBnZXR0ZXIgaW5zdGVhZCAqL1xuICAgIGdldFBhZ2luYXRpb25PYmplY3QoKTogUGFnaW5hdGlvbiB7XG4gICAgICAgIGNvbnNvbGUud2FybignUGFnaW5hdGlvbkNvbXBvbmVudDogZ2V0UGFnaW5hdGlvbk9iamVjdCgpIGlzIGRlcHJlY2F0ZWQsIHVzZSBwYWdpbmF0aW9uT2JqZWN0IGdldHRlciBpbnN0ZWFkJyk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25PYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25DaGFuZ2VQZXJQYWdlID0gKGV2ZW50OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBldmVudDtcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2VDaGFuZ2UuZW1pdCh0aGlzLml0ZW1zUGVyUGFnZSk7XG5cbiAgICAgICAgdGhpcy5fcmVmcmVzaFBhZ2VzKCk7XG5cbiAgICAgICAgY29uc3QgbWF4UGFnZSA9IHRoaXMuX3BhZ2VzW3RoaXMuX3BhZ2VzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA+IG1heFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZUNoYW5nZVN0YXJ0LmVtaXQobWF4UGFnZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVzdG9yZUlucHV0VmFsdWUobW9kZWw6IE5nTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgbW9kZWwucmVzZXQodGhpcy5jdXJyZW50UGFnZSk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hQYWdlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbiA9IHRoaXMucGFnaW5hdGlvbk9iamVjdDtcblxuICAgICAgICB0aGlzLl9wYWdlcyA9IHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZ2V0UGFnZXMocGFnaW5hdGlvbik7XG5cbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VJbmRleCA9IHRoaXMuX3BhZ2VzLmZpbmRJbmRleCgocGFnZSkgPT4gcGFnZSA9PT0gdGhpcy5jdXJyZW50UGFnZSk7XG5cbiAgICAgICAgdGhpcy5fcGFnZXNCZWZvcmVDdXJyZW50ID0gdGhpcy5fcGFnZXMuc2xpY2UoMCwgY3VycmVudFBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMuX3BhZ2VzQWZ0ZXJDdXJyZW50ID0gdGhpcy5fcGFnZXMuc2xpY2UoY3VycmVudFBhZ2VJbmRleCArIDEpO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zUGVyUGFnZSA9IHBhZ2luYXRpb24uaXRlbXNQZXJQYWdlID8/IERFRkFVTFRfSVRFTVNfUEVSX1BBR0U7XG5cbiAgICAgICAgdGhpcy5fY3VycmVudFNob3dpbmcgPSB7XG4gICAgICAgICAgICBmcm9tOiB0aGlzLmN1cnJlbnRQYWdlIC0gMSA9PT0gMCA/IDEgOiAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgMSxcbiAgICAgICAgICAgIHRvOiBNYXRoLm1pbigodGhpcy5jdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgaXRlbXNQZXJQYWdlLCB0aGlzLnRvdGFsSXRlbXMpLFxuICAgICAgICAgICAgb2Y6IHRoaXMudG90YWxJdGVtcyxcbiAgICAgICAgICAgIHRvdGFsQ291bnQ6IHRoaXMudG90YWxJdGVtc1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogRm9jdXMgY3VycmVudCBwYWdlIGxpbmsvaW5wdXQgdXNpbmcgRm9jdXNLZXlNYW5hZ2VyXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZvY3VzQ3VycmVudFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlTmF0aXZlRWxlbWVudCA9XG4gICAgICAgICAgICBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2N1cnJlbnRQYWdlRWxlbWVudC5uYXRpdmVFbGVtZW50KS5kaXNwbGF5ID09PSAnbm9uZSdcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3BhZ2VJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgIDogdGhpcy5fY3VycmVudFBhZ2VFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9mb2N1c0tleU1hbmFnZXJJdGVtc1xuICAgICAgICAgICAgLnRvQXJyYXkoKVxuICAgICAgICAgICAgLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbS5uYXRpdmVFbGVtZW50ID09PSBjdXJyZW50UGFnZU5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlckxpc3QuZm9jdXNJdGVtKGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBsaXN0IG9mIHBhZ2Ugc2l6ZSBvcHRpb25zIHRvIGRpc3BsYXkgdG8gdGhlIHVzZXIuIEluY2x1ZGVzIG1ha2luZyBzdXJlIHRoYXRcbiAgICAgKiB0aGUgcGFnZSBzaXplIGlzIGFuIG9wdGlvbiBhbmQgdGhhdCB0aGUgbGlzdCBpcyBzb3J0ZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICAvLyBJZiBubyBwYWdlIHNpemUgaXMgcHJvdmlkZWQsIHVzZSB0aGUgZmlyc3QgcGFnZSBzaXplIG9wdGlvbiBvciB0aGUgZGVmYXVsdCBwYWdlIHNpemUuXG4gICAgICAgIGlmICghdGhpcy5pdGVtc1BlclBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSA9IHRoaXMuaXRlbXNQZXJQYWdlT3B0aW9ucy5sZW5ndGggPyB0aGlzLml0ZW1zUGVyUGFnZU9wdGlvbnNbMF0gOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zID0gdGhpcy5pdGVtc1BlclBhZ2VPcHRpb25zPy5zbGljZSgpID8/IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLmluY2x1ZGVzKHRoaXMuaXRlbXNQZXJQYWdlKSkge1xuICAgICAgICAgICAgdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLnB1c2godGhpcy5pdGVtc1BlclBhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfYW5ub3VuY2VQYWdlKHBhZ2U6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgbGFiZWw6IHN0cmluZztcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2VBcmlhTGFiZWwpIHtcbiAgICAgICAgICAgIGxhYmVsID0gdGhpcy5jdXJyZW50UGFnZUFyaWFMYWJlbChwYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9sYW5ndWFnZSk7XG4gICAgICAgICAgICBsYWJlbCA9IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShsYW5nLCAnY29yZVBhZ2luYXRpb24uY3VycmVudFBhZ2VBcmlhTGFiZWwnLCB7XG4gICAgICAgICAgICAgICAgcGFnZU51bWJlcjogcGFnZSxcbiAgICAgICAgICAgICAgICB0b3RhbENvdW50OiB0aGlzLnRvdGFsSXRlbXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UobGFiZWwpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbEl0ZW1zXCI+XG4gICAgPGRpdiBjbGFzcz1cImZkLXBhZ2luYXRpb25fX3Blci1wYWdlXCIgKm5nSWY9XCJpdGVtc1BlclBhZ2VUZW1wbGF0ZSB8fCBpdGVtc1BlclBhZ2VPcHRpb25zPy5sZW5ndGhcIj5cbiAgICAgICAgPCEtLSBub3RlLCB0aGF0IHdlJ3JlIGNoZWNraW5nIGZvciB0aGUgbGVuZ3RoIG9mIFwiaXRlbXNQZXJQYWdlT3B0aW9uc1wiLCBidXQgdXNpbmcgXCJfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zXCIgYXMgXCJwYWdlT3B0aW9uc1wiIC0tPlxuICAgICAgICA8IS0tIHRoZXNlIDIgY2FuIGJlIGRpZmZlcmVudCwgYXMgXCJfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zXCIgbWF5IGFsc28gaW5jbHVkZSBcIml0ZW1zUGVyUGFnZVwiIGlmIGl0J3Mgbm90IGluY2x1ZGVkIGluIG9wdGlvbnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1zUGVyUGFnZVRlbXBsYXRlIHx8IHBlclBhZ2VcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb25TZWxlY3Q6IF9vbkNoYW5nZVBlclBhZ2UsIHBhZ2VPcHRpb25zOiBfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmF2XG4gICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckxpc3RcbiAgICAgICAgb3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgW3NraXBQcmVkaWNhdGVdPVwic2tpcEl0ZW1QcmVkaWNhdGVcIlxuICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX25hdlwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24uYXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJkaXNwbGF5VG90YWxJdGVtcyA/IF90b3RhbFBhZ2VzRWxlbWVudElkIDogbnVsbFwiXG4gICAgICAgICpuZ0lmPVwidG90YWxJdGVtcyA+PSBpdGVtc1BlclBhZ2VcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBnbHlwaD1cIm1lZGlhLXJld2luZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaXJzdFBhZ2VcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJmaXJzdExhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24uZmlyc3RMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImZpcnN0TGFiZWwgfHwgKCdjb3JlUGFnaW5hdGlvbi5maXJzdExhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2J1dHRvbiBmZC1wYWdpbmF0aW9uX19idXR0b24tLW1vYmlsZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRmlyc3RQYWdlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvRmlyc3RQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9GaXJzdFBhZ2UoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiZ29Ub0ZpcnN0UGFnZSgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLWxlZnQtYXJyb3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwicHJldmlvdXNMYWJlbCB8fCAoJ2NvcmVQYWdpbmF0aW9uLnByZXZpb3VzTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJwcmV2aW91c0xhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24ucHJldmlvdXNMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1wYWdpbmF0aW9uX19idXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0ZpcnN0UGFnZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJwcmV2aW91c1BhZ2UoKVwiXG4gICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICA8IS0tIER1cGxpY2F0ZWQgdG8gcHJlc2VydmUgdGhlIGl0ZW1zIG9yZGVyIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIF9wYWdlc0JlZm9yZUN1cnJlbnRcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInBhZ2UgIT09IF9tb3JlRWxlbWVudFZhbHVlOyBlbHNlIG1vcmVcIlxuICAgICAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgcGFnZUxhYmVsID8gcGFnZUxhYmVsKHBhZ2UpIDogKCdjb3JlUGFnaW5hdGlvbi5wYWdlTGFiZWwnIHwgZmRUcmFuc2xhdGUgOiB7IHBhZ2VOdW1iZXI6IHBhZ2UgfSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgcGFnZUxhYmVsID8gcGFnZUxhYmVsKHBhZ2UpIDogKCdjb3JlUGFnaW5hdGlvbi5wYWdlTGFiZWwnIHwgZmRUcmFuc2xhdGUgOiB7IHBhZ2VOdW1iZXI6IHBhZ2UgfSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fbGlua1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2UpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZ29Ub1BhZ2UocGFnZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJnb1RvUGFnZShwYWdlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI2N1cnJlbnRQYWdlRWxlbWVudFxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIHBhZ2VMYWJlbFxuICAgICAgICAgICAgICAgICAgICA/IHBhZ2VMYWJlbChjdXJyZW50UGFnZSlcbiAgICAgICAgICAgICAgICAgICAgOiAoJ2NvcmVQYWdpbmF0aW9uLnBhZ2VMYWJlbCcgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2UgfSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xpbmsgaXMtYWN0aXZlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgY3VycmVudFBhZ2UgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZC1wYWdpbmF0aW9uX19sYWJlbFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBsYWJlbEJlZm9yZUlucHV0TW9iaWxlXG4gICAgICAgICAgICAgICAgICAgID8gbGFiZWxCZWZvcmVJbnB1dE1vYmlsZSArICc6J1xuICAgICAgICAgICAgICAgICAgICA6ICgnY29yZVBhZ2luYXRpb24ubGFiZWxCZWZvcmVJbnB1dE1vYmlsZScgfCBmZFRyYW5zbGF0ZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjcGFnZUlucHV0RWxlbWVudFxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICBmZGtPbmx5RGlnaXRzXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgc2l6ZT1cIjFcIlxuICAgICAgICAgICAgbWluPVwiMVwiXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFttYXhdPVwiX2xhc3RQYWdlXCJcbiAgICAgICAgICAgIFtzdGF0ZV09XCJjdXJyZW50UGFnZU1vZGVsLmludmFsaWQgPyAnZXJyb3InIDogbnVsbFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2lucHV0XCJcbiAgICAgICAgICAgICNjdXJyZW50UGFnZU1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJjdXJyZW50UGFnZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGlucHV0QXJpYUxhYmVsXG4gICAgICAgICAgICAgICAgICAgID8gaW5wdXRBcmlhTGFiZWwoY3VycmVudFBhZ2UsIF90b3RhbFBhZ2VzKVxuICAgICAgICAgICAgICAgICAgICA6ICgnY29yZVBhZ2luYXRpb24uaW5wdXRBcmlhTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2UsIHRvdGFsQ291bnQ6IF90b3RhbFBhZ2VzIH0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2VNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2VNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgICAgKGJsdXIpPVwiX3Jlc3RvcmVJbnB1dFZhbHVlKGN1cnJlbnRQYWdlTW9kZWwpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xhYmVsXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIGxhYmVsQWZ0ZXJJbnB1dE1vYmlsZVxuICAgICAgICAgICAgICAgICAgICA/IGxhYmVsQWZ0ZXJJbnB1dE1vYmlsZShfbGFzdFBhZ2UpXG4gICAgICAgICAgICAgICAgICAgIDogKCdjb3JlUGFnaW5hdGlvbi5sYWJlbEFmdGVySW5wdXRNb2JpbGUnXG4gICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2UsIHRvdGFsQ291bnQ6IF90b3RhbFBhZ2VzIH0pXG4gICAgICAgICAgICB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDwhLS0gRHVwbGljYXRlZCB0byBwcmVzZXJ2ZSB0aGUgaXRlbXMgb3JkZXIgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgX3BhZ2VzQWZ0ZXJDdXJyZW50XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlICE9PSBfbW9yZUVsZW1lbnRWYWx1ZTsgZWxzZSBtb3JlXCJcbiAgICAgICAgICAgICAgICBmZGtGb2N1c0tleU1hbmFnZXJJdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VMYWJlbCA/IHBhZ2VMYWJlbChwYWdlKSA6ICgnY29yZVBhZ2luYXRpb24ucGFnZUxhYmVsJyB8IGZkVHJhbnNsYXRlIDogeyBwYWdlTnVtYmVyOiBwYWdlIH0pXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VMYWJlbCA/IHBhZ2VMYWJlbChwYWdlKSA6ICgnY29yZVBhZ2luYXRpb24ucGFnZUxhYmVsJyB8IGZkVHJhbnNsYXRlIDogeyBwYWdlTnVtYmVyOiBwYWdlIH0pXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xpbmtcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdlKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9QYWdlKHBhZ2UsICRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiZ29Ub1BhZ2UocGFnZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLXJpZ2h0LWFycm93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwibmV4dExhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24ubmV4dExhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwibmV4dExhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24ubmV4dExhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2J1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzTGFzdFBhZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm5leHRQYWdlKClcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cIm5leHRQYWdlKClcIlxuICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBnbHlwaD1cIm1lZGlhLWZvcndhcmRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTGFzdFBhZ2VcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJsYXN0TGFiZWwgfHwgKCdjb3JlUGFnaW5hdGlvbi5sYXN0TGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJsYXN0TGFiZWwgfHwgKCdjb3JlUGFnaW5hdGlvbi5sYXN0TGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fYnV0dG9uIGZkLXBhZ2luYXRpb25fX2J1dHRvbi0tbW9iaWxlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNMYXN0UGFnZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub0xhc3RQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9MYXN0UGFnZSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJnb1RvTGFzdFBhZ2UoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L25hdj5cblxuICAgIDxzcGFuICpuZ0lmPVwiZGlzcGxheVRvdGFsSXRlbXNcIiBjbGFzcz1cImZkLXBhZ2luYXRpb25fX3RvdGFsXCIgW2F0dHIuaWRdPVwiX3RvdGFsUGFnZXNFbGVtZW50SWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGlzcGxheVRleHRUZW1wbGF0ZSB8fCB0b3RhbFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzaG93aW5nOiBfY3VycmVudFNob3dpbmcgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L3NwYW4+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNtb3JlPlxuICAgIDxzcGFuIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fbW9yZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGFyaWEtbGFiZWw9XCIuLi5cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0b3RhbCBsZXQtc2hvd2luZz1cInNob3dpbmdcIj5cbiAgICA8c3BhbiBmZC1mb3JtLWxhYmVsIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fdG90YWwtbGFiZWxcIj5cbiAgICAgICAge3sgJ2NvcmVQYWdpbmF0aW9uLnRvdGFsUmVzdWx0c0xhYmVsJyB8IGZkVHJhbnNsYXRlIDogX2N1cnJlbnRTaG93aW5nIH19XG4gICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwZXJQYWdlIGxldC1wYWdlT3B0aW9ucz1cInBhZ2VPcHRpb25zXCI+XG4gICAgPGxhYmVsIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZC1wYWdpbmF0aW9uX19wZXItcGFnZS1sYWJlbFwiPlxuICAgICAgICB7eyBpdGVtc1BlclBhZ2VMYWJlbCA/IGl0ZW1zUGVyUGFnZUxhYmVsICsgJzonIDogKCdjb3JlUGFnaW5hdGlvbi5pdGVtc1BlclBhZ2VMYWJlbCcgfCBmZFRyYW5zbGF0ZSkgfX1cbiAgICA8L2xhYmVsPlxuXG4gICAgPGZkLXNlbGVjdCBjbGFzcz1cImZkLXBhZ2luYXRpb25fX3Blci1wYWdlLXNlbGVjdFwiIFt2YWx1ZV09XCJpdGVtc1BlclBhZ2VcIiAodmFsdWVDaGFuZ2UpPVwiX29uQ2hhbmdlUGVyUGFnZSgkZXZlbnQpXCI+XG4gICAgICAgIDxsaSBmZC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwYWdlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb24gfX08L2xpPlxuICAgIDwvZmQtc2VsZWN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
500
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdoRSxPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUU1QixVQUFVLEVBQ1YsUUFBUSxFQUNYLE1BQU0sNEJBQTRCLENBQUM7QUFHcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBYyxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBRWhILGtFQUFrRTtBQUNsRSxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQVVsQyxJQUFJLGtCQUFr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QUtyRCxFQUFFO3NCQURELEtBQUs7Z0JBS0YsTUFBTTtzQkFEVCxLQUFLO2dCQVVOLFVBQVU7c0JBRFQsS0FBSztnQkFLRixXQUFXO3NCQURkLEtBQUs7Z0JBVUYsWUFBWTtzQkFEZixLQUFLO2dCQWlCTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBU0YsaUJBQWlCO3NCQURwQixLQUFLO2dCQWlCRixtQkFBbUI7c0JBRHRCLEtBQUs7Z0JBZ0JOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFRTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBU0YsVUFBVTtzQkFEYixLQUFLO2dCQW1CRixhQUFhO3NCQURoQixLQUFLO2dCQXFCRixTQUFTO3NCQURaLEtBQUs7Z0JBbUJGLFNBQVM7c0JBRFosS0FBSztnQkFtQkYsU0FBUztzQkFEWixLQUFLO2dCQW1CRixTQUFTO3NCQURaLEtBQUs7Z0JBbUJGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkF3QkYsc0JBQXNCO3NCQUR6QixLQUFLO2dCQXVCRixxQkFBcUI7c0JBRHhCLEtBQUs7Z0JBcUJGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBaUJOLGVBQWU7c0JBRGQsTUFBTTtnQkFLUCxrQkFBa0I7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXZlQW5ub3VuY2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VBcnJheSwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICAgIEZvY3VzS2V5TWFuYWdlckl0ZW1EaXJlY3RpdmUsXG4gICAgRm9jdXNLZXlNYW5hZ2VyTGlzdERpcmVjdGl2ZSxcbiAgICBOdWxsYWJsZSxcbiAgICBSdGxTZXJ2aWNlLFxuICAgIHdhcm5PbmNlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuaW1wb3J0IHsgUGFnaW5hdGlvbiB9IGZyb20gJy4vcGFnaW5hdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4vcGFnaW5hdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZEX0xBTkdVQUdFLCBGZExhbmd1YWdlLCBUcmFuc2xhdGlvblJlc29sdmVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcblxuLyoqIENvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgZGVmYXVsdCBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UuICovXG5jb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gMTA7XG5cbmludGVyZmFjZSBDdXJyZW50U2hvd2luZyB7XG4gICAgZnJvbTogbnVtYmVyO1xuICAgIHRvOiBudW1iZXI7XG4gICAgdG90YWxDb3VudDogbnVtYmVyO1xuICAgIC8qKiBAZGVwcmVjYXRlZCBoYXMgYmVlbiByZW5hbWVkIHRvIFwidG90YWxDb3VudFwiICovXG4gICAgb2Y6IG51bWJlcjtcbn1cblxubGV0IHBhZ2luYXRpb25VbmlxdWVJZCA9IDA7XG5cbi8qKlxuICogVGhlIGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gcHJvdmlkZSBuYXZpZ2F0aW9uIGJldHdlZW4gcGFnZWQgaW5mb3JtYXRpb24uXG4gKiBgYGBodG1sXG4gKiA8ZmQtcGFnaW5hdGlvblxuICogICAgICAgICAgW3RvdGFsSXRlbXNdPVwiNTBcIlxuICogICAgICAgICAgW2l0ZW1zUGVyUGFnZV09XCIxMFwiXG4gKiAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiM1wiPlxuICogPC9mZC1wYWdpbmF0aW9uPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtcGFnaW5hdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1BhZ2luYXRpb25TZXJ2aWNlLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKCldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1wYWdpbmF0aW9uJyxcbiAgICAgICAgJ1tjbGFzcy5mZC1wYWdpbmF0aW9uLS1tb2JpbGVdJzogJ21vYmlsZScsXG4gICAgICAgICdbY2xhc3MuZmQtcGFnaW5hdGlvbi0tc2hvcnRdJzogJ19sYXN0UGFnZSA8PSA5J1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKEZvY3VzS2V5TWFuYWdlckxpc3REaXJlY3RpdmUpXG4gICAgcmVhZG9ubHkgX2ZvY3VzS2V5TWFuYWdlckxpc3Q6IEZvY3VzS2V5TWFuYWdlckxpc3REaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oRm9jdXNLZXlNYW5hZ2VySXRlbURpcmVjdGl2ZSlcbiAgICByZWFkb25seSBfZm9jdXNLZXlNYW5hZ2VySXRlbXM6IFF1ZXJ5TGlzdDxGb2N1c0tleU1hbmFnZXJJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgncGFnZUlucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHJlYWRvbmx5IF9wYWdlSW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjdXJyZW50UGFnZUVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICByZWFkb25seSBfY3VycmVudFBhZ2VFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIElkIGZvciB0aGUgcGFnaW5hdGlvbiBjb21wb25lbnQuIElmIG9taXR0ZWQsIGEgdW5pcXVlIG9uZSBpcyBnZW5lcmF0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJ2ZkLXBhZ2luYXRpb24tJyArIHBhZ2luYXRpb25VbmlxdWVJZCsrO1xuXG4gICAgLyoqIFdoZXRoZXIgY29tcG9uZW50IHNob3VsZCBiZSBzaG93biBpbiB0aGUgbW9iaWxlIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbW9iaWxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fbW9iaWxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IG1vYmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vYmlsZTtcbiAgICB9XG5cbiAgICAvKiogUmVwcmVzZW50cyB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG90YWxJdGVtczogbnVtYmVyO1xuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY3VycmVudFBhZ2UodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9jdXJyZW50UGFnZSA9IE1hdGguZmxvb3IoY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIDEpKTtcbiAgICB9XG4gICAgZ2V0IGN1cnJlbnRQYWdlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZTtcbiAgICB9XG5cbiAgICAvKiogUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zUGVyUGFnZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gTWF0aC5mbG9vcihjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgREVGQVVMVF9JVEVNU19QRVJfUEFHRSkpO1xuXG4gICAgICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSA9IE1hdGgubWF4KHZhbHVlLCAxKTtcblxuICAgICAgICB0aGlzLl91cGRhdGVEaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMoKTtcbiAgICB9XG4gICAgZ2V0IGl0ZW1zUGVyUGFnZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNQZXJQYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXN0b20gdGVtcGxhdGUgc2hvdyByYW5nZSBvZiBpdGVtIGJ5IGN1cnJlbnQgcGFnZSBvZiBpdGVtcy5cbiAgICAgKiBJdCBoYXMgaGlnaGVyIHByaW9yaXR5IHRoYW4gYGl0ZW1zUGVyUGFnZU9wdGlvbnNgIHByb3BlcnR5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXRlbXNQZXJQYWdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIExhYmVsIGZvciBvcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS5cbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IHJlYWRpbmcgaW4gdGhlIHJpZ2h0IGxhbmd1YWdlIGZvciBzY3JlZW4gcmVhZGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zUGVyUGFnZUxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGl0ZW1zUGVyUGFnZUxhYmVsIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVBhZ2luYXRpb24uaXRlbXNQZXJQYWdlTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2l0ZW1zUGVyUGFnZUxhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGl0ZW1zUGVyUGFnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2VMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2l0ZW1zUGVyUGFnZUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogUmVwcmVzZW50cyB0aGUgb3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgaXRlbXNQZXJQYWdlT3B0aW9ucyh2YWx1ZTogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5faXRlbXNQZXJQYWdlT3B0aW9ucyA9IGNvZXJjZUFycmF5PG51bWJlcj4odmFsdWUpXG4gICAgICAgICAgICAubWFwKCh2KSA9PiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCAwKSlcbiAgICAgICAgICAgIC5tYXAoKHYpID0+IE1hdGguZmxvb3IodikpXG4gICAgICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ID4gMClcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCk7XG4gICAgfVxuICAgIGdldCBpdGVtc1BlclBhZ2VPcHRpb25zKCk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZU9wdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVRvdGFsSXRlbXMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIHNob3cgcmFuZ2Ugb2YgaXRlbSBieSBjdXJyZW50IHBhZ2Ugb2YgaXRlbXMuXG4gICAgICogRGVmYXVsdCB2aWV3OiBTaG93aW5nIHt7IGZyb20gfX0te3sgdG8gfX0gb2Yge3sgb2YgfX1cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlUZXh0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIExhYmVsIGZvciB0aGUgJ2ZpcnN0JyBwYWdlIGJ1dHRvbi5cbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IHJlYWRpbmcgaW4gdGhlIHJpZ2h0IGxhbmd1YWdlIGZvciBzY3JlZW4gcmVhZGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpcnN0TGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICB3YXJuT25jZShcIlByb3BlcnR5IGZpcnN0TGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5maXJzdExhYmVsJyBrZXkgaW5zdGVhZC5cIik7XG4gICAgICAgIHRoaXMuX2ZpcnN0TGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZmlyc3RMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3RMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZpcnN0TGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTGFiZWwgZm9yIHRoZSAncHJldmlvdXMnIHBhZ2UgYnV0dG9uLlxuICAgICAqIFRoaXMgcHJvcGVydHkgaXMgbWFpbmx5IHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVhZGluZyBpbiB0aGUgcmlnaHQgbGFuZ3VhZ2UgZm9yIHNjcmVlbiByZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcHJldmlvdXNMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgXCJQcm9wZXJ0eSBwcmV2aW91c0xhYmVsIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVBhZ2luYXRpb24ucHJldmlvdXNMYWJlbCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNMYWJlbCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBwcmV2aW91c0xhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmV2aW91c0xhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBMYWJlbCBmb3IgdGhlICduZXh0JyBwYWdlIGJ1dHRvbi5cbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IHJlYWRpbmcgaW4gdGhlIHJpZ2h0IGxhbmd1YWdlIGZvciBzY3JlZW4gcmVhZGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG5leHRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIlByb3BlcnR5IG5leHRMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVQYWdpbmF0aW9uLm5leHRMYWJlbCcga2V5IGluc3RlYWQuXCIpO1xuICAgICAgICB0aGlzLl9uZXh0TGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgbmV4dExhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uZXh0TGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9uZXh0TGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTGFiZWwgZm9yIHRoZSAnbGFzdCcgcGFnZSBidXR0b24uXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBtYWlubHkgcHJvdmlkZWQgdG8gc3VwcG9ydCByZWFkaW5nIGluIHRoZSByaWdodCBsYW5ndWFnZSBmb3Igc2NyZWVuIHJlYWRlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBsYXN0TGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJQcm9wZXJ0eSBsYXN0TGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5sYXN0TGFiZWwnIGtleSBpbnN0ZWFkLlwiKTtcbiAgICAgICAgdGhpcy5fbGFzdExhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGxhc3RMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdExhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGFzdExhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIEFyaWEgbGFiZWwgZm9yIHRoZSBuYXZpZ2F0aW9uIGVsZW1lbnRcbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IHJlYWRpbmcgaW4gdGhlIHJpZ2h0IGxhbmd1YWdlIGZvciBzY3JlZW4gcmVhZGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGFyaWFMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIlByb3BlcnR5IGFyaWFMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVQYWdpbmF0aW9uLmFyaWFMYWJlbCcga2V5IGluc3RlYWQuXCIpO1xuICAgICAgICB0aGlzLl9hcmlhTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgYXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcmlhTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTGFiZWwgZm9yIHRoZSAnUGFnZSAnIHBhZ2UgYnV0dG9uLiBQYWdlIG51bWJlciBwYXNzZWQgYXMgZnVuY3Rpb24gcGFyYW1ldGVyLlxuICAgICAqIFRoaXMgcHJvcGVydHkgaXMgbWFpbmx5IHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVhZGluZyBpbiB0aGUgcmlnaHQgbGFuZ3VhZ2UgZm9yIHNjcmVlbiByZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcGFnZUxhYmVsKHZhbHVlOiBOdWxsYWJsZTwocGFnZTogbnVtYmVyKSA9PiBzdHJpbmc+KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIlByb3BlcnR5IHBhZ2VMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVQYWdpbmF0aW9uLnBhZ2VMYWJlbCcga2V5IGluc3RlYWQuXCIpO1xuICAgICAgICB0aGlzLl9wYWdlTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgcGFnZUxhYmVsKCk6IE51bGxhYmxlPChwYWdlOiBudW1iZXIpID0+IHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnZUxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcGFnZUxhYmVsOiBOdWxsYWJsZTwocGFnZTogbnVtYmVyKSA9PiBzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBGdW5jdGlvbiB0byBjcmVhdGUgY3VycmVudCBwYWdlIGFyaWEgbGFiZWwsIGN1cnJlbnQgcGFnZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIgb2YgdGhlIGZ1bmN0aW9uXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBtYWlubHkgcHJvdmlkZWQgdG8gc3VwcG9ydCByZWFkaW5nIGluIHRoZSByaWdodCBsYW5ndWFnZSBmb3Igc2NyZWVuIHJlYWRlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjdXJyZW50UGFnZUFyaWFMYWJlbCh2YWx1ZTogTnVsbGFibGU8KGN1cnJlbnRQYWdlOiBudW1iZXIpID0+IHN0cmluZz4pIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGN1cnJlbnRQYWdlQXJpYUxhYmVsIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVBhZ2luYXRpb24uY3VycmVudFBhZ2VBcmlhTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRQYWdlQXJpYUxhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRQYWdlQXJpYUxhYmVsKCk6IE51bGxhYmxlPChjdXJyZW50UGFnZTogbnVtYmVyKSA9PiBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlQXJpYUxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudFBhZ2VBcmlhTGFiZWw6IE51bGxhYmxlPChjdXJyZW50UGFnZTogbnVtYmVyKSA9PiBzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBQYWdlIGxhYmVsIHRvIGJlIHNob3duIGJlZm9yZSBjdXJyZW50IHBhZ2UgaW5wdXQgaW4gbW9iaWxlIG1vZGUuXG4gICAgICogSW4gY29uanVjdGlvbiB3aXRoIEBwYWdlTGFiZWxBZnRlcklucHV0TW9iaWxlIGdlbmVyYXRlcyB0aGUgbGFiZWwgZm9yIHRoZSBpbnB1dC5cbiAgICAgKiBFeGFtcGxlOiAnUGFnZScgKyBpbnB1dCArIHBhZ2VMYWJlbEFmdGVySW5wdXRNb2JpbGVcbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IGkxOG4uXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICBASW5wdXQoKVxuICAgIHNldCBsYWJlbEJlZm9yZUlucHV0TW9iaWxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGxhYmVsQmVmb3JlSW5wdXRNb2JpbGUgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5sYWJlbEJlZm9yZUlucHV0TW9iaWxlJyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9sYWJlbEJlZm9yZUlucHV0TW9iaWxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGxhYmVsQmVmb3JlSW5wdXRNb2JpbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsQmVmb3JlSW5wdXRNb2JpbGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sYWJlbEJlZm9yZUlucHV0TW9iaWxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFBhZ2UgbGFiZWwgdG8gYmUgc2hvd24gYWZ0ZXIgY3VycmVudCBwYWdlIGlucHV0IGluIG1vYmlsZSBtb2RlLiBQYWdlcyBjb3VudCBwYXNzZWQgYXMgdGhlIGZ1bmN0aW9uIHBhcmFtZXRlci5cbiAgICAgKiBJbiBjb25qdWN0aW9uIHdpdGggQHBhZ2VMYWJlbEJlZm9yZUlucHV0TW9iaWxlIGdlbmVyYXRlcyB0aGUgbGFiZWwgZm9yIHRoZSBpbnB1dC5cbiAgICAgKiBFeGFtcGxlOiBwYWdlTGFiZWxCZWZvcmVJbnB1dE1vYmlsZSArIGlucHV0ICsgJ29mIDUwMCcuXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBtYWlubHkgcHJvdmlkZWQgdG8gc3VwcG9ydCBpMThuLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxhYmVsQWZ0ZXJJbnB1dE1vYmlsZSh2YWx1ZTogTnVsbGFibGU8KHBhZ2VzQ291bnQ6IG51bWJlcikgPT4gc3RyaW5nPikge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgIFwiUHJvcGVydHkgbGFiZWxBZnRlcklucHV0TW9iaWxlIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVBhZ2luYXRpb24ubGFiZWxBZnRlcklucHV0TW9iaWxlJyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9sYWJlbEFmdGVySW5wdXRNb2JpbGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgbGFiZWxBZnRlcklucHV0TW9iaWxlKCk6IE51bGxhYmxlPChwYWdlc0NvdW50OiBudW1iZXIpID0+IHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxBZnRlcklucHV0TW9iaWxlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGFiZWxBZnRlcklucHV0TW9iaWxlOiBOdWxsYWJsZTwocGFnZXNDb3VudDogbnVtYmVyKSA9PiBzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBDdXJyZW50IHBhZ2UgaW5wdXQgYXJpYSBsYWJlbCwgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIChjdXJyZW50UGFnZTogbnVtYmVyLCBwYWdlc0NvdW50OiBudW1iZXIpLlxuICAgICAqIFRoaXMgcHJvcGVydHkgaXMgbWFpbmx5IHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVhZGluZyBpbiB0aGUgcmlnaHQgbGFuZ3VhZ2UgZm9yIHNjcmVlbiByZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgaW5wdXRBcmlhTGFiZWwodmFsdWU6IE51bGxhYmxlPChjdXJyZW50UGFnZTogbnVtYmVyLCBwYWdlc0NvdW50OiBudW1iZXIpID0+IHN0cmluZz4pIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGlucHV0QXJpYUxhYmVsIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVBhZ2luYXRpb24uaW5wdXRBcmlhTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2lucHV0QXJpYUxhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0QXJpYUxhYmVsKCk6IE51bGxhYmxlPChjdXJyZW50UGFnZTogbnVtYmVyLCBwYWdlc0NvdW50OiBudW1iZXIpID0+IHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRBcmlhTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbnB1dEFyaWFMYWJlbDogTnVsbGFibGU8KGN1cnJlbnRQYWdlOiBudW1iZXIsIHBhZ2VzQ291bnQ6IG51bWJlcikgPT4gc3RyaW5nPjtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBhZ2UgaXMgY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBwYWdlQ2hhbmdlU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gaXRlbXMgcGVyIHBhZ2Ugb3B0aW9uIGlzIGNoYW5nZWQuKi9cbiAgICBAT3V0cHV0KClcbiAgICBpdGVtc1BlclBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3BhZ2VzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGFnZXNCZWZvcmVDdXJyZW50OiBudW1iZXJbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3BhZ2VzQWZ0ZXJDdXJyZW50OiBudW1iZXJbXTtcblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBhbiBvYmplY3QgdGhhdCByZXByZXNlbnRzXG4gICAgICogdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcywgdGhlIGN1cnJlbnQgcGFnZSwgYW5kIHRoZSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UuXG4gICAgICovXG4gICAgZ2V0IHBhZ2luYXRpb25PYmplY3QoKTogUGFnaW5hdGlvbiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3RhbEl0ZW1zOiB0aGlzLnRvdGFsSXRlbXMsXG4gICAgICAgICAgICBjdXJyZW50UGFnZTogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfbGFzdFBhZ2UoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZ2V0VG90YWxQYWdlcyh0aGlzLnBhZ2luYXRpb25PYmplY3QpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzRmlyc3RQYWdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA9PT0gMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0xhc3RQYWdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA9PT0gdGhpcy5wYWdpbmF0aW9uU2VydmljZS5nZXRUb3RhbFBhZ2VzKHRoaXMucGFnaW5hdGlvbk9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3RvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZ2V0VG90YWxQYWdlcyh0aGlzLnBhZ2luYXRpb25PYmplY3QpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF90b3RhbFBhZ2VzRWxlbWVudElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJ19fdG90YWwnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9tb3JlRWxlbWVudFZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLm1vcmVFbGVtZW50VmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY3VycmVudFNob3dpbmc6IEN1cnJlbnRTaG93aW5nID0ge1xuICAgICAgICBmcm9tOiAwLFxuICAgICAgICB0bzogMCxcbiAgICAgICAgb2Y6IDAsXG4gICAgICAgIHRvdGFsQ291bnQ6IDBcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pdGVtc1BlclBhZ2U6IG51bWJlciA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pdGVtc1BlclBhZ2VPcHRpb25zOiBudW1iZXJbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudFBhZ2UgPSAxO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmFuc2xhdGlvblJlc29sdmVyID0gbmV3IFRyYW5zbGF0aW9uUmVzb2x2ZXIoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX2lzUnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZT8ucnRsLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnaW5hdGlvblNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9saXZlQW5ub3VuY2VyOiBMaXZlQW5ub3VuY2VyLFxuICAgICAgICBASW5qZWN0KEZEX0xBTkdVQUdFKSBwcml2YXRlIHJlYWRvbmx5IF9sYW5ndWFnZTogT2JzZXJ2YWJsZTxGZExhbmd1YWdlPixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXM/LmN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gY2hhbmdlcy5jdXJyZW50UGFnZS5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRQYWdlIHx8IHRoaXMuY3VycmVudFBhZ2UgPCAxKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPSB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmdldFRvdGFsUGFnZXModGhpcy5wYWdpbmF0aW9uT2JqZWN0KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlID4gdG90YWxQYWdlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0b3RhbFBhZ2VzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3JlZnJlc2hQYWdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fcmVmcmVzaFBhZ2VzKCkpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBza2lwSXRlbVByZWRpY2F0ZShpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGdldENvbXB1dGVkU3R5bGUoaXRlbS5uYXRpdmVFbGVtZW50KS5kaXNwbGF5ID09PSAnbm9uZScgfHxcbiAgICAgICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgPT09ICd0cnVlJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byBhIHNwZWNpZmljIHBhZ2UuXG4gICAgICogQHBhcmFtIHBhZ2UgVGhlIHBhZ2UgdG8gbmF2aWdhdGUgdG8uXG4gICAgICogQHBhcmFtIGV2ZW50IFRoZSBtb3VzZSBldmVudCAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIGdvVG9QYWdlKHBhZ2U6IG51bWJlciwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAocGFnZSA+IHRoaXMuX2xhc3RQYWdlIHx8IHBhZ2UgPCAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZWZyZXNoUGFnZXMoKTtcblxuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzQ3VycmVudFBhZ2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGFnZUNoYW5nZVN0YXJ0LmVtaXQocGFnZSk7XG5cbiAgICAgICAgdGhpcy5fYW5ub3VuY2VQYWdlKHBhZ2UpO1xuICAgIH1cblxuICAgIC8qKiBOYXZpZ2F0ZXMgdG8gdGhlIGZpcnN0IHBhZ2UgKi9cbiAgICBnb1RvRmlyc3RQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byBhIHByZXZpb3VzIHBhZ2UuXG4gICAgICovXG4gICAgcHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKHRoaXMuY3VycmVudFBhZ2UgLSAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIG5leHQgcGFnZS5cbiAgICAgKi9cbiAgICBuZXh0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFnZSh0aGlzLmN1cnJlbnRQYWdlICsgMSk7XG4gICAgfVxuXG4gICAgLyoqIE5hdmlnYXRlcyB0byB0aGUgbGFzdCBwYWdlICovXG4gICAgZ29Ub0xhc3RQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKHRoaXMuX2xhc3RQYWdlKTtcbiAgICB9XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQsIHVzZSB7QGxpbmsgcGFnaW5hdGlvbk9iamVjdH0gZ2V0dGVyIGluc3RlYWQgKi9cbiAgICBnZXRQYWdpbmF0aW9uT2JqZWN0KCk6IFBhZ2luYXRpb24ge1xuICAgICAgICB3YXJuT25jZSgnUGFnaW5hdGlvbkNvbXBvbmVudDogZ2V0UGFnaW5hdGlvbk9iamVjdCgpIGlzIGRlcHJlY2F0ZWQsIHVzZSBwYWdpbmF0aW9uT2JqZWN0IGdldHRlciBpbnN0ZWFkJyk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25PYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25DaGFuZ2VQZXJQYWdlID0gKGV2ZW50OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBldmVudDtcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2VDaGFuZ2UuZW1pdCh0aGlzLml0ZW1zUGVyUGFnZSk7XG5cbiAgICAgICAgdGhpcy5fcmVmcmVzaFBhZ2VzKCk7XG5cbiAgICAgICAgY29uc3QgbWF4UGFnZSA9IHRoaXMuX3BhZ2VzW3RoaXMuX3BhZ2VzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA+IG1heFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZUNoYW5nZVN0YXJ0LmVtaXQobWF4UGFnZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVzdG9yZUlucHV0VmFsdWUobW9kZWw6IE5nTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgbW9kZWwucmVzZXQodGhpcy5jdXJyZW50UGFnZSk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hQYWdlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbiA9IHRoaXMucGFnaW5hdGlvbk9iamVjdDtcblxuICAgICAgICB0aGlzLl9wYWdlcyA9IHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZ2V0UGFnZXMocGFnaW5hdGlvbik7XG5cbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VJbmRleCA9IHRoaXMuX3BhZ2VzLmZpbmRJbmRleCgocGFnZSkgPT4gcGFnZSA9PT0gdGhpcy5jdXJyZW50UGFnZSk7XG5cbiAgICAgICAgdGhpcy5fcGFnZXNCZWZvcmVDdXJyZW50ID0gdGhpcy5fcGFnZXMuc2xpY2UoMCwgY3VycmVudFBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMuX3BhZ2VzQWZ0ZXJDdXJyZW50ID0gdGhpcy5fcGFnZXMuc2xpY2UoY3VycmVudFBhZ2VJbmRleCArIDEpO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zUGVyUGFnZSA9IHBhZ2luYXRpb24uaXRlbXNQZXJQYWdlID8/IERFRkFVTFRfSVRFTVNfUEVSX1BBR0U7XG5cbiAgICAgICAgdGhpcy5fY3VycmVudFNob3dpbmcgPSB7XG4gICAgICAgICAgICBmcm9tOiB0aGlzLmN1cnJlbnRQYWdlIC0gMSA9PT0gMCA/IDEgOiAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgMSxcbiAgICAgICAgICAgIHRvOiBNYXRoLm1pbigodGhpcy5jdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgaXRlbXNQZXJQYWdlLCB0aGlzLnRvdGFsSXRlbXMpLFxuICAgICAgICAgICAgb2Y6IHRoaXMudG90YWxJdGVtcyxcbiAgICAgICAgICAgIHRvdGFsQ291bnQ6IHRoaXMudG90YWxJdGVtc1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogRm9jdXMgY3VycmVudCBwYWdlIGxpbmsvaW5wdXQgdXNpbmcgRm9jdXNLZXlNYW5hZ2VyXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZvY3VzQ3VycmVudFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlTmF0aXZlRWxlbWVudCA9XG4gICAgICAgICAgICBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2N1cnJlbnRQYWdlRWxlbWVudC5uYXRpdmVFbGVtZW50KS5kaXNwbGF5ID09PSAnbm9uZSdcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3BhZ2VJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgIDogdGhpcy5fY3VycmVudFBhZ2VFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9mb2N1c0tleU1hbmFnZXJJdGVtc1xuICAgICAgICAgICAgLnRvQXJyYXkoKVxuICAgICAgICAgICAgLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbS5uYXRpdmVFbGVtZW50ID09PSBjdXJyZW50UGFnZU5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlckxpc3QuZm9jdXNJdGVtKGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBsaXN0IG9mIHBhZ2Ugc2l6ZSBvcHRpb25zIHRvIGRpc3BsYXkgdG8gdGhlIHVzZXIuIEluY2x1ZGVzIG1ha2luZyBzdXJlIHRoYXRcbiAgICAgKiB0aGUgcGFnZSBzaXplIGlzIGFuIG9wdGlvbiBhbmQgdGhhdCB0aGUgbGlzdCBpcyBzb3J0ZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICAvLyBJZiBubyBwYWdlIHNpemUgaXMgcHJvdmlkZWQsIHVzZSB0aGUgZmlyc3QgcGFnZSBzaXplIG9wdGlvbiBvciB0aGUgZGVmYXVsdCBwYWdlIHNpemUuXG4gICAgICAgIGlmICghdGhpcy5pdGVtc1BlclBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSA9IHRoaXMuaXRlbXNQZXJQYWdlT3B0aW9ucy5sZW5ndGggPyB0aGlzLml0ZW1zUGVyUGFnZU9wdGlvbnNbMF0gOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zID0gdGhpcy5pdGVtc1BlclBhZ2VPcHRpb25zPy5zbGljZSgpID8/IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLmluY2x1ZGVzKHRoaXMuaXRlbXNQZXJQYWdlKSkge1xuICAgICAgICAgICAgdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLnB1c2godGhpcy5pdGVtc1BlclBhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfYW5ub3VuY2VQYWdlKHBhZ2U6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgbGFiZWw6IHN0cmluZztcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2VBcmlhTGFiZWwpIHtcbiAgICAgICAgICAgIGxhYmVsID0gdGhpcy5jdXJyZW50UGFnZUFyaWFMYWJlbChwYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9sYW5ndWFnZSk7XG4gICAgICAgICAgICBsYWJlbCA9IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShsYW5nLCAnY29yZVBhZ2luYXRpb24uY3VycmVudFBhZ2VBcmlhTGFiZWwnLCB7XG4gICAgICAgICAgICAgICAgcGFnZU51bWJlcjogcGFnZSxcbiAgICAgICAgICAgICAgICB0b3RhbENvdW50OiB0aGlzLnRvdGFsSXRlbXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UobGFiZWwpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbEl0ZW1zXCI+XG4gICAgPGRpdiBjbGFzcz1cImZkLXBhZ2luYXRpb25fX3Blci1wYWdlXCIgKm5nSWY9XCJpdGVtc1BlclBhZ2VUZW1wbGF0ZSB8fCBpdGVtc1BlclBhZ2VPcHRpb25zPy5sZW5ndGhcIj5cbiAgICAgICAgPCEtLSBub3RlLCB0aGF0IHdlJ3JlIGNoZWNraW5nIGZvciB0aGUgbGVuZ3RoIG9mIFwiaXRlbXNQZXJQYWdlT3B0aW9uc1wiLCBidXQgdXNpbmcgXCJfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zXCIgYXMgXCJwYWdlT3B0aW9uc1wiIC0tPlxuICAgICAgICA8IS0tIHRoZXNlIDIgY2FuIGJlIGRpZmZlcmVudCwgYXMgXCJfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zXCIgbWF5IGFsc28gaW5jbHVkZSBcIml0ZW1zUGVyUGFnZVwiIGlmIGl0J3Mgbm90IGluY2x1ZGVkIGluIG9wdGlvbnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1zUGVyUGFnZVRlbXBsYXRlIHx8IHBlclBhZ2VcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb25TZWxlY3Q6IF9vbkNoYW5nZVBlclBhZ2UsIHBhZ2VPcHRpb25zOiBfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmF2XG4gICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckxpc3RcbiAgICAgICAgb3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgW3NraXBQcmVkaWNhdGVdPVwic2tpcEl0ZW1QcmVkaWNhdGVcIlxuICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX25hdlwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24uYXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJkaXNwbGF5VG90YWxJdGVtcyA/IF90b3RhbFBhZ2VzRWxlbWVudElkIDogbnVsbFwiXG4gICAgICAgICpuZ0lmPVwidG90YWxJdGVtcyA+PSBpdGVtc1BlclBhZ2VcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBnbHlwaD1cIm1lZGlhLXJld2luZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaXJzdFBhZ2VcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJmaXJzdExhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24uZmlyc3RMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImZpcnN0TGFiZWwgfHwgKCdjb3JlUGFnaW5hdGlvbi5maXJzdExhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2J1dHRvbiBmZC1wYWdpbmF0aW9uX19idXR0b24tLW1vYmlsZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRmlyc3RQYWdlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvRmlyc3RQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9GaXJzdFBhZ2UoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiZ29Ub0ZpcnN0UGFnZSgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLWxlZnQtYXJyb3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwicHJldmlvdXNMYWJlbCB8fCAoJ2NvcmVQYWdpbmF0aW9uLnByZXZpb3VzTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJwcmV2aW91c0xhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24ucHJldmlvdXNMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1wYWdpbmF0aW9uX19idXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0ZpcnN0UGFnZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJwcmV2aW91c1BhZ2UoKVwiXG4gICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICA8IS0tIER1cGxpY2F0ZWQgdG8gcHJlc2VydmUgdGhlIGl0ZW1zIG9yZGVyIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIF9wYWdlc0JlZm9yZUN1cnJlbnRcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInBhZ2UgIT09IF9tb3JlRWxlbWVudFZhbHVlOyBlbHNlIG1vcmVcIlxuICAgICAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgcGFnZUxhYmVsID8gcGFnZUxhYmVsKHBhZ2UpIDogKCdjb3JlUGFnaW5hdGlvbi5wYWdlTGFiZWwnIHwgZmRUcmFuc2xhdGUgOiB7IHBhZ2VOdW1iZXI6IHBhZ2UgfSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgcGFnZUxhYmVsID8gcGFnZUxhYmVsKHBhZ2UpIDogKCdjb3JlUGFnaW5hdGlvbi5wYWdlTGFiZWwnIHwgZmRUcmFuc2xhdGUgOiB7IHBhZ2VOdW1iZXI6IHBhZ2UgfSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fbGlua1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2UpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZ29Ub1BhZ2UocGFnZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJnb1RvUGFnZShwYWdlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI2N1cnJlbnRQYWdlRWxlbWVudFxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIHBhZ2VMYWJlbFxuICAgICAgICAgICAgICAgICAgICA/IHBhZ2VMYWJlbChjdXJyZW50UGFnZSlcbiAgICAgICAgICAgICAgICAgICAgOiAoJ2NvcmVQYWdpbmF0aW9uLnBhZ2VMYWJlbCcgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2UgfSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xpbmsgaXMtYWN0aXZlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgY3VycmVudFBhZ2UgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZC1wYWdpbmF0aW9uX19sYWJlbFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBsYWJlbEJlZm9yZUlucHV0TW9iaWxlXG4gICAgICAgICAgICAgICAgICAgID8gbGFiZWxCZWZvcmVJbnB1dE1vYmlsZSArICc6J1xuICAgICAgICAgICAgICAgICAgICA6ICgnY29yZVBhZ2luYXRpb24ubGFiZWxCZWZvcmVJbnB1dE1vYmlsZScgfCBmZFRyYW5zbGF0ZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjcGFnZUlucHV0RWxlbWVudFxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICBmZGtPbmx5RGlnaXRzXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgc2l6ZT1cIjFcIlxuICAgICAgICAgICAgbWluPVwiMVwiXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFttYXhdPVwiX2xhc3RQYWdlXCJcbiAgICAgICAgICAgIFtzdGF0ZV09XCJjdXJyZW50UGFnZU1vZGVsLmludmFsaWQgPyAnZXJyb3InIDogbnVsbFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2lucHV0XCJcbiAgICAgICAgICAgICNjdXJyZW50UGFnZU1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJjdXJyZW50UGFnZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGlucHV0QXJpYUxhYmVsXG4gICAgICAgICAgICAgICAgICAgID8gaW5wdXRBcmlhTGFiZWwoY3VycmVudFBhZ2UsIF90b3RhbFBhZ2VzKVxuICAgICAgICAgICAgICAgICAgICA6ICgnY29yZVBhZ2luYXRpb24uaW5wdXRBcmlhTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2UsIHRvdGFsQ291bnQ6IF90b3RhbFBhZ2VzIH0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2VNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2VNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgICAgKGJsdXIpPVwiX3Jlc3RvcmVJbnB1dFZhbHVlKGN1cnJlbnRQYWdlTW9kZWwpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xhYmVsXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIGxhYmVsQWZ0ZXJJbnB1dE1vYmlsZVxuICAgICAgICAgICAgICAgICAgICA/IGxhYmVsQWZ0ZXJJbnB1dE1vYmlsZShfbGFzdFBhZ2UpXG4gICAgICAgICAgICAgICAgICAgIDogKCdjb3JlUGFnaW5hdGlvbi5sYWJlbEFmdGVySW5wdXRNb2JpbGUnXG4gICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2UsIHRvdGFsQ291bnQ6IF90b3RhbFBhZ2VzIH0pXG4gICAgICAgICAgICB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDwhLS0gRHVwbGljYXRlZCB0byBwcmVzZXJ2ZSB0aGUgaXRlbXMgb3JkZXIgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgX3BhZ2VzQWZ0ZXJDdXJyZW50XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlICE9PSBfbW9yZUVsZW1lbnRWYWx1ZTsgZWxzZSBtb3JlXCJcbiAgICAgICAgICAgICAgICBmZGtGb2N1c0tleU1hbmFnZXJJdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VMYWJlbCA/IHBhZ2VMYWJlbChwYWdlKSA6ICgnY29yZVBhZ2luYXRpb24ucGFnZUxhYmVsJyB8IGZkVHJhbnNsYXRlIDogeyBwYWdlTnVtYmVyOiBwYWdlIH0pXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VMYWJlbCA/IHBhZ2VMYWJlbChwYWdlKSA6ICgnY29yZVBhZ2luYXRpb24ucGFnZUxhYmVsJyB8IGZkVHJhbnNsYXRlIDogeyBwYWdlTnVtYmVyOiBwYWdlIH0pXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xpbmtcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdlKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9QYWdlKHBhZ2UsICRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiZ29Ub1BhZ2UocGFnZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLXJpZ2h0LWFycm93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwibmV4dExhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24ubmV4dExhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwibmV4dExhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24ubmV4dExhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2J1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzTGFzdFBhZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm5leHRQYWdlKClcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cIm5leHRQYWdlKClcIlxuICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBnbHlwaD1cIm1lZGlhLWZvcndhcmRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTGFzdFBhZ2VcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJsYXN0TGFiZWwgfHwgKCdjb3JlUGFnaW5hdGlvbi5sYXN0TGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJsYXN0TGFiZWwgfHwgKCdjb3JlUGFnaW5hdGlvbi5sYXN0TGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fYnV0dG9uIGZkLXBhZ2luYXRpb25fX2J1dHRvbi0tbW9iaWxlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNMYXN0UGFnZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub0xhc3RQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9MYXN0UGFnZSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJnb1RvTGFzdFBhZ2UoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L25hdj5cblxuICAgIDxzcGFuICpuZ0lmPVwiZGlzcGxheVRvdGFsSXRlbXNcIiBjbGFzcz1cImZkLXBhZ2luYXRpb25fX3RvdGFsXCIgW2F0dHIuaWRdPVwiX3RvdGFsUGFnZXNFbGVtZW50SWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGlzcGxheVRleHRUZW1wbGF0ZSB8fCB0b3RhbFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzaG93aW5nOiBfY3VycmVudFNob3dpbmcgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L3NwYW4+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNtb3JlPlxuICAgIDxzcGFuIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fbW9yZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGFyaWEtbGFiZWw9XCIuLi5cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0b3RhbCBsZXQtc2hvd2luZz1cInNob3dpbmdcIj5cbiAgICA8c3BhbiBmZC1mb3JtLWxhYmVsIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fdG90YWwtbGFiZWxcIj5cbiAgICAgICAge3sgJ2NvcmVQYWdpbmF0aW9uLnRvdGFsUmVzdWx0c0xhYmVsJyB8IGZkVHJhbnNsYXRlIDogX2N1cnJlbnRTaG93aW5nIH19XG4gICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwZXJQYWdlIGxldC1wYWdlT3B0aW9ucz1cInBhZ2VPcHRpb25zXCI+XG4gICAgPGxhYmVsIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZC1wYWdpbmF0aW9uX19wZXItcGFnZS1sYWJlbFwiPlxuICAgICAgICB7eyBpdGVtc1BlclBhZ2VMYWJlbCA/IGl0ZW1zUGVyUGFnZUxhYmVsICsgJzonIDogKCdjb3JlUGFnaW5hdGlvbi5pdGVtc1BlclBhZ2VMYWJlbCcgfCBmZFRyYW5zbGF0ZSkgfX1cbiAgICA8L2xhYmVsPlxuXG4gICAgPGZkLXNlbGVjdCBjbGFzcz1cImZkLXBhZ2luYXRpb25fX3Blci1wYWdlLXNlbGVjdFwiIFt2YWx1ZV09XCJpdGVtc1BlclBhZ2VcIiAodmFsdWVDaGFuZ2UpPVwiX29uQ2hhbmdlUGVyUGFnZSgkZXZlbnQpXCI+XG4gICAgICAgIDxsaSBmZC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwYWdlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb24gfX08L2xpPlxuICAgIDwvZmQtc2VsZWN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Directive, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
|
2
|
+
import { warnOnce } from '@fundamental-ngx/cdk/utils';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export class BasePopoverClass {
|
|
4
5
|
constructor() {
|
|
@@ -104,7 +105,7 @@ export class BasePopoverClass {
|
|
|
104
105
|
}
|
|
105
106
|
/** @deprecated */
|
|
106
107
|
set options(value) {
|
|
107
|
-
|
|
108
|
+
warnOnce('Property options is deprecated. ');
|
|
108
109
|
this._options = value;
|
|
109
110
|
}
|
|
110
111
|
get options() {
|
|
@@ -112,7 +113,7 @@ export class BasePopoverClass {
|
|
|
112
113
|
}
|
|
113
114
|
/** @deprecated */
|
|
114
115
|
set addContainerClass(value) {
|
|
115
|
-
|
|
116
|
+
warnOnce('Property addContainerClass is deprecated. ');
|
|
116
117
|
this._addContainerClass = value;
|
|
117
118
|
}
|
|
118
119
|
get addContainerClass() {
|
|
@@ -120,7 +121,7 @@ export class BasePopoverClass {
|
|
|
120
121
|
}
|
|
121
122
|
/** @deprecated */
|
|
122
123
|
set additionalClasses(value) {
|
|
123
|
-
|
|
124
|
+
warnOnce('Property additionalClasses is deprecated. ');
|
|
124
125
|
this._additionalClasses = value;
|
|
125
126
|
}
|
|
126
127
|
get additionalClasses() {
|
|
@@ -185,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
185
186
|
}], isOpenChange: [{
|
|
186
187
|
type: Output
|
|
187
188
|
}] } });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wb3BvdmVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9wb3Zlci9iYXNlL2Jhc2UtcG9wb3Zlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNaEcsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVJLCtEQUErRDtRQUUvRCxzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFekIsdUNBQXVDO1FBR3ZDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsa0dBQWtHO1FBRWxHLGFBQVEsR0FBcUIsSUFBSSxDQUFDO1FBRWxDLGdEQUFnRDtRQUVoRCxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWYsc0VBQXNFO1FBRXRFLHdCQUFtQixHQUFrQixJQUFJLENBQUM7UUFFMUMsc0VBQXNFO1FBRXRFLDJCQUFzQixHQUFrQixJQUFJLENBQUM7UUFFN0MsdUVBQXVFO1FBRXZFLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUV4QiwyREFBMkQ7UUFFM0QscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCLHVDQUF1QztRQUV2QyxzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFekI7Ozs7O1dBS0c7UUFFSCxjQUFTLEdBQXFCLElBQUksQ0FBQztRQUVuQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0E2Qkc7UUFFSCxhQUFRLEdBQStCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakQsd0VBQXdFO1FBRXhFLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixvRkFBb0Y7UUFFcEYsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRTNCLGtEQUFrRDtRQUVsRCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQjs7O1dBR0c7UUFFSCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekI7Ozs7OztXQU1HO1FBRUgsbUJBQWMsR0FBMEIsSUFBSSxDQUFDO1FBRTdDOzs7OztXQUtHO1FBRUgsaUJBQVksR0FBK0IsSUFBSSxDQUFDO1FBRWhEOzs7OztXQUtHO1FBRUgsb0JBQWUsR0FBOEIsSUFBSSxDQUFDO1FBRWxELDJFQUEyRTtRQUUzRSxhQUFRLEdBQW1DLElBQUksQ0FBQztRQU1oRCxrRkFBa0Y7UUFFbEYsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFrQ3RCLG1FQUFtRTtRQUVuRSxpQkFBWSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBRWxFLDhDQUE4QztRQUM5QyxjQUFTLEdBQWtCLElBQUksQ0FBQztRQUVoQyx1Q0FBdUM7UUFDdkMsWUFBTyxHQUFrQixJQUFJLENBQUM7S0FVakM7SUFsREcsa0JBQWtCO0lBQ2xCLElBQ0ksT0FBTyxDQUFDLEtBQVU7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUNELGtCQUFrQjtJQUNsQixJQUNJLGlCQUFpQixDQUFDLEtBQVU7UUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFDSSxpQkFBaUIsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNuQyxDQUFDOzhHQXpLUSxnQkFBZ0I7a0dBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsU0FBUzs4QkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBTU4sUUFBUTtzQkFGUCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLG1DQUFtQztnQkFLaEQsUUFBUTtzQkFEUCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFLTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBS04sc0JBQXNCO3NCQURyQixLQUFLO2dCQUtOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFVTixTQUFTO3NCQURSLEtBQUs7Z0JBa0NOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFRTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFXTixjQUFjO3NCQURiLEtBQUs7Z0JBVU4sWUFBWTtzQkFEWCxLQUFLO2dCQVVOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFLRixPQUFPO3NCQURWLEtBQUs7Z0JBV0YsaUJBQWlCO3NCQURwQixLQUFLO2dCQVlGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFZTixZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBTY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFBsYWNlbWVudCwgUG9wb3ZlckZpbGxNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgQmFzZVBvcG92ZXJDbGFzcyB7XG4gICAgLyoqIFdoZXRoZXIgdG8gY2xvc2UgdGhlIHBvcG92ZXIgb24gcm91dGVyIG5hdmlnYXRpb24gc3RhcnQuICovXG4gICAgQElucHV0KClcbiAgICBjbG9zZU9uTmF2aWdhdGlvbiA9IHRydWU7XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBpcyBkaXNhYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtcG9wb3Zlci1jdXN0b20tLWRpc2FibGVkJylcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIE1heGltdW0gd2lkdGggb2YgcG9wb3ZlciBib2R5IGluIHB4LCBwcmV2ZW50cyBmcm9tIG92ZXJleHRlbmRpbmcgYm9keSBieSBgZmlsbENvbnRyb2xNb2RlYCAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1heFdpZHRoOiBOdWxsYWJsZTxudW1iZXI+ID0gbnVsbDtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBwb3BvdmVyIHNob3VsZCBoYXZlIGFuIGFycm93LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbm9BcnJvdyA9IHRydWU7XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBjb250YWluZXIgbmVlZHMgYW4gZXh0cmEgY2xhc3MgZm9yIHN0eWxpbmcuICovXG4gICAgQElucHV0KClcbiAgICBhZGRpdGlvbmFsQm9keUNsYXNzOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBwb3BvdmVyIGNvbnRhaW5lciBuZWVkcyBhbiBleHRyYSBjbGFzcyBmb3Igc3R5bGluZy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFkZGl0aW9uYWxUcmlnZ2VyQ2xhc3M6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgc2hvdWxkIGNsb3NlIHdoZW4gdGhlIGVzY2FwZSBrZXkgaXMgcHJlc3NlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlT25Fc2NhcGVLZXkgPSB0cnVlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gd3JhcCBjb250ZW50IHdpdGggZmQtc2Nyb2xsYmFyIGRpcmVjdGl2ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVTY3JvbGxiYXIgPSBmYWxzZTtcblxuICAgIC8qKiBTaG91bGQgZmQtc2Nyb2xsYmFyIGhhdmUgdGFiaW5kZXgqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiYmFibGVTY3JvbGxiYXIgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHBsYWNlbWVudCBvZiB0aGUgcG9wb3Zlci5cbiAgICAgKiBJdCBjYW4gYmUgb25lIG9mOlxuICAgICAqIHRvcCwgdG9wLXN0YXJ0LCB0b3AtZW5kLCBib3R0b20sIGJvdHRvbS1zdGFydCwgYm90dG9tLWVuZCxcbiAgICAgKiByaWdodCwgcmlnaHQtc3RhcnQsIHJpZ2h0LWVuZCwgbGVmdCwgbGVmdC1zdGFydCwgbGVmdC1lbmQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZW1lbnQ6IFBsYWNlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRyaWdnZXIgZXZlbnRzIHRoYXQgd2lsbCBvcGVuL2Nsb3NlIHRoZSBwb3BvdmVyLlxuICAgICAqIEFjY2VwdHMgYW55IFtIVE1MIERPTSBFdmVudHNdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvZG9tX29ial9ldmVudC5hc3ApIG9yIGEgY29uZmlnIG9iamVjdCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQuXG4gICAgICogVXNpbmcgdGhlIGNvbmZpZyBvYmplY3QgYWxsb3dzIHRvIHNwZWNpZnkgd2hldGhlciBhbiBldmVudCBzaG91bGQgYXBwbHkgYm90aCBmb3Igb3BlbiBhbmQgY2xvc2UgYWN0aW9ucyBvciBvbmx5IHNvbWUgb2YgdGhlbS5cbiAgICAgKlxuICAgICAqIElmIGFycmF5IG9mIHRyaWdnZXJzIGNvbnNpc3RzIG9ubHkgb2Ygb25lIGV2ZW50LCBpdCB3aWxsIGJlIHRyZWF0ZWQgYXQgYSB0b2dnbGUgZXZlbnQgKG9wZW4gYW5kIGNsb3NlKVxuICAgICAqIElmIGFycmF5IG9mIHRyaWdnZXIgY29uc2lzdHMgb2YgbW9yZSB0aGFuIG9uZSBldmVudCwgZWFjaCBvZGQgZXZlbnQgd2lsbCBiZSB0cmVhdGVkIGFzIGFuIG9wZW4gZXZlbnQgZm9yIHRoZSBwb3BvdmVyLFxuICAgICAqIGFuZCBlYWNoIGV2ZW4gZXZlbnQgd2lsbCBiZSB0cmVhdGVkIGFzIGNsb3NpbmcgZXZlbnQgZm9yIHRoZSBwb3BvdmVyLlxuICAgICAqXG4gICAgICogQ29uc2lkZXIgdGhlIGZvbGxvd2luZyB2YWx1ZSBmb3IgYHRyaWdnZXJzYDpcbiAgICAgKiBgYGBcbiAgICAgKiBbXG4gICAgICogICdjbGljaycgLy8gYmFzaWNhbGx5IGl0J3MgYW4gYWxpYXMgZm9yIFwieyB0cmlnZ2VyOiAnY2xpY2snLCBvcGVuQWN0aW9uOiB0cnVlLCBjbG9zZUFjdGlvbjogdHJ1ZSB9XCJcbiAgICAgKiBdXG4gICAgICogYGBgXG4gICAgICogYGBgXG4gICAgICogW1xuICAgICAqICAnbW91c2VlbnRlcicgLy8gU2hvcnRjdXQgZm9yIFwieyB0cmlnZ2VyOiAnbW91c2VlbnRlcicsIG9wZW5BY3Rpb246IHRydWUsIGNsb3NlQWN0aW9uOiBmYWxzZSB9XCIsIGFuZCB3aWxsIG9ubHkgb3BlbiB0aGUgcG9wb3Zlci5cbiAgICAgKiAgJ21vdXNlbGVhdmUnIC8vIFNob3J0Y3V0IGZvciBcInsgdHJpZ2dlcjogJ21vdXNlbGVhdmUnLCBvcGVuQWN0aW9uOiBmYWxzZSwgY2xvc2VBY3Rpb246IHRydWUgfVwiIGFuZCB3aWxsIG9ubHkgY2xvc2UgdGhlIHBvcG92ZXIuXG4gICAgICogXVxuICAgICAqIGBgYFxuICAgICAqIGBgYFxuICAgICAqIFtcbiAgICAgKiAgeyB0cmlnZ2VyOiAnbW91c2VlbnRlcicsIG9wZW5BY3Rpb246IHRydWUsIGNsb3NlQWN0aW9uOiB0cnVlIH0sIC8vIFwibW91c2VlbnRlclwiIHdpbGwgdG9nZ2xlIHRoZSBwb3BvdmVyLlxuICAgICAqICB7IHRyaWdnZXI6ICdtb3VzZWxlYXZlJywgb3BlbkFjdGlvbjogdHJ1ZSwgY2xvc2VBY3Rpb246IHRydWUgfSAvLyBcIm1vdXNlbGVhdmVcIiB3aWxsIHRvZ2dsZSB0aGUgcG9wb3Zlci5cbiAgICAgKiBdXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBbJ2NsaWNrJ11cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRyaWdnZXJzOiAoc3RyaW5nIHwgVHJpZ2dlckNvbmZpZylbXSA9IFsnY2xpY2snXTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBwb3BvdmVyIGlzIG9wZW4uIENhbiBiZSB1c2VkIHRocm91Z2ggdHdvLXdheSBiaW5kaW5nLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNPcGVuID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBzaG91bGQgY2xvc2Ugd2hlbiBhIGNsaWNrIGlzIG1hZGUgb3V0c2lkZSBpdHMgYm91bmRhcmllcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlT25PdXRzaWRlQ2xpY2sgPSB0cnVlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgc2hvdWxkIGJlIGZvY3VzVHJhcHBlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZvY3VzVHJhcHBlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcG9wb3ZlciBzaG91bGQgYXV0b21hdGljYWxseSBtb3ZlIGZvY3VzIGludG8gdGhlIHRyYXBwZWQgcmVnaW9uIHVwb25cbiAgICAgKiBpbml0aWFsaXphdGlvbiBhbmQgcmV0dXJuIGZvY3VzIHRvIHRoZSBwcmV2aW91cyBhY3RpdmVFbGVtZW50IHVwb24gZGVzdHJ1Y3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmb2N1c0F1dG9DYXB0dXJlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTY3JvbGwgc3RyYXRlZ3ksIHRoZXJlIGFyZSA0IGFjY2VwdGVkXG4gICAgICogLSBDbG9zZVNjcm9sbFN0cmF0ZWd5XG4gICAgICogLSBOb29wU2Nyb2xsU3RyYXRlZ3lcbiAgICAgKiAtIEJsb2NrU2Nyb2xsU3RyYXRlZ3lcbiAgICAgKiAtIFJlcG9zaXRpb25TY3JvbGxTdHJhdGVneSAoIGRlZmF1bHQgKVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIHBvc2l0aW9ucyBvcHRpb25zIGZvciBvdmVybGF5IGRlZmluZWQgYnkgYW5ndWxhciBDREsuXG4gICAgICogUG9zaXRpb25zIHdpbGwgYmUgdGFrZW4gaW4gb3JkZXIsIHNhbWUgbGlrZSBvbiBhcnJheS4gSWYgZmlyc3QgcG9zaXRpb24gcHJvdmlkZWQgZG9lc24ndCBmaXQgdG8gd2luZG93LFxuICAgICAqIGFub3RoZXIgd2lsbCBiZSB1c2VkXG4gICAgICogTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2Nkay9vdmVybGF5L2FwaVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2RrUG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQcmVzZXQgb3B0aW9ucyBmb3IgdGhlIHBvcG92ZXIgYm9keSB3aWR0aC5cbiAgICAgKiAqIGBhdC1sZWFzdGAgd2lsbCBhcHBseSBhIG1pbmltdW0gd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuXG4gICAgICogKiBgZXF1YWxgIHdpbGwgYXBwbHkgYSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC5cbiAgICAgKiAqIExlYXZlIGJsYW5rIGZvciBubyBlZmZlY3QuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaWxsQ29udHJvbE1vZGU6IE51bGxhYmxlPFBvcG92ZXJGaWxsTW9kZT4gPSBudWxsO1xuXG4gICAgLyoqIFRoZSBlbGVtZW50IHRvIHdoaWNoICB0aGUgb3ZlcmxheSBpcyBhdHRhY2hlZC4gQnkgZGVmYXVsdCBpdCBpcyBib2R5ICovXG4gICAgQElucHV0KClcbiAgICBhcHBlbmRUbzogTnVsbGFibGU8RWxlbWVudFJlZiB8IEVsZW1lbnQ+ID0gbnVsbDtcblxuICAgIC8qKiBQbGFjZW1lbnQgb2YgdGhlIHBvcG92ZXIgZWxlbWVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlbWVudENvbnRhaW5lcjogTnVsbGFibGU8RWxlbWVudFJlZiB8IEVsZW1lbnQ+O1xuXG4gICAgLyoqIFdoZXRoZXIgcG9zaXRpb24gc2hvdWxkbid0IGNoYW5nZSwgd2hlbiBwb3BvdmVyIGFwcHJvYWNoIHRoZSBjb3JuZXIgb2YgcGFnZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZml4ZWRQb3NpdGlvbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBkZXByZWNhdGVkICovXG4gICAgQElucHV0KClcbiAgICBzZXQgb3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUHJvcGVydHkgb3B0aW9ucyBpcyBkZXByZWNhdGVkLiAnKTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBvcHRpb25zKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICAgIH1cbiAgICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhZGRDb250YWluZXJDbGFzcyh2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUHJvcGVydHkgYWRkQ29udGFpbmVyQ2xhc3MgaXMgZGVwcmVjYXRlZC4gJyk7XG4gICAgICAgIHRoaXMuX2FkZENvbnRhaW5lckNsYXNzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGFkZENvbnRhaW5lckNsYXNzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDb250YWluZXJDbGFzcztcbiAgICB9XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhZGRpdGlvbmFsQ2xhc3Nlcyh2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUHJvcGVydHkgYWRkaXRpb25hbENsYXNzZXMgaXMgZGVwcmVjYXRlZC4gJyk7XG4gICAgICAgIHRoaXMuX2FkZGl0aW9uYWxDbGFzc2VzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGFkZGl0aW9uYWxDbGFzc2VzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRpdGlvbmFsQ2xhc3NlcztcbiAgICB9XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzdGF0ZSBvZiB0aGUgaXNPcGVuIHByb3BlcnR5IGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgaXNPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBBcmlhIHJvbGUgZm9yIHRoZSBwb3BvdmVyIGJvZHkuICovXG4gICAgX2JvZHlSb2xlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuIElEIGZvciB0aGUgcG9wb3ZlciBib2R5LiAqL1xuICAgIF9ib2R5SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hZGRDb250YWluZXJDbGFzcztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWRkaXRpb25hbENsYXNzZXM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29wdGlvbnM7XG59XG5cbi8qKlxuICogQ29uZmlnIGZvciB0aGUgdHJpZ2dlciBldmVudCwgd2hpY2ggYWxsb3dzIHRvIHNwZWNpZnlcbiAqIHdoZXRoZXIgYW4gZXZlbnQgc2hvdWxkIGFwcGx5IGJvdGggZm9yIG9wZW4gYW5kIGNsb3NlIGFjdGlvbnMgb3Igb25seSBzb21lIG9mIHRoZW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmlnZ2VyQ29uZmlnIHtcbiAgICB0cmlnZ2VyOiBzdHJpbmc7XG4gICAgb3BlbkFjdGlvbjogYm9vbGVhbjtcbiAgICBjbG9zZUFjdGlvbjogYm9vbGVhbjtcbiAgICBzdG9wUHJvcGFnYXRpb24/OiBib29sZWFuO1xufVxuIl19
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wb3BvdmVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9wb3Zlci9iYXNlL2Jhc2UtcG9wb3Zlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoRyxPQUFPLEVBQVksUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBR2hFLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFSSwrREFBK0Q7UUFFL0Qsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBRXpCLHVDQUF1QztRQUd2QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGtHQUFrRztRQUVsRyxhQUFRLEdBQXFCLElBQUksQ0FBQztRQUVsQyxnREFBZ0Q7UUFFaEQsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmLHNFQUFzRTtRQUV0RSx3QkFBbUIsR0FBa0IsSUFBSSxDQUFDO1FBRTFDLHNFQUFzRTtRQUV0RSwyQkFBc0IsR0FBa0IsSUFBSSxDQUFDO1FBRTdDLHVFQUF1RTtRQUV2RSxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFeEIsMkRBQTJEO1FBRTNELHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6Qix1Q0FBdUM7UUFFdkMsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBRXpCOzs7OztXQUtHO1FBRUgsY0FBUyxHQUFxQixJQUFJLENBQUM7UUFFbkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBNkJHO1FBRUgsYUFBUSxHQUErQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpELHdFQUF3RTtRQUV4RSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsb0ZBQW9GO1FBRXBGLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUUzQixrREFBa0Q7UUFFbEQsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckI7OztXQUdHO1FBRUgscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCOzs7Ozs7V0FNRztRQUVILG1CQUFjLEdBQTBCLElBQUksQ0FBQztRQUU3Qzs7Ozs7V0FLRztRQUVILGlCQUFZLEdBQStCLElBQUksQ0FBQztRQUVoRDs7Ozs7V0FLRztRQUVILG9CQUFlLEdBQThCLElBQUksQ0FBQztRQUVsRCwyRUFBMkU7UUFFM0UsYUFBUSxHQUFtQyxJQUFJLENBQUM7UUFNaEQsa0ZBQWtGO1FBRWxGLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBa0N0QixtRUFBbUU7UUFFbkUsaUJBQVksR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUVsRSw4Q0FBOEM7UUFDOUMsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFFaEMsdUNBQXVDO1FBQ3ZDLFlBQU8sR0FBa0IsSUFBSSxDQUFDO0tBVWpDO0lBbERHLGtCQUFrQjtJQUNsQixJQUNJLE9BQU8sQ0FBQyxLQUFVO1FBQ2xCLFFBQVEsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUNELGtCQUFrQjtJQUNsQixJQUNJLGlCQUFpQixDQUFDLEtBQVU7UUFDNUIsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUNJLGlCQUFpQixDQUFDLEtBQVU7UUFDNUIsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQzs4R0F6S1EsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFNBQVM7OEJBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQU1OLFFBQVE7c0JBRlAsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxtQ0FBbUM7Z0JBS2hELFFBQVE7c0JBRFAsS0FBSztnQkFLTixPQUFPO3NCQUROLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBVU4sU0FBUztzQkFEUixLQUFLO2dCQWtDTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sTUFBTTtzQkFETCxLQUFLO2dCQUtOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBUU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBV04sY0FBYztzQkFEYixLQUFLO2dCQVVOLFlBQVk7c0JBRFgsS0FBSztnQkFVTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS0YsT0FBTztzQkFEVixLQUFLO2dCQVdGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFZRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBWU4sWUFBWTtzQkFEWCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBQbGFjZW1lbnQsIFBvcG92ZXJGaWxsTW9kZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgTnVsbGFibGUsIHdhcm5PbmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBCYXNlUG9wb3ZlckNsYXNzIHtcbiAgICAvKiogV2hldGhlciB0byBjbG9zZSB0aGUgcG9wb3ZlciBvbiByb3V0ZXIgbmF2aWdhdGlvbiBzdGFydC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlT25OYXZpZ2F0aW9uID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBwb3BvdmVyIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1wb3BvdmVyLWN1c3RvbS0tZGlzYWJsZWQnKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogTWF4aW11bSB3aWR0aCBvZiBwb3BvdmVyIGJvZHkgaW4gcHgsIHByZXZlbnRzIGZyb20gb3ZlcmV4dGVuZGluZyBib2R5IGJ5IGBmaWxsQ29udHJvbE1vZGVgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4V2lkdGg6IE51bGxhYmxlPG51bWJlcj4gPSBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgc2hvdWxkIGhhdmUgYW4gYXJyb3cuICovXG4gICAgQElucHV0KClcbiAgICBub0Fycm93ID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBwb3BvdmVyIGNvbnRhaW5lciBuZWVkcyBhbiBleHRyYSBjbGFzcyBmb3Igc3R5bGluZy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFkZGl0aW9uYWxCb2R5Q2xhc3M6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgY29udGFpbmVyIG5lZWRzIGFuIGV4dHJhIGNsYXNzIGZvciBzdHlsaW5nLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWRkaXRpb25hbFRyaWdnZXJDbGFzczogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBzaG91bGQgY2xvc2Ugd2hlbiB0aGUgZXNjYXBlIGtleSBpcyBwcmVzc2VkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VPbkVzY2FwZUtleSA9IHRydWU7XG5cbiAgICAvKiogV2hldGhlciB0byB3cmFwIGNvbnRlbnQgd2l0aCBmZC1zY3JvbGxiYXIgZGlyZWN0aXZlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZVNjcm9sbGJhciA9IGZhbHNlO1xuXG4gICAgLyoqIFNob3VsZCBmZC1zY3JvbGxiYXIgaGF2ZSB0YWJpbmRleCovXG4gICAgQElucHV0KClcbiAgICB0YWJiYWJsZVNjcm9sbGJhciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyLlxuICAgICAqIEl0IGNhbiBiZSBvbmUgb2Y6XG4gICAgICogdG9wLCB0b3Atc3RhcnQsIHRvcC1lbmQsIGJvdHRvbSwgYm90dG9tLXN0YXJ0LCBib3R0b20tZW5kLFxuICAgICAqIHJpZ2h0LCByaWdodC1zdGFydCwgcmlnaHQtZW5kLCBsZWZ0LCBsZWZ0LXN0YXJ0LCBsZWZ0LWVuZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlbWVudDogUGxhY2VtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdHJpZ2dlciBldmVudHMgdGhhdCB3aWxsIG9wZW4vY2xvc2UgdGhlIHBvcG92ZXIuXG4gICAgICogQWNjZXB0cyBhbnkgW0hUTUwgRE9NIEV2ZW50c10oaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9qc3JlZi9kb21fb2JqX2V2ZW50LmFzcCkgb3IgYSBjb25maWcgb2JqZWN0IGZvciB0aGUgY29ycmVzcG9uZGluZyBldmVudC5cbiAgICAgKiBVc2luZyB0aGUgY29uZmlnIG9iamVjdCBhbGxvd3MgdG8gc3BlY2lmeSB3aGV0aGVyIGFuIGV2ZW50IHNob3VsZCBhcHBseSBib3RoIGZvciBvcGVuIGFuZCBjbG9zZSBhY3Rpb25zIG9yIG9ubHkgc29tZSBvZiB0aGVtLlxuICAgICAqXG4gICAgICogSWYgYXJyYXkgb2YgdHJpZ2dlcnMgY29uc2lzdHMgb25seSBvZiBvbmUgZXZlbnQsIGl0IHdpbGwgYmUgdHJlYXRlZCBhdCBhIHRvZ2dsZSBldmVudCAob3BlbiBhbmQgY2xvc2UpXG4gICAgICogSWYgYXJyYXkgb2YgdHJpZ2dlciBjb25zaXN0cyBvZiBtb3JlIHRoYW4gb25lIGV2ZW50LCBlYWNoIG9kZCBldmVudCB3aWxsIGJlIHRyZWF0ZWQgYXMgYW4gb3BlbiBldmVudCBmb3IgdGhlIHBvcG92ZXIsXG4gICAgICogYW5kIGVhY2ggZXZlbiBldmVudCB3aWxsIGJlIHRyZWF0ZWQgYXMgY2xvc2luZyBldmVudCBmb3IgdGhlIHBvcG92ZXIuXG4gICAgICpcbiAgICAgKiBDb25zaWRlciB0aGUgZm9sbG93aW5nIHZhbHVlIGZvciBgdHJpZ2dlcnNgOlxuICAgICAqIGBgYFxuICAgICAqIFtcbiAgICAgKiAgJ2NsaWNrJyAvLyBiYXNpY2FsbHkgaXQncyBhbiBhbGlhcyBmb3IgXCJ7IHRyaWdnZXI6ICdjbGljaycsIG9wZW5BY3Rpb246IHRydWUsIGNsb3NlQWN0aW9uOiB0cnVlIH1cIlxuICAgICAqIF1cbiAgICAgKiBgYGBcbiAgICAgKiBgYGBcbiAgICAgKiBbXG4gICAgICogICdtb3VzZWVudGVyJyAvLyBTaG9ydGN1dCBmb3IgXCJ7IHRyaWdnZXI6ICdtb3VzZWVudGVyJywgb3BlbkFjdGlvbjogdHJ1ZSwgY2xvc2VBY3Rpb246IGZhbHNlIH1cIiwgYW5kIHdpbGwgb25seSBvcGVuIHRoZSBwb3BvdmVyLlxuICAgICAqICAnbW91c2VsZWF2ZScgLy8gU2hvcnRjdXQgZm9yIFwieyB0cmlnZ2VyOiAnbW91c2VsZWF2ZScsIG9wZW5BY3Rpb246IGZhbHNlLCBjbG9zZUFjdGlvbjogdHJ1ZSB9XCIgYW5kIHdpbGwgb25seSBjbG9zZSB0aGUgcG9wb3Zlci5cbiAgICAgKiBdXG4gICAgICogYGBgXG4gICAgICogYGBgXG4gICAgICogW1xuICAgICAqICB7IHRyaWdnZXI6ICdtb3VzZWVudGVyJywgb3BlbkFjdGlvbjogdHJ1ZSwgY2xvc2VBY3Rpb246IHRydWUgfSwgLy8gXCJtb3VzZWVudGVyXCIgd2lsbCB0b2dnbGUgdGhlIHBvcG92ZXIuXG4gICAgICogIHsgdHJpZ2dlcjogJ21vdXNlbGVhdmUnLCBvcGVuQWN0aW9uOiB0cnVlLCBjbG9zZUFjdGlvbjogdHJ1ZSB9IC8vIFwibW91c2VsZWF2ZVwiIHdpbGwgdG9nZ2xlIHRoZSBwb3BvdmVyLlxuICAgICAqIF1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFsnY2xpY2snXVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJpZ2dlcnM6IChzdHJpbmcgfCBUcmlnZ2VyQ29uZmlnKVtdID0gWydjbGljayddO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgb3Blbi4gQ2FuIGJlIHVzZWQgdGhyb3VnaCB0d28td2F5IGJpbmRpbmcuICovXG4gICAgQElucHV0KClcbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBwb3BvdmVyIHNob3VsZCBjbG9zZSB3aGVuIGEgY2xpY2sgaXMgbWFkZSBvdXRzaWRlIGl0cyBib3VuZGFyaWVzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VPbk91dHNpZGVDbGljayA9IHRydWU7XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBzaG91bGQgYmUgZm9jdXNUcmFwcGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9jdXNUcmFwcGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBwb3BvdmVyIHNob3VsZCBhdXRvbWF0aWNhbGx5IG1vdmUgZm9jdXMgaW50byB0aGUgdHJhcHBlZCByZWdpb24gdXBvblxuICAgICAqIGluaXRpYWxpemF0aW9uIGFuZCByZXR1cm4gZm9jdXMgdG8gdGhlIHByZXZpb3VzIGFjdGl2ZUVsZW1lbnQgdXBvbiBkZXN0cnVjdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZvY3VzQXV0b0NhcHR1cmUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNjcm9sbCBzdHJhdGVneSwgdGhlcmUgYXJlIDQgYWNjZXB0ZWRcbiAgICAgKiAtIENsb3NlU2Nyb2xsU3RyYXRlZ3lcbiAgICAgKiAtIE5vb3BTY3JvbGxTdHJhdGVneVxuICAgICAqIC0gQmxvY2tTY3JvbGxTdHJhdGVneVxuICAgICAqIC0gUmVwb3NpdGlvblNjcm9sbFN0cmF0ZWd5ICggZGVmYXVsdCApXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzY3JvbGxTdHJhdGVneTogU2Nyb2xsU3RyYXRlZ3kgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgcG9zaXRpb25zIG9wdGlvbnMgZm9yIG92ZXJsYXkgZGVmaW5lZCBieSBhbmd1bGFyIENESy5cbiAgICAgKiBQb3NpdGlvbnMgd2lsbCBiZSB0YWtlbiBpbiBvcmRlciwgc2FtZSBsaWtlIG9uIGFycmF5LiBJZiBmaXJzdCBwb3NpdGlvbiBwcm92aWRlZCBkb2Vzbid0IGZpdCB0byB3aW5kb3csXG4gICAgICogYW5vdGhlciB3aWxsIGJlIHVzZWRcbiAgICAgKiBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vY2RrL292ZXJsYXkvYXBpXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjZGtQb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFByZXNldCBvcHRpb25zIGZvciB0aGUgcG9wb3ZlciBib2R5IHdpZHRoLlxuICAgICAqICogYGF0LWxlYXN0YCB3aWxsIGFwcGx5IGEgbWluaW11bSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC5cbiAgICAgKiAqIGBlcXVhbGAgd2lsbCBhcHBseSBhIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLlxuICAgICAqICogTGVhdmUgYmxhbmsgZm9yIG5vIGVmZmVjdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxDb250cm9sTW9kZTogTnVsbGFibGU8UG9wb3ZlckZpbGxNb2RlPiA9IG51bGw7XG5cbiAgICAvKiogVGhlIGVsZW1lbnQgdG8gd2hpY2ggIHRoZSBvdmVybGF5IGlzIGF0dGFjaGVkLiBCeSBkZWZhdWx0IGl0IGlzIGJvZHkgKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcGVuZFRvOiBOdWxsYWJsZTxFbGVtZW50UmVmIHwgRWxlbWVudD4gPSBudWxsO1xuXG4gICAgLyoqIFBsYWNlbWVudCBvZiB0aGUgcG9wb3ZlciBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGxhY2VtZW50Q29udGFpbmVyOiBOdWxsYWJsZTxFbGVtZW50UmVmIHwgRWxlbWVudD47XG5cbiAgICAvKiogV2hldGhlciBwb3NpdGlvbiBzaG91bGRuJ3QgY2hhbmdlLCB3aGVuIHBvcG92ZXIgYXBwcm9hY2ggdGhlIGNvcm5lciBvZiBwYWdlICovXG4gICAgQElucHV0KClcbiAgICBmaXhlZFBvc2l0aW9uID0gZmFsc2U7XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBvcHRpb25zKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgd2Fybk9uY2UoJ1Byb3BlcnR5IG9wdGlvbnMgaXMgZGVwcmVjYXRlZC4gJyk7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgb3B0aW9ucygpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgICB9XG4gICAgLyoqIEBkZXByZWNhdGVkICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYWRkQ29udGFpbmVyQ2xhc3ModmFsdWU6IGFueSkge1xuICAgICAgICB3YXJuT25jZSgnUHJvcGVydHkgYWRkQ29udGFpbmVyQ2xhc3MgaXMgZGVwcmVjYXRlZC4gJyk7XG4gICAgICAgIHRoaXMuX2FkZENvbnRhaW5lckNsYXNzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGFkZENvbnRhaW5lckNsYXNzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDb250YWluZXJDbGFzcztcbiAgICB9XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhZGRpdGlvbmFsQ2xhc3Nlcyh2YWx1ZTogYW55KSB7XG4gICAgICAgIHdhcm5PbmNlKCdQcm9wZXJ0eSBhZGRpdGlvbmFsQ2xhc3NlcyBpcyBkZXByZWNhdGVkLiAnKTtcbiAgICAgICAgdGhpcy5fYWRkaXRpb25hbENsYXNzZXMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgYWRkaXRpb25hbENsYXNzZXMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZGl0aW9uYWxDbGFzc2VzO1xuICAgIH1cblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHN0YXRlIG9mIHRoZSBpc09wZW4gcHJvcGVydHkgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpc09wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIEFyaWEgcm9sZSBmb3IgdGhlIHBvcG92ZXIgYm9keS4gKi9cbiAgICBfYm9keVJvbGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gSUQgZm9yIHRoZSBwb3BvdmVyIGJvZHkuICovXG4gICAgX2JvZHlJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FkZENvbnRhaW5lckNsYXNzO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hZGRpdGlvbmFsQ2xhc3NlcztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3B0aW9ucztcbn1cblxuLyoqXG4gKiBDb25maWcgZm9yIHRoZSB0cmlnZ2VyIGV2ZW50LCB3aGljaCBhbGxvd3MgdG8gc3BlY2lmeVxuICogd2hldGhlciBhbiBldmVudCBzaG91bGQgYXBwbHkgYm90aCBmb3Igb3BlbiBhbmQgY2xvc2UgYWN0aW9ucyBvciBvbmx5IHNvbWUgb2YgdGhlbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJDb25maWcge1xuICAgIHRyaWdnZXI6IHN0cmluZztcbiAgICBvcGVuQWN0aW9uOiBib29sZWFuO1xuICAgIGNsb3NlQWN0aW9uOiBib29sZWFuO1xuICAgIHN0b3BQcm9wYWdhdGlvbj86IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -12,6 +12,7 @@ import { POPOVER_COMPONENT } from './popover.interface';
|
|
|
12
12
|
import { PopoverMobileComponent } from './popover-mobile/popover-mobile.component';
|
|
13
13
|
import { PopoverMobileModule } from './popover-mobile/popover-mobile.module';
|
|
14
14
|
import { FD_POPOVER_COMPONENT } from './tokens';
|
|
15
|
+
import { warnOnce } from '@fundamental-ngx/core/utils';
|
|
15
16
|
import * as i0 from "@angular/core";
|
|
16
17
|
import * as i1 from "./popover-service/popover.service";
|
|
17
18
|
import * as i2 from "@fundamental-ngx/cdk/utils";
|
|
@@ -42,7 +43,7 @@ export class PopoverComponent extends BasePopoverClass {
|
|
|
42
43
|
* Left for backward compatibility
|
|
43
44
|
*/
|
|
44
45
|
set directiveRef(value) {
|
|
45
|
-
|
|
46
|
+
warnOnce('Property directiveRef is deprecated. ');
|
|
46
47
|
this._directiveRef = value;
|
|
47
48
|
}
|
|
48
49
|
get directiveRef() {
|
|
@@ -269,4 +270,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
269
270
|
type: HostListener,
|
|
270
271
|
args: ['keydown', ['$event']]
|
|
271
272
|
}] } });
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFeEYsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxN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REwsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSy9DLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS2xELGFBQWE7c0JBRFosU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBSzNCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBS2xDLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBS3JDLDBCQUEwQjtzQkFEekIsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBS2xDLDRCQUE0QjtzQkFEM0IsWUFBWTt1QkFBQyxzQkFBc0I7Z0JBeUNwQyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2RrT3ZlcmxheU9yaWdpbiwgQ29ubmVjdGVkUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBFTlRFUiwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50U2VydmljZSwgS2V5VXRpbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IE1vYmlsZU1vZGVDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbW9iaWxlLW1vZGUnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBCYXNlUG9wb3ZlckNsYXNzIH0gZnJvbSAnLi9iYXNlL2Jhc2UtcG9wb3Zlci5jbGFzcyc7XG5pbXBvcnQgeyBQb3BvdmVyQm9keUNvbXBvbmVudCB9IGZyb20gJy4vcG9wb3Zlci1ib2R5L3BvcG92ZXItYm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9wb3ZlclNlcnZpY2UgfSBmcm9tICcuL3BvcG92ZXItc2VydmljZS9wb3BvdmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXItY29udHJvbC9wb3BvdmVyLWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFBPUE9WRVJfQ09NUE9ORU5UIH0gZnJvbSAnLi9wb3BvdmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb3BvdmVyTW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyLW1vYmlsZS9wb3BvdmVyLW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9wb3Zlck1vYmlsZU1vZHVsZSB9IGZyb20gJy4vcG9wb3Zlci1tb2JpbGUvcG9wb3Zlci1tb2JpbGUubW9kdWxlJztcbmltcG9ydCB7IFBvcG92ZXJDaGlsZENvbnRlbnQgfSBmcm9tICcuL3BvcG92ZXItY2hpbGQtY29udGVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRkRfUE9QT1ZFUl9DT01QT05FTlQgfSBmcm9tICcuL3Rva2Vucyc7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RfQ0xBU1NfTkFNRVMgPSB7XG4gICAgc2VsZWN0Q29udHJvbDogJ2ZkLXNlbGVjdF9fY29udHJvbCdcbn07XG5cbmxldCBjZGtQb3BvdmVyVW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFRoZSBwb3BvdmVyIGlzIGEgd3JhcHBpbmcgY29tcG9uZW50IHRoYXQgYWNjZXB0cyBhICpjb250cm9sKiBhcyB3ZWxsIGFzIGEgKmJvZHkqLlxuICogVGhlIGNvbnRyb2wgaXMgd2hhdCB3aWxsIHRyaWdnZXIgdGhlIG9wZW5pbmcgb2YgdGhlIGFjdHVhbCBwb3BvdmVyLCB3aGljaCBpcyBjYWxsZWQgdGhlIGJvZHkuXG4gKiBCeSBkZWZhdWx0LCBwb3BvdmVycyBhcmUgdHJpZ2dlcmVkIGJ5IGNsaWNrLiBUaGlzIGNhbiBiZSBjdXN0b21pemVkIHRocm91Z2ggdGhlICp0cmlnZ2VycyogaW5wdXQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtcG9wb3ZlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFBvcG92ZXJTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9QT1BPVkVSX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBQb3BvdmVyQ29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLXBvcG92ZXItY3VzdG9tJyxcbiAgICAgICAgJ1tjbGFzcy5mZC1wb3BvdmVyLWN1c3RvbS0tbW9iaWxlXSc6ICdtb2JpbGUnLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudFxuICAgIGV4dGVuZHMgQmFzZVBvcG92ZXJDbGFzc1xuICAgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgICAvKiogVG9vbHRpcCBmb3IgcG9wb3ZlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBSZWZlcmVuY2UgdG8gcG9wb3ZlciB0cmlnZ2VyIGVsZW1lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0cmlnZ2VyKHRyaWdnZXI6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgaWYgKGVxdWFsKHRyaWdnZXIsIHRoaXMuX3RyaWdnZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdHJpZ2dlciA9IHRyaWdnZXI7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnVwZGF0ZVRyaWdnZXJFbGVtZW50KHRoaXMuX3RyaWdnZXIpO1xuICAgIH1cblxuICAgIGdldCB0cmlnZ2VyKCk6IEVsZW1lbnRSZWYge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHJpZ2dlcjtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciBwb3NpdGlvbiBzaG91bGRuJ3QgY2hhbmdlLCB3aGVuIHBvcG92ZXIgYXBwcm9hY2ggdGhlIGNvcm5lciBvZiBwYWdlICovXG4gICAgQElucHV0KClcbiAgICBmaXhlZFBvc2l0aW9uID0gZmFsc2U7XG5cbiAgICAvKiogSWQgb2YgdGhlIHBvcG92ZXIuIElmIG5vbmUgaXMgcHJvdmlkZWQsIG9uZSB3aWxsIGJlIGdlbmVyYXRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmcgPSAnZmQtcG9wb3Zlci0nICsgY2RrUG9wb3ZlclVuaXF1ZUlkKys7XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBjb21wb25lbnQgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBtb2JpbGUgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIENvbmZpZyBmb3IgdGhlIHBvcG92ZXIgaW4gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZyA9IHsgaGFzQ2xvc2VCdXR0b246IHRydWUgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndGVtcGxhdGVSZWYnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChDZGtPdmVybGF5T3JpZ2luKVxuICAgIHRyaWdnZXJPcmlnaW46IENka092ZXJsYXlPcmlnaW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoUG9wb3ZlckJvZHlDb21wb25lbnQpXG4gICAgcG9wb3ZlckJvZHk6IFBvcG92ZXJCb2R5Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFBvcG92ZXJDb250cm9sQ29tcG9uZW50KVxuICAgIHBvcG92ZXJDb250cm9sOiBQb3BvdmVyQ29udHJvbENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIC0gdGVtcGxhdGUgZm9yIERpYWxvZyBib2R5IGNvbnRlbnQgKi9cbiAgICBAQ29udGVudENoaWxkKCdwb3BvdmVyQm9keUNvbnRlbnQnKVxuICAgIHBvcG92ZXJCb2R5Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gLSB0ZW1wbGF0ZSBmb3IgRGlhbG9nIGZvb3RlciBjb250ZW50ICovXG4gICAgQENvbnRlbnRDaGlsZCgncG9wb3ZlckZvb3RlckNvbnRlbnQnKVxuICAgIHBvcG92ZXJGb290ZXJDb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGRlcHJlY2F0ZWRcbiAgICAgKiBMZWZ0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICovXG4gICAgc2V0IGRpcmVjdGl2ZVJlZih2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUHJvcGVydHkgZGlyZWN0aXZlUmVmIGlzIGRlcHJlY2F0ZWQuICcpO1xuICAgICAgICB0aGlzLl9kaXJlY3RpdmVSZWYgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZGlyZWN0aXZlUmVmKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXJlY3RpdmVSZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kaXJlY3RpdmVSZWY6IGFueTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJpZ2dlcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xpY2tFdmVudExpc3RlbmVyOiBudWxsIHwgKCgpID0+IHZvaWQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tb2JpbGVNb2RlQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8UG9wb3Zlck1vYmlsZUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9wb3BvdmVyU2VydmljZTogUG9wb3ZlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVkOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIC8vIHBvcG92ZXJDb250cm9sIHdpbGwgYmUgdW5kZWZpbmVkIHdoZW4gcG9wb3ZlciBpcyB1c2VkIGZyb20gXCJmZFBvcG92ZXJUcmlnZ2VyXCJcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlckNvbnRyb2w/LmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0gPT09IGFjdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQ/LnRhZ05hbWUgIT09ICdJTlBVVCcgJiZcbiAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQ/LnRhZ05hbWUgIT09ICdURVhUQVJFQScgJiZcbiAgICAgICAgICAgICFhY3RpdmVFbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnMoU0VMRUNUX0NMQVNTX05BTUVTLnNlbGVjdENvbnRyb2wpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbU1BBQ0UsIEVOVEVSXSkpIHtcbiAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IHBhZ2Ugc2Nyb2xsaW5nIG9uIFNwYWNlIGtleWRvd25cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnRvZ2dsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldHVwVmlldygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wb3BvdmVyQ29udHJvbCAmJiB0aGlzLnRyaWdnZXJzLmluY2x1ZGVzKCdjbGljaycpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJDb250cm9sLl90YWJiYWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UucmVmcmVzaENvbmZpZ3VyYXRpb24odGhpcyk7XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZGlzYWJsZVNjcm9sbGJhciAmJiB0aGlzLnBvcG92ZXJCb2R5ICYmIHRoaXMucG9wb3ZlckJvZHkuX3Njcm9sbGJhcikge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyQm9keS5fc2Nyb2xsYmFyLl9pblBvcG92ZXIgPSBjaGFuZ2VzLmRpc2FibGVTY3JvbGxiYXIuY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveU1vYmlsZUNvbXBvbmVudCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95RXZlbnRMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2Uub25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLyoqIFRvZ2dsZXMgbWVudSBvcGVuL2Nsb3NlIHN0YXRlICovXG4gICAgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBwb3BvdmVyLiAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLm9wZW4oKTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZXMgdGhlIHBvcG92ZXIuICovXG4gICAgY2xvc2UoZm9jdXNBY3RpdmVFbGVtZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5jbG9zZShmb2N1c0FjdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGNhbGxlZCB0byBjaGFuZ2UgcG9zaXRpb24gb2YgcG9wb3ZlcixcbiAgICAgKiByZWNvbW1lbmRlZCB0byBiZSB1c2VkIG9ubHkgd2hlbiBwb3BvdmVyIGlzIG9wZW5lZCwgb3RoZXJ3aXNlIGNoYW5nZSBwb3NpdGlvbiBvciBjZGtQbGFjZW1lbnRcbiAgICAgKi9cbiAgICBhcHBseU5ld1Bvc2l0aW9uKHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5hcHBseU5ld1Bvc2l0aW9uKHBvc2l0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqIEBkZXByZWNhdGVkXG4gICAgICogTGVmdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAqL1xuICAgIHVwZGF0ZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnNvbGUud2FybigndXBkYXRlUG9wb3ZlciBpcyBEZXByZWNhdGVkLCB1c2UgcmVmcmVzaFBvc2l0aW9uIGluc3RlYWQnKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGNhbGxlZCB0byByZWZyZXNoIHBvc2l0aW9uIG9mIG9wZW5lZCBwb3BvdmVyICovXG4gICAgcmVmcmVzaFBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5yZWZyZXNoUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlciBmb3IgYWx0ICsgYXJyb3cgZG93biBrZXlkb3duICovXG4gICAgdHJpZ2dlcktleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykgJiYgZXZlbnQuYWx0S2V5ICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNlbGVjdCBhbmQgaW5zdGFudGlhdGUgcG9wb3ZlciB2aWV3IG1vZGUgKi9cbiAgICBwcml2YXRlIF9zZXR1cFZpZXcoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLl9tb2JpbGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyQm9keSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnRlbXBsYXRlQ29udGVudCA9IHRoaXMudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5pbml0aWFsaXNlKFxuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlciB8fCB0aGlzLnRyaWdnZXJPcmlnaW4uZWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlckJvZHlcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLnRlbXBsYXRlUmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHRoaXMuY29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyQm9keTogdGhpcy5wb3BvdmVyQm9keVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0dXBNb2JpbGVNb2RlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE9wZW4gUG9wb3ZlciBpbiBtb2JpbGUgbW9kZSAqL1xuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwTW9iaWxlTW9kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBQT1BPVkVSX0NPTVBPTkVOVCwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLl9tb2JpbGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuX21vYmlsZU1vZGVDb21wb25lbnRSZWYgPSBhd2FpdCB0aGlzLl9keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVEeW5hbWljTW9kdWxlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvcG92ZXJCb2R5Q29udGVudFRlbXBsYXRlOiB0aGlzLnBvcG92ZXJCb2R5Q29udGVudFRlbXBsYXRlLFxuICAgICAgICAgICAgICAgIHBvcG92ZXJGb290ZXJDb250ZW50VGVtcGxhdGU6IHRoaXMucG9wb3ZlckZvb3RlckNvbnRlbnRUZW1wbGF0ZVxuICAgICAgICAgICAgfSBhcyBQb3BvdmVyQ2hpbGRDb250ZW50LFxuICAgICAgICAgICAgUG9wb3Zlck1vYmlsZU1vZHVsZSxcbiAgICAgICAgICAgIFBvcG92ZXJNb2JpbGVDb21wb25lbnQsXG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgaW5qZWN0b3JcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9saXN0ZW5PblRyaWdnZXJSZWZDbGlja3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAtIExpc3RlbiBvbiBwb3BvdmVyIHRyaWdnZXIgcmVmIGNsaWNrcyAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVHJpZ2dlclJlZkNsaWNrcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveUV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlciAmJiB0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fY2xpY2tFdmVudExpc3RlbmVyID0gdGhpcy5fcmVuZGVyZWQubGlzdGVuKHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB0aGlzLnRvZ2dsZSgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaGlzIGlzIGdvaW5nIHRvIGJlIHJlbW92ZWQgaW4gZmVhdHVyZSwgb24gZGlhbG9nIGFuZCBkeW5hbWljIHNlcnZpY2UgY29tcG9uZW50IHJlZmFjdG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2xpY2tFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9jbGlja0V2ZW50TGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuX2NsaWNrRXZlbnRMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3lNb2JpbGVDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9tb2JpbGVNb2RlQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9tb2JpbGVNb2RlQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAqbmdJZj1cIiF0cmlnZ2VyXCJcbiAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgY2xhc3M9XCJmZC1wb3BvdmVyX19jb250cm9sXCJcbiAgICBbY2xhc3NdPVwiYWRkaXRpb25hbFRyaWdnZXJDbGFzc1wiXG4gICAgKGtleWRvd24pPVwidHJpZ2dlcktleURvd25IYW5kbGVyKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXBvcG92ZXItY29udHJvbFwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlUmVmPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXBvcG92ZXItYm9keVwiPjwvbmctY29udGVudD5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250YWluZXIgI2NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
273
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFeEYsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxN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S04sRUFBRTtzQkFERCxLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSy9DLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS2xELGFBQWE7c0JBRFosU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBSzNCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBS2xDLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBS3JDLDBCQUEwQjtzQkFEekIsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBS2xDLDRCQUE0QjtzQkFEM0IsWUFBWTt1QkFBQyxzQkFBc0I7Z0JBeUNwQyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2RrT3ZlcmxheU9yaWdpbiwgQ29ubmVjdGVkUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBFTlRFUiwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50U2VydmljZSwgS2V5VXRpbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IE1vYmlsZU1vZGVDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbW9iaWxlLW1vZGUnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBCYXNlUG9wb3ZlckNsYXNzIH0gZnJvbSAnLi9iYXNlL2Jhc2UtcG9wb3Zlci5jbGFzcyc7XG5pbXBvcnQgeyBQb3BvdmVyQm9keUNvbXBvbmVudCB9IGZyb20gJy4vcG9wb3Zlci1ib2R5L3BvcG92ZXItYm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9wb3ZlclNlcnZpY2UgfSBmcm9tICcuL3BvcG92ZXItc2VydmljZS9wb3BvdmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXItY29udHJvbC9wb3BvdmVyLWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFBPUE9WRVJfQ09NUE9ORU5UIH0gZnJvbSAnLi9wb3BvdmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb3BvdmVyTW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyLW1vYmlsZS9wb3BvdmVyLW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9wb3Zlck1vYmlsZU1vZHVsZSB9IGZyb20gJy4vcG9wb3Zlci1tb2JpbGUvcG9wb3Zlci1tb2JpbGUubW9kdWxlJztcbmltcG9ydCB7IFBvcG92ZXJDaGlsZENvbnRlbnQgfSBmcm9tICcuL3BvcG92ZXItY2hpbGQtY29udGVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRkRfUE9QT1ZFUl9DT01QT05FTlQgfSBmcm9tICcuL3Rva2Vucyc7XG5pbXBvcnQgeyB3YXJuT25jZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RfQ0xBU1NfTkFNRVMgPSB7XG4gICAgc2VsZWN0Q29udHJvbDogJ2ZkLXNlbGVjdF9fY29udHJvbCdcbn07XG5cbmxldCBjZGtQb3BvdmVyVW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFRoZSBwb3BvdmVyIGlzIGEgd3JhcHBpbmcgY29tcG9uZW50IHRoYXQgYWNjZXB0cyBhICpjb250cm9sKiBhcyB3ZWxsIGFzIGEgKmJvZHkqLlxuICogVGhlIGNvbnRyb2wgaXMgd2hhdCB3aWxsIHRyaWdnZXIgdGhlIG9wZW5pbmcgb2YgdGhlIGFjdHVhbCBwb3BvdmVyLCB3aGljaCBpcyBjYWxsZWQgdGhlIGJvZHkuXG4gKiBCeSBkZWZhdWx0LCBwb3BvdmVycyBhcmUgdHJpZ2dlcmVkIGJ5IGNsaWNrLiBUaGlzIGNhbiBiZSBjdXN0b21pemVkIHRocm91Z2ggdGhlICp0cmlnZ2VycyogaW5wdXQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtcG9wb3ZlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFBvcG92ZXJTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9QT1BPVkVSX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBQb3BvdmVyQ29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLXBvcG92ZXItY3VzdG9tJyxcbiAgICAgICAgJ1tjbGFzcy5mZC1wb3BvdmVyLWN1c3RvbS0tbW9iaWxlXSc6ICdtb2JpbGUnLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudFxuICAgIGV4dGVuZHMgQmFzZVBvcG92ZXJDbGFzc1xuICAgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgICAvKiogVG9vbHRpcCBmb3IgcG9wb3ZlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBSZWZlcmVuY2UgdG8gcG9wb3ZlciB0cmlnZ2VyIGVsZW1lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0cmlnZ2VyKHRyaWdnZXI6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgaWYgKGVxdWFsKHRyaWdnZXIsIHRoaXMuX3RyaWdnZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdHJpZ2dlciA9IHRyaWdnZXI7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnVwZGF0ZVRyaWdnZXJFbGVtZW50KHRoaXMuX3RyaWdnZXIpO1xuICAgIH1cblxuICAgIGdldCB0cmlnZ2VyKCk6IEVsZW1lbnRSZWYge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHJpZ2dlcjtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciBwb3NpdGlvbiBzaG91bGRuJ3QgY2hhbmdlLCB3aGVuIHBvcG92ZXIgYXBwcm9hY2ggdGhlIGNvcm5lciBvZiBwYWdlICovXG4gICAgQElucHV0KClcbiAgICBmaXhlZFBvc2l0aW9uID0gZmFsc2U7XG5cbiAgICAvKiogSWQgb2YgdGhlIHBvcG92ZXIuIElmIG5vbmUgaXMgcHJvdmlkZWQsIG9uZSB3aWxsIGJlIGdlbmVyYXRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmcgPSAnZmQtcG9wb3Zlci0nICsgY2RrUG9wb3ZlclVuaXF1ZUlkKys7XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBjb21wb25lbnQgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBtb2JpbGUgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIENvbmZpZyBmb3IgdGhlIHBvcG92ZXIgaW4gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZyA9IHsgaGFzQ2xvc2VCdXR0b246IHRydWUgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndGVtcGxhdGVSZWYnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChDZGtPdmVybGF5T3JpZ2luKVxuICAgIHRyaWdnZXJPcmlnaW46IENka092ZXJsYXlPcmlnaW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoUG9wb3ZlckJvZHlDb21wb25lbnQpXG4gICAgcG9wb3ZlckJvZHk6IFBvcG92ZXJCb2R5Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFBvcG92ZXJDb250cm9sQ29tcG9uZW50KVxuICAgIHBvcG92ZXJDb250cm9sOiBQb3BvdmVyQ29udHJvbENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIC0gdGVtcGxhdGUgZm9yIERpYWxvZyBib2R5IGNvbnRlbnQgKi9cbiAgICBAQ29udGVudENoaWxkKCdwb3BvdmVyQm9keUNvbnRlbnQnKVxuICAgIHBvcG92ZXJCb2R5Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gLSB0ZW1wbGF0ZSBmb3IgRGlhbG9nIGZvb3RlciBjb250ZW50ICovXG4gICAgQENvbnRlbnRDaGlsZCgncG9wb3ZlckZvb3RlckNvbnRlbnQnKVxuICAgIHBvcG92ZXJGb290ZXJDb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGRlcHJlY2F0ZWRcbiAgICAgKiBMZWZ0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICovXG4gICAgc2V0IGRpcmVjdGl2ZVJlZih2YWx1ZTogYW55KSB7XG4gICAgICAgIHdhcm5PbmNlKCdQcm9wZXJ0eSBkaXJlY3RpdmVSZWYgaXMgZGVwcmVjYXRlZC4gJyk7XG4gICAgICAgIHRoaXMuX2RpcmVjdGl2ZVJlZiA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBkaXJlY3RpdmVSZWYoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpcmVjdGl2ZVJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RpcmVjdGl2ZVJlZjogYW55O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jbGlja0V2ZW50TGlzdGVuZXI6IG51bGwgfCAoKCkgPT4gdm9pZCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21vYmlsZU1vZGVDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxQb3BvdmVyTW9iaWxlQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3BvcG92ZXJTZXJ2aWNlOiBQb3BvdmVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyZWQ6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9keW5hbWljQ29tcG9uZW50U2VydmljZTogRHluYW1pY0NvbXBvbmVudFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgLy8gcG9wb3ZlckNvbnRyb2wgd2lsbCBiZSB1bmRlZmluZWQgd2hlbiBwb3BvdmVyIGlzIHVzZWQgZnJvbSBcImZkUG9wb3ZlclRyaWdnZXJcIlxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyQ29udHJvbD8uZWxSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSA9PT0gYWN0aXZlRWxlbWVudCAmJlxuICAgICAgICAgICAgYWN0aXZlRWxlbWVudD8udGFnTmFtZSAhPT0gJ0lOUFVUJyAmJlxuICAgICAgICAgICAgYWN0aXZlRWxlbWVudD8udGFnTmFtZSAhPT0gJ1RFWFRBUkVBJyAmJlxuICAgICAgICAgICAgIWFjdGl2ZUVsZW1lbnQ/LmNsYXNzTGlzdC5jb250YWlucyhTRUxFQ1RfQ0xBU1NfTkFNRVMuc2VsZWN0Q29udHJvbClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtTUEFDRSwgRU5URVJdKSkge1xuICAgICAgICAgICAgICAgIC8vIHByZXZlbnQgcGFnZSBzY3JvbGxpbmcgb24gU3BhY2Uga2V5ZG93blxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UudG9nZ2xlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0dXBWaWV3KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJDb250cm9sICYmIHRoaXMudHJpZ2dlcnMuaW5jbHVkZXMoJ2NsaWNrJykpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlckNvbnRyb2wuX3RhYmJhYmxlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5yZWZyZXNoQ29uZmlndXJhdGlvbih0aGlzKTtcblxuICAgICAgICBpZiAoY2hhbmdlcy5kaXNhYmxlU2Nyb2xsYmFyICYmIHRoaXMucG9wb3ZlckJvZHkgJiYgdGhpcy5wb3BvdmVyQm9keS5fc2Nyb2xsYmFyKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJCb2R5Ll9zY3JvbGxiYXIuX2luUG9wb3ZlciA9IGNoYW5nZXMuZGlzYWJsZVNjcm9sbGJhci5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95TW9iaWxlQ29tcG9uZW50KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lFdmVudExpc3RlbmVycygpO1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5vbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvKiogVG9nZ2xlcyBtZW51IG9wZW4vY2xvc2Ugc3RhdGUgKi9cbiAgICB0b2dnbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogT3BlbnMgdGhlIHBvcG92ZXIuICovXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2Uub3BlbigpO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIENsb3NlcyB0aGUgcG9wb3Zlci4gKi9cbiAgICBjbG9zZShmb2N1c0FjdGl2ZUVsZW1lbnQgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLmNsb3NlKGZvY3VzQWN0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgY2FsbGVkIHRvIGNoYW5nZSBwb3NpdGlvbiBvZiBwb3BvdmVyLFxuICAgICAqIHJlY29tbWVuZGVkIHRvIGJlIHVzZWQgb25seSB3aGVuIHBvcG92ZXIgaXMgb3BlbmVkLCBvdGhlcndpc2UgY2hhbmdlIHBvc2l0aW9uIG9yIGNka1BsYWNlbWVudFxuICAgICAqL1xuICAgIGFwcGx5TmV3UG9zaXRpb24ocG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLmFwcGx5TmV3UG9zaXRpb24ocG9zaXRpb25zKTtcbiAgICB9XG5cbiAgICAvKiogQGRlcHJlY2F0ZWRcbiAgICAgKiBMZWZ0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICovXG4gICAgdXBkYXRlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc29sZS53YXJuKCd1cGRhdGVQb3BvdmVyIGlzIERlcHJlY2F0ZWQsIHVzZSByZWZyZXNoUG9zaXRpb24gaW5zdGVhZCcpO1xuICAgICAgICB0aGlzLnJlZnJlc2hQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHRvIHJlZnJlc2ggcG9zaXRpb24gb2Ygb3BlbmVkIHBvcG92ZXIgKi9cbiAgICByZWZyZXNoUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnJlZnJlc2hQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBIYW5kbGVyIGZvciBhbHQgKyBhcnJvdyBkb3duIGtleWRvd24gKi9cbiAgICB0cmlnZ2VyS2V5RG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSAmJiBldmVudC5hbHRLZXkgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2VsZWN0IGFuZCBpbnN0YW50aWF0ZSBwb3BvdmVyIHZpZXcgbW9kZSAqL1xuICAgIHByaXZhdGUgX3NldHVwVmlldygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UuX21vYmlsZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXJCb2R5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UudGVtcGxhdGVDb250ZW50ID0gdGhpcy50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLmluaXRpYWxpc2UoXG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyIHx8IHRoaXMudHJpZ2dlck9yaWdpbi5lbGVtZW50UmVmLFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyQm9keVxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMudGVtcGxhdGVSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5jb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXJCb2R5OiB0aGlzLnBvcG92ZXJCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cE1vYmlsZU1vZGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gT3BlbiBQb3BvdmVyIGluIG1vYmlsZSBtb2RlICovXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0dXBNb2JpbGVNb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFBPUE9WRVJfQ09NUE9ORU5ULCB1c2VWYWx1ZTogdGhpcyB9XSxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3JcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UuX21vYmlsZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5fbW9iaWxlTW9kZUNvbXBvbmVudFJlZiA9IGF3YWl0IHRoaXMuX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUR5bmFtaWNNb2R1bGUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9wb3ZlckJvZHlDb250ZW50VGVtcGxhdGU6IHRoaXMucG9wb3ZlckJvZHlDb250ZW50VGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgcG9wb3ZlckZvb3RlckNvbnRlbnRUZW1wbGF0ZTogdGhpcy5wb3BvdmVyRm9vdGVyQ29udGVudFRlbXBsYXRlXG4gICAgICAgICAgICB9IGFzIFBvcG92ZXJDaGlsZENvbnRlbnQsXG4gICAgICAgICAgICBQb3BvdmVyTW9iaWxlTW9kdWxlLFxuICAgICAgICAgICAgUG9wb3Zlck1vYmlsZUNvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBpbmplY3RvclxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVHJpZ2dlclJlZkNsaWNrcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIC0gTGlzdGVuIG9uIHBvcG92ZXIgdHJpZ2dlciByZWYgY2xpY2tzICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25UcmlnZ2VyUmVmQ2xpY2tzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95RXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgICAgICBpZiAodGhpcy50cmlnZ2VyICYmIHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9jbGlja0V2ZW50TGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlZC5saXN0ZW4odGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsICgpID0+IHRoaXMudG9nZ2xlKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoaXMgaXMgZ29pbmcgdG8gYmUgcmVtb3ZlZCBpbiBmZWF0dXJlLCBvbiBkaWFsb2cgYW5kIGR5bmFtaWMgc2VydmljZSBjb21wb25lbnQgcmVmYWN0b3JcbiAgICAgKi9cbiAgICBwcml2YXRlIF9kZXN0cm95RXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jbGlja0V2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2NsaWNrRXZlbnRMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5fY2xpY2tFdmVudExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveU1vYmlsZUNvbXBvbmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX21vYmlsZU1vZGVDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX21vYmlsZU1vZGVDb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdlxuICAgICpuZ0lmPVwiIXRyaWdnZXJcIlxuICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICBjbGFzcz1cImZkLXBvcG92ZXJfX2NvbnRyb2xcIlxuICAgIFtjbGFzc109XCJhZGRpdGlvbmFsVHJpZ2dlckNsYXNzXCJcbiAgICAoa2V5ZG93bik9XCJ0cmlnZ2VyS2V5RG93bkhhbmRsZXIoJGV2ZW50KVwiXG4+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtcG9wb3Zlci1jb250cm9sXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVSZWY+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtcG9wb3Zlci1ib2R5XCI+PC9uZy1jb250ZW50PlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAjY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxuIl19
|