@sbb-esta/lyne-elements 3.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/autocomplete/autocomplete.component.js +1 -1
- package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +4 -4
- package/button/accent-button/accent-button.component.d.ts +2 -1
- package/button/accent-button/accent-button.component.d.ts.map +1 -1
- package/button/accent-button-link/accent-button-link.component.d.ts +2 -1
- package/button/accent-button-link/accent-button-link.component.d.ts.map +1 -1
- package/button/accent-button-static/accent-button-static.component.d.ts +2 -1
- package/button/accent-button-static/accent-button-static.component.d.ts.map +1 -1
- package/button/button/button.component.d.ts +2 -1
- package/button/button/button.component.d.ts.map +1 -1
- package/button/button-link/button-link.component.d.ts +2 -1
- package/button/button-link/button-link.component.d.ts.map +1 -1
- package/button/button-static/button-static.component.d.ts +2 -1
- package/button/button-static/button-static.component.d.ts.map +1 -1
- package/button/common/button-common.d.ts +1 -0
- package/button/common/button-common.d.ts.map +1 -1
- package/button/common/button-common.js +52 -28
- package/button/common.js +1 -1
- package/button/mini-button/mini-button.component.d.ts +1 -0
- package/button/mini-button/mini-button.component.d.ts.map +1 -1
- package/button/mini-button/mini-button.component.js +20 -14
- package/button/secondary-button/secondary-button.component.d.ts +2 -1
- package/button/secondary-button/secondary-button.component.d.ts.map +1 -1
- package/button/secondary-button-link/secondary-button-link.component.d.ts +2 -1
- package/button/secondary-button-link/secondary-button-link.component.d.ts.map +1 -1
- package/button/secondary-button-static/secondary-button-static.component.d.ts +2 -1
- package/button/secondary-button-static/secondary-button-static.component.d.ts.map +1 -1
- package/button/transparent-button/transparent-button.component.d.ts +2 -1
- package/button/transparent-button/transparent-button.component.d.ts.map +1 -1
- package/button/transparent-button-link/transparent-button-link.component.d.ts +2 -1
- package/button/transparent-button-link/transparent-button-link.component.d.ts.map +1 -1
- package/button/transparent-button-static/transparent-button-static.component.d.ts +2 -1
- package/button/transparent-button-static/transparent-button-static.component.d.ts.map +1 -1
- package/button.js +1 -1
- package/checkbox/checkbox-group/checkbox-group.component.d.ts.map +1 -1
- package/checkbox/checkbox-group/checkbox-group.component.js +4 -4
- package/checkbox/checkbox-panel/checkbox-panel.component.d.ts +3 -0
- package/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
- package/core/a11y/live-announcer.d.ts.map +1 -1
- package/core/a11y/live-announcer.js +10 -8
- package/core/base-elements/link-base-element.d.ts +1 -0
- package/core/base-elements/link-base-element.d.ts.map +1 -1
- package/core/base-elements/link-base-element.js +18 -17
- package/core/config/config.d.ts +5 -0
- package/core/config/config.d.ts.map +1 -1
- package/core/mixins/selection-panel-mixin.d.ts +23 -0
- package/core/mixins/selection-panel-mixin.d.ts.map +1 -0
- package/core/mixins/selection-panel-mixin.js +87 -0
- package/core/mixins.d.ts +1 -0
- package/core/mixins.d.ts.map +1 -1
- package/core/mixins.js +12 -10
- package/core/styles/core.scss +42 -7
- package/core.css +22 -1
- package/custom-elements.json +3603 -913
- package/development/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/development/autocomplete/autocomplete.component.js +2 -2
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +2 -2
- package/development/button/accent-button/accent-button.component.d.ts +2 -1
- package/development/button/accent-button/accent-button.component.d.ts.map +1 -1
- package/development/button/accent-button/accent-button.component.js +1 -1
- package/development/button/accent-button-link/accent-button-link.component.d.ts +2 -1
- package/development/button/accent-button-link/accent-button-link.component.d.ts.map +1 -1
- package/development/button/accent-button-link/accent-button-link.component.js +1 -1
- package/development/button/accent-button-static/accent-button-static.component.d.ts +2 -1
- package/development/button/accent-button-static/accent-button-static.component.d.ts.map +1 -1
- package/development/button/accent-button-static/accent-button-static.component.js +1 -1
- package/development/button/button/button.component.d.ts +2 -1
- package/development/button/button/button.component.d.ts.map +1 -1
- package/development/button/button/button.component.js +1 -1
- package/development/button/button-link/button-link.component.d.ts +2 -1
- package/development/button/button-link/button-link.component.d.ts.map +1 -1
- package/development/button/button-link/button-link.component.js +1 -1
- package/development/button/button-static/button-static.component.d.ts +2 -1
- package/development/button/button-static/button-static.component.d.ts.map +1 -1
- package/development/button/button-static/button-static.component.js +1 -1
- package/development/button/common/button-common.d.ts +1 -0
- package/development/button/common/button-common.d.ts.map +1 -1
- package/development/button/common/button-common.js +42 -5
- package/development/button/common.js +1 -1
- package/development/button/mini-button/mini-button.component.d.ts +1 -0
- package/development/button/mini-button/mini-button.component.d.ts.map +1 -1
- package/development/button/mini-button/mini-button.component.js +41 -2
- package/development/button/secondary-button/secondary-button.component.d.ts +2 -1
- package/development/button/secondary-button/secondary-button.component.d.ts.map +1 -1
- package/development/button/secondary-button/secondary-button.component.js +1 -1
- package/development/button/secondary-button-link/secondary-button-link.component.d.ts +2 -1
- package/development/button/secondary-button-link/secondary-button-link.component.d.ts.map +1 -1
- package/development/button/secondary-button-link/secondary-button-link.component.js +1 -1
- package/development/button/secondary-button-static/secondary-button-static.component.d.ts +2 -1
- package/development/button/secondary-button-static/secondary-button-static.component.d.ts.map +1 -1
- package/development/button/secondary-button-static/secondary-button-static.component.js +1 -1
- package/development/button/transparent-button/transparent-button.component.d.ts +2 -1
- package/development/button/transparent-button/transparent-button.component.d.ts.map +1 -1
- package/development/button/transparent-button/transparent-button.component.js +1 -1
- package/development/button/transparent-button-link/transparent-button-link.component.d.ts +2 -1
- package/development/button/transparent-button-link/transparent-button-link.component.d.ts.map +1 -1
- package/development/button/transparent-button-link/transparent-button-link.component.js +1 -1
- package/development/button/transparent-button-static/transparent-button-static.component.d.ts +2 -1
- package/development/button/transparent-button-static/transparent-button-static.component.d.ts.map +1 -1
- package/development/button/transparent-button-static/transparent-button-static.component.js +1 -1
- package/development/button.js +1 -1
- package/development/checkbox/checkbox-group/checkbox-group.component.d.ts.map +1 -1
- package/development/checkbox/checkbox-group/checkbox-group.component.js +2 -2
- package/development/checkbox/checkbox-panel/checkbox-panel.component.d.ts +3 -0
- package/development/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
- package/development/checkbox/checkbox-panel/checkbox-panel.component.js +1 -1
- package/development/core/a11y/live-announcer.d.ts.map +1 -1
- package/development/core/a11y/live-announcer.js +10 -6
- package/development/core/base-elements/link-base-element.d.ts +1 -0
- package/development/core/base-elements/link-base-element.d.ts.map +1 -1
- package/development/core/base-elements/link-base-element.js +3 -1
- package/development/core/config/config.d.ts +5 -0
- package/development/core/config/config.d.ts.map +1 -1
- package/development/core/config/config.js +1 -1
- package/development/core/mixins/selection-panel-mixin.d.ts +23 -0
- package/development/core/mixins/selection-panel-mixin.d.ts.map +1 -0
- package/development/core/mixins/selection-panel-mixin.js +120 -0
- package/development/core/mixins.d.ts +1 -0
- package/development/core/mixins.d.ts.map +1 -1
- package/development/core/mixins.js +7 -5
- package/development/dialog/dialog/dialog.component.d.ts +4 -2
- package/development/dialog/dialog/dialog.component.d.ts.map +1 -1
- package/development/dialog/dialog/dialog.component.js +61 -11
- package/development/dialog/dialog-actions/dialog-actions.component.d.ts +1 -0
- package/development/dialog/dialog-actions/dialog-actions.component.d.ts.map +1 -1
- package/development/dialog/dialog-actions/dialog-actions.component.js +10 -1
- package/development/dialog/dialog-close-button/dialog-close-button.component.d.ts +22 -0
- package/development/dialog/dialog-close-button/dialog-close-button.component.d.ts.map +1 -0
- package/development/dialog/dialog-close-button/dialog-close-button.component.js +53 -0
- package/development/dialog/dialog-close-button.d.ts +5 -0
- package/development/dialog/dialog-close-button.d.ts.map +1 -0
- package/development/dialog/dialog-close-button.js +5 -0
- package/development/dialog/dialog-content/dialog-content.component.js +1 -1
- package/development/dialog/dialog-title/dialog-title.component.d.ts +1 -0
- package/development/dialog/dialog-title/dialog-title.component.d.ts.map +1 -1
- package/development/dialog/dialog-title/dialog-title.component.js +6 -2
- package/development/dialog.d.ts +1 -0
- package/development/dialog.d.ts.map +1 -1
- package/development/dialog.js +3 -1
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +3 -2
- package/development/form-field/form-field/form-field.component.d.ts +23 -1
- package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
- package/development/form-field/form-field/form-field.component.js +39 -12
- package/development/form-field/form-field.js +2 -1
- package/development/form-field.js +2 -1
- package/development/header/header-environment/header-environment.component.d.ts +23 -0
- package/development/header/header-environment/header-environment.component.d.ts.map +1 -0
- package/development/header/header-environment/header-environment.component.js +111 -0
- package/development/header/header-environment.d.ts +5 -0
- package/development/header/header-environment.d.ts.map +1 -0
- package/development/header/header-environment.js +5 -0
- package/development/menu/menu/menu.component.d.ts +1 -0
- package/development/menu/menu/menu.component.d.ts.map +1 -1
- package/development/menu/menu/menu.component.js +2 -2
- package/development/menu/menu-button/menu-button.component.d.ts +1 -0
- package/development/menu/menu-button/menu-button.component.d.ts.map +1 -1
- package/development/menu/menu-button/menu-button.component.js +2 -3
- package/development/menu/menu-link/menu-link.component.d.ts +1 -0
- package/development/menu/menu-link/menu-link.component.d.ts.map +1 -1
- package/development/menu/menu-link/menu-link.component.js +5 -1
- package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
- package/development/option/optgroup/optgroup-base-element.js +8 -6
- package/development/option/option-hint/option-hint.component.d.ts +18 -0
- package/development/option/option-hint/option-hint.component.d.ts.map +1 -0
- package/development/option/option-hint/option-hint.component.js +74 -0
- package/development/option/option-hint.d.ts +5 -0
- package/development/option/option-hint.d.ts.map +1 -0
- package/development/option/option-hint.js +5 -0
- package/development/option.d.ts +1 -0
- package/development/option.d.ts.map +1 -1
- package/development/option.js +4 -2
- package/development/overlay/overlay-base-element.d.ts +1 -0
- package/development/overlay/overlay-base-element.d.ts.map +1 -1
- package/development/overlay/overlay-base-element.js +3 -3
- package/development/popover/popover/popover.component.d.ts +18 -4
- package/development/popover/popover/popover.component.d.ts.map +1 -1
- package/development/popover/popover/popover.component.js +35 -30
- package/development/radio-button/radio-button-panel/radio-button-panel.component.d.ts +6 -3
- package/development/radio-button/radio-button-panel/radio-button-panel.component.d.ts.map +1 -1
- package/development/radio-button/radio-button-panel/radio-button-panel.component.js +7 -7
- package/development/select/select.component.d.ts.map +1 -1
- package/development/select/select.component.js +2 -2
- package/development/selection-action-panel/selection-action-panel.component.d.ts +22 -0
- package/development/selection-action-panel/selection-action-panel.component.d.ts.map +1 -0
- package/development/selection-action-panel/selection-action-panel.component.js +105 -0
- package/development/selection-action-panel.d.ts +5 -0
- package/development/selection-action-panel.d.ts.map +1 -0
- package/development/selection-action-panel.js +5 -0
- package/development/selection-expansion-panel/selection-expansion-panel.component.d.ts +4 -24
- package/development/selection-expansion-panel/selection-expansion-panel.component.d.ts.map +1 -1
- package/development/selection-expansion-panel/selection-expansion-panel.component.js +26 -106
- package/development/{transparent-button-Ddb_s0a0.js → transparent-button-Dun6bh2G.js} +89 -8
- package/dialog/dialog/dialog.component.d.ts +4 -2
- package/dialog/dialog/dialog.component.d.ts.map +1 -1
- package/dialog/dialog/dialog.component.js +63 -56
- package/dialog/dialog-actions/dialog-actions.component.d.ts +1 -0
- package/dialog/dialog-actions/dialog-actions.component.d.ts.map +1 -1
- package/dialog/dialog-actions/dialog-actions.component.js +13 -9
- package/dialog/dialog-close-button/dialog-close-button.component.d.ts +22 -0
- package/dialog/dialog-close-button/dialog-close-button.component.d.ts.map +1 -0
- package/dialog/dialog-close-button/dialog-close-button.component.js +31 -0
- package/dialog/dialog-close-button.d.ts +5 -0
- package/dialog/dialog-close-button.d.ts.map +1 -0
- package/dialog/dialog-close-button.js +4 -0
- package/dialog/dialog-content/dialog-content.component.js +6 -6
- package/dialog/dialog-title/dialog-title.component.d.ts +1 -0
- package/dialog/dialog-title/dialog-title.component.d.ts.map +1 -1
- package/dialog/dialog-title/dialog-title.component.js +11 -8
- package/dialog.d.ts +1 -0
- package/dialog.d.ts.map +1 -1
- package/dialog.js +6 -4
- package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +7 -7
- package/form-field/form-field/form-field.component.d.ts +23 -1
- package/form-field/form-field/form-field.component.d.ts.map +1 -1
- package/form-field/form-field/form-field.component.js +52 -41
- package/form-field/form-field.js +3 -2
- package/form-field.js +5 -4
- package/header/header-environment/header-environment.component.d.ts +23 -0
- package/header/header-environment/header-environment.component.d.ts.map +1 -0
- package/header/header-environment/header-environment.component.js +37 -0
- package/header/header-environment.d.ts +5 -0
- package/header/header-environment.d.ts.map +1 -0
- package/header/header-environment.js +4 -0
- package/index.d.ts +8 -0
- package/index.js +8 -0
- package/menu/menu/menu.component.d.ts +1 -0
- package/menu/menu/menu.component.d.ts.map +1 -1
- package/menu/menu/menu.component.js +1 -1
- package/menu/menu-button/menu-button.component.d.ts +1 -0
- package/menu/menu-button/menu-button.component.d.ts.map +1 -1
- package/menu/menu-button/menu-button.component.js +8 -8
- package/menu/menu-link/menu-link.component.d.ts +1 -0
- package/menu/menu-link/menu-link.component.d.ts.map +1 -1
- package/menu/menu-link/menu-link.component.js +9 -6
- package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
- package/option/optgroup/optgroup-base-element.js +19 -17
- package/option/option-hint/option-hint.component.d.ts +18 -0
- package/option/option-hint/option-hint.component.d.ts.map +1 -0
- package/option/option-hint/option-hint.component.js +27 -0
- package/option/option-hint.d.ts +5 -0
- package/option/option-hint.d.ts.map +1 -0
- package/option/option-hint.js +4 -0
- package/option.d.ts +1 -0
- package/option.d.ts.map +1 -1
- package/option.js +5 -3
- package/overlay/overlay-base-element.d.ts +1 -0
- package/overlay/overlay-base-element.d.ts.map +1 -1
- package/overlay/overlay-base-element.js +21 -21
- package/package.json +23 -3
- package/popover/popover/popover.component.d.ts +18 -4
- package/popover/popover/popover.component.d.ts.map +1 -1
- package/popover/popover/popover.component.js +104 -95
- package/radio-button/radio-button-panel/radio-button-panel.component.d.ts +6 -3
- package/radio-button/radio-button-panel/radio-button-panel.component.d.ts.map +1 -1
- package/radio-button/radio-button-panel/radio-button-panel.component.js +9 -9
- package/select/select.component.d.ts.map +1 -1
- package/select/select.component.js +1 -1
- package/selection-action-panel/selection-action-panel.component.d.ts +22 -0
- package/selection-action-panel/selection-action-panel.component.d.ts.map +1 -0
- package/selection-action-panel/selection-action-panel.component.js +34 -0
- package/selection-action-panel.d.ts +5 -0
- package/selection-action-panel.d.ts.map +1 -0
- package/selection-action-panel.js +4 -0
- package/selection-expansion-panel/selection-expansion-panel.component.d.ts +4 -24
- package/selection-expansion-panel/selection-expansion-panel.component.d.ts.map +1 -1
- package/selection-expansion-panel/selection-expansion-panel.component.js +45 -102
- package/standard-theme.css +22 -1
- package/transparent-button-rf30m88X.js +9 -0
- package/transparent-button-BlbvexCb.js +0 -9
|
@@ -33,7 +33,7 @@ let SbbRadioButtonPanelElement = (() => {
|
|
|
33
33
|
__privateAdd(this, _value_accessor_storage);
|
|
34
34
|
__privateSet(this, _size_accessor_storage, __runInitializers(this, _size_initializers, isLean() ? "s" : "m"));
|
|
35
35
|
__privateSet(this, _value_accessor_storage, (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _value_initializers, null)));
|
|
36
|
-
this.
|
|
36
|
+
this._hasSelectionPanelElement = (__runInitializers(this, _value_extraInitializers), false);
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Size variant, either s or m.
|
|
@@ -56,7 +56,7 @@ let SbbRadioButtonPanelElement = (() => {
|
|
|
56
56
|
}
|
|
57
57
|
connectedCallback() {
|
|
58
58
|
super.connectedCallback();
|
|
59
|
-
this.
|
|
59
|
+
this._hasSelectionPanelElement = !!this.closest?.("sbb-selection-expansion-panel, sbb-selection-action-panel");
|
|
60
60
|
}
|
|
61
61
|
willUpdate(changedProperties) {
|
|
62
62
|
super.willUpdate(changedProperties);
|
|
@@ -73,18 +73,18 @@ let SbbRadioButtonPanelElement = (() => {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
/**
|
|
76
|
-
* As an exception, panels with
|
|
76
|
+
* As an exception, panels with a selection-panel attached are always focusable
|
|
77
77
|
*/
|
|
78
78
|
updateFocusableRadios() {
|
|
79
79
|
super.updateFocusableRadios();
|
|
80
80
|
const radios = Array.from(this.associatedRadioButtons ?? []);
|
|
81
|
-
radios.filter((r) => !r.disabled && r.
|
|
81
|
+
radios.filter((r) => !r.disabled && r._hasSelectionPanelElement).forEach((r) => r.tabIndex = 0);
|
|
82
82
|
}
|
|
83
83
|
/**
|
|
84
|
-
* As an exception, radio-panels with
|
|
84
|
+
* As an exception, radio-panels with a selection-panel attached are not checked automatically when navigating by keyboard
|
|
85
85
|
*/
|
|
86
86
|
async navigateByKeyboard(next) {
|
|
87
|
-
if (!this.
|
|
87
|
+
if (!this._hasSelectionPanelElement) {
|
|
88
88
|
await super.navigateByKeyboard(next);
|
|
89
89
|
} else {
|
|
90
90
|
next.focus();
|
|
@@ -132,4 +132,4 @@ let SbbRadioButtonPanelElement = (() => {
|
|
|
132
132
|
export {
|
|
133
133
|
SbbRadioButtonPanelElement
|
|
134
134
|
};
|
|
135
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24tcGFuZWwvcmFkaW8tYnV0dG9uLXBhbmVsLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBMaXRFbGVtZW50LFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGdldE92ZXJyaWRlLCBzbG90U3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaXNMZWFuIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHR5cGUge1xuICBTYmJDaGVja2VkU3RhdGVDaGFuZ2UsXG4gIFNiYkRpc2FibGVkU3RhdGVDaGFuZ2UsXG4gIFNiYlN0YXRlQ2hhbmdlLFxufSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHtcbiAgcGFuZWxDb21tb25TdHlsZSxcbiAgU2JiUGFuZWxNaXhpbixcbiAgdHlwZSBTYmJQYW5lbFNpemUsXG4gIFNiYlVwZGF0ZVNjaGVkdWxlck1peGluLFxufSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyByYWRpb0J1dHRvbkNvbW1vblN0eWxlLCBTYmJSYWRpb0J1dHRvbkNvbW1vbkVsZW1lbnRNaXhpbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuZXhwb3J0IHR5cGUgU2JiUmFkaW9CdXR0b25TdGF0ZUNoYW5nZSA9IEV4dHJhY3Q8XG4gIFNiYlN0YXRlQ2hhbmdlLFxuICBTYmJEaXNhYmxlZFN0YXRlQ2hhbmdlIHwgU2JiQ2hlY2tlZFN0YXRlQ2hhbmdlXG4+O1xuXG4vKipcbiAvKipcbiAqIEl0IGRpc3BsYXlzIGEgcmFkaW8gYnV0dG9uIGVuaGFuY2VkIHdpdGggdGhlIHBhbmVsIGRlc2lnbi5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSByYWRpbyBsYWJlbC5cbiAqIEBzbG90IHN1YnRleHQgLSBTbG90IHVzZWQgdG8gcmVuZGVyIGEgc3VidGV4dCB1bmRlciB0aGUgbGFiZWwuXG4gKiBAc2xvdCBzdWZmaXggLSBTbG90IHVzZWQgdG8gcmVuZGVyIGFkZGl0aW9uYWwgY29udGVudCBhZnRlciB0aGUgbGFiZWwuXG4gKiBAc2xvdCBiYWRnZSAtIFVzZSB0aGlzIHNsb3QgdG8gcHJvdmlkZSBhIGBzYmItY2FyZC1iYWRnZWAgKG9wdGlvbmFsKS5cbiAqIEBldmVudCB7RXZlbnR9IGNoYW5nZSAtIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLiBVbmxpa2UgdGhlIGlucHV0IGV2ZW50LCB0aGUgY2hhbmdlIGV2ZW50IGlzIG5vdCBuZWNlc3NhcmlseSBmaXJlZCBmb3IgZWFjaCBhbHRlcmF0aW9uIHRvIGFuIGVsZW1lbnQncyB2YWx1ZS5cbiAqIEBldmVudCB7SW5wdXRFdmVudH0gaW5wdXQgLSBUaGUgaW5wdXQgZXZlbnQgZmlyZXMgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCBhcyBhIGRpcmVjdCByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbi5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZykgfCBudWxsXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1yYWRpby1idXR0b24tcGFuZWwnKVxuQHNsb3RTdGF0ZSgpXG5jbGFzcyBTYmJSYWRpb0J1dHRvblBhbmVsRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYlBhbmVsTWl4aW4oXG4gIFNiYlJhZGlvQnV0dG9uQ29tbW9uRWxlbWVudE1peGluKFNiYlVwZGF0ZVNjaGVkdWxlck1peGluKExpdEVsZW1lbnQpKSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbcmFkaW9CdXR0b25Db21tb25TdHlsZSwgcGFuZWxDb21tb25TdHlsZV07XG5cbiAgLy8gVE9ETzogZml4IHVzaW5nIC4uLnN1cGVyLmV2ZW50cyByZXF1aXJlczogaHR0cHM6Ly9naXRodWIuY29tL3NiYi1kZXNpZ24tc3lzdGVtcy9seW5lLWNvbXBvbmVudHMvaXNzdWVzLzI2MDBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBpbnB1dDogJ2lucHV0JyxcbiAgfSBhcyBjb25zdDtcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgcyBvciBtLlxuICAgKiBAZGVmYXVsdCAnbScgLyAncycgKGxlYW4pXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIEBnZXRPdmVycmlkZSgoaSwgdikgPT4gKGkuZ3JvdXA/LnNpemUgPyAoaS5ncm91cC5zaXplID09PSAneHMnID8gJ3MnIDogaS5ncm91cC5zaXplKSA6IHYpKVxuICBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogU2JiUGFuZWxTaXplID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBlbGVtZW50XG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdmFsdWU6IFQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9oYXNTZWxlY3Rpb25FeHBhbnNpb25QYW5lbEVsZW1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9oYXNTZWxlY3Rpb25FeHBhbnNpb25QYW5lbEVsZW1lbnQgPSAhIXRoaXMuY2xvc2VzdD8uKCdzYmItc2VsZWN0aW9uLWV4cGFuc2lvbi1wYW5lbCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdjaGVja2VkJykpIHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWNoZWNrZWQnLCB0aGlzLmNoZWNrZWQpO1xuXG4gICAgICBpZiAodGhpcy5jaGVja2VkICE9PSBjaGFuZ2VkUHJvcGVydGllcy5nZXQoJ2NoZWNrZWQnKSEpIHtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2hDaGFuZ2VFdmVudCh7IHR5cGU6ICdjaGVja2VkJywgY2hlY2tlZDogdGhpcy5jaGVja2VkIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkJykpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkICE9PSBjaGFuZ2VkUHJvcGVydGllcy5nZXQoJ2Rpc2FibGVkJykhKSB7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2hhbmdlRXZlbnQoeyB0eXBlOiAnZGlzYWJsZWQnLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXMgYW4gZXhjZXB0aW9uLCBwYW5lbHMgd2l0aCBhbiBleHBhbnNpb24tcGFuZWwgYXR0YWNoZWQgYXJlIGFsd2F5cyBmb2N1c2FibGVcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVGb2N1c2FibGVSYWRpb3MoKTogdm9pZCB7XG4gICAgc3VwZXIudXBkYXRlRm9jdXNhYmxlUmFkaW9zKCk7XG4gICAgY29uc3QgcmFkaW9zID0gQXJyYXkuZnJvbSh0aGlzLmFzc29jaWF0ZWRSYWRpb0J1dHRvbnMgPz8gW10pIGFzIFNiYlJhZGlvQnV0dG9uUGFuZWxFbGVtZW50W107XG5cbiAgICByYWRpb3NcbiAgICAgIC5maWx0ZXIoKHIpID0+ICFyLmRpc2FibGVkICYmIHIuX2hhc1NlbGVjdGlvbkV4cGFuc2lvblBhbmVsRWxlbWVudClcbiAgICAgIC5mb3JFYWNoKChyKSA9PiAoci50YWJJbmRleCA9IDApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcyBhbiBleGNlcHRpb24sIHJhZGlvLXBhbmVscyB3aXRoIGFuIGV4cGFuc2lvbi1wYW5lbCBhdHRhY2hlZCBhcmUgbm90IGNoZWNrZWQgYXV0b21hdGljYWxseSB3aGVuIG5hdmlnYXRpbmcgYnkga2V5Ym9hcmRcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBuYXZpZ2F0ZUJ5S2V5Ym9hcmQobmV4dDogU2JiUmFkaW9CdXR0b25QYW5lbEVsZW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX2hhc1NlbGVjdGlvbkV4cGFuc2lvblBhbmVsRWxlbWVudCkge1xuICAgICAgYXdhaXQgc3VwZXIubmF2aWdhdGVCeUtleWJvYXJkKG5leHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGlzcGF0Y2hDaGFuZ2VFdmVudChkZXRhaWw6IFNiYlN0YXRlQ2hhbmdlKTogdm9pZCB7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICogSW50ZXJuYWwgZXZlbnQgdGhhdCBlbWl0cyB3aGVuZXZlciB0aGUgc3RhdGUgb2YgdGhlIHJhZGlvIG9wdGlvblxuICAgICAqIGluIHJlbGF0aW9uIHRvIHRoZSBwYXJlbnQgc2VsZWN0aW9uIHBhbmVsIGNoYW5nZXMuXG4gICAgICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudDxTYmJTdGF0ZUNoYW5nZT4oJ3N0YXRlY2hhbmdlJywgeyBidWJibGVzOiB0cnVlLCBkZXRhaWwgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8bGFiZWwgY2xhc3M9XCJzYmItc2VsZWN0aW9uLXBhbmVsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2VsZWN0aW9uLXBhbmVsX19iYWRnZVwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJiYWRnZVwiPjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXJhZGlvLWJ1dHRvblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXJhZGlvLWJ1dHRvbl9fbGFiZWwtc2xvdFwiPlxuICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cInN1ZmZpeFwiPjwvc2xvdD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInN1YnRleHRcIj48L3Nsb3Q+XG4gICAgICAgICAgJHt0aGlzLmV4cGFuc2lvblN0YXRlXG4gICAgICAgICAgICA/IGh0bWxgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHt0aGlzLmV4cGFuc2lvblN0YXRlfTwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXJhZGlvLWJ1dHRvbi1wYW5lbCc6IFNiYlJhZGlvQnV0dG9uUGFuZWxFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lBK0NNLDhCQUEwQixNQUFBOztBQUYvQixNQUFBLG1CQUFBLENBQUEsY0FBYyx3QkFBd0IsR0FDdEMsV0FBVzs7OztvQkFDeUMsY0FDbkQsaUNBQWlDLHdCQUF3QixVQUFVLENBQUMsQ0FBQzs7Ozs7OztBQUQxQixFQUFBLG1CQUFRLFlBRXBEO0FBQUE7O0FBZUM7QUFNQTtBQU5nQix5QkFBQSx3QkFBQSxrQkFBQSxNQUFBLG9CQUFxQixPQUFBLElBQVcsTUFBTSxHQUFHO0FBTXpDLHlCQUFBLDBCQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLHFCQUFrQixJQUFJO0FBRTlCLFdBQUEsc0NBQWtDLGtCQUFBLE1BQUEsd0JBQUEsR0FBWTtBQUFBLElBNEV4RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFwRkUsSUFBZ0IsT0FBSTtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBcEIsSUFBZ0IsS0FBSSxPQUFBO0FBQUEseUJBQUEsd0JBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFNcEIsSUFBZ0IsUUFBSztBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBckIsSUFBZ0IsTUFBSyxPQUFBO0FBQUEseUJBQUEseUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFJTCxvQkFBaUI7QUFDL0IsWUFBTSxrQkFBQTtBQUNOLFdBQUsscUNBQXFDLENBQUMsQ0FBQyxLQUFLLFVBQVUsK0JBQStCO0FBQUEsSUFDNUY7QUFBQSxJQUVtQixXQUFXLG1CQUF1QztBQUNuRSxZQUFNLFdBQVcsaUJBQWlCO0FBRWxDLFVBQUksa0JBQWtCLElBQUksU0FBUyxHQUFHO0FBQ3BDLGFBQUssZ0JBQWdCLGdCQUFn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
|
|
135
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24tcGFuZWwvcmFkaW8tYnV0dG9uLXBhbmVsLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBMaXRFbGVtZW50LFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGdldE92ZXJyaWRlLCBzbG90U3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaXNMZWFuIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHR5cGUge1xuICBTYmJDaGVja2VkU3RhdGVDaGFuZ2UsXG4gIFNiYkRpc2FibGVkU3RhdGVDaGFuZ2UsXG4gIFNiYlN0YXRlQ2hhbmdlLFxufSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHtcbiAgcGFuZWxDb21tb25TdHlsZSxcbiAgU2JiUGFuZWxNaXhpbixcbiAgdHlwZSBTYmJQYW5lbFNpemUsXG4gIFNiYlVwZGF0ZVNjaGVkdWxlck1peGluLFxufSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyByYWRpb0J1dHRvbkNvbW1vblN0eWxlLCBTYmJSYWRpb0J1dHRvbkNvbW1vbkVsZW1lbnRNaXhpbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuZXhwb3J0IHR5cGUgU2JiUmFkaW9CdXR0b25TdGF0ZUNoYW5nZSA9IEV4dHJhY3Q8XG4gIFNiYlN0YXRlQ2hhbmdlLFxuICBTYmJEaXNhYmxlZFN0YXRlQ2hhbmdlIHwgU2JiQ2hlY2tlZFN0YXRlQ2hhbmdlXG4+O1xuXG4vKipcbiAvKipcbiAqIEl0IGRpc3BsYXlzIGEgcmFkaW8gYnV0dG9uIGVuaGFuY2VkIHdpdGggdGhlIHBhbmVsIGRlc2lnbi5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSByYWRpbyBsYWJlbC5cbiAqIEBzbG90IHN1YnRleHQgLSBTbG90IHVzZWQgdG8gcmVuZGVyIGEgc3VidGV4dCB1bmRlciB0aGUgbGFiZWwuXG4gKiBAc2xvdCBzdWZmaXggLSBTbG90IHVzZWQgdG8gcmVuZGVyIGFkZGl0aW9uYWwgY29udGVudCBhZnRlciB0aGUgbGFiZWwuXG4gKiBAc2xvdCBiYWRnZSAtIFVzZSB0aGlzIHNsb3QgdG8gcHJvdmlkZSBhIGBzYmItY2FyZC1iYWRnZWAgKG9wdGlvbmFsKS5cbiAqIEBldmVudCB7RXZlbnR9IGNoYW5nZSAtIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLiBVbmxpa2UgdGhlIGlucHV0IGV2ZW50LCB0aGUgY2hhbmdlIGV2ZW50IGlzIG5vdCBuZWNlc3NhcmlseSBmaXJlZCBmb3IgZWFjaCBhbHRlcmF0aW9uIHRvIGFuIGVsZW1lbnQncyB2YWx1ZS5cbiAqIEBldmVudCB7SW5wdXRFdmVudH0gaW5wdXQgLSBUaGUgaW5wdXQgZXZlbnQgZmlyZXMgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCBhcyBhIGRpcmVjdCByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbi5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZykgfCBudWxsXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1yYWRpby1idXR0b24tcGFuZWwnKVxuQHNsb3RTdGF0ZSgpXG5jbGFzcyBTYmJSYWRpb0J1dHRvblBhbmVsRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYlBhbmVsTWl4aW4oXG4gIFNiYlJhZGlvQnV0dG9uQ29tbW9uRWxlbWVudE1peGluKFNiYlVwZGF0ZVNjaGVkdWxlck1peGluKExpdEVsZW1lbnQpKSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbcmFkaW9CdXR0b25Db21tb25TdHlsZSwgcGFuZWxDb21tb25TdHlsZV07XG5cbiAgLy8gVE9ETzogZml4IHVzaW5nIC4uLnN1cGVyLmV2ZW50cyByZXF1aXJlczogaHR0cHM6Ly9naXRodWIuY29tL3NiYi1kZXNpZ24tc3lzdGVtcy9seW5lLWNvbXBvbmVudHMvaXNzdWVzLzI2MDBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBpbnB1dDogJ2lucHV0JyxcbiAgfSBhcyBjb25zdDtcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgcyBvciBtLlxuICAgKiBAZGVmYXVsdCAnbScgLyAncycgKGxlYW4pXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIEBnZXRPdmVycmlkZSgoaSwgdikgPT4gKGkuZ3JvdXA/LnNpemUgPyAoaS5ncm91cC5zaXplID09PSAneHMnID8gJ3MnIDogaS5ncm91cC5zaXplKSA6IHYpKVxuICBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogU2JiUGFuZWxTaXplID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBlbGVtZW50XG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdmFsdWU6IFQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9oYXNTZWxlY3Rpb25QYW5lbEVsZW1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9oYXNTZWxlY3Rpb25QYW5lbEVsZW1lbnQgPSAhIXRoaXMuY2xvc2VzdD8uKFxuICAgICAgJ3NiYi1zZWxlY3Rpb24tZXhwYW5zaW9uLXBhbmVsLCBzYmItc2VsZWN0aW9uLWFjdGlvbi1wYW5lbCcsXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnY2hlY2tlZCcpKSB7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1jaGVja2VkJywgdGhpcy5jaGVja2VkKTtcblxuICAgICAgaWYgKHRoaXMuY2hlY2tlZCAhPT0gY2hhbmdlZFByb3BlcnRpZXMuZ2V0KCdjaGVja2VkJykhKSB7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2hhbmdlRXZlbnQoeyB0eXBlOiAnY2hlY2tlZCcsIGNoZWNrZWQ6IHRoaXMuY2hlY2tlZCB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCAhPT0gY2hhbmdlZFByb3BlcnRpZXMuZ2V0KCdkaXNhYmxlZCcpISkge1xuICAgICAgICB0aGlzLl9kaXNwYXRjaENoYW5nZUV2ZW50KHsgdHlwZTogJ2Rpc2FibGVkJywgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFzIGFuIGV4Y2VwdGlvbiwgcGFuZWxzIHdpdGggYSBzZWxlY3Rpb24tcGFuZWwgYXR0YWNoZWQgYXJlIGFsd2F5cyBmb2N1c2FibGVcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVGb2N1c2FibGVSYWRpb3MoKTogdm9pZCB7XG4gICAgc3VwZXIudXBkYXRlRm9jdXNhYmxlUmFkaW9zKCk7XG4gICAgY29uc3QgcmFkaW9zID0gQXJyYXkuZnJvbSh0aGlzLmFzc29jaWF0ZWRSYWRpb0J1dHRvbnMgPz8gW10pIGFzIFNiYlJhZGlvQnV0dG9uUGFuZWxFbGVtZW50W107XG5cbiAgICByYWRpb3NcbiAgICAgIC5maWx0ZXIoKHIpID0+ICFyLmRpc2FibGVkICYmIHIuX2hhc1NlbGVjdGlvblBhbmVsRWxlbWVudClcbiAgICAgIC5mb3JFYWNoKChyKSA9PiAoci50YWJJbmRleCA9IDApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcyBhbiBleGNlcHRpb24sIHJhZGlvLXBhbmVscyB3aXRoIGEgc2VsZWN0aW9uLXBhbmVsIGF0dGFjaGVkIGFyZSBub3QgY2hlY2tlZCBhdXRvbWF0aWNhbGx5IHdoZW4gbmF2aWdhdGluZyBieSBrZXlib2FyZFxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIG5hdmlnYXRlQnlLZXlib2FyZChuZXh0OiBTYmJSYWRpb0J1dHRvblBhbmVsRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5faGFzU2VsZWN0aW9uUGFuZWxFbGVtZW50KSB7XG4gICAgICBhd2FpdCBzdXBlci5uYXZpZ2F0ZUJ5S2V5Ym9hcmQobmV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kaXNwYXRjaENoYW5nZUV2ZW50KGRldGFpbDogU2JiU3RhdGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKiBJbnRlcm5hbCBldmVudCB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSBzdGF0ZSBvZiB0aGUgcmFkaW8gb3B0aW9uXG4gICAgICogaW4gcmVsYXRpb24gdG8gdGhlIHBhcmVudCBzZWxlY3Rpb24gcGFuZWwgY2hhbmdlcy5cbiAgICAgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50PFNiYlN0YXRlQ2hhbmdlPignc3RhdGVjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGRldGFpbCB9KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxsYWJlbCBjbGFzcz1cInNiYi1zZWxlY3Rpb24tcGFuZWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zZWxlY3Rpb24tcGFuZWxfX2JhZGdlXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImJhZGdlXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItcmFkaW8tYnV0dG9uXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItcmFkaW8tYnV0dG9uX19sYWJlbC1zbG90XCI+XG4gICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwic3VmZml4XCI+PC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwic3VidGV4dFwiPjwvc2xvdD5cbiAgICAgICAgICAke3RoaXMuZXhwYW5zaW9uU3RhdGVcbiAgICAgICAgICAgID8gaHRtbGA8c2JiLXNjcmVlbi1yZWFkZXItb25seT4ke3RoaXMuZXhwYW5zaW9uU3RhdGV9PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PmBcbiAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItcmFkaW8tYnV0dG9uLXBhbmVsJzogU2JiUmFkaW9CdXR0b25QYW5lbEVsZW1lbnQ7XG4gIH1cblxuICBpbnRlcmZhY2UgR2xvYmFsRXZlbnRIYW5kbGVyc0V2ZW50TWFwIHtcbiAgICBzdGF0ZWNoYW5nZTogQ3VzdG9tRXZlbnQ8U2JiU3RhdGVDaGFuZ2U+O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lBK0NNLDhCQUEwQixNQUFBOztBQUYvQixNQUFBLG1CQUFBLENBQUEsY0FBYyx3QkFBd0IsR0FDdEMsV0FBVzs7OztvQkFDeUMsY0FDbkQsaUNBQWlDLHdCQUF3QixVQUFVLENBQUMsQ0FBQzs7Ozs7OztBQUQxQixFQUFBLG1CQUFRLFlBRXBEO0FBQUE7O0FBZUM7QUFNQTtBQU5nQix5QkFBQSx3QkFBQSxrQkFBQSxNQUFBLG9CQUFxQixPQUFBLElBQVcsTUFBTSxHQUFHO0FBTXpDLHlCQUFBLDBCQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLHFCQUFrQixJQUFJO0FBRTlCLFdBQUEsNkJBQXlCLGtCQUFBLE1BQUEsd0JBQUEsR0FBWTtBQUFBLElBOEUvQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUF0RkUsSUFBZ0IsT0FBSTtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBcEIsSUFBZ0IsS0FBSSxPQUFBO0FBQUEseUJBQUEsd0JBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFNcEIsSUFBZ0IsUUFBSztBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBckIsSUFBZ0IsTUFBSyxPQUFBO0FBQUEseUJBQUEseUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFJTCxvQkFBaUI7QUFDL0IsWUFBTSxrQkFBQTtBQUNOLFdBQUssNEJBQTRCLENBQUMsQ0FBQyxLQUFLLFVBQ3RDLDJEQUEyRDtBQUFBLElBRS9E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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/select/select.component.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAO/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAWnE,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAQtB,MAAM,mBAAmB,CAAC;;
|
|
1
|
+
{"version":3,"file":"select.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/select/select.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -663,7 +663,7 @@ let SbbSelectElement = (() => {
|
|
|
663
663
|
return Promise.all(formData.getAll(this.name).map(async (entry) => entry instanceof Blob ? JSON.parse(await entry.text()) : entry));
|
|
664
664
|
}
|
|
665
665
|
_syncProperties() {
|
|
666
|
-
this.querySelectorAll?.("sbb-divider").forEach((
|
|
666
|
+
this.querySelectorAll?.("sbb-divider, sbb-option-hint").forEach((el) => el.negative = this.negative);
|
|
667
667
|
this.querySelectorAll?.("sbb-option, sbb-optgroup").forEach((element) => {
|
|
668
668
|
element.toggleAttribute("data-negative", this.negative);
|
|
669
669
|
element.toggleAttribute("data-multiple", this.multiple);
|
|
@@ -1059,4 +1059,4 @@ let SbbSelectElement = (() => {
|
|
|
1059
1059
|
export {
|
|
1060
1060
|
SbbSelectElement
|
|
1061
1061
|
};
|
|
1062
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBSZXNpemVDb250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9yZXNpemUtY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eURlY2xhcmF0aW9uLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgaXNTZXJ2ZXIsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcbmltcG9ydCB7IHVudGlsIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvdW50aWwuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4IH0gZnJvbSAnLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB7IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLCBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgZ2V0T3ZlcnJpZGUsIGhhbmRsZURpc3RpbmN0Q2hhbmdlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7XG4gIGlzTGVhbixcbiAgaXNOZXh0anMsXG4gIGlzU2FmYXJpLFxuICBpc1plcm9BbmltYXRpb25EdXJhdGlvbixcbiAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUsXG59IGZyb20gJy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IGkxOG5TZWxlY3Rpb25SZXF1aXJlZCB9IGZyb20gJy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQge1xuICB0eXBlIEZvcm1SZXN0b3JlUmVhc29uLFxuICB0eXBlIEZvcm1SZXN0b3JlU3RhdGUsXG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG4gIFNiYkh5ZHJhdGlvbk1peGluLFxuICBTYmJOZWdhdGl2ZU1peGluLFxuICBTYmJSZWFkb25seU1peGluLFxuICBTYmJSZXF1aXJlZE1peGluLFxuICBTYmJVcGRhdGVTY2hlZHVsZXJNaXhpbixcbn0gZnJvbSAnLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHsgaXNFdmVudE9uRWxlbWVudCwgb3ZlcmxheUdhcEZpeENvcm5lcnMsIHNldE92ZXJsYXlQb3NpdGlvbiB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdEdyb3VwRWxlbWVudCwgU2JiT3B0aW9uRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3NlbGVjdC5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIE9uIFNhZmFyaSwgdGhlIGFyaWEgcm9sZSAnbGlzdGJveCcgbXVzdCBiZSBvbiB0aGUgaG9zdCBlbGVtZW50LCBvciBlbHNlIFZvaWNlT3ZlciB3b24ndCB3b3JrIGF0IGFsbC5cbiAqIE9uIHRoZSBvdGhlciBoYW5kLCBKQVdTIGFuZCBOVkRBIG5lZWQgdGhlIHJvbGUgdG8gYmUgYW4gXCJpbW1lZGlhdGUgcGFyZW50XCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgcGFuZWwgd2l0aCBzZWxlY3RhYmxlIG9wdGlvbnMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgb3B0aW9ucy5cbiAqIEBjc3Nwcm9wIFstLXNiYi1zZWxlY3Qtei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICogQG92ZXJyaWRlVHlwZSB2YWx1ZSAtIChUID0gc3RyaW5nIHwgc3RyaW5nW10pIHwgbnVsbFxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VsZWN0JylcbmNsYXNzIFNiYlNlbGVjdEVsZW1lbnQ8VCA9IHN0cmluZz4gZXh0ZW5kcyBTYmJVcGRhdGVTY2hlZHVsZXJNaXhpbihcbiAgU2JiRGlzYWJsZWRNaXhpbihcbiAgICBTYmJOZWdhdGl2ZU1peGluKFxuICAgICAgU2JiSHlkcmF0aW9uTWl4aW4oXG4gICAgICAgIFNiYlJlcXVpcmVkTWl4aW4oXG4gICAgICAgICAgU2JiUmVhZG9ubHlNaXhpbihcbiAgICAgICAgICAgIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW48dHlwZW9mIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50PihTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgKSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSBhcmlhUm9sZU9uSG9zdCA/ICdsaXN0Ym94JyA6IG51bGw7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8vIFRPRE86IGZpeCB1c2luZyAuLi5zdXBlci5ldmVudHMgcmVxdWlyZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9zYmItZGVzaWduLXN5c3RlbXMvbHluZS1jb21wb25lbnRzL2lzc3Vlcy8yNjAwXG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGNoYW5nZTogJ2NoYW5nZScsXG4gICAgaW5wdXQ6ICdpbnB1dCcsXG4gICAgZGlzcGxheXZhbHVlY2hhbmdlOiAnZGlzcGxheXZhbHVlY2hhbmdlJyxcbiAgICBiZWZvcmVvcGVuOiAnYmVmb3Jlb3BlbicsXG4gICAgb3BlbjogJ29wZW4nLFxuICAgIGJlZm9yZWNsb3NlOiAnYmVmb3JlY2xvc2UnLFxuICAgIGNsb3NlOiAnY2xvc2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBUaGUgcGxhY2Vob2xkZXIgdXNlZCBpZiBubyB2YWx1ZSBoYXMgYmVlbiBzZWxlY3RlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBhY2Nlc3NvciBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdCBhbGxvd3MgZm9yIG11bHRpcGxlIHNlbGVjdGlvbi4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBoYW5kbGVEaXN0aW5jdENoYW5nZSgoZTogU2JiU2VsZWN0RWxlbWVudDxUPiwgbmV3VmFsdWU6IGJvb2xlYW4pID0+XG4gICAgZS5fb25NdWx0aXBsZUNoYW5nZWQobmV3VmFsdWUpLFxuICApXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQGZvcmNlVHlwZSgpXG4gIEBoYW5kbGVEaXN0aW5jdENoYW5nZSgoZTogU2JiU2VsZWN0RWxlbWVudDxUPiwgbmV3VmFsdWU6IGJvb2xlYW4pID0+XG4gICAgZS5fY2xvc2VPbkRpc2FibGVkUmVhZG9ubHlDaGFuZ2VkKG5ld1ZhbHVlKSxcbiAgKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIEBnZXRPdmVycmlkZSgoZTogU2JiU2VsZWN0RWxlbWVudDxUPiwgdjogYm9vbGVhbik6IGJvb2xlYW4gPT4gdiB8fCBlLmlzRGlzYWJsZWRFeHRlcm5hbGx5KCkpXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBWYWx1ZSBvZiB0aGUgZm9ybSBlbGVtZW50LiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdmFsdWU6IFQgfCBUW10gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgbSBvciBzLlxuICAgKiBAZGVmYXVsdCAnbScgLyAncycgKGxlYW4pXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBzaXplOiAnbScgfCAncycgPSBpc0xlYW4oKSA/ICdzJyA6ICdtJztcblxuICAvKipcbiAgICogRm9ybSB0eXBlIG9mIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0ICdzZWxlY3Qtb25lIC8gc2VsZWN0LW11bHRpcGxlJ1xuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlwbGUgPyAnc2VsZWN0LW11bHRpcGxlJyA6ICdzZWxlY3Qtb25lJztcbiAgfVxuXG4gIC8qKiBUaGUgdmFsdWUgZGlzcGxheWVkIGJ5IHRoZSBjb21wb25lbnQuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2Rpc3BsYXlWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfb3JpZ2luUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfb3ZlcmxheSE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vcHRpb25Db250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfb3JpZ2luRWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlciA9IG5ldyBTYmJFc2NhcGFibGVPdmVybGF5Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfb3ZlcmxheUlkID0gYHNiYi1zZWxlY3QtJHsrK25leHRJZH1gO1xuICBwcml2YXRlIF9hY3RpdmVJdGVtSW5kZXggPSAtMTtcbiAgcHJpdmF0ZSBfc2VhcmNoVGltZW91dD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIF9zZWFyY2hTdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZGlkTG9hZCA9IGZhbHNlO1xuICBwcml2YXRlIF9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2VDb250cm9sbGVyID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICAvKipcbiAgICogVGhlICdjb21ib2JveCcgaW5wdXQgZWxlbWVudFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBnZXQgaW5wdXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlckVsZW1lbnQ7XG4gIH1cblxuICAvKiogR2V0cyBhbGwgdGhlIFNiYk9wdGlvbkVsZW1lbnQgcHJvamVjdGVkIGluIHRoZSBzZWxlY3QuICovXG4gIHByaXZhdGUgZ2V0IF9vcHRpb25zKCk6IFNiYk9wdGlvbkVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiT3B0aW9uRWxlbWVudDxUPj4oJ3NiYi1vcHRpb24nKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfZmlsdGVyZWRPcHRpb25zKCk6IFNiYk9wdGlvbkVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuZmlsdGVyKChvcHQpID0+ICFvcHQuZGlzYWJsZWQgJiYgIW9wdC5oYXNBdHRyaWJ1dGUoJ2RhdGEtZ3JvdXAtZGlzYWJsZWQnKSk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Lignb3B0aW9uc2VsZWN0aW9uY2hhbmdlJywgKGU6IEV2ZW50KSA9PiB0aGlzLl9vbk9wdGlvbkNoYW5nZWQoZSkpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdvcHRpb25MYWJlbENoYW5nZWQnLCAoZTogRXZlbnQpID0+IHRoaXMuX29uT3B0aW9uTGFiZWxDaGFuZ2VkKGUpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2xpY2snLCAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgU2JiU2VsZWN0RWxlbWVudDxUPiB8IFNiYk9wdGlvbkVsZW1lbnQ8VD47XG4gICAgICBpZiAodGFyZ2V0LmxvY2FsTmFtZSA9PT0gJ3NiYi1vcHRpb24nKSB7XG4gICAgICAgIC8vIE9wdGlvbiBjbGlja1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgIXRhcmdldC5kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3RvZ2dsZU9wZW5pbmcoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBNdXRhdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgICAgICBjb25maWc6IHsgYXR0cmlidXRlRmlsdGVyOiBbJ2FyaWEtbGFiZWxsZWRieScsICdhcmlhLWxhYmVsJywgJ2FyaWEtZGVzY3JpYmVkYnknXSB9LFxuICAgICAgICBjYWxsYmFjazogKCkgPT4gdGhpcy5fc3luY0FyaWFMYWJlbHMoKSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jQXJpYUxhYmVscygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RyaWdnZXJFbGVtZW50IHx8IGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUoXG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCxcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknLFxuICAgICAgdGhpcy5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpLFxuICAgICk7XG4gICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUodGhpcy5fdHJpZ2dlckVsZW1lbnQsICdhcmlhLWxhYmVsJywgdGhpcy5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSk7XG4gICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUoXG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCxcbiAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JyxcbiAgICAgIHRoaXMuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JyksXG4gICAgKTtcblxuICAgIC8vIFVzaW5nIHRoZSBhc3NvY2lhdGVkIGxhYmVscyBpcyBvbmx5IGEgZmFsbGJhY2suXG4gICAgLy8gVGhlIGRyYXdiYWNrIGlzLCB0aGF0IGl0IGRvZXNuJ3QgZ2V0IHVwZGF0ZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBsaXN0IG9mIGxhYmVsIGNoYW5nZXMuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgJiZcbiAgICAgICF0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JykgJiZcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmxhYmVscy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICdhcmlhLWxhYmVsJyxcbiAgICAgICAgQXJyYXkuZnJvbSh0aGlzLmludGVybmFscy5sYWJlbHMpXG4gICAgICAgICAgLm1hcCgobGFiZWwpID0+IGxhYmVsLnRleHRDb250ZW50KVxuICAgICAgICAgIC5qb2luKCcsICcpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogT3BlbnMgdGhlIHNlbGVjdGlvbiBwYW5lbC4gKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgfHxcbiAgICAgICF0aGlzLl9vdmVybGF5IHx8XG4gICAgICB0aGlzLl9vcHRpb25zLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgdGhpcy5kaXNhYmxlZCB8fFxuICAgICAgdGhpcy5mb3JtRGlzYWJsZWQgfHxcbiAgICAgICF0aGlzLmRpc3BhdGNoQmVmb3JlT3BlbkV2ZW50KClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KCcuc2JiLXNlbGVjdF9fY29udGFpbmVyJyk/LnNob3dQb3BvdmVyPy4oKTtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5pbmcnO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJywgdHJ1ZSk7XG4gICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbG9zZXMgdGhlIHNlbGVjdGlvbiBwYW5lbC4gKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5hYm9ydCgpO1xuICAgIGlmICh0aGlzLl9vcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aGlzLl9vcmlnaW5SZXNpemVPYnNlcnZlci51bm9ic2VydmUodGhpcy5fb3JpZ2luRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLW9wdGlvbnMtcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgY3VycmVudCBkaXNwbGF5ZWQgdmFsdWUuICovXG4gIHB1YmxpYyBnZXREaXNwbGF5VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheVZhbHVlID8/ICcnO1xuICB9XG5cbiAgLyoqIExpc3RlbnMgdG8gb3B0aW9uIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX29uT3B0aW9uQ2hhbmdlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uRWxlbWVudDxUPjtcbiAgICBpZiAodGFyZ2V0LnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9vbk9wdGlvblNlbGVjdGVkKHRhcmdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29uT3B0aW9uRGVzZWxlY3RlZCh0YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBMaXN0ZW5zIHRvIG9wdGlvbiBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9vbk9wdGlvbkxhYmVsQ2hhbmdlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uRWxlbWVudDxUPjtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuX2dldFNlbGVjdGVkKCk7XG5cbiAgICBpZiAoXG4gICAgICAoIUFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpICYmIHRhcmdldCAhPT0gc2VsZWN0ZWQpIHx8XG4gICAgICAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkgJiYgIXNlbGVjdGVkLmluY2x1ZGVzKHRhcmdldCkpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlRGlzcGxheVZhbHVlKHNlbGVjdGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZURpc3BsYXlWYWx1ZShzZWxlY3RlZDogU2JiT3B0aW9uRWxlbWVudDxUPiB8IFNiYk9wdGlvbkVsZW1lbnQ8VD5bXSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkpIHtcbiAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHNlbGVjdGVkLm1hcCgobykgPT4gby50ZXh0Q29udGVudCkuam9pbignLCAnKSB8fCBudWxsO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHNlbGVjdGVkPy50ZXh0Q29udGVudD8udHJpbSgpIHx8IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2Rpc3BsYXl2YWx1ZWNoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBgdmFsdWVgIHByb3BlcnR5IHNob3VsZCBiZSBhZGFwdGVkIHdoZW4gdGhlIGBtdWx0aXBsZWAgcHJvcGVydHkgY2hhbmdlczpcbiAgICogICAtIGlmIGl0IGNoYW5nZXMgdG8gdHJ1ZSwgdGhlICd2YWx1ZScgaXMgc2V0IHRvIGFuIGFycmF5O1xuICAgKiAgIC0gaWYgaXQgY2hhbmdlcyB0byBmYWxzZSwgdGhlIGZpcnN0IGF2YWlsYWJsZSBvcHRpb24gaXMgc2V0IGFzICd2YWx1ZScgb3RoZXJ3aXNlIGl0J3Mgc2V0IHRvIG51bGwuXG4gICAqL1xuICBwcml2YXRlIF9vbk11bHRpcGxlQ2hhbmdlZChpc0NoYW5naW5nVG9NdWx0aXBsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0NoYW5naW5nVG9NdWx0aXBsZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkID8gW3RoaXMudmFsdWUgYXMgVF0gOiBbXTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmxlbmd0aCA/IHRoaXMudmFsdWVbMF0gOiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgYGRpc2FibGVkYCBvciB0aGUgYHJlYWRvbmx5YCBwcm9wZXJ0aWVzIGFyZSBzZXQsIGFuZCB0aGUgcGFuZWwgaXMgb3BlbiwgY2xvc2UgaXQuXG4gICAqL1xuICBwcml2YXRlIF9jbG9zZU9uRGlzYWJsZWRSZWFkb25seUNoYW5nZWQobmV3VmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgbmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvKiogU2V0cyB0aGUgX2Rpc3BsYXlWYWx1ZSBieSBjaGVja2luZyB0aGUgaW50ZXJuYWwgc2JiLW9wdGlvbnMgYW5kIHNldHRpbmcgdGhlIGNvcnJlY3QgYHNlbGVjdGVkYCB2YWx1ZSBvbiB0aGVtLiAqL1xuICBwcml2YXRlIF9vblZhbHVlQ2hhbmdlZChuZXdWYWx1ZTogVCB8IFRbXSk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9maWx0ZXJlZE9wdGlvbnM7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkge1xuICAgICAgY29uc3Qgb3B0aW9uRWxlbWVudCA9IG9wdGlvbnMuZmluZCgobykgPT4gby52YWx1ZSA9PT0gbmV3VmFsdWUpID8/IG51bGw7XG4gICAgICBpZiAob3B0aW9uRWxlbWVudCkge1xuICAgICAgICBvcHRpb25FbGVtZW50LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIG9wdGlvbnNcbiAgICAgICAgLmZpbHRlcigobykgPT4gKG8udmFsdWUgPz8gby5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpICE9PSBuZXdWYWx1ZSlcbiAgICAgICAgLmZvckVhY2goKG8pID0+IChvLnNlbGVjdGVkID0gZmFsc2UpKTtcbiAgICAgIHRoaXMuX3VwZGF0ZURpc3BsYXlWYWx1ZShvcHRpb25FbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucy5maWx0ZXIoKG8pID0+ICFuZXdWYWx1ZS5pbmNsdWRlcyhvLnZhbHVlKSkuZm9yRWFjaCgoZSkgPT4gKGUuc2VsZWN0ZWQgPSBmYWxzZSkpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IG9wdGlvbnMuZmlsdGVyKChvKSA9PiBuZXdWYWx1ZS5pbmNsdWRlcyhvLnZhbHVlKSk7XG4gICAgICBzZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goKG8pID0+IChvLnNlbGVjdGVkID0gdHJ1ZSkpO1xuICAgICAgdGhpcy5fdXBkYXRlRGlzcGxheVZhbHVlKHNlbGVjdGVkRWxlbWVudHMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIC8vIFdhaXQgZm9yIHNzciBoeWRyYXRpb25cbiAgICBpZiAoIWlzTmV4dGpzKCkpIHtcbiAgICAgIHRoaXMuc3RhcnRVcGRhdGUoKTtcbiAgICAgIHRoaXMuX3NldHVwU2VsZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZm9jdXMoKTogdm9pZCB7XG4gICAgLy8gRm9yd2FyZCBmb2N1cyB0byB0aGUgdHJpZ2dlciBlbGVtZW50LlxuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5mb2N1cygpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYmx1cigpOiB2b2lkIHtcbiAgICAvLyBGb3J3YXJkIGJsdXIgdG8gdGhlIHRyaWdnZXIgZWxlbWVudC5cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uYmx1cigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgZWxlbWVudCdzIGZpcnN0IGF0dHJpYnV0ZSB3aG9zZSBxdWFsaWZpZWQgbmFtZSBpcyBxdWFsaWZpZWROYW1lLlxuICAgKlxuICAgKiBbTUROIFJlZmVyZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL0VsZW1lbnQvcmVtb3ZlQXR0cmlidXRlKVxuICAgKiBAaW50ZXJuYWwgV2UgbmVlZCB0byBvdmVycmlkZSB0aGlzIGR1ZSB0byBhIGh5ZHJhdGlvbiBpc3N1ZSB3aXRoIE5leHQuanMuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQXR0cmlidXRlKHF1YWxpZmllZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEluIE5leHQuanMgdGhlIGh5ZHJhdGlvbiBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHdlIGNhbiBtYW5pcHVsYXRlIHRoZSBsaWdodCBET00uXG4gICAgLy8gQGxpdC9yZWFjdCBjYWxscyByZW1vdmVBdHRyaWJ1dGUoJ2RlZmVyLWh5ZHJhdGlvbicpIGluIGEgdXNlTGF5b3V0RWZmZWN0LFxuICAgIC8vIHdoaWNoIGlzIGRvbmUgYWZ0ZXIgaHlkcmF0aW9uIGlzIGZpbmlzaGVkLiBEdWUgdG8gdGhpcyB3ZSBpbnRlcmNlcHQgdGhpcyBjYWxsXG4gICAgLy8gaW4gb3ZlcnJpZGluZyByZW1vdmVBdHRyaWJ1dGUgdG8gZmluaXNoIGluaXRpYWxpemF0aW9uIG9mIHRoZSBzYmItc2VsZWN0LlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9saXQvbGl0L2Jsb2IvbWFpbi9wYWNrYWdlcy9yZWFjdC9zcmMvY3JlYXRlLWNvbXBvbmVudC50cyNMMjkzLUwyOTZcbiAgICAvLyBXZSBhbHNvIG5lZWQgdG8gd2FpdCBmb3IgdXBkYXRlIGNvbXBsZXRlIGluIG9yZGVyIHRvIGJlIHN1cmUgdGhhdCB0aGUgc2hhZG93IERPTSBoYXMgYmVlbiByZW5kZXJlZC5cbiAgICBpZiAoaXNOZXh0anMoKSAmJiBxdWFsaWZpZWROYW1lID09PSAnZGVmZXItaHlkcmF0aW9uJyAmJiAhdGhpcy5fZGlkTG9hZCkge1xuICAgICAgdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpID0+IHRoaXMuX3NldHVwU2VsZWN0KCkpO1xuICAgIH1cbiAgICBzdXBlci5yZW1vdmVBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgIGlmIChhcmlhUm9sZU9uSG9zdCkge1xuICAgICAgdGhpcy5pZCB8fD0gdGhpcy5fb3ZlcmxheUlkO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpID8/IHRoaXMuY2xvc2VzdD8uKCdbZGF0YS1mb3JtLWZpZWxkXScpO1xuXG4gICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IGZvcm1GaWVsZC5oYXNBdHRyaWJ1dGUoJ25lZ2F0aXZlJyk7XG4gICAgfVxuICAgIHRoaXMuX3N5bmNQcm9wZXJ0aWVzKCk7XG4gICAgdGhpcy5fc3luY0FyaWFMYWJlbHMoKTtcblxuICAgIGlmICh0aGlzLl9kaWRMb2FkKSB7XG4gICAgICB0aGlzLl9zZXR1cE9yaWdpbigpO1xuICAgICAgdGhpcy5fc2V0dXBUcmlnZ2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlcXVlc3RVcGRhdGUoXG4gICAgbmFtZT86IFByb3BlcnR5S2V5LFxuICAgIG9sZFZhbHVlPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucmVxdWVzdFVwZGF0ZShuYW1lLCBvbGRWYWx1ZSwgb3B0aW9ucyk7XG4gICAgaWYgKCFuYW1lICYmIHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9zeW5jQXJpYUxhYmVscygpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlJykgJiYgKHRoaXMuX2RpZExvYWQgfHwgdGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuX29uVmFsdWVDaGFuZ2VkKHRoaXMudmFsdWUhKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmVnYXRpdmUnKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ211bHRpcGxlJykpIHtcbiAgICAgIHRoaXMuX3N5bmNQcm9wZXJ0aWVzKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3JlYWRPbmx5JykpIHtcbiAgICAgIHRoaXMuX2Nsb3NlT25EaXNhYmxlZFJlYWRvbmx5Q2hhbmdlZCh0aGlzLnJlYWRPbmx5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLnByZXBlbmQodGhpcy5fdHJpZ2dlckVsZW1lbnQpOyAvLyBUYWtlIGJhY2sgdGhlIHRyaWdnZXIgZWxlbWVudCBwcmV2aW91c2x5IG1vdmVkIHRvIHRoZSBsaWdodCBET01cbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZXNldCB2YWx1ZSBpcyB0aGUgYXR0cmlidXRlIHZhbHVlICh0aGUgc2V0dXAgdmFsdWUpLCBudWxsIG90aGVyd2lzZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9ICh0aGlzLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA/IHRoaXMuZ2V0QXR0cmlidXRlKCd2YWx1ZScpIDogbnVsbCkgYXMgVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgIF9yZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSAnc3RyaW5nJyB8fCBzdGF0ZSA9PSBudWxsKSB7XG4gICAgICB0aGlzLnZhbHVlID0gKHN0YXRlIGFzIFQpID8/IG51bGw7XG4gICAgfSBlbHNlIGlmIChzdGF0ZSBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7XG4gICAgICB0aGlzLl9yZWFkRm9ybURhdGEoc3RhdGUpLnRoZW4oKGFycmF5KSA9PiB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm11bHRpcGxlID8gYXJyYXkgOiBhcnJheVswXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3JlYWRGb3JtRGF0YShmb3JtRGF0YTogRm9ybURhdGEpOiBQcm9taXNlPFRbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGZvcm1EYXRhXG4gICAgICAgIC5nZXRBbGwodGhpcy5uYW1lKVxuICAgICAgICAubWFwKGFzeW5jIChlbnRyeSkgPT5cbiAgICAgICAgICBlbnRyeSBpbnN0YW5jZW9mIEJsb2IgPyBKU09OLnBhcnNlKGF3YWl0IGVudHJ5LnRleHQoKSkgOiAoZW50cnkgYXMgVCksXG4gICAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItZGl2aWRlcicpLmZvckVhY2goKGVsZW1lbnQpID0+IChlbGVtZW50Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZSkpO1xuXG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiT3B0aW9uRWxlbWVudDxUPiB8IFNiYk9wdEdyb3VwRWxlbWVudD4oXG4gICAgICAnc2JiLW9wdGlvbiwgc2JiLW9wdGdyb3VwJyxcbiAgICApLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW5lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSk7XG4gICAgICBlbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1tdWx0aXBsZScsIHRoaXMubXVsdGlwbGUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiT3B0aW9uRWxlbWVudDxUPiB8IFNiYk9wdEdyb3VwRWxlbWVudD4oXG4gICAgICAnc2JiLW9wdGlvbiwgc2JiLW9wdGdyb3VwJyxcbiAgICApLmZvckVhY2goKGUpID0+IGUucmVxdWVzdFVwZGF0ZT8uKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNob3VsZFZhbGlkYXRlKG5hbWU6IFByb3BlcnR5S2V5IHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLnNob3VsZFZhbGlkYXRlKG5hbWUpIHx8IG5hbWUgPT09ICd2YWx1ZScgfHwgbmFtZSA9PT0gJ3JlcXVpcmVkJztcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICBzdXBlci52YWxpZGF0ZSgpO1xuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmIHRoaXMuX29wdGlvbnMuZXZlcnkoKG8pID0+IG8udmFsdWUgIT09IHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLnNldFZhbGlkaXR5RmxhZygndmFsdWVNaXNzaW5nJywgaTE4blNlbGVjdGlvblJlcXVpcmVkW3RoaXMuX2xhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlVmFsaWRpdHlGbGFnKCd2YWx1ZU1pc3NpbmcnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cFNlbGVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXR1cE9yaWdpbigpO1xuICAgIHRoaXMuX3NldHVwVHJpZ2dlcigpO1xuICAgIHRoaXMuX2RpZExvYWQgPSB0cnVlO1xuICAgIHRoaXMuY29tcGxldGVVcGRhdGUoKTtcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBvcmlnaW5FbGVtZW50OyBpZiB0aGUgY29tcG9uZW50IGlzIHVzZWQgaW4gYSBzYmItZm9ybS1maWVsZCB1c2VzIGl0LCBvdGhlcndpc2UgdXNlcyB0aGUgcGFyZW50RWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBfc2V0dXBPcmlnaW4oKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk7XG4gICAgaWYgKHRoaXMuX29yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX29yaWdpblJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzLl9vcmlnaW5FbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5fb3JpZ2luRWxlbWVudCA9XG4gICAgICBmb3JtRmllbGQ/LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LignI292ZXJsYXktYW5jaG9yJykgPz8gdGhpcy5wYXJlbnRFbGVtZW50ITtcbiAgICBpZiAodGhpcy5fb3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAgICdkYXRhLW9wdGlvbi1wYW5lbC1vcmlnaW4tYm9yZGVybGVzcycsXG4gICAgICAgICEhZm9ybUZpZWxkPy5oYXNBdHRyaWJ1dGU/LignYm9yZGVybGVzcycpLFxuICAgICAgKTtcblxuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuX29yaWdpblJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5fb3JpZ2luRWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvIGFzc2VzcyBzY3JlZW4tcmVhZGVycyBwcm9ibGVtcyBjYXVzZWQgYnkgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYXJpYSBwYXR0ZXJucyBhbmQgc2hhZG93IERPTSxcbiAgICogd2UgYXJlIGZvcmNlZCB0byBtb3ZlIHRoZSAnY29tYm9ib3gnIHRyaWdnZXIgZWxlbWVudCB0byB0aGUgbGlnaHQgRE9NXG4gICAqL1xuICBwcml2YXRlIF9zZXR1cFRyaWdnZXIoKTogdm9pZCB7XG4gICAgLy8gTW92ZSB0aGUgdHJpZ2dlciBiZWZvcmUgdGhlIHNiYi1zZWxlY3RcbiAgICB0aGlzLnBhcmVudEVsZW1lbnQhLmluc2VydEJlZm9yZT8uKHRoaXMuX3RyaWdnZXJFbGVtZW50LCB0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE92ZXJsYXlQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBzZXRPdmVybGF5UG9zaXRpb24oXG4gICAgICB0aGlzLl9vdmVybGF5LFxuICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudCxcbiAgICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lcixcbiAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1zZWxlY3RfX2NvbnRhaW5lcicpISxcbiAgICAgIHRoaXMsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEluIHJhcmUgY2FzZXMgaXQgY2FuIGJlIHRoYXQgdGhlIGFuaW1hdGlvbkVuZCBldmVudCBpcyB0cmlnZ2VyZWQgdHdpY2UuXG4gIC8vIFRvIGF2b2lkIGVudGVyaW5nIGEgY29ycnVwdCBzdGF0ZSwgZXhpdCB3aGVuIHN0YXRlIGlzIG5vdCBleHBlY3RlZC5cbiAgcHJpdmF0ZSBfb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgdGhpcy5fYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICB0aGlzLl9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5jb25uZWN0KCk7XG4gICAgaWYgKHRoaXMuX29yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX29yaWdpblJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5fb3JpZ2luRWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMuZGlzcGF0Y2hPcGVuRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oJy5zYmItc2VsZWN0X19jb250YWluZXInKT8uaGlkZVBvcG92ZXI/LigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgIHRoaXMuX3Jlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lci5zY3JvbGxUb3AgPSAwO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLmRpc3BhdGNoQ2xvc2VFdmVudCgpO1xuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHNlbGVjdGVkLCB1cGRhdGVzIHRoZSBkaXNwbGF5VmFsdWU7IGl0IGFsc28gY2xvc2VzIHRoZSBzZWxlY3QgaWYgbm90IGBtdWx0aXBsZWAuICovXG4gIHByaXZhdGUgX29uT3B0aW9uU2VsZWN0ZWQob3B0aW9uU2VsZWN0aW9uQ2hhbmdlOiBTYmJPcHRpb25FbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLl9maWx0ZXJlZE9wdGlvbnNcbiAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uaWQgIT09IG9wdGlvblNlbGVjdGlvbkNoYW5nZS5pZClcbiAgICAgICAgLmZvckVhY2goKG9wdGlvbikgPT4gKG9wdGlvbi5zZWxlY3RlZCA9IGZhbHNlKSk7XG4gICAgICB0aGlzLnZhbHVlID0gb3B0aW9uU2VsZWN0aW9uQ2hhbmdlLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IFtvcHRpb25TZWxlY3Rpb25DaGFuZ2UudmFsdWUhXTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiAhdGhpcy52YWx1ZS5pbmNsdWRlcyhvcHRpb25TZWxlY3Rpb25DaGFuZ2UudmFsdWUhKSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIG9wdGlvblNlbGVjdGlvbkNoYW5nZS52YWx1ZSFdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2Rpc3BhdGNoSW5wdXRFdmVudHMoKTtcbiAgfVxuXG4gIC8qKiBXaGVuIGFuIG9wdGlvbiBpcyB1bnNlbGVjdGVkIGluIGBtdWx0aXBsZWAsIHJlbW92ZXMgaXQgZnJvbSB2YWx1ZSBhbmQgdXBkYXRlcyBkaXNwbGF5VmFsdWUuICovXG4gIHByaXZhdGUgX29uT3B0aW9uRGVzZWxlY3RlZChvcHRpb25TZWxlY3Rpb25DaGFuZ2U6IFNiYk9wdGlvbkVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoKGVsKSA9PiBlbCAhPT0gb3B0aW9uU2VsZWN0aW9uQ2hhbmdlLnZhbHVlKTtcbiAgICAgIHRoaXMuX2Rpc3BhdGNoSW5wdXRFdmVudHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kaXNwYXRjaElucHV0RXZlbnRzKCk6IHZvaWQge1xuICAgIC8qKiBUaGUgaW5wdXQgZXZlbnQgZmlyZXMgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCBhcyBhIGRpcmVjdCByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbi4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLlxuICAgICAqIFVubGlrZSB0aGUgaW5wdXQgZXZlbnQsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IG5lY2Vzc2FyaWx5IGZpcmVkXG4gICAgICogZm9yIGVhY2ggYWx0ZXJhdGlvbiB0byBhbiBlbGVtZW50J3MgdmFsdWUuXG4gICAgICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gUmVjYWxjdWxhdGUgdGhlIG92ZXJsYXkgcG9zaXRpb24gb24gc2Nyb2xsIGFuZCB3aW5kb3cgcmVzaXplXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgLy8gV2l0aG91dCBjYXB0dXJlLCBvdGhlciBzY3JvbGwgY29udGV4dHMgd291bGQgbm90IGJ1YmJsZSB0byB0aGlzIGV2ZW50IGxpc3RlbmVyLlxuICAgICAgLy8gQ2FwdHVyZSBhbGxvd3MgdXMgdG8gcmVhY3QgdG8gYWxsIHNjcm9sbCBjb250ZXh0cyBpbiB0aGlzIERPTS5cbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIC8vIENsb3NlIG1lbnUgb24gYmFja2Ryb3AgY2xpY2tcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoZXYpID0+IHRoaXMuX3BvaW50ZXJEb3duTGlzdGVuZXIoZXYpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCAoZXYpID0+IHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX29uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnKSB7XG4gICAgICB0aGlzLl9vcGVuZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHRoaXMuX2Nsb3NlZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NoZWNrRm9yTGV0dGVyU2VsZWN0aW9uKGV2ZW50KSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25CeVRleHQoZXZlbnQpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlYWRPbmx5IHx8IHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NoZWNrRm9yTGV0dGVyU2VsZWN0aW9uKGV2ZW50KSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25CeVRleHQoZXZlbnQpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0QnlLZXlib2FyZCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudCwgMCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50LCB0aGlzLl9maWx0ZXJlZE9wdGlvbnMubGVuZ3RoIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrRm9yTGV0dGVyU2VsZWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScgfHxcbiAgICAgIGV2ZW50LmtleSA9PT0gJ0NsZWFyJyB8fFxuICAgICAgKGV2ZW50LmtleS5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgZXZlbnQua2V5ICE9PSAnICcgJiZcbiAgICAgICAgIWV2ZW50LmFsdEtleSAmJlxuICAgICAgICAhZXZlbnQuY3RybEtleSAmJlxuICAgICAgICAhZXZlbnQubWV0YUtleSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TmV4dEFjdGl2ZU9wdGlvbkJ5VGV4dChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8vIFNldCB0aW1lb3V0IGFuZCB0aGUgc3RyaW5nIHRvIHNlYXJjaC5cbiAgICBpZiAodHlwZW9mIHRoaXMuX3NlYXJjaFRpbWVvdXQgPT09IHR5cGVvZiBzZXRUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fc2VhcmNoVGltZW91dCk7XG4gICAgfVxuICAgIHRoaXMuX3NlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLl9zZWFyY2hTdHJpbmcgPSAnJyksIDEwMDApO1xuICAgIHRoaXMuX3NlYXJjaFN0cmluZyArPSBldmVudC5rZXk7XG5cbiAgICAvLyBSZW9yZGVyIHRoZSBfZmlsdGVyZWRPcHRpb24gYXJyYXkgdG8gaGF2ZSB0aGUgbGFzdCBzZWxlY3RlZCBlbGVtZW50IGF0IHRoZSBib3R0b20uXG4gICAgY29uc3QgaW5kZXhGb3JTbGljZTogbnVtYmVyID0gdGhpcy5fYWN0aXZlSXRlbUluZGV4ICsgMTtcbiAgICBjb25zdCBmaWx0ZXJlZE9wdGlvbnNTb3J0ZWQgPSBbXG4gICAgICAuLi50aGlzLl9maWx0ZXJlZE9wdGlvbnMuc2xpY2UoaW5kZXhGb3JTbGljZSksXG4gICAgICAuLi50aGlzLl9maWx0ZXJlZE9wdGlvbnMuc2xpY2UoMCwgaW5kZXhGb3JTbGljZSksXG4gICAgXTtcblxuICAgIGNvbnN0IG1hdGNoID0gZmlsdGVyZWRPcHRpb25zU29ydGVkLmZpbmQoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24udGV4dENvbnRlbnQ/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLl9zZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkgPT09IDAsXG4gICAgKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIC8vIElmIGFuIGV4YWN0IG1hdGNoIGhhcyBiZWVuIGZvdW5kLCBnbyB0byB0aGF0IG9wdGlvbi5cbiAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb24oZXZlbnQsIHRoaXMuX2ZpbHRlcmVkT3B0aW9ucy5pbmRleE9mKG1hdGNoKSk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuX3NlYXJjaFN0cmluZy5sZW5ndGggPiAxICYmXG4gICAgICBuZXcgUmVnRXhwKGBeJHt0aGlzLl9zZWFyY2hTdHJpbmcuY2hhckF0KDApfSokYCkudGVzdCh0aGlzLl9zZWFyY2hTdHJpbmcpXG4gICAgKSB7XG4gICAgICAvLyBJZiBubyBleGFjdCBtYXRjaCBoYXMgYmVlbiBmb3VuZCBidXQgdGhlIHN0cmluZyB0byBzZWFyY2ggaXMgbWFkZSBieSB0aGUgc2FtZSByZXBlYXRlZCBsZXR0ZXIsXG4gICAgICAvLyBnbyB0byB0aGUgZmlyc3QgZWxlbWVudCwgaWYgZXhpc3RzLCB0aGF0IG1hdGNoZXMgdGhlIGxldHRlci5cbiAgICAgIGNvbnN0IGZpcnN0TWF0Y2ggPSBmaWx0ZXJlZE9wdGlvbnNTb3J0ZWQuZmluZChcbiAgICAgICAgKG9wdGlvbikgPT5cbiAgICAgICAgICBvcHRpb24udGV4dENvbnRlbnQ/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLl9zZWFyY2hTdHJpbmdbMF0udG9Mb3dlckNhc2UoKSkgPT09IDAsXG4gICAgICApO1xuICAgICAgaWYgKGZpcnN0TWF0Y2gpIHtcbiAgICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudCwgdGhpcy5fZmlsdGVyZWRPcHRpb25zLmluZGV4T2YoZmlyc3RNYXRjaCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBtYXRjaCBmb3VuZCwgY2xlYXIgdGhlIHRpbWVvdXQgYW5kIHRoZSBzZWFyY2ggdGVybS5cbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9zZWFyY2hUaW1lb3V0KTtcbiAgICAgIHRoaXMuX3NlYXJjaFN0cmluZyA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdEJ5S2V5Ym9hcmQoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gdGhpcy5fZmlsdGVyZWRPcHRpb25zW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF07XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgYWN0aXZlT3B0aW9uPy5bJ3NlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbiddKCFhY3RpdmVPcHRpb24uc2VsZWN0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJlZE9wdGlvbnMgPSB0aGlzLl9maWx0ZXJlZE9wdGlvbnM7XG5cbiAgICAvLyBQcmV2ZW50IGtleWJvYXJkIG5hdmlnYXRpb24gaWYgYWxsIG9wdGlvbnMgYXJlIGRpc2FibGVkXG4gICAgaWYgKGZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0SW5kZXggPVxuICAgICAgaW5kZXggPz8gZ2V0TmV4dEVsZW1lbnRJbmRleChldmVudCwgdGhpcy5fYWN0aXZlSXRlbUluZGV4LCBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoKTtcbiAgICBjb25zdCBuZXh0T3B0aW9uID0gZmlsdGVyZWRPcHRpb25zW25leHRJbmRleF07XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gZmlsdGVyZWRPcHRpb25zW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF07XG5cbiAgICB0aGlzLl9zZXRBY3RpdmVFbGVtZW50KG5leHRPcHRpb24sIGFjdGl2ZU9wdGlvbik7XG5cbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuX3NldFNlbGVjdGVkRWxlbWVudChuZXh0T3B0aW9uLCBhY3RpdmVPcHRpb24pO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQ/LnNoaWZ0S2V5KSB7XG4gICAgICBuZXh0T3B0aW9uWydzZWxlY3RWaWFVc2VySW50ZXJhY3Rpb24nXSghbmV4dE9wdGlvbi5zZWxlY3RlZCk7XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IG5leHRJbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgX3NldEFjdGl2ZUVsZW1lbnQoXG4gICAgbmV4dEFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uRWxlbWVudDxUPixcbiAgICBsYXN0QWN0aXZlT3B0aW9uOiBTYmJPcHRpb25FbGVtZW50PFQ+IHwgbnVsbCA9IG51bGwsXG4gICAgc2V0QWN0aXZlRGVzY2VuZGFudCA9IHRydWUsXG4gICk6IHZvaWQge1xuICAgIG5leHRBY3RpdmVPcHRpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgIG5leHRBY3RpdmVPcHRpb24uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pO1xuXG4gICAgaWYgKHNldEFjdGl2ZURlc2NlbmRhbnQpIHtcbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgbmV4dEFjdGl2ZU9wdGlvbi5pZCk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgdGhlIHByZXZpb3VzXG4gICAgaWYgKGxhc3RBY3RpdmVPcHRpb24gJiYgbGFzdEFjdGl2ZU9wdGlvbiAhPT0gbmV4dEFjdGl2ZU9wdGlvbikge1xuICAgICAgbGFzdEFjdGl2ZU9wdGlvbi5zZXRBY3RpdmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFNlbGVjdGVkRWxlbWVudChcbiAgICBuZXh0QWN0aXZlT3B0aW9uOiBTYmJPcHRpb25FbGVtZW50PFQ+LFxuICAgIGxhc3RBY3RpdmVPcHRpb246IFNiYk9wdGlvbkVsZW1lbnQ8VD4sXG4gICk6IHZvaWQge1xuICAgIG5leHRBY3RpdmVPcHRpb25bJ3NlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbiddKHRydWUpO1xuXG4gICAgaWYgKGxhc3RBY3RpdmVPcHRpb24gJiYgbGFzdEFjdGl2ZU9wdGlvbiAhPT0gbmV4dEFjdGl2ZU9wdGlvbikge1xuICAgICAgbGFzdEFjdGl2ZU9wdGlvblsnc2VsZWN0VmlhVXNlckludGVyYWN0aW9uJ10oZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0QWN0aXZlRWxlbWVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5fZmlsdGVyZWRPcHRpb25zW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF07XG5cbiAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgYWN0aXZlRWxlbWVudC5zZXRBY3RpdmUoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSAtMTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHBvaW50ZXJkb3duIGV2ZW50IHRhcmdldCBpcyB0cmlnZ2VyZWQgb24gdGhlIG1lbnUuXG4gIHByaXZhdGUgX3BvaW50ZXJEb3duTGlzdGVuZXIgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTWVudSA9IGlzRXZlbnRPbkVsZW1lbnQodGhpcy5fb3ZlcmxheSwgZXZlbnQpO1xuICB9O1xuXG4gIC8vIENsb3NlIG1lbnUgb24gYmFja2Ryb3AgY2xpY2suXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTWVudSAmJiAhaXNFdmVudE9uRWxlbWVudCh0aGlzLl9vdmVybGF5LCBldmVudCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfc2V0VmFsdWVGcm9tU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLl9nZXRTZWxlY3RlZCgpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKSB7XG4gICAgICBpZiAoc2VsZWN0ZWQgJiYgc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB2YWx1ZTogVFtdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIHNlbGVjdGVkKSB7XG4gICAgICAgICAgdmFsdWUucHVzaChvcHRpb24udmFsdWUhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZCkge1xuICAgICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gdGhpcy5fZmlsdGVyZWRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24gPT09IHNlbGVjdGVkKTtcbiAgICAgIHRoaXMudmFsdWUgPSBzZWxlY3RlZC52YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIC8vIElmIHdlIGFycml2ZSBoZXJlIHdpdGhvdXQgYW55IG9wdGlvbnMgYmVpbmcgc2VsZWN0ZWQsXG4gICAgICAvLyB3ZSBzaG91bGQgdHJ5IHRvIGNoZWNrIHRoZSBjdXJyZW50IHZhbHVlIGFnYWluc3QgdGhlIGF2YWlsYWJsZSBvcHRpb25zXG4gICAgICAvLyAoYW5kIHNlbGVjdCBpdCBpZiBhbnkgbWF0Y2ggaXMgZm91bmQpLlxuICAgICAgdGhpcy5fb25WYWx1ZUNoYW5nZWQodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U2VsZWN0ZWQoKTogU2JiT3B0aW9uRWxlbWVudDxUPiB8IFNiYk9wdGlvbkVsZW1lbnQ8VD5bXSB8IG51bGwge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRPcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGVkKSA/PyBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5mb3JtRGlzYWJsZWQgfHwgdGhpcy5yZWFkT25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uZm9jdXMoKTtcblxuICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgY2FzZSAnb3BlbmVkJzoge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnY2xvc2VkJzoge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zcHJlYWREZWZlcnJlZERpc3BsYXlWYWx1ZShcbiAgICBwbGFjZWhvbGRlcjogVGVtcGxhdGVSZXN1bHQsXG4gICk6IChUZW1wbGF0ZVJlc3VsdCB8IFByb21pc2U8VGVtcGxhdGVSZXN1bHQ+KVtdIHtcbiAgICByZXR1cm4gW3RoaXMuX2RlZmVycmVkRGlzcGxheVZhbHVlKHBsYWNlaG9sZGVyKSwgcGxhY2Vob2xkZXJdO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZGVmZXJyZWREaXNwbGF5VmFsdWUocGxhY2Vob2xkZXI6IFRlbXBsYXRlUmVzdWx0KTogUHJvbWlzZTxUZW1wbGF0ZVJlc3VsdD4ge1xuICAgIGlmICh0aGlzLmh5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheVZhbHVlID8gaHRtbGAke3RoaXMuX2Rpc3BsYXlWYWx1ZX1gIDogcGxhY2Vob2xkZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDwhLS0gVGhpcyBlbGVtZW50IGlzIHZpc3VhbGx5IGhpZGRlbiBhbmQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgbGlnaHQgRE9NIHRvIGFsbG93IHNjcmVlblxuICAgICAgcmVhZGVycyB0byB3b3JrIHByb3Blcmx5IC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHkgc2JiLXNlbGVjdC10cmlnZ2VyXCJcbiAgICAgICAgdGFiaW5kZXg9JHt0aGlzLmRpc2FibGVkIHx8IHRoaXMuZm9ybURpc2FibGVkID8gbm90aGluZyA6ICcwJ31cbiAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICBhcmlhLXJlcXVpcmVkPSR7dGhpcy5yZXF1aXJlZC50b1N0cmluZygpfVxuICAgICAgICBhcmlhLWNvbnRyb2xzPSR7dGhpcy5fb3ZlcmxheUlkfVxuICAgICAgICBhcmlhLW93bnM9JHt0aGlzLl9vdmVybGF5SWR9XG4gICAgICAgIEBrZXlkb3duPSR7dGhpcy5fb25LZXlEb3dufVxuICAgICAgICBAY2xpY2s9JHt0aGlzLl90b2dnbGVPcGVuaW5nfVxuICAgICAgICAke3JlZigocmVmKSA9PiAodGhpcy5fdHJpZ2dlckVsZW1lbnQgPSByZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgID5cbiAgICAgICAgJHt1bnRpbCguLi50aGlzLl9zcHJlYWREZWZlcnJlZERpc3BsYXlWYWx1ZShodG1sYDxzcGFuPiR7dGhpcy5wbGFjZWhvbGRlcn08L3NwYW4+YCkpfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gVmlzdWFsbHkgZGlzcGxheSB0aGUgdmFsdWUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXNlbGVjdF9fdHJpZ2dlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAke3VudGlsKFxuICAgICAgICAgIC4uLnRoaXMuX3NwcmVhZERlZmVycmVkRGlzcGxheVZhbHVlKFxuICAgICAgICAgICAgaHRtbGA8c3BhbiBjbGFzcz1cInNiYi1zZWxlY3RfX3RyaWdnZXItLXBsYWNlaG9sZGVyXCI+JHt0aGlzLnBsYWNlaG9sZGVyfTwvc3Bhbj5gLFxuICAgICAgICAgICksXG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zZWxlY3RfX2dhcC1maXhcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2VsZWN0X19jb250YWluZXJcIiBwb3BvdmVyPVwibWFudWFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2VsZWN0X19nYXAtZml4XCI+JHtvdmVybGF5R2FwRml4Q29ybmVycygpfTwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgQGFuaW1hdGlvbmVuZD0ke3RoaXMuX29uQW5pbWF0aW9uRW5kfVxuICAgICAgICAgIGNsYXNzPVwic2JiLXNlbGVjdF9fcGFuZWxcIlxuICAgICAgICAgICR7cmVmKChkaWFsb2dSZWYpID0+ICh0aGlzLl9vdmVybGF5ID0gZGlhbG9nUmVmIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNlbGVjdF9fd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBpZD0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMuX292ZXJsYXlJZCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLXNlbGVjdF9fb3B0aW9uc1wiXG4gICAgICAgICAgICAgIHJvbGU9JHshYXJpYVJvbGVPbkhvc3QgPyAnbGlzdGJveCcgOiBub3RoaW5nfVxuICAgICAgICAgICAgICA/YXJpYS1tdWx0aXNlbGVjdGFibGU9JHt0aGlzLm11bHRpcGxlfVxuICAgICAgICAgICAgICAke3JlZigoY29udGFpbmVyUmVmKSA9PiAodGhpcy5fb3B0aW9uQ29udGFpbmVyID0gY29udGFpbmVyUmVmIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fc2V0VmFsdWVGcm9tU2VsZWN0ZWR9Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zZWxlY3QnOiBTYmJTZWxlY3RFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsic3RhdGUiLCJyZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3Q0EsTUFBTSxpQkFBaUI7QUFFdkIsSUFBSSxTQUFTO0lBYVAsb0JBQWdCLE1BQUE7OzBCQURyQixjQUFjLFlBQVksQ0FBQzs7OztvQkFDZSx3QkFDekMsaUJBQ0UsaUJBQ0Usa0JBQ0UsaUJBQ0UsaUJBQ0UsdUJBQXVELHVCQUF1QixDQUFDLENBQ2hGLENBQ0YsQ0FDRixDQUNGLENBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFYZ0MsRUFBQSxtQkFBUSxZQVkxQztBQUFBLElBa0dDLGNBQUE7QUFDRSxZQUFBO0FBakZGO0FBUUE7QUFRQTtBQUlBO0FBTTZCO0FBV3BCO0FBckNPLHlCQUFBLCtCQUFBLGtCQUFBLE1BQUEsMkJBQXNCLEVBQUU7QUFReEIseUJBQUEsNkJBQUEsa0JBQUEsTUFBQSw4QkFBQSxHQUFBLGtCQUFBLE1BQUEsd0JBQW9CLEtBQUs7QUFRaEIseUJBQUEsNkJBQUEsa0JBQUEsTUFBQSwyQkFBQSxHQUFBLGtCQUFBLE1BQUEsd0JBQW9CLEtBQUs7QUFJbEMseUJBQUEsMEJBQUEsa0JBQUEs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
|
|
1062
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBSZXNpemVDb250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9yZXNpemUtY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eURlY2xhcmF0aW9uLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgaXNTZXJ2ZXIsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcbmltcG9ydCB7IHVudGlsIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvdW50aWwuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4IH0gZnJvbSAnLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB7IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLCBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgZ2V0T3ZlcnJpZGUsIGhhbmRsZURpc3RpbmN0Q2hhbmdlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7XG4gIGlzTGVhbixcbiAgaXNOZXh0anMsXG4gIGlzU2FmYXJpLFxuICBpc1plcm9BbmltYXRpb25EdXJhdGlvbixcbiAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUsXG59IGZyb20gJy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IGkxOG5TZWxlY3Rpb25SZXF1aXJlZCB9IGZyb20gJy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQge1xuICB0eXBlIEZvcm1SZXN0b3JlUmVhc29uLFxuICB0eXBlIEZvcm1SZXN0b3JlU3RhdGUsXG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG4gIFNiYkh5ZHJhdGlvbk1peGluLFxuICBTYmJOZWdhdGl2ZU1peGluLFxuICBTYmJSZWFkb25seU1peGluLFxuICBTYmJSZXF1aXJlZE1peGluLFxuICBTYmJVcGRhdGVTY2hlZHVsZXJNaXhpbixcbn0gZnJvbSAnLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHsgaXNFdmVudE9uRWxlbWVudCwgb3ZlcmxheUdhcEZpeENvcm5lcnMsIHNldE92ZXJsYXlQb3NpdGlvbiB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRpdmlkZXJFbGVtZW50IH0gZnJvbSAnLi4vZGl2aWRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdEdyb3VwRWxlbWVudCwgU2JiT3B0aW9uRWxlbWVudCwgU2JiT3B0aW9uSGludEVsZW1lbnQgfSBmcm9tICcuLi9vcHRpb24uanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWxlY3Quc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIGFuIFwiaW1tZWRpYXRlIHBhcmVudFwiIHRvIHRoZSBvcHRpb25zLCBvciBlbHNlIG9wdGdyb3VwcyB3b24ndCB3b3JrLlxuICovXG5jb25zdCBhcmlhUm9sZU9uSG9zdCA9IGlzU2FmYXJpO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIHBhbmVsIHdpdGggc2VsZWN0YWJsZSBvcHRpb25zLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIG9wdGlvbnMuXG4gKiBAY3NzcHJvcCBbLS1zYmItc2VsZWN0LXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZyB8IHN0cmluZ1tdKSB8IG51bGxcbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXNlbGVjdCcpXG5jbGFzcyBTYmJTZWxlY3RFbGVtZW50PFQgPSBzdHJpbmc+IGV4dGVuZHMgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW4oXG4gIFNiYkRpc2FibGVkTWl4aW4oXG4gICAgU2JiTmVnYXRpdmVNaXhpbihcbiAgICAgIFNiYkh5ZHJhdGlvbk1peGluKFxuICAgICAgICBTYmJSZXF1aXJlZE1peGluKFxuICAgICAgICAgIFNiYlJlYWRvbmx5TWl4aW4oXG4gICAgICAgICAgICBTYmJGb3JtQXNzb2NpYXRlZE1peGluPHR5cGVvZiBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudD4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICksXG4pIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gYXJpYVJvbGVPbkhvc3QgPyAnbGlzdGJveCcgOiBudWxsO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvLyBUT0RPOiBmaXggdXNpbmcgLi4uc3VwZXIuZXZlbnRzIHJlcXVpcmVzOiBodHRwczovL2dpdGh1Yi5jb20vc2JiLWRlc2lnbi1zeXN0ZW1zL2x5bmUtY29tcG9uZW50cy9pc3N1ZXMvMjYwMFxuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBjaGFuZ2U6ICdjaGFuZ2UnLFxuICAgIGlucHV0OiAnaW5wdXQnLFxuICAgIGRpc3BsYXl2YWx1ZWNoYW5nZTogJ2Rpc3BsYXl2YWx1ZWNoYW5nZScsXG4gICAgYmVmb3Jlb3BlbjogJ2JlZm9yZW9wZW4nLFxuICAgIG9wZW46ICdvcGVuJyxcbiAgICBiZWZvcmVjbG9zZTogJ2JlZm9yZWNsb3NlJyxcbiAgICBjbG9zZTogJ2Nsb3NlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogVGhlIHBsYWNlaG9sZGVyIHVzZWQgaWYgbm8gdmFsdWUgaGFzIGJlZW4gc2VsZWN0ZWQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzZWxlY3QgYWxsb3dzIGZvciBtdWx0aXBsZSBzZWxlY3Rpb24uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAaGFuZGxlRGlzdGluY3RDaGFuZ2UoKGU6IFNiYlNlbGVjdEVsZW1lbnQ8VD4sIG5ld1ZhbHVlOiBib29sZWFuKSA9PlxuICAgIGUuX29uTXVsdGlwbGVDaGFuZ2VkKG5ld1ZhbHVlKSxcbiAgKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBmb3JjZVR5cGUoKVxuICBAaGFuZGxlRGlzdGluY3RDaGFuZ2UoKGU6IFNiYlNlbGVjdEVsZW1lbnQ8VD4sIG5ld1ZhbHVlOiBib29sZWFuKSA9PlxuICAgIGUuX2Nsb3NlT25EaXNhYmxlZFJlYWRvbmx5Q2hhbmdlZChuZXdWYWx1ZSksXG4gIClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBAZ2V0T3ZlcnJpZGUoKGU6IFNiYlNlbGVjdEVsZW1lbnQ8VD4sIHY6IGJvb2xlYW4pOiBib29sZWFuID0+IHYgfHwgZS5pc0Rpc2FibGVkRXh0ZXJuYWxseSgpKVxuICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzb3IgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogVmFsdWUgb2YgdGhlIGZvcm0gZWxlbWVudC4gKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHZhbHVlOiBUIHwgVFtdIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFNpemUgdmFyaWFudCwgZWl0aGVyIG0gb3Igcy5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3MnIChsZWFuKVxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ20nIHwgJ3MnID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG5cbiAgLyoqXG4gICAqIEZvcm0gdHlwZSBvZiBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCAnc2VsZWN0LW9uZSAvIHNlbGVjdC1tdWx0aXBsZSdcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm11bHRpcGxlID8gJ3NlbGVjdC1tdWx0aXBsZScgOiAnc2VsZWN0LW9uZSc7XG4gIH1cblxuICAvKiogVGhlIHZhbHVlIGRpc3BsYXllZCBieSB0aGUgY29tcG9uZW50LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9kaXNwbGF5VmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX29yaWdpblJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBza2lwSW5pdGlhbDogdHJ1ZSxcbiAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuXG4gIHByaXZhdGUgX292ZXJsYXkhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfb3B0aW9uQ29udGFpbmVyITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX29yaWdpbkVsZW1lbnQhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIgPSBuZXcgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX292ZXJsYXlJZCA9IGBzYmItc2VsZWN0LSR7KytuZXh0SWR9YDtcbiAgcHJpdmF0ZSBfYWN0aXZlSXRlbUluZGV4ID0gLTE7XG4gIHByaXZhdGUgX3NlYXJjaFRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgcHJpdmF0ZSBfc2VhcmNoU3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2RpZExvYWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2xhbmd1YWdlQ29udHJvbGxlciA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgLyoqXG4gICAqIFRoZSAnY29tYm9ib3gnIGlucHV0IGVsZW1lbnRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXJFbGVtZW50O1xuICB9XG5cbiAgLyoqIEdldHMgYWxsIHRoZSBTYmJPcHRpb25FbGVtZW50IHByb2plY3RlZCBpbiB0aGUgc2VsZWN0LiAqL1xuICBwcml2YXRlIGdldCBfb3B0aW9ucygpOiBTYmJPcHRpb25FbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYk9wdGlvbkVsZW1lbnQ8VD4+KCdzYmItb3B0aW9uJykgPz8gW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2ZpbHRlcmVkT3B0aW9ucygpOiBTYmJPcHRpb25FbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmZpbHRlcigob3B0KSA9PiAhb3B0LmRpc2FibGVkICYmICFvcHQuaGFzQXR0cmlidXRlKCdkYXRhLWdyb3VwLWRpc2FibGVkJykpO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ29wdGlvbnNlbGVjdGlvbmNoYW5nZScsIChlOiBFdmVudCkgPT4gdGhpcy5fb25PcHRpb25DaGFuZ2VkKGUpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Lignb3B0aW9uTGFiZWxDaGFuZ2VkJywgKGU6IEV2ZW50KSA9PiB0aGlzLl9vbk9wdGlvbkxhYmVsQ2hhbmdlZChlKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NsaWNrJywgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIFNiYlNlbGVjdEVsZW1lbnQ8VD4gfCBTYmJPcHRpb25FbGVtZW50PFQ+O1xuICAgICAgaWYgKHRhcmdldC5sb2NhbE5hbWUgPT09ICdzYmItb3B0aW9uJykge1xuICAgICAgICAvLyBPcHRpb24gY2xpY2tcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmICF0YXJnZXQuZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl90b2dnbGVPcGVuaW5nKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgTXV0YXRpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICAgICAgY29uZmlnOiB7IGF0dHJpYnV0ZUZpbHRlcjogWydhcmlhLWxhYmVsbGVkYnknLCAnYXJpYS1sYWJlbCcsICdhcmlhLWRlc2NyaWJlZGJ5J10gfSxcbiAgICAgICAgY2FsbGJhY2s6ICgpID0+IHRoaXMuX3N5bmNBcmlhTGFiZWxzKCksXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY0FyaWFMYWJlbHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCB8fCBpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKFxuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQsXG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5JyxcbiAgICAgIHRoaXMuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKSxcbiAgICApO1xuICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnYXJpYS1sYWJlbCcsIHRoaXMuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykpO1xuICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKFxuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQsXG4gICAgICAnYXJpYS1kZXNjcmliZWRieScsXG4gICAgICB0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpLFxuICAgICk7XG5cbiAgICAvLyBVc2luZyB0aGUgYXNzb2NpYXRlZCBsYWJlbHMgaXMgb25seSBhIGZhbGxiYWNrLlxuICAgIC8vIFRoZSBkcmF3YmFjayBpcywgdGhhdCBpdCBkb2Vzbid0IGdldCB1cGRhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgbGlzdCBvZiBsYWJlbCBjaGFuZ2VzLlxuICAgIGlmIChcbiAgICAgICF0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpICYmXG4gICAgICAhdGhpcy5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpICYmXG4gICAgICB0aGlzLmludGVybmFscy5sYWJlbHMubGVuZ3RoXG4gICAgKSB7XG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKFxuICAgICAgICAnYXJpYS1sYWJlbCcsXG4gICAgICAgIEFycmF5LmZyb20odGhpcy5pbnRlcm5hbHMubGFiZWxzKVxuICAgICAgICAgIC5tYXAoKGxhYmVsKSA9PiBsYWJlbC50ZXh0Q29udGVudClcbiAgICAgICAgICAuam9pbignLCAnKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqIE9wZW5zIHRoZSBzZWxlY3Rpb24gcGFuZWwuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnIHx8XG4gICAgICAhdGhpcy5fb3ZlcmxheSB8fFxuICAgICAgdGhpcy5fb3B0aW9ucy5sZW5ndGggPT09IDAgfHxcbiAgICAgIHRoaXMuZGlzYWJsZWQgfHxcbiAgICAgIHRoaXMuZm9ybURpc2FibGVkIHx8XG4gICAgICAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PignLnNiYi1zZWxlY3RfX2NvbnRhaW5lcicpPy5zaG93UG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcsIHRydWUpO1xuICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2VzIHRoZSBzZWxlY3Rpb24gcGFuZWwuICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcgfHwgIXRoaXMuZGlzcGF0Y2hCZWZvcmVDbG9zZUV2ZW50KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NpbmcnO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJywgZmFsc2UpO1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICBpZiAodGhpcy5fb3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMuX29yaWdpbkVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBjbG9zZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKHRoaXMsICctLXNiYi1vcHRpb25zLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGN1cnJlbnQgZGlzcGxheWVkIHZhbHVlLiAqL1xuICBwdWJsaWMgZ2V0RGlzcGxheVZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlWYWx1ZSA/PyAnJztcbiAgfVxuXG4gIC8qKiBMaXN0ZW5zIHRvIG9wdGlvbiBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9vbk9wdGlvbkNoYW5nZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIFNiYk9wdGlvbkVsZW1lbnQ8VD47XG4gICAgaWYgKHRhcmdldC5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5fb25PcHRpb25TZWxlY3RlZCh0YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vbk9wdGlvbkRlc2VsZWN0ZWQodGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICAvKiogTGlzdGVucyB0byBvcHRpb24gY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfb25PcHRpb25MYWJlbENoYW5nZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIFNiYk9wdGlvbkVsZW1lbnQ8VD47XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLl9nZXRTZWxlY3RlZCgpO1xuXG4gICAgaWYgKFxuICAgICAgKCFBcnJheS5pc0FycmF5KHNlbGVjdGVkKSAmJiB0YXJnZXQgIT09IHNlbGVjdGVkKSB8fFxuICAgICAgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpICYmICFzZWxlY3RlZC5pbmNsdWRlcyh0YXJnZXQpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZURpc3BsYXlWYWx1ZShzZWxlY3RlZCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVEaXNwbGF5VmFsdWUoc2VsZWN0ZWQ6IFNiYk9wdGlvbkVsZW1lbnQ8VD4gfCBTYmJPcHRpb25FbGVtZW50PFQ+W10gfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSBzZWxlY3RlZC5tYXAoKG8pID0+IG8udGV4dENvbnRlbnQpLmpvaW4oJywgJykgfHwgbnVsbDtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSBzZWxlY3RlZD8udGV4dENvbnRlbnQ/LnRyaW0oKSB8fCBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdkaXNwbGF5dmFsdWVjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYHZhbHVlYCBwcm9wZXJ0eSBzaG91bGQgYmUgYWRhcHRlZCB3aGVuIHRoZSBgbXVsdGlwbGVgIHByb3BlcnR5IGNoYW5nZXM6XG4gICAqICAgLSBpZiBpdCBjaGFuZ2VzIHRvIHRydWUsIHRoZSAndmFsdWUnIGlzIHNldCB0byBhbiBhcnJheTtcbiAgICogICAtIGlmIGl0IGNoYW5nZXMgdG8gZmFsc2UsIHRoZSBmaXJzdCBhdmFpbGFibGUgb3B0aW9uIGlzIHNldCBhcyAndmFsdWUnIG90aGVyd2lzZSBpdCdzIHNldCB0byBudWxsLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25NdWx0aXBsZUNoYW5nZWQoaXNDaGFuZ2luZ1RvTXVsdGlwbGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNDaGFuZ2luZ1RvTXVsdGlwbGUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlICE9PSBudWxsICYmIHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCA/IFt0aGlzLnZhbHVlIGFzIFRdIDogW107XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5sZW5ndGggPyB0aGlzLnZhbHVlWzBdIDogbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGBkaXNhYmxlZGAgb3IgdGhlIGByZWFkb25seWAgcHJvcGVydGllcyBhcmUgc2V0LCBhbmQgdGhlIHBhbmVsIGlzIG9wZW4sIGNsb3NlIGl0LlxuICAgKi9cbiAgcHJpdmF0ZSBfY2xvc2VPbkRpc2FibGVkUmVhZG9ubHlDaGFuZ2VkKG5ld1ZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNPcGVuICYmIG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNldHMgdGhlIF9kaXNwbGF5VmFsdWUgYnkgY2hlY2tpbmcgdGhlIGludGVybmFsIHNiYi1vcHRpb25zIGFuZCBzZXR0aW5nIHRoZSBjb3JyZWN0IGBzZWxlY3RlZGAgdmFsdWUgb24gdGhlbS4gKi9cbiAgcHJpdmF0ZSBfb25WYWx1ZUNoYW5nZWQobmV3VmFsdWU6IFQgfCBUW10pOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZmlsdGVyZWRPcHRpb25zO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgIGNvbnN0IG9wdGlvbkVsZW1lbnQgPSBvcHRpb25zLmZpbmQoKG8pID0+IG8udmFsdWUgPT09IG5ld1ZhbHVlKSA/PyBudWxsO1xuICAgICAgaWYgKG9wdGlvbkVsZW1lbnQpIHtcbiAgICAgICAgb3B0aW9uRWxlbWVudC5zZWxlY3RlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBvcHRpb25zXG4gICAgICAgIC5maWx0ZXIoKG8pID0+IChvLnZhbHVlID8/IG8uZ2V0QXR0cmlidXRlKCd2YWx1ZScpKSAhPT0gbmV3VmFsdWUpXG4gICAgICAgIC5mb3JFYWNoKChvKSA9PiAoby5zZWxlY3RlZCA9IGZhbHNlKSk7XG4gICAgICB0aGlzLl91cGRhdGVEaXNwbGF5VmFsdWUob3B0aW9uRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMuZmlsdGVyKChvKSA9PiAhbmV3VmFsdWUuaW5jbHVkZXMoby52YWx1ZSkpLmZvckVhY2goKGUpID0+IChlLnNlbGVjdGVkID0gZmFsc2UpKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBvcHRpb25zLmZpbHRlcigobykgPT4gbmV3VmFsdWUuaW5jbHVkZXMoby52YWx1ZSkpO1xuICAgICAgc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKChvKSA9PiAoby5zZWxlY3RlZCA9IHRydWUpKTtcbiAgICAgIHRoaXMuX3VwZGF0ZURpc3BsYXlWYWx1ZShzZWxlY3RlZEVsZW1lbnRzKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICAvLyBXYWl0IGZvciBzc3IgaHlkcmF0aW9uXG4gICAgaWYgKCFpc05leHRqcygpKSB7XG4gICAgICB0aGlzLnN0YXJ0VXBkYXRlKCk7XG4gICAgICB0aGlzLl9zZXR1cFNlbGVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG92ZXJyaWRlIGZvY3VzKCk6IHZvaWQge1xuICAgIC8vIEZvcndhcmQgZm9jdXMgdG8gdGhlIHRyaWdnZXIgZWxlbWVudC5cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG92ZXJyaWRlIGJsdXIoKTogdm9pZCB7XG4gICAgLy8gRm9yd2FyZCBibHVyIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LmJsdXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGVsZW1lbnQncyBmaXJzdCBhdHRyaWJ1dGUgd2hvc2UgcXVhbGlmaWVkIG5hbWUgaXMgcXVhbGlmaWVkTmFtZS5cbiAgICpcbiAgICogW01ETiBSZWZlcmVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9FbGVtZW50L3JlbW92ZUF0dHJpYnV0ZSlcbiAgICogQGludGVybmFsIFdlIG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBkdWUgdG8gYSBoeWRyYXRpb24gaXNzdWUgd2l0aCBOZXh0LmpzLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUF0dHJpYnV0ZShxdWFsaWZpZWROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBJbiBOZXh0LmpzIHRoZSBoeWRyYXRpb24gbmVlZHMgdG8gZmluaXNoIGJlZm9yZSB3ZSBjYW4gbWFuaXB1bGF0ZSB0aGUgbGlnaHQgRE9NLlxuICAgIC8vIEBsaXQvcmVhY3QgY2FsbHMgcmVtb3ZlQXR0cmlidXRlKCdkZWZlci1oeWRyYXRpb24nKSBpbiBhIHVzZUxheW91dEVmZmVjdCxcbiAgICAvLyB3aGljaCBpcyBkb25lIGFmdGVyIGh5ZHJhdGlvbiBpcyBmaW5pc2hlZC4gRHVlIHRvIHRoaXMgd2UgaW50ZXJjZXB0IHRoaXMgY2FsbFxuICAgIC8vIGluIG92ZXJyaWRpbmcgcmVtb3ZlQXR0cmlidXRlIHRvIGZpbmlzaCBpbml0aWFsaXphdGlvbiBvZiB0aGUgc2JiLXNlbGVjdC5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGl0L2xpdC9ibG9iL21haW4vcGFja2FnZXMvcmVhY3Qvc3JjL2NyZWF0ZS1jb21wb25lbnQudHMjTDI5My1MMjk2XG4gICAgLy8gV2UgYWxzbyBuZWVkIHRvIHdhaXQgZm9yIHVwZGF0ZSBjb21wbGV0ZSBpbiBvcmRlciB0byBiZSBzdXJlIHRoYXQgdGhlIHNoYWRvdyBET00gaGFzIGJlZW4gcmVuZGVyZWQuXG4gICAgaWYgKGlzTmV4dGpzKCkgJiYgcXVhbGlmaWVkTmFtZSA9PT0gJ2RlZmVyLWh5ZHJhdGlvbicgJiYgIXRoaXMuX2RpZExvYWQpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKSA9PiB0aGlzLl9zZXR1cFNlbGVjdCgpKTtcbiAgICB9XG4gICAgc3VwZXIucmVtb3ZlQXR0cmlidXRlKHF1YWxpZmllZE5hbWUpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICBpZiAoYXJpYVJvbGVPbkhvc3QpIHtcbiAgICAgIHRoaXMuaWQgfHw9IHRoaXMuX292ZXJsYXlJZDtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKSA/PyB0aGlzLmNsb3Nlc3Q/LignW2RhdGEtZm9ybS1maWVsZF0nKTtcblxuICAgIGlmIChmb3JtRmllbGQpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSBmb3JtRmllbGQuaGFzQXR0cmlidXRlKCduZWdhdGl2ZScpO1xuICAgIH1cbiAgICB0aGlzLl9zeW5jUHJvcGVydGllcygpO1xuICAgIHRoaXMuX3N5bmNBcmlhTGFiZWxzKCk7XG5cbiAgICBpZiAodGhpcy5fZGlkTG9hZCkge1xuICAgICAgdGhpcy5fc2V0dXBPcmlnaW4oKTtcbiAgICAgIHRoaXMuX3NldHVwVHJpZ2dlcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgIGlmICghbmFtZSAmJiB0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fc3luY0FyaWFMYWJlbHMoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd2YWx1ZScpICYmICh0aGlzLl9kaWRMb2FkIHx8IHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLl9vblZhbHVlQ2hhbmdlZCh0aGlzLnZhbHVlISk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykgfHwgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdtdWx0aXBsZScpKSB7XG4gICAgICB0aGlzLl9zeW5jUHJvcGVydGllcygpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdyZWFkT25seScpKSB7XG4gICAgICB0aGlzLl9jbG9zZU9uRGlzYWJsZWRSZWFkb25seUNoYW5nZWQodGhpcy5yZWFkT25seSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5wcmVwZW5kKHRoaXMuX3RyaWdnZXJFbGVtZW50KTsgLy8gVGFrZSBiYWNrIHRoZSB0cmlnZ2VyIGVsZW1lbnQgcHJldmlvdXNseSBtb3ZlZCB0byB0aGUgbGlnaHQgRE9NXG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVzZXQgdmFsdWUgaXMgdGhlIGF0dHJpYnV0ZSB2YWx1ZSAodGhlIHNldHVwIHZhbHVlKSwgbnVsbCBvdGhlcndpc2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSAodGhpcy5oYXNBdHRyaWJ1dGUoJ3ZhbHVlJykgPyB0aGlzLmdldEF0dHJpYnV0ZSgndmFsdWUnKSA6IG51bGwpIGFzIFQ7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICBfcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gJ3N0cmluZycgfHwgc3RhdGUgPT0gbnVsbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IChzdGF0ZSBhcyBUKSA/PyBudWxsO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgICAgdGhpcy5fcmVhZEZvcm1EYXRhKHN0YXRlKS50aGVuKChhcnJheSkgPT4ge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5tdWx0aXBsZSA/IGFycmF5IDogYXJyYXlbMF07XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9yZWFkRm9ybURhdGEoZm9ybURhdGE6IEZvcm1EYXRhKTogUHJvbWlzZTxUW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBmb3JtRGF0YVxuICAgICAgICAuZ2V0QWxsKHRoaXMubmFtZSlcbiAgICAgICAgLm1hcChhc3luYyAoZW50cnkpID0+XG4gICAgICAgICAgZW50cnkgaW5zdGFuY2VvZiBCbG9iID8gSlNPTi5wYXJzZShhd2FpdCBlbnRyeS50ZXh0KCkpIDogKGVudHJ5IGFzIFQpLFxuICAgICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJEaXZpZGVyRWxlbWVudCB8IFNiYk9wdGlvbkhpbnRFbGVtZW50PihcbiAgICAgICdzYmItZGl2aWRlciwgc2JiLW9wdGlvbi1oaW50JyxcbiAgICApLmZvckVhY2goKGVsKSA9PiAoZWwubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlKSk7XG5cbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJPcHRpb25FbGVtZW50PFQ+IHwgU2JiT3B0R3JvdXBFbGVtZW50PihcbiAgICAgICdzYmItb3B0aW9uLCBzYmItb3B0Z3JvdXAnLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbmVnYXRpdmUnLCB0aGlzLm5lZ2F0aXZlKTtcbiAgICAgIGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW11bHRpcGxlJywgdGhpcy5tdWx0aXBsZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJPcHRpb25FbGVtZW50PFQ+IHwgU2JiT3B0R3JvdXBFbGVtZW50PihcbiAgICAgICdzYmItb3B0aW9uLCBzYmItb3B0Z3JvdXAnLFxuICAgICkuZm9yRWFjaCgoZSkgPT4gZS5yZXF1ZXN0VXBkYXRlPy4oKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVmFsaWRhdGUobmFtZSkgfHwgbmFtZSA9PT0gJ3ZhbHVlJyB8fCBuYW1lID09PSAncmVxdWlyZWQnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlKCk7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgdGhpcy5fb3B0aW9ucy5ldmVyeSgobykgPT4gby52YWx1ZSAhPT0gdGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRpdHlGbGFnKCd2YWx1ZU1pc3NpbmcnLCBpMThuU2VsZWN0aW9uUmVxdWlyZWRbdGhpcy5fbGFuZ3VhZ2VDb250cm9sbGVyLmN1cnJlbnRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdmVWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwU2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuX3NldHVwT3JpZ2luKCk7XG4gICAgdGhpcy5fc2V0dXBUcmlnZ2VyKCk7XG4gICAgdGhpcy5fZGlkTG9hZCA9IHRydWU7XG4gICAgdGhpcy5jb21wbGV0ZVVwZGF0ZSgpO1xuICB9XG5cbiAgLyoqIFNldHMgdGhlIG9yaWdpbkVsZW1lbnQ7IGlmIHRoZSBjb21wb25lbnQgaXMgdXNlZCBpbiBhIHNiYi1mb3JtLWZpZWxkIHVzZXMgaXQsIG90aGVyd2lzZSB1c2VzIHRoZSBwYXJlbnRFbGVtZW50LiAqL1xuICBwcml2YXRlIF9zZXR1cE9yaWdpbigpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKTtcbiAgICBpZiAodGhpcy5fb3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMuX29yaWdpbkVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLl9vcmlnaW5FbGVtZW50ID1cbiAgICAgIGZvcm1GaWVsZD8uc2hhZG93Um9vdD8ucXVlcnlTZWxlY3Rvcj8uKCcjb3ZlcmxheS1hbmNob3InKSA/PyB0aGlzLnBhcmVudEVsZW1lbnQhO1xuICAgIGlmICh0aGlzLl9vcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICAgJ2RhdGEtb3B0aW9uLXBhbmVsLW9yaWdpbi1ib3JkZXJsZXNzJyxcbiAgICAgICAgISFmb3JtRmllbGQ/Lmhhc0F0dHJpYnV0ZT8uKCdib3JkZXJsZXNzJyksXG4gICAgICApO1xuXG4gICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9vcmlnaW5FbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG8gYXNzZXNzIHNjcmVlbi1yZWFkZXJzIHByb2JsZW1zIGNhdXNlZCBieSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBhcmlhIHBhdHRlcm5zIGFuZCBzaGFkb3cgRE9NLFxuICAgKiB3ZSBhcmUgZm9yY2VkIHRvIG1vdmUgdGhlICdjb21ib2JveCcgdHJpZ2dlciBlbGVtZW50IHRvIHRoZSBsaWdodCBET01cbiAgICovXG4gIHByaXZhdGUgX3NldHVwVHJpZ2dlcigpOiB2b2lkIHtcbiAgICAvLyBNb3ZlIHRoZSB0cmlnZ2VyIGJlZm9yZSB0aGUgc2JiLXNlbGVjdFxuICAgIHRoaXMucGFyZW50RWxlbWVudCEuaW5zZXJ0QmVmb3JlPy4odGhpcy5fdHJpZ2dlckVsZW1lbnQsIHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0T3ZlcmxheVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHNldE92ZXJsYXlQb3NpdGlvbihcbiAgICAgIHRoaXMuX292ZXJsYXksXG4gICAgICB0aGlzLl9vcmlnaW5FbGVtZW50LFxuICAgICAgdGhpcy5fb3B0aW9uQ29udGFpbmVyLFxuICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLXNlbGVjdF9fY29udGFpbmVyJykhLFxuICAgICAgdGhpcyxcbiAgICApO1xuICB9XG5cbiAgLy8gSW4gcmFyZSBjYXNlcyBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgLy8gVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICBwcml2YXRlIF9vbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICB0aGlzLl9hdHRhY2hPcGVuUGFuZWxFdmVudHMoKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmNvbm5lY3QoKTtcbiAgICBpZiAodGhpcy5fb3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9vcmlnaW5FbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PignLnNiYi1zZWxlY3RfX2NvbnRhaW5lcicpPy5oaWRlUG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gICAgdGhpcy5fcmVzZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgdGhpcy5fb3B0aW9uQ29udGFpbmVyLnNjcm9sbFRvcCA9IDA7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gIH1cblxuICAvKiogV2hlbiBhbiBvcHRpb24gaXMgc2VsZWN0ZWQsIHVwZGF0ZXMgdGhlIGRpc3BsYXlWYWx1ZTsgaXQgYWxzbyBjbG9zZXMgdGhlIHNlbGVjdCBpZiBub3QgYG11bHRpcGxlYC4gKi9cbiAgcHJpdmF0ZSBfb25PcHRpb25TZWxlY3RlZChvcHRpb25TZWxlY3Rpb25DaGFuZ2U6IFNiYk9wdGlvbkVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuX2ZpbHRlcmVkT3B0aW9uc1xuICAgICAgICAuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi5pZCAhPT0gb3B0aW9uU2VsZWN0aW9uQ2hhbmdlLmlkKVxuICAgICAgICAuZm9yRWFjaCgob3B0aW9uKSA9PiAob3B0aW9uLnNlbGVjdGVkID0gZmFsc2UpKTtcbiAgICAgIHRoaXMudmFsdWUgPSBvcHRpb25TZWxlY3Rpb25DaGFuZ2UudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gW29wdGlvblNlbGVjdGlvbkNoYW5nZS52YWx1ZSFdO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpICYmICF0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvblNlbGVjdGlvbkNoYW5nZS52YWx1ZSEpKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgb3B0aW9uU2VsZWN0aW9uQ2hhbmdlLnZhbHVlIV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcGF0Y2hJbnB1dEV2ZW50cygpO1xuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHVuc2VsZWN0ZWQgaW4gYG11bHRpcGxlYCwgcmVtb3ZlcyBpdCBmcm9tIHZhbHVlIGFuZCB1cGRhdGVzIGRpc3BsYXlWYWx1ZS4gKi9cbiAgcHJpdmF0ZSBfb25PcHRpb25EZXNlbGVjdGVkKG9wdGlvblNlbGVjdGlvbkNoYW5nZTogU2JiT3B0aW9uRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcigoZWwpID0+IGVsICE9PSBvcHRpb25TZWxlY3Rpb25DaGFuZ2UudmFsdWUpO1xuICAgICAgdGhpcy5fZGlzcGF0Y2hJbnB1dEV2ZW50cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Rpc3BhdGNoSW5wdXRFdmVudHMoKTogdm9pZCB7XG4gICAgLyoqIFRoZSBpbnB1dCBldmVudCBmaXJlcyB3aGVuIHRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGFzIGEgZGlyZWN0IHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHtcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgY29tcG9zZWQ6IHRydWUsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIG1vZGlmaWVzIHRoZSBlbGVtZW50J3MgdmFsdWUuXG4gICAgICogVW5saWtlIHRoZSBpbnB1dCBldmVudCwgdGhlIGNoYW5nZSBldmVudCBpcyBub3QgbmVjZXNzYXJpbHkgZmlyZWRcbiAgICAgKiBmb3IgZWFjaCBhbHRlcmF0aW9uIHRvIGFuIGVsZW1lbnQncyB2YWx1ZS5cbiAgICAgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgb3ZlcmxheSBwb3NpdGlvbiBvbiBzY3JvbGwgYW5kIHdpbmRvdyByZXNpemVcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICAvLyBXaXRob3V0IGNhcHR1cmUsIG90aGVyIHNjcm9sbCBjb250ZXh0cyB3b3VsZCBub3QgYnViYmxlIHRvIHRoaXMgZXZlbnQgbGlzdGVuZXIuXG4gICAgICAvLyBDYXB0dXJlIGFsbG93cyB1cyB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGNvbnRleHRzIGluIHRoaXMgRE9NLlxuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgbWVudSBvbiBiYWNrZHJvcCBjbGlja1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIChldikgPT4gdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lcihldiksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIChldikgPT4gdGhpcy5fY2xvc2VPbkJhY2tkcm9wQ2xpY2soZXYpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcpIHtcbiAgICAgIHRoaXMuX29wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgdGhpcy5fY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hlY2tGb3JMZXR0ZXJTZWxlY3Rpb24oZXZlbnQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbkJ5VGV4dChldmVudCk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJyAnOlxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVhZE9ubHkgfHwgdGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY2hlY2tGb3JMZXR0ZXJTZWxlY3Rpb24oZXZlbnQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbkJ5VGV4dChldmVudCk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJyAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9zZWxlY3RCeUtleWJvYXJkKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb24oZXZlbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50LCAwKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb24oZXZlbnQsIHRoaXMuX2ZpbHRlcmVkT3B0aW9ucy5sZW5ndGggLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tGb3JMZXR0ZXJTZWxlY3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJyB8fFxuICAgICAgZXZlbnQua2V5ID09PSAnQ2xlYXInIHx8XG4gICAgICAoZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICBldmVudC5rZXkgIT09ICcgJyAmJlxuICAgICAgICAhZXZlbnQuYWx0S2V5ICYmXG4gICAgICAgICFldmVudC5jdHJsS2V5ICYmXG4gICAgICAgICFldmVudC5tZXRhS2V5KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9zZXROZXh0QWN0aXZlT3B0aW9uQnlUZXh0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gU2V0IHRpbWVvdXQgYW5kIHRoZSBzdHJpbmcgdG8gc2VhcmNoLlxuICAgIGlmICh0eXBlb2YgdGhpcy5fc2VhcmNoVGltZW91dCA9PT0gdHlwZW9mIHNldFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9zZWFyY2hUaW1lb3V0KTtcbiAgICB9XG4gICAgdGhpcy5fc2VhcmNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuX3NlYXJjaFN0cmluZyA9ICcnKSwgMTAwMCk7XG4gICAgdGhpcy5fc2VhcmNoU3RyaW5nICs9IGV2ZW50LmtleTtcblxuICAgIC8vIFJlb3JkZXIgdGhlIF9maWx0ZXJlZE9wdGlvbiBhcnJheSB0byBoYXZlIHRoZSBsYXN0IHNlbGVjdGVkIGVsZW1lbnQgYXQgdGhlIGJvdHRvbS5cbiAgICBjb25zdCBpbmRleEZvclNsaWNlOiBudW1iZXIgPSB0aGlzLl9hY3RpdmVJdGVtSW5kZXggKyAxO1xuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9uc1NvcnRlZCA9IFtcbiAgICAgIC4uLnRoaXMuX2ZpbHRlcmVkT3B0aW9ucy5zbGljZShpbmRleEZvclNsaWNlKSxcbiAgICAgIC4uLnRoaXMuX2ZpbHRlcmVkT3B0aW9ucy5zbGljZSgwLCBpbmRleEZvclNsaWNlKSxcbiAgICBdO1xuXG4gICAgY29uc3QgbWF0Y2ggPSBmaWx0ZXJlZE9wdGlvbnNTb3J0ZWQuZmluZChcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbi50ZXh0Q29udGVudD8udG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuX3NlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSA9PT0gMCxcbiAgICApO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgLy8gSWYgYW4gZXhhY3QgbWF0Y2ggaGFzIGJlZW4gZm91bmQsIGdvIHRvIHRoYXQgb3B0aW9uLlxuICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudCwgdGhpcy5fZmlsdGVyZWRPcHRpb25zLmluZGV4T2YobWF0Y2gpKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5fc2VhcmNoU3RyaW5nLmxlbmd0aCA+IDEgJiZcbiAgICAgIG5ldyBSZWdFeHAoYF4ke3RoaXMuX3NlYXJjaFN0cmluZy5jaGFyQXQoMCl9KiRgKS50ZXN0KHRoaXMuX3NlYXJjaFN0cmluZylcbiAgICApIHtcbiAgICAgIC8vIElmIG5vIGV4YWN0IG1hdGNoIGhhcyBiZWVuIGZvdW5kIGJ1dCB0aGUgc3RyaW5nIHRvIHNlYXJjaCBpcyBtYWRlIGJ5IHRoZSBzYW1lIHJlcGVhdGVkIGxldHRlcixcbiAgICAgIC8vIGdvIHRvIHRoZSBmaXJzdCBlbGVtZW50LCBpZiBleGlzdHMsIHRoYXQgbWF0Y2hlcyB0aGUgbGV0dGVyLlxuICAgICAgY29uc3QgZmlyc3RNYXRjaCA9IGZpbHRlcmVkT3B0aW9uc1NvcnRlZC5maW5kKFxuICAgICAgICAob3B0aW9uKSA9PlxuICAgICAgICAgIG9wdGlvbi50ZXh0Q29udGVudD8udG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuX3NlYXJjaFN0cmluZ1swXS50b0xvd2VyQ2FzZSgpKSA9PT0gMCxcbiAgICAgICk7XG4gICAgICBpZiAoZmlyc3RNYXRjaCkge1xuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50LCB0aGlzLl9maWx0ZXJlZE9wdGlvbnMuaW5kZXhPZihmaXJzdE1hdGNoKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIG1hdGNoIGZvdW5kLCBjbGVhciB0aGUgdGltZW91dCBhbmQgdGhlIHNlYXJjaCB0ZXJtLlxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3NlYXJjaFRpbWVvdXQpO1xuICAgICAgdGhpcy5fc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0QnlLZXlib2FyZCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVPcHRpb24gPSB0aGlzLl9maWx0ZXJlZE9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBhY3RpdmVPcHRpb24/Llsnc2VsZWN0VmlhVXNlckludGVyYWN0aW9uJ10oIWFjdGl2ZU9wdGlvbi5zZWxlY3RlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuX2ZpbHRlcmVkT3B0aW9ucztcblxuICAgIC8vIFByZXZlbnQga2V5Ym9hcmQgbmF2aWdhdGlvbiBpZiBhbGwgb3B0aW9ucyBhcmUgZGlzYWJsZWRcbiAgICBpZiAoZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRJbmRleCA9XG4gICAgICBpbmRleCA/PyBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50LCB0aGlzLl9hY3RpdmVJdGVtSW5kZXgsIGZpbHRlcmVkT3B0aW9ucy5sZW5ndGgpO1xuICAgIGNvbnN0IG5leHRPcHRpb24gPSBmaWx0ZXJlZE9wdGlvbnNbbmV4dEluZGV4XTtcbiAgICBjb25zdCBhY3RpdmVPcHRpb24gPSBmaWx0ZXJlZE9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcblxuICAgIHRoaXMuX3NldEFjdGl2ZUVsZW1lbnQobmV4dE9wdGlvbiwgYWN0aXZlT3B0aW9uKTtcblxuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRFbGVtZW50KG5leHRPcHRpb24sIGFjdGl2ZU9wdGlvbik7XG4gICAgfSBlbHNlIGlmIChldmVudD8uc2hpZnRLZXkpIHtcbiAgICAgIG5leHRPcHRpb25bJ3NlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbiddKCFuZXh0T3B0aW9uLnNlbGVjdGVkKTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gbmV4dEluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QWN0aXZlRWxlbWVudChcbiAgICBuZXh0QWN0aXZlT3B0aW9uOiBTYmJPcHRpb25FbGVtZW50PFQ+LFxuICAgIGxhc3RBY3RpdmVPcHRpb246IFNiYk9wdGlvbkVsZW1lbnQ8VD4gfCBudWxsID0gbnVsbCxcbiAgICBzZXRBY3RpdmVEZXNjZW5kYW50ID0gdHJ1ZSxcbiAgKTogdm9pZCB7XG4gICAgbmV4dEFjdGl2ZU9wdGlvbi5zZXRBY3RpdmUodHJ1ZSk7XG4gICAgbmV4dEFjdGl2ZU9wdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG5cbiAgICBpZiAoc2V0QWN0aXZlRGVzY2VuZGFudCkge1xuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCBuZXh0QWN0aXZlT3B0aW9uLmlkKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCB0aGUgcHJldmlvdXNcbiAgICBpZiAobGFzdEFjdGl2ZU9wdGlvbiAmJiBsYXN0QWN0aXZlT3B0aW9uICE9PSBuZXh0QWN0aXZlT3B0aW9uKSB7XG4gICAgICBsYXN0QWN0aXZlT3B0aW9uLnNldEFjdGl2ZShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0U2VsZWN0ZWRFbGVtZW50KFxuICAgIG5leHRBY3RpdmVPcHRpb246IFNiYk9wdGlvbkVsZW1lbnQ8VD4sXG4gICAgbGFzdEFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uRWxlbWVudDxUPixcbiAgKTogdm9pZCB7XG4gICAgbmV4dEFjdGl2ZU9wdGlvblsnc2VsZWN0VmlhVXNlckludGVyYWN0aW9uJ10odHJ1ZSk7XG5cbiAgICBpZiAobGFzdEFjdGl2ZU9wdGlvbiAmJiBsYXN0QWN0aXZlT3B0aW9uICE9PSBuZXh0QWN0aXZlT3B0aW9uKSB7XG4gICAgICBsYXN0QWN0aXZlT3B0aW9uWydzZWxlY3RWaWFVc2VySW50ZXJhY3Rpb24nXShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRBY3RpdmVFbGVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLl9maWx0ZXJlZE9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcblxuICAgIGlmIChhY3RpdmVFbGVtZW50KSB7XG4gICAgICBhY3RpdmVFbGVtZW50LnNldEFjdGl2ZShmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IC0xO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgbWVudS5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ID0gaXNFdmVudE9uRWxlbWVudCh0aGlzLl9vdmVybGF5LCBldmVudCk7XG4gIH07XG5cbiAgLy8gQ2xvc2UgbWVudSBvbiBiYWNrZHJvcCBjbGljay5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ICYmICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9zZXRWYWx1ZUZyb21TZWxlY3RlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuX2dldFNlbGVjdGVkKCk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkpIHtcbiAgICAgIGlmIChzZWxlY3RlZCAmJiBzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlOiBUW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygc2VsZWN0ZWQpIHtcbiAgICAgICAgICB2YWx1ZS5wdXNoKG9wdGlvbi52YWx1ZSEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSB0aGlzLl9maWx0ZXJlZE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbiA9PT0gc2VsZWN0ZWQpO1xuICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgLy8gSWYgd2UgYXJyaXZlIGhlcmUgd2l0aG91dCBhbnkgb3B0aW9ucyBiZWluZyBzZWxlY3RlZCxcbiAgICAgIC8vIHdlIHNob3VsZCB0cnkgdG8gY2hlY2sgdGhlIGN1cnJlbnQgdmFsdWUgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIG9wdGlvbnNcbiAgICAgIC8vIChhbmQgc2VsZWN0IGl0IGlmIGFueSBtYXRjaCBpcyBmb3VuZCkuXG4gICAgICB0aGlzLl9vblZhbHVlQ2hhbmdlZCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRTZWxlY3RlZCgpOiBTYmJPcHRpb25FbGVtZW50PFQ+IHwgU2JiT3B0aW9uRWxlbWVudDxUPltdIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZE9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi5zZWxlY3RlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZE9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWQpID8/IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdG9nZ2xlT3BlbmluZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmZvcm1EaXNhYmxlZCB8fCB0aGlzLnJlYWRPbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5mb2N1cygpO1xuXG4gICAgc3dpdGNoICh0aGlzLnN0YXRlKSB7XG4gICAgICBjYXNlICdvcGVuZWQnOiB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdjbG9zZWQnOiB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NwcmVhZERlZmVycmVkRGlzcGxheVZhbHVlKFxuICAgIHBsYWNlaG9sZGVyOiBUZW1wbGF0ZVJlc3VsdCxcbiAgKTogKFRlbXBsYXRlUmVzdWx0IHwgUHJvbWlzZTxUZW1wbGF0ZVJlc3VsdD4pW10ge1xuICAgIHJldHVybiBbdGhpcy5fZGVmZXJyZWREaXNwbGF5VmFsdWUocGxhY2Vob2xkZXIpLCBwbGFjZWhvbGRlcl07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9kZWZlcnJlZERpc3BsYXlWYWx1ZShwbGFjZWhvbGRlcjogVGVtcGxhdGVSZXN1bHQpOiBQcm9taXNlPFRlbXBsYXRlUmVzdWx0PiB7XG4gICAgaWYgKHRoaXMuaHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuaHlkcmF0aW9uQ29tcGxldGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaXNwbGF5VmFsdWUgPyBodG1sYCR7dGhpcy5fZGlzcGxheVZhbHVlfWAgOiBwbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPCEtLSBUaGlzIGVsZW1lbnQgaXMgdmlzdWFsbHkgaGlkZGVuIGFuZCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBsaWdodCBET00gdG8gYWxsb3cgc2NyZWVuXG4gICAgICByZWFkZXJzIHRvIHdvcmsgcHJvcGVybHkgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seSBzYmItc2VsZWN0LXRyaWdnZXJcIlxuICAgICAgICB0YWJpbmRleD0ke3RoaXMuZGlzYWJsZWQgfHwgdGhpcy5mb3JtRGlzYWJsZWQgPyBub3RoaW5nIDogJzAnfVxuICAgICAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgIGFyaWEtcmVxdWlyZWQ9JHt0aGlzLnJlcXVpcmVkLnRvU3RyaW5nKCl9XG4gICAgICAgIGFyaWEtY29udHJvbHM9JHt0aGlzLl9vdmVybGF5SWR9XG4gICAgICAgIGFyaWEtb3ducz0ke3RoaXMuX292ZXJsYXlJZH1cbiAgICAgICAgQGtleWRvd249JHt0aGlzLl9vbktleURvd259XG4gICAgICAgIEBjbGljaz0ke3RoaXMuX3RvZ2dsZU9wZW5pbmd9XG4gICAgICAgICR7cmVmKChyZWYpID0+ICh0aGlzLl90cmlnZ2VyRWxlbWVudCA9IHJlZiBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgPlxuICAgICAgICAke3VudGlsKC4uLnRoaXMuX3NwcmVhZERlZmVycmVkRGlzcGxheVZhbHVlKGh0bWxgPHNwYW4+JHt0aGlzLnBsYWNlaG9sZGVyfTwvc3Bhbj5gKSl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBWaXN1YWxseSBkaXNwbGF5IHRoZSB2YWx1ZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2VsZWN0X190cmlnZ2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICR7dW50aWwoXG4gICAgICAgICAgLi4udGhpcy5fc3ByZWFkRGVmZXJyZWREaXNwbGF5VmFsdWUoXG4gICAgICAgICAgICBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXNlbGVjdF9fdHJpZ2dlci0tcGxhY2Vob2xkZXJcIj4ke3RoaXMucGxhY2Vob2xkZXJ9PC9zcGFuPmAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXNlbGVjdF9fZ2FwLWZpeFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zZWxlY3RfX2NvbnRhaW5lclwiIHBvcG92ZXI9XCJtYW51YWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zZWxlY3RfX2dhcC1maXhcIj4ke292ZXJsYXlHYXBGaXhDb3JuZXJzKCl9PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25BbmltYXRpb25FbmR9XG4gICAgICAgICAgY2xhc3M9XCJzYmItc2VsZWN0X19wYW5lbFwiXG4gICAgICAgICAgJHtyZWYoKGRpYWxvZ1JlZikgPT4gKHRoaXMuX292ZXJsYXkgPSBkaWFsb2dSZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2VsZWN0X193cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGlkPSR7IWFyaWFSb2xlT25Ib3N0ID8gdGhpcy5fb3ZlcmxheUlkIDogbm90aGluZ31cbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItc2VsZWN0X19vcHRpb25zXCJcbiAgICAgICAgICAgICAgcm9sZT0keyFhcmlhUm9sZU9uSG9zdCA/ICdsaXN0Ym94JyA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgID9hcmlhLW11bHRpc2VsZWN0YWJsZT0ke3RoaXMubXVsdGlwbGV9XG4gICAgICAgICAgICAgICR7cmVmKChjb250YWluZXJSZWYpID0+ICh0aGlzLl9vcHRpb25Db250YWluZXIgPSBjb250YWluZXJSZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9zZXRWYWx1ZUZyb21TZWxlY3RlZH0+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlbGVjdCc6IFNiYlNlbGVjdEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJzdGF0ZSIsInJlZiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlDQSxNQUFNLGlCQUFpQjtBQUV2QixJQUFJLFNBQVM7SUFhUCxvQkFBZ0IsTUFBQTs7MEJBRHJCLGNBQWMsWUFBWSxDQUFDOzs7O29CQUNlLHdCQUN6QyxpQkFDRSxpQkFDRSxrQkFDRSxpQkFDRSxpQkFDRSx1QkFBdUQsdUJBQXVCLENBQUMsQ0FDaEYsQ0FDRixDQUNGLENBQ0YsQ0FDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVhnQyxFQUFBLG1CQUFRLFlBWTFDO0FBQUEsSUFrR0MsY0FBQTtBQUNFLFlBQUE7QUFqRkY7QUFRQTtBQVFBO0FBSUE7QUFNNkI7QUFXcEI7QUFyQ08seUJBQUEsK0JBQUEsa0JBQUEsTUFBQSwyQkFBc0IsRUFBRTtBQVF4Qix5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
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CSSResultGroup, LitElement, TemplateResult } from 'lit';
|
|
2
|
+
declare const SbbSelectionActionPanelElement_base: import('../core/mixins.js').AbstractConstructor<import('../core/mixins.js').SbbSelectionPanelMixinType & import('../core/mixins.js').SbbElementInternalsMixinType> & import('../core/mixins.js').AbstractConstructor<import('../core/mixins.js').SbbHydrationMixinType> & typeof LitElement;
|
|
3
|
+
/**
|
|
4
|
+
* It displays a panel connected to a `sbb-checkbox` or to a `sbb-radio-button`.
|
|
5
|
+
* It can also contain an action element (e.g. an `sbb-button`)
|
|
6
|
+
*
|
|
7
|
+
* @slot - Use this slot to render a `sbb-checkbox-panel` or `sbb-radio-button-panel` element and the action element.
|
|
8
|
+
* @slot badge - Use this slot to render a `sbb-card-badge` component.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SbbSelectionActionPanelElement extends SbbSelectionActionPanelElement_base {
|
|
11
|
+
static styles: CSSResultGroup;
|
|
12
|
+
constructor();
|
|
13
|
+
connectedCallback(): void;
|
|
14
|
+
protected render(): TemplateResult;
|
|
15
|
+
}
|
|
16
|
+
declare global {
|
|
17
|
+
interface HTMLElementTagNameMap {
|
|
18
|
+
'sbb-selection-action-panel': SbbSelectionActionPanelElement;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=selection-action-panel.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-action-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/selection-action-panel/selection-action-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAQ,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAOjF,OAAO,eAAe,CAAC;;AAEvB;;;;;;GAMG;AACH,qBAEM,8BAA+B,SAAQ,mCAAqD;IAChG,OAAuB,MAAM,EAAE,cAAc,CAAS;;IAOtC,iBAAiB,IAAI,IAAI;cAStB,MAAM,IAAI,cAAc;CAU5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,4BAA4B,EAAE,8BAA8B,CAAC;KAC9D;CACF"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { css, LitElement, html } from "lit";
|
|
3
|
+
import { customElement } from "lit/decorators.js";
|
|
4
|
+
import { SbbSelectionPanelMixin, SbbHydrationMixin } from "../core/mixins.js";
|
|
5
|
+
import "../divider.js";
|
|
6
|
+
const style = css`*,
|
|
7
|
+
::before,
|
|
8
|
+
::after {
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
:host {
|
|
13
|
+
--sbb-selection-action-panel-background: var(--sbb-color-white);
|
|
14
|
+
--sbb-selection-action-panel-border-color: var(--sbb-color-cloud);
|
|
15
|
+
--sbb-selection-panel-inner-background: transparent;
|
|
16
|
+
--sbb-selection-panel-inner-border-width: 0px;
|
|
17
|
+
--sbb-selection-action-panel-border-width: var(--sbb-border-width-1x);
|
|
18
|
+
--sbb-selection-action-panel-border-radius: var(--sbb-border-radius-4x);
|
|
19
|
+
--sbb-focus-outline-color: var(--sbb-focus-outline-color-default);
|
|
20
|
+
display: block;
|
|
21
|
+
position: relative;
|
|
22
|
+
flex: 1 1 auto;
|
|
23
|
+
width: 100%;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
:host([color=milk]) {
|
|
27
|
+
--sbb-selection-action-panel-background: var(--sbb-color-milk);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
:host(:where(:state(checked), [state--checked]):not(:where(:state(disabled), [state--disabled]))) {
|
|
31
|
+
--sbb-selection-action-panel-border-color: var(--sbb-color-charcoal);
|
|
32
|
+
--sbb-selection-action-panel-border-width: var(--sbb-border-width-2x);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:host([borderless]:not(:where(:state(checked), [state--checked]))) {
|
|
36
|
+
--sbb-selection-action-panel-border-color: transparent;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:host(:is(:state(with-expansion-panel), [state--with-expansion-panel])) {
|
|
40
|
+
--sbb-selection-action-panel-background: transparent;
|
|
41
|
+
--sbb-selection-action-panel-border-color: transparent;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
::slotted(:is(sbb-checkbox-panel, sbb-radio-button-panel)) {
|
|
45
|
+
flex: auto;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
::slotted([data-action]) {
|
|
49
|
+
align-self: center;
|
|
50
|
+
margin-inline: var(--sbb-spacing-responsive-xxs);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.sbb-selection-action-panel {
|
|
54
|
+
display: flex;
|
|
55
|
+
background-color: var(--sbb-selection-action-panel-background);
|
|
56
|
+
border-radius: var(--sbb-selection-action-panel-border-radius);
|
|
57
|
+
box-shadow: inset 0 0 0 var(--sbb-selection-action-panel-border-width) var(--sbb-selection-action-panel-border-color);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.sbb-selection-action-panel__badge {
|
|
61
|
+
user-select: none;
|
|
62
|
+
pointer-events: none;
|
|
63
|
+
position: absolute;
|
|
64
|
+
inset: 0;
|
|
65
|
+
border-radius: var(--sbb-selection-action-panel-border-radius);
|
|
66
|
+
overflow: hidden;
|
|
67
|
+
}`;
|
|
68
|
+
let SbbSelectionActionPanelElement = (() => {
|
|
69
|
+
var _a;
|
|
70
|
+
let _classDecorators = [customElement("sbb-selection-action-panel")];
|
|
71
|
+
let _classDescriptor;
|
|
72
|
+
let _classExtraInitializers = [];
|
|
73
|
+
let _classThis;
|
|
74
|
+
let _classSuper = SbbSelectionPanelMixin(SbbHydrationMixin(LitElement));
|
|
75
|
+
_a = class extends _classSuper {
|
|
76
|
+
constructor() {
|
|
77
|
+
super();
|
|
78
|
+
this.addEventListener?.("statechange", (e) => this.onInputStateChange(e));
|
|
79
|
+
}
|
|
80
|
+
connectedCallback() {
|
|
81
|
+
super.connectedCallback();
|
|
82
|
+
this.toggleState("with-expansion-panel", this.parentElement?.localName === "sbb-selection-expansion-panel");
|
|
83
|
+
}
|
|
84
|
+
render() {
|
|
85
|
+
return html`
|
|
86
|
+
<div class="sbb-selection-action-panel__badge">
|
|
87
|
+
<slot name="badge"></slot>
|
|
88
|
+
</div>
|
|
89
|
+
<div class="sbb-selection-action-panel">
|
|
90
|
+
<slot></slot>
|
|
91
|
+
</div>
|
|
92
|
+
`;
|
|
93
|
+
}
|
|
94
|
+
}, _classThis = _a, (() => {
|
|
95
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
96
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
97
|
+
_classThis = _classDescriptor.value;
|
|
98
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
99
|
+
})(), _a.styles = style, __runInitializers(_classThis, _classExtraInitializers), _a;
|
|
100
|
+
return _classThis;
|
|
101
|
+
})();
|
|
102
|
+
export {
|
|
103
|
+
SbbSelectionActionPanelElement
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWFjdGlvbi1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9zZWxlY3Rpb24tYWN0aW9uLXBhbmVsL3NlbGVjdGlvbi1hY3Rpb24tcGFuZWwuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGh0bWwsIExpdEVsZW1lbnQsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIFNiYlNlbGVjdGlvblBhbmVsTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3NlbGVjdGlvbi1hY3Rpb24tcGFuZWwuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi9kaXZpZGVyLmpzJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIHBhbmVsIGNvbm5lY3RlZCB0byBhIGBzYmItY2hlY2tib3hgIG9yIHRvIGEgYHNiYi1yYWRpby1idXR0b25gLlxuICogSXQgY2FuIGFsc28gY29udGFpbiBhbiBhY3Rpb24gZWxlbWVudCAoZS5nLiBhbiBgc2JiLWJ1dHRvbmApXG4gKlxuICogQHNsb3QgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhIGBzYmItY2hlY2tib3gtcGFuZWxgIG9yIGBzYmItcmFkaW8tYnV0dG9uLXBhbmVsYCBlbGVtZW50IGFuZCB0aGUgYWN0aW9uIGVsZW1lbnQuXG4gKiBAc2xvdCBiYWRnZSAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGEgYHNiYi1jYXJkLWJhZGdlYCBjb21wb25lbnQuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1zZWxlY3Rpb24tYWN0aW9uLXBhbmVsJylcbmNsYXNzIFNiYlNlbGVjdGlvbkFjdGlvblBhbmVsRWxlbWVudCBleHRlbmRzIFNiYlNlbGVjdGlvblBhbmVsTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3N0YXRlY2hhbmdlJywgKGUpID0+IHRoaXMub25JbnB1dFN0YXRlQ2hhbmdlKGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgdGhpcy50b2dnbGVTdGF0ZShcbiAgICAgICd3aXRoLWV4cGFuc2lvbi1wYW5lbCcsXG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQ/LmxvY2FsTmFtZSA9PT0gJ3NiYi1zZWxlY3Rpb24tZXhwYW5zaW9uLXBhbmVsJyxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXNlbGVjdGlvbi1hY3Rpb24tcGFuZWxfX2JhZGdlXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJiYWRnZVwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zZWxlY3Rpb24tYWN0aW9uLXBhbmVsXCI+XG4gICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zZWxlY3Rpb24tYWN0aW9uLXBhbmVsJzogU2JiU2VsZWN0aW9uQWN0aW9uUGFuZWxFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWtCTSxrQ0FBOEIsTUFBQTs7MEJBRG5DLGNBQWMsNEJBQTRCLENBQUM7Ozs7QUFDQyxNQUFBLGNBQUEsdUJBQXVCLGtCQUFrQixVQUFVLENBQUM7QUFBNUQsRUFBQSxtQkFBUSxZQUFxRDtBQUFBLElBR2hHLGNBQUE7QUFDRSxZQUFBO0FBQ0EsV0FBSyxtQkFBbUIsZUFBZSxDQUFDLE1BQU0sS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO0FBQUEsSUFDMUU7QUFBQSxJQUVnQixvQkFBaUI7QUFDL0IsWUFBTSxrQkFBQTtBQUVOLFdBQUssWUFDSCx3QkFDQSxLQUFLLGVBQWUsY0FBYywrQkFBK0I7QUFBQSxJQUVyRTtBQUFBLElBRW1CLFNBQU07QUFDdkIsYUFBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFRVDtBQUFBOztBQTFCRixpQkFBQSxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBQ3lCLEdBQUEsU0FBeUIsT0FENUMsa0JBQUEsWUFBQSx1QkFBQSxHQUErQjs7OyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-action-panel.d.ts","sourceRoot":"","sources":["../../../src/elements/selection-action-panel.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,8DAA8D,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SbbSelectionActionPanelElement } from "./selection-action-panel/selection-action-panel.component.js";
|
|
2
|
+
export {
|
|
3
|
+
SbbSelectionActionPanelElement
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWFjdGlvbi1wYW5lbC5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7In0=
|