@sapui5/sap.fe.controls 1.130.1 → 1.130.3
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/package.json +1 -1
- package/src/sap/fe/controls/.library +1 -1
- package/src/sap/fe/controls/easyFilter/AINotice.js +2 -1
- package/src/sap/fe/controls/easyFilter/AINotice.tsx +1 -0
- package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.js +71 -31
- package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.tsx +59 -14
- package/src/sap/fe/controls/easyFilter/EasyFilterInput.js +64 -53
- package/src/sap/fe/controls/easyFilter/EasyFilterInput.tsx +73 -47
- package/src/sap/fe/controls/easyFilter/ShellHistoryProvider.js +51 -65
- package/src/sap/fe/controls/easyFilter/ShellHistoryProvider.tsx +42 -58
- package/src/sap/fe/controls/easyFilter/Token.js +14 -12
- package/src/sap/fe/controls/easyFilter/Token.tsx +3 -3
- package/src/sap/fe/controls/library.js +1 -1
- package/src/sap/fe/controls/messagebundle.properties +7 -1
package/package.json
CHANGED
|
@@ -16,6 +16,7 @@ sap.ui.define(["sap/m/Button", "sap/m/OverflowToolbar", "sap/m/Popover", "sap/m/
|
|
|
16
16
|
function AINotice(props) {
|
|
17
17
|
return _jsx(Button, {
|
|
18
18
|
text: props.resourceBundle.getText("M_EASY_FILTER_FILTER_SET_AI"),
|
|
19
|
+
icon: "sap-icon://ai",
|
|
19
20
|
type: ButtonType.Transparent,
|
|
20
21
|
press: e => {
|
|
21
22
|
const $disclaimerPopover = _jsx(Popover, {
|
|
@@ -54,4 +55,4 @@ sap.ui.define(["sap/m/Button", "sap/m/OverflowToolbar", "sap/m/Popover", "sap/m/
|
|
|
54
55
|
}
|
|
55
56
|
return AINotice;
|
|
56
57
|
}, false);
|
|
57
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBSU5vdGljZSIsInByb3BzIiwiX2pzeCIsIkJ1dHRvbiIsInRleHQiLCJyZXNvdXJjZUJ1bmRsZSIsImdldFRleHQiLCJpY29uIiwidHlwZSIsIkJ1dHRvblR5cGUiLCJUcmFuc3BhcmVudCIsInByZXNzIiwiZSIsIiRkaXNjbGFpbWVyUG9wb3ZlciIsIlBvcG92ZXIiLCJjb250ZW50V2lkdGgiLCJzaG93QXJyb3ciLCJzaG93SGVhZGVyIiwicGxhY2VtZW50IiwiUGxhY2VtZW50VHlwZSIsIkJvdHRvbSIsInRpdGxlIiwiY2hpbGRyZW4iLCJjb250ZW50IiwiX2pzeHMiLCJWQm94IiwiVGV4dCIsImNsYXNzIiwiZm9vdGVyIiwiT3ZlcmZsb3dUb29sYmFyIiwiX0ZyYWdtZW50IiwiVG9vbGJhclNwYWNlciIsImNsb3NlIiwib3BlbkJ5IiwiZ2V0U291cmNlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBSU5vdGljZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB0eXBlIHsgQnV0dG9uJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIExpbmsgZnJvbSBcInNhcC9tL0xpbmtcIjtcbmltcG9ydCBPdmVyZmxvd1Rvb2xiYXIgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhclwiO1xuaW1wb3J0IFBvcG92ZXIgZnJvbSBcInNhcC9tL1BvcG92ZXJcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgVG9vbGJhclNwYWNlciBmcm9tIFwic2FwL20vVG9vbGJhclNwYWNlclwiO1xuaW1wb3J0IFZCb3ggZnJvbSBcInNhcC9tL1ZCb3hcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUsIFBsYWNlbWVudFR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuXG4vKipcbiAqIFRpbnkgY29tcG9uZW50IHRvIGRpc3BsYXkgYSBsaW5rIHRoYXQgb3BlbnMgYSBwb3BvdmVyIHdpdGggdGhlIEFJIG5vdGljZS5cbiAqIEBwYXJhbSBwcm9wc1xuICogQHBhcmFtIHByb3BzLnJlc291cmNlQnVuZGxlXG4gKiBAcmV0dXJucyBUaGUgQUkgTm90aWNlIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBBSU5vdGljZShwcm9wczogeyByZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUgfSk6IExpbmsge1xuXHRyZXR1cm4gKFxuXHRcdDxCdXR0b25cblx0XHRcdHRleHQ9e3Byb3BzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0ZJTFRFUl9TRVRfQUlcIil9XG5cdFx0XHRpY29uPVwic2FwLWljb246Ly9haVwiXG5cdFx0XHR0eXBlPXtCdXR0b25UeXBlLlRyYW5zcGFyZW50fVxuXHRcdFx0cHJlc3M9eyhlOiBCdXR0b24kUHJlc3NFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRjb25zdCAkZGlzY2xhaW1lclBvcG92ZXI6IFBvcG92ZXIgPSAoXG5cdFx0XHRcdFx0PFBvcG92ZXJcblx0XHRcdFx0XHRcdGNvbnRlbnRXaWR0aD17XCIyMi44MTI1cmVtXCJ9XG5cdFx0XHRcdFx0XHRzaG93QXJyb3c9e3RydWV9XG5cdFx0XHRcdFx0XHRzaG93SGVhZGVyPXt0cnVlfVxuXHRcdFx0XHRcdFx0cGxhY2VtZW50PXtQbGFjZW1lbnRUeXBlLkJvdHRvbX1cblx0XHRcdFx0XHRcdHRpdGxlPXtwcm9wcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0FJX1RJVExFXCIpfVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdFx0XHQ8VkJveD5cblx0XHRcdFx0XHRcdFx0XHRcdDxUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwic2FwRmVDb250cm9sc0FpUG9wb3ZlclRleHQxXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17cHJvcHMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9BSV9URVhUXzFcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0PFRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGZUNvbnRyb2xzQWlQb3BvdmVyVGV4dDJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtwcm9wcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0FJX1RFWFRfMlwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRmb290ZXI6IChcblx0XHRcdFx0XHRcdFx0XHQ8T3ZlcmZsb3dUb29sYmFyPlxuXHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VG9vbGJhclNwYWNlciAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtwcm9wcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0NMT1NFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRkaXNjbGFpbWVyUG9wb3Zlcj8uY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0PC9PdmVyZmxvd1Rvb2xiYXI+XG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PC9Qb3BvdmVyPlxuXHRcdFx0XHQpIGFzIFBvcG92ZXI7XG5cdFx0XHRcdCRkaXNjbGFpbWVyUG9wb3Zlci5vcGVuQnkoZS5nZXRTb3VyY2UoKSk7XG5cdFx0XHR9fVxuXHRcdC8+XG5cdCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFJTm90aWNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7RUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQSxRQUFRQSxDQUFDQyxLQUF5QyxFQUFRO0lBQ2xFLE9BQ0NDLElBQUEsQ0FBQ0MsTUFBTTtNQUNOQyxJQUFJLEVBQUVILEtBQUssQ0FBQ0ksY0FBYyxDQUFDQyxPQUFPLENBQUMsNkJBQTZCLENBQUU7TUFDbEVDLElBQUksRUFBQyxlQUFlO01BQ3BCQyxJQUFJLEVBQUVDLFVBQVUsQ0FBQ0MsV0FBWTtNQUM3QkMsS0FBSyxFQUFHQyxDQUFvQixJQUFXO1FBQ3RDLE1BQU1DLGtCQUEyQixHQUNoQ1gsSUFBQSxDQUFDWSxPQUFPO1VBQ1BDLFlBQVksRUFBRSxZQUFhO1VBQzNCQyxTQUFTLEVBQUUsSUFBSztVQUNoQkMsVUFBVSxFQUFFLElBQUs7VUFDakJDLFNBQVMsRUFBRUMsYUFBYSxDQUFDQyxNQUFPO1VBQ2hDQyxLQUFLLEVBQUVwQixLQUFLLENBQUNJLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLGdDQUFnQyxDQUFFO1VBQUFnQixRQUFBLEVBRXJFO1lBQ0FDLE9BQU8sRUFDTkMsS0FBQSxDQUFDQyxJQUFJO2NBQUFILFFBQUEsR0FDSnBCLElBQUEsQ0FBQ3dCLElBQUk7Z0JBQ0pDLEtBQUssRUFBQyw2QkFBNkI7Z0JBQ25DdkIsSUFBSSxFQUFFSCxLQUFLLENBQUNJLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLGlDQUFpQztjQUFFLENBQ3RFLENBQUMsRUFDRkosSUFBQSxDQUFDd0IsSUFBSTtnQkFDSkMsS0FBSyxFQUFDLDZCQUE2QjtnQkFDbkN2QixJQUFJLEVBQUVILEtBQUssQ0FBQ0ksY0FBYyxDQUFDQyxPQUFPLENBQUMsaUNBQWlDO2NBQUUsQ0FDdEUsQ0FBQztZQUFBLENBQ0csQ0FDTjtZQUNEc0IsTUFBTSxFQUNMMUIsSUFBQSxDQUFDMkIsZUFBZTtjQUFBUCxRQUFBLEVBQ2Q7Z0JBQ0FDLE9BQU8sRUFDTkMsS0FBQSxDQUFBTSxTQUFBO2tCQUFBUixRQUFBLEdBQ0NwQixJQUFBLENBQUM2QixhQUFhLElBQUUsQ0FBQyxFQUNqQjdCLElBQUEsQ0FBQ0MsTUFBTTtvQkFDTkMsSUFBSSxFQUFFSCxLQUFLLENBQUNJLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLDZCQUE2QixDQUFFO29CQUNsRUssS0FBSyxFQUFFQSxDQUFBLEtBQVk7c0JBQ2xCRSxrQkFBa0IsYUFBbEJBLGtCQUFrQix1QkFBbEJBLGtCQUFrQixDQUFFbUIsS0FBSyxDQUFDLENBQUM7b0JBQzVCO2tCQUFFLENBQ0YsQ0FBQztnQkFBQSxDQUNEO2NBRUo7WUFBQyxDQUNlO1VBRW5CO1FBQUMsQ0FDTyxDQUNFO1FBQ1puQixrQkFBa0IsQ0FBQ29CLE1BQU0sQ0FBQ3JCLENBQUMsQ0FBQ3NCLFNBQVMsQ0FBQyxDQUFDLENBQUM7TUFDekM7SUFBRSxDQUNGLENBQUM7RUFFSjtFQUFDLE9BRWNsQyxRQUFRO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -19,6 +19,7 @@ function AINotice(props: { resourceBundle: ResourceBundle }): Link {
|
|
|
19
19
|
return (
|
|
20
20
|
<Button
|
|
21
21
|
text={props.resourceBundle.getText("M_EASY_FILTER_FILTER_SET_AI")}
|
|
22
|
+
icon="sap-icon://ai"
|
|
22
23
|
type={ButtonType.Transparent}
|
|
23
24
|
press={(e: Button$PressEvent): void => {
|
|
24
25
|
const $disclaimerPopover: Popover = (
|
|
@@ -91,8 +91,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
91
91
|
_initializerDefineProperty(_this, "beforeQueryProcessing", _descriptor14, _assertThisInitialized(_this));
|
|
92
92
|
_initializerDefineProperty(_this, "afterQueryProcessing", _descriptor15, _assertThisInitialized(_this));
|
|
93
93
|
_initializerDefineProperty(_this, "state", _descriptor16, _assertThisInitialized(_this));
|
|
94
|
-
_this.mandatoryKeyMap = {};
|
|
95
94
|
_this.shouldTokenChangeEventFired = true;
|
|
95
|
+
_this.inputFieldReady = new Promise(resolve => {
|
|
96
|
+
_this.resolveContentReady = resolve;
|
|
97
|
+
});
|
|
96
98
|
_this.initialize();
|
|
97
99
|
return _this;
|
|
98
100
|
}
|
|
@@ -104,15 +106,42 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
104
106
|
this.easyfilter = __ui5_require_async(this.easyFilterLib);
|
|
105
107
|
}
|
|
106
108
|
};
|
|
107
|
-
_proto.
|
|
109
|
+
_proto.setAppId = async function setAppId(appId) {
|
|
110
|
+
if (!this.appId) {
|
|
111
|
+
var _this$easyFilterInput, _this$easyFilterInput2;
|
|
112
|
+
this.setProperty("appId", appId, true);
|
|
113
|
+
await this.inputFieldReady;
|
|
114
|
+
(_this$easyFilterInput = this.easyFilterInput.current) === null || _this$easyFilterInput === void 0 ? void 0 : _this$easyFilterInput.setProperty("appId", appId, true);
|
|
115
|
+
await ((_this$easyFilterInput2 = this.easyFilterInput.current) === null || _this$easyFilterInput2 === void 0 ? void 0 : _this$easyFilterInput2.initShellHistoryProvider());
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
_proto.setFilterBarMetadata = function setFilterBarMetadata(filterBarMetadata) {
|
|
119
|
+
if (!this.filterBarMetadata) {
|
|
120
|
+
this.setProperty("filterBarMetadata", filterBarMetadata, true);
|
|
121
|
+
// populate the tokens with default value
|
|
122
|
+
const tokens = this.getDefaultTokens(true);
|
|
123
|
+
if (!this.innerControlPopover) {
|
|
124
|
+
this.innerControlPopover = this.createPopoverForInnerControls();
|
|
125
|
+
this.addDependent(this.innerControlPopover);
|
|
126
|
+
}
|
|
127
|
+
this.state.tokens = tokens;
|
|
128
|
+
this.state.showResult = tokens.length > 0;
|
|
129
|
+
///We don't want to display error valueStateMessage as soon the control renders
|
|
130
|
+
this.isMandatoryCheckRequired = true;
|
|
131
|
+
//onTokenChange event should not be fired when initial set of tokens are set
|
|
132
|
+
this.shouldTokenChangeEventFired = false;
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
_proto.init = function init() {
|
|
108
136
|
this.resourceBundle = Lib.getResourceBundleFor("sap.fe.controls");
|
|
137
|
+
};
|
|
138
|
+
_proto.initialize = function initialize() {
|
|
109
139
|
this.content = this.createContent();
|
|
110
|
-
this.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
this.state.showResult = tokens.length > 0;
|
|
140
|
+
this.resolveContentReady();
|
|
141
|
+
if (!this.innerControlPopover) {
|
|
142
|
+
this.innerControlPopover = this.createPopoverForInnerControls();
|
|
143
|
+
this.addDependent(this.innerControlPopover);
|
|
144
|
+
}
|
|
116
145
|
//We don't want to display error valueStateMessage as soon the control renders
|
|
117
146
|
this.isMandatoryCheckRequired = true;
|
|
118
147
|
//onTokenChange event should not be fired when initial set of tokens are set
|
|
@@ -121,6 +150,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
121
150
|
_proto.getDefaultTokens = function getDefaultTokens(isDefaultValuesRespected) {
|
|
122
151
|
var _this$filterBarMetada;
|
|
123
152
|
const tokens = [];
|
|
153
|
+
if (!this.mandatoryKeyMap) {
|
|
154
|
+
this.mandatoryKeyMap = {};
|
|
155
|
+
}
|
|
124
156
|
(_this$filterBarMetada = this.filterBarMetadata) === null || _this$filterBarMetada === void 0 ? void 0 : _this$filterBarMetada.forEach(data => {
|
|
125
157
|
if (data.required === true) {
|
|
126
158
|
this.mandatoryKeyMap[data.name] = true;
|
|
@@ -161,7 +193,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
161
193
|
easyTokens.forEach(token => token.closeValueStateMessage());
|
|
162
194
|
};
|
|
163
195
|
_proto.onGoPress = async function onGoPress(magicQuery) {
|
|
164
|
-
var _this$
|
|
196
|
+
var _this$easyFilterInput3;
|
|
165
197
|
let doSearch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
166
198
|
if (!magicQuery) {
|
|
167
199
|
this.resetState();
|
|
@@ -169,7 +201,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
169
201
|
return;
|
|
170
202
|
}
|
|
171
203
|
this.state.tokenizerEditable = true;
|
|
172
|
-
(_this$
|
|
204
|
+
(_this$easyFilterInput3 = this.easyFilterInput.current) === null || _this$easyFilterInput3 === void 0 ? void 0 : _this$easyFilterInput3.setEditable(true);
|
|
173
205
|
|
|
174
206
|
// Call AI service to get the filter criteria
|
|
175
207
|
const easyfilter = await this.easyfilter;
|
|
@@ -184,17 +216,23 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
184
216
|
};
|
|
185
217
|
const easyFilterResult = await easyfilter.easyFilter(magicQuery, easyFilterMetadata);
|
|
186
218
|
if (easyFilterResult.success) {
|
|
187
|
-
var _this$
|
|
188
|
-
|
|
219
|
+
var _this$easyFilterInput4;
|
|
220
|
+
//Only add the recent query when the call is success
|
|
221
|
+
//Do not track the recent queries when the isHistoryEnabled is set to false
|
|
222
|
+
//It would be a violation to users privacy
|
|
223
|
+
if (((_this$easyFilterInput4 = this.easyFilterInput.current) === null || _this$easyFilterInput4 === void 0 ? void 0 : _this$easyFilterInput4.isHistoryEnabled()) ?? false) {
|
|
224
|
+
var _this$easyFilterInput5;
|
|
225
|
+
(_this$easyFilterInput5 = this.easyFilterInput.current) === null || _this$easyFilterInput5 === void 0 ? void 0 : _this$easyFilterInput5.addRecentQuery(magicQuery);
|
|
226
|
+
}
|
|
189
227
|
if (easyFilterResult.data.version === 1) {
|
|
190
228
|
this.handleV1Success(easyFilterResult, doSearch);
|
|
191
229
|
} else if (easyFilterResult.data.version === 2) {
|
|
192
230
|
// Create the sap.ui.model.Filter from the filter and apply it directly to the list binding
|
|
193
231
|
}
|
|
194
232
|
} else {
|
|
195
|
-
var _this$
|
|
233
|
+
var _this$easyFilterInput6;
|
|
196
234
|
// error
|
|
197
|
-
(_this$
|
|
235
|
+
(_this$easyFilterInput6 = this.easyFilterInput.current) === null || _this$easyFilterInput6 === void 0 ? void 0 : _this$easyFilterInput6.setAsInvalid(easyFilterResult.message);
|
|
198
236
|
Log.error("Error while generating filter criteria: ", easyFilterResult.message);
|
|
199
237
|
}
|
|
200
238
|
this.fireEvent("afterQueryProcessing");
|
|
@@ -208,8 +246,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
208
246
|
*/;
|
|
209
247
|
_proto.handleV1Success = function handleV1Success(easyFilterResult, goPressed) {
|
|
210
248
|
if (easyFilterResult.data.unclear) {
|
|
211
|
-
var _this$
|
|
212
|
-
(_this$
|
|
249
|
+
var _this$easyFilterInput7;
|
|
250
|
+
(_this$easyFilterInput7 = this.easyFilterInput.current) === null || _this$easyFilterInput7 === void 0 ? void 0 : _this$easyFilterInput7.setAsInvalid(this.resourceBundle.getText("M_EASY_FILTER_UNCLEAR_INPUT", [easyFilterResult.data.unclear]));
|
|
213
251
|
}
|
|
214
252
|
if (easyFilterResult.data.filter) {
|
|
215
253
|
// We need to show a message to the user that the filter criteria has been generated
|
|
@@ -295,7 +333,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
295
333
|
children: [_jsx(EasyFilterInput, {
|
|
296
334
|
recommendedValues: this.recommendedValues,
|
|
297
335
|
ref: this.easyFilterInput,
|
|
298
|
-
appId: this.appId,
|
|
299
336
|
enterPressed: this.onEnterPressed.bind(this),
|
|
300
337
|
queryChanged: e => {
|
|
301
338
|
this.fireEvent("queryChanged", {
|
|
@@ -342,13 +379,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
342
379
|
items: this.state.tokens.keySpecificSelectedValues,
|
|
343
380
|
mandatory: this.isKeyMandatory(object.key),
|
|
344
381
|
delete: () => {
|
|
345
|
-
var _this$
|
|
382
|
+
var _this$easyFilterInput8;
|
|
346
383
|
const tokenIndex = this.state.tokens.findIndex(token => token.key === object.key);
|
|
347
384
|
const newTokens = this.state.tokens.concat();
|
|
348
385
|
newTokens.splice(tokenIndex, 1);
|
|
349
386
|
this.state.goPressed = false;
|
|
350
387
|
this.state.tokens = newTokens;
|
|
351
|
-
(_this$
|
|
388
|
+
(_this$easyFilterInput8 = this.easyFilterInput.current) === null || _this$easyFilterInput8 === void 0 ? void 0 : _this$easyFilterInput8.setEditable(false);
|
|
352
389
|
},
|
|
353
390
|
children: {
|
|
354
391
|
customData: [_jsx(CustomData, {
|
|
@@ -368,11 +405,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
368
405
|
text: this.resourceBundle.getText("M_EASY_FILTER_RESET"),
|
|
369
406
|
type: ButtonType.Transparent,
|
|
370
407
|
press: () => {
|
|
371
|
-
var _this$
|
|
408
|
+
var _this$easyFilterInput9;
|
|
372
409
|
this.resetState();
|
|
373
410
|
this.state.goPressed = false;
|
|
374
411
|
//Retaining the focus on popover doesn't make the popover close on every interaction
|
|
375
|
-
(_this$
|
|
412
|
+
(_this$easyFilterInput9 = this.easyFilterInput.current) === null || _this$easyFilterInput9 === void 0 ? void 0 : _this$easyFilterInput9.focus();
|
|
376
413
|
}
|
|
377
414
|
})]
|
|
378
415
|
}), _jsx(FlexBox, {
|
|
@@ -394,23 +431,23 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
394
431
|
return outVBox;
|
|
395
432
|
};
|
|
396
433
|
_proto.onGoButtonPress = async function onGoButtonPress() {
|
|
397
|
-
var _this$
|
|
398
|
-
const editableState = (_this$
|
|
434
|
+
var _this$easyFilterInput10, _this$easyFilterInput11, _this$easyFilterInput12;
|
|
435
|
+
const editableState = (_this$easyFilterInput10 = this.easyFilterInput.current) === null || _this$easyFilterInput10 === void 0 ? void 0 : _this$easyFilterInput10.getEditable();
|
|
399
436
|
this.state.tokenizerEditable = true;
|
|
400
|
-
(_this$
|
|
437
|
+
(_this$easyFilterInput11 = this.easyFilterInput.current) === null || _this$easyFilterInput11 === void 0 ? void 0 : _this$easyFilterInput11.setEditable(true);
|
|
401
438
|
if (!(editableState ?? false)) {
|
|
402
439
|
this.fireEvent("executeSearch");
|
|
403
440
|
return;
|
|
404
441
|
}
|
|
405
|
-
await this.onGoPress((_this$
|
|
442
|
+
await this.onGoPress((_this$easyFilterInput12 = this.easyFilterInput.current) === null || _this$easyFilterInput12 === void 0 ? void 0 : _this$easyFilterInput12.getValue(), true);
|
|
406
443
|
};
|
|
407
444
|
_proto.resetState = function resetState() {
|
|
408
|
-
var _this$
|
|
445
|
+
var _this$easyFilterInput13, _this$easyFilterInput14, _this$tokenizer$curre2, _this$tokenizer$curre3;
|
|
409
446
|
this.fireEvent("clearFilters");
|
|
410
447
|
this.state.tokens = this.getDefaultTokens(true);
|
|
411
|
-
(_this$
|
|
448
|
+
(_this$easyFilterInput13 = this.easyFilterInput.current) === null || _this$easyFilterInput13 === void 0 ? void 0 : _this$easyFilterInput13.setValue("");
|
|
412
449
|
this.state.tokenizerEditable = true;
|
|
413
|
-
(_this$
|
|
450
|
+
(_this$easyFilterInput14 = this.easyFilterInput.current) === null || _this$easyFilterInput14 === void 0 ? void 0 : _this$easyFilterInput14.setEditable(true);
|
|
414
451
|
this.state.goPressed = false;
|
|
415
452
|
this.isMandatoryCheckRequired = true;
|
|
416
453
|
//Set the Value States of all the Tokens back to None
|
|
@@ -428,7 +465,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
428
465
|
const tokenIndex = newTokens.findIndex(t => t.key === tokenKey);
|
|
429
466
|
const token = newTokens[tokenIndex];
|
|
430
467
|
if (tokenIndex != -1) {
|
|
431
|
-
var _this$
|
|
468
|
+
var _this$easyFilterInput15;
|
|
432
469
|
switch (changeType) {
|
|
433
470
|
case "setSelectedValues":
|
|
434
471
|
this.setSelectedValues(token, newTokenSpecificValues, tokenIndex, newTokens);
|
|
@@ -446,7 +483,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
446
483
|
this.state.goPressed = false;
|
|
447
484
|
this.state.tokens = newTokens;
|
|
448
485
|
this.state.showResult = newTokens.length > 0;
|
|
449
|
-
(_this$
|
|
486
|
+
(_this$easyFilterInput15 = this.easyFilterInput.current) === null || _this$easyFilterInput15 === void 0 ? void 0 : _this$easyFilterInput15.setEditable(false);
|
|
450
487
|
}
|
|
451
488
|
};
|
|
452
489
|
_proto.setSelectedValues = function setSelectedValues(token, newTokenSpecificValues, tokenIndex, newTokens) {
|
|
@@ -456,6 +493,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
456
493
|
}
|
|
457
494
|
};
|
|
458
495
|
_proto.isKeyMandatory = function isKeyMandatory(key) {
|
|
496
|
+
if (!this.mandatoryKeyMap) {
|
|
497
|
+
this.mandatoryKeyMap = {};
|
|
498
|
+
}
|
|
459
499
|
return this.mandatoryKeyMap[key] ? true : false;
|
|
460
500
|
};
|
|
461
501
|
_proto.getTokensInInitialState = function getTokensInInitialState() {
|
|
@@ -586,4 +626,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
586
626
|
_exports = EasyFilterBarContainer;
|
|
587
627
|
return _exports;
|
|
588
628
|
}, false);
|
|
589
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVyQmFyQ29udGFpbmVyIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzgiLCJfZGVjOSIsImFnZ3JlZ2F0aW9uIiwiX2RlYzEwIiwiZXZlbnQiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsIl9pbmhlcml0c0xvb3NlIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIm1hbmRhdG9yeUtleU1hcCIsInNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCIsImluaXRpYWxpemUiLCJfZXhwb3J0cyIsIl9wcm90byIsInByb3RvdHlwZSIsInNldEVhc3lGaWx0ZXJMaWIiLCJlYXN5RmlsdGVyTGliIiwic2V0UHJvcGVydHkiLCJlYXN5ZmlsdGVyIiwiX191aTVfcmVxdWlyZV9hc3luYyIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImlubmVyQ29udHJvbFBvcG92ZXIiLCJjcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scyIsImFkZERlcGVuZGVudCIsInRva2VucyIsImdldERlZmF1bHRUb2tlbnMiLCJzdGF0ZSIsInNob3dSZXN1bHQiLCJsZW5ndGgiLCJpc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQiLCJpc0RlZmF1bHRWYWx1ZXNSZXNwZWN0ZWQiLCJfdGhpcyRmaWx0ZXJCYXJNZXRhZGEiLCJmaWx0ZXJCYXJNZXRhZGF0YSIsImZvckVhY2giLCJkYXRhIiwicmVxdWlyZWQiLCJuYW1lIiwicHVzaCIsImtleSIsImxhYmVsIiwia2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyIsImRlZmF1bHRWYWx1ZSIsIm9uRW50ZXJQcmVzc2VkIiwiZSIsIm9uR29QcmVzcyIsImdldFBhcmFtZXRlciIsImNoZWNrSWZBbGxNYW5kYXRvcnlUb2tlbnNGaWxsZWQiLCJ0b2tlbnNJblN0YXRlIiwiZ2V0VW5TZXRNYW5kYXRvcnlUb2tlbnNJbkN1cnJlbnRTdGF0ZSIsImdldEFjdHVhbFRva2Vuc0Zyb21TdGF0ZSIsInRva2VuIiwiVmFsdWVTdGF0ZSIsIkVycm9yIiwiZ2V0VGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsImNsb3NlQWxsTWFuZGF0b3J5VmFsdWVTdGF0ZU1lc3NhZ2VzIiwiX3RoaXMkdG9rZW5pemVyJGN1cnJlIiwiZWFzeVRva2VucyIsInRva2VuaXplciIsImN1cnJlbnQiLCJnZXRUb2tlbnMiLCJjbG9zZVZhbHVlU3RhdGVNZXNzYWdlIiwibWFnaWNRdWVyeSIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dCIsImRvU2VhcmNoIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwicmVzZXRTdGF0ZSIsImdvUHJlc3NlZCIsInRva2VuaXplckVkaXRhYmxlIiwiZWFzeUZpbHRlcklucHV0Iiwic2V0RWRpdGFibGUiLCJmaXJlRXZlbnQiLCJlYXN5RmlsdGVyTWV0YWRhdGEiLCJ2ZXJzaW9uIiwiZW50aXR5U2V0IiwiY29udGV4dFBhdGgiLCJmaWVsZHMiLCJlYXN5RmlsdGVyUmVzdWx0IiwiZWFzeUZpbHRlciIsInN1Y2Nlc3MiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQyIiwiYWRkUmVjZW50UXVlcnkiLCJoYW5kbGVWMVN1Y2Nlc3MiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQzIiwic2V0QXNJbnZhbGlkIiwibWVzc2FnZSIsIkxvZyIsImVycm9yIiwidW5jbGVhciIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDQiLCJmaWx0ZXIiLCJkZWJ1ZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJFYXN5RmlsdGVyVXRpbHMiLCJmb3JtYXREYXRhIiwiX2pzeCIsIlBvcG92ZXIiLCJpZCIsImdldElkIiwic2hvd0Fycm93Iiwic2hvd0hlYWRlciIsInBsYWNlbWVudCIsIlBsYWNlbWVudFR5cGUiLCJCb3R0b20iLCJjaGlsZHJlbiIsImZvb3RlciIsImdldFRvb2xiYXIiLCJ0b29sYmFyIiwib2tCdXR0b24iLCJnZXRPa0J1dHRvbiIsInNob3dBbGxCdXR0b24iLCJnZXRTaG93QWxsQnV0dG9uIiwiT3ZlcmZsb3dUb29sYmFyIiwiX2pzeHMiLCJfRnJhZ21lbnQiLCJUb29sYmFyU3BhY2VyIiwiQnV0dG9uIiwidGV4dCIsIkJ1dHRvblR5cGUiLCJFbXBoYXNpemVkIiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImluY2x1ZGVzIiwibWFwIiwiZGVlcENsb25lIiwiZ29CdXR0b25QcmVzc2VkIiwidmFsdWVPZiIsIiR0b3BHb0J0biIsImNyZWF0ZVJlZmVyZW5jZSIsIiRib3RHb0J0biIsIm91dFZCb3giLCJWQm94IiwiRmxleEJveCIsInJlbmRlclR5cGUiLCJFYXN5RmlsdGVySW5wdXQiLCJyZWNvbW1lbmRlZFZhbHVlcyIsInJlZiIsImFwcElkIiwiZW50ZXJQcmVzc2VkIiwiYmluZCIsInF1ZXJ5Q2hhbmdlZCIsInF1ZXJ5IiwibGl2ZUNoYW5nZSIsImljb24iLCJjbGFzcyIsInZpc2libGUiLCJub3QiLCJiaW5kU3RhdGUiLCJwcmVzcyIsIm9uR29CdXR0b25QcmVzcyIsImFsaWduSXRlbXMiLCJGbGV4QWxpZ25JdGVtcyIsIkNlbnRlciIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIkFJTm90aWNlIiwiVG9rZW5pemVyIiwiZWRpdGFibGUiLCJhbmQiLCJpZHgiLCJjdHgiLCJfdGhpcyRmaWx0ZXJCYXJNZXRhZGEyIiwiX3RoaXMkZmlsdGVyQmFyTWV0YWRhMyIsIm9iamVjdCIsImdldE9iamVjdCIsIlRva2VuIiwiaXRlbXMiLCJtYW5kYXRvcnkiLCJpc0tleU1hbmRhdG9yeSIsImRlbGV0ZSIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDUiLCJ0b2tlbkluZGV4IiwiZmluZEluZGV4IiwibmV3VG9rZW5zIiwiY29uY2F0Iiwic3BsaWNlIiwiY3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJ2YWx1ZSIsImZpbmQiLCJjb2RlTGlzdCIsIlRyYW5zcGFyZW50IiwiX3RoaXMkZWFzeUZpbHRlcklucHV0NiIsImZvY3VzIiwiRkVTUkhlbHBlciIsInNldFNlbWFudGljU3RlcG5hbWUiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQ3IiwiX3RoaXMkZWFzeUZpbHRlcklucHV0OCIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDkiLCJlZGl0YWJsZVN0YXRlIiwiZ2V0RWRpdGFibGUiLCJnZXRWYWx1ZSIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDEwIiwiX3RoaXMkZWFzeUZpbHRlcklucHV0MTEiLCJfdGhpcyR0b2tlbml6ZXIkY3VycmUyIiwiX3RoaXMkdG9rZW5pemVyJGN1cnJlMyIsInNldFZhbHVlIiwiTm9uZSIsInVwZGF0ZVRva2VuQXJyYXkiLCJjaGFuZ2VUeXBlIiwibmV3VG9rZW5TcGVjaWZpY1ZhbHVlcyIsInRva2VuS2V5IiwidCIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDEyIiwic2V0U2VsZWN0ZWRWYWx1ZXMiLCJnZXRUb2tlbnNJbkluaXRpYWxTdGF0ZSIsIm1hbmRhdG9yeVRva2VucyIsIl90aGlzJHRva2VuaXplciRjdXJyZTQiLCJyZXF1aXJlZEtleXMiLCJnZXRLZXkiLCJyZW5kZXIiLCJybSIsImNvbnRyb2wiLCJqc3giLCJyZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIiLCJnZXRBZ2dyZWdhdGlvbiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJCYXJDb250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSwgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7XG5cdGFnZ3JlZ2F0aW9uLFxuXHRjcmVhdGVSZWZlcmVuY2UsXG5cdGRlZmluZVJlZmVyZW5jZSxcblx0ZGVmaW5lU3RhdGUsXG5cdGRlZmluZVVJNUNsYXNzLFxuXHRldmVudCxcblx0cHJvcGVydHksXG5cdHR5cGUgUHJvcGVydGllc09mXG59IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgVG9rZW4gZnJvbSBcInNhcC9mZS9jb250cm9scy9lYXN5RmlsdGVyL1Rva2VuXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBGbGV4Qm94IGZyb20gXCJzYXAvbS9GbGV4Qm94XCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IFRva2VuaXplciBmcm9tIFwic2FwL20vVG9rZW5pemVyXCI7XG5pbXBvcnQgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSwgRmxleEFsaWduSXRlbXMsIEZsZXhKdXN0aWZ5Q29udGVudCwgRmxleFdyYXAsIFBsYWNlbWVudFR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IFZhbHVlU3RhdGUgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCBkZWVwQ2xvbmUgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcENsb25lXCI7XG5pbXBvcnQgeyBhbmQsIGJpbmRTdGF0ZSwgbm90IH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgRWFzeUZpbHRlcklucHV0IGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9FYXN5RmlsdGVySW5wdXRcIjtcbmltcG9ydCB0eXBlIEVhc3lGaWx0ZXJUb2tlbiBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvVG9rZW5cIjtcbmltcG9ydCBPdmVyZmxvd1Rvb2xiYXIgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhclwiO1xuaW1wb3J0IFRvb2xiYXJTcGFjZXIgZnJvbSBcInNhcC9tL1Rvb2xiYXJTcGFjZXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBGRVNSSGVscGVyIGZyb20gXCJzYXAvdWkvcGVyZm9ybWFuY2UvdHJhY2UvRkVTUkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgRWFzeUZpbHRlciBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEVhc3lGaWx0ZXJNZXRhZGF0YSwgUHJvcGVydHlNZXRhZGF0YSwgU3VjY2VzcyB9IGZyb20gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IEFJTm90aWNlIGZyb20gXCIuL0FJTm90aWNlXCI7XG5pbXBvcnQgRWFzeUZpbHRlclV0aWxzIGZyb20gXCIuL3V0aWxzXCI7XG5cbi8vRm9yIGN1cnJlbnQgcmVsZWFzZSB3ZSBhcmUgaWdub3JpbmcgXCJBbGxcIiBhbmQgXCJBbnlcIlxuLy9XZSBjYW4gaW5jb3Jwb3JhdGUgdGhlc2UgdmFsdWVzIGluIGZ1dHVyZVxuZXhwb3J0IHR5cGUgQmV0d2VlblNlbGVjdGVkVmFsdWVzID0gW2Jvb2xlYW4sIGJvb2xlYW5dIHwgW3N0cmluZywgc3RyaW5nXSB8IFtudW1iZXIsIG51bWJlcl0gfCBbRGF0ZSwgRGF0ZV07XG5cbi8vV2Ugd2lsbCBiZSBoYW5kbGluZyBcIkFMTFwiIGFuZCBcIkFOWVwiIGF0IGxhdGVyIHBvaW50IG9mIHRpbWVcbmV4cG9ydCB0eXBlIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uID1cblx0fCB7XG5cdFx0XHRvcGVyYXRvcjogRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj47XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogc3RyaW5nW10gfCBib29sZWFuW10gfCBudW1iZXJbXSB8IERhdGVbXTtcblx0ICB9XG5cdHwge1xuXHRcdFx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLkJUIHwgRmlsdGVyT3BlcmF0b3IuTkI7XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogQmV0d2VlblNlbGVjdGVkVmFsdWVzO1xuXHQgIH07XG5cbmV4cG9ydCB0eXBlIFRva2VuVHlwZSA9IFwiTWVudVdpdGhDaGVja0JveFwiIHwgXCJDYWxlbmRhclwiIHwgXCJUaW1lXCIgfCBcIlZhbHVlSGVscFwiO1xuXG5leHBvcnQgdHlwZSBUb2tlbkRlZmluaXRpb24gPSB7XG5cdGtleTogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdO1xuXHR0eXBlPzogVG9rZW5UeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgVG9rZW5TZXR0ZXJzID0gXCJzZXRTZWxlY3RlZFZhbHVlc1wiO1xuXG5leHBvcnQgdHlwZSBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSA9XG5cdHwgKFByb3BlcnR5TWV0YWRhdGEgJiB7XG5cdFx0XHR0eXBlOiBUb2tlblR5cGU7XG5cdFx0XHRsYWJlbDogc3RyaW5nOyAvLyBSZXF1aXJlZCBwcm9wZXJ0eSwgaGVuY2UgbGFiZWwgaXMgbWFuZGF0b3J5XG5cdFx0XHRyZXF1aXJlZDogdHJ1ZTtcblx0XHRcdGRlZmF1bHRWYWx1ZT86IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW107XG5cdCAgfSlcblx0fCAoUHJvcGVydHlNZXRhZGF0YSAmIHtcblx0XHRcdHR5cGU6IFRva2VuVHlwZTtcblx0XHRcdGxhYmVsPzogc3RyaW5nOyAvLyBPcHRpb25hbCBwcm9wZXJ0eSwgaGVuY2UgbGFiZWwgY2FuIGJlIG9taXR0ZWRcblx0XHRcdHJlcXVpcmVkOiBmYWxzZTtcblx0XHRcdGRlZmF1bHRWYWx1ZT86IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW107XG5cdCAgfSk7XG4vKlxuICogRGVsaXZlcnkgZm9yIGJldGEgcmVsZWFzZSBmb3IgdGhlIGVhc3kgZmlsdGVyIGZlYXR1cmUuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5lYXN5RmlsdGVyLkVhc3lGaWx0ZXJCYXJDb250YWluZXJcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJCYXJDb250YWluZXIgZXh0ZW5kcyBDb250cm9sIHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGFwcElkPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZWFzeUZpbHRlckxpYj86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImFycmF5XCIgfSlcblx0ZmlsdGVyQmFyTWV0YWRhdGEhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYXJyYXlcIiB9KVxuXHRyZWNvbW1lbmRlZFZhbHVlcz86IHN0cmluZ1tdO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRlYXN5RmlsdGVySW5wdXQhOiBSZWY8RW5oYW5jZVdpdGhVSTU8RWFzeUZpbHRlcklucHV0Pj47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHRva2VuaXplciE6IFJlZjxUb2tlbml6ZXI+O1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiIH0pXG5cdGNvbnRlbnQ/OiBDb250cm9sO1xuXG5cdEBldmVudCgpXG5cdHRva2Vuc0NoYW5nZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyB0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdOyBnb0J1dHRvblByZXNzZWQ6IGJvb2xlYW4gfSwgRWFzeUZpbHRlckJhckNvbnRhaW5lcj4+O1xuXG5cdEBldmVudCgpXG5cdHF1ZXJ5Q2hhbmdlZD86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7IHF1ZXJ5OiBzdHJpbmcgfSwgRWFzeUZpbHRlckJhckNvbnRhaW5lcj4+O1xuXG5cdEBldmVudCgpXG5cdHNob3dWYWx1ZUhlbHA/OiBFdmVudEhhbmRsZXI8XG5cdFx0VUk1RXZlbnQ8XG5cdFx0XHR7IGtleTogc3RyaW5nOyB2YWx1ZXM6IHVua25vd25bXTsgcmVzb2x2ZTogKHZhbHVlOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKSA9PiB2b2lkOyByZWplY3Q6IChyZWFzb24/OiBFcnJvcikgPT4gdm9pZCB9LFxuXHRcdFx0RWFzeUZpbHRlckJhckNvbnRhaW5lclxuXHRcdD5cblx0PjtcblxuXHRAZXZlbnQoKVxuXHRjbGVhckZpbHRlcnM/OiBFdmVudEhhbmRsZXI7XG5cblx0Ly9UaGUgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQgb25seSB3aGVuIHRoZSB0b2tlbnMgaGFzIGJlZW4gY2hhbmdlZCB3aXRoIHRva2VucyBhbmQgcHJlc3NlZCBvbiB0aGUgR28gQnV0dG9uXG5cdC8vSW4gdGhpcyBjYXNlIHRoZSBcIkVudGVyXCIgd29udCBiZSByZWxldmFudCBiZWNhdXNlIHRoZSBpbnB1dCBmaWVsZCB3aWxsIGJlIGluIG5vbiBlZGl0YWJsZSBzdGF0ZVxuXHRAZXZlbnQoKVxuXHRleGVjdXRlU2VhcmNoPzogRXZlbnRIYW5kbGVyO1xuXG5cdEBldmVudCgpXG5cdGJlZm9yZVF1ZXJ5UHJvY2Vzc2luZz86IEV2ZW50SGFuZGxlcjtcblxuXHRAZXZlbnQoKVxuXHRhZnRlclF1ZXJ5UHJvY2Vzc2luZz86IEV2ZW50SGFuZGxlcjtcblxuXHRwcml2YXRlIHJlc291cmNlQnVuZGxlITogUmVzb3VyY2VCdW5kbGU7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRzaG93UmVzdWx0OiBib29sZWFuO1xuXHRcdHRva2VuczogVG9rZW5EZWZpbml0aW9uW107XG5cdFx0Z29QcmVzc2VkOiBib29sZWFuO1xuXHRcdHRva2VuaXplckVkaXRhYmxlOiBib29sZWFuO1xuXHR9PiA9IHtcblx0XHRzaG93UmVzdWx0OiBmYWxzZSxcblx0XHR0b2tlbnM6IFtdIGFzIFRva2VuRGVmaW5pdGlvbltdLFxuXHRcdGdvUHJlc3NlZDogZmFsc2UsXG5cdFx0dG9rZW5pemVyRWRpdGFibGU6IHRydWVcblx0fTtcblxuXHRwcml2YXRlIGlubmVyQ29udHJvbFBvcG92ZXI/OiBQb3BvdmVyO1xuXG5cdHByaXZhdGUgb2tCdXR0b24/OiBCdXR0b247XG5cblx0cHJpdmF0ZSBzaG93QWxsQnV0dG9uPzogQnV0dG9uO1xuXG5cdHByaXZhdGUgdG9vbGJhcj86IE92ZXJmbG93VG9vbGJhcjtcblxuXHRwcml2YXRlIG1hbmRhdG9yeUtleU1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuXHQvL0lmIHNldCB0byB0cnVlIHRoZSBlcnJvciBzdGF0ZSBjYW4gYmUgc2VlbiBvbiB0aGUgdG9rZW5zXG5cdHByaXZhdGUgaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkPzogYm9vbGVhbjtcblxuXHRwcml2YXRlIHNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCA9IHRydWU7XG5cblx0ZWFzeWZpbHRlcj86IFByb21pc2U8dHlwZW9mIEVhc3lGaWx0ZXIgfCB1bmRlZmluZWQ+O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJCYXJDb250YWluZXI+KSwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMgYXMgc3RyaW5nLCBvdGhlcnMpO1xuXHRcdHRoaXMuaW5pdGlhbGl6ZSgpO1xuXHR9XG5cblx0c2V0RWFzeUZpbHRlckxpYihlYXN5RmlsdGVyTGliOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiZWFzeUZpbHRlckxpYlwiLCBlYXN5RmlsdGVyTGliKTtcblx0XHRpZiAodGhpcy5lYXN5RmlsdGVyTGliKSB7XG5cdFx0XHR0aGlzLmVhc3lmaWx0ZXIgPSBpbXBvcnQodGhpcy5lYXN5RmlsdGVyTGliKTtcblx0XHR9XG5cdH1cblxuXHRpbml0aWFsaXplKCk6IHZvaWQge1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdHRoaXMuaW5uZXJDb250cm9sUG9wb3ZlciA9IHRoaXMuY3JlYXRlUG9wb3ZlckZvcklubmVyQ29udHJvbHMoKTtcblx0XHR0aGlzLmFkZERlcGVuZGVudCh0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpO1xuXHRcdC8vIHBvcHVsYXRlIHRoZSB0b2tlbnMgd2l0aCBkZWZhdWx0IHZhbHVlXG5cdFx0Y29uc3QgdG9rZW5zID0gdGhpcy5nZXREZWZhdWx0VG9rZW5zKHRydWUpO1xuXHRcdHRoaXMuc3RhdGUudG9rZW5zID0gdG9rZW5zO1xuXHRcdHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCA9IHRva2Vucy5sZW5ndGggPiAwO1xuXHRcdC8vV2UgZG9uJ3Qgd2FudCB0byBkaXNwbGF5IGVycm9yIHZhbHVlU3RhdGVNZXNzYWdlIGFzIHNvb24gdGhlIGNvbnRyb2wgcmVuZGVyc1xuXHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gdHJ1ZTtcblx0XHQvL29uVG9rZW5DaGFuZ2UgZXZlbnQgc2hvdWxkIG5vdCBiZSBmaXJlZCB3aGVuIGluaXRpYWwgc2V0IG9mIHRva2VucyBhcmUgc2V0XG5cdFx0dGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQgPSBmYWxzZTtcblx0fVxuXG5cdGdldERlZmF1bHRUb2tlbnMoaXNEZWZhdWx0VmFsdWVzUmVzcGVjdGVkOiBib29sZWFuKTogVG9rZW5EZWZpbml0aW9uW10ge1xuXHRcdGNvbnN0IHRva2VuczogVG9rZW5EZWZpbml0aW9uW10gPSBbXTtcblx0XHR0aGlzLmZpbHRlckJhck1ldGFkYXRhPy5mb3JFYWNoKChkYXRhKSA9PiB7XG5cdFx0XHRpZiAoZGF0YS5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHR0aGlzLm1hbmRhdG9yeUtleU1hcFtkYXRhLm5hbWVdID0gdHJ1ZTtcblx0XHRcdFx0Ly9DaGVjayB3aGV0aGVyIHRoZSBrZXlzIGV4aXN0IGluIHRoZSBjdXJyZW50IHN0YXRlIGVsc2UgcHVzaCBpdCBhY3Jvc3Ncblx0XHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHRcdGtleTogZGF0YS5uYW1lLFxuXHRcdFx0XHRcdGxhYmVsOiBkYXRhLmxhYmVsLFxuXHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IGlzRGVmYXVsdFZhbHVlc1Jlc3BlY3RlZCAmJiBkYXRhLmRlZmF1bHRWYWx1ZSA/IGRhdGEuZGVmYXVsdFZhbHVlIDogW10sXG5cdFx0XHRcdFx0dHlwZTogZGF0YS50eXBlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiB0b2tlbnM7XG5cdH1cblxuXHRvbkVudGVyUHJlc3NlZChlOiBVSTVFdmVudDx7IHF1ZXJ5OiBzdHJpbmcgfSwgRWFzeUZpbHRlcklucHV0Pik6IHZvaWQge1xuXHRcdHRoaXMub25Hb1ByZXNzKGUuZ2V0UGFyYW1ldGVyKFwicXVlcnlcIiksIGZhbHNlKTtcblx0fVxuXG5cdC8vTWFraW5nIGl0IHB1YmxpYyBiZWNhdXNlIGluIGxpdmUgbW9kZSB0aGUgYXBwIGRldmVsb3BlciBjYW4gZGVjaWRlIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZXJyb3IgVmFsdWVTdGF0ZU1lc3NhZ2Vcblx0Ly9JbiBub24tbGl2ZSBtb2RlICwgd2UgYXJlIGFscmVhZHkgaW50ZXJuYWxseSBoYW5kbGluZyBpdCBvbiBldmVyeSB0aW1lIHRpbWUgYSB1c2VyIGNsaWNrcyBvbiBHTy9FbnRlciBidXR0b25zXG5cdHB1YmxpYyBjaGVja0lmQWxsTWFuZGF0b3J5VG9rZW5zRmlsbGVkKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHRva2Vuc0luU3RhdGUgPSB0aGlzLmdldFVuU2V0TWFuZGF0b3J5VG9rZW5zSW5DdXJyZW50U3RhdGUoKTtcblx0XHRpZiAodG9rZW5zSW5TdGF0ZS5sZW5ndGggIT09IDApIHtcblx0XHRcdGNvbnN0IHRva2VucyA9IHRoaXMuZ2V0QWN0dWFsVG9rZW5zRnJvbVN0YXRlKHRva2Vuc0luU3RhdGUpO1xuXHRcdFx0dG9rZW5zPy5mb3JFYWNoKCh0b2tlbikgPT4ge1xuXHRcdFx0XHR0b2tlbi5zZXRQcm9wZXJ0eShcInZhbHVlU3RhdGVcIiwgVmFsdWVTdGF0ZS5FcnJvcik7XG5cdFx0XHRcdHRva2VuLnNldFByb3BlcnR5KFwidmFsdWVTdGF0ZVRleHRcIiwgdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9NQU5EQVRPUllfVE9LRU5fRVJST1JcIikpO1xuXHRcdFx0XHR0b2tlbi5vcGVuVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZUFsbE1hbmRhdG9yeVZhbHVlU3RhdGVNZXNzYWdlcygpOiB2b2lkIHtcblx0XHRjb25zdCBlYXN5VG9rZW5zID0gdGhpcy50b2tlbml6ZXIuY3VycmVudD8uZ2V0VG9rZW5zKCkgYXMgRWFzeUZpbHRlclRva2VuW107XG5cdFx0ZWFzeVRva2Vucy5mb3JFYWNoKCh0b2tlbikgPT4gdG9rZW4uY2xvc2VWYWx1ZVN0YXRlTWVzc2FnZSgpKTtcblx0fVxuXG5cdGFzeW5jIG9uR29QcmVzcyhtYWdpY1F1ZXJ5OiBzdHJpbmcgfCB1bmRlZmluZWQsIGRvU2VhcmNoID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIW1hZ2ljUXVlcnkpIHtcblx0XHRcdHRoaXMucmVzZXRTdGF0ZSgpO1xuXHRcdFx0dGhpcy5zdGF0ZS5nb1ByZXNzZWQgPSBkb1NlYXJjaDtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5zdGF0ZS50b2tlbml6ZXJFZGl0YWJsZSA9IHRydWU7XG5cdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uc2V0RWRpdGFibGUodHJ1ZSk7XG5cblx0XHQvLyBDYWxsIEFJIHNlcnZpY2UgdG8gZ2V0IHRoZSBmaWx0ZXIgY3JpdGVyaWFcblx0XHRjb25zdCBlYXN5ZmlsdGVyID0gYXdhaXQgdGhpcy5lYXN5ZmlsdGVyO1xuXHRcdGlmICghZWFzeWZpbHRlcikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmZpcmVFdmVudChcImJlZm9yZVF1ZXJ5UHJvY2Vzc2luZ1wiKTtcblxuXHRcdGNvbnN0IGVhc3lGaWx0ZXJNZXRhZGF0YTogRWFzeUZpbHRlck1ldGFkYXRhID0ge1xuXHRcdFx0dmVyc2lvbjogMSxcblx0XHRcdGVudGl0eVNldDogdGhpcy5jb250ZXh0UGF0aCxcblx0XHRcdGZpZWxkczogdGhpcy5maWx0ZXJCYXJNZXRhZGF0YVxuXHRcdH07XG5cblx0XHRjb25zdCBlYXN5RmlsdGVyUmVzdWx0ID0gYXdhaXQgZWFzeWZpbHRlci5lYXN5RmlsdGVyKG1hZ2ljUXVlcnksIGVhc3lGaWx0ZXJNZXRhZGF0YSk7XG5cblx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5zdWNjZXNzKSB7XG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5hZGRSZWNlbnRRdWVyeShtYWdpY1F1ZXJ5KTtcblx0XHRcdGlmIChlYXN5RmlsdGVyUmVzdWx0LmRhdGEudmVyc2lvbiA9PT0gMSkge1xuXHRcdFx0XHR0aGlzLmhhbmRsZVYxU3VjY2VzcyhlYXN5RmlsdGVyUmVzdWx0LCBkb1NlYXJjaCk7XG5cdFx0XHR9IGVsc2UgaWYgKGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS52ZXJzaW9uID09PSAyKSB7XG5cdFx0XHRcdC8vIENyZWF0ZSB0aGUgc2FwLnVpLm1vZGVsLkZpbHRlciBmcm9tIHRoZSBmaWx0ZXIgYW5kIGFwcGx5IGl0IGRpcmVjdGx5IHRvIHRoZSBsaXN0IGJpbmRpbmdcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZXJyb3Jcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEFzSW52YWxpZChlYXN5RmlsdGVyUmVzdWx0Lm1lc3NhZ2UpO1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgZ2VuZXJhdGluZyBmaWx0ZXIgY3JpdGVyaWE6IFwiLCBlYXN5RmlsdGVyUmVzdWx0Lm1lc3NhZ2UpO1xuXHRcdH1cblxuXHRcdHRoaXMuZmlyZUV2ZW50KFwiYWZ0ZXJRdWVyeVByb2Nlc3NpbmdcIik7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgc3VjY2VzcyByZXNwb25zZSBmcm9tIHRoZSBBSSBzZXJ2aWNlIGZvciB2ZXJzaW9uIDEgb2YgdGhlIGVhc3kgZmlsdGVyLlxuXHQgKiBAcGFyYW0gZWFzeUZpbHRlclJlc3VsdCBUaGUgcmVzdWx0IGZyb20gdGhlIEFJIHNlcnZpY2Vcblx0ICogQHBhcmFtIGdvUHJlc3NlZCBXaGV0aGVyIHRvIGV4ZWN1dGUgdGhlIHNlYXJjaCBhZnRlciB0aGUgZmlsdGVyIGNyaXRlcmlhIGhhcyBiZWVuIGdlbmVyYXRlZFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJpdmF0ZSBoYW5kbGVWMVN1Y2Nlc3MoZWFzeUZpbHRlclJlc3VsdDogU3VjY2VzczxFYXN5RmlsdGVyLkVhc3lGaWx0ZXJSZXN1bHQ+LCBnb1ByZXNzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5kYXRhLnVuY2xlYXIpIHtcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEFzSW52YWxpZChcblx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9VTkNMRUFSX0lOUFVUXCIsIFtlYXN5RmlsdGVyUmVzdWx0LmRhdGEudW5jbGVhcl0pXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5kYXRhLmZpbHRlcikge1xuXHRcdFx0Ly8gV2UgbmVlZCB0byBzaG93IGEgbWVzc2FnZSB0byB0aGUgdXNlciB0aGF0IHRoZSBmaWx0ZXIgY3JpdGVyaWEgaGFzIGJlZW4gZ2VuZXJhdGVkXG5cdFx0XHRMb2cuZGVidWcoXCJGaWx0ZXIgY3JpdGVyaWEgZ2VuZXJhdGVkOiBcIiwgSlNPTi5zdHJpbmdpZnkoZWFzeUZpbHRlclJlc3VsdC5kYXRhLmZpbHRlciwgbnVsbCwgMikpO1xuXG5cdFx0XHQvLyBWYWxpZGF0ZSBhbmQgYXBwbHkgdGhlIGZpbHRlciBjcml0ZXJpYVxuXHRcdFx0Y29uc3QgdG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSA9IHRoaXMuZ2V0RGVmYXVsdFRva2VucyhmYWxzZSk7XG5cdFx0XHRFYXN5RmlsdGVyVXRpbHMuZm9ybWF0RGF0YSh0b2tlbnMsIGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIsIHRoaXMuZmlsdGVyQmFyTWV0YWRhdGEpO1xuXG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSB0cnVlO1xuXHRcdFx0dGhpcy5zdGF0ZS5nb1ByZXNzZWQgPSBnb1ByZXNzZWQ7XG5cdFx0XHR0aGlzLnN0YXRlLnRva2VucyA9IHRva2Vucztcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scygpOiBQb3BvdmVyIHtcblx0XHRpZiAoIXRoaXMuaW5uZXJDb250cm9sUG9wb3Zlcikge1xuXHRcdFx0dGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyID0gKFxuXHRcdFx0XHQ8UG9wb3ZlciBpZD17dGhpcy5nZXRJZCgpICsgXCItaW5uZXJQb3BvdmVyXCJ9IHNob3dBcnJvdz17ZmFsc2V9IHNob3dIZWFkZXI9e3RydWV9IHBsYWNlbWVudD17UGxhY2VtZW50VHlwZS5Cb3R0b219PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRmb290ZXI6IHRoaXMuZ2V0VG9vbGJhcigpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Qb3BvdmVyPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaW5uZXJDb250cm9sUG9wb3ZlciBhcyBQb3BvdmVyO1xuXHR9XG5cblx0Z2V0VG9vbGJhcigpOiBPdmVyZmxvd1Rvb2xiYXIgfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy50b29sYmFyKSB7XG5cdFx0XHRjb25zdCBva0J1dHRvbiA9IHRoaXMuZ2V0T2tCdXR0b24oKTtcblx0XHRcdGNvbnN0IHNob3dBbGxCdXR0b24gPSB0aGlzLmdldFNob3dBbGxCdXR0b24oKTtcblx0XHRcdHRoaXMudG9vbGJhciA9IChcblx0XHRcdFx0PE92ZXJmbG93VG9vbGJhcj5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHRcdDxUb29sYmFyU3BhY2VyIC8+XG5cdFx0XHRcdFx0XHRcdFx0e29rQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHRcdHtzaG93QWxsQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHQ8Lz5cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L092ZXJmbG93VG9vbGJhcj5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnRvb2xiYXI7XG5cdH1cblxuXHRnZXRPa0J1dHRvbigpOiBCdXR0b24gfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy5va0J1dHRvbikge1xuXHRcdFx0dGhpcy5va0J1dHRvbiA9IDxCdXR0b24gdGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX09LXCIpfSB0eXBlPXtCdXR0b25UeXBlLkVtcGhhc2l6ZWR9IC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5va0J1dHRvbjtcblx0fVxuXG5cdGdldFNob3dBbGxCdXR0b24oKTogQnV0dG9uIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIXRoaXMuc2hvd0FsbEJ1dHRvbikge1xuXHRcdFx0dGhpcy5zaG93QWxsQnV0dG9uID0gPEJ1dHRvbiB0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfU0hPV19BTExfSVRFTVNcIil9IC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5zaG93QWxsQnV0dG9uO1xuXHR9XG5cblx0b25TdGF0ZUNoYW5nZShjaGFuZ2VkUHJvcHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcblx0XHRpZiAoY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwidG9rZW5zXCIpKSB7XG5cdFx0XHRpZiAodGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQpIHtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ0b2tlbnNDaGFuZ2VkXCIsIHtcblx0XHRcdFx0XHR0b2tlbnM6IHRoaXMuc3RhdGUudG9rZW5zLm1hcCgoZGF0YSkgPT4gZGVlcENsb25lKGRhdGEpKSxcblx0XHRcdFx0XHRnb0J1dHRvblByZXNzZWQ6IHRoaXMuc3RhdGUuZ29QcmVzc2VkLnZhbHVlT2YoKVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCA9IHRoaXMuc3RhdGUudG9rZW5zLmxlbmd0aCA+IDA7XG5cdFx0XHRpZiAoISh0aGlzLmlzTWFuZGF0b3J5Q2hlY2tSZXF1aXJlZCA/PyBmYWxzZSkpIHtcblx0XHRcdFx0dGhpcy5jaGVja0lmQWxsTWFuZGF0b3J5VG9rZW5zRmlsbGVkKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vUmVzZXR0aW5nIHRvIGRlZmF1bHQgdmFsdWVzXG5cdFx0dGhpcy5pc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQgPSBmYWxzZTtcblx0XHR0aGlzLnNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCA9IHRydWU7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IFZCb3gge1xuXHRcdGNvbnN0ICR0b3BHb0J0biA9IGNyZWF0ZVJlZmVyZW5jZTxCdXR0b24+KCk7XG5cdFx0Y29uc3QgJGJvdEdvQnRuID0gY3JlYXRlUmVmZXJlbmNlPEJ1dHRvbj4oKTtcblx0XHRjb25zdCBvdXRWQm94ID0gKFxuXHRcdFx0PFZCb3g+XG5cdFx0XHRcdDxGbGV4Qm94IHJlbmRlclR5cGU9XCJCYXJlXCI+XG5cdFx0XHRcdFx0PEVhc3lGaWx0ZXJJbnB1dFxuXHRcdFx0XHRcdFx0cmVjb21tZW5kZWRWYWx1ZXM9e3RoaXMucmVjb21tZW5kZWRWYWx1ZXN9XG5cdFx0XHRcdFx0XHRyZWY9e3RoaXMuZWFzeUZpbHRlcklucHV0fVxuXHRcdFx0XHRcdFx0YXBwSWQ9e3RoaXMuYXBwSWR9XG5cdFx0XHRcdFx0XHRlbnRlclByZXNzZWQ9e3RoaXMub25FbnRlclByZXNzZWQuYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdHF1ZXJ5Q2hhbmdlZD17KGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJxdWVyeUNoYW5nZWRcIiwgeyBxdWVyeTogZS5nZXRQYXJhbWV0ZXIoXCJxdWVyeVwiKSB9KTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRsaXZlQ2hhbmdlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUudG9rZW5pemVyRWRpdGFibGUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblxuXHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9haVwifVxuXHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRyZWY9eyR0b3BHb0J0bn1cblx0XHRcdFx0XHRcdHZpc2libGU9e25vdChiaW5kU3RhdGUodGhpcy5zdGF0ZS5zaG93UmVzdWx0KSl9XG5cdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0dPXCIpfVxuXHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5FbXBoYXNpemVkfVxuXHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMub25Hb0J1dHRvblByZXNzLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHQ8RmxleEJveFxuXHRcdFx0XHRcdHJlbmRlclR5cGU9XCJCYXJlXCJcblx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnNob3dSZXN1bHR9XG5cdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdHdyYXA9e0ZsZXhXcmFwLldyYXB9XG5cdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlUaW55TWFyZ2luVG9wXCJ9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHQ8RmxleEJveCBjbGFzcz17XCJzYXBGZUNvbnRyb2xzR2FwOHB4XCJ9IHJlbmRlclR5cGU9XCJCYXJlXCIgYWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfSB3cmFwPXtGbGV4V3JhcC5XcmFwfT5cblx0XHRcdFx0XHRcdDxBSU5vdGljZSByZXNvdXJjZUJ1bmRsZT17dGhpcy5yZXNvdXJjZUJ1bmRsZX0gLz5cblx0XHRcdFx0XHRcdDxUb2tlbml6ZXJcblx0XHRcdFx0XHRcdFx0ZWRpdGFibGU9e2FuZChiaW5kU3RhdGUodGhpcy5zdGF0ZS50b2tlbml6ZXJFZGl0YWJsZSksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVG9rZW5pemVyXCJ9XG5cdFx0XHRcdFx0XHRcdHRva2Vucz17YmluZFN0YXRlKHRoaXMuc3RhdGUudG9rZW5zKX1cblx0XHRcdFx0XHRcdFx0cmVmPXt0aGlzLnRva2VuaXplcn1cblx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHR0b2tlbnM6IChpZHg6IG51bWJlciwgY3R4OiBDb250ZXh0KTogVG9rZW4gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb2JqZWN0ID0gY3R4LmdldE9iamVjdCgpIGFzIFRva2VuRGVmaW5pdGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxUb2tlblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGtleT17dGhpcy5zdGF0ZS50b2tlbnMua2V5fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsPXt0aGlzLnN0YXRlLnRva2Vucy5sYWJlbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17dGhpcy5zdGF0ZS50b2tlbnMua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtYW5kYXRvcnk9e3RoaXMuaXNLZXlNYW5kYXRvcnkob2JqZWN0LmtleSl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0b2tlbkluZGV4ID0gdGhpcy5zdGF0ZS50b2tlbnMuZmluZEluZGV4KCh0b2tlbikgPT4gdG9rZW4ua2V5ID09PSBvYmplY3Qua2V5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5ld1Rva2VucyA9IHRoaXMuc3RhdGUudG9rZW5zLmNvbmNhdCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmV3VG9rZW5zLnNwbGljZSh0b2tlbkluZGV4LCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuZ29QcmVzc2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnRva2VucyA9IG5ld1Rva2Vucztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEVkaXRhYmxlKGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PVwiVG9rZW5JbmZvXCIgdmFsdWU9e29iamVjdH0gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT1cInBvcG92ZXJcIiB2YWx1ZT17dGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PVwiZWFzeUZpbHRlckJhckNvbnRhaW5lclwiIHZhbHVlPXt0aGlzfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRrZXk9XCJjb2RlTGlzdFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9e3RoaXMuZmlsdGVyQmFyTWV0YWRhdGE/LmZpbmQoKGRhdGEpID0+IGRhdGEubmFtZSA9PT0gb2JqZWN0LmtleSk/LmNvZGVMaXN0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvVG9rZW4+XG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvVG9rZW5pemVyPlxuXHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1JFU0VUXCIpfVxuXHRcdFx0XHRcdFx0XHR0eXBlPXtCdXR0b25UeXBlLlRyYW5zcGFyZW50fVxuXHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucmVzZXRTdGF0ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuZ29QcmVzc2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0Ly9SZXRhaW5pbmcgdGhlIGZvY3VzIG9uIHBvcG92ZXIgZG9lc24ndCBtYWtlIHRoZSBwb3BvdmVyIGNsb3NlIG9uIGV2ZXJ5IGludGVyYWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHRcdDxGbGV4Qm94IHJlbmRlclR5cGU9XCJCYXJlXCIgYWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfT5cblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL2FpXCJ9XG5cdFx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMuc3RhdGUuc2hvd1Jlc3VsdH1cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9HT1wiKX1cblx0XHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5FbXBoYXNpemVkfVxuXHRcdFx0XHRcdFx0XHRyZWY9eyRib3RHb0J0bn1cblx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMub25Hb0J1dHRvblByZXNzLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0PC9WQm94PlxuXHRcdCkgYXMgVkJveDtcblx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUoJHRvcEdvQnRuLmN1cnJlbnQhLCBcInByZXNzXCIsIFwiZmU6YWk6c2VhcmNoXCIpO1xuXHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZSgkYm90R29CdG4uY3VycmVudCEsIFwicHJlc3NcIiwgXCJmZTphaTpzZWFyY2hcIik7XG5cdFx0cmV0dXJuIG91dFZCb3g7XG5cdH1cblxuXHRhc3luYyBvbkdvQnV0dG9uUHJlc3MoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZWRpdGFibGVTdGF0ZSA9IHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LmdldEVkaXRhYmxlKCk7XG5cdFx0dGhpcy5zdGF0ZS50b2tlbml6ZXJFZGl0YWJsZSA9IHRydWU7XG5cdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uc2V0RWRpdGFibGUodHJ1ZSk7XG5cdFx0aWYgKCEoZWRpdGFibGVTdGF0ZSA/PyBmYWxzZSkpIHtcblx0XHRcdHRoaXMuZmlyZUV2ZW50KFwiZXhlY3V0ZVNlYXJjaFwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0YXdhaXQgdGhpcy5vbkdvUHJlc3ModGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uZ2V0VmFsdWUoKSwgdHJ1ZSk7XG5cdH1cblxuXHRyZXNldFN0YXRlKCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiY2xlYXJGaWx0ZXJzXCIpO1xuXHRcdHRoaXMuc3RhdGUudG9rZW5zID0gdGhpcy5nZXREZWZhdWx0VG9rZW5zKHRydWUpO1xuXHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldFZhbHVlKFwiXCIpO1xuXHRcdHRoaXMuc3RhdGUudG9rZW5pemVyRWRpdGFibGUgPSB0cnVlO1xuXHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEVkaXRhYmxlKHRydWUpO1xuXHRcdHRoaXMuc3RhdGUuZ29QcmVzc2VkID0gZmFsc2U7XG5cdFx0dGhpcy5pc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQgPSB0cnVlO1xuXHRcdC8vU2V0IHRoZSBWYWx1ZSBTdGF0ZXMgb2YgYWxsIHRoZSBUb2tlbnMgYmFjayB0byBOb25lXG5cdFx0dGhpcy50b2tlbml6ZXIuY3VycmVudD8uZ2V0VG9rZW5zKCkuZm9yRWFjaCgodG9rZW4pID0+IHRva2VuLnNldFByb3BlcnR5KFwidmFsdWVTdGF0ZVwiLCBWYWx1ZVN0YXRlLk5vbmUpKTtcblx0XHR0aGlzLnRva2VuaXplci5jdXJyZW50Py5nZXRUb2tlbnMoKS5mb3JFYWNoKCh0b2tlbikgPT4gdG9rZW4uc2V0UHJvcGVydHkoXCJ2YWx1ZVN0YXRlVGV4dFwiLCBudWxsKSk7XG5cdH1cblxuXHQvL1RoZSBiZWxvdyBjb2RlIHVwZGF0ZXMgdGhlIGV4aXN0aW5nIHN0YXRlIGJ5IGZldGNoaW5nIHRoZSBrZXkgYW5kIHNlbGVjdGVkVmFsdWVzXG5cdHVwZGF0ZVRva2VuQXJyYXkoY2hhbmdlVHlwZTogVG9rZW5TZXR0ZXJzLCBuZXdUb2tlblNwZWNpZmljVmFsdWVzOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLCB0b2tlbktleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VG9rZW5zID0gdGhpcy5zdGF0ZS50b2tlbnMubWFwKCh0b2tlbikgPT4gKHsgLi4udG9rZW4sIGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFsuLi50b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXSB9KSk7XG5cdFx0Y29uc3QgdG9rZW5JbmRleCA9IG5ld1Rva2Vucy5maW5kSW5kZXgoKHQpID0+IHQua2V5ID09PSB0b2tlbktleSk7XG5cdFx0Y29uc3QgdG9rZW4gPSBuZXdUb2tlbnNbdG9rZW5JbmRleF07XG5cdFx0aWYgKHRva2VuSW5kZXggIT0gLTEpIHtcblx0XHRcdHN3aXRjaCAoY2hhbmdlVHlwZSkge1xuXHRcdFx0XHRjYXNlIFwic2V0U2VsZWN0ZWRWYWx1ZXNcIjpcblx0XHRcdFx0XHR0aGlzLnNldFNlbGVjdGVkVmFsdWVzKHRva2VuLCBuZXdUb2tlblNwZWNpZmljVmFsdWVzLCB0b2tlbkluZGV4LCBuZXdUb2tlbnMpO1xuXHRcdFx0XHRcdHRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBuZXdUb2tlblNwZWNpZmljVmFsdWVzO1xuXHRcdFx0XHRcdC8vUmVtb3ZlIHRoZSB0b2tlbiBlbnRpcmVseVxuXHRcdFx0XHRcdGlmICghdGhpcy5pc0tleU1hbmRhdG9yeSh0b2tlbi5rZXkpICYmIHRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0XHRuZXdUb2tlbnMuc3BsaWNlKHRva2VuSW5kZXgsIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJTcGVjaWZ5aW5nIGEgc2V0dGVyIHRoYXQgaXMgb3V0IG9mIHRoZSBib3VuZGFyeVwiKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdC8vIFVwZGF0ZSB0aGUgc3RhdGUgYnkgYXNzaWduaW5nIHRoZSBuZXcgdG9rZW5zIGFycmF5XG5cdFx0XHR0aGlzLnN0YXRlLmdvUHJlc3NlZCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5zdGF0ZS50b2tlbnMgPSBuZXdUb2tlbnM7XG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSBuZXdUb2tlbnMubGVuZ3RoID4gMDtcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEVkaXRhYmxlKGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHNldFNlbGVjdGVkVmFsdWVzKFxuXHRcdHRva2VuOiBUb2tlbkRlZmluaXRpb24sXG5cdFx0bmV3VG9rZW5TcGVjaWZpY1ZhbHVlczogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSxcblx0XHR0b2tlbkluZGV4OiBudW1iZXIsXG5cdFx0bmV3VG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXVxuXHQpOiB2b2lkIHtcblx0XHR0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gbmV3VG9rZW5TcGVjaWZpY1ZhbHVlcztcblx0XHRpZiAoIXRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KSAmJiB0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0bmV3VG9rZW5zLnNwbGljZSh0b2tlbkluZGV4LCAxKTtcblx0XHR9XG5cdH1cblxuXHRpc0tleU1hbmRhdG9yeShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm1hbmRhdG9yeUtleU1hcFtrZXldID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cblx0Z2V0VG9rZW5zSW5Jbml0aWFsU3RhdGUoKTogVG9rZW5EZWZpbml0aW9uW10ge1xuXHRcdGNvbnN0IG5ld1Rva2VucyA9IHRoaXMuc3RhdGUudG9rZW5zLm1hcCgodG9rZW4pID0+ICh7IC4uLnRva2VuLCBrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBbLi4udG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc10gfSkpO1xuXHRcdGNvbnN0IG1hbmRhdG9yeVRva2VucyA9IG5ld1Rva2Vucy5maWx0ZXIoKHRva2VuKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5pc0tleU1hbmRhdG9yeSh0b2tlbi5rZXkpKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBtYW5kYXRvcnlUb2tlbnMubWFwKCh0b2tlbikgPT4gKHsgLi4udG9rZW4sIGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFtdIH0pKTtcblx0fVxuXG5cdGdldFVuU2V0TWFuZGF0b3J5VG9rZW5zSW5DdXJyZW50U3RhdGUoKTogVG9rZW5EZWZpbml0aW9uW10ge1xuXHRcdHJldHVybiB0aGlzLnN0YXRlLnRva2Vucy5maWx0ZXIoKHRva2VuKSA9PiB7XG5cdFx0XHRjb25zdCBpc0tleU1hbmRhdG9yeSA9IHRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KTtcblx0XHRcdGlmIChpc0tleU1hbmRhdG9yeSkge1xuXHRcdFx0XHRyZXR1cm4gdG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDA7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRnZXRBY3R1YWxUb2tlbnNGcm9tU3RhdGUodG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSk6IEVhc3lGaWx0ZXJUb2tlbltdIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCByZXF1aXJlZEtleXMgPSB0b2tlbnMubWFwKCh0b2tlbikgPT4gdG9rZW4ua2V5KTtcblx0XHRyZXR1cm4gdGhpcy50b2tlbml6ZXIuY3VycmVudD8uZ2V0VG9rZW5zKCkuZmlsdGVyKCh0b2tlbikgPT4gcmVxdWlyZWRLZXlzLmluY2x1ZGVzKHRva2VuLmdldEtleSgpKSkgYXNcblx0XHRcdHwgRWFzeUZpbHRlclRva2VuW11cblx0XHRcdHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0c3RhdGljIHJlbmRlcihybTogUmVuZGVyTWFuYWdlciwgY29udHJvbDogRWFzeUZpbHRlckJhckNvbnRhaW5lcik6IHZvaWQge1xuXHRcdHJldHVybiBqc3gucmVuZGVyVXNpbmdSZW5kZXJNYW5hZ2VyKHJtLCBjb250cm9sLCAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gPHNwYW4gcmVmPXtjb250cm9sfT57Y29udHJvbC5nZXRBZ2dyZWdhdGlvbihcImNvbnRlbnRcIil9PC9zcGFuPjtcblx0XHR9KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7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
|
|
629
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVyQmFyQ29udGFpbmVyIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzgiLCJfZGVjOSIsImFnZ3JlZ2F0aW9uIiwiX2RlYzEwIiwiZXZlbnQiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsIl9pbmhlcml0c0xvb3NlIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsInNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCIsImlucHV0RmllbGRSZWFkeSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzb2x2ZUNvbnRlbnRSZWFkeSIsImluaXRpYWxpemUiLCJfZXhwb3J0cyIsIl9wcm90byIsInByb3RvdHlwZSIsInNldEVhc3lGaWx0ZXJMaWIiLCJlYXN5RmlsdGVyTGliIiwic2V0UHJvcGVydHkiLCJlYXN5ZmlsdGVyIiwiX191aTVfcmVxdWlyZV9hc3luYyIsInNldEFwcElkIiwiYXBwSWQiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQyIiwiZWFzeUZpbHRlcklucHV0IiwiY3VycmVudCIsImluaXRTaGVsbEhpc3RvcnlQcm92aWRlciIsInNldEZpbHRlckJhck1ldGFkYXRhIiwiZmlsdGVyQmFyTWV0YWRhdGEiLCJ0b2tlbnMiLCJnZXREZWZhdWx0VG9rZW5zIiwiaW5uZXJDb250cm9sUG9wb3ZlciIsImNyZWF0ZVBvcG92ZXJGb3JJbm5lckNvbnRyb2xzIiwiYWRkRGVwZW5kZW50Iiwic3RhdGUiLCJzaG93UmVzdWx0IiwibGVuZ3RoIiwiaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkIiwiaW5pdCIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImlzRGVmYXVsdFZhbHVlc1Jlc3BlY3RlZCIsIl90aGlzJGZpbHRlckJhck1ldGFkYSIsIm1hbmRhdG9yeUtleU1hcCIsImZvckVhY2giLCJkYXRhIiwicmVxdWlyZWQiLCJuYW1lIiwicHVzaCIsImtleSIsImxhYmVsIiwia2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyIsImRlZmF1bHRWYWx1ZSIsIm9uRW50ZXJQcmVzc2VkIiwiZSIsIm9uR29QcmVzcyIsImdldFBhcmFtZXRlciIsImNoZWNrSWZBbGxNYW5kYXRvcnlUb2tlbnNGaWxsZWQiLCJ0b2tlbnNJblN0YXRlIiwiZ2V0VW5TZXRNYW5kYXRvcnlUb2tlbnNJbkN1cnJlbnRTdGF0ZSIsImdldEFjdHVhbFRva2Vuc0Zyb21TdGF0ZSIsInRva2VuIiwiVmFsdWVTdGF0ZSIsIkVycm9yIiwiZ2V0VGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsImNsb3NlQWxsTWFuZGF0b3J5VmFsdWVTdGF0ZU1lc3NhZ2VzIiwiX3RoaXMkdG9rZW5pemVyJGN1cnJlIiwiZWFzeVRva2VucyIsInRva2VuaXplciIsImdldFRva2VucyIsImNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UiLCJtYWdpY1F1ZXJ5IiwiX3RoaXMkZWFzeUZpbHRlcklucHV0MyIsImRvU2VhcmNoIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwicmVzZXRTdGF0ZSIsImdvUHJlc3NlZCIsInRva2VuaXplckVkaXRhYmxlIiwic2V0RWRpdGFibGUiLCJmaXJlRXZlbnQiLCJlYXN5RmlsdGVyTWV0YWRhdGEiLCJ2ZXJzaW9uIiwiZW50aXR5U2V0IiwiY29udGV4dFBhdGgiLCJmaWVsZHMiLCJlYXN5RmlsdGVyUmVzdWx0IiwiZWFzeUZpbHRlciIsInN1Y2Nlc3MiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQ0IiwiaXNIaXN0b3J5RW5hYmxlZCIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDUiLCJhZGRSZWNlbnRRdWVyeSIsImhhbmRsZVYxU3VjY2VzcyIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDYiLCJzZXRBc0ludmFsaWQiLCJtZXNzYWdlIiwiTG9nIiwiZXJyb3IiLCJ1bmNsZWFyIiwiX3RoaXMkZWFzeUZpbHRlcklucHV0NyIsImZpbHRlciIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsIkVhc3lGaWx0ZXJVdGlscyIsImZvcm1hdERhdGEiLCJfanN4IiwiUG9wb3ZlciIsImlkIiwiZ2V0SWQiLCJzaG93QXJyb3ciLCJzaG93SGVhZGVyIiwicGxhY2VtZW50IiwiUGxhY2VtZW50VHlwZSIsIkJvdHRvbSIsImNoaWxkcmVuIiwiZm9vdGVyIiwiZ2V0VG9vbGJhciIsInRvb2xiYXIiLCJva0J1dHRvbiIsImdldE9rQnV0dG9uIiwic2hvd0FsbEJ1dHRvbiIsImdldFNob3dBbGxCdXR0b24iLCJPdmVyZmxvd1Rvb2xiYXIiLCJfanN4cyIsIl9GcmFnbWVudCIsIlRvb2xiYXJTcGFjZXIiLCJCdXR0b24iLCJ0ZXh0IiwiQnV0dG9uVHlwZSIsIkVtcGhhc2l6ZWQiLCJvblN0YXRlQ2hhbmdlIiwiY2hhbmdlZFByb3BzIiwiaW5jbHVkZXMiLCJtYXAiLCJkZWVwQ2xvbmUiLCJnb0J1dHRvblByZXNzZWQiLCJ2YWx1ZU9mIiwiJHRvcEdvQnRuIiwiY3JlYXRlUmVmZXJlbmNlIiwiJGJvdEdvQnRuIiwib3V0VkJveCIsIlZCb3giLCJGbGV4Qm94IiwicmVuZGVyVHlwZSIsIkVhc3lGaWx0ZXJJbnB1dCIsInJlY29tbWVuZGVkVmFsdWVzIiwicmVmIiwiZW50ZXJQcmVzc2VkIiwiYmluZCIsInF1ZXJ5Q2hhbmdlZCIsInF1ZXJ5IiwibGl2ZUNoYW5nZSIsImljb24iLCJjbGFzcyIsInZpc2libGUiLCJub3QiLCJiaW5kU3RhdGUiLCJwcmVzcyIsIm9uR29CdXR0b25QcmVzcyIsImFsaWduSXRlbXMiLCJGbGV4QWxpZ25JdGVtcyIsIkNlbnRlciIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIkFJTm90aWNlIiwiVG9rZW5pemVyIiwiZWRpdGFibGUiLCJhbmQiLCJpZHgiLCJjdHgiLCJfdGhpcyRmaWx0ZXJCYXJNZXRhZGEyIiwiX3RoaXMkZmlsdGVyQmFyTWV0YWRhMyIsIm9iamVjdCIsImdldE9iamVjdCIsIlRva2VuIiwiaXRlbXMiLCJtYW5kYXRvcnkiLCJpc0tleU1hbmRhdG9yeSIsImRlbGV0ZSIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDgiLCJ0b2tlbkluZGV4IiwiZmluZEluZGV4IiwibmV3VG9rZW5zIiwiY29uY2F0Iiwic3BsaWNlIiwiY3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJ2YWx1ZSIsImZpbmQiLCJjb2RlTGlzdCIsIlRyYW5zcGFyZW50IiwiX3RoaXMkZWFzeUZpbHRlcklucHV0OSIsImZvY3VzIiwiRkVTUkhlbHBlciIsInNldFNlbWFudGljU3RlcG5hbWUiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQxMCIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDExIiwiX3RoaXMkZWFzeUZpbHRlcklucHV0MTIiLCJlZGl0YWJsZVN0YXRlIiwiZ2V0RWRpdGFibGUiLCJnZXRWYWx1ZSIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDEzIiwiX3RoaXMkZWFzeUZpbHRlcklucHV0MTQiLCJfdGhpcyR0b2tlbml6ZXIkY3VycmUyIiwiX3RoaXMkdG9rZW5pemVyJGN1cnJlMyIsInNldFZhbHVlIiwiTm9uZSIsInVwZGF0ZVRva2VuQXJyYXkiLCJjaGFuZ2VUeXBlIiwibmV3VG9rZW5TcGVjaWZpY1ZhbHVlcyIsInRva2VuS2V5IiwidCIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDE1Iiwic2V0U2VsZWN0ZWRWYWx1ZXMiLCJnZXRUb2tlbnNJbkluaXRpYWxTdGF0ZSIsIm1hbmRhdG9yeVRva2VucyIsIl90aGlzJHRva2VuaXplciRjdXJyZTQiLCJyZXF1aXJlZEtleXMiLCJnZXRLZXkiLCJyZW5kZXIiLCJybSIsImNvbnRyb2wiLCJqc3giLCJyZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIiLCJnZXRBZ2dyZWdhdGlvbiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJCYXJDb250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSwgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7XG5cdGFnZ3JlZ2F0aW9uLFxuXHRjcmVhdGVSZWZlcmVuY2UsXG5cdGRlZmluZVJlZmVyZW5jZSxcblx0ZGVmaW5lU3RhdGUsXG5cdGRlZmluZVVJNUNsYXNzLFxuXHRldmVudCxcblx0cHJvcGVydHksXG5cdHR5cGUgUHJvcGVydGllc09mXG59IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgVG9rZW4gZnJvbSBcInNhcC9mZS9jb250cm9scy9lYXN5RmlsdGVyL1Rva2VuXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBGbGV4Qm94IGZyb20gXCJzYXAvbS9GbGV4Qm94XCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IFRva2VuaXplciBmcm9tIFwic2FwL20vVG9rZW5pemVyXCI7XG5pbXBvcnQgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSwgRmxleEFsaWduSXRlbXMsIEZsZXhKdXN0aWZ5Q29udGVudCwgRmxleFdyYXAsIFBsYWNlbWVudFR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IFZhbHVlU3RhdGUgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCBkZWVwQ2xvbmUgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcENsb25lXCI7XG5pbXBvcnQgeyBhbmQsIGJpbmRTdGF0ZSwgbm90IH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgRWFzeUZpbHRlcklucHV0IGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9FYXN5RmlsdGVySW5wdXRcIjtcbmltcG9ydCB0eXBlIEVhc3lGaWx0ZXJUb2tlbiBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvVG9rZW5cIjtcbmltcG9ydCBPdmVyZmxvd1Rvb2xiYXIgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhclwiO1xuaW1wb3J0IFRvb2xiYXJTcGFjZXIgZnJvbSBcInNhcC9tL1Rvb2xiYXJTcGFjZXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBGRVNSSGVscGVyIGZyb20gXCJzYXAvdWkvcGVyZm9ybWFuY2UvdHJhY2UvRkVTUkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgRWFzeUZpbHRlciBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEVhc3lGaWx0ZXJNZXRhZGF0YSwgUHJvcGVydHlNZXRhZGF0YSwgU3VjY2VzcyB9IGZyb20gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IEFJTm90aWNlIGZyb20gXCIuL0FJTm90aWNlXCI7XG5pbXBvcnQgRWFzeUZpbHRlclV0aWxzIGZyb20gXCIuL3V0aWxzXCI7XG5cbi8vRm9yIGN1cnJlbnQgcmVsZWFzZSB3ZSBhcmUgaWdub3JpbmcgXCJBbGxcIiBhbmQgXCJBbnlcIlxuLy9XZSBjYW4gaW5jb3Jwb3JhdGUgdGhlc2UgdmFsdWVzIGluIGZ1dHVyZVxuZXhwb3J0IHR5cGUgQmV0d2VlblNlbGVjdGVkVmFsdWVzID0gW2Jvb2xlYW4sIGJvb2xlYW5dIHwgW3N0cmluZywgc3RyaW5nXSB8IFtudW1iZXIsIG51bWJlcl0gfCBbRGF0ZSwgRGF0ZV07XG5cbi8vV2Ugd2lsbCBiZSBoYW5kbGluZyBcIkFMTFwiIGFuZCBcIkFOWVwiIGF0IGxhdGVyIHBvaW50IG9mIHRpbWVcbmV4cG9ydCB0eXBlIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uID1cblx0fCB7XG5cdFx0XHRvcGVyYXRvcjogRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj47XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogc3RyaW5nW10gfCBib29sZWFuW10gfCBudW1iZXJbXSB8IERhdGVbXTtcblx0ICB9XG5cdHwge1xuXHRcdFx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLkJUIHwgRmlsdGVyT3BlcmF0b3IuTkI7XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogQmV0d2VlblNlbGVjdGVkVmFsdWVzO1xuXHQgIH07XG5cbmV4cG9ydCB0eXBlIFRva2VuVHlwZSA9IFwiTWVudVdpdGhDaGVja0JveFwiIHwgXCJDYWxlbmRhclwiIHwgXCJUaW1lXCIgfCBcIlZhbHVlSGVscFwiO1xuXG5leHBvcnQgdHlwZSBUb2tlbkRlZmluaXRpb24gPSB7XG5cdGtleTogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdO1xuXHR0eXBlPzogVG9rZW5UeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgVG9rZW5TZXR0ZXJzID0gXCJzZXRTZWxlY3RlZFZhbHVlc1wiO1xuXG5leHBvcnQgdHlwZSBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSA9XG5cdHwgKFByb3BlcnR5TWV0YWRhdGEgJiB7XG5cdFx0XHR0eXBlOiBUb2tlblR5cGU7XG5cdFx0XHRsYWJlbDogc3RyaW5nOyAvLyBSZXF1aXJlZCBwcm9wZXJ0eSwgaGVuY2UgbGFiZWwgaXMgbWFuZGF0b3J5XG5cdFx0XHRyZXF1aXJlZDogdHJ1ZTtcblx0XHRcdGRlZmF1bHRWYWx1ZT86IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW107XG5cdCAgfSlcblx0fCAoUHJvcGVydHlNZXRhZGF0YSAmIHtcblx0XHRcdHR5cGU6IFRva2VuVHlwZTtcblx0XHRcdGxhYmVsPzogc3RyaW5nOyAvLyBPcHRpb25hbCBwcm9wZXJ0eSwgaGVuY2UgbGFiZWwgY2FuIGJlIG9taXR0ZWRcblx0XHRcdHJlcXVpcmVkOiBmYWxzZTtcblx0XHRcdGRlZmF1bHRWYWx1ZT86IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW107XG5cdCAgfSk7XG4vKlxuICogRGVsaXZlcnkgZm9yIGJldGEgcmVsZWFzZSBmb3IgdGhlIGVhc3kgZmlsdGVyIGZlYXR1cmUuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5lYXN5RmlsdGVyLkVhc3lGaWx0ZXJCYXJDb250YWluZXJcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJCYXJDb250YWluZXIgZXh0ZW5kcyBDb250cm9sIHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGFwcElkPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZWFzeUZpbHRlckxpYj86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImFycmF5XCIgfSlcblx0ZmlsdGVyQmFyTWV0YWRhdGE/OiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYXJyYXlcIiB9KVxuXHRyZWNvbW1lbmRlZFZhbHVlcz86IHN0cmluZ1tdO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRlYXN5RmlsdGVySW5wdXQhOiBSZWY8RW5oYW5jZVdpdGhVSTU8RWFzeUZpbHRlcklucHV0Pj47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHRva2VuaXplciE6IFJlZjxUb2tlbml6ZXI+O1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiIH0pXG5cdGNvbnRlbnQ/OiBDb250cm9sO1xuXG5cdEBldmVudCgpXG5cdHRva2Vuc0NoYW5nZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyB0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdOyBnb0J1dHRvblByZXNzZWQ6IGJvb2xlYW4gfSwgRWFzeUZpbHRlckJhckNvbnRhaW5lcj4+O1xuXG5cdEBldmVudCgpXG5cdHF1ZXJ5Q2hhbmdlZD86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7IHF1ZXJ5OiBzdHJpbmcgfSwgRWFzeUZpbHRlckJhckNvbnRhaW5lcj4+O1xuXG5cdEBldmVudCgpXG5cdHNob3dWYWx1ZUhlbHA/OiBFdmVudEhhbmRsZXI8XG5cdFx0VUk1RXZlbnQ8XG5cdFx0XHR7IGtleTogc3RyaW5nOyB2YWx1ZXM6IHVua25vd25bXTsgcmVzb2x2ZTogKHZhbHVlOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKSA9PiB2b2lkOyByZWplY3Q6IChyZWFzb24/OiBFcnJvcikgPT4gdm9pZCB9LFxuXHRcdFx0RWFzeUZpbHRlckJhckNvbnRhaW5lclxuXHRcdD5cblx0PjtcblxuXHRAZXZlbnQoKVxuXHRjbGVhckZpbHRlcnM/OiBFdmVudEhhbmRsZXI7XG5cblx0Ly9UaGUgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQgb25seSB3aGVuIHRoZSB0b2tlbnMgaGFzIGJlZW4gY2hhbmdlZCB3aXRoIHRva2VucyBhbmQgcHJlc3NlZCBvbiB0aGUgR28gQnV0dG9uXG5cdC8vSW4gdGhpcyBjYXNlIHRoZSBcIkVudGVyXCIgd29udCBiZSByZWxldmFudCBiZWNhdXNlIHRoZSBpbnB1dCBmaWVsZCB3aWxsIGJlIGluIG5vbiBlZGl0YWJsZSBzdGF0ZVxuXHRAZXZlbnQoKVxuXHRleGVjdXRlU2VhcmNoPzogRXZlbnRIYW5kbGVyO1xuXG5cdEBldmVudCgpXG5cdGJlZm9yZVF1ZXJ5UHJvY2Vzc2luZz86IEV2ZW50SGFuZGxlcjtcblxuXHRAZXZlbnQoKVxuXHRhZnRlclF1ZXJ5UHJvY2Vzc2luZz86IEV2ZW50SGFuZGxlcjtcblxuXHRwcml2YXRlIHJlc291cmNlQnVuZGxlITogUmVzb3VyY2VCdW5kbGU7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRzaG93UmVzdWx0OiBib29sZWFuO1xuXHRcdHRva2VuczogVG9rZW5EZWZpbml0aW9uW107XG5cdFx0Z29QcmVzc2VkOiBib29sZWFuO1xuXHRcdHRva2VuaXplckVkaXRhYmxlOiBib29sZWFuO1xuXHR9PiA9IHtcblx0XHRzaG93UmVzdWx0OiBmYWxzZSxcblx0XHR0b2tlbnM6IFtdIGFzIFRva2VuRGVmaW5pdGlvbltdLFxuXHRcdGdvUHJlc3NlZDogZmFsc2UsXG5cdFx0dG9rZW5pemVyRWRpdGFibGU6IHRydWVcblx0fTtcblxuXHRwcml2YXRlIGlubmVyQ29udHJvbFBvcG92ZXI/OiBQb3BvdmVyO1xuXG5cdHByaXZhdGUgb2tCdXR0b24/OiBCdXR0b247XG5cblx0cHJpdmF0ZSBzaG93QWxsQnV0dG9uPzogQnV0dG9uO1xuXG5cdHByaXZhdGUgdG9vbGJhcj86IE92ZXJmbG93VG9vbGJhcjtcblxuXHRwcml2YXRlIG1hbmRhdG9yeUtleU1hcD86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuXG5cdC8vSWYgc2V0IHRvIHRydWUgdGhlIGVycm9yIHN0YXRlIGNhbiBiZSBzZWVuIG9uIHRoZSB0b2tlbnNcblx0cHJpdmF0ZSBpc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQ/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgc2hvdWxkVG9rZW5DaGFuZ2VFdmVudEZpcmVkID0gdHJ1ZTtcblxuXHRlYXN5ZmlsdGVyPzogUHJvbWlzZTx0eXBlb2YgRWFzeUZpbHRlciB8IHVuZGVmaW5lZD47XG5cblx0cHJpdmF0ZSByZXNvbHZlQ29udGVudFJlYWR5ITogKCkgPT4gdm9pZDtcblxuXHRwcml2YXRlIGlucHV0RmllbGRSZWFkeTogUHJvbWlzZTx2b2lkPiA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0dGhpcy5yZXNvbHZlQ29udGVudFJlYWR5ID0gcmVzb2x2ZTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IocHJvcGVydGllczogc3RyaW5nIHwgKCRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8RWFzeUZpbHRlckJhckNvbnRhaW5lcj4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRzZXRFYXN5RmlsdGVyTGliKGVhc3lGaWx0ZXJMaWI6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJlYXN5RmlsdGVyTGliXCIsIGVhc3lGaWx0ZXJMaWIpO1xuXHRcdGlmICh0aGlzLmVhc3lGaWx0ZXJMaWIpIHtcblx0XHRcdHRoaXMuZWFzeWZpbHRlciA9IGltcG9ydCh0aGlzLmVhc3lGaWx0ZXJMaWIpO1xuXHRcdH1cblx0fVxuXG5cdGFzeW5jIHNldEFwcElkKGFwcElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIXRoaXMuYXBwSWQpIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJhcHBJZFwiLCBhcHBJZCwgdHJ1ZSk7XG5cdFx0XHRhd2FpdCB0aGlzLmlucHV0RmllbGRSZWFkeTtcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldFByb3BlcnR5KFwiYXBwSWRcIiwgYXBwSWQsIHRydWUpO1xuXHRcdFx0YXdhaXQgdGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uaW5pdFNoZWxsSGlzdG9yeVByb3ZpZGVyKCk7XG5cdFx0fVxuXHR9XG5cblx0c2V0RmlsdGVyQmFyTWV0YWRhdGEoZmlsdGVyQmFyTWV0YWRhdGE6IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW10pOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuZmlsdGVyQmFyTWV0YWRhdGEpIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJmaWx0ZXJCYXJNZXRhZGF0YVwiLCBmaWx0ZXJCYXJNZXRhZGF0YSwgdHJ1ZSk7XG5cdFx0XHQvLyBwb3B1bGF0ZSB0aGUgdG9rZW5zIHdpdGggZGVmYXVsdCB2YWx1ZVxuXHRcdFx0Y29uc3QgdG9rZW5zID0gdGhpcy5nZXREZWZhdWx0VG9rZW5zKHRydWUpO1xuXHRcdFx0aWYgKCF0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpIHtcblx0XHRcdFx0dGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyID0gdGhpcy5jcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scygpO1xuXHRcdFx0XHR0aGlzLmFkZERlcGVuZGVudCh0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zdGF0ZS50b2tlbnMgPSB0b2tlbnM7XG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSB0b2tlbnMubGVuZ3RoID4gMDtcblx0XHRcdC8vL1dlIGRvbid0IHdhbnQgdG8gZGlzcGxheSBlcnJvciB2YWx1ZVN0YXRlTWVzc2FnZSBhcyBzb29uIHRoZSBjb250cm9sIHJlbmRlcnNcblx0XHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gdHJ1ZTtcblx0XHRcdC8vb25Ub2tlbkNoYW5nZSBldmVudCBzaG91bGQgbm90IGJlIGZpcmVkIHdoZW4gaW5pdGlhbCBzZXQgb2YgdG9rZW5zIGFyZSBzZXRcblx0XHRcdHRoaXMuc2hvdWxkVG9rZW5DaGFuZ2VFdmVudEZpcmVkID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0aW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0dGhpcy5yZXNvbHZlQ29udGVudFJlYWR5KCk7XG5cdFx0aWYgKCF0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpIHtcblx0XHRcdHRoaXMuaW5uZXJDb250cm9sUG9wb3ZlciA9IHRoaXMuY3JlYXRlUG9wb3ZlckZvcklubmVyQ29udHJvbHMoKTtcblx0XHRcdHRoaXMuYWRkRGVwZW5kZW50KHRoaXMuaW5uZXJDb250cm9sUG9wb3Zlcik7XG5cdFx0fVxuXHRcdC8vV2UgZG9uJ3Qgd2FudCB0byBkaXNwbGF5IGVycm9yIHZhbHVlU3RhdGVNZXNzYWdlIGFzIHNvb24gdGhlIGNvbnRyb2wgcmVuZGVyc1xuXHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gdHJ1ZTtcblx0XHQvL29uVG9rZW5DaGFuZ2UgZXZlbnQgc2hvdWxkIG5vdCBiZSBmaXJlZCB3aGVuIGluaXRpYWwgc2V0IG9mIHRva2VucyBhcmUgc2V0XG5cdFx0dGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQgPSBmYWxzZTtcblx0fVxuXG5cdGdldERlZmF1bHRUb2tlbnMoaXNEZWZhdWx0VmFsdWVzUmVzcGVjdGVkOiBib29sZWFuKTogVG9rZW5EZWZpbml0aW9uW10ge1xuXHRcdGNvbnN0IHRva2VuczogVG9rZW5EZWZpbml0aW9uW10gPSBbXTtcblx0XHRpZiAoIXRoaXMubWFuZGF0b3J5S2V5TWFwKSB7XG5cdFx0XHR0aGlzLm1hbmRhdG9yeUtleU1hcCA9IHt9O1xuXHRcdH1cblx0XHR0aGlzLmZpbHRlckJhck1ldGFkYXRhPy5mb3JFYWNoKChkYXRhKSA9PiB7XG5cdFx0XHRpZiAoZGF0YS5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHQodGhpcy5tYW5kYXRvcnlLZXlNYXAgYXMgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pW2RhdGEubmFtZV0gPSB0cnVlO1xuXHRcdFx0XHQvL0NoZWNrIHdoZXRoZXIgdGhlIGtleXMgZXhpc3QgaW4gdGhlIGN1cnJlbnQgc3RhdGUgZWxzZSBwdXNoIGl0IGFjcm9zc1xuXHRcdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdFx0a2V5OiBkYXRhLm5hbWUsXG5cdFx0XHRcdFx0bGFiZWw6IGRhdGEubGFiZWwsXG5cdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogaXNEZWZhdWx0VmFsdWVzUmVzcGVjdGVkICYmIGRhdGEuZGVmYXVsdFZhbHVlID8gZGF0YS5kZWZhdWx0VmFsdWUgOiBbXSxcblx0XHRcdFx0XHR0eXBlOiBkYXRhLnR5cGVcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRva2Vucztcblx0fVxuXG5cdG9uRW50ZXJQcmVzc2VkKGU6IFVJNUV2ZW50PHsgcXVlcnk6IHN0cmluZyB9LCBFYXN5RmlsdGVySW5wdXQ+KTogdm9pZCB7XG5cdFx0dGhpcy5vbkdvUHJlc3MoZS5nZXRQYXJhbWV0ZXIoXCJxdWVyeVwiKSwgZmFsc2UpO1xuXHR9XG5cblx0Ly9NYWtpbmcgaXQgcHVibGljIGJlY2F1c2UgaW4gbGl2ZSBtb2RlIHRoZSBhcHAgZGV2ZWxvcGVyIGNhbiBkZWNpZGUgd2hldGhlciB0byBkaXNwbGF5IHRoZSBlcnJvciBWYWx1ZVN0YXRlTWVzc2FnZVxuXHQvL0luIG5vbi1saXZlIG1vZGUgLCB3ZSBhcmUgYWxyZWFkeSBpbnRlcm5hbGx5IGhhbmRsaW5nIGl0IG9uIGV2ZXJ5IHRpbWUgdGltZSBhIHVzZXIgY2xpY2tzIG9uIEdPL0VudGVyIGJ1dHRvbnNcblx0cHVibGljIGNoZWNrSWZBbGxNYW5kYXRvcnlUb2tlbnNGaWxsZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgdG9rZW5zSW5TdGF0ZSA9IHRoaXMuZ2V0VW5TZXRNYW5kYXRvcnlUb2tlbnNJbkN1cnJlbnRTdGF0ZSgpO1xuXHRcdGlmICh0b2tlbnNJblN0YXRlLmxlbmd0aCAhPT0gMCkge1xuXHRcdFx0Y29uc3QgdG9rZW5zID0gdGhpcy5nZXRBY3R1YWxUb2tlbnNGcm9tU3RhdGUodG9rZW5zSW5TdGF0ZSk7XG5cdFx0XHR0b2tlbnM/LmZvckVhY2goKHRva2VuKSA9PiB7XG5cdFx0XHRcdHRva2VuLnNldFByb3BlcnR5KFwidmFsdWVTdGF0ZVwiLCBWYWx1ZVN0YXRlLkVycm9yKTtcblx0XHRcdFx0dG9rZW4uc2V0UHJvcGVydHkoXCJ2YWx1ZVN0YXRlVGV4dFwiLCB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX01BTkRBVE9SWV9UT0tFTl9FUlJPUlwiKSk7XG5cdFx0XHRcdHRva2VuLm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSgpO1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cHVibGljIGNsb3NlQWxsTWFuZGF0b3J5VmFsdWVTdGF0ZU1lc3NhZ2VzKCk6IHZvaWQge1xuXHRcdGNvbnN0IGVhc3lUb2tlbnMgPSB0aGlzLnRva2VuaXplci5jdXJyZW50Py5nZXRUb2tlbnMoKSBhcyBFYXN5RmlsdGVyVG9rZW5bXTtcblx0XHRlYXN5VG9rZW5zLmZvckVhY2goKHRva2VuKSA9PiB0b2tlbi5jbG9zZVZhbHVlU3RhdGVNZXNzYWdlKCkpO1xuXHR9XG5cblx0YXN5bmMgb25Hb1ByZXNzKG1hZ2ljUXVlcnk6IHN0cmluZyB8IHVuZGVmaW5lZCwgZG9TZWFyY2ggPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICghbWFnaWNRdWVyeSkge1xuXHRcdFx0dGhpcy5yZXNldFN0YXRlKCk7XG5cdFx0XHR0aGlzLnN0YXRlLmdvUHJlc3NlZCA9IGRvU2VhcmNoO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLnN0YXRlLnRva2VuaXplckVkaXRhYmxlID0gdHJ1ZTtcblx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRFZGl0YWJsZSh0cnVlKTtcblxuXHRcdC8vIENhbGwgQUkgc2VydmljZSB0byBnZXQgdGhlIGZpbHRlciBjcml0ZXJpYVxuXHRcdGNvbnN0IGVhc3lmaWx0ZXIgPSBhd2FpdCB0aGlzLmVhc3lmaWx0ZXI7XG5cdFx0aWYgKCFlYXN5ZmlsdGVyKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuZmlyZUV2ZW50KFwiYmVmb3JlUXVlcnlQcm9jZXNzaW5nXCIpO1xuXG5cdFx0Y29uc3QgZWFzeUZpbHRlck1ldGFkYXRhOiBFYXN5RmlsdGVyTWV0YWRhdGEgPSB7XG5cdFx0XHR2ZXJzaW9uOiAxLFxuXHRcdFx0ZW50aXR5U2V0OiB0aGlzLmNvbnRleHRQYXRoLFxuXHRcdFx0ZmllbGRzOiB0aGlzLmZpbHRlckJhck1ldGFkYXRhIGFzIEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW11cblx0XHR9O1xuXG5cdFx0Y29uc3QgZWFzeUZpbHRlclJlc3VsdCA9IGF3YWl0IGVhc3lmaWx0ZXIuZWFzeUZpbHRlcihtYWdpY1F1ZXJ5LCBlYXN5RmlsdGVyTWV0YWRhdGEpO1xuXG5cdFx0aWYgKGVhc3lGaWx0ZXJSZXN1bHQuc3VjY2Vzcykge1xuXHRcdFx0Ly9Pbmx5IGFkZCB0aGUgcmVjZW50IHF1ZXJ5IHdoZW4gdGhlIGNhbGwgaXMgc3VjY2Vzc1xuXHRcdFx0Ly9EbyBub3QgdHJhY2sgdGhlIHJlY2VudCBxdWVyaWVzIHdoZW4gdGhlIGlzSGlzdG9yeUVuYWJsZWQgaXMgc2V0IHRvIGZhbHNlXG5cdFx0XHQvL0l0IHdvdWxkIGJlIGEgdmlvbGF0aW9uIHRvIHVzZXJzIHByaXZhY3lcblx0XHRcdGlmICh0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5pc0hpc3RvcnlFbmFibGVkKCkgPz8gZmFsc2UpIHtcblx0XHRcdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uYWRkUmVjZW50UXVlcnkobWFnaWNRdWVyeSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5kYXRhLnZlcnNpb24gPT09IDEpIHtcblx0XHRcdFx0dGhpcy5oYW5kbGVWMVN1Y2Nlc3MoZWFzeUZpbHRlclJlc3VsdCwgZG9TZWFyY2gpO1xuXHRcdFx0fSBlbHNlIGlmIChlYXN5RmlsdGVyUmVzdWx0LmRhdGEudmVyc2lvbiA9PT0gMikge1xuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIHNhcC51aS5tb2RlbC5GaWx0ZXIgZnJvbSB0aGUgZmlsdGVyIGFuZCBhcHBseSBpdCBkaXJlY3RseSB0byB0aGUgbGlzdCBiaW5kaW5nXG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGVycm9yXG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRBc0ludmFsaWQoZWFzeUZpbHRlclJlc3VsdC5tZXNzYWdlKTtcblx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIGdlbmVyYXRpbmcgZmlsdGVyIGNyaXRlcmlhOiBcIiwgZWFzeUZpbHRlclJlc3VsdC5tZXNzYWdlKTtcblx0XHR9XG5cblx0XHR0aGlzLmZpcmVFdmVudChcImFmdGVyUXVlcnlQcm9jZXNzaW5nXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIHN1Y2Nlc3MgcmVzcG9uc2UgZnJvbSB0aGUgQUkgc2VydmljZSBmb3IgdmVyc2lvbiAxIG9mIHRoZSBlYXN5IGZpbHRlci5cblx0ICogQHBhcmFtIGVhc3lGaWx0ZXJSZXN1bHQgVGhlIHJlc3VsdCBmcm9tIHRoZSBBSSBzZXJ2aWNlXG5cdCAqIEBwYXJhbSBnb1ByZXNzZWQgV2hldGhlciB0byBleGVjdXRlIHRoZSBzZWFyY2ggYWZ0ZXIgdGhlIGZpbHRlciBjcml0ZXJpYSBoYXMgYmVlbiBnZW5lcmF0ZWRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHByaXZhdGUgaGFuZGxlVjFTdWNjZXNzKGVhc3lGaWx0ZXJSZXN1bHQ6IFN1Y2Nlc3M8RWFzeUZpbHRlci5FYXN5RmlsdGVyUmVzdWx0PiwgZ29QcmVzc2VkOiBib29sZWFuKTogdm9pZCB7XG5cdFx0aWYgKGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS51bmNsZWFyKSB7XG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRBc0ludmFsaWQoXG5cdFx0XHRcdHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfVU5DTEVBUl9JTlBVVFwiLCBbZWFzeUZpbHRlclJlc3VsdC5kYXRhLnVuY2xlYXJdKVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIpIHtcblx0XHRcdC8vIFdlIG5lZWQgdG8gc2hvdyBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgdGhhdCB0aGUgZmlsdGVyIGNyaXRlcmlhIGhhcyBiZWVuIGdlbmVyYXRlZFxuXHRcdFx0TG9nLmRlYnVnKFwiRmlsdGVyIGNyaXRlcmlhIGdlbmVyYXRlZDogXCIsIEpTT04uc3RyaW5naWZ5KGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIsIG51bGwsIDIpKTtcblxuXHRcdFx0Ly8gVmFsaWRhdGUgYW5kIGFwcGx5IHRoZSBmaWx0ZXIgY3JpdGVyaWFcblx0XHRcdGNvbnN0IHRva2VuczogVG9rZW5EZWZpbml0aW9uW10gPSB0aGlzLmdldERlZmF1bHRUb2tlbnMoZmFsc2UpO1xuXHRcdFx0RWFzeUZpbHRlclV0aWxzLmZvcm1hdERhdGEodG9rZW5zLCBlYXN5RmlsdGVyUmVzdWx0LmRhdGEuZmlsdGVyLCB0aGlzLmZpbHRlckJhck1ldGFkYXRhIGFzIEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW10pO1xuXG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSB0cnVlO1xuXHRcdFx0dGhpcy5zdGF0ZS5nb1ByZXNzZWQgPSBnb1ByZXNzZWQ7XG5cdFx0XHR0aGlzLnN0YXRlLnRva2VucyA9IHRva2Vucztcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scygpOiBQb3BvdmVyIHtcblx0XHRpZiAoIXRoaXMuaW5uZXJDb250cm9sUG9wb3Zlcikge1xuXHRcdFx0dGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyID0gKFxuXHRcdFx0XHQ8UG9wb3ZlciBpZD17dGhpcy5nZXRJZCgpICsgXCItaW5uZXJQb3BvdmVyXCJ9IHNob3dBcnJvdz17ZmFsc2V9IHNob3dIZWFkZXI9e3RydWV9IHBsYWNlbWVudD17UGxhY2VtZW50VHlwZS5Cb3R0b219PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRmb290ZXI6IHRoaXMuZ2V0VG9vbGJhcigpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Qb3BvdmVyPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaW5uZXJDb250cm9sUG9wb3ZlciBhcyBQb3BvdmVyO1xuXHR9XG5cblx0Z2V0VG9vbGJhcigpOiBPdmVyZmxvd1Rvb2xiYXIgfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy50b29sYmFyKSB7XG5cdFx0XHRjb25zdCBva0J1dHRvbiA9IHRoaXMuZ2V0T2tCdXR0b24oKTtcblx0XHRcdGNvbnN0IHNob3dBbGxCdXR0b24gPSB0aGlzLmdldFNob3dBbGxCdXR0b24oKTtcblx0XHRcdHRoaXMudG9vbGJhciA9IChcblx0XHRcdFx0PE92ZXJmbG93VG9vbGJhcj5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHRcdDxUb29sYmFyU3BhY2VyIC8+XG5cdFx0XHRcdFx0XHRcdFx0e29rQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHRcdHtzaG93QWxsQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHQ8Lz5cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L092ZXJmbG93VG9vbGJhcj5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnRvb2xiYXI7XG5cdH1cblxuXHRnZXRPa0J1dHRvbigpOiBCdXR0b24gfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy5va0J1dHRvbikge1xuXHRcdFx0dGhpcy5va0J1dHRvbiA9IDxCdXR0b24gdGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX09LXCIpfSB0eXBlPXtCdXR0b25UeXBlLkVtcGhhc2l6ZWR9IC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5va0J1dHRvbjtcblx0fVxuXG5cdGdldFNob3dBbGxCdXR0b24oKTogQnV0dG9uIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIXRoaXMuc2hvd0FsbEJ1dHRvbikge1xuXHRcdFx0dGhpcy5zaG93QWxsQnV0dG9uID0gPEJ1dHRvbiB0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfU0hPV19BTExfSVRFTVNcIil9IC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5zaG93QWxsQnV0dG9uO1xuXHR9XG5cblx0b25TdGF0ZUNoYW5nZShjaGFuZ2VkUHJvcHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcblx0XHRpZiAoY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwidG9rZW5zXCIpKSB7XG5cdFx0XHRpZiAodGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQpIHtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ0b2tlbnNDaGFuZ2VkXCIsIHtcblx0XHRcdFx0XHR0b2tlbnM6IHRoaXMuc3RhdGUudG9rZW5zLm1hcCgoZGF0YSkgPT4gZGVlcENsb25lKGRhdGEpKSxcblx0XHRcdFx0XHRnb0J1dHRvblByZXNzZWQ6IHRoaXMuc3RhdGUuZ29QcmVzc2VkLnZhbHVlT2YoKVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCA9IHRoaXMuc3RhdGUudG9rZW5zLmxlbmd0aCA+IDA7XG5cdFx0XHRpZiAoISh0aGlzLmlzTWFuZGF0b3J5Q2hlY2tSZXF1aXJlZCA/PyBmYWxzZSkpIHtcblx0XHRcdFx0dGhpcy5jaGVja0lmQWxsTWFuZGF0b3J5VG9rZW5zRmlsbGVkKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vUmVzZXR0aW5nIHRvIGRlZmF1bHQgdmFsdWVzXG5cdFx0dGhpcy5pc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQgPSBmYWxzZTtcblx0XHR0aGlzLnNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCA9IHRydWU7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IFZCb3gge1xuXHRcdGNvbnN0ICR0b3BHb0J0biA9IGNyZWF0ZVJlZmVyZW5jZTxCdXR0b24+KCk7XG5cdFx0Y29uc3QgJGJvdEdvQnRuID0gY3JlYXRlUmVmZXJlbmNlPEJ1dHRvbj4oKTtcblx0XHRjb25zdCBvdXRWQm94ID0gKFxuXHRcdFx0PFZCb3g+XG5cdFx0XHRcdDxGbGV4Qm94IHJlbmRlclR5cGU9XCJCYXJlXCI+XG5cdFx0XHRcdFx0PEVhc3lGaWx0ZXJJbnB1dFxuXHRcdFx0XHRcdFx0cmVjb21tZW5kZWRWYWx1ZXM9e3RoaXMucmVjb21tZW5kZWRWYWx1ZXN9XG5cdFx0XHRcdFx0XHRyZWY9e3RoaXMuZWFzeUZpbHRlcklucHV0fVxuXHRcdFx0XHRcdFx0ZW50ZXJQcmVzc2VkPXt0aGlzLm9uRW50ZXJQcmVzc2VkLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHRxdWVyeUNoYW5nZWQ9eyhlKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwicXVlcnlDaGFuZ2VkXCIsIHsgcXVlcnk6IGUuZ2V0UGFyYW1ldGVyKFwicXVlcnlcIikgfSk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0bGl2ZUNoYW5nZT17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnRva2VuaXplckVkaXRhYmxlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cblx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vYWlcIn1cblx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5CZWdpblwifVxuXHRcdFx0XHRcdFx0cmVmPXskdG9wR29CdG59XG5cdFx0XHRcdFx0XHR2aXNpYmxlPXtub3QoYmluZFN0YXRlKHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCkpfVxuXHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9HT1wiKX1cblx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuRW1waGFzaXplZH1cblx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLm9uR29CdXR0b25QcmVzcy5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRyZW5kZXJUeXBlPVwiQmFyZVwiXG5cdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5zaG93UmVzdWx0fVxuXHRcdFx0XHRcdGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn1cblx0XHRcdFx0XHR3cmFwPXtGbGV4V3JhcC5XcmFwfVxuXHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtGbGV4SnVzdGlmeUNvbnRlbnQuU3BhY2VCZXR3ZWVufVxuXHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpblRvcFwifVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PEZsZXhCb3ggY2xhc3M9e1wic2FwRmVDb250cm9sc0dhcDhweFwifSByZW5kZXJUeXBlPVwiQmFyZVwiIGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn0gd3JhcD17RmxleFdyYXAuV3JhcH0+XG5cdFx0XHRcdFx0XHQ8QUlOb3RpY2UgcmVzb3VyY2VCdW5kbGU9e3RoaXMucmVzb3VyY2VCdW5kbGV9IC8+XG5cdFx0XHRcdFx0XHQ8VG9rZW5pemVyXG5cdFx0XHRcdFx0XHRcdGVkaXRhYmxlPXthbmQoYmluZFN0YXRlKHRoaXMuc3RhdGUudG9rZW5pemVyRWRpdGFibGUpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVDb250cm9sc1Rva2VuaXplclwifVxuXHRcdFx0XHRcdFx0XHR0b2tlbnM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLnRva2Vucyl9XG5cdFx0XHRcdFx0XHRcdHJlZj17dGhpcy50b2tlbml6ZXJ9XG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0dG9rZW5zOiAoaWR4OiBudW1iZXIsIGN0eDogQ29udGV4dCk6IFRva2VuID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9iamVjdCA9IGN0eC5nZXRPYmplY3QoKSBhcyBUb2tlbkRlZmluaXRpb247XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8VG9rZW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRrZXk9e3RoaXMuc3RhdGUudG9rZW5zLmtleX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbD17dGhpcy5zdGF0ZS50b2tlbnMubGFiZWx9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e3RoaXMuc3RhdGUudG9rZW5zLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWFuZGF0b3J5PXt0aGlzLmlzS2V5TWFuZGF0b3J5KG9iamVjdC5rZXkpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZT17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgdG9rZW5JbmRleCA9IHRoaXMuc3RhdGUudG9rZW5zLmZpbmRJbmRleCgodG9rZW4pID0+IHRva2VuLmtleSA9PT0gb2JqZWN0LmtleSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBuZXdUb2tlbnMgPSB0aGlzLnN0YXRlLnRva2Vucy5jb25jYXQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5ld1Rva2Vucy5zcGxpY2UodG9rZW5JbmRleCwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLmdvUHJlc3NlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS50b2tlbnMgPSBuZXdUb2tlbnM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRFZGl0YWJsZShmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT1cIlRva2VuSW5mb1wiIHZhbHVlPXtvYmplY3R9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRGF0YSBrZXk9XCJwb3BvdmVyXCIgdmFsdWU9e3RoaXMuaW5uZXJDb250cm9sUG9wb3Zlcn0gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT1cImVhc3lGaWx0ZXJCYXJDb250YWluZXJcIiB2YWx1ZT17dGhpc30gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0a2V5PVwiY29kZUxpc3RcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlPXt0aGlzLmZpbHRlckJhck1ldGFkYXRhPy5maW5kKChkYXRhKSA9PiBkYXRhLm5hbWUgPT09IG9iamVjdC5rZXkpPy5jb2RlTGlzdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L1Rva2VuPlxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L1Rva2VuaXplcj5cblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9SRVNFVFwiKX1cblx0XHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5UcmFuc3BhcmVudH1cblx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnJlc2V0U3RhdGUoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLmdvUHJlc3NlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LmZvY3VzKCk7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHQ8RmxleEJveCByZW5kZXJUeXBlPVwiQmFyZVwiIGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn0+XG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9haVwifVxuXHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnNob3dSZXN1bHR9XG5cdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfR09cIil9XG5cdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuRW1waGFzaXplZH1cblx0XHRcdFx0XHRcdFx0cmVmPXskYm90R29CdG59XG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLm9uR29CdXR0b25QcmVzcy5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdDwvVkJveD5cblx0XHQpIGFzIFZCb3g7XG5cdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKCR0b3BHb0J0bi5jdXJyZW50ISwgXCJwcmVzc1wiLCBcImZlOmFpOnNlYXJjaFwiKTtcblx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUoJGJvdEdvQnRuLmN1cnJlbnQhLCBcInByZXNzXCIsIFwiZmU6YWk6c2VhcmNoXCIpO1xuXHRcdHJldHVybiBvdXRWQm94O1xuXHR9XG5cblx0YXN5bmMgb25Hb0J1dHRvblByZXNzKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGVkaXRhYmxlU3RhdGUgPSB0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5nZXRFZGl0YWJsZSgpO1xuXHRcdHRoaXMuc3RhdGUudG9rZW5pemVyRWRpdGFibGUgPSB0cnVlO1xuXHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEVkaXRhYmxlKHRydWUpO1xuXHRcdGlmICghKGVkaXRhYmxlU3RhdGUgPz8gZmFsc2UpKSB7XG5cdFx0XHR0aGlzLmZpcmVFdmVudChcImV4ZWN1dGVTZWFyY2hcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGF3YWl0IHRoaXMub25Hb1ByZXNzKHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LmdldFZhbHVlKCksIHRydWUpO1xuXHR9XG5cblx0cmVzZXRTdGF0ZSgpOiB2b2lkIHtcblx0XHR0aGlzLmZpcmVFdmVudChcImNsZWFyRmlsdGVyc1wiKTtcblx0XHR0aGlzLnN0YXRlLnRva2VucyA9IHRoaXMuZ2V0RGVmYXVsdFRva2Vucyh0cnVlKTtcblx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZShcIlwiKTtcblx0XHR0aGlzLnN0YXRlLnRva2VuaXplckVkaXRhYmxlID0gdHJ1ZTtcblx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRFZGl0YWJsZSh0cnVlKTtcblx0XHR0aGlzLnN0YXRlLmdvUHJlc3NlZCA9IGZhbHNlO1xuXHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gdHJ1ZTtcblx0XHQvL1NldCB0aGUgVmFsdWUgU3RhdGVzIG9mIGFsbCB0aGUgVG9rZW5zIGJhY2sgdG8gTm9uZVxuXHRcdHRoaXMudG9rZW5pemVyLmN1cnJlbnQ/LmdldFRva2VucygpLmZvckVhY2goKHRva2VuKSA9PiB0b2tlbi5zZXRQcm9wZXJ0eShcInZhbHVlU3RhdGVcIiwgVmFsdWVTdGF0ZS5Ob25lKSk7XG5cdFx0dGhpcy50b2tlbml6ZXIuY3VycmVudD8uZ2V0VG9rZW5zKCkuZm9yRWFjaCgodG9rZW4pID0+IHRva2VuLnNldFByb3BlcnR5KFwidmFsdWVTdGF0ZVRleHRcIiwgbnVsbCkpO1xuXHR9XG5cblx0Ly9UaGUgYmVsb3cgY29kZSB1cGRhdGVzIHRoZSBleGlzdGluZyBzdGF0ZSBieSBmZXRjaGluZyB0aGUga2V5IGFuZCBzZWxlY3RlZFZhbHVlc1xuXHR1cGRhdGVUb2tlbkFycmF5KGNoYW5nZVR5cGU6IFRva2VuU2V0dGVycywgbmV3VG9rZW5TcGVjaWZpY1ZhbHVlczogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSwgdG9rZW5LZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld1Rva2VucyA9IHRoaXMuc3RhdGUudG9rZW5zLm1hcCgodG9rZW4pID0+ICh7IC4uLnRva2VuLCBrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBbLi4udG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc10gfSkpO1xuXHRcdGNvbnN0IHRva2VuSW5kZXggPSBuZXdUb2tlbnMuZmluZEluZGV4KCh0KSA9PiB0LmtleSA9PT0gdG9rZW5LZXkpO1xuXHRcdGNvbnN0IHRva2VuID0gbmV3VG9rZW5zW3Rva2VuSW5kZXhdO1xuXHRcdGlmICh0b2tlbkluZGV4ICE9IC0xKSB7XG5cdFx0XHRzd2l0Y2ggKGNoYW5nZVR5cGUpIHtcblx0XHRcdFx0Y2FzZSBcInNldFNlbGVjdGVkVmFsdWVzXCI6XG5cdFx0XHRcdFx0dGhpcy5zZXRTZWxlY3RlZFZhbHVlcyh0b2tlbiwgbmV3VG9rZW5TcGVjaWZpY1ZhbHVlcywgdG9rZW5JbmRleCwgbmV3VG9rZW5zKTtcblx0XHRcdFx0XHR0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gbmV3VG9rZW5TcGVjaWZpY1ZhbHVlcztcblx0XHRcdFx0XHQvL1JlbW92ZSB0aGUgdG9rZW4gZW50aXJlbHlcblx0XHRcdFx0XHRpZiAoIXRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KSAmJiB0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdFx0bmV3VG9rZW5zLnNwbGljZSh0b2tlbkluZGV4LCAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiU3BlY2lmeWluZyBhIHNldHRlciB0aGF0IGlzIG91dCBvZiB0aGUgYm91bmRhcnlcIik7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBVcGRhdGUgdGhlIHN0YXRlIGJ5IGFzc2lnbmluZyB0aGUgbmV3IHRva2VucyBhcnJheVxuXHRcdFx0dGhpcy5zdGF0ZS5nb1ByZXNzZWQgPSBmYWxzZTtcblx0XHRcdHRoaXMuc3RhdGUudG9rZW5zID0gbmV3VG9rZW5zO1xuXHRcdFx0dGhpcy5zdGF0ZS5zaG93UmVzdWx0ID0gbmV3VG9rZW5zLmxlbmd0aCA+IDA7XG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRFZGl0YWJsZShmYWxzZSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzZXRTZWxlY3RlZFZhbHVlcyhcblx0XHR0b2tlbjogVG9rZW5EZWZpbml0aW9uLFxuXHRcdG5ld1Rva2VuU3BlY2lmaWNWYWx1ZXM6IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10sXG5cdFx0dG9rZW5JbmRleDogbnVtYmVyLFxuXHRcdG5ld1Rva2VuczogVG9rZW5EZWZpbml0aW9uW11cblx0KTogdm9pZCB7XG5cdFx0dG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyA9IG5ld1Rva2VuU3BlY2lmaWNWYWx1ZXM7XG5cdFx0aWYgKCF0aGlzLmlzS2V5TWFuZGF0b3J5KHRva2VuLmtleSkgJiYgdG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdG5ld1Rva2Vucy5zcGxpY2UodG9rZW5JbmRleCwgMSk7XG5cdFx0fVxuXHR9XG5cblx0aXNLZXlNYW5kYXRvcnkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRpZiAoIXRoaXMubWFuZGF0b3J5S2V5TWFwKSB7XG5cdFx0XHR0aGlzLm1hbmRhdG9yeUtleU1hcCA9IHt9O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5tYW5kYXRvcnlLZXlNYXBba2V5XSA/IHRydWUgOiBmYWxzZTtcblx0fVxuXG5cdGdldFRva2Vuc0luSW5pdGlhbFN0YXRlKCk6IFRva2VuRGVmaW5pdGlvbltdIHtcblx0XHRjb25zdCBuZXdUb2tlbnMgPSB0aGlzLnN0YXRlLnRva2Vucy5tYXAoKHRva2VuKSA9PiAoeyAuLi50b2tlbiwga2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogWy4uLnRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdIH0pKTtcblx0XHRjb25zdCBtYW5kYXRvcnlUb2tlbnMgPSBuZXdUb2tlbnMuZmlsdGVyKCh0b2tlbikgPT4ge1xuXHRcdFx0aWYgKHRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gbWFuZGF0b3J5VG9rZW5zLm1hcCgodG9rZW4pID0+ICh7IC4uLnRva2VuLCBrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBbXSB9KSk7XG5cdH1cblxuXHRnZXRVblNldE1hbmRhdG9yeVRva2Vuc0luQ3VycmVudFN0YXRlKCk6IFRva2VuRGVmaW5pdGlvbltdIHtcblx0XHRyZXR1cm4gdGhpcy5zdGF0ZS50b2tlbnMuZmlsdGVyKCh0b2tlbikgPT4ge1xuXHRcdFx0Y29uc3QgaXNLZXlNYW5kYXRvcnkgPSB0aGlzLmlzS2V5TWFuZGF0b3J5KHRva2VuLmtleSk7XG5cdFx0XHRpZiAoaXNLZXlNYW5kYXRvcnkpIHtcblx0XHRcdFx0cmV0dXJuIHRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Z2V0QWN0dWFsVG9rZW5zRnJvbVN0YXRlKHRva2VuczogVG9rZW5EZWZpbml0aW9uW10pOiBFYXN5RmlsdGVyVG9rZW5bXSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcmVxdWlyZWRLZXlzID0gdG9rZW5zLm1hcCgodG9rZW4pID0+IHRva2VuLmtleSk7XG5cdFx0cmV0dXJuIHRoaXMudG9rZW5pemVyLmN1cnJlbnQ/LmdldFRva2VucygpLmZpbHRlcigodG9rZW4pID0+IHJlcXVpcmVkS2V5cy5pbmNsdWRlcyh0b2tlbi5nZXRLZXkoKSkpIGFzXG5cdFx0XHR8IEVhc3lGaWx0ZXJUb2tlbltdXG5cdFx0XHR8IHVuZGVmaW5lZDtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXIocm06IFJlbmRlck1hbmFnZXIsIGNvbnRyb2w6IEVhc3lGaWx0ZXJCYXJDb250YWluZXIpOiB2b2lkIHtcblx0XHRyZXR1cm4ganN4LnJlbmRlclVzaW5nUmVuZGVyTWFuYWdlcihybSwgY29udHJvbCwgKCkgPT4ge1xuXHRcdFx0cmV0dXJuIDxzcGFuIHJlZj17Y29udHJvbH0+e2NvbnRyb2wuZ2V0QWdncmVnYXRpb24oXCJjb250ZW50XCIpfTwvc3Bhbj47XG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkNBO0VBQ0E7RUFHQTtFQW1DQTtBQUNBO0FBQ0E7QUFDQTtFQUhBLElBS3FCQSxzQkFBc0IsSUFBQUMsSUFBQSxHQUQxQ0MsY0FBYyxDQUFDLG1EQUFtRCxDQUFDLEVBQUFDLEtBQUEsR0FFbEVDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUc1QkYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBRzVCSCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFHLEtBQUEsR0FHNUJKLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUSxDQUFDLENBQUMsRUFBQUksS0FBQSxHQUczQkwsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFRLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBRzNCQyxlQUFlLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR2pCRCxlQUFlLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBR2pCQyxXQUFXLENBQUM7SUFBRVQsSUFBSSxFQUFFO0VBQXNCLENBQUMsQ0FBQyxFQUFBVSxNQUFBLEdBRzVDQyxLQUFLLENBQUMsQ0FBQyxFQUFBQyxNQUFBLEdBR1BELEtBQUssQ0FBQyxDQUFDLEVBQUFFLE1BQUEsR0FHUEYsS0FBSyxDQUFDLENBQUMsRUFBQUcsTUFBQSxHQVFQSCxLQUFLLENBQUMsQ0FBQyxFQUFBSSxNQUFBLEdBS1BKLEtBQUssQ0FBQyxDQUFDLEVBQUFLLE1BQUEsR0FHUEwsS0FBSyxDQUFDLENBQUMs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
|