@fundamental-ngx/core 0.44.0-rc.2 → 0.44.0-rc.4
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/avatar/avatar.component.d.ts +0 -1
- package/bar/directives/bar-element.directive.d.ts +6 -3
- package/breadcrumb/breadcrumb.component.d.ts +4 -4
- package/carousel/carousel.component.d.ts +8 -2
- package/content-density/providers/content-density-observer-providers.d.ts +1 -1
- package/content-density/services/content-density-observer.service.d.ts +3 -3
- package/date-picker/date-picker.component.d.ts +30 -9
- package/datetime-picker/datetime-picker.component.d.ts +28 -10
- package/dialog/dialog-container/dialog-container.component.d.ts +4 -4
- package/dialog/dialog-footer-button/dialog-footer-button.component.d.ts +2 -0
- package/dialog/directives/dialog-decisive-button.directive.d.ts +2 -0
- package/dialog/utils/dialog-config.class.d.ts +1 -1
- package/esm2022/action-bar/action-bar.component.mjs +10 -3
- package/esm2022/alert/alert-service/alert.service.mjs +12 -3
- package/esm2022/alert/alert-utils/alert-config.mjs +11 -3
- package/esm2022/alert/alert-utils/alert-container.component.mjs +11 -3
- package/esm2022/alert/alert-utils/alert-ref.mjs +11 -3
- package/esm2022/alert/alert.component.mjs +17 -3
- package/esm2022/alert/alert.module.mjs +11 -3
- package/esm2022/avatar/avatar.component.mjs +2 -2
- package/esm2022/bar/directives/bar-element.directive.mjs +15 -7
- package/esm2022/breadcrumb/breadcrumb.component.mjs +9 -11
- package/esm2022/carousel/carousel.component.mjs +34 -5
- package/esm2022/combobox/combobox-mobile/combobox-mobile.component.mjs +1 -1
- package/esm2022/content-density/providers/content-density-observer-providers.mjs +4 -4
- package/esm2022/content-density/services/content-density-observer.service.mjs +13 -13
- package/esm2022/date-picker/date-picker.component.mjs +103 -10
- package/esm2022/datetime-picker/datetime-picker.component.mjs +78 -8
- package/esm2022/dialog/dialog-container/dialog-container.component.mjs +12 -13
- package/esm2022/dialog/dialog-footer-button/dialog-footer-button.component.mjs +8 -3
- package/esm2022/dialog/dialog-header/dialog-header.component.mjs +1 -1
- package/esm2022/dialog/directives/dialog-decisive-button.directive.mjs +6 -2
- package/esm2022/dialog/utils/dialog-config.class.mjs +1 -1
- package/esm2022/feed-list-item/components/item/feed-list-item.component.mjs +23 -1
- package/esm2022/form/form-label/form-label.component.mjs +21 -5
- package/esm2022/list/list-item/list-item.component.mjs +36 -1
- package/esm2022/menu/menu-mobile/menu-mobile.component.mjs +1 -1
- package/esm2022/message-box/directives/message-box-decisive-button.directive.mjs +6 -2
- package/esm2022/message-box/message-box-container/message-box-container.component.mjs +12 -15
- package/esm2022/message-box/message-box-footer-button/message-box-footer-button.component.mjs +8 -3
- package/esm2022/message-box/message-box-header/message-box-header.component.mjs +1 -1
- package/esm2022/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.mjs +8 -9
- package/esm2022/message-strip/auto-dismiss-message-strip.directive.mjs +10 -9
- package/esm2022/message-strip/message-strip.component.mjs +12 -1
- package/esm2022/multi-combobox/base-multi-combobox.class.mjs +17 -14
- package/esm2022/multi-combobox/mobile/mobile-multi-combobox.component.mjs +1 -1
- package/esm2022/multi-combobox/multi-combobox.component.mjs +44 -45
- package/esm2022/multi-combobox/select-all-toggler/select-all-toggler.component.mjs +8 -10
- package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
- package/esm2022/overflow-layout/directives/overflow-layout-popover-content.directive.mjs +9 -11
- package/esm2022/pagination/pagination.component.mjs +140 -2
- package/esm2022/popover/base/base-popover.class.mjs +25 -1
- package/esm2022/popover/popover.component.mjs +28 -17
- package/esm2022/product-switch/product-switch/product-switch.component.mjs +11 -1
- package/esm2022/quick-view/quick-view-title/quick-view-title.component.mjs +1 -1
- package/esm2022/segmented-button/segmented-button.component.mjs +19 -21
- package/esm2022/select/select.component.mjs +17 -10
- package/esm2022/shellbar/shellbar-actions/shellbar-actions.component.mjs +12 -1
- package/esm2022/shellbar/shellbar.component.mjs +12 -11
- package/esm2022/side-navigation/side-navigation.component.mjs +12 -3
- package/esm2022/slider/slider.component.mjs +83 -13
- package/esm2022/split-button/split-button.component.mjs +34 -16
- package/esm2022/splitter/splitter-pagination/splitter-pagination.component.mjs +9 -2
- package/esm2022/splitter/splitter.component.mjs +16 -5
- package/esm2022/step-input/step-input.component.mjs +46 -24
- package/esm2022/switch/switch.component.mjs +25 -3
- package/esm2022/table/directives/table-cell.directive.mjs +5 -7
- package/esm2022/table/directives/table-row.directive.mjs +17 -20
- package/esm2022/table/table.component.mjs +10 -9
- package/esm2022/tabs/tab-item-expand/tab-item-expand.component.mjs +11 -1
- package/esm2022/tabs/tab-list.component.mjs +40 -31
- package/esm2022/text/text.component.mjs +23 -1
- package/esm2022/time/i18n/time-i18n.mjs +2 -2
- package/esm2022/token/token.component.mjs +36 -14
- package/esm2022/toolbar/toolbar.component.mjs +33 -26
- package/esm2022/tree/components/tree-item/tree-item.component.mjs +21 -21
- package/esm2022/tree/tree.component.mjs +23 -22
- package/esm2022/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +67 -1
- package/esm2022/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +12 -1
- package/feed-list-item/components/item/feed-list-item.component.d.ts +8 -2
- package/fesm2022/fundamental-ngx-core-action-bar.mjs +9 -2
- package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-alert.mjs +58 -13
- package/fesm2022/fundamental-ngx-core-alert.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-bar.mjs +14 -6
- package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +9 -10
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +32 -3
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-content-density.mjs +15 -14
- package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +102 -9
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +77 -7
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +23 -13
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +22 -0
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +20 -4
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-list.mjs +35 -0
- package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +24 -15
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +27 -14
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +63 -64
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +9 -10
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +139 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +51 -16
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +10 -0
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-quick-view.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +17 -19
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +16 -9
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +22 -10
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs +11 -2
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +82 -12
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +32 -13
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-splitter.mjs +23 -5
- package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +45 -23
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +24 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-table.mjs +26 -30
- package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +51 -31
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +22 -0
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +36 -13
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +31 -24
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +38 -38
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +77 -0
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/form/form-label/form-label.component.d.ts +8 -2
- package/fundamental-ngx-core-v0.44.0-rc.4.tgz +0 -0
- package/list/list-item/list-item.component.d.ts +16 -4
- package/message-box/directives/message-box-decisive-button.directive.d.ts +2 -0
- package/message-box/message-box-container/message-box-container.component.d.ts +4 -6
- package/message-box/message-box-footer-button/message-box-footer-button.component.d.ts +2 -0
- package/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.d.ts +1 -1
- package/message-strip/auto-dismiss-message-strip.directive.d.ts +3 -3
- package/message-strip/message-strip.component.d.ts +4 -1
- package/multi-combobox/base-multi-combobox.class.d.ts +30 -30
- package/multi-combobox/multi-combobox.component.d.ts +17 -18
- package/multi-combobox/select-all-toggler/select-all-toggler.component.d.ts +1 -1
- package/overflow-layout/directives/overflow-layout-popover-content.directive.d.ts +5 -6
- package/package.json +3 -3
- package/pagination/pagination.component.d.ts +44 -11
- package/popover/base/base-popover.class.d.ts +12 -3
- package/popover/popover.component.d.ts +8 -5
- package/product-switch/product-switch/product-switch.component.d.ts +4 -1
- package/schematics/add-dependencies/index.js +4 -4
- package/segmented-button/segmented-button.component.d.ts +6 -7
- package/select/select.component.d.ts +9 -6
- package/shellbar/shellbar-actions/shellbar-actions.component.d.ts +6 -3
- package/shellbar/shellbar.component.d.ts +1 -1
- package/slider/slider.component.d.ts +13 -4
- package/split-button/split-button.component.d.ts +11 -6
- package/splitter/splitter.component.d.ts +5 -2
- package/step-input/step-input.component.d.ts +12 -6
- package/switch/switch.component.d.ts +10 -4
- package/table/directives/table-row.directive.d.ts +2 -4
- package/table/table.component.d.ts +3 -4
- package/tabs/tab-item-expand/tab-item-expand.component.d.ts +4 -1
- package/tabs/tab-list.component.d.ts +10 -8
- package/text/text.component.d.ts +8 -2
- package/time/i18n/time-i18n.d.ts +2 -2
- package/token/token.component.d.ts +13 -7
- package/toolbar/toolbar.component.d.ts +10 -7
- package/tree/components/tree-item/tree-item.component.d.ts +28 -28
- package/tree/tree.component.d.ts +7 -7
- package/upload-collection/upload-collection-button-group/upload-collection-button-group.component.d.ts +24 -6
- package/upload-collection/upload-collection-form-item/upload-collection-form-item.component.d.ts +6 -3
- package/fundamental-ngx-core-v0.44.0-rc.2.tgz +0 -0
|
@@ -38,6 +38,16 @@ export class PopoverComponent extends BasePopoverClass {
|
|
|
38
38
|
get trigger() {
|
|
39
39
|
return this._trigger;
|
|
40
40
|
}
|
|
41
|
+
/** @deprecated
|
|
42
|
+
* Left for backward compatibility
|
|
43
|
+
*/
|
|
44
|
+
set directiveRef(value) {
|
|
45
|
+
console.warn('Property directiveRef is deprecated. ');
|
|
46
|
+
this._directiveRef = value;
|
|
47
|
+
}
|
|
48
|
+
get directiveRef() {
|
|
49
|
+
return this._directiveRef;
|
|
50
|
+
}
|
|
41
51
|
/** @hidden */
|
|
42
52
|
constructor(_popoverService, _cdr, _rendered, _viewContainerRef, _injector, _dynamicComponentService) {
|
|
43
53
|
super();
|
|
@@ -57,6 +67,22 @@ export class PopoverComponent extends BasePopoverClass {
|
|
|
57
67
|
this.mobileConfig = { hasCloseButton: true };
|
|
58
68
|
}
|
|
59
69
|
/** @hidden */
|
|
70
|
+
onKeyDown(event) {
|
|
71
|
+
const activeElement = document.activeElement;
|
|
72
|
+
if (
|
|
73
|
+
// popoverControl will be undefined when popover is used from "fdPopoverTrigger"
|
|
74
|
+
this.popoverControl?.elRef.nativeElement.children[0] === activeElement &&
|
|
75
|
+
activeElement?.tagName !== 'INPUT' &&
|
|
76
|
+
activeElement?.tagName !== 'TEXTAREA' &&
|
|
77
|
+
!activeElement?.classList.contains(SELECT_CLASS_NAMES.selectControl)) {
|
|
78
|
+
if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {
|
|
79
|
+
// prevent page scrolling on Space keydown
|
|
80
|
+
event.preventDefault();
|
|
81
|
+
this._popoverService.toggle();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/** @hidden */
|
|
60
86
|
ngAfterViewInit() {
|
|
61
87
|
this._setupView();
|
|
62
88
|
}
|
|
@@ -79,22 +105,6 @@ export class PopoverComponent extends BasePopoverClass {
|
|
|
79
105
|
this._destroyEventListeners();
|
|
80
106
|
this._popoverService.onDestroy();
|
|
81
107
|
}
|
|
82
|
-
/** @hidden */
|
|
83
|
-
onKeyDown(event) {
|
|
84
|
-
const activeElement = document.activeElement;
|
|
85
|
-
if (
|
|
86
|
-
// popoverControl will be undefined when popover is used from "fdPopoverTrigger"
|
|
87
|
-
this.popoverControl?.elRef.nativeElement.children[0] === activeElement &&
|
|
88
|
-
activeElement?.tagName !== 'INPUT' &&
|
|
89
|
-
activeElement?.tagName !== 'TEXTAREA' &&
|
|
90
|
-
!activeElement?.classList.contains(SELECT_CLASS_NAMES.selectControl)) {
|
|
91
|
-
if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {
|
|
92
|
-
// prevent page scrolling on Space keydown
|
|
93
|
-
event.preventDefault();
|
|
94
|
-
this._popoverService.toggle();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
108
|
/** Toggles menu open/close state */
|
|
99
109
|
toggle() {
|
|
100
110
|
if (this.isOpen) {
|
|
@@ -125,6 +135,7 @@ export class PopoverComponent extends BasePopoverClass {
|
|
|
125
135
|
* Left for backward compatibility
|
|
126
136
|
*/
|
|
127
137
|
updatePopover() {
|
|
138
|
+
console.warn('updatePopover is Deprecated, use refreshPosition instead');
|
|
128
139
|
this.refreshPosition();
|
|
129
140
|
}
|
|
130
141
|
/** Method called to refresh position of opened popover */
|
|
@@ -258,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
258
269
|
type: HostListener,
|
|
259
270
|
args: ['keydown', ['$event']]
|
|
260
271
|
}] } });
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFeEYsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxN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b0JBQW9CO2dCQUtsQyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUtyQywwQkFBMEI7c0JBRHpCLFlBQVk7dUJBQUMsb0JBQW9CO2dCQUtsQyw0QkFBNEI7c0JBRDNCLFlBQVk7dUJBQUMsc0JBQXNCO2dCQXdEcEMsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENka092ZXJsYXlPcmlnaW4sIENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgRU5URVIsIFNQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsIEtleVV0aWwgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBNb2JpbGVNb2RlQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21vYmlsZS1tb2RlJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQmFzZVBvcG92ZXJDbGFzcyB9IGZyb20gJy4vYmFzZS9iYXNlLXBvcG92ZXIuY2xhc3MnO1xuaW1wb3J0IHsgUG9wb3ZlckJvZHlDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXItYm9keS9wb3BvdmVyLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJTZXJ2aWNlIH0gZnJvbSAnLi9wb3BvdmVyLXNlcnZpY2UvcG9wb3Zlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvcG92ZXJDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyLWNvbnRyb2wvcG9wb3Zlci1jb250cm9sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQT1BPVkVSX0NPTVBPTkVOVCB9IGZyb20gJy4vcG9wb3Zlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9wb3Zlck1vYmlsZUNvbXBvbmVudCB9IGZyb20gJy4vcG9wb3Zlci1tb2JpbGUvcG9wb3Zlci1tb2JpbGUuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJNb2JpbGVNb2R1bGUgfSBmcm9tICcuL3BvcG92ZXItbW9iaWxlL3BvcG92ZXItbW9iaWxlLm1vZHVsZSc7XG5pbXBvcnQgeyBQb3BvdmVyQ2hpbGRDb250ZW50IH0gZnJvbSAnLi9wb3BvdmVyLWNoaWxkLWNvbnRlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZEX1BPUE9WRVJfQ09NUE9ORU5UIH0gZnJvbSAnLi90b2tlbnMnO1xuXG5leHBvcnQgY29uc3QgU0VMRUNUX0NMQVNTX05BTUVTID0ge1xuICAgIHNlbGVjdENvbnRyb2w6ICdmZC1zZWxlY3RfX2NvbnRyb2wnXG59O1xuXG5sZXQgY2RrUG9wb3ZlclVuaXF1ZUlkID0gMDtcblxuLyoqXG4gKiBUaGUgcG9wb3ZlciBpcyBhIHdyYXBwaW5nIGNvbXBvbmVudCB0aGF0IGFjY2VwdHMgYSAqY29udHJvbCogYXMgd2VsbCBhcyBhICpib2R5Ki5cbiAqIFRoZSBjb250cm9sIGlzIHdoYXQgd2lsbCB0cmlnZ2VyIHRoZSBvcGVuaW5nIG9mIHRoZSBhY3R1YWwgcG9wb3Zlciwgd2hpY2ggaXMgY2FsbGVkIHRoZSBib2R5LlxuICogQnkgZGVmYXVsdCwgcG9wb3ZlcnMgYXJlIHRyaWdnZXJlZCBieSBjbGljay4gVGhpcyBjYW4gYmUgY3VzdG9taXplZCB0aHJvdWdoIHRoZSAqdHJpZ2dlcnMqIGlucHV0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXBvcG92ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBQb3BvdmVyU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfUE9QT1ZFUl9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogUG9wb3ZlckNvbXBvbmVudFxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1wb3BvdmVyLWN1c3RvbScsXG4gICAgICAgICdbY2xhc3MuZmQtcG9wb3Zlci1jdXN0b20tLW1vYmlsZV0nOiAnbW9iaWxlJyxcbiAgICAgICAgJ1thdHRyLmlkXSc6ICdpZCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJDb21wb25lbnRcbiAgICBleHRlbmRzIEJhc2VQb3BvdmVyQ2xhc3NcbiAgICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXG57XG4gICAgLyoqIFRvb2x0aXAgZm9yIHBvcG92ZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogUmVmZXJlbmNlIHRvIHBvcG92ZXIgdHJpZ2dlciBlbGVtZW50ICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdHJpZ2dlcih0cmlnZ2VyOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIGlmIChlcXVhbCh0cmlnZ2VyLCB0aGlzLl90cmlnZ2VyKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3RyaWdnZXIgPSB0cmlnZ2VyO1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS51cGRhdGVUcmlnZ2VyRWxlbWVudCh0aGlzLl90cmlnZ2VyKTtcbiAgICB9XG5cbiAgICBnZXQgdHJpZ2dlcigpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyaWdnZXI7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIFdoZXRoZXIgcG9zaXRpb24gc2hvdWxkbid0IGNoYW5nZSwgd2hlbiBwb3BvdmVyIGFwcHJvYWNoIHRoZSBjb3JuZXIgb2YgcGFnZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZml4ZWRQb3NpdGlvbiA9IGZhbHNlO1xuXG4gICAgLyoqIElkIG9mIHRoZSBwb3BvdmVyLiBJZiBub25lIGlzIHByb3ZpZGVkLCBvbmUgd2lsbCBiZSBnZW5lcmF0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJ2ZkLXBvcG92ZXItJyArIGNka1BvcG92ZXJVbmlxdWVJZCsrO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgY29tcG9uZW50IHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gbW9iaWxlIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGUgPSBmYWxzZTtcblxuICAgIC8qKiBDb25maWcgZm9yIHRoZSBwb3BvdmVyIGluIG1vYmlsZSBtb2RlICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGVDb25maWc6IE1vYmlsZU1vZGVDb25maWcgPSB7IGhhc0Nsb3NlQnV0dG9uOiB0cnVlIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlUmVmJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoQ2RrT3ZlcmxheU9yaWdpbilcbiAgICB0cmlnZ2VyT3JpZ2luOiBDZGtPdmVybGF5T3JpZ2luO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFBvcG92ZXJCb2R5Q29tcG9uZW50KVxuICAgIHBvcG92ZXJCb2R5OiBQb3BvdmVyQm9keUNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChQb3BvdmVyQ29udHJvbENvbXBvbmVudClcbiAgICBwb3BvdmVyQ29udHJvbDogUG9wb3ZlckNvbnRyb2xDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAtIHRlbXBsYXRlIGZvciBEaWFsb2cgYm9keSBjb250ZW50ICovXG4gICAgQENvbnRlbnRDaGlsZCgncG9wb3ZlckJvZHlDb250ZW50JylcbiAgICBwb3BvdmVyQm9keUNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuIC0gdGVtcGxhdGUgZm9yIERpYWxvZyBmb290ZXIgY29udGVudCAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3BvcG92ZXJGb290ZXJDb250ZW50JylcbiAgICBwb3BvdmVyRm9vdGVyQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBkZXByZWNhdGVkXG4gICAgICogTGVmdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAqL1xuICAgIGRpcmVjdGl2ZVJlZjogYW55O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jbGlja0V2ZW50TGlzdGVuZXI6IG51bGwgfCAoKCkgPT4gdm9pZCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21vYmlsZU1vZGVDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxQb3BvdmVyTW9iaWxlQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3BvcG92ZXJTZXJ2aWNlOiBQb3BvdmVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyZWQ6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9keW5hbWljQ29tcG9uZW50U2VydmljZTogRHluYW1pY0NvbXBvbmVudFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0dXBWaWV3KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJDb250cm9sICYmIHRoaXMudHJpZ2dlcnMuaW5jbHVkZXMoJ2NsaWNrJykpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlckNvbnRyb2wuX3RhYmJhYmxlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5yZWZyZXNoQ29uZmlndXJhdGlvbih0aGlzKTtcblxuICAgICAgICBpZiAoY2hhbmdlcy5kaXNhYmxlU2Nyb2xsYmFyICYmIHRoaXMucG9wb3ZlckJvZHkgJiYgdGhpcy5wb3BvdmVyQm9keS5fc2Nyb2xsYmFyKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJCb2R5Ll9zY3JvbGxiYXIuX2luUG9wb3ZlciA9IGNoYW5nZXMuZGlzYWJsZVNjcm9sbGJhci5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95TW9iaWxlQ29tcG9uZW50KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lFdmVudExpc3RlbmVycygpO1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5vbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgLy8gcG9wb3ZlckNvbnRyb2wgd2lsbCBiZSB1bmRlZmluZWQgd2hlbiBwb3BvdmVyIGlzIHVzZWQgZnJvbSBcImZkUG9wb3ZlclRyaWdnZXJcIlxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyQ29udHJvbD8uZWxSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSA9PT0gYWN0aXZlRWxlbWVudCAmJlxuICAgICAgICAgICAgYWN0aXZlRWxlbWVudD8udGFnTmFtZSAhPT0gJ0lOUFVUJyAmJlxuICAgICAgICAgICAgYWN0aXZlRWxlbWVudD8udGFnTmFtZSAhPT0gJ1RFWFRBUkVBJyAmJlxuICAgICAgICAgICAgIWFjdGl2ZUVsZW1lbnQ/LmNsYXNzTGlzdC5jb250YWlucyhTRUxFQ1RfQ0xBU1NfTkFNRVMuc2VsZWN0Q29udHJvbClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtTUEFDRSwgRU5URVJdKSkge1xuICAgICAgICAgICAgICAgIC8vIHByZXZlbnQgcGFnZSBzY3JvbGxpbmcgb24gU3BhY2Uga2V5ZG93blxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UudG9nZ2xlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVG9nZ2xlcyBtZW51IG9wZW4vY2xvc2Ugc3RhdGUgKi9cbiAgICB0b2dnbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogT3BlbnMgdGhlIHBvcG92ZXIuICovXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2Uub3BlbigpO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIENsb3NlcyB0aGUgcG9wb3Zlci4gKi9cbiAgICBjbG9zZShmb2N1c0FjdGl2ZUVsZW1lbnQgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLmNsb3NlKGZvY3VzQWN0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgY2FsbGVkIHRvIGNoYW5nZSBwb3NpdGlvbiBvZiBwb3BvdmVyLFxuICAgICAqIHJlY29tbWVuZGVkIHRvIGJlIHVzZWQgb25seSB3aGVuIHBvcG92ZXIgaXMgb3BlbmVkLCBvdGhlcndpc2UgY2hhbmdlIHBvc2l0aW9uIG9yIGNka1BsYWNlbWVudFxuICAgICAqL1xuICAgIGFwcGx5TmV3UG9zaXRpb24ocG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLmFwcGx5TmV3UG9zaXRpb24ocG9zaXRpb25zKTtcbiAgICB9XG5cbiAgICAvKiogQGRlcHJlY2F0ZWRcbiAgICAgKiBMZWZ0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICovXG4gICAgdXBkYXRlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGNhbGxlZCB0byByZWZyZXNoIHBvc2l0aW9uIG9mIG9wZW5lZCBwb3BvdmVyICovXG4gICAgcmVmcmVzaFBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5yZWZyZXNoUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlciBmb3IgYWx0ICsgYXJyb3cgZG93biBrZXlkb3duICovXG4gICAgdHJpZ2dlcktleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykgJiYgZXZlbnQuYWx0S2V5ICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNlbGVjdCBhbmQgaW5zdGFudGlhdGUgcG9wb3ZlciB2aWV3IG1vZGUgKi9cbiAgICBwcml2YXRlIF9zZXR1cFZpZXcoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLl9tb2JpbGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyQm9keSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnRlbXBsYXRlQ29udGVudCA9IHRoaXMudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5pbml0aWFsaXNlKFxuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlciB8fCB0aGlzLnRyaWdnZXJPcmlnaW4uZWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlckJvZHlcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLnRlbXBsYXRlUmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHRoaXMuY29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyQm9keTogdGhpcy5wb3BvdmVyQm9keVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0dXBNb2JpbGVNb2RlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE9wZW4gUG9wb3ZlciBpbiBtb2JpbGUgbW9kZSAqL1xuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwTW9iaWxlTW9kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBQT1BPVkVSX0NPTVBPTkVOVCwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLl9tb2JpbGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuX21vYmlsZU1vZGVDb21wb25lbnRSZWYgPSBhd2FpdCB0aGlzLl9keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVEeW5hbWljTW9kdWxlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvcG92ZXJCb2R5Q29udGVudFRlbXBsYXRlOiB0aGlzLnBvcG92ZXJCb2R5Q29udGVudFRlbXBsYXRlLFxuICAgICAgICAgICAgICAgIHBvcG92ZXJGb290ZXJDb250ZW50VGVtcGxhdGU6IHRoaXMucG9wb3ZlckZvb3RlckNvbnRlbnRUZW1wbGF0ZVxuICAgICAgICAgICAgfSBhcyBQb3BvdmVyQ2hpbGRDb250ZW50LFxuICAgICAgICAgICAgUG9wb3Zlck1vYmlsZU1vZHVsZSxcbiAgICAgICAgICAgIFBvcG92ZXJNb2JpbGVDb21wb25lbnQsXG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgaW5qZWN0b3JcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9saXN0ZW5PblRyaWdnZXJSZWZDbGlja3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAtIExpc3RlbiBvbiBwb3BvdmVyIHRyaWdnZXIgcmVmIGNsaWNrcyAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVHJpZ2dlclJlZkNsaWNrcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveUV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlciAmJiB0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fY2xpY2tFdmVudExpc3RlbmVyID0gdGhpcy5fcmVuZGVyZWQubGlzdGVuKHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB0aGlzLnRvZ2dsZSgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaGlzIGlzIGdvaW5nIHRvIGJlIHJlbW92ZWQgaW4gZmVhdHVyZSwgb24gZGlhbG9nIGFuZCBkeW5hbWljIHNlcnZpY2UgY29tcG9uZW50IHJlZmFjdG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2xpY2tFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9jbGlja0V2ZW50TGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuX2NsaWNrRXZlbnRMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3lNb2JpbGVDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9tb2JpbGVNb2RlQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9tb2JpbGVNb2RlQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAqbmdJZj1cIiF0cmlnZ2VyXCJcbiAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgY2xhc3M9XCJmZC1wb3BvdmVyX19jb250cm9sXCJcbiAgICBbY2xhc3NdPVwiYWRkaXRpb25hbFRyaWdnZXJDbGFzc1wiXG4gICAgKGtleWRvd24pPVwidHJpZ2dlcktleURvd25IYW5kbGVyKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXBvcG92ZXItY29udHJvbFwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlUmVmPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXBvcG92ZXItYm9keVwiPjwvbmctY29udGVudD5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250YWluZXIgI2NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFeEYsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBRWhELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLGFBQWEsRUFBRSxvQkFBb0I7Q0FDdEMsQ0FBQztBQUVGLElBQUksa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBRTNCOzs7O0dBSUc7QUFvQkgsTUFBTSxPQUFPLGdCQUNULFNBQVEsZ0JBQWdCO0lBT3hCLDJDQUEyQztJQUMzQyxJQUNJLE9BQU8sQ0FBQyxPQUFtQjtRQUMzQixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQThDRDs7T0FFRztJQUNILElBQUksWUFBWSxDQUFDLEtBQVU7UUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQWNELGNBQWM7SUFDZCxZQUNxQixlQUErQixFQUMvQixJQUF1QixFQUN2QixTQUFvQixFQUNwQixpQkFBbUMsRUFDbkMsU0FBbUIsRUFDUCx3QkFBaUQ7UUFFOUUsS0FBSyxFQUFFLENBQUM7UUFQUyxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDUCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBM0VsRixrRkFBa0Y7UUFFbEYsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFdEIscUVBQXFFO1FBRXJFLE9BQUUsR0FBVyxhQUFhLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztRQUVsRCx3RUFBd0U7UUFFeEUsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLDRDQUE0QztRQUU1QyxpQkFBWSxHQUFxQixFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQWdFMUQsQ0FBQztJQUVELGNBQWM7SUFFZCxTQUFTLENBQUMsS0FBb0I7UUFDMUIsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUM3QztRQUNJLGdGQUFnRjtRQUNoRixJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLGFBQWE7WUFDdEUsYUFBYSxFQUFFLE9BQU8sS0FBSyxPQUFPO1lBQ2xDLGFBQWEsRUFBRSxPQUFPLEtBQUssVUFBVTtZQUNyQyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxFQUN0RTtZQUNFLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDMUMsMENBQTBDO2dCQUMxQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDakM7U0FDSjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQjtRQUNkLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDeEM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhELElBQUksT0FBTyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7WUFDN0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7U0FDbEY7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxvQ0FBb0M7SUFDcEMsTUFBTTtRQUNGLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQjthQUFNO1lBQ0gsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLElBQUk7UUFDQSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixLQUFLLENBQUMsa0JBQWtCLEdBQUcsSUFBSTtRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLFNBQThCO1FBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLHFCQUFxQixDQUFDLEtBQW9CO1FBQ3RDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDeEUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFRCx1REFBdUQ7SUFDL0MsVUFBVTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQzNEO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQzNCLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQzdDLElBQUksRUFDSixJQUFJLENBQUMsV0FBVztnQkFDWixDQUFDLENBQUM7b0JBQ0ksUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXO29CQUMxQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztpQkFDaEM7Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FDYixDQUFDO1NBQ0w7YUFBTTtZQUNILElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQzNCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsMENBQTBDO0lBQ2xDLEtBQUssQ0FBQyxnQkFBZ0I7UUFDMUIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUM3QixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDM0QsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQ3pCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsbUJBQW1CLENBQ2xGO1lBQ0ksMEJBQTBCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtZQUMzRCw0QkFBNEIsRUFBRSxJQUFJLENBQUMsNEJBQTRCO1NBQzNDLEVBQ3hCLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixRQUFRLENBQ1gsQ0FBQztRQUVGLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxxREFBcUQ7SUFDN0MseUJBQXlCO1FBQzdCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBRTlCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDOUc7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssc0JBQXNCO1FBQzFCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLHVCQUF1QjtRQUMzQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUM5QixJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDMUM7SUFDTCxDQUFDOzhHQWpSUSxnQkFBZ0I7a0dBQWhCLGdCQUFnQiwyVkFkZDtZQUNQLGNBQWM7WUFDZDtnQkFDSSxPQUFPLEVBQUUsb0JBQW9CO2dCQUM3QixXQUFXLEVBQUUsZ0JBQWdCO2FBQ2hDO1lBQ0QsK0JBQStCLEVBQUU7U0FDcEMsbUVBMERhLG9CQUFvQixpRkFJcEIsdUJBQXVCLGlYQWhCSCxXQUFXLGlHQUliLGdCQUFnQiw2REFJckMsZ0JBQWdCLDRGQ3JIL0IsK2FBaUJBOzsyRkRxRGEsZ0JBQWdCO2tCQW5CNUIsU0FBUzsrQkFDSSxZQUFZLGlCQUVQLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1AsY0FBYzt3QkFDZDs0QkFDSSxPQUFPLEVBQUUsb0JBQW9COzRCQUM3QixXQUFXLGtCQUFrQjt5QkFDaEM7d0JBQ0QsK0JBQStCLEVBQUU7cUJBQ3BDLFFBQ0s7d0JBQ0YsS0FBSyxFQUFFLG1CQUFtQjt3QkFDMUIsbUNBQW1DLEVBQUUsUUFBUTt3QkFDN0MsV0FBVyxFQUFFLElBQUk7cUJBQ3BCOzswQkFtR0ksUUFBUTs0Q0EzRmIsS0FBSztzQkFESixLQUFLO2dCQUtGLE9BQU87c0JBRFYsS0FBSztnQkFlTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sRUFBRTtzQkFERCxLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSy9DLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS2xELGFBQWE7c0JBRFosU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBSzNCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBS2xDLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBS3JDLDBCQUEwQjtzQkFEekIsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBS2xDLDRCQUE0QjtzQkFEM0IsWUFBWTt1QkFBQyxzQkFBc0I7Z0JBeUNwQyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2RrT3ZlcmxheU9yaWdpbiwgQ29ubmVjdGVkUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBFTlRFUiwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50U2VydmljZSwgS2V5VXRpbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IE1vYmlsZU1vZGVDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbW9iaWxlLW1vZGUnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBCYXNlUG9wb3ZlckNsYXNzIH0gZnJvbSAnLi9iYXNlL2Jhc2UtcG9wb3Zlci5jbGFzcyc7XG5pbXBvcnQgeyBQb3BvdmVyQm9keUNvbXBvbmVudCB9IGZyb20gJy4vcG9wb3Zlci1ib2R5L3BvcG92ZXItYm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9wb3ZlclNlcnZpY2UgfSBmcm9tICcuL3BvcG92ZXItc2VydmljZS9wb3BvdmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXItY29udHJvbC9wb3BvdmVyLWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFBPUE9WRVJfQ09NUE9ORU5UIH0gZnJvbSAnLi9wb3BvdmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb3BvdmVyTW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyLW1vYmlsZS9wb3BvdmVyLW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9wb3Zlck1vYmlsZU1vZHVsZSB9IGZyb20gJy4vcG9wb3Zlci1tb2JpbGUvcG9wb3Zlci1tb2JpbGUubW9kdWxlJztcbmltcG9ydCB7IFBvcG92ZXJDaGlsZENvbnRlbnQgfSBmcm9tICcuL3BvcG92ZXItY2hpbGQtY29udGVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRkRfUE9QT1ZFUl9DT01QT05FTlQgfSBmcm9tICcuL3Rva2Vucyc7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RfQ0xBU1NfTkFNRVMgPSB7XG4gICAgc2VsZWN0Q29udHJvbDogJ2ZkLXNlbGVjdF9fY29udHJvbCdcbn07XG5cbmxldCBjZGtQb3BvdmVyVW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFRoZSBwb3BvdmVyIGlzIGEgd3JhcHBpbmcgY29tcG9uZW50IHRoYXQgYWNjZXB0cyBhICpjb250cm9sKiBhcyB3ZWxsIGFzIGEgKmJvZHkqLlxuICogVGhlIGNvbnRyb2wgaXMgd2hhdCB3aWxsIHRyaWdnZXIgdGhlIG9wZW5pbmcgb2YgdGhlIGFjdHVhbCBwb3BvdmVyLCB3aGljaCBpcyBjYWxsZWQgdGhlIGJvZHkuXG4gKiBCeSBkZWZhdWx0LCBwb3BvdmVycyBhcmUgdHJpZ2dlcmVkIGJ5IGNsaWNrLiBUaGlzIGNhbiBiZSBjdXN0b21pemVkIHRocm91Z2ggdGhlICp0cmlnZ2VycyogaW5wdXQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtcG9wb3ZlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFBvcG92ZXJTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9QT1BPVkVSX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBQb3BvdmVyQ29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLXBvcG92ZXItY3VzdG9tJyxcbiAgICAgICAgJ1tjbGFzcy5mZC1wb3BvdmVyLWN1c3RvbS0tbW9iaWxlXSc6ICdtb2JpbGUnLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudFxuICAgIGV4dGVuZHMgQmFzZVBvcG92ZXJDbGFzc1xuICAgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgICAvKiogVG9vbHRpcCBmb3IgcG9wb3ZlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBSZWZlcmVuY2UgdG8gcG9wb3ZlciB0cmlnZ2VyIGVsZW1lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0cmlnZ2VyKHRyaWdnZXI6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgaWYgKGVxdWFsKHRyaWdnZXIsIHRoaXMuX3RyaWdnZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdHJpZ2dlciA9IHRyaWdnZXI7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnVwZGF0ZVRyaWdnZXJFbGVtZW50KHRoaXMuX3RyaWdnZXIpO1xuICAgIH1cblxuICAgIGdldCB0cmlnZ2VyKCk6IEVsZW1lbnRSZWYge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHJpZ2dlcjtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciBwb3NpdGlvbiBzaG91bGRuJ3QgY2hhbmdlLCB3aGVuIHBvcG92ZXIgYXBwcm9hY2ggdGhlIGNvcm5lciBvZiBwYWdlICovXG4gICAgQElucHV0KClcbiAgICBmaXhlZFBvc2l0aW9uID0gZmFsc2U7XG5cbiAgICAvKiogSWQgb2YgdGhlIHBvcG92ZXIuIElmIG5vbmUgaXMgcHJvdmlkZWQsIG9uZSB3aWxsIGJlIGdlbmVyYXRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmcgPSAnZmQtcG9wb3Zlci0nICsgY2RrUG9wb3ZlclVuaXF1ZUlkKys7XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBjb21wb25lbnQgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBtb2JpbGUgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIENvbmZpZyBmb3IgdGhlIHBvcG92ZXIgaW4gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZyA9IHsgaGFzQ2xvc2VCdXR0b246IHRydWUgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndGVtcGxhdGVSZWYnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChDZGtPdmVybGF5T3JpZ2luKVxuICAgIHRyaWdnZXJPcmlnaW46IENka092ZXJsYXlPcmlnaW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoUG9wb3ZlckJvZHlDb21wb25lbnQpXG4gICAgcG9wb3ZlckJvZHk6IFBvcG92ZXJCb2R5Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFBvcG92ZXJDb250cm9sQ29tcG9uZW50KVxuICAgIHBvcG92ZXJDb250cm9sOiBQb3BvdmVyQ29udHJvbENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIC0gdGVtcGxhdGUgZm9yIERpYWxvZyBib2R5IGNvbnRlbnQgKi9cbiAgICBAQ29udGVudENoaWxkKCdwb3BvdmVyQm9keUNvbnRlbnQnKVxuICAgIHBvcG92ZXJCb2R5Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gLSB0ZW1wbGF0ZSBmb3IgRGlhbG9nIGZvb3RlciBjb250ZW50ICovXG4gICAgQENvbnRlbnRDaGlsZCgncG9wb3ZlckZvb3RlckNvbnRlbnQnKVxuICAgIHBvcG92ZXJGb290ZXJDb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGRlcHJlY2F0ZWRcbiAgICAgKiBMZWZ0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICovXG4gICAgc2V0IGRpcmVjdGl2ZVJlZih2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUHJvcGVydHkgZGlyZWN0aXZlUmVmIGlzIGRlcHJlY2F0ZWQuICcpO1xuICAgICAgICB0aGlzLl9kaXJlY3RpdmVSZWYgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZGlyZWN0aXZlUmVmKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXJlY3RpdmVSZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kaXJlY3RpdmVSZWY6IGFueTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJpZ2dlcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xpY2tFdmVudExpc3RlbmVyOiBudWxsIHwgKCgpID0+IHZvaWQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tb2JpbGVNb2RlQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8UG9wb3Zlck1vYmlsZUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9wb3BvdmVyU2VydmljZTogUG9wb3ZlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVkOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIC8vIHBvcG92ZXJDb250cm9sIHdpbGwgYmUgdW5kZWZpbmVkIHdoZW4gcG9wb3ZlciBpcyB1c2VkIGZyb20gXCJmZFBvcG92ZXJUcmlnZ2VyXCJcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlckNvbnRyb2w/LmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0gPT09IGFjdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQ/LnRhZ05hbWUgIT09ICdJTlBVVCcgJiZcbiAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQ/LnRhZ05hbWUgIT09ICdURVhUQVJFQScgJiZcbiAgICAgICAgICAgICFhY3RpdmVFbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnMoU0VMRUNUX0NMQVNTX05BTUVTLnNlbGVjdENvbnRyb2wpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbU1BBQ0UsIEVOVEVSXSkpIHtcbiAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IHBhZ2Ugc2Nyb2xsaW5nIG9uIFNwYWNlIGtleWRvd25cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnRvZ2dsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldHVwVmlldygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wb3BvdmVyQ29udHJvbCAmJiB0aGlzLnRyaWdnZXJzLmluY2x1ZGVzKCdjbGljaycpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJDb250cm9sLl90YWJiYWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UucmVmcmVzaENvbmZpZ3VyYXRpb24odGhpcyk7XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZGlzYWJsZVNjcm9sbGJhciAmJiB0aGlzLnBvcG92ZXJCb2R5ICYmIHRoaXMucG9wb3ZlckJvZHkuX3Njcm9sbGJhcikge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyQm9keS5fc2Nyb2xsYmFyLl9pblBvcG92ZXIgPSBjaGFuZ2VzLmRpc2FibGVTY3JvbGxiYXIuY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveU1vYmlsZUNvbXBvbmVudCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95RXZlbnRMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2Uub25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLyoqIFRvZ2dsZXMgbWVudSBvcGVuL2Nsb3NlIHN0YXRlICovXG4gICAgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBwb3BvdmVyLiAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLm9wZW4oKTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZXMgdGhlIHBvcG92ZXIuICovXG4gICAgY2xvc2UoZm9jdXNBY3RpdmVFbGVtZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5jbG9zZShmb2N1c0FjdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGNhbGxlZCB0byBjaGFuZ2UgcG9zaXRpb24gb2YgcG9wb3ZlcixcbiAgICAgKiByZWNvbW1lbmRlZCB0byBiZSB1c2VkIG9ubHkgd2hlbiBwb3BvdmVyIGlzIG9wZW5lZCwgb3RoZXJ3aXNlIGNoYW5nZSBwb3NpdGlvbiBvciBjZGtQbGFjZW1lbnRcbiAgICAgKi9cbiAgICBhcHBseU5ld1Bvc2l0aW9uKHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5hcHBseU5ld1Bvc2l0aW9uKHBvc2l0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqIEBkZXByZWNhdGVkXG4gICAgICogTGVmdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAqL1xuICAgIHVwZGF0ZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnNvbGUud2FybigndXBkYXRlUG9wb3ZlciBpcyBEZXByZWNhdGVkLCB1c2UgcmVmcmVzaFBvc2l0aW9uIGluc3RlYWQnKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGNhbGxlZCB0byByZWZyZXNoIHBvc2l0aW9uIG9mIG9wZW5lZCBwb3BvdmVyICovXG4gICAgcmVmcmVzaFBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5yZWZyZXNoUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlciBmb3IgYWx0ICsgYXJyb3cgZG93biBrZXlkb3duICovXG4gICAgdHJpZ2dlcktleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykgJiYgZXZlbnQuYWx0S2V5ICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNlbGVjdCBhbmQgaW5zdGFudGlhdGUgcG9wb3ZlciB2aWV3IG1vZGUgKi9cbiAgICBwcml2YXRlIF9zZXR1cFZpZXcoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLl9tb2JpbGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyQm9keSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnRlbXBsYXRlQ29udGVudCA9IHRoaXMudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5pbml0aWFsaXNlKFxuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlciB8fCB0aGlzLnRyaWdnZXJPcmlnaW4uZWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlckJvZHlcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLnRlbXBsYXRlUmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHRoaXMuY29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyQm9keTogdGhpcy5wb3BvdmVyQm9keVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0dXBNb2JpbGVNb2RlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE9wZW4gUG9wb3ZlciBpbiBtb2JpbGUgbW9kZSAqL1xuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwTW9iaWxlTW9kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBQT1BPVkVSX0NPTVBPTkVOVCwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLl9tb2JpbGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuX21vYmlsZU1vZGVDb21wb25lbnRSZWYgPSBhd2FpdCB0aGlzLl9keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVEeW5hbWljTW9kdWxlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvcG92ZXJCb2R5Q29udGVudFRlbXBsYXRlOiB0aGlzLnBvcG92ZXJCb2R5Q29udGVudFRlbXBsYXRlLFxuICAgICAgICAgICAgICAgIHBvcG92ZXJGb290ZXJDb250ZW50VGVtcGxhdGU6IHRoaXMucG9wb3ZlckZvb3RlckNvbnRlbnRUZW1wbGF0ZVxuICAgICAgICAgICAgfSBhcyBQb3BvdmVyQ2hpbGRDb250ZW50LFxuICAgICAgICAgICAgUG9wb3Zlck1vYmlsZU1vZHVsZSxcbiAgICAgICAgICAgIFBvcG92ZXJNb2JpbGVDb21wb25lbnQsXG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgaW5qZWN0b3JcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9saXN0ZW5PblRyaWdnZXJSZWZDbGlja3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAtIExpc3RlbiBvbiBwb3BvdmVyIHRyaWdnZXIgcmVmIGNsaWNrcyAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVHJpZ2dlclJlZkNsaWNrcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveUV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlciAmJiB0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fY2xpY2tFdmVudExpc3RlbmVyID0gdGhpcy5fcmVuZGVyZWQubGlzdGVuKHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB0aGlzLnRvZ2dsZSgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaGlzIGlzIGdvaW5nIHRvIGJlIHJlbW92ZWQgaW4gZmVhdHVyZSwgb24gZGlhbG9nIGFuZCBkeW5hbWljIHNlcnZpY2UgY29tcG9uZW50IHJlZmFjdG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2xpY2tFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9jbGlja0V2ZW50TGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuX2NsaWNrRXZlbnRMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3lNb2JpbGVDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9tb2JpbGVNb2RlQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9tb2JpbGVNb2RlQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAqbmdJZj1cIiF0cmlnZ2VyXCJcbiAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgY2xhc3M9XCJmZC1wb3BvdmVyX19jb250cm9sXCJcbiAgICBbY2xhc3NdPVwiYWRkaXRpb25hbFRyaWdnZXJDbGFzc1wiXG4gICAgKGtleWRvd24pPVwidHJpZ2dlcktleURvd25IYW5kbGVyKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXBvcG92ZXItY29udHJvbFwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlUmVmPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXBvcG92ZXItYm9keVwiPjwvbmctY29udGVudD5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250YWluZXIgI2NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -13,6 +13,16 @@ export class ProductSwitchComponent extends BasePopoverClass {
|
|
|
13
13
|
/** Whether the product switch is disabled. */
|
|
14
14
|
this.disabled = false;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated use i18n capabilities instead
|
|
18
|
+
* Input to set the aria label */
|
|
19
|
+
set ariaLabel(value) {
|
|
20
|
+
console.warn("Property ariaLabel is deprecated. Use i18n capabilities 'coreProductSwitch.ariaLabel' key instead.");
|
|
21
|
+
this._ariaLabel = value;
|
|
22
|
+
}
|
|
23
|
+
get ariaLabel() {
|
|
24
|
+
return this._ariaLabel;
|
|
25
|
+
}
|
|
16
26
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ProductSwitchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
27
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: ProductSwitchComponent, selector: "fd-product-switch", inputs: { placement: "placement", ariaLabel: "ariaLabel", disabled: "disabled" }, providers: [
|
|
18
28
|
{
|
|
@@ -36,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
36
46
|
}], disabled: [{
|
|
37
47
|
type: Input
|
|
38
48
|
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zd2l0Y2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcHJvZHVjdC1zd2l0Y2gvcHJvZHVjdC1zd2l0Y2gvcHJvZHVjdC1zd2l0Y2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcHJvZHVjdC1zd2l0Y2gvcHJvZHVjdC1zd2l0Y2gvcHJvZHVjdC1zd2l0Y2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQWF4RCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsZ0JBQWdCO0lBWDVEOztRQVlJLDhCQUE4QjtRQUU5QixjQUFTLEdBQWMsWUFBWSxDQUFDO1FBaUJwQyw4Q0FBOEM7UUFFOUMsYUFBUSxHQUFHLEtBQUssQ0FBQztLQUlwQjtJQXJCRzs7cUNBRWlDO0lBQ2pDLElBQ0ksU0FBUyxDQUFDLEtBQWE7UUFDdkIsT0FBTyxDQUFDLElBQUksQ0FDUixvR0FBb0csQ0FDdkcsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQzs4R0FsQlEsc0JBQXNCO2tHQUF0QixzQkFBc0IsOEhBUHBCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLDJCQUEyQjtnQkFDcEMsV0FBVyxFQUFFLHNCQUFzQjthQUN0QztTQUNKLGlEQ2ZMLDhoQ0E2QkE7OzJGRFphLHNCQUFzQjtrQkFYbEMsU0FBUzsrQkFDSSxtQkFBbUIsbUJBRVosdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsMkJBQTJCOzRCQUNwQyxXQUFXLHdCQUF3Qjt5QkFDdEM7cUJBQ0o7OEJBS0QsU0FBUztzQkFEUixLQUFLO2dCQU9GLFNBQVM7c0JBRFosS0FBSztnQkFjTixRQUFRO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQbGFjZW1lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcbmltcG9ydCB7IEJhc2VQb3BvdmVyQ2xhc3MgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBGRF9QUk9EVUNUX1NXSVRDSF9DT01QT05FTlQgfSBmcm9tICcuLi90b2tlbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXByb2R1Y3Qtc3dpdGNoJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1zd2l0Y2guY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9QUk9EVUNUX1NXSVRDSF9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogUHJvZHVjdFN3aXRjaENvbXBvbmVudFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0U3dpdGNoQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBvcG92ZXJDbGFzcyB7XG4gICAgLyoqIFBsYWNlbWVudCBvZiBhIHBvcG92ZXIuICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZW1lbnQ6IFBsYWNlbWVudCA9ICdib3R0b20tZW5kJztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogSW5wdXQgdG8gc2V0IHRoZSBhcmlhIGxhYmVsICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYXJpYUxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgXCJQcm9wZXJ0eSBhcmlhTGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUHJvZHVjdFN3aXRjaC5hcmlhTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2FyaWFMYWJlbCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBhcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FyaWFMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgcHJvZHVjdCBzd2l0Y2ggaXMgZGlzYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hcmlhTGFiZWw6IHN0cmluZztcbn1cbiIsIjxkaXYgY2xhc3M9XCJmZC1wcm9kdWN0LXN3aXRjaFwiPlxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgIFtwbGFjZW1lbnRdPVwicGxhY2VtZW50XCJcbiAgICAgICAgW2Nsb3NlT25Fc2NhcGVLZXldPVwiY2xvc2VPbkVzY2FwZUtleVwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImNsb3NlT25PdXRzaWRlQ2xpY2tcIlxuICAgICAgICBbKGlzT3BlbildPVwiaXNPcGVuXCJcbiAgICAgICAgKGlzT3BlbkNoYW5nZSk9XCJpc09wZW5DaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3RyaWdnZXJzXT1cInRyaWdnZXJzXCJcbiAgICAgICAgW2ZvY3VzVHJhcHBlZF09XCJmYWxzZVwiXG4gICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgICAgICBbbm9BcnJvd109XCJub0Fycm93XCJcbiAgICAgICAgW2Rpc2FibGVTY3JvbGxiYXJdPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8ICgnY29yZVByb2R1Y3RTd2l0Y2guYXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiYXJpYUxhYmVsIHx8ICgnY29yZVByb2R1Y3RTd2l0Y2guYXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1zaGVsbGJhcl9fYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBnbHlwaD1cImdyaWRcIlxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbjwvZGl2PlxuIl19
|
|
@@ -12,7 +12,7 @@ export class QuickViewTitleComponent {
|
|
|
12
12
|
this.align = 'middle';
|
|
13
13
|
}
|
|
14
14
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: QuickViewTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: QuickViewTitleComponent, selector: "fd-quick-view-title", inputs: { align: "align" }, ngImport: i0, template: "<div fd-popover-body-header>\n <div fd-bar barDesign=\"header\">\n <ng-container [ngSwitch]=\"align\">\n <div *ngSwitchCase=\"'left'\" fd-bar-left>\n <ng-container *ngTemplateOutlet=\"barElement\"></ng-container>\n </div>\n <div *ngSwitchCase=\"'right'\" fd-bar-right>\n <ng-container *ngTemplateOutlet=\"barElement\"></ng-container>\n </div>\n <div *ngSwitchDefault fd-bar-middle>\n <ng-container *ngTemplateOutlet=\"barElement\"></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n\n<ng-template #barElement>\n <fd-bar-element>\n <ng-content></ng-content>\n </fd-bar-element>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i2.BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: i2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i2.BarElementDirective, selector: "fd-bar-element", inputs: ["
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: QuickViewTitleComponent, selector: "fd-quick-view-title", inputs: { align: "align" }, ngImport: i0, template: "<div fd-popover-body-header>\n <div fd-bar barDesign=\"header\">\n <ng-container [ngSwitch]=\"align\">\n <div *ngSwitchCase=\"'left'\" fd-bar-left>\n <ng-container *ngTemplateOutlet=\"barElement\"></ng-container>\n </div>\n <div *ngSwitchCase=\"'right'\" fd-bar-right>\n <ng-container *ngTemplateOutlet=\"barElement\"></ng-container>\n </div>\n <div *ngSwitchDefault fd-bar-middle>\n <ng-container *ngTemplateOutlet=\"barElement\"></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n\n<ng-template #barElement>\n <fd-bar-element>\n <ng-content></ng-content>\n </fd-bar-element>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i2.BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: i2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i2.BarElementDirective, selector: "fd-bar-element", inputs: ["isTitle", "fullWidth"] }, { kind: "directive", type: i3.PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
16
16
|
}
|
|
17
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: QuickViewTitleComponent, decorators: [{
|
|
18
18
|
type: Component,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, forwardRef, HostBinding, HostListener, Input, QueryList, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, DestroyRef, ElementRef, forwardRef, HostBinding, HostListener, Input, QueryList, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { FD_BUTTON_COMPONENT } from '@fundamental-ngx/core/button';
|
|
3
3
|
import { filter, observeOn, startWith, takeUntil, tap } from 'rxjs/operators';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { asyncScheduler, fromEvent, merge, Subject } from 'rxjs';
|
|
5
|
+
import { destroyObservable, KeyUtil } from '@fundamental-ngx/cdk/utils';
|
|
6
6
|
import { ENTER, SPACE } from '@angular/cdk/keycodes';
|
|
7
7
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
8
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@fundamental-ngx/cdk/utils";
|
|
10
10
|
export const isDisabledClass = 'is-disabled';
|
|
11
11
|
/**
|
|
12
12
|
* Container for grouped buttons.
|
|
@@ -21,10 +21,10 @@ export const isDisabledClass = 'is-disabled';
|
|
|
21
21
|
*/
|
|
22
22
|
export class SegmentedButtonComponent {
|
|
23
23
|
/** @hidden */
|
|
24
|
-
constructor(_changeDetRef, _elementRef,
|
|
24
|
+
constructor(_changeDetRef, _elementRef, _destroyRef) {
|
|
25
25
|
this._changeDetRef = _changeDetRef;
|
|
26
26
|
this._elementRef = _elementRef;
|
|
27
|
-
this.
|
|
27
|
+
this._destroyRef = _destroyRef;
|
|
28
28
|
/** Whether segmented button is on toggle mode, which allows to toggle more than 1 button */
|
|
29
29
|
this.toggle = false;
|
|
30
30
|
/** @hidden */
|
|
@@ -39,6 +39,12 @@ export class SegmentedButtonComponent {
|
|
|
39
39
|
this.onTouched = () => { };
|
|
40
40
|
}
|
|
41
41
|
/** @hidden */
|
|
42
|
+
_click(event) {
|
|
43
|
+
if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {
|
|
44
|
+
this.onTouched();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** @hidden */
|
|
42
48
|
ngAfterViewInit() {
|
|
43
49
|
this._listenToButtonChanges();
|
|
44
50
|
}
|
|
@@ -75,15 +81,9 @@ export class SegmentedButtonComponent {
|
|
|
75
81
|
this._changeDetRef.detectChanges();
|
|
76
82
|
}
|
|
77
83
|
/** @hidden */
|
|
78
|
-
_click(event) {
|
|
79
|
-
if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {
|
|
80
|
-
this.onTouched();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
/** @hidden */
|
|
84
84
|
_listenToButtonChanges() {
|
|
85
85
|
this._buttons.changes
|
|
86
|
-
.pipe(startWith(1), observeOn(asyncScheduler),
|
|
86
|
+
.pipe(startWith(1), observeOn(asyncScheduler), takeUntilDestroyed(this._destroyRef))
|
|
87
87
|
.subscribe(() => {
|
|
88
88
|
this._onRefresh$.next();
|
|
89
89
|
this._toggleDisableButtons(this._isDisabled);
|
|
@@ -94,7 +94,7 @@ export class SegmentedButtonComponent {
|
|
|
94
94
|
/** @hidden */
|
|
95
95
|
_listenToTriggerEvents(buttonComponent) {
|
|
96
96
|
const htmlElement = buttonComponent.elementRef.nativeElement;
|
|
97
|
-
const refresh$ = merge(this.
|
|
97
|
+
const refresh$ = merge(destroyObservable(this._destroyRef), this._onRefresh$);
|
|
98
98
|
const triggerEvents$ = merge(fromEvent(htmlElement, 'click'), fromEvent(htmlElement, 'keydown').pipe(filter((event) => KeyUtil.isKeyCode(event, [ENTER, SPACE])), tap((event) => {
|
|
99
99
|
event.preventDefault();
|
|
100
100
|
this.onTouched();
|
|
@@ -204,14 +204,13 @@ export class SegmentedButtonComponent {
|
|
|
204
204
|
return resButtons;
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SegmentedButtonComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token:
|
|
207
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SegmentedButtonComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
208
208
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SegmentedButtonComponent, selector: "fd-segmented-button", inputs: { toggle: "toggle" }, host: { attributes: { "role": "group" }, listeners: { "click": "_click($event)" }, properties: { "class.fd-segmented-button": "this._fdSegmentedButtonClass" } }, providers: [
|
|
209
209
|
{
|
|
210
210
|
provide: NG_VALUE_ACCESSOR,
|
|
211
211
|
useExisting: forwardRef(() => SegmentedButtonComponent),
|
|
212
212
|
multi: true
|
|
213
|
-
}
|
|
214
|
-
DestroyedService
|
|
213
|
+
}
|
|
215
214
|
], queries: [{ propertyName: "_buttons", predicate: FD_BUTTON_COMPONENT }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-segmented-button\n button\n*/.fd-segmented-button{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:inline-flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;vertical-align:middle}.fd-segmented-button:after,.fd-segmented-button:before{box-sizing:inherit;font-size:inherit}.fd-segmented-button:before{background:var(--sapButton_Background);border-radius:var(--sapButton_BorderCornerRadius);content:\"\";display:var(--fdButton_Segmented_Pad_Display);height:100%;left:0;position:absolute;top:0;width:100%}.fd-segmented-button button{margin:0}.fd-segmented-button button.is-hover,.fd-segmented-button button:hover{z-index:1}.fd-segmented-button button:first-child{border-radius:var(--fdButton_Border_Radius_Left)}.fd-segmented-button button:not(:first-child):not(:last-child){border-radius:var(--fdButton_Segmented_Middle_Border_Radius)}.fd-segmented-button button:last-child{border-radius:var(--fdButton_Border_Radius_Right)}.fd-segmented-button button:not(:last-child){margin-right:var(--fdButton_Segmented_Border_Offset)}.fd-segmented-button button:not(:last-child)[dir=rtl],[dir=rtl] .fd-segmented-button button:not(:last-child){margin-left:var(--fdButton_Segmented_Border_Offset);margin-right:0}.fd-segmented-button button[dir=rtl]:first-child,[dir=rtl] .fd-segmented-button button:first-child{border-radius:var(--fdButton_Border_Radius_Left_RTL)}.fd-segmented-button button[dir=rtl]:last-child,[dir=rtl] .fd-segmented-button button:last-child{border-radius:var(--fdButton_Border_Radius_Right_RTL)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
216
215
|
}
|
|
217
216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SegmentedButtonComponent, decorators: [{
|
|
@@ -223,10 +222,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
223
222
|
provide: NG_VALUE_ACCESSOR,
|
|
224
223
|
useExisting: forwardRef(() => SegmentedButtonComponent),
|
|
225
224
|
multi: true
|
|
226
|
-
}
|
|
227
|
-
DestroyedService
|
|
225
|
+
}
|
|
228
226
|
], template: "<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-segmented-button\n button\n*/.fd-segmented-button{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:inline-flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;vertical-align:middle}.fd-segmented-button:after,.fd-segmented-button:before{box-sizing:inherit;font-size:inherit}.fd-segmented-button:before{background:var(--sapButton_Background);border-radius:var(--sapButton_BorderCornerRadius);content:\"\";display:var(--fdButton_Segmented_Pad_Display);height:100%;left:0;position:absolute;top:0;width:100%}.fd-segmented-button button{margin:0}.fd-segmented-button button.is-hover,.fd-segmented-button button:hover{z-index:1}.fd-segmented-button button:first-child{border-radius:var(--fdButton_Border_Radius_Left)}.fd-segmented-button button:not(:first-child):not(:last-child){border-radius:var(--fdButton_Segmented_Middle_Border_Radius)}.fd-segmented-button button:last-child{border-radius:var(--fdButton_Border_Radius_Right)}.fd-segmented-button button:not(:last-child){margin-right:var(--fdButton_Segmented_Border_Offset)}.fd-segmented-button button:not(:last-child)[dir=rtl],[dir=rtl] .fd-segmented-button button:not(:last-child){margin-left:var(--fdButton_Segmented_Border_Offset);margin-right:0}.fd-segmented-button button[dir=rtl]:first-child,[dir=rtl] .fd-segmented-button button:first-child{border-radius:var(--fdButton_Border_Radius_Left_RTL)}.fd-segmented-button button[dir=rtl]:last-child,[dir=rtl] .fd-segmented-button button:last-child{border-radius:var(--fdButton_Border_Radius_Right_RTL)}\n"] }]
|
|
229
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type:
|
|
227
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.DestroyRef }]; }, propDecorators: { toggle: [{
|
|
230
228
|
type: Input
|
|
231
229
|
}], _fdSegmentedButtonClass: [{
|
|
232
230
|
type: HostBinding,
|
|
@@ -238,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
238
236
|
type: HostListener,
|
|
239
237
|
args: ['click', ['$event']]
|
|
240
238
|
}] } });
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zZWdtZW50ZWQtYnV0dG9uL3NlZ21lbnRlZC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VnbWVudGVkLWJ1dHRvbi9zZWdtZW50ZWQtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFekUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQztBQUk3Qzs7Ozs7Ozs7OztHQVVHO0FBbUJILE1BQU0sT0FBTyx3QkFBd0I7SUFnQ2pDLGNBQWM7SUFDZCxZQUNxQixhQUFnQyxFQUNoQyxXQUF1QixFQUN2QixXQUE2QjtRQUY3QixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBbkNsRCw0RkFBNEY7UUFFNUYsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLGNBQWM7UUFFZCw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFhL0IsY0FBYztRQUNOLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRTVCLGlHQUFpRztRQUNoRixnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWxFLGNBQWM7UUFDZCxhQUFRLEdBQTBDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUUzRCxjQUFjO1FBQ2QsY0FBUyxHQUFHLEdBQVMsRUFBRSxHQUFFLENBQUMsQ0FBQztJQU94QixDQUFDO0lBRUosY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjO0lBQ2QsVUFBVSxDQUFDLE1BQXlCO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBeUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLEVBQWM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxjQUFjO0lBRU4sTUFBTSxDQUFDLEtBQWlCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTzthQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzFFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsY0FBYztJQUNOLHNCQUFzQixDQUFDLGVBQWdDO1FBQzNELE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBRTdELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUzRCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQ3hCLFNBQVMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEVBQy9CLFNBQVMsQ0FBZ0IsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDakQsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQzNELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1YsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FDTCxDQUNKLENBQUM7UUFFRixjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsY0FBYztJQUNOLHNCQUFzQixDQUFDLGVBQWdDO1FBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3JDO1lBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3JDO1NBQ0o7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLGdCQUFnQjtRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsY0FBYztJQUNOLGFBQWEsQ0FBQyxlQUFnQztRQUNsRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3pDO2FBQU07WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixvQkFBb0IsQ0FBQyxNQUE0QjtRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxjQUFjO0lBQ04sbUJBQW1CLENBQUMsTUFBNEI7UUFDcEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztTQUM3RzthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQztTQUNwRjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sYUFBYSxDQUFDLGVBQWdDO1FBQ2xELGVBQWUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO0lBQ04sZUFBZSxDQUFDLGVBQWdDO1FBQ3BELGVBQWUsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxjQUFjO0lBQ04saUJBQWlCLENBQUMsZUFBZ0M7UUFDdEQsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO0lBQ04saUJBQWlCLENBQUMsZUFBZ0M7UUFDdEQsT0FBTyxlQUFlLENBQUMsU0FBUyxJQUFJLGVBQWUsQ0FBQyxZQUFZLENBQUM7SUFDckUsQ0FBQztJQUVELGNBQWM7SUFDTixxQkFBcUIsQ0FBQyxPQUFnQjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3ZHO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsY0FBYztJQUNOLGVBQWUsQ0FBQyxlQUFnQztRQUNwRCxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUN6RCxJQUFJLE9BQU8sWUFBWSxpQkFBaUIsRUFBRTtZQUN0QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDeEI7UUFDRCxPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssb0JBQW9CO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUTthQUMzQixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNsRCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNkLE9BQU8sVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3pEO2FBQU07WUFDSCxPQUFPLFVBQVUsQ0FBQztTQUNyQjtJQUNMLENBQUM7OEdBM09RLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDhPQVR0QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3ZELEtBQUssRUFBRSxJQUFJO2FBQ2Q7WUFDRCxnQkFBZ0I7U0FDbkIsbURBWWdCLG1CQUFtQiw2QkNqRXhDLDZCQUNBOzsyRkRzRGEsd0JBQXdCO2tCQWxCcEMsU0FBUzsrQkFDSSxxQkFBcUIsUUFHekI7d0JBQ0YsSUFBSSxFQUFFLE9BQU87cUJBQ2hCLGlCQUNjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNELGdCQUFnQjtxQkFDbkI7Z0tBS0QsTUFBTTtzQkFETCxLQUFLO2dCQUtOLHVCQUF1QjtzQkFEdEIsV0FBVzt1QkFBQywyQkFBMkI7Z0JBS3hDLFFBQVE7c0JBRFAsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBeUU1QixNQUFNO3NCQURiLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50LCBGRF9CVVRUT05fQ09NUE9ORU5UIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBmaWx0ZXIsIG9ic2VydmVPbiwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlLCBmcm9tRXZlbnQsIGFzeW5jU2NoZWR1bGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlLCBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRU5URVIsIFNQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IGlzRGlzYWJsZWRDbGFzcyA9ICdpcy1kaXNhYmxlZCc7XG5cbmV4cG9ydCB0eXBlIFNlZ21lbnRlZEJ1dHRvblZhbHVlID0gc3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsO1xuXG4vKipcbiAqIENvbnRhaW5lciBmb3IgZ3JvdXBlZCBidXR0b25zLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxmZC1zZWdtZW50ZWQtYnV0dG9uIFsobmdNb2RlbCldPVwidmFsdWVcIj5cbiAqICAgICA8YnV0dG9uIGZkLWJ1dHRvbiB2YWx1ZT1cImZpcnN0XCI+QnV0dG9uPC9idXR0b24+XG4gKiAgICAgPGJ1dHRvbiBmZC1idXR0b24gdmFsdWU9XCJzZWNvbmRcIj5CdXR0b248L2J1dHRvbj5cbiAqICAgICA8YnV0dG9uIGZkLWJ1dHRvbiB2YWx1ZT1cInRoaXJkXCI+QnV0dG9uPC9idXR0b24+XG4gKiA8L2ZkLXNlZ21lbnRlZC1idXR0b24+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1zZWdtZW50ZWQtYnV0dG9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VnbWVudGVkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VnbWVudGVkLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ2dyb3VwJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWdtZW50ZWRCdXR0b25Db21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgRGVzdHJveWVkU2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VnbWVudGVkQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gICAgLyoqIFdoZXRoZXIgc2VnbWVudGVkIGJ1dHRvbiBpcyBvbiB0b2dnbGUgbW9kZSwgd2hpY2ggYWxsb3dzIHRvIHRvZ2dsZSBtb3JlIHRoYW4gMSBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIHRvZ2dsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXNlZ21lbnRlZC1idXR0b24nKVxuICAgIF9mZFNlZ21lbnRlZEJ1dHRvbkNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihGRF9CVVRUT05fQ09NUE9ORU5UKVxuICAgIF9idXR0b25zOiBRdWVyeUxpc3Q8QnV0dG9uQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICAqIFZhbHVlIG9mIHNlZ21lbnRlZCBidXR0b24gY2FuIGhhdmUgMiB0eXBlczpcbiAgICAgKiAtIHN0cmluZywgd2hlbiB0aGVyZSBpcyBubyB0b2dnbGUgbW9kZSBhbmQgb25seSAxIHZhbHVlIGNhbiBiZSBjaG9zZW4uXG4gICAgICogLSBhcnJheSBvZiBzdHJpbmdzLCB3aGVuIHRoZXJlIGlzIHRvZ2dsZSBtb2RlIGFuZCBtb3JlIHRoYW4gMSB2YWx1ZSBjYW4gYmUgY2hvc2VuLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnRWYWx1ZTogU2VnbWVudGVkQnV0dG9uVmFsdWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gcXVlcnlMaXN0IGNoYW5nZXMgKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vblJlZnJlc2gkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogU2VnbWVudGVkQnV0dG9uVmFsdWUpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBEZXN0cm95ZWRTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvQnV0dG9uQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uUmVmcmVzaCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB2YWx1ZXM7XG4gICAgICAgIHRoaXMuX3BpY2tCdXR0b25zQnlWYWx1ZXModmFsdWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGZuIFVzZXIgZGVmaW5lZCBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlICpvbkNoYW5nZSogZXZlbnQgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBTZWdtZW50ZWRCdXR0b25WYWx1ZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBmbiBVc2VyIGRlZmluZWQgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSAqb25Ub3VjaCogZXZlbnQgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGlzRGlzYWJsZWQgU2V0cyB0aGUgdmFsdWUgb2YgdGhlICpkaXNhYmxlZCogcHJvcGVydHkgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl90b2dnbGVEaXNhYmxlQnV0dG9ucyhpc0Rpc2FibGVkKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwcml2YXRlIF9jbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9CdXR0b25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9idXR0b25zLmNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCgxKSwgb2JzZXJ2ZU9uKGFzeW5jU2NoZWR1bGVyKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25SZWZyZXNoJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlRGlzYWJsZUJ1dHRvbnModGhpcy5faXNEaXNhYmxlZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGlja0J1dHRvbnNCeVZhbHVlcyh0aGlzLl9jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB0aGlzLl9saXN0ZW5Ub1RyaWdnZXJFdmVudHMoYnV0dG9uKSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvVHJpZ2dlckV2ZW50cyhidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBodG1sRWxlbWVudCA9IGJ1dHRvbkNvbXBvbmVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgcmVmcmVzaCQgPSBtZXJnZSh0aGlzLl9vbkRlc3Ryb3kkLCB0aGlzLl9vblJlZnJlc2gkKTtcblxuICAgICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzJCA9IG1lcmdlKFxuICAgICAgICAgICAgZnJvbUV2ZW50KGh0bWxFbGVtZW50LCAnY2xpY2snKSxcbiAgICAgICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50PihodG1sRWxlbWVudCwgJ2tleWRvd24nKS5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRU5URVIsIFNQQUNFXSkpLFxuICAgICAgICAgICAgICAgIHRhcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRyaWdnZXJFdmVudHMkLnBpcGUodGFrZVVudGlsKHJlZnJlc2gkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2hhbmRsZVRyaWdnZXJPbkJ1dHRvbihidXR0b25Db21wb25lbnQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVRyaWdnZXJPbkJ1dHRvbihidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2lzQnV0dG9uRGlzYWJsZWQoYnV0dG9uQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0J1dHRvblNlbGVjdGVkKGJ1dHRvbkNvbXBvbmVudCkgJiYgIXRoaXMudG9nZ2xlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IHRoaXMuX2Rlc2VsZWN0QnV0dG9uKGJ1dHRvbikpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEJ1dHRvbihidXR0b25Db21wb25lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Byb3BhZ2F0ZUNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMudG9nZ2xlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlQnV0dG9uKGJ1dHRvbkNvbXBvbmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcm9wYWdhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fZ2V0VmFsdWVzQnlTZWxlY3RlZCgpKTtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gdGhpcy5fZ2V0VmFsdWVzQnlTZWxlY3RlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdG9nZ2xlQnV0dG9uKGJ1dHRvbkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc0J1dHRvblNlbGVjdGVkKGJ1dHRvbkNvbXBvbmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rlc2VsZWN0QnV0dG9uKGJ1dHRvbkNvbXBvbmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RCdXR0b24oYnV0dG9uQ29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcGlja0J1dHRvbnNCeVZhbHVlcyh2YWx1ZXM6IFNlZ21lbnRlZEJ1dHRvblZhbHVlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fYnV0dG9ucykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2J1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB0aGlzLl9kZXNlbGVjdEJ1dHRvbihidXR0b24pKTtcbiAgICAgICAgdGhpcy5fZ2V0QnV0dG9uc0J5VmFsdWVzKHZhbHVlcykuZm9yRWFjaCgoYnV0dG9uKSA9PiB0aGlzLl9zZWxlY3RCdXR0b24oYnV0dG9uKSk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRCdXR0b25zQnlWYWx1ZXModmFsdWVzOiBTZWdtZW50ZWRCdXR0b25WYWx1ZSk6IEJ1dHRvbkNvbXBvbmVudFtdIHtcbiAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9idXR0b25zLmZpbHRlcigoYnV0dG9uKSA9PiAhIXZhbHVlcy5maW5kKCh2YWx1ZSkgPT4gdGhpcy5fZ2V0QnV0dG9uVmFsdWUoYnV0dG9uKSA9PT0gdmFsdWUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9idXR0b25zLmZpbHRlcigoYnV0dG9uKSA9PiB0aGlzLl9nZXRCdXR0b25WYWx1ZShidXR0b24pID09PSB2YWx1ZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWxlY3RCdXR0b24oYnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgYnV0dG9uQ29tcG9uZW50LnRvZ2dsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzZWxlY3RCdXR0b24oYnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgYnV0dG9uQ29tcG9uZW50LnRvZ2dsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQnV0dG9uU2VsZWN0ZWQoYnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGJ1dHRvbkNvbXBvbmVudC50b2dnbGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNCdXR0b25EaXNhYmxlZChidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYnV0dG9uQ29tcG9uZW50Ll9kaXNhYmxlZCB8fCBidXR0b25Db21wb25lbnQuYXJpYURpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdG9nZ2xlRGlzYWJsZUJ1dHRvbnMoZGlzYWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2J1dHRvbnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2J1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiAoYnV0dG9uLmRpc2FibGVkID0gZGlzYWJsZSkpO1xuICAgICAgICBpZiAoZGlzYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5fYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IGJ1dHRvbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICd0cnVlJykpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NoYW5nZURldFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEJ1dHRvblZhbHVlKGJ1dHRvbkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBidXR0b25Db21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxCdXR0b25FbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBSZXR1cm5zIHZhbHVlcyBkZXBlbmRpbmcgb24gc2VsZWN0ZWQgc3RhdGUgb2YgYnV0dG9uc1xuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFZhbHVlc0J5U2VsZWN0ZWQoKTogU2VnbWVudGVkQnV0dG9uVmFsdWUge1xuICAgICAgICBpZiAoIXRoaXMuX2J1dHRvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc0J1dHRvbnMgPSB0aGlzLl9idXR0b25zXG4gICAgICAgICAgICAuZmlsdGVyKChidXR0b24pID0+IHRoaXMuX2lzQnV0dG9uU2VsZWN0ZWQoYnV0dG9uKSlcbiAgICAgICAgICAgIC5tYXAoKGJ1dHRvbikgPT4gdGhpcy5fZ2V0QnV0dG9uVmFsdWUoYnV0dG9uKSk7XG4gICAgICAgIGlmICghdGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNCdXR0b25zLmxlbmd0aCA9PT0gMSA/IHJlc0J1dHRvbnNbMF0gOiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlc0J1dHRvbnM7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zZWdtZW50ZWQtYnV0dG9uL3NlZ21lbnRlZC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VnbWVudGVkLWJ1dHRvbi9zZWdtZW50ZWQtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQztBQUk3Qzs7Ozs7Ozs7OztHQVVHO0FBa0JILE1BQU0s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WUFDUDtnQkFDSSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2dCQUN2RCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osbURBWWdCLG1CQUFtQiw2QkNsRXhDLDZCQUNBOzsyRkR1RGEsd0JBQXdCO2tCQWpCcEMsU0FBUzsrQkFDSSxxQkFBcUIsUUFHekI7d0JBQ0YsSUFBSSxFQUFFLE9BQU87cUJBQ2hCLGlCQUNjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzBKQUtELE1BQU07c0JBREwsS0FBSztnQkFLTix1QkFBdUI7c0JBRHRCLFdBQVc7dUJBQUMsMkJBQTJCO2dCQUt4QyxRQUFRO3NCQURQLGVBQWU7dUJBQUMsbUJBQW1CO2dCQXlCNUIsTUFBTTtzQkFEYixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50LCBGRF9CVVRUT05fQ09NUE9ORU5UIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBmaWx0ZXIsIG9ic2VydmVPbiwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGFzeW5jU2NoZWR1bGVyLCBmcm9tRXZlbnQsIG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZXN0cm95T2JzZXJ2YWJsZSwgS2V5VXRpbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEVOVEVSLCBTUEFDRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCBjb25zdCBpc0Rpc2FibGVkQ2xhc3MgPSAnaXMtZGlzYWJsZWQnO1xuXG5leHBvcnQgdHlwZSBTZWdtZW50ZWRCdXR0b25WYWx1ZSA9IHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbDtcblxuLyoqXG4gKiBDb250YWluZXIgZm9yIGdyb3VwZWQgYnV0dG9ucy5cbiAqXG4gKiBgYGBodG1sXG4gKiA8ZmQtc2VnbWVudGVkLWJ1dHRvbiBbKG5nTW9kZWwpXT1cInZhbHVlXCI+XG4gKiAgICAgPGJ1dHRvbiBmZC1idXR0b24gdmFsdWU9XCJmaXJzdFwiPkJ1dHRvbjwvYnV0dG9uPlxuICogICAgIDxidXR0b24gZmQtYnV0dG9uIHZhbHVlPVwic2Vjb25kXCI+QnV0dG9uPC9idXR0b24+XG4gKiAgICAgPGJ1dHRvbiBmZC1idXR0b24gdmFsdWU9XCJ0aGlyZFwiPkJ1dHRvbjwvYnV0dG9uPlxuICogPC9mZC1zZWdtZW50ZWQtYnV0dG9uPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtc2VnbWVudGVkLWJ1dHRvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlZ21lbnRlZC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NlZ21lbnRlZC1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICdncm91cCdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VnbWVudGVkQnV0dG9uQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlZ21lbnRlZEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBXaGV0aGVyIHNlZ21lbnRlZCBidXR0b24gaXMgb24gdG9nZ2xlIG1vZGUsIHdoaWNoIGFsbG93cyB0byB0b2dnbGUgbW9yZSB0aGFuIDEgYnV0dG9uICovXG4gICAgQElucHV0KClcbiAgICB0b2dnbGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1zZWdtZW50ZWQtYnV0dG9uJylcbiAgICBfZmRTZWdtZW50ZWRCdXR0b25DbGFzcyA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRfQlVUVE9OX0NPTVBPTkVOVClcbiAgICBfYnV0dG9uczogUXVlcnlMaXN0PEJ1dHRvbkNvbXBvbmVudD47XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBvZiBzZWdtZW50ZWQgYnV0dG9uIGNhbiBoYXZlIDIgdHlwZXM6XG4gICAgICogLSBzdHJpbmcsIHdoZW4gdGhlcmUgaXMgbm8gdG9nZ2xlIG1vZGUgYW5kIG9ubHkgMSB2YWx1ZSBjYW4gYmUgY2hvc2VuLlxuICAgICAqIC0gYXJyYXkgb2Ygc3RyaW5ncywgd2hlbiB0aGVyZSBpcyB0b2dnbGUgbW9kZSBhbmQgbW9yZSB0aGFuIDEgdmFsdWUgY2FuIGJlIGNob3Nlbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jdXJyZW50VmFsdWU6IFNlZ21lbnRlZEJ1dHRvblZhbHVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIHF1ZXJ5TGlzdCBjaGFuZ2VzIChmb3IgdW5zdWJzY3JpYmluZykgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25SZWZyZXNoJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmOiBEZXN0cm95UmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHJpdmF0ZSBfY2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IFNlZ21lbnRlZEJ1dHRvblZhbHVlKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvQnV0dG9uQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uUmVmcmVzaCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB2YWx1ZXM7XG4gICAgICAgIHRoaXMuX3BpY2tCdXR0b25zQnlWYWx1ZXModmFsdWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGZuIFVzZXIgZGVmaW5lZCBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlICpvbkNoYW5nZSogZXZlbnQgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBTZWdtZW50ZWRCdXR0b25WYWx1ZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBmbiBVc2VyIGRlZmluZWQgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSAqb25Ub3VjaCogZXZlbnQgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGlzRGlzYWJsZWQgU2V0cyB0aGUgdmFsdWUgb2YgdGhlICpkaXNhYmxlZCogcHJvcGVydHkgb2YgdGhlIFNlZ21lbnRlZEJ1dHRvbnMuXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl90b2dnbGVEaXNhYmxlQnV0dG9ucyhpc0Rpc2FibGVkKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvQnV0dG9uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYnV0dG9ucy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShzdGFydFdpdGgoMSksIG9ic2VydmVPbihhc3luY1NjaGVkdWxlciksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX29uUmVmcmVzaCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZURpc2FibGVCdXR0b25zKHRoaXMuX2lzRGlzYWJsZWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3BpY2tCdXR0b25zQnlWYWx1ZXModGhpcy5fY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9idXR0b25zLmZvckVhY2goKGJ1dHRvbikgPT4gdGhpcy5fbGlzdGVuVG9UcmlnZ2VyRXZlbnRzKGJ1dHRvbikpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub1RyaWdnZXJFdmVudHMoYnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaHRtbEVsZW1lbnQgPSBidXR0b25Db21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGNvbnN0IHJlZnJlc2gkID0gbWVyZ2UoZGVzdHJveU9ic2VydmFibGUodGhpcy5fZGVzdHJveVJlZiksIHRoaXMuX29uUmVmcmVzaCQpO1xuXG4gICAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMkID0gbWVyZ2UoXG4gICAgICAgICAgICBmcm9tRXZlbnQoaHRtbEVsZW1lbnQsICdjbGljaycpLFxuICAgICAgICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGh0bWxFbGVtZW50LCAna2V5ZG93bicpLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSksXG4gICAgICAgICAgICAgICAgdGFwKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdHJpZ2dlckV2ZW50cyQucGlwZSh0YWtlVW50aWwocmVmcmVzaCQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5faGFuZGxlVHJpZ2dlck9uQnV0dG9uKGJ1dHRvbkNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlVHJpZ2dlck9uQnV0dG9uKGJ1dHRvbkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5faXNCdXR0b25EaXNhYmxlZChidXR0b25Db21wb25lbnQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzQnV0dG9uU2VsZWN0ZWQoYnV0dG9uQ29tcG9uZW50KSAmJiAhdGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9idXR0b25zLmZvckVhY2goKGJ1dHRvbikgPT4gdGhpcy5fZGVzZWxlY3RCdXR0b24oYnV0dG9uKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0QnV0dG9uKGJ1dHRvbkNvbXBvbmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGVCdXR0b24oYnV0dG9uQ29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb3BhZ2F0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9nZXRWYWx1ZXNCeVNlbGVjdGVkKCkpO1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB0aGlzLl9nZXRWYWx1ZXNCeVNlbGVjdGVkKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90b2dnbGVCdXR0b24oYnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQnV0dG9uU2VsZWN0ZWQoYnV0dG9uQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fZGVzZWxlY3RCdXR0b24oYnV0dG9uQ29tcG9uZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdEJ1dHRvbihidXR0b25Db21wb25lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9waWNrQnV0dG9uc0J5VmFsdWVzKHZhbHVlczogU2VnbWVudGVkQnV0dG9uVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9idXR0b25zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IHRoaXMuX2Rlc2VsZWN0QnV0dG9uKGJ1dHRvbikpO1xuICAgICAgICB0aGlzLl9nZXRCdXR0b25zQnlWYWx1ZXModmFsdWVzKS5mb3JFYWNoKChidXR0b24pID0+IHRoaXMuX3NlbGVjdEJ1dHRvbihidXR0b24pKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEJ1dHRvbnNCeVZhbHVlcyh2YWx1ZXM6IFNlZ21lbnRlZEJ1dHRvblZhbHVlKTogQnV0dG9uQ29tcG9uZW50W10ge1xuICAgICAgICBpZiAoIXZhbHVlcykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2J1dHRvbnMuZmlsdGVyKChidXR0b24pID0+ICEhdmFsdWVzLmZpbmQoKHZhbHVlKSA9PiB0aGlzLl9nZXRCdXR0b25WYWx1ZShidXR0b24pID09PSB2YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2J1dHRvbnMuZmlsdGVyKChidXR0b24pID0+IHRoaXMuX2dldEJ1dHRvblZhbHVlKGJ1dHRvbikgPT09IHZhbHVlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdEJ1dHRvbihidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBidXR0b25Db21wb25lbnQudG9nZ2xlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXNlbGVjdEJ1dHRvbihidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBidXR0b25Db21wb25lbnQudG9nZ2xlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNCdXR0b25TZWxlY3RlZChidXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYnV0dG9uQ29tcG9uZW50LnRvZ2dsZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0J1dHRvbkRpc2FibGVkKGJ1dHRvbkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBidXR0b25Db21wb25lbnQuX2Rpc2FibGVkIHx8IGJ1dHRvbkNvbXBvbmVudC5hcmlhRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90b2dnbGVEaXNhYmxlQnV0dG9ucyhkaXNhYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fYnV0dG9ucykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IChidXR0b24uZGlzYWJsZWQgPSBkaXNhYmxlKSk7XG4gICAgICAgIGlmIChkaXNhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9idXR0b25zLmZvckVhY2goKGJ1dHRvbikgPT4gYnV0dG9uLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ3RydWUnKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0QnV0dG9uVmFsdWUoYnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnQpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGJ1dHRvbkNvbXBvbmVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZSgndmFsdWUnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFJldHVybnMgdmFsdWVzIGRlcGVuZGluZyBvbiBzZWxlY3RlZCBzdGF0ZSBvZiBidXR0b25zXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0VmFsdWVzQnlTZWxlY3RlZCgpOiBTZWdtZW50ZWRCdXR0b25WYWx1ZSB7XG4gICAgICAgIGlmICghdGhpcy5fYnV0dG9ucykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzQnV0dG9ucyA9IHRoaXMuX2J1dHRvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGJ1dHRvbikgPT4gdGhpcy5faXNCdXR0b25TZWxlY3RlZChidXR0b24pKVxuICAgICAgICAgICAgLm1hcCgoYnV0dG9uKSA9PiB0aGlzLl9nZXRCdXR0b25WYWx1ZShidXR0b24pKTtcbiAgICAgICAgaWYgKCF0aGlzLnRvZ2dsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc0J1dHRvbnMubGVuZ3RoID09PSAxID8gcmVzQnV0dG9uc1swXSA6IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzQnV0dG9ucztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|