@sapui5/sap.fe.macros 1.130.0 → 1.131.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/ActionCommand.js +39 -0
- package/src/sap/fe/macros/ActionCommand.tsx +49 -0
- package/src/sap/fe/macros/Chart.js +9 -6
- package/src/sap/fe/macros/Chart.tsx +11 -5
- package/src/sap/fe/macros/CommonHelper.js +23 -13
- package/src/sap/fe/macros/CommonHelper.ts +119 -66
- package/src/sap/fe/macros/DelegateUtil.js +37 -33
- package/src/sap/fe/macros/DelegateUtil.ts +94 -58
- package/src/sap/fe/macros/FooterContent.js +6 -6
- package/src/sap/fe/macros/FooterContent.tsx +2 -2
- package/src/sap/fe/macros/KPITag.js +6 -6
- package/src/sap/fe/macros/KPITag.tsx +2 -2
- package/src/sap/fe/macros/MacroAPI.js +9 -9
- package/src/sap/fe/macros/MacroAPI.ts +9 -8
- package/src/sap/fe/macros/MultiTab.js +6 -6
- package/src/sap/fe/macros/MultiTab.tsx +3 -3
- package/src/sap/fe/macros/MultiValueField.js +20 -15
- package/src/sap/fe/macros/MultiValueField.tsx +20 -14
- package/src/sap/fe/macros/ObjectTitle.js +6 -6
- package/src/sap/fe/macros/ObjectTitle.tsx +2 -2
- package/src/sap/fe/macros/Page.js +6 -6
- package/src/sap/fe/macros/Page.tsx +2 -2
- package/src/sap/fe/macros/RichTextEditor.js +8 -8
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -2
- package/src/sap/fe/macros/TSXUtils.js +3 -2
- package/src/sap/fe/macros/TSXUtils.tsx +4 -3
- package/src/sap/fe/macros/ValueHelp.js +6 -6
- package/src/sap/fe/macros/ValueHelp.tsx +2 -2
- package/src/sap/fe/macros/ai/EasyFilterBar.js +161 -23
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +151 -11
- package/src/sap/fe/macros/chart/ActionGroup.js +6 -6
- package/src/sap/fe/macros/chart/ActionGroup.ts +1 -3
- package/src/sap/fe/macros/chart/ChartDelegate.js +8 -13
- package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -21
- package/src/sap/fe/macros/chart/ChartRuntime.js +2 -2
- package/src/sap/fe/macros/chart/ChartRuntime.ts +5 -4
- package/src/sap/fe/macros/chart/ChartUtils.js +1 -1
- package/src/sap/fe/macros/chart/ChartUtils.ts +1 -1
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +13 -13
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +25 -23
- package/src/sap/fe/macros/contact/CollaborativeHeader.js +6 -6
- package/src/sap/fe/macros/contact/CollaborativeHeader.tsx +2 -2
- package/src/sap/fe/macros/contact/Contact.js +7 -6
- package/src/sap/fe/macros/contact/Contact.tsx +3 -2
- package/src/sap/fe/macros/contact/Email.js +6 -6
- package/src/sap/fe/macros/contact/Email.tsx +3 -3
- package/src/sap/fe/macros/contact/TeamContactOptions.js +6 -6
- package/src/sap/fe/macros/contact/TeamContactOptions.tsx +2 -2
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.js +60 -63
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.tsx +43 -56
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcherItem.js +5 -6
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcherItem.ts +4 -0
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +31 -1
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +32 -0
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +16 -16
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +2 -2
- package/src/sap/fe/macros/controls/FileWrapper.js +6 -6
- package/src/sap/fe/macros/controls/FileWrapper.ts +5 -3
- package/src/sap/fe/macros/controls/RadioButtons.js +7 -7
- package/src/sap/fe/macros/controls/RadioButtons.tsx +2 -2
- package/src/sap/fe/macros/controls/Section.js +3 -2
- package/src/sap/fe/macros/controls/Section.ts +1 -1
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +1 -1
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +8 -6
- package/src/sap/fe/macros/coreUI/CreateDialog.js +1 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +0 -1
- package/src/sap/fe/macros/coreUI/ParameterDialog.js +86 -24
- package/src/sap/fe/macros/coreUI/ParameterDialog.tsx +93 -22
- package/src/sap/fe/macros/designtime/Designtime.helper.js +9 -11
- package/src/sap/fe/macros/designtime/Designtime.helper.ts +8 -10
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +12 -23
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +2 -11
- package/src/sap/fe/macros/field/FieldAPI.js +325 -53
- package/src/sap/fe/macros/field/FieldAPI.ts +309 -204
- package/src/sap/fe/macros/field/FieldFormatOptions.js +316 -8
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +206 -5
- package/src/sap/fe/macros/field/FieldHelper.js +7 -5
- package/src/sap/fe/macros/field/FieldHelper.ts +14 -13
- package/src/sap/fe/macros/field/FieldRuntime.js +24 -221
- package/src/sap/fe/macros/field/FieldRuntime.ts +23 -260
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +193 -0
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +237 -0
- package/src/sap/fe/macros/field/FieldTemplating.js +2 -3
- package/src/sap/fe/macros/field/FieldTemplating.ts +10 -11
- package/src/sap/fe/macros/filter/CustomFilter.fragment.xml +7 -1
- package/src/sap/fe/macros/filter/FilterUtils.js +1 -1
- package/src/sap/fe/macros/filter/FilterUtils.ts +8 -7
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +3 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -1
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +5 -1
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +4 -0
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +13 -13
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +28 -24
- package/src/sap/fe/macros/filterBar/FilterBarSummary.js +75 -0
- package/src/sap/fe/macros/filterBar/FilterBarSummary.tsx +50 -0
- package/src/sap/fe/macros/filterBar/FilterHelper.js +1 -1
- package/src/sap/fe/macros/filterBar/FilterHelper.ts +3 -5
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +61 -5
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +74 -10
- package/src/sap/fe/macros/form/CustomFormElement.js +7 -7
- package/src/sap/fe/macros/form/CustomFormElement.tsx +4 -4
- package/src/sap/fe/macros/form/FormDelegate.js +6 -6
- package/src/sap/fe/macros/form/FormDelegate.ts +17 -10
- package/src/sap/fe/macros/form/FormElement.block.js +2 -1
- package/src/sap/fe/macros/form/FormElement.block.ts +1 -0
- package/src/sap/fe/macros/form/FormElementFlexibility.fragment.xml +1 -0
- package/src/sap/fe/macros/formatters/TableFormatter.js +6 -2
- package/src/sap/fe/macros/formatters/TableFormatter.ts +6 -0
- package/src/sap/fe/macros/internal/ActionCommand.block.js +12 -28
- package/src/sap/fe/macros/internal/ActionCommand.block.ts +12 -26
- package/src/sap/fe/macros/internal/DataPoint.js +7 -7
- package/src/sap/fe/macros/internal/DataPoint.tsx +4 -4
- package/src/sap/fe/macros/internal/FilterField.block.js +12 -2
- package/src/sap/fe/macros/internal/FilterField.block.ts +18 -1
- package/src/sap/fe/macros/internal/InternalField.block.js +64 -176
- package/src/sap/fe/macros/internal/InternalField.block.ts +26 -185
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +40 -19
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +30 -19
- package/src/sap/fe/macros/internal/field/EditStyle.js +66 -41
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +69 -66
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +64 -0
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +61 -0
- package/src/sap/fe/macros/internal/field/FieldStructure.js +29 -64
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +27 -68
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +34 -23
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +44 -33
- package/src/sap/fe/macros/internal/helpers/ActionHelper.js +2 -2
- package/src/sap/fe/macros/internal/helpers/ActionHelper.ts +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +1 -1
- package/src/sap/fe/macros/internal/helpers/Upload.js +4 -3
- package/src/sap/fe/macros/internal/helpers/Upload.ts +5 -2
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +15 -10
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +15 -11
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +1 -1
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +3 -1
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +8 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListForCondition.fragment.xml +0 -1
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +34 -25
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +35 -24
- package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +6 -1
- package/src/sap/fe/macros/kpiTag/AnalyticalKPITag.js +6 -6
- package/src/sap/fe/macros/kpiTag/AnalyticalKPITag.tsx +2 -2
- package/src/sap/fe/macros/library.js +7 -4
- package/src/sap/fe/macros/library.ts +4 -2
- package/src/sap/fe/macros/macroLibrary.js +3 -3
- package/src/sap/fe/macros/macroLibrary.ts +0 -2
- package/src/sap/fe/macros/messagebundle.properties +14 -4
- package/src/sap/fe/macros/messagebundle_ar.properties +88 -6
- package/src/sap/fe/macros/messagebundle_bg.properties +85 -3
- package/src/sap/fe/macros/messagebundle_ca.properties +85 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +86 -4
- package/src/sap/fe/macros/messagebundle_cs.properties +86 -4
- package/src/sap/fe/macros/messagebundle_cy.properties +86 -4
- package/src/sap/fe/macros/messagebundle_da.properties +88 -6
- package/src/sap/fe/macros/messagebundle_de.properties +85 -3
- package/src/sap/fe/macros/messagebundle_el.properties +86 -4
- package/src/sap/fe/macros/messagebundle_en.properties +86 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +86 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +86 -4
- package/src/sap/fe/macros/messagebundle_es.properties +87 -5
- package/src/sap/fe/macros/messagebundle_es_MX.properties +86 -4
- package/src/sap/fe/macros/messagebundle_et.properties +85 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +86 -4
- package/src/sap/fe/macros/messagebundle_fr.properties +85 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +86 -4
- package/src/sap/fe/macros/messagebundle_hi.properties +85 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +87 -5
- package/src/sap/fe/macros/messagebundle_hu.properties +86 -4
- package/src/sap/fe/macros/messagebundle_id.properties +86 -4
- package/src/sap/fe/macros/messagebundle_it.properties +85 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +85 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +85 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +86 -4
- package/src/sap/fe/macros/messagebundle_ko.properties +86 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +86 -4
- package/src/sap/fe/macros/messagebundle_lv.properties +86 -4
- package/src/sap/fe/macros/messagebundle_mk.properties +87 -5
- package/src/sap/fe/macros/messagebundle_ms.properties +86 -4
- package/src/sap/fe/macros/messagebundle_nl.properties +86 -4
- package/src/sap/fe/macros/messagebundle_no.properties +86 -4
- package/src/sap/fe/macros/messagebundle_pl.properties +86 -4
- package/src/sap/fe/macros/messagebundle_pt.properties +85 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +86 -4
- package/src/sap/fe/macros/messagebundle_ro.properties +86 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +85 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +86 -4
- package/src/sap/fe/macros/messagebundle_sk.properties +85 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +86 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +86 -4
- package/src/sap/fe/macros/messagebundle_sv.properties +87 -5
- package/src/sap/fe/macros/messagebundle_th.properties +86 -4
- package/src/sap/fe/macros/messagebundle_tr.properties +85 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +85 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +86 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +85 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +85 -3
- package/src/sap/fe/macros/messages/MessageButton.js +5 -7
- package/src/sap/fe/macros/messages/MessageButton.ts +8 -6
- package/src/sap/fe/macros/microchart/MicroChartContainer.js +5 -5
- package/src/sap/fe/macros/microchart/MicroChartContainer.ts +25 -21
- package/src/sap/fe/macros/microchart/MicroChartHelper.js +20 -13
- package/src/sap/fe/macros/microchart/MicroChartHelper.ts +86 -46
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldRuntime.js +4 -4
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldRuntime.ts +4 -4
- package/src/sap/fe/macros/quickView/QuickView.js +1 -1
- package/src/sap/fe/macros/quickView/QuickView.tsx +6 -6
- package/src/sap/fe/macros/quickView/QuickViewDelegate.js +49 -35
- package/src/sap/fe/macros/quickView/QuickViewDelegate.ts +345 -160
- package/src/sap/fe/macros/quickView/QuickViewHeaderOptions.block.js +1 -1
- package/src/sap/fe/macros/quickView/QuickViewHeaderOptions.block.tsx +2 -2
- package/src/sap/fe/macros/quickView/fragments/QuickViewFacets.fragment.xml +3 -1
- package/src/sap/fe/macros/share/Share.block.js +10 -12
- package/src/sap/fe/macros/share/Share.block.tsx +37 -26
- package/src/sap/fe/macros/situations/SituationsIndicator.js +8 -7
- package/src/sap/fe/macros/situations/SituationsIndicator.tsx +4 -4
- package/src/sap/fe/macros/situations/SituationsPopover.js +1 -1
- package/src/sap/fe/macros/situations/SituationsPopover.ts +5 -5
- package/src/sap/fe/macros/situations/SituationsText.js +1 -1
- package/src/sap/fe/macros/situations/SituationsText.ts +5 -4
- package/src/sap/fe/macros/table/ActionsTemplating.js +140 -97
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +221 -137
- package/src/sap/fe/macros/table/BasicSearch.js +2 -2
- package/src/sap/fe/macros/table/BasicSearch.ts +9 -7
- package/src/sap/fe/macros/table/MdcTableTemplate.js +206 -159
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +311 -265
- package/src/sap/fe/macros/table/SlotColumn.js +6 -6
- package/src/sap/fe/macros/table/SlotColumn.ts +2 -2
- package/src/sap/fe/macros/table/Table.block.js +111 -95
- package/src/sap/fe/macros/table/Table.block.tsx +9 -0
- package/src/sap/fe/macros/table/TableAPI.js +324 -378
- package/src/sap/fe/macros/table/TableAPI.ts +308 -324
- package/src/sap/fe/macros/table/TableFullScreenButton.js +205 -0
- package/src/sap/fe/macros/table/TableFullScreenButton.tsx +206 -0
- package/src/sap/fe/macros/table/TableHelper.js +21 -33
- package/src/sap/fe/macros/table/TableHelper.ts +64 -70
- package/src/sap/fe/macros/table/TableRuntime.js +6 -5
- package/src/sap/fe/macros/table/TableRuntime.ts +37 -20
- package/src/sap/fe/macros/table/TableSizeHelper.js +1 -1
- package/src/sap/fe/macros/table/TableSizeHelper.ts +2 -2
- package/src/sap/fe/macros/table/Utils.js +4 -3
- package/src/sap/fe/macros/table/Utils.ts +17 -16
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +7 -10
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +14 -14
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +73 -94
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +208 -204
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +4 -3
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +27 -7
- package/src/sap/fe/macros/table/designtime/Table.designtime.helper.js +15 -8
- package/src/sap/fe/macros/table/designtime/Table.designtime.helper.ts +12 -8
- package/src/sap/fe/macros/table/designtime/Table.designtime.js +144 -132
- package/src/sap/fe/macros/table/designtime/Table.designtime.ts +150 -133
- package/src/sap/fe/macros/table/massEdit/MassEdit.js +58 -20
- package/src/sap/fe/macros/table/massEdit/MassEdit.tsx +65 -24
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +24 -32
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +30 -49
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +5 -4
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -2
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +1 -1
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +1 -2
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +208 -0
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +203 -0
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +17 -7
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +16 -9
- package/src/sap/fe/macros/table/uploadTable/UploadTableTemplate.js +1 -1
- package/src/sap/fe/macros/table/uploadTable/UploadTableTemplate.tsx +1 -1
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +1 -1
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +1 -1
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +1 -1
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +20 -19
- package/src/sap/fe/macros/visualfilters/VisualFilter.block.js +1 -1
- package/src/sap/fe/macros/visualfilters/VisualFilter.block.ts +11 -10
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +13 -10
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +60 -38
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveBarChart.js +1 -1
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveBarChart.ts +1 -1
- package/src/sap/fe/macros/table/TableFullScreenDialog.block.js +0 -232
- package/src/sap/fe/macros/table/TableFullScreenDialog.block.tsx +0 -219
package/package.json
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2024 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/controls/CommandExecution", "sap/fe/base/jsx-runtime/jsx"], function (BindingToolkit, CommandExecution, _jsx) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var _exports = {};
|
|
9
|
+
var resolveBindingString = BindingToolkit.resolveBindingString;
|
|
10
|
+
function getCommandExecutionForAction(commandName, action, parameters) {
|
|
11
|
+
let executeFunction;
|
|
12
|
+
let isEnabled;
|
|
13
|
+
const actionVisible = action.visible ? resolveBindingString(action.visible) : undefined;
|
|
14
|
+
const actionEnabled = action.enabled ? resolveBindingString(action.enabled) : undefined;
|
|
15
|
+
switch (action.type) {
|
|
16
|
+
case "ForAction":
|
|
17
|
+
executeFunction = parameters.onExecuteAction;
|
|
18
|
+
isEnabled = parameters.isActionEnabled !== undefined ? resolveBindingString(parameters.isActionEnabled) : actionEnabled;
|
|
19
|
+
break;
|
|
20
|
+
case "ForNavigation":
|
|
21
|
+
executeFunction = parameters.onExecuteIBN;
|
|
22
|
+
isEnabled = parameters.isIBNEnabled !== undefined ? resolveBindingString(parameters.isIBNEnabled) : actionEnabled;
|
|
23
|
+
break;
|
|
24
|
+
default:
|
|
25
|
+
executeFunction = parameters.onExecuteManifest;
|
|
26
|
+
isEnabled = parameters.isEnabled !== undefined ? resolveBindingString(parameters.isEnabled) : actionEnabled;
|
|
27
|
+
}
|
|
28
|
+
return _jsx(CommandExecution, {
|
|
29
|
+
"core:require": "{FPM: 'sap/fe/core/helpers/FPMHelper'}",
|
|
30
|
+
execute: executeFunction,
|
|
31
|
+
enabled: isEnabled,
|
|
32
|
+
visible: parameters.visible ?? actionVisible,
|
|
33
|
+
command: commandName ?? action.command
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
_exports.getCommandExecutionForAction = getCommandExecutionForAction;
|
|
37
|
+
return _exports;
|
|
38
|
+
}, false);
|
|
39
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb21tYW5kRXhlY3V0aW9uRm9yQWN0aW9uIiwiY29tbWFuZE5hbWUiLCJhY3Rpb24iLCJwYXJhbWV0ZXJzIiwiZXhlY3V0ZUZ1bmN0aW9uIiwiaXNFbmFibGVkIiwiYWN0aW9uVmlzaWJsZSIsInZpc2libGUiLCJyZXNvbHZlQmluZGluZ1N0cmluZyIsInVuZGVmaW5lZCIsImFjdGlvbkVuYWJsZWQiLCJlbmFibGVkIiwidHlwZSIsIm9uRXhlY3V0ZUFjdGlvbiIsImlzQWN0aW9uRW5hYmxlZCIsIm9uRXhlY3V0ZUlCTiIsImlzSUJORW5hYmxlZCIsIm9uRXhlY3V0ZU1hbmlmZXN0IiwiX2pzeCIsIkNvbW1hbmRFeGVjdXRpb24iLCJleGVjdXRlIiwiY29tbWFuZCIsIl9leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBY3Rpb25Db21tYW5kLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZXNvbHZlQmluZGluZ1N0cmluZywgdHlwZSBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCBDb21tYW5kRXhlY3V0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9Db21tYW5kRXhlY3V0aW9uXCI7XG5pbXBvcnQgeyB0eXBlIEJhc2VBY3Rpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgeyB0eXBlIENvbW1hbmRFeGVjdXRpb24kRXhlY3V0ZUV2ZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbW1hbmRFeGVjdXRpb25cIjtcblxudHlwZSBDb21tYW5kRXhlY3V0aW9uUGFyYW1ldGVycyA9IHtcblx0dmlzaWJsZT86IGJvb2xlYW47XG5cdG9uRXhlY3V0ZUFjdGlvbj86IChldmVudDogQ29tbWFuZEV4ZWN1dGlvbiRFeGVjdXRlRXZlbnQpID0+IHZvaWQ7XG5cdG9uRXhlY3V0ZUlCTj86IChldmVudDogQ29tbWFuZEV4ZWN1dGlvbiRFeGVjdXRlRXZlbnQpID0+IHZvaWQ7XG5cdG9uRXhlY3V0ZU1hbmlmZXN0PzogKGV2ZW50OiBDb21tYW5kRXhlY3V0aW9uJEV4ZWN1dGVFdmVudCkgPT4gdm9pZDtcblx0aXNBY3Rpb25FbmFibGVkPzogYm9vbGVhbiB8IHN0cmluZztcblx0aXNJQk5FbmFibGVkPzogYm9vbGVhbiB8IHN0cmluZztcblx0aXNFbmFibGVkPzogYm9vbGVhbiB8IHN0cmluZztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tYW5kRXhlY3V0aW9uRm9yQWN0aW9uKFxuXHRjb21tYW5kTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRhY3Rpb246IEJhc2VBY3Rpb24sXG5cdHBhcmFtZXRlcnM6IENvbW1hbmRFeGVjdXRpb25QYXJhbWV0ZXJzXG4pOiBDb21tYW5kRXhlY3V0aW9uIHtcblx0bGV0IGV4ZWN1dGVGdW5jdGlvbjogKGV2ZW50OiBDb21tYW5kRXhlY3V0aW9uJEV4ZWN1dGVFdmVudCkgPT4gdm9pZDtcblx0bGV0IGlzRW5hYmxlZDogYm9vbGVhbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB8IHVuZGVmaW5lZDtcblx0Y29uc3QgYWN0aW9uVmlzaWJsZSA9IGFjdGlvbi52aXNpYmxlID8gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4oYWN0aW9uLnZpc2libGUpIDogdW5kZWZpbmVkO1xuXHRjb25zdCBhY3Rpb25FbmFibGVkID0gYWN0aW9uLmVuYWJsZWQgPyByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuPihhY3Rpb24uZW5hYmxlZCkgOiB1bmRlZmluZWQ7XG5cdHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcblx0XHRjYXNlIFwiRm9yQWN0aW9uXCI6XG5cdFx0XHRleGVjdXRlRnVuY3Rpb24gPSBwYXJhbWV0ZXJzLm9uRXhlY3V0ZUFjdGlvbiE7XG5cdFx0XHRpc0VuYWJsZWQgPVxuXHRcdFx0XHRwYXJhbWV0ZXJzLmlzQWN0aW9uRW5hYmxlZCAhPT0gdW5kZWZpbmVkID8gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4ocGFyYW1ldGVycy5pc0FjdGlvbkVuYWJsZWQpIDogYWN0aW9uRW5hYmxlZDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJGb3JOYXZpZ2F0aW9uXCI6XG5cdFx0XHRleGVjdXRlRnVuY3Rpb24gPSBwYXJhbWV0ZXJzLm9uRXhlY3V0ZUlCTiE7XG5cdFx0XHRpc0VuYWJsZWQgPSBwYXJhbWV0ZXJzLmlzSUJORW5hYmxlZCAhPT0gdW5kZWZpbmVkID8gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4ocGFyYW1ldGVycy5pc0lCTkVuYWJsZWQpIDogYWN0aW9uRW5hYmxlZDtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRleGVjdXRlRnVuY3Rpb24gPSBwYXJhbWV0ZXJzLm9uRXhlY3V0ZU1hbmlmZXN0ITtcblx0XHRcdGlzRW5hYmxlZCA9IHBhcmFtZXRlcnMuaXNFbmFibGVkICE9PSB1bmRlZmluZWQgPyByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuPihwYXJhbWV0ZXJzLmlzRW5hYmxlZCkgOiBhY3Rpb25FbmFibGVkO1xuXHR9XG5cblx0cmV0dXJuIChcblx0XHQ8Q29tbWFuZEV4ZWN1dGlvblxuXHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZQTTogJ3NhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyJ31cIlxuXHRcdFx0ZXhlY3V0ZT17ZXhlY3V0ZUZ1bmN0aW9ufVxuXHRcdFx0ZW5hYmxlZD17aXNFbmFibGVkfVxuXHRcdFx0dmlzaWJsZT17cGFyYW1ldGVycy52aXNpYmxlID8/IGFjdGlvblZpc2libGV9XG5cdFx0XHRjb21tYW5kPXtjb21tYW5kTmFtZSA/PyBhY3Rpb24uY29tbWFuZCF9XG5cdFx0Lz5cblx0KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0VBZU8sU0FBU0EsNEJBQTRCQSxDQUMzQ0MsV0FBK0IsRUFDL0JDLE1BQWtCLEVBQ2xCQyxVQUFzQyxFQUNuQjtJQUNuQixJQUFJQyxlQUErRDtJQUNuRSxJQUFJQyxTQUFrRTtJQUN0RSxNQUFNQyxhQUFhLEdBQUdKLE1BQU0sQ0FBQ0ssT0FBTyxHQUFHQyxvQkFBb0IsQ0FBVU4sTUFBTSxDQUFDSyxPQUFPLENBQUMsR0FBR0UsU0FBUztJQUNoRyxNQUFNQyxhQUFhLEdBQUdSLE1BQU0sQ0FBQ1MsT0FBTyxHQUFHSCxvQkFBb0IsQ0FBVU4sTUFBTSxDQUFDUyxPQUFPLENBQUMsR0FBR0YsU0FBUztJQUNoRyxRQUFRUCxNQUFNLENBQUNVLElBQUk7TUFDbEIsS0FBSyxXQUFXO1FBQ2ZSLGVBQWUsR0FBR0QsVUFBVSxDQUFDVSxlQUFnQjtRQUM3Q1IsU0FBUyxHQUNSRixVQUFVLENBQUNXLGVBQWUsS0FBS0wsU0FBUyxHQUFHRCxvQkFBb0IsQ0FBVUwsVUFBVSxDQUFDVyxlQUFlLENBQUMsR0FBR0osYUFBYTtRQUNySDtNQUNELEtBQUssZUFBZTtRQUNuQk4sZUFBZSxHQUFHRCxVQUFVLENBQUNZLFlBQWE7UUFDMUNWLFNBQVMsR0FBR0YsVUFBVSxDQUFDYSxZQUFZLEtBQUtQLFNBQVMsR0FBR0Qsb0JBQW9CLENBQVVMLFVBQVUsQ0FBQ2EsWUFBWSxDQUFDLEdBQUdOLGFBQWE7UUFDMUg7TUFDRDtRQUNDTixlQUFlLEdBQUdELFVBQVUsQ0FBQ2MsaUJBQWtCO1FBQy9DWixTQUFTLEdBQUdGLFVBQVUsQ0FBQ0UsU0FBUyxLQUFLSSxTQUFTLEdBQUdELG9CQUFvQixDQUFVTCxVQUFVLENBQUNFLFNBQVMsQ0FBQyxHQUFHSyxhQUFhO0lBQ3RIO0lBRUEsT0FDQ1EsSUFBQSxDQUFDQyxnQkFBZ0I7TUFDaEIsZ0JBQWEsd0NBQXdDO01BQ3JEQyxPQUFPLEVBQUVoQixlQUFnQjtNQUN6Qk8sT0FBTyxFQUFFTixTQUFVO01BQ25CRSxPQUFPLEVBQUVKLFVBQVUsQ0FBQ0ksT0FBTyxJQUFJRCxhQUFjO01BQzdDZSxPQUFPLEVBQUVwQixXQUFXLElBQUlDLE1BQU0sQ0FBQ21CO0lBQVMsQ0FDeEMsQ0FBQztFQUVKO0VBQUNDLFFBQUEsQ0FBQXRCLDRCQUFBLEdBQUFBLDRCQUFBO0VBQUEsT0FBQXNCLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { resolveBindingString, type BindingToolkitExpression } from "sap/fe/base/BindingToolkit";
|
|
2
|
+
import CommandExecution from "sap/fe/core/controls/CommandExecution";
|
|
3
|
+
import { type BaseAction } from "sap/fe/core/converters/controls/Common/Action";
|
|
4
|
+
import { type CommandExecution$ExecuteEvent } from "sap/ui/core/CommandExecution";
|
|
5
|
+
|
|
6
|
+
type CommandExecutionParameters = {
|
|
7
|
+
visible?: boolean;
|
|
8
|
+
onExecuteAction?: (event: CommandExecution$ExecuteEvent) => void;
|
|
9
|
+
onExecuteIBN?: (event: CommandExecution$ExecuteEvent) => void;
|
|
10
|
+
onExecuteManifest?: (event: CommandExecution$ExecuteEvent) => void;
|
|
11
|
+
isActionEnabled?: boolean | string;
|
|
12
|
+
isIBNEnabled?: boolean | string;
|
|
13
|
+
isEnabled?: boolean | string;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export function getCommandExecutionForAction(
|
|
17
|
+
commandName: string | undefined,
|
|
18
|
+
action: BaseAction,
|
|
19
|
+
parameters: CommandExecutionParameters
|
|
20
|
+
): CommandExecution {
|
|
21
|
+
let executeFunction: (event: CommandExecution$ExecuteEvent) => void;
|
|
22
|
+
let isEnabled: boolean | BindingToolkitExpression<boolean> | undefined;
|
|
23
|
+
const actionVisible = action.visible ? resolveBindingString<boolean>(action.visible) : undefined;
|
|
24
|
+
const actionEnabled = action.enabled ? resolveBindingString<boolean>(action.enabled) : undefined;
|
|
25
|
+
switch (action.type) {
|
|
26
|
+
case "ForAction":
|
|
27
|
+
executeFunction = parameters.onExecuteAction!;
|
|
28
|
+
isEnabled =
|
|
29
|
+
parameters.isActionEnabled !== undefined ? resolveBindingString<boolean>(parameters.isActionEnabled) : actionEnabled;
|
|
30
|
+
break;
|
|
31
|
+
case "ForNavigation":
|
|
32
|
+
executeFunction = parameters.onExecuteIBN!;
|
|
33
|
+
isEnabled = parameters.isIBNEnabled !== undefined ? resolveBindingString<boolean>(parameters.isIBNEnabled) : actionEnabled;
|
|
34
|
+
break;
|
|
35
|
+
default:
|
|
36
|
+
executeFunction = parameters.onExecuteManifest!;
|
|
37
|
+
isEnabled = parameters.isEnabled !== undefined ? resolveBindingString<boolean>(parameters.isEnabled) : actionEnabled;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<CommandExecution
|
|
42
|
+
core:require="{FPM: 'sap/fe/core/helpers/FPMHelper'}"
|
|
43
|
+
execute={executeFunction}
|
|
44
|
+
enabled={isEnabled}
|
|
45
|
+
visible={parameters.visible ?? actionVisible}
|
|
46
|
+
command={commandName ?? action.command!}
|
|
47
|
+
/>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
@@ -304,7 +304,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
|
|
|
304
304
|
this.content = this.createContent();
|
|
305
305
|
}
|
|
306
306
|
};
|
|
307
|
-
_proto.onAfterRendering = function onAfterRendering() {
|
|
307
|
+
_proto.onAfterRendering = function onAfterRendering(afterRenderingEvent) {
|
|
308
308
|
var _this$getPageControll;
|
|
309
309
|
const view = (_this$getPageControll = this.getPageController()) === null || _this$getPageControll === void 0 ? void 0 : _this$getPageControll.getView();
|
|
310
310
|
const internalModelContext = view === null || view === void 0 ? void 0 : view.getBindingContext("internal");
|
|
@@ -316,7 +316,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
|
|
|
316
316
|
showMessageStrip[sCacheKey] = chart.data("draftSupported") === "true" && !!oBindingContext && !oBindingContext.getObject("IsActiveEntity");
|
|
317
317
|
internalModelContext.setProperty("controls/showMessageStrip", showMessageStrip);
|
|
318
318
|
this.attachStateChangeHandler();
|
|
319
|
-
_MacroAPI.prototype.onAfterRendering.call(this);
|
|
319
|
+
_MacroAPI.prototype.onAfterRendering.call(this, afterRenderingEvent);
|
|
320
320
|
};
|
|
321
321
|
_proto.attachStateChangeHandler = function attachStateChangeHandler() {
|
|
322
322
|
StateUtil.detachStateChange(this.stateChangeHandler);
|
|
@@ -622,8 +622,8 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
|
|
|
622
622
|
}
|
|
623
623
|
|
|
624
624
|
/**
|
|
625
|
-
* Get the selection variant from the chart.
|
|
626
|
-
* @returns A promise that resolves with
|
|
625
|
+
* Get the selection variant from the chart. This function considers only the selection variant applied at the control level.
|
|
626
|
+
* @returns A promise that resolves with {@link sap.fe.navigation.SelectionVariant}.
|
|
627
627
|
* @public
|
|
628
628
|
*/;
|
|
629
629
|
_proto.getSelectionVariant = async function getSelectionVariant() {
|
|
@@ -836,7 +836,10 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
|
|
|
836
836
|
};
|
|
837
837
|
_proto.createContent = function createContent() {
|
|
838
838
|
var _this$_getOwner, _this$_getOwner$getRo, _this$_getOwner2, _this$getAppComponent;
|
|
839
|
-
|
|
839
|
+
if (this.contextPath) {
|
|
840
|
+
this._resolvedContextPath = this.contextPath.endsWith("/") ? this.contextPath : this.contextPath + "/";
|
|
841
|
+
}
|
|
842
|
+
return getMdcChartTemplate(this, ((_this$_getOwner = this._getOwner()) === null || _this$_getOwner === void 0 ? void 0 : (_this$_getOwner$getRo = _this$_getOwner.getRootController()) === null || _this$_getOwner$getRo === void 0 ? void 0 : _this$_getOwner$getRo.getView().getViewData()) ?? ((_this$_getOwner2 = this._getOwner()) === null || _this$_getOwner2 === void 0 ? void 0 : _this$_getOwner2.getViewData()), ((_this$getAppComponent = this.getAppComponent()) === null || _this$getAppComponent === void 0 ? void 0 : _this$getAppComponent.getDiagnostics()) ?? {}, this.getDataModelObjectForMetaPath(this.metaPath, this._resolvedContextPath));
|
|
840
843
|
};
|
|
841
844
|
return Chart;
|
|
842
845
|
}(MacroAPI), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "__implements__sap_fe_core_controllerextensions_viewState_IViewStateContributor", [_dec2], {
|
|
@@ -961,4 +964,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
|
|
|
961
964
|
_exports = Chart;
|
|
962
965
|
return _exports;
|
|
963
966
|
}, false);
|
|
964
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsIl9kZWM0IiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzUiLCJyZXF1aXJlZCIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiZGVmYXVsdFZhbHVlIiwiX2RlYzkiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiYXNzb2NpYXRpb24iLCJfZGVjMTciLCJhZ2dyZWdhdGlvbiIsIl9kZWMxOCIsImFsdFR5cGVzIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJBY3Rpb24iLCJfZGVjMTkiLCJldmVudCIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsInhtbEV2ZW50SGFuZGxlciIsIl9kZWMyNSIsIl9kZWMyNiIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9NYWNyb0FQSSIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0U2VjdGlvbkNvbnRlbnRSb2xlIiwic2VuZERhdGFUb0NvbnN1bWVyIiwiY29uc3VtZXJEYXRhIiwiX3RoaXMkY29udGVudCIsIl90aGlzJGNvbnRlbnQyIiwiX3RoaXMkY29udGVudDMiLCJjb250ZW50Iiwic2V0SGVhZGVyIiwidGl0bGUiLCJzZXRIZWFkZXJTdHlsZSIsInNldEhlYWRlckxldmVsIiwidGl0bGVMZXZlbCIsImdldFNlbGVjdGVkQ29udGV4dHMiLCJfdGhpcyRjb250ZW50NCIsIl90aGlzJGNvbnRlbnQ0JGdldEJpbiIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiX2FwcGx5SWRUb0NvbnRlbnQiLCJpZCIsImdlbmVyYXRlIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJwcmV2RHJpbGxTdGFjayIsImluaXRpYWxDb250cm9sU3RhdGUiLCJjaGFydEFjdGlvbnMiLCJfY29tbWFuZEFjdGlvbnMiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9leHBvcnRzIiwiaXNBIiwidHlwZU5hbWUiLCJvbGRWYWxpZFR5cGUiLCJBcnJheSIsImlzQXJyYXkiLCJpbmNsdWRlcyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJjcmVhdGVDb250ZW50Iiwib25BZnRlclJlbmRlcmluZyIsIl90aGlzJGdldFBhZ2VDb250cm9sbCIsInZpZXciLCJnZXRQYWdlQ29udHJvbGxlciIsImdldFZpZXciLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImNoYXJ0IiwiZ2V0Q29udGVudCIsInNob3dNZXNzYWdlU3RyaXAiLCJzQ2hhcnRFbnRpdHlQYXRoIiwiZGF0YSIsInNDYWNoZUtleSIsIm9CaW5kaW5nQ29udGV4dCIsImdldE9iamVjdCIsInNldFByb3BlcnR5IiwiYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyIiwiU3RhdGVVdGlsIiwiZGV0YWNoU3RhdGVDaGFuZ2UiLCJzdGF0ZUNoYW5nZUhhbmRsZXIiLCJhdHRhY2hTdGF0ZUNoYW5nZSIsIm9FdmVudCIsImNvbnRyb2wiLCJnZXRQYXJhbWV0ZXIiLCJjaGFydEJsb2NrIiwiZ2V0UGFyZW50IiwiaGFuZGxlU3RhdGVDaGFuZ2UiLCJyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcyIsIm9GaWx0ZXJDb250cm9sIiwib0NoYXJ0IiwiRmlsdGVyVXRpbHMiLCJnZXROb3RBcHBsaWNhYmxlRmlsdGVycyIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZSIsImFEYXRhIiwiYlNlbGVjdGVkIiwiQ2hhcnRSdW50aW1lIiwiZm5VcGRhdGVDaGFydCIsImZpcmVFdmVudCIsIm1lcmdlIiwic2VsZWN0ZWQiLCJvbkludGVybmFsRGF0YVJlcXVlc3RlZCIsImNvbGxlY3RBdmFpbGFibGVDYXJkcyIsImNhcmRzIiwiYWN0aW9uVG9vbGJhckl0ZW1zIiwiZ2V0QWN0aW9ucyIsImhhc0luc2lnaHRBY3Rpb25FbmFibGVkIiwiZ2V0RmlsdGVyIiwiY2FyZCIsImdldENhcmRNYW5pZmVzdENoYXJ0IiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsInB1c2giLCJnZXRDaGFydENvbnRyb2wiLCJnZXRIZWFkZXIiLCJjYWxsYmFjayIsIm9uQWRkQ2FyZFRvQ29sbGFib3JhdGlvbk1hbmFnZXJDYWxsYmFjayIsImJpbmQiLCJoYXNTZWxlY3Rpb25zIiwibWRjQ2hhcnQiLCJfbWRjQ2hhcnQkZ2V0Q29udHJvbEQiLCJnZXRDb250cm9sRGVsZWdhdGUiLCJnZXRJbm5lckNoYXJ0IiwiYURpbWVuc2lvbnMiLCJDaGFydFV0aWxzIiwiZ2V0RGltZW5zaW9uc0Zyb21EcmlsbFN0YWNrIiwiYklzRHJpbGxEb3duIiwiYklzRHJpbGxVcCIsImJOb0NoYW5nZSIsInRvU3RyaW5nIiwiYUZpbHRlcnMiLCJnZXRDaGFydFNlbGVjdGlvbnMiLCJlcnIiLCJMb2ciLCJlcnJvciIsIm9uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkIiwiaW5zaWdodHNQYXJhbXMiLCJjcmVhdGVDaGFydENhcmRQYXJhbXMiLCJzaG93SW5zaWdodHNDYXJkUHJldmlldyIsImUiLCJzaG93R2VuZXJpY0Vycm9yTWVzc2FnZSIsImdldENhcmRNYW5pZmVzdCIsIl90aGlzJGdldFBhZ2VDb250cm9sbDIiLCJzaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldyIsImNvbGxhYm9yYXRpb25NYW5hZ2VyIiwiZ2V0U2VydmljZSIsImNoYXJ0RmlsdGVySW5mbyIsImdldEFsbEZpbHRlckluZm8iLCJmaWx0ZXJzIiwiZm9yRWFjaCIsImZpbHRlciIsImdldFBhdGgiLCJzUGF0aCIsImdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyIsIkZpbHRlciIsImFuZCIsInVuZGVmaW5lZCIsImdldFByb3BlcnR5RGF0YU1vZGVsIiwicHJvcGVydHlOYW1lIiwibWV0YVBhdGgiLCJtZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsImRpbWVuc2lvbkNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImNoYXJ0UHJvcGVydHkiLCJnZXRJbnRlcm5hbENoYXJ0TmFtZUZyb21Qcm9wZXJ0eU5hbWVBbmRLaW5kIiwibmFtZSIsImtpbmQiLCJyZXBsYWNlIiwiX2NvbnZlcnRTdGF0ZVV0aWxUb1ByZXNlbnRhdGlvblZhcmlhbnQiLCJjaGFydFN0YXRlIiwiX2NoYXJ0U3RhdGUkc29ydGVycyIsIl9jaGFydFN0YXRlJHN1cHBsZW1lbiIsIl9jaGFydFN0YXRlJHN1cHBsZW1lbjIiLCJzb3J0T3JkZXIiLCJzb3J0ZXJzIiwibWFwIiwic29ydGVyIiwiUHJvcGVydHkiLCJEZXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsInN1cHBsZW1lbnRhcnlDb25maWciLCJwcm9wZXJ0aWVzIiwiY2hhcnRUeXBlIiwiY2hhcnRUeXBlSW5SZXF1aXJlZEZvcm1hdCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJkaW1lbnNpb25zIiwibWVhc3VyZXMiLCJkaW1lbnNpb25BdHRyaWJ1dGVzIiwibWVhc3VyZUF0dHJpYnV0ZXMiLCJpdGVtcyIsIml0ZW0iLCJfaXRlbSRyb2xlIiwiX2l0ZW0kcm9sZTIiLCJyb2xlIiwic3Vic3RyaW5nIiwiRGltZW5zaW9uIiwiUm9sZSIsIk1lYXN1cmUiLCJjaGFydFZpeiIsIkNvbnRlbnQiLCJDaGFydFR5cGUiLCJEaW1lbnNpb25BdHRyaWJ1dGVzIiwiRGltZW5zaW9ucyIsIk1lYXN1cmVBdHRyaWJ1dGVzIiwiTWVhc3VyZXMiLCJUeXBlIiwiY2hhcnRQViIsIlByZXNlbnRhdGlvblZhcmlhbnQiLCJzZXRDaGFydFZpc3VhbGl6YXRpb24iLCJzZXRQcm9wZXJ0aWVzIiwiU29ydE9yZGVyIiwiZ2V0UHJlc2VudGF0aW9uVmFyaWFudCIsInJldHJpZXZlRXh0ZXJuYWxTdGF0ZSIsImdldElkIiwibWVzc2FnZSIsIkVycm9yIiwiU3RyaW5nIiwic2V0UHJlc2VudGF0aW9uVmFyaWFudCIsInByZXNlbnRhdGlvblZhcmlhbnQiLCJfY2hhcnQkZ2V0Q29udHJvbERlbGUiLCJleGlzdGluZ1ByZXNlbnRhdGlvblZhcmlhbnQiLCJwcm9wZXJ0aWVzSW5mbyIsImZldGNoUHJvcGVydGllcyIsInN0YXRlVXRpbFB2IiwiUHJlc2VudGF0aW9uVmFyaWFudFRvU3RhdGVVdGlsc1BWIiwiY29udmVydFB2VG9TdGF0ZVV0aWxQdiIsImFwcGx5RXh0ZXJuYWxTdGF0ZSIsImdldEN1cnJlbnRWYXJpYW50S2V5IiwiZ2V0VmFyaWFudCIsInNldEN1cnJlbnRWYXJpYW50S2V5Iiwia2V5IiwidmFyaWFudE1hbmFnZW1lbnQiLCJnZXRTZWxlY3Rpb25WYXJpYW50IiwiU3RhdGVIZWxwZXIiLCJzZXRTZWxlY3Rpb25WYXJpYW50Iiwic2VsZWN0aW9uVmFyaWFudCIsInByZWZpbGxEZXNjcmlwdGlvbnMiLCJhcmd1bWVudHMiLCJzZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sIiwiZ2V0Q29udHJvbFN0YXRlIiwiY29udHJvbFN0YXRlIiwiZnVsbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwic2V0SW5pdGlhbFN0YXRlIiwicmV0cmlldmVTdGF0ZSIsIl90aGlzJGNvbnRlbnQkZ2V0VmFyaSIsImlubmVyQ2hhcnQiLCJ2YXJpYW50VG9SZXRyaWV2ZSIsInZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbCIsInZhcmlhbnRJZCIsImFwcGx5TGVnYWN5U3RhdGUiLCJfbmF2UGFyYW1ldGVycyIsInNob3VsZEFwcGx5RGlmZlN0YXRlIiwidm0iLCJ2bVN0YXRlIiwiX2NvbnRyb2xTdGF0ZSRpbm5lckNoIiwiX2NvbnRyb2xTdGF0ZSRpbm5lckNoMiIsImFwcGx5U3RhdGUiLCJfY29udHJvbFN0YXRlJHZhcmlhbnQiLCJfdGhpcyRjb250ZW50NSIsImN1cnJlbnRWYXJpYW50IiwiX3RoaXMkY29udGVudDYiLCJvdk0iLCJhVmFyaWFudHMiLCJnZXRWYXJpYW50cyIsInNWYXJpYW50UmVmZXJlbmNlIiwic29tZSIsIm9WYXJpYW50IiwiZ2V0S2V5IiwiZ2V0U3RhbmRhcmRWYXJpYW50S2V5IiwiQ29udHJvbFZhcmlhbnRBcHBseUFQSSIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwiYWN0aXZhdGVWYXJpYW50IiwiZWxlbWVudCIsInZhcmlhbnRSZWZlcmVuY2UiLCJpbm5lckNoYXJ0U3RhdGUiLCJmaW5hbFN0YXRlIiwiZGlmZlN0YXRlIiwiX3RoaXMkZ2V0UGFnZUNvbnRyb2xsMyIsImdldEV4dGVuc2lvbkFQSSIsInVwZGF0ZUFwcFN0YXRlIiwiX2NyZWF0ZUNvbnRlbnQiLCJvd25lciIsIl9nZXRPd25lciIsInNldEZpbHRlciIsImRlc3Ryb3kiLCJ2YWx1ZSIsInN1cHByZXNzSW52YWxpZGF0ZSIsIl9hcHBseWluZ1NldHRpbmdzIiwiZ2V0TWV0YWRhdGEiLCJnZXRQcm9wZXJ0aWVzIiwicmVtb3ZlQWdncmVnYXRpb24iLCJyZW1vdmVkIiwiZ2V0QWdncmVnYXRpb25zIiwiYWRkQWdncmVnYXRpb24iLCJpbnNlcnRBZ2dyZWdhdGlvbiIsImluZGV4IiwiX3RoaXMkX2dldE93bmVyIiwiX3RoaXMkX2dldE93bmVyJGdldFJvIiwiX3RoaXMkX2dldE93bmVyMiIsIl90aGlzJGdldEFwcENvbXBvbmVudCIsImdldE1kY0NoYXJ0VGVtcGxhdGUiLCJnZXRSb290Q29udHJvbGxlciIsImdldFZpZXdEYXRhIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RGlhZ25vc3RpY3MiLCJnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCIsImNvbnRleHRQYXRoIiwiTWFjcm9BUEkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJUaXRsZUxldmVsIiwiQXV0byIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ2hhcnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnQgYXMgVm9jYWJ1bGFyeUNoYXJ0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCB0eXBlIENoYXJ0Q2hhcnQgZnJvbSBcInNhcC9jaGFydC9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSwgeG1sRXZlbnRIYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgY29udHJvbGxlckV4dGVuc2lvbkhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uUGFyYW1ldGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IHR5cGUgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmFzZUFjdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlLCBXcmFwcGVkQ2FyZCB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IFZpZXdEYXRhIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1RlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgRGlhZ25vc3RpY3MgZnJvbSBcInNhcC9mZS9jb3JlL3N1cHBvcnQvRGlhZ25vc3RpY3NcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBBY3Rpb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jaGFydC9BY3Rpb25Hcm91cFwiO1xuaW1wb3J0IENoYXJ0UnVudGltZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jaGFydC9DaGFydFJ1bnRpbWVcIjtcbmltcG9ydCBDaGFydFV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0VXRpbHNcIjtcbmltcG9ydCB0eXBlIElTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvc2VjdGlvbi9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IENvbnN1bWVyRGF0YSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL3NlY3Rpb24vSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBEaW1lbnNpb25UeXBlLCBNZWFzdXJlVHlwZSwgVmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9QcmVzZW50YXRpb25WYXJpYW50XCI7XG5pbXBvcnQgUHJlc2VudGF0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vUHJlc2VudGF0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgeyBDYXJkTWFuaWZlc3QgfSBmcm9tIFwic2FwL2luc2lnaHRzL0NhcmRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIE1lbnVJdGVtIGZyb20gXCJzYXAvbS9NZW51SXRlbVwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIEV2ZW50LCBkZWZhdWx0IGFzIFVJNUV2ZW50IH0gZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBMYXlvdXREYXRhIGZyb20gXCJzYXAvdWkvY29yZS9MYXlvdXREYXRhXCI7XG5pbXBvcnQgeyBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIE1EQ0NoYXJ0IGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSBDaGFydERlbGVnYXRlIGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0RGVsZWdhdGVcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIEFjdGlvblRvb2xiYXJBY3Rpb24gZnJvbSBcInNhcC91aS9tZGMvYWN0aW9udG9vbGJhci9BY3Rpb25Ub29sYmFyQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEFwcFN0YXRlLCBJdGVtcywgU29ydGVycyB9IGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgU3RhdGVVdGlsIGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgdHlwZSBNb2RlbENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcIi4vRGVsZWdhdGVVdGlsXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcIi4vTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9uT3JBY3Rpb25Hcm91cCwgQ2hhcnRDb250ZXh0T2JqZWN0UGF0aCwgQ2hhcnRDdXN0b21EYXRhLCBDb21tYW5kQWN0aW9uIH0gZnJvbSBcIi4vY2hhcnQvTWRjQ2hhcnRUZW1wbGF0ZVwiO1xuaW1wb3J0IHsgZ2V0TWRjQ2hhcnRUZW1wbGF0ZSB9IGZyb20gXCIuL2NoYXJ0L01kY0NoYXJ0VGVtcGxhdGVcIjtcbmltcG9ydCBQcmVzZW50YXRpb25WYXJpYW50VG9TdGF0ZVV0aWxzUFYgZnJvbSBcIi4vY2hhcnQvYWRhcHRlci9DaGFydFB2VG9TdGF0ZVV0aWxzXCI7XG5pbXBvcnQgeyBjcmVhdGVDaGFydENhcmRQYXJhbXMgfSBmcm9tIFwiLi9pbnNpZ2h0cy9BbmFseXRpY2FsSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29udHJvbFN0YXRlIH0gZnJvbSBcIi4vaW5zaWdodHMvQ29tbW9uSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB7IGhhc0luc2lnaHRBY3Rpb25FbmFibGVkLCBzaG93R2VuZXJpY0Vycm9yTWVzc2FnZSB9IGZyb20gXCIuL2luc2lnaHRzL0NvbW1vbkluc2lnaHRzSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0Q29udGVudCwgSW5zaWdodHNQYXJhbXMgfSBmcm9tIFwiLi9pbnNpZ2h0cy9JbnNpZ2h0c1NlcnZpY2VcIjtcbmltcG9ydCB7IGdldENhcmRNYW5pZmVzdCwgc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FyZFByZXZpZXcsIHNob3dJbnNpZ2h0c0NhcmRQcmV2aWV3IH0gZnJvbSBcIi4vaW5zaWdodHMvSW5zaWdodHNTZXJ2aWNlXCI7XG5pbXBvcnQgU3RhdGVIZWxwZXIgZnJvbSBcIi4vbWRjL2FkYXB0ZXIvU3RhdGVIZWxwZXJcIjtcblxuZXhwb3J0IHR5cGUgQ2hhcnRTdGF0ZSA9IHtcblx0aW5uZXJDaGFydD86IHtcblx0XHRpbml0aWFsU3RhdGU/OiB7XG5cdFx0XHRpdGVtcz86IHsgbmFtZTogc3RyaW5nIH1bXTtcblx0XHR9O1xuXHRcdGZ1bGxTdGF0ZT86IHtcblx0XHRcdGl0ZW1zPzogeyBuYW1lOiBzdHJpbmcgfVtdO1xuXHRcdFx0ZmlsdGVyPzogb2JqZWN0O1xuXHRcdH07XG5cdH07XG5cdHZhcmlhbnRNYW5hZ2VtZW50Pzoge1xuXHRcdHZhcmlhbnRJZD86IHN0cmluZyB8IG51bGw7XG5cdH07XG59ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgY2hhcnQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBjb250ZXh0UGF0aCBhbmQgbWV0YVBhdGggaXMgZXhwZWN0ZWQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpDaGFydCBpZD1cIk15Q2hhcnRcIiBjb250ZXh0UGF0aD1cIi9Sb290RW50aXR5XCIgbWV0YVBhdGg9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIiAvJmd0O1xuICogPC9wcmU+XG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5DaGFydFxuICogQGlnbm9yZUludGVyZmFjZSBzYXAuZmUubWFjcm9zLmNvbnRyb2xzLnNlY3Rpb24uSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclxuICogQHVpNS1tZXRhbW9kZWxcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5DaGFydFwiLCB7IHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCJdIH0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFydCBleHRlbmRzIE1hY3JvQVBJIGltcGxlbWVudHMgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciwgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPENoYXJ0U3RhdGU+IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIilcblx0X19pbXBsZW1lbnRzX19zYXBfZmVfY29yZV9jb250cm9sbGVyZXh0ZW5zaW9uc192aWV3U3RhdGVfSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yID0gdHJ1ZTtcblxuXHRjb250ZW50ITogTURDQ2hhcnQ7XG5cblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuc2VjdGlvbi5JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX2ZlX21hY3Jvc19jb250cm9sc19zZWN0aW9uX0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IgPSB0cnVlO1xuXG5cdGdldFNlY3Rpb25Db250ZW50Um9sZSgpOiBcInByb3ZpZGVyXCIgfCBcImNvbnN1bWVyXCIge1xuXHRcdHJldHVybiBcImNvbnN1bWVyXCI7XG5cdH1cblxuXHQvKipcblx0ICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNlbmREYXRhVG9Db25zdW1lciBtZXRob2Qgd2hpY2ggaXMgYSBwYXJ0IG9mIHRoZSBJU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXG5cdCAqXG5cdCAqIFdpbGwgYmUgY2FsbGVkIGZyb20gdGhlIHNhcC5mZS5tYWNyb3MuY29udHJvbHMuU2VjdGlvbiBjb250cm9sIHdoZW4gdGhlcmUgaXMgYSBDaGFydCBidWlsZGluZyBibG9jayByZW5kZXJlZCB3aXRoaW4gYSBzZWN0aW9uXG5cdCAqIGFsb25nIHdpdGggdGhlIGNvbnN1bWVyRGF0YSBpLmUuIHNlY3Rpb24ncyBkYXRhIHN1Y2ggYXMgdGl0bGUgYW5kIHRpdGxlIGxldmVsIHdoaWNoIGlzIHRoZW4gYXBwbGllZCB0byB0aGUgY2hhcnQgdXNpbmcgdGhlIGltcGxlbWVudGF0aW9uIGJlbG93IGFjY29yZGluZ2x5LlxuXHQgKlxuXHQgKi9cblxuXHRzZW5kRGF0YVRvQ29uc3VtZXIoY29uc3VtZXJEYXRhOiBDb25zdW1lckRhdGEpOiB2b2lkIHtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlcihjb25zdW1lckRhdGEudGl0bGUpO1xuXHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyU3R5bGUoXCJINFwiKTtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlckxldmVsKGNvbnN1bWVyRGF0YS50aXRsZUxldmVsIGFzIFRpdGxlTGV2ZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBjaGFydFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBpZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgcHJlc2VudGF0aW9uIGNvbnRleHQgKFVJLkNoYXJ0IHdpdGggb3Igd2l0aG91dCBhIHF1YWxpZmllcilcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1xuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50XCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcIlxuXHRcdF1cblx0fSlcblx0cmVhZG9ubHkgbWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eVNldCBvciBuYXZpZ2F0aW9uUHJvcGVydHlcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW11cblx0fSlcblx0cmVhZG9ubHkgY29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIHRleHQgdGhhdCBpcyBzaG93biBpbiB0aGUgY2hhcnRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBoZWFkZXIhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0cmVhZG9ubHkgaGVhZGVyVmlzaWJsZSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIGNoYXJ0LlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCBvciBgTXVsdGlwbGVgXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJNdWx0aXBsZVwiLCBhbGxvd2VkVmFsdWVzOiBbXCJOb25lXCIsIFwiU2luZ2xlXCIsIFwiTXVsdGlwbGVcIl0gfSlcblx0cmVhZG9ubHkgc2VsZWN0aW9uTW9kZSE6IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIGtpbmQgb2YgdmFyaWFudCBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydC5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZSBpcyBgQ29udHJvbGAuPGJyLz5cblx0ICogSWYgc2V0IHdpdGggdmFsdWUgYENvbnRyb2xgLCBhIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIHNlZW4gd2l0aGluIHRoZSBjaGFydCBhbmQgdGhlIGNoYXJ0IGlzIGxpbmtlZCB0byB0aGlzLjxici8+XG5cdCAqIElmIG5vdCBzZXQgd2l0aCBhbnkgdmFsdWUsIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgY2hhcnQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0cmVhZG9ubHkgdmFyaWFudE1hbmFnZW1lbnQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydCBwZXJzb25hbGl6YXRpb24gZGlhbG9nLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYHRydWVgLCBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhpcyBraW5kIG9mIGNoYXJ0IGFyZSBlbmFibGVkLjxici8+XG5cdCAqIElmIGl0IGlzIHNldCB0byBgZmFsc2VgLCBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWQuPGJyLz5cblx0ICogPGJyLz5cblx0ICogWW91IGNhbiBhbHNvIHByb3ZpZGUgYSBtb3JlIGdyYW51bGFyIGNvbnRyb2wgZm9yIHRoZSBwZXJzb25hbGl6YXRpb24gYnkgcHJvdmlkaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aCB0aGUgb3B0aW9ucyB5b3Ugd2FudCB0byBiZSBhdmFpbGFibGUuPGJyLz5cblx0ICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOjxici8+XG5cdCAqIC0gU29ydDxici8+XG5cdCAqIC0gVHlwZTxici8+XG5cdCAqIC0gSXRlbTxici8+XG5cdCAqIC0gRmlsdGVyPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0pXG5cdHJlYWRvbmx5IHBlcnNvbmFsaXphdGlvbiE6IHN0cmluZyB8IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEhlYWRlciBsZXZlbCBvZiBjaGFydFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBoZWFkZXJMZXZlbDogVGl0bGVMZXZlbCA9IFRpdGxlTGV2ZWwuQXV0bztcblxuXHQvKipcblx0ICogQ2hhcnQgZGVsZWdhdGVcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0cmVhZG9ubHkgY2hhcnREZWxlZ2F0ZT86IG9iamVjdDtcblxuXHQvKipcblx0ICogVXNlZCBpbnRlcm5hbGx5IGZvciBMUiBhbmQgT1Bcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHJlYWRvbmx5IF9hcHBseUlkVG9Db250ZW50ID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIE5vIGRhdGEgdGV4dFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBub0RhdGFUZXh0Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQYXJhbWV0ZXIgd2l0aCBkcmlsbHN0YWNrIG9uIGEgZHJpbGwgdXAvIGRyaWxsIGRvd24gb2YgdGhlIE1EQ19DaGFydFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJldkRyaWxsU3RhY2s6IHN0cmluZ1tdID0gW107XG5cblx0X2NvbnRlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF9jb250ZXh0ITogTW9kZWxDb250ZXh0O1xuXG5cdGJsb2NrQWN0aW9ucz86IEFjdGlvbk9yQWN0aW9uR3JvdXA7XG5cblx0X2Jsb2NrSWQ/OiBzdHJpbmc7XG5cblx0X3BlcnNvbmFsaXphdGlvbj86IHN0cmluZyB8IGJvb2xlYW47XG5cblx0aW5pdGlhbENvbnRyb2xTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRfYmxvY2tBY3Rpb25zITogKE1lbnVJdGVtIHwgQWN0aW9uVG9vbGJhckFjdGlvbiB8IHVuZGVmaW5lZClbXTtcblxuXHRjaGFydERlZmluaXRpb24hOiBDaGFydFZpc3VhbGl6YXRpb247XG5cblx0bmF2aWdhdGlvblBhdGg/OiBzdHJpbmc7XG5cblx0YXV0b0JpbmRPbkluaXQ/OiBib29sZWFuO1xuXG5cdHZpelByb3BlcnRpZXM/OiBzdHJpbmc7XG5cblx0Y2hhcnRBY3Rpb25zPzogQmFzZUFjdGlvbltdID0gW107XG5cblx0ZmlsdGVyPzogc3RyaW5nO1xuXG5cdHZpc2libGU/OiBzdHJpbmc7XG5cblx0ZHJhZnRTdXBwb3J0ZWQ/OiBib29sZWFuO1xuXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHR1c2VDb25kZW5zZWRMYXlvdXQhOiBib29sZWFuO1xuXG5cdF9tZXRhUGF0aENvbnRleHQhOiBNb2RlbENvbnRleHQ7XG5cblx0X2N1c3RvbURhdGEhOiBDaGFydEN1c3RvbURhdGE7XG5cblx0X2NoYXJ0Q29udGV4dCE6IE1vZGVsQ29udGV4dDtcblxuXHRfY2hhcnRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X2NoYXJ0ITogVm9jYWJ1bGFyeUNoYXJ0O1xuXG5cdF9tZXRhTW9kZWwhOiBPRGF0YU1ldGFNb2RlbDtcblxuXHRtZWFzdXJlcz86IE1vZGVsQ29udGV4dDtcblxuXHRfc29ydENvbmRpdGlvbnM6IG9iamVjdCB8IHVuZGVmaW5lZDtcblxuXHRfY29tbWFuZEFjdGlvbnM6IENvbW1hbmRBY3Rpb25bXSA9IFtdO1xuXG5cdGZpcmVWYXJpYW50U2VsZWN0ZWQ/OiBGdW5jdGlvbjtcblxuXHRmaXJlVmFyaWFudFNhdmVkPzogRnVuY3Rpb247XG5cblx0ZmlyZVNlZ21lbnRlZEJ1dHRvblByZXNzZWQ/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogSWQgb2YgdGhlIEZpbHRlckJhciBidWlsZGluZyBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIGNoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiB9KVxuXHRmaWx0ZXJCYXI/OiBzdHJpbmc7XG5cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC51aS5jb3JlLkxheW91dERhdGFcIlxuXHR9KVxuXHRsYXlvdXREYXRhITogTGF5b3V0RGF0YTtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIGFjdGlvbnMgb2YgdGhlIGNoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5jaGFydC5BY3Rpb25cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy5jaGFydC5BY3Rpb25Hcm91cFwiXSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRkZWZhdWx0Q2xhc3M6IEFjdGlvblxuXHR9KVxuXHRhY3Rpb25zITogQWN0aW9uW10gfCBBY3Rpb25Hcm91cFtdO1xuXG5cdC8qKlxuXHQgKiBHZXRzIGNvbnRleHRzIGZyb20gdGhlIGNoYXJ0IHRoYXQgaGF2ZSBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLlxuXHQgKiBAcmV0dXJucyBDb250ZXh0cyBvZiB0aGUgcm93cyBzZWxlY3RlZCBieSB0aGUgdXNlclxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKCk6IENvbnRleHRbXSB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudD8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJzZWxlY3RlZENvbnRleHRzXCIpIHx8IFtdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIGNoYXJ0IHNlbGVjdGlvbnMgYXJlIGNoYW5nZWQuIFRoZSBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGF0YSBzZWxlY3RlZC9kZXNlbGVjdGVkIGFuZCB0aGUgQm9vbGVhbiBmbGFnIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgZGF0YSBpcyBzZWxlY3RlZCBvciBkZXNlbGVjdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRzZWxlY3Rpb25DaGFuZ2UhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIGNoYXJ0IHJlcXVlc3RzIGRhdGEuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRpbnRlcm5hbERhdGFSZXF1ZXN0ZWQhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gY2hhcnQncyB2YXJpYW50IGlzIHNlbGVjdGVkLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QGV2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIGNoYXJ0J3MgdmFyaWFudCBpcyBzYXZlZC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBldmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBFdmVudCB0cmlnZ2VyZWQgd2hlbiBjaGFydCdzIHNlZ21lbnRlZCBidXR0b24gaS5lLiwgbW9kZSBiZXR3ZWVuIHRhYmxlLCBjaGFydCBhbmQgY2hhcnQgd2l0aCB0YWJsZSB2aWV3IGlzIHNlbGVjdGVkXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzc2VkITogRnVuY3Rpb247XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8Q2hhcnQ+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0aWYgKHNldHRpbmdzPy5fYXBwbHlJZFRvQ29udGVudCkge1xuXHRcdFx0c2V0dGluZ3MuaWQgPSBnZW5lcmF0ZShbc2V0dGluZ3MuaWQsIFwiOjpDaGFydFwiXSk7XG5cdFx0fVxuXHRcdHN1cGVyKHNldHRpbmdzLCBvdGhlcnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIGlzIG92ZXJyaWRkZW4gdG8gZW5zdXJlIGJhY2t3YXJkIGluY29tcGF0aWJpbGl0eVxuXHQgKiBAb3ZlcnJpZGVcblx0ICovXG5cdGlzQTxUIGV4dGVuZHMgQmFzZU9iamVjdCA9IEJhc2VPYmplY3Q+KHR5cGVOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMgaXMgVDtcblxuXHRpc0E8VD4odHlwZU5hbWU/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMgaXMgVDtcblxuXHRpc0EodHlwZU5hbWU6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgb2xkVmFsaWRUeXBlID0gXCJzYXAuZmUubWFjcm9zLmNoYXJ0LkNoYXJ0QVBJXCI7XG5cdFx0aWYgKChBcnJheS5pc0FycmF5KHR5cGVOYW1lKSAmJiB0eXBlTmFtZS5pbmNsdWRlcyhvbGRWYWxpZFR5cGUpKSB8fCB0eXBlTmFtZSA9PT0gb2xkVmFsaWRUeXBlKSByZXR1cm4gdHJ1ZTtcblxuXHRcdHJldHVybiBzdXBlci5pc0EodHlwZU5hbWUpO1xuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0b25BZnRlclJlbmRlcmluZygpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRWaWV3KCk7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBjaGFydCA9IHRoaXMuZ2V0Q29udGVudCgpIGFzIENoYXJ0O1xuXHRcdGNvbnN0IHNob3dNZXNzYWdlU3RyaXA6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0gaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiY29udHJvbHMvc2hvd01lc3NhZ2VTdHJpcFwiKSB8fCB7fTtcblx0XHRjb25zdCBzQ2hhcnRFbnRpdHlQYXRoID0gY2hhcnQuZGF0YShcImVudGl0eVNldFwiKSxcblx0XHRcdHNDYWNoZUtleSA9IGAke3NDaGFydEVudGl0eVBhdGh9Q2hhcnRgLFxuXHRcdFx0b0JpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRzaG93TWVzc2FnZVN0cmlwW3NDYWNoZUtleV0gPVxuXHRcdFx0Y2hhcnQuZGF0YShcImRyYWZ0U3VwcG9ydGVkXCIpID09PSBcInRydWVcIiAmJiAhIW9CaW5kaW5nQ29udGV4dCAmJiAhb0JpbmRpbmdDb250ZXh0LmdldE9iamVjdChcIklzQWN0aXZlRW50aXR5XCIpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29udHJvbHMvc2hvd01lc3NhZ2VTdHJpcFwiLCBzaG93TWVzc2FnZVN0cmlwKTtcblx0XHR0aGlzLmF0dGFjaFN0YXRlQ2hhbmdlSGFuZGxlcigpO1xuXG5cdFx0c3VwZXIub25BZnRlclJlbmRlcmluZygpO1xuXHR9XG5cblx0cHJpdmF0ZSBhdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIoKTogdm9pZCB7XG5cdFx0U3RhdGVVdGlsLmRldGFjaFN0YXRlQ2hhbmdlKHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0XHRTdGF0ZVV0aWwuYXR0YWNoU3RhdGVDaGFuZ2UodGhpcy5zdGF0ZUNoYW5nZUhhbmRsZXIpO1xuXHR9XG5cblx0c3RhdGVDaGFuZ2VIYW5kbGVyKG9FdmVudDogRXZlbnQ8eyBjb250cm9sOiBDb250cm9sIH0+KTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb250cm9sXCIpO1xuXHRcdGlmIChjb250cm9sLmlzQTxDaGFydD4oXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRjb25zdCBjaGFydEJsb2NrID0gY29udHJvbC5nZXRQYXJlbnQoKSBhcyB1bmtub3duIGFzIHsgaGFuZGxlU3RhdGVDaGFuZ2U/OiBGdW5jdGlvbiB9O1xuXHRcdFx0aWYgKGNoYXJ0QmxvY2s/LmhhbmRsZVN0YXRlQ2hhbmdlKSB7XG5cdFx0XHRcdGNoYXJ0QmxvY2suaGFuZGxlU3RhdGVDaGFuZ2UoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcyhvRmlsdGVyQ29udHJvbDogQ29udHJvbCk6IHN0cmluZ1tdIHtcblx0XHRjb25zdCBvQ2hhcnQgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRyZXR1cm4gRmlsdGVyVXRpbHMuZ2V0Tm90QXBwbGljYWJsZUZpbHRlcnMob0ZpbHRlckNvbnRyb2wgYXMgRmlsdGVyQmFyLCBvQ2hhcnQhKTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRoYW5kbGVTZWxlY3Rpb25DaGFuZ2Uob0V2ZW50OiBVSTVFdmVudDx7IGRhdGE6IHVua25vd25bXTsgbmFtZTogc3RyaW5nIH0+KTogdm9pZCB7XG5cdFx0Y29uc3QgYURhdGEgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiZGF0YVwiKTtcblx0XHRjb25zdCBiU2VsZWN0ZWQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwibmFtZVwiKSA9PT0gXCJzZWxlY3REYXRhXCI7XG5cdFx0Q2hhcnRSdW50aW1lLmZuVXBkYXRlQ2hhcnQob0V2ZW50KTtcblx0XHR0aGlzLmZpcmVFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCBtZXJnZSh7fSwgeyBkYXRhOiBhRGF0YSwgc2VsZWN0ZWQ6IGJTZWxlY3RlZCB9KSk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQoKTogdm9pZCB7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJpbnRlcm5hbERhdGFSZXF1ZXN0ZWRcIik7XG5cdH1cblxuXHRAY29udHJvbGxlckV4dGVuc2lvbkhhbmRsZXIoXCJjb2xsYWJvcmF0aW9uTWFuYWdlclwiLCBcImNvbGxlY3RBdmFpbGFibGVDYXJkc1wiKVxuXHRhc3luYyBjb2xsZWN0QXZhaWxhYmxlQ2FyZHMoY2FyZHM6IFdyYXBwZWRDYXJkW10pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBhY3Rpb25Ub29sYmFySXRlbXMgPSB0aGlzLmNvbnRlbnQuZ2V0QWN0aW9ucygpIGFzIEFjdGlvblRvb2xiYXJBY3Rpb25bXTtcblx0XHRpZiAoaGFzSW5zaWdodEFjdGlvbkVuYWJsZWQoYWN0aW9uVG9vbGJhckl0ZW1zLCB0aGlzLmNvbnRlbnQuZ2V0RmlsdGVyKCkpKSB7XG5cdFx0XHRjb25zdCBjYXJkID0gYXdhaXQgdGhpcy5nZXRDYXJkTWFuaWZlc3RDaGFydCgpO1xuXHRcdFx0aWYgKE9iamVjdC5rZXlzKGNhcmQpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y2FyZHMucHVzaCh7XG5cdFx0XHRcdFx0Y2FyZDogY2FyZCxcblx0XHRcdFx0XHR0aXRsZTogdGhpcy5nZXRDaGFydENvbnRyb2woKS5nZXRIZWFkZXIoKSxcblx0XHRcdFx0XHRjYWxsYmFjazogdGhpcy5vbkFkZENhcmRUb0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FsbGJhY2suYmluZCh0aGlzKVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRoYXNTZWxlY3Rpb25zKCk6IGJvb2xlYW4ge1xuXHRcdC8vIGNvbnNpZGVyIGNoYXJ0IHNlbGVjdGlvbnMgaW4gdGhlIGN1cnJlbnQgZHJpbGwgc3RhY2sgb3Igb24gYW55IGZ1cnRoZXIgZHJpbGwgZG93bnNcblx0XHRjb25zdCBtZGNDaGFydCA9IHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIE1EQ0NoYXJ0O1xuXHRcdGlmIChtZGNDaGFydCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgY2hhcnQgPSAobWRjQ2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkgYXMgdW5rbm93biBhcyBDaGFydERlbGVnYXRlKT8uZ2V0SW5uZXJDaGFydChtZGNDaGFydCkgYXMgQ2hhcnRDaGFydDtcblx0XHRcdFx0aWYgKGNoYXJ0KSB7XG5cdFx0XHRcdFx0Y29uc3QgYURpbWVuc2lvbnMgPSBDaGFydFV0aWxzLmdldERpbWVuc2lvbnNGcm9tRHJpbGxTdGFjayhjaGFydCk7XG5cdFx0XHRcdFx0Y29uc3QgYklzRHJpbGxEb3duID0gYURpbWVuc2lvbnMubGVuZ3RoID4gdGhpcy5wcmV2RHJpbGxTdGFjay5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgYklzRHJpbGxVcCA9IGFEaW1lbnNpb25zLmxlbmd0aCA8IHRoaXMucHJldkRyaWxsU3RhY2subGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGJOb0NoYW5nZSA9IGFEaW1lbnNpb25zLnRvU3RyaW5nKCkgPT09IHRoaXMucHJldkRyaWxsU3RhY2sudG9TdHJpbmcoKTtcblx0XHRcdFx0XHRsZXQgYUZpbHRlcnM6IEZpbHRlcltdO1xuXHRcdFx0XHRcdGlmIChiSXNEcmlsbFVwICYmIGFEaW1lbnNpb25zLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdFx0Ly8gZHJpbGxpbmcgdXAgdG8gbGV2ZWwwIHdvdWxkIGNsZWFyIGFsbCBzZWxlY3Rpb25zXG5cdFx0XHRcdFx0XHRhRmlsdGVycyA9IENoYXJ0VXRpbHMuZ2V0Q2hhcnRTZWxlY3Rpb25zKG1kY0NoYXJ0LCB0cnVlKSBhcyBGaWx0ZXJbXTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gYXBwbHkgZmlsdGVycyBvZiBzZWxlY3Rpb25zIG9mIHByZXZpb3VzIGRyaWxsc3RhY2sgd2hlbiBkcmlsbGluZyB1cC9kb3duXG5cdFx0XHRcdFx0XHQvLyB0byB0aGUgY2hhcnQgYW5kIHRhYmxlXG5cdFx0XHRcdFx0XHRhRmlsdGVycyA9IENoYXJ0VXRpbHMuZ2V0Q2hhcnRTZWxlY3Rpb25zKG1kY0NoYXJ0KSBhcyBGaWx0ZXJbXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGJJc0RyaWxsRG93biB8fCBiSXNEcmlsbFVwKSB7XG5cdFx0XHRcdFx0XHQvLyB1cGRhdGUgdGhlIGRyaWxsc3RhY2sgb24gYSBkcmlsbCB1cC8gZHJpbGwgZG93blxuXHRcdFx0XHRcdFx0dGhpcy5wcmV2RHJpbGxTdGFjayA9IGFEaW1lbnNpb25zO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFGaWx0ZXJzLmxlbmd0aCA+IDA7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChiTm9DaGFuZ2UpIHtcblx0XHRcdFx0XHRcdC8vIGJOb0NoYW5nZSBpcyB0cnVlIHdoZW4gY2hhcnQgaXMgc2VsZWN0ZWRcblx0XHRcdFx0XHRcdHJldHVybiBhRmlsdGVycy5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgRXJyb3Igd2hpbGUgY2hlY2tpbmcgZm9yIHNlbGVjdGlvbnMgaW4gQ2hhcnQ6ICR7ZXJyfWApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjcmVhdGUgaW5zaWdodHNQYXJhbXMgYW5kIGNhbGwgdGhlIEFQSSB0byBzaG93IGluc2lnaHRzIGNhcmQgcHJldmlldyBmb3IgY2hhcnRzLlxuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgY2FyZCBwcmV2aWV3IGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0YXN5bmMgb25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGluc2lnaHRzUGFyYW1zID0gYXdhaXQgY3JlYXRlQ2hhcnRDYXJkUGFyYW1zKHRoaXMpO1xuXHRcdFx0aWYgKGluc2lnaHRzUGFyYW1zKSB7XG5cdFx0XHRcdHNob3dJbnNpZ2h0c0NhcmRQcmV2aWV3KGluc2lnaHRzUGFyYW1zKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdHNob3dHZW5lcmljRXJyb3JNZXNzYWdlKHRoaXMuY29udGVudCk7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjYXJkIG1hbmlmZXN0IG9wdGltaXplZCBmb3IgdGhlIGNoYXJ0IGNhc2UuXG5cdCAqIEByZXR1cm5zIFByb21pc2Ugb2YgQ2FyZE1hbmlmZXN0XG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIGdldENhcmRNYW5pZmVzdENoYXJ0KCk6IFByb21pc2U8Q2FyZE1hbmlmZXN0PiB7XG5cdFx0Y29uc3QgaW5zaWdodHNQYXJhbXMgPSBhd2FpdCBjcmVhdGVDaGFydENhcmRQYXJhbXModGhpcyk7XG5cdFx0cmV0dXJuIGdldENhcmRNYW5pZmVzdChpbnNpZ2h0c1BhcmFtcyBhcyBJbnNpZ2h0c1BhcmFtczxDaGFydENvbnRlbnQ+KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBpbnNpZ2h0c1BhcmFtcyBhbmQgY2FsbCB0aGUgQVBJIHRvIHNob3cgaW5zaWdodHMgY2FyZCBwcmV2aWV3IGZvciB0YWJsZS5cblx0ICogQHBhcmFtIGNhcmQgVGhlIGNhcmQgbWFuaWZlc3QgdG8gYmUgdXNlZCBmb3IgdGhlIGNhbGxiYWNrXG5cdCAqIEByZXR1cm5zIFVuZGVmaW5lZCBpZiBjYXJkIHByZXZpZXcgaXMgcmVuZGVyZWQuXG5cdCAqL1xuXHRhc3luYyBvbkFkZENhcmRUb0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FsbGJhY2soY2FyZDogQ2FyZE1hbmlmZXN0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmIChjYXJkKSB7XG5cdFx0XHRcdGF3YWl0IHNob3dDb2xsYWJvcmF0aW9uTWFuYWdlckNhcmRQcmV2aWV3KFxuXHRcdFx0XHRcdGNhcmQsXG5cdFx0XHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5jb2xsYWJvcmF0aW9uTWFuYWdlci5nZXRTZXJ2aWNlKCkgYXMgQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRzaG93R2VuZXJpY0Vycm9yTWVzc2FnZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0TG9nLmVycm9yKGUgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmlsdGVycyByZWxhdGVkIHRvIHRoZSBjaGFydC5cblx0ICogQHJldHVybnMgIFRoZSBmaWx0ZXIgY29uZmlndXJlZCBvbiB0aGUgY2hhcnQgb3IgdW5kZWZpbmVkIGlmIG5vbmVcblx0ICovXG5cdGdldEZpbHRlcigpOiBGaWx0ZXIgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGNoYXJ0RmlsdGVySW5mbyA9IENoYXJ0VXRpbHMuZ2V0QWxsRmlsdGVySW5mbyh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBNRENDaGFydCk7XG5cdFx0aWYgKGNoYXJ0RmlsdGVySW5mby5maWx0ZXJzLmxlbmd0aCkge1xuXHRcdFx0Y2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKSA9PiB7XG5cdFx0XHRcdGlmIChmaWx0ZXIuZ2V0UGF0aCgpKSB7XG5cdFx0XHRcdFx0KGZpbHRlciBhcyB1bmtub3duIGFzIHsgc1BhdGg6IHN0cmluZyB9KS5zUGF0aCA9IHRoaXMuZ2V0Q2hhcnRQcm9wZXJ0aWVzV2l0aG91dFByZWZpeGVzKGZpbHRlci5nZXRQYXRoKCkhKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gbmV3IEZpbHRlcih7IGZpbHRlcnM6IGNoYXJ0RmlsdGVySW5mby5maWx0ZXJzLCBhbmQ6IHRydWUgfSk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY2hhcnQgY29udHJvbCBmcm9tIHRoZSBDaGFydCBBUEkuXG5cdCAqIEByZXR1cm5zIFRoZSBDaGFydCBjb250cm9sIGluc2lkZSB0aGUgQ2hhcnQgQVBJXG5cdCAqL1xuXHRnZXRDaGFydENvbnRyb2woKTogTURDQ2hhcnQge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgZGltZW5zaW9uLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lICBOYW1lIG9mIHRoZSBkaW1lbnNpb25cblx0ICogQHJldHVybnMgVGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIGRpbWVuc2lvblxuXHQgKi9cblxuXHRnZXRQcm9wZXJ0eURhdGFNb2RlbChwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+IHwgbnVsbCB7XG5cdFx0Y29uc3QgbWV0YVBhdGggPSB0aGlzLmNvbnRlbnQuZGF0YShcInRhcmdldENvbGxlY3Rpb25QYXRoXCIpIGFzIHN0cmluZztcblx0XHRjb25zdCBtZXRhTW9kZWwgPSAodGhpcy5jb250ZW50LmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgZGltZW5zaW9uQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChgJHttZXRhUGF0aH0vJHtwcm9wZXJ0eU5hbWV9YCkgYXMgQ29udGV4dDtcblx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPFByb3BlcnR5PihkaW1lbnNpb25Db250ZXh0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgY2hhcnQgcHJvcGVydGllcyBieSByZW1vdmluZyBfZmVfZ3JvdXBhYmxlIGFuZCBfZmVfYWdncmVnYXRhYmxlIHByZWZpeC5cblx0ICogQHBhcmFtIHtBcnJheX0gYVByb3BlcnRpZXMgQ2hhcnQgZmlsdGVyIHByb3BlcnRpZXNcblx0ICogQHJldHVybnMgQ2hhcnQgcHJvcGVydGllcyB3aXRob3V0IHByZWZpeGVzXG5cdCAqL1xuXG5cdGdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyhjaGFydFByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGlmIChjaGFydFByb3BlcnR5ICYmIGNoYXJ0UHJvcGVydHkuaW5jbHVkZXMoXCJmZV9ncm91cGFibGVcIikpIHtcblx0XHRcdGNoYXJ0UHJvcGVydHkgPSB0aGlzLmdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQoY2hhcnRQcm9wZXJ0eSwgXCJncm91cGFibGVcIik7XG5cdFx0fSBlbHNlIGlmIChjaGFydFByb3BlcnR5ICYmIGNoYXJ0UHJvcGVydHkuaW5jbHVkZXMoXCJmZV9hZ2dyZWdhdGFibGVcIikpIHtcblx0XHRcdGNoYXJ0UHJvcGVydHkgPSB0aGlzLmdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQoY2hhcnRQcm9wZXJ0eSwgXCJhZ2dyZWdhdGFibGVcIik7XG5cdFx0fVxuXHRcdHJldHVybiBjaGFydFByb3BlcnR5O1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBJRCB3aGljaCBzaG91bGQgYmUgdXNlZCBpbiB0aGUgaW50ZXJuYWwgY2hhcnQgZm9yIHRoZSBtZWFzdXJlIG9yIGRpbWVuc2lvbi5cblx0ICogQHBhcmFtIG5hbWUgSUQgb2YgdGhlIHByb3BlcnR5XG5cdCAqIEBwYXJhbSBraW5kIFR5cGUgb2YgdGhlIHByb3BlcnR5IChtZWFzdXJlIG9yIGRpbWVuc2lvbilcblx0ICogQHJldHVybnMgSW50ZXJuYWwgSUQgZm9yIHRoZSBzYXAuY2hhcnQuQ2hhcnRcblx0ICovXG5cblx0Z2V0SW50ZXJuYWxDaGFydE5hbWVGcm9tUHJvcGVydHlOYW1lQW5kS2luZChuYW1lOiBzdHJpbmcsIGtpbmQ6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIG5hbWUucmVwbGFjZShcIl9mZV9cIiArIGtpbmQgKyBcIl9cIiwgXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyB0aGUgY2hhcnQncyBzdGF0ZVV0aWwgIHRvIENoYXJ0IFByZXNlbnRhdGlvbiBWYXJpYW50LlxuXHQgKiBAcGFyYW0gY2hhcnRTdGF0ZSBDaGFydCBBcHBTdGF0ZSB1dGlsIFBWXG5cdCAqIEByZXR1cm5zIFByZXNlbnRhdGlvbiBWYXJpYW50IHN0cnVjdHVyZSBmb3IgdGhlIGNoYXJ0XG5cdCAqL1xuXHRfY29udmVydFN0YXRlVXRpbFRvUHJlc2VudGF0aW9uVmFyaWFudChjaGFydFN0YXRlOiBBcHBTdGF0ZSk6IFByZXNlbnRhdGlvblZhcmlhbnQge1xuXHRcdGNvbnN0IHNvcnRPcmRlciA9IGNoYXJ0U3RhdGUuc29ydGVycz8ubWFwKChzb3J0ZXI6IFNvcnRlcnMpID0+IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFByb3BlcnR5OiB0aGlzLmdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyhzb3J0ZXIubmFtZSksXG5cdFx0XHRcdERlc2NlbmRpbmc6IHNvcnRlci5kZXNjZW5kaW5nXG5cdFx0XHR9O1xuXHRcdH0pO1xuXHRcdGNvbnN0IHR5cGUgPSBjaGFydFN0YXRlLnN1cHBsZW1lbnRhcnlDb25maWc/LnByb3BlcnRpZXM/LmNoYXJ0VHlwZTtcblx0XHRjb25zdCBjaGFydFR5cGVJblJlcXVpcmVkRm9ybWF0ID0gdHlwZSA/IHR5cGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpIDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IGNoYXJ0VHlwZSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRUeXBlL1wiICsgY2hhcnRUeXBlSW5SZXF1aXJlZEZvcm1hdDtcblx0XHRjb25zdCBkaW1lbnNpb25zOiBzdHJpbmdbXSA9IFtdLFxuXHRcdFx0bWVhc3VyZXM6IHN0cmluZ1tdID0gW10sXG5cdFx0XHRkaW1lbnNpb25BdHRyaWJ1dGVzOiBEaW1lbnNpb25UeXBlW10gPSBbXSxcblx0XHRcdG1lYXN1cmVBdHRyaWJ1dGVzOiBNZWFzdXJlVHlwZVtdID0gW107XG5cdFx0KGNoYXJ0U3RhdGUuaXRlbXMgPz8gW10pLmZvckVhY2goKGl0ZW06IEl0ZW1zKSA9PiB7XG5cdFx0XHRpdGVtLm5hbWUgPSB0aGlzLmdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyhpdGVtLm5hbWUpO1xuXHRcdFx0Y29uc3Qgcm9sZSA9IGl0ZW0ucm9sZT8ubGVuZ3RoXG5cdFx0XHRcdD8gaXRlbS5yb2xlLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgaXRlbS5yb2xlPy5zdWJzdHJpbmcoMSwgaXRlbS5yb2xlLmxlbmd0aClcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRpZiAoaXRlbS5yb2xlID09PSBcImNhdGVnb3J5XCIgfHwgaXRlbS5yb2xlID09PSBcInNlcmllc1wiIHx8IGl0ZW0ucm9sZSA9PT0gXCJjYXRlZ29yeTJcIikge1xuXHRcdFx0XHRkaW1lbnNpb25zLnB1c2goaXRlbS5uYW1lKTtcblx0XHRcdFx0ZGltZW5zaW9uQXR0cmlidXRlcy5wdXNoKHtcblx0XHRcdFx0XHREaW1lbnNpb246IGl0ZW0ubmFtZSxcblx0XHRcdFx0XHRSb2xlOiBgY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnREaW1lbnNpb25Sb2xlVHlwZS8ke3JvbGV9YFxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1lYXN1cmVzLnB1c2goaXRlbS5uYW1lKTtcblx0XHRcdFx0bWVhc3VyZUF0dHJpYnV0ZXMucHVzaCh7IE1lYXN1cmU6IGl0ZW0ubmFtZSwgUm9sZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydERpbWVuc2lvblJvbGVUeXBlL1wiICsgcm9sZSB9KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGNvbnN0IGNoYXJ0Vml6OiBWaXN1YWxpemF0aW9uID0ge1xuXHRcdFx0Q29udGVudDoge1xuXHRcdFx0XHRDaGFydFR5cGU6IGNoYXJ0VHlwZSxcblx0XHRcdFx0RGltZW5zaW9uQXR0cmlidXRlczogZGltZW5zaW9uQXR0cmlidXRlcyxcblx0XHRcdFx0RGltZW5zaW9uczogZGltZW5zaW9ucyxcblx0XHRcdFx0TWVhc3VyZUF0dHJpYnV0ZXM6IG1lYXN1cmVBdHRyaWJ1dGVzLFxuXHRcdFx0XHRNZWFzdXJlczogbWVhc3VyZXNcblx0XHRcdH0sXG5cdFx0XHRUeXBlOiBcIkNoYXJ0XCJcblx0XHR9O1xuXHRcdGNvbnN0IGNoYXJ0UFYgPSBuZXcgUHJlc2VudGF0aW9uVmFyaWFudCgpO1xuXHRcdGNoYXJ0UFYuc2V0Q2hhcnRWaXN1YWxpemF0aW9uKGNoYXJ0Vml6KTtcblx0XHRjaGFydFBWLnNldFByb3BlcnRpZXMoe1xuXHRcdFx0U29ydE9yZGVyOiBzb3J0T3JkZXIgPz8gW11cblx0XHR9KTtcblx0XHRyZXR1cm4gY2hhcnRQVjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IHRoYXQgaXMgY3VycmVudGx5IGFwcGxpZWQgb24gdGhlIGNoYXJ0LlxuXHQgKiBAcmV0dXJucyBUaGUgcHJlc2VudGF0aW9uIHZhcmlhbnQge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlByZXNlbnRhdGlvblZhcmlhbnR9IGFwcGxpZWQgdG8gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cblx0YXN5bmMgZ2V0UHJlc2VudGF0aW9uVmFyaWFudCgpOiBQcm9taXNlPFByZXNlbnRhdGlvblZhcmlhbnQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgY2hhcnRTdGF0ZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50KTtcblx0XHRcdHJldHVybiB0aGlzLl9jb252ZXJ0U3RhdGVVdGlsVG9QcmVzZW50YXRpb25WYXJpYW50KGNoYXJ0U3RhdGUpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRjb25zdCBpZDogc3RyaW5nID0gdGhpcy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcblx0XHRcdExvZy5lcnJvcihgQ2hhcnQgQnVpbGRpbmcgQmxvY2sgKCR7aWR9KSAtIGdldCBwcmVzZW50YXRpb24gdmFyaWFudCBmYWlsZWQgOiAke21lc3NhZ2V9YCk7XG5cdFx0XHR0aHJvdyBFcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBwcmVzZW50YXRpb24gdmFyaWFudCBmb3IgdGhlIG1kYyBjaGFydC5cblx0ICpcblx0ICogVGhlIGpzb24gZm9ybWF0IHJldHJpZXZlZCBieSB1c2luZyB0aGUgZ2V0IFByZXNlbnRhdGlvblZhcmlhbnQgYnV0dG9uIGluIHRoZSBsaW5rZWQgRlBNIHNhbXBsZSBzaG91bGQgYmUgZm9sbG93ZWQgd2hpbGUgdHJ5aW5nIHRvIHNldCB0aGUgUHJlc2VudGF0aW9uVmFyaWFudCBhcyBuZWVkZWQuXG5cdCAqIFRoZSB2YWx1ZXMgZGltZW5zaW9ucywgbWVhc3VyZXMgYW5kIG90aGVyIHByb3BlcnRpZXMgc2hvdWxkIGFsc28gYmUgZ2l2ZW4gaW4gdGhlIHZhbGlkIGZvcm1hdCBhbmQgbnVsbCBvciBlbXB0eSB2YWx1ZXMgc2hvdWxkIGJlIGF2b2lkZWQuXG5cdCAqIE9uZSBkaW1lbnNpb24gYXR0cmlidXRlIHNob3VsZCBoYXZlIG9ubHkgb25lIHJvbGUgYXNzb2NpYXRlZCB3aXRoIGl0IG9uIGEgZ2l2ZW4gY2hhcnQuXG5cdCAqIEBwYXJhbSBwcmVzZW50YXRpb25WYXJpYW50IHRoZSBwcmVzZW50YXRpb24gdmFyaWFudCB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uUHJlc2VudGF0aW9uVmFyaWFudH0gdG8gYmUgc2V0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cblx0YXN5bmMgc2V0UHJlc2VudGF0aW9uVmFyaWFudChwcmVzZW50YXRpb25WYXJpYW50OiBQcmVzZW50YXRpb25WYXJpYW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGNoYXJ0ID0gdGhpcy5jb250ZW50O1xuXHRcdFx0Y29uc3QgZXhpc3RpbmdQcmVzZW50YXRpb25WYXJpYW50ID0gYXdhaXQgdGhpcy5nZXRQcmVzZW50YXRpb25WYXJpYW50KCk7XG5cdFx0XHRjb25zdCBwcm9wZXJ0aWVzSW5mbyA9IChhd2FpdCAoY2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkgYXMgQ2hhcnREZWxlZ2F0ZSk/LmZldGNoUHJvcGVydGllcyhjaGFydCkpIGFzIFByb3BlcnR5SW5mb1tdO1xuXG5cdFx0XHRjb25zdCBzdGF0ZVV0aWxQdiA9IFByZXNlbnRhdGlvblZhcmlhbnRUb1N0YXRlVXRpbHNQVi5jb252ZXJ0UHZUb1N0YXRlVXRpbFB2KFxuXHRcdFx0XHRwcmVzZW50YXRpb25WYXJpYW50LFxuXHRcdFx0XHRleGlzdGluZ1ByZXNlbnRhdGlvblZhcmlhbnQsXG5cdFx0XHRcdHByb3BlcnRpZXNJbmZvXG5cdFx0XHQpO1xuXG5cdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNoYXJ0LCBzdGF0ZVV0aWxQdik7XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKGBGRTogQ2hhcnQgQnVpbGRpbmcgQmxvY2sgc2V0UHJlc2VudGF0aW9uVmFyaWFudCBBUEkgZmFpbGVkIHdpdGggZXJyb3I6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBrZXkgb2YgdGhlIGN1cnJlbnQgdmFyaWFudCBpbiB0aGUgYXNzb2NpYXRlZCB2YXJpYW50IG1hbmFnZW1lbnQuXG5cdCAqIEByZXR1cm5zIFZhcmlhbnQga2V5IG9mIHtAbGluayBzYXAudWkuZmwudmFyaWFudHMuVmFyaWFudE1hbmFnZW1lbnR9IGFwcGxpZWQgdG8gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldEN1cnJlbnRWYXJpYW50S2V5KCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpLmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFyaWFudCBvZiB0aGUgcHJvdmlkZWQga2V5IGluIHRoZSBhc3NvY2lhdGVkIHZhcmlhbnQgbWFuYWdlbWVudC5cblx0ICogQHBhcmFtIGtleSBUaGUgdmFyaWFudCBrZXkgb2Yge0BsaW5rIHNhcC51aS5mbC52YXJpYW50cy5WYXJpYW50TWFuYWdlbWVudH0gdG8gYmUgc2V0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNldEN1cnJlbnRWYXJpYW50S2V5KGtleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpO1xuXHRcdHZhcmlhbnRNYW5hZ2VtZW50LnNldEN1cnJlbnRWYXJpYW50S2V5KGtleSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzZWxlY3Rpb24gdmFyaWFudCBmcm9tIHRoZSBjaGFydC5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBnZXRTZWxlY3Rpb25WYXJpYW50KCk6IFByb21pc2U8U2VsZWN0aW9uVmFyaWFudD4ge1xuXHRcdHJldHVybiBTdGF0ZUhlbHBlci5nZXRTZWxlY3Rpb25WYXJpYW50KHRoaXMuY29udGVudCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0gdG8gdGhlIGNoYXJ0LiBOb3RlOiBzZXRTZWxlY3Rpb25WYXJpYW50IHdpbGwgY2xlYXIgZXhpc3RpbmcgZmlsdGVycyBhbmQgdGhlbiBhcHBseSB0aGUgU2VsZWN0aW9uVmFyaWFudCB2YWx1ZXMuXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFRoZSB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0gdG8gYXBwbHkgdG8gdGhlIGNoYXJ0XG5cdCAqIEBwYXJhbSBwcmVmaWxsRGVzY3JpcHRpb25zIE9wdGlvbmFsLiBJZiB0cnVlLCB3ZSB3aWxsIHVzZSB0aGUgYXNzb2NpYXRlZCB0ZXh0IHByb3BlcnR5IHZhbHVlcyAoaWYgdGhleSdyZSBhdmFpbGFibGUgaW4gdGhlIFNlbGVjdGlvblZhcmlhbnQpIHRvIGRpc3BsYXkgdGhlIGZpbHRlciB2YWx1ZSBkZXNjcmlwdGlvbnMsIGluc3RlYWQgb2YgbG9hZGluZyB0aGVtIGZyb20gdGhlIGJhY2tlbmRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGZvciBhc3luY2hyb25vdXMgaGFuZGxpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgc2V0U2VsZWN0aW9uVmFyaWFudChzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LCBwcmVmaWxsRGVzY3JpcHRpb25zID0gZmFsc2UpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRyZXR1cm4gU3RhdGVIZWxwZXIuc2V0U2VsZWN0aW9uVmFyaWFudFRvTWRjQ29udHJvbCh0aGlzLmdldENvbnRlbnQoKSwgc2VsZWN0aW9uVmFyaWFudCwgcHJlZmlsbERlc2NyaXB0aW9ucyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb250cm9sIHN0YXRlIGJhc2VkIG9uIHRoZSBnaXZlbiBjb250cm9sIHN0YXRlIGtleS5cblx0ICogQHBhcmFtIGNvbnRyb2xTdGF0ZSBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY29udHJvbC5cblx0ICogQHJldHVybnMgLSBUaGUgZnVsbCBzdGF0ZSBvZiB0aGUgY29udHJvbCBhbG9uZyB3aXRoIHRoZSBpbml0aWFsIHN0YXRlIGlmIGF2YWlsYWJsZS5cblx0ICovXG5cdGdldENvbnRyb2xTdGF0ZShjb250cm9sU3RhdGU6IENvbnRyb2xTdGF0ZSk6IENvbnRyb2xTdGF0ZSB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnRyb2xTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB0aGlzLmluaXRpYWxDb250cm9sU3RhdGU7XG5cdFx0aWYgKGNvbnRyb2xTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0ZnVsbFN0YXRlOiBjb250cm9sU3RhdGUgYXMgb2JqZWN0LFxuXHRcdFx0XHRpbml0aWFsU3RhdGU6IGluaXRpYWxDb250cm9sU3RhdGUgYXMgb2JqZWN0XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gY29udHJvbFN0YXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGNvbnRyb2wgYnkgcmV0cmlldmluZyB0aGUgZXh0ZXJuYWwgc3RhdGUuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGluaXRpYWwgc3RhdGUgaXMgc2V0LlxuXHQgKi9cblx0YXN5bmMgc2V0SW5pdGlhbFN0YXRlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0dGhpcy5pbml0aWFsQ29udHJvbFN0YXRlID0gaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHR9IGNhdGNoIChlOiB1bmtub3duKSB7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBc3luY2hyb25vdXNseSByZXRyaWV2ZXMgdGhlIHN0YXRlIG9mIHRoZSBjaGFydCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmlld3N0YXRlLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY2hhcnQgc3RhdGUgb3IgbnVsbCBpZiBub3QgZm91bmQuXG5cdCAqL1xuXHRhc3luYyByZXRyaWV2ZVN0YXRlKCk6IFByb21pc2U8Q2hhcnRTdGF0ZSB8IG51bGw+IHtcblx0XHRjb25zdCBjaGFydFN0YXRlOiBDaGFydFN0YXRlID0ge307XG5cdFx0Y2hhcnRTdGF0ZS5pbm5lckNoYXJ0ID0gdGhpcy5nZXRDb250cm9sU3RhdGUoYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQpKSBhcyBvYmplY3Q7XG5cdFx0Y29uc3QgdmFyaWFudFRvUmV0cmlldmUgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpPy5nZXRJZCgpO1xuXHRcdGlmICh2YXJpYW50VG9SZXRyaWV2ZSkge1xuXHRcdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnRDb250cm9sID0gdGhpcy5jb250ZW50LmdldFZhcmlhbnQoKTtcblx0XHRcdGlmICghY2hhcnRTdGF0ZS52YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0XHRjaGFydFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50ID0geyB2YXJpYW50SWQ6IHZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbD8uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKSB9O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2hhcnRTdGF0ZS52YXJpYW50TWFuYWdlbWVudC52YXJpYW50SWQgPSB2YXJpYW50TWFuYWdlbWVudENvbnRyb2w/LmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjaGFydFN0YXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgdGhlIGxlZ2FjeSBzdGF0ZSB0byB0aGUgY2hhcnQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbnRyb2wgc3RhdGUgcmV0cmlldmFsIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gZ2V0Q29udHJvbFN0YXRlIEZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBjb250cm9sIHN0YXRlLlxuXHQgKiBAcGFyYW0gW19uYXZQYXJhbWV0ZXJzXSBPcHRpb25hbCBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMuXG5cdCAqIEBwYXJhbSBbc2hvdWxkQXBwbHlEaWZmU3RhdGVdIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIGFwcGx5IHRoZSBkaWZmIHN0YXRlLlxuXHQgKiBAcmV0dXJucyAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHN0YXRlIGhhcyBiZWVuIGFwcGxpZWQuXG5cdCAqL1xuXHRhc3luYyBhcHBseUxlZ2FjeVN0YXRlKFxuXHRcdGdldENvbnRyb2xTdGF0ZTogKGNvbnRyb2w6IE1hbmFnZWRPYmplY3QpID0+IENvbnRyb2xTdGF0ZSxcblx0XHRfbmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsXG5cdFx0c2hvdWxkQXBwbHlEaWZmU3RhdGU/OiBib29sZWFuXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGNoYXJ0ID0gdGhpcy5jb250ZW50O1xuXHRcdGNvbnN0IHZtID0gY2hhcnQuZ2V0VmFyaWFudCgpO1xuXG5cdFx0Y29uc3QgY2hhcnRTdGF0ZSA9IGdldENvbnRyb2xTdGF0ZShjaGFydCkgYXMgeyBpbml0aWFsU3RhdGU/OiBDaGFydFN0YXRlOyBmdWxsU3RhdGU/OiBDaGFydFN0YXRlIH07XG5cdFx0Y29uc3Qgdm1TdGF0ZSA9IHZtID8gZ2V0Q29udHJvbFN0YXRlKHZtKSA6IG51bGw7XG5cblx0XHRjb25zdCBjb250cm9sU3RhdGU6IENoYXJ0U3RhdGUgPSB7fTtcblxuXHRcdGlmIChjaGFydFN0YXRlKSB7XG5cdFx0XHRjb250cm9sU3RhdGUuaW5uZXJDaGFydCA9IHtcblx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyQ2hhcnQsXG5cdFx0XHRcdC4uLmNoYXJ0U3RhdGUsXG5cdFx0XHRcdGZ1bGxTdGF0ZToge1xuXHRcdFx0XHRcdC4uLmNvbnRyb2xTdGF0ZS5pbm5lckNoYXJ0Py5mdWxsU3RhdGUsXG5cdFx0XHRcdFx0Li4uY2hhcnRTdGF0ZS5mdWxsU3RhdGVcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5pdGlhbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyQ2hhcnQ/LmluaXRpYWxTdGF0ZSxcblx0XHRcdFx0XHQuLi5jaGFydFN0YXRlLmluaXRpYWxTdGF0ZVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGlmICh2bVN0YXRlPy52YXJpYW50SWQpIHtcblx0XHRcdGNvbnRyb2xTdGF0ZS52YXJpYW50TWFuYWdlbWVudCA9IHtcblx0XHRcdFx0Li4uY29udHJvbFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50LFxuXHRcdFx0XHR2YXJpYW50SWQ6IHZtU3RhdGUudmFyaWFudElkLnRvU3RyaW5nKClcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0aWYgKGNvbnRyb2xTdGF0ZSAmJiBPYmplY3Qua2V5cyhjb250cm9sU3RhdGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuYXBwbHlTdGF0ZShjb250cm9sU3RhdGUgYXMgQ29udHJvbFN0YXRlLCBfbmF2UGFyYW1ldGVycywgc2hvdWxkQXBwbHlEaWZmU3RhdGUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBc3luY2hyb25vdXNseSBhcHBsaWVzIHRoZSBwcm92aWRlZCBjb250cm9sIHN0YXRlIHRvIHRoZSB2aWV3c3RhdGUuXG5cdCAqIEBwYXJhbSBjb250cm9sU3RhdGUgVGhlIHN0YXRlIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBbX25hdlBhcmFtZXRlcnNdIE9wdGlvbmFsIG5hdmlnYXRpb24gcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIFtzaG91bGRBcHBseURpZmZTdGF0ZV0gT3B0aW9uYWwgZmxhZyB0byBza2lwIG1lcmdpbmcgc3RhdGVzLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzdGF0ZSBoYXMgYmVlbiBhcHBsaWVkLlxuXHQgKi9cblx0YXN5bmMgYXBwbHlTdGF0ZShjb250cm9sU3RhdGU6IENoYXJ0U3RhdGUsIF9uYXZQYXJhbWV0ZXJzPzogTmF2aWdhdGlvblBhcmFtZXRlciwgc2hvdWxkQXBwbHlEaWZmU3RhdGU/OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCFjb250cm9sU3RhdGUpIHJldHVybjtcblxuXHRcdGNvbnN0IHZhcmlhbnRJZCA9IGNvbnRyb2xTdGF0ZS52YXJpYW50TWFuYWdlbWVudD8udmFyaWFudElkO1xuXHRcdGNvbnN0IGN1cnJlbnRWYXJpYW50ID0gdGhpcy5jb250ZW50Py5nZXRWYXJpYW50KCk7XG5cblx0XHQvLyBIYW5kbGUgVmFyaWFudCBNYW5hZ2VtZW50XG5cdFx0aWYgKHZhcmlhbnRJZCAhPT0gdW5kZWZpbmVkICYmIHZhcmlhbnRJZCAhPT0gY3VycmVudFZhcmlhbnQuZ2V0Q3VycmVudFZhcmlhbnRLZXkoKSkge1xuXHRcdFx0Y29uc3Qgb3ZNID0gdGhpcy5jb250ZW50Py5nZXRWYXJpYW50KCk7XG5cdFx0XHRjb25zdCBhVmFyaWFudHMgPSBvdk0/LmdldFZhcmlhbnRzKCk7XG5cdFx0XHRjb25zdCBzVmFyaWFudFJlZmVyZW5jZSA9IGFWYXJpYW50cz8uc29tZSgob1ZhcmlhbnQpID0+IG9WYXJpYW50LmdldEtleSgpID09PSB2YXJpYW50SWQpXG5cdFx0XHRcdD8gdmFyaWFudElkXG5cdFx0XHRcdDogb3ZNPy5nZXRTdGFuZGFyZFZhcmlhbnRLZXk7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBDb250cm9sVmFyaWFudEFwcGx5QVBJID0gKGF3YWl0IGltcG9ydChcInNhcC91aS9mbC9hcHBseS9hcGkvQ29udHJvbFZhcmlhbnRBcHBseUFQSVwiKSkuZGVmYXVsdDtcblx0XHRcdFx0YXdhaXQgQ29udHJvbFZhcmlhbnRBcHBseUFQSS5hY3RpdmF0ZVZhcmlhbnQoe1xuXHRcdFx0XHRcdGVsZW1lbnQ6IG92TSxcblx0XHRcdFx0XHR2YXJpYW50UmVmZXJlbmNlOiBzVmFyaWFudFJlZmVyZW5jZSBhcyBzdHJpbmdcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGF3YWl0IHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdFx0YXdhaXQgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gd2UgbmVlZCB0byB1cGRhdGUgaW5pdGlhbCBzdGF0ZSBldmVuIGlmIGFib3ZlIGNvbmRpdGlvbiBub3Qgc2F0aXNmaWVkXG5cdFx0XHRhd2FpdCB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBJbm5lciBDaGFydCBTdGF0ZVxuXHRcdGNvbnN0IGlubmVyQ2hhcnRTdGF0ZSA9IGNvbnRyb2xTdGF0ZS5pbm5lckNoYXJ0O1xuXHRcdGxldCBmaW5hbFN0YXRlO1xuXG5cdFx0aWYgKGlubmVyQ2hhcnRTdGF0ZSkge1xuXHRcdFx0aWYgKHNob3VsZEFwcGx5RGlmZlN0YXRlICYmIGlubmVyQ2hhcnRTdGF0ZS5pbml0aWFsU3RhdGUpIHtcblx0XHRcdFx0ZmluYWxTdGF0ZSA9IGF3YWl0IFN0YXRlVXRpbC5kaWZmU3RhdGUoXG5cdFx0XHRcdFx0dGhpcy5jb250ZW50LFxuXHRcdFx0XHRcdGlubmVyQ2hhcnRTdGF0ZS5pbml0aWFsU3RhdGUgYXMgb2JqZWN0LFxuXHRcdFx0XHRcdGlubmVyQ2hhcnRTdGF0ZS5mdWxsU3RhdGUgYXMgb2JqZWN0XG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmaW5hbFN0YXRlID0gaW5uZXJDaGFydFN0YXRlLmZ1bGxTdGF0ZTtcblx0XHRcdH1cblx0XHRcdGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50LCBmaW5hbFN0YXRlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGVkIGJ5IHRoZSBNREMgc3RhdGUgdXRpbCB3aGVuIHRoZSBzdGF0ZSBmb3IgdGhpcyBjb250cm9sJ3MgY2hpbGQgaGFzIGNoYW5nZWQuXG5cdCAqL1xuXHRoYW5kbGVTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdH1cblxuXHRfY3JlYXRlQ29udGVudCgpOiB2b2lkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKG93bmVyPy5pc0E8VGVtcGxhdGVDb21wb25lbnQ+KFwic2FwLmZlLmNvcmUuVGVtcGxhdGVDb21wb25lbnRcIikpIHtcblx0XHRcdC8vIFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBjdXJyZW50IGZpbHRlciBmcm9tIHRoZSBvbGQgKHRvIGJlIGRlc3Ryb3llZCkgQ2hhcnQgaW5zdGFuY2UgYmVjYXVzZSBpZiB3ZSBkb24ndCB0aGVuIGZvciBzb21lIHN0cmFuZ2UgcmVhc29uLCB0aGUgb2xkIENoYXJ0IGluc3RhbmNlIHVzZWQgdG9cblx0XHRcdC8vIHJlYWN0IGZvciBmaWx0ZXIgYmFyIGFjdGlvbiwgZm9yIGV4YW1wbGUsIG9uIENsaWNrIG9mIEdvLlxuXHRcdFx0dGhpcy5jb250ZW50LnNldEZpbHRlcihcIlwiKTtcblx0XHRcdHRoaXMuY29udGVudC5kZXN0cm95KCk7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHRzZXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRQcm9wZXJ0aWVzKCkpLmluY2x1ZGVzKGtleSkpIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIHRydWUpO1xuXHRcdFx0dGhpcy5fY3JlYXRlQ29udGVudCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5zZXRQcm9wZXJ0eShrZXksIHZhbHVlLCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHJlbW92ZUFnZ3JlZ2F0aW9uKG5hbWU6IHN0cmluZywgdmFsdWU6IE1hbmFnZWRPYmplY3QgfCBudW1iZXIgfCBzdHJpbmcsIHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiBNYW5hZ2VkT2JqZWN0IHwgbnVsbCB7XG5cdFx0bGV0IHJlbW92ZWQ6IE1hbmFnZWRPYmplY3QgfCBudWxsO1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBZ2dyZWdhdGlvbnMoKSkuaW5jbHVkZXMobmFtZSkpIHtcblx0XHRcdHJlbW92ZWQgPSBzdXBlci5yZW1vdmVBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHRcdHRoaXMuX2NyZWF0ZUNvbnRlbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVtb3ZlZCA9IHN1cGVyLnJlbW92ZUFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVtb3ZlZDtcblx0fVxuXG5cdGFkZEFnZ3JlZ2F0aW9uKG5hbWU6IHN0cmluZywgdmFsdWU6IE1hbmFnZWRPYmplY3QsIHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB0aGlzIHtcblx0XHRpZiAoIXRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldEFnZ3JlZ2F0aW9ucygpKS5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdFx0c3VwZXIuYWRkQWdncmVnYXRpb24obmFtZSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLmFkZEFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGluc2VydEFnZ3JlZ2F0aW9uKG5hbWU6IHN0cmluZywgdmFsdWU6IE1hbmFnZWRPYmplY3QsIGluZGV4OiBudW1iZXIsIHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB0aGlzIHtcblx0XHRpZiAoIXRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldEFnZ3JlZ2F0aW9ucygpKS5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdFx0c3VwZXIuaW5zZXJ0QWdncmVnYXRpb24obmFtZSwgdmFsdWUsIGluZGV4LCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdFx0dGhpcy5fY3JlYXRlQ29udGVudCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5pbnNlcnRBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgaW5kZXgsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0Y3JlYXRlQ29udGVudCgpOiBNRENDaGFydCB7XG5cdFx0cmV0dXJuIGdldE1kY0NoYXJ0VGVtcGxhdGUoXG5cdFx0XHR0aGlzLFxuXHRcdFx0dGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKT8uZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgPz8gKHRoaXMuX2dldE93bmVyKCk/LmdldFZpZXdEYXRhKCkgYXMgdW5rbm93biBhcyBWaWV3RGF0YSksXG5cdFx0XHR0aGlzLmdldEFwcENvbXBvbmVudCgpPy5nZXREaWFnbm9zdGljcygpID8/ICh7fSBhcyBEaWFnbm9zdGljcyksXG5cdFx0XHR0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPENoYXJ0Q29udGV4dE9iamVjdFBhdGg+KHRoaXMubWV0YVBhdGgsIHRoaXMuY29udGV4dFBhdGgpIVxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE0RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBZEEsSUFnQnFCQSxLQUFLLElBQUFDLElBQUEsR0FEekJDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRTtJQUFFQyxXQUFXLEVBQUUsQ0FBQyx3QkFBd0I7RUFBRSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUVqRkMsa0JBQWtCLENBQUMsa0VBQWtFLENBQUMsRUFBQUMsS0FBQSxHQUt0RkQsa0JBQWtCLENBQUMsMERBQTBELENBQUMsRUFBQUUsS0FBQSxHQXdCOUVDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU81QkYsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRSxRQUFRO0lBQ2RFLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFDO0lBQzdFQyxtQkFBbUIsRUFBRSxDQUNwQixrQ0FBa0MsRUFDbEMsZ0RBQWdELEVBQ2hELHlEQUF5RDtFQUUzRCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU9ETixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEUsUUFBUSxFQUFFLElBQUk7SUFD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LGFBQUEsR0FBQTZRLHlCQUFBLENBQUFoVSxPQUFBLENBQUFJLFNBQUEsY0FBQXJCLE1BQUE7SUFBQWtWLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBaFIsYUFBQSxHQUFBNFEseUJBQUEsQ0FBQWhVLE9BQUEsQ0FBQUksU0FBQSxzQkFBQWhCLE1BQUE7SUFBQTZVLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBL1EsYUFBQSxHQUFBMlEseUJBQUEsQ0FBQWhVLE9BQUEsQ0FBQUksU0FBQSw0QkFBQWQsTUFBQTtJQUFBMlUsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE5USxhQUFBLEdBQUEwUSx5QkFBQSxDQUFBaFUsT0FBQSxDQUFBSSxTQUFBLHNCQUFBYixNQUFBO0lBQUEwVSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTdRLGFBQUEsR0FBQXlRLHlCQUFBLENBQUFoVSxPQUFBLENBQUFJLFNBQUEsbUJBQUFaLE1BQUE7SUFBQXlVLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBNVEsYUFBQSxHQUFBd1EseUJBQUEsQ0FBQWhVLE9BQUEsQ0FBQUksU0FBQSw2QkFBQVgsTUFBQTtJQUFBd1UsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFKLHlCQUFBLENBQUFoVSxPQUFBLENBQUFJLFNBQUEsNEJBQUFWLE1BQUEsR0FBQXdILE1BQUEsQ0FBQXFOLHdCQUFBLENBQUF2VSxPQUFBLENBQUFJLFNBQUEsNEJBQUFKLE9BQUEsQ0FBQUksU0FBQSxHQUFBNFQseUJBQUEsQ0FBQWhVLE9BQUEsQ0FBQUksU0FBQSw4QkFBQVIsTUFBQSxHQUFBc0gsTUFBQSxDQUFBcU4sd0JBQUEsQ0FBQXZVLE9BQUEsQ0FBQUksU0FBQSw4QkFBQUosT0FBQSxDQUFBSSxTQUFBLEdBQUE0VCx5QkFBQSxDQUFBaFUsT0FBQSxDQUFBSSxTQUFBLDRCQUFBUCxNQUFBLEdBQUFxSCxNQUFBLENBQUFxTix3QkFBQSxDQUFBdlUsT0FBQSxDQUFBSSxTQUFBLDRCQUFBSixPQUFBLENBQUFJLFNBQUEsSUFBQUosT0FBQSxNQUFBRCxNQUFBO0VBQUEwRCxRQUFBLEdBQUF4RyxLQUFBO0VBQUEsT0FBQXdHLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
967
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsIl9kZWM0IiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzUiLCJyZXF1aXJlZCIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiZGVmYXVsdFZhbHVlIiwiX2RlYzkiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiYXNzb2NpYXRpb24iLCJfZGVjMTciLCJhZ2dyZWdhdGlvbiIsIl9kZWMxOCIsImFsdFR5cGVzIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJBY3Rpb24iLCJfZGVjMTkiLCJldmVudCIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsInhtbEV2ZW50SGFuZGxlciIsIl9kZWMyNSIsIl9kZWMyNiIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9NYWNyb0FQSSIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0U2VjdGlvbkNvbnRlbnRSb2xlIiwic2VuZERhdGFUb0NvbnN1bWVyIiwiY29uc3VtZXJEYXRhIiwiX3RoaXMkY29udGVudCIsIl90aGlzJGNvbnRlbnQyIiwiX3RoaXMkY29udGVudDMiLCJjb250ZW50Iiwic2V0SGVhZGVyIiwidGl0bGUiLCJzZXRIZWFkZXJTdHlsZSIsInNldEhlYWRlckxldmVsIiwidGl0bGVMZXZlbCIsImdldFNlbGVjdGVkQ29udGV4dHMiLCJfdGhpcyRjb250ZW50NCIsIl90aGlzJGNvbnRlbnQ0JGdldEJpbiIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiX2FwcGx5SWRUb0NvbnRlbnQiLCJpZCIsImdlbmVyYXRlIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJwcmV2RHJpbGxTdGFjayIsImluaXRpYWxDb250cm9sU3RhdGUiLCJjaGFydEFjdGlvbnMiLCJfY29tbWFuZEFjdGlvbnMiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9leHBvcnRzIiwiaXNBIiwidHlwZU5hbWUiLCJvbGRWYWxpZFR5cGUiLCJBcnJheSIsImlzQXJyYXkiLCJpbmNsdWRlcyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJjcmVhdGVDb250ZW50Iiwib25BZnRlclJlbmRlcmluZyIsImFmdGVyUmVuZGVyaW5nRXZlbnQiLCJfdGhpcyRnZXRQYWdlQ29udHJvbGwiLCJ2aWV3IiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRWaWV3IiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJjaGFydCIsImdldENvbnRlbnQiLCJzaG93TWVzc2FnZVN0cmlwIiwic0NoYXJ0RW50aXR5UGF0aCIsImRhdGEiLCJzQ2FjaGVLZXkiLCJvQmluZGluZ0NvbnRleHQiLCJnZXRPYmplY3QiLCJzZXRQcm9wZXJ0eSIsImF0dGFjaFN0YXRlQ2hhbmdlSGFuZGxlciIsIlN0YXRlVXRpbCIsImRldGFjaFN0YXRlQ2hhbmdlIiwic3RhdGVDaGFuZ2VIYW5kbGVyIiwiYXR0YWNoU3RhdGVDaGFuZ2UiLCJvRXZlbnQiLCJjb250cm9sIiwiZ2V0UGFyYW1ldGVyIiwiY2hhcnRCbG9jayIsImdldFBhcmVudCIsImhhbmRsZVN0YXRlQ2hhbmdlIiwicmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMiLCJvRmlsdGVyQ29udHJvbCIsIm9DaGFydCIsIkZpbHRlclV0aWxzIiwiZ2V0Tm90QXBwbGljYWJsZUZpbHRlcnMiLCJoYW5kbGVTZWxlY3Rpb25DaGFuZ2UiLCJhRGF0YSIsImJTZWxlY3RlZCIsIkNoYXJ0UnVudGltZSIsImZuVXBkYXRlQ2hhcnQiLCJmaXJlRXZlbnQiLCJtZXJnZSIsInNlbGVjdGVkIiwib25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQiLCJjb2xsZWN0QXZhaWxhYmxlQ2FyZHMiLCJjYXJkcyIsImFjdGlvblRvb2xiYXJJdGVtcyIsImdldEFjdGlvbnMiLCJoYXNJbnNpZ2h0QWN0aW9uRW5hYmxlZCIsImdldEZpbHRlciIsImNhcmQiLCJnZXRDYXJkTWFuaWZlc3RDaGFydCIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJwdXNoIiwiZ2V0Q2hhcnRDb250cm9sIiwiZ2V0SGVhZGVyIiwiY2FsbGJhY2siLCJvbkFkZENhcmRUb0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FsbGJhY2siLCJiaW5kIiwiaGFzU2VsZWN0aW9ucyIsIm1kY0NoYXJ0IiwiX21kY0NoYXJ0JGdldENvbnRyb2xEIiwiZ2V0Q29udHJvbERlbGVnYXRlIiwiZ2V0SW5uZXJDaGFydCIsImFEaW1lbnNpb25zIiwiQ2hhcnRVdGlscyIsImdldERpbWVuc2lvbnNGcm9tRHJpbGxTdGFjayIsImJJc0RyaWxsRG93biIsImJJc0RyaWxsVXAiLCJiTm9DaGFuZ2UiLCJ0b1N0cmluZyIsImFGaWx0ZXJzIiwiZ2V0Q2hhcnRTZWxlY3Rpb25zIiwiZXJyIiwiTG9nIiwiZXJyb3IiLCJvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCIsImluc2lnaHRzUGFyYW1zIiwiY3JlYXRlQ2hhcnRDYXJkUGFyYW1zIiwic2hvd0luc2lnaHRzQ2FyZFByZXZpZXciLCJlIiwic2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UiLCJnZXRDYXJkTWFuaWZlc3QiLCJfdGhpcyRnZXRQYWdlQ29udHJvbGwyIiwic2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FyZFByZXZpZXciLCJjb2xsYWJvcmF0aW9uTWFuYWdlciIsImdldFNlcnZpY2UiLCJjaGFydEZpbHRlckluZm8iLCJnZXRBbGxGaWx0ZXJJbmZvIiwiZmlsdGVycyIsImZvckVhY2giLCJmaWx0ZXIiLCJnZXRQYXRoIiwic1BhdGgiLCJnZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMiLCJGaWx0ZXIiLCJhbmQiLCJ1bmRlZmluZWQiLCJnZXRQcm9wZXJ0eURhdGFNb2RlbCIsInByb3BlcnR5TmFtZSIsIm1ldGFQYXRoIiwibWV0YU1vZGVsIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJkaW1lbnNpb25Db250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJjaGFydFByb3BlcnR5IiwiZ2V0SW50ZXJuYWxDaGFydE5hbWVGcm9tUHJvcGVydHlOYW1lQW5kS2luZCIsIm5hbWUiLCJraW5kIiwicmVwbGFjZSIsIl9jb252ZXJ0U3RhdGVVdGlsVG9QcmVzZW50YXRpb25WYXJpYW50IiwiY2hhcnRTdGF0ZSIsIl9jaGFydFN0YXRlJHNvcnRlcnMiLCJfY2hhcnRTdGF0ZSRzdXBwbGVtZW4iLCJfY2hhcnRTdGF0ZSRzdXBwbGVtZW4yIiwic29ydE9yZGVyIiwic29ydGVycyIsIm1hcCIsInNvcnRlciIsIlByb3BlcnR5IiwiRGVzY2VuZGluZyIsImRlc2NlbmRpbmciLCJzdXBwbGVtZW50YXJ5Q29uZmlnIiwicHJvcGVydGllcyIsImNoYXJ0VHlwZSIsImNoYXJ0VHlwZUluUmVxdWlyZWRGb3JtYXQiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiZGltZW5zaW9ucyIsIm1lYXN1cmVzIiwiZGltZW5zaW9uQXR0cmlidXRlcyIsIm1lYXN1cmVBdHRyaWJ1dGVzIiwiaXRlbXMiLCJpdGVtIiwiX2l0ZW0kcm9sZSIsIl9pdGVtJHJvbGUyIiwicm9sZSIsInN1YnN0cmluZyIsIkRpbWVuc2lvbiIsIlJvbGUiLCJNZWFzdXJlIiwiY2hhcnRWaXoiLCJDb250ZW50IiwiQ2hhcnRUeXBlIiwiRGltZW5zaW9uQXR0cmlidXRlcyIsIkRpbWVuc2lvbnMiLCJNZWFzdXJlQXR0cmlidXRlcyIsIk1lYXN1cmVzIiwiVHlwZSIsImNoYXJ0UFYiLCJQcmVzZW50YXRpb25WYXJpYW50Iiwic2V0Q2hhcnRWaXN1YWxpemF0aW9uIiwic2V0UHJvcGVydGllcyIsIlNvcnRPcmRlciIsImdldFByZXNlbnRhdGlvblZhcmlhbnQiLCJyZXRyaWV2ZUV4dGVybmFsU3RhdGUiLCJnZXRJZCIsIm1lc3NhZ2UiLCJFcnJvciIsIlN0cmluZyIsInNldFByZXNlbnRhdGlvblZhcmlhbnQiLCJwcmVzZW50YXRpb25WYXJpYW50IiwiX2NoYXJ0JGdldENvbnRyb2xEZWxlIiwiZXhpc3RpbmdQcmVzZW50YXRpb25WYXJpYW50IiwicHJvcGVydGllc0luZm8iLCJmZXRjaFByb3BlcnRpZXMiLCJzdGF0ZVV0aWxQdiIsIlByZXNlbnRhdGlvblZhcmlhbnRUb1N0YXRlVXRpbHNQViIsImNvbnZlcnRQdlRvU3RhdGVVdGlsUHYiLCJhcHBseUV4dGVybmFsU3RhdGUiLCJnZXRDdXJyZW50VmFyaWFudEtleSIsImdldFZhcmlhbnQiLCJzZXRDdXJyZW50VmFyaWFudEtleSIsImtleSIsInZhcmlhbnRNYW5hZ2VtZW50IiwiZ2V0U2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlSGVscGVyIiwic2V0U2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnQiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwiYXJndW1lbnRzIiwic2V0U2VsZWN0aW9uVmFyaWFudFRvTWRjQ29udHJvbCIsImdldENvbnRyb2xTdGF0ZSIsImNvbnRyb2xTdGF0ZSIsImZ1bGxTdGF0ZSIsImluaXRpYWxTdGF0ZSIsInNldEluaXRpYWxTdGF0ZSIsInJldHJpZXZlU3RhdGUiLCJfdGhpcyRjb250ZW50JGdldFZhcmkiLCJpbm5lckNoYXJ0IiwidmFyaWFudFRvUmV0cmlldmUiLCJ2YXJpYW50TWFuYWdlbWVudENvbnRyb2wiLCJ2YXJpYW50SWQiLCJhcHBseUxlZ2FjeVN0YXRlIiwiX25hdlBhcmFtZXRlcnMiLCJzaG91bGRBcHBseURpZmZTdGF0ZSIsInZtIiwidm1TdGF0ZSIsIl9jb250cm9sU3RhdGUkaW5uZXJDaCIsIl9jb250cm9sU3RhdGUkaW5uZXJDaDIiLCJhcHBseVN0YXRlIiwiX2NvbnRyb2xTdGF0ZSR2YXJpYW50IiwiX3RoaXMkY29udGVudDUiLCJjdXJyZW50VmFyaWFudCIsIl90aGlzJGNvbnRlbnQ2Iiwib3ZNIiwiYVZhcmlhbnRzIiwiZ2V0VmFyaWFudHMiLCJzVmFyaWFudFJlZmVyZW5jZSIsInNvbWUiLCJvVmFyaWFudCIsImdldEtleSIsImdldFN0YW5kYXJkVmFyaWFudEtleSIsIkNvbnRyb2xWYXJpYW50QXBwbHlBUEkiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwiZGVmYXVsdCIsImFjdGl2YXRlVmFyaWFudCIsImVsZW1lbnQiLCJ2YXJpYW50UmVmZXJlbmNlIiwiaW5uZXJDaGFydFN0YXRlIiwiZmluYWxTdGF0ZSIsImRpZmZTdGF0ZSIsIl90aGlzJGdldFBhZ2VDb250cm9sbDMiLCJnZXRFeHRlbnNpb25BUEkiLCJ1cGRhdGVBcHBTdGF0ZSIsIl9jcmVhdGVDb250ZW50Iiwib3duZXIiLCJfZ2V0T3duZXIiLCJzZXRGaWx0ZXIiLCJkZXN0cm95IiwidmFsdWUiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJfYXBwbHlpbmdTZXR0aW5ncyIsImdldE1ldGFkYXRhIiwiZ2V0UHJvcGVydGllcyIsInJlbW92ZUFnZ3JlZ2F0aW9uIiwicmVtb3ZlZCIsImdldEFnZ3JlZ2F0aW9ucyIsImFkZEFnZ3JlZ2F0aW9uIiwiaW5zZXJ0QWdncmVnYXRpb24iLCJpbmRleCIsIl90aGlzJF9nZXRPd25lciIsIl90aGlzJF9nZXRPd25lciRnZXRSbyIsIl90aGlzJF9nZXRPd25lcjIiLCJfdGhpcyRnZXRBcHBDb21wb25lbnQiLCJjb250ZXh0UGF0aCIsIl9yZXNvbHZlZENvbnRleHRQYXRoIiwiZW5kc1dpdGgiLCJnZXRNZGNDaGFydFRlbXBsYXRlIiwiZ2V0Um9vdENvbnRyb2xsZXIiLCJnZXRWaWV3RGF0YSIsImdldEFwcENvbXBvbmVudCIsImdldERpYWdub3N0aWNzIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJNYWNyb0FQSSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIlRpdGxlTGV2ZWwiLCJBdXRvIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDaGFydC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDaGFydCBhcyBWb2NhYnVsYXJ5Q2hhcnQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHR5cGUgQ2hhcnRDaGFydCBmcm9tIFwic2FwL2NoYXJ0L0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBhc3NvY2lhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5LCB4bWxFdmVudEhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25QYXJhbWV0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgdHlwZSBJVmlld1N0YXRlQ29udHJpYnV0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3ZpZXdTdGF0ZS9JVmlld1N0YXRlQ29udHJpYnV0b3JcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydFZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UsIFdyYXBwZWRDYXJkIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSBEaWFnbm9zdGljcyBmcm9tIFwic2FwL2ZlL2NvcmUvc3VwcG9ydC9EaWFnbm9zdGljc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jaGFydC9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgQ2hhcnRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0UnVudGltZVwiO1xuaW1wb3J0IENoYXJ0VXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQ2hhcnRVdGlsc1wiO1xuaW1wb3J0IHR5cGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3VtZXJEYXRhIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvc2VjdGlvbi9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IERpbWVuc2lvblR5cGUsIE1lYXN1cmVUeXBlLCBWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1ByZXNlbnRhdGlvblZhcmlhbnRcIjtcbmltcG9ydCBQcmVzZW50YXRpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9QcmVzZW50YXRpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSB7IENhcmRNYW5pZmVzdCB9IGZyb20gXCJzYXAvaW5zaWdodHMvQ2FyZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgRXZlbnQsIGRlZmF1bHQgYXMgVUk1RXZlbnQgfSBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIExheW91dERhdGEgZnJvbSBcInNhcC91aS9jb3JlL0xheW91dERhdGFcIjtcbmltcG9ydCB7IFRpdGxlTGV2ZWwgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgTURDQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIENoYXJ0RGVsZWdhdGUgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnREZWxlZ2F0ZVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uVG9vbGJhckFjdGlvbiBmcm9tIFwic2FwL3VpL21kYy9hY3Rpb250b29sYmFyL0FjdGlvblRvb2xiYXJBY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgQXBwU3RhdGUsIEl0ZW1zLCBTb3J0ZXJzIH0gZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIE1vZGVsQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwiLi9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCBNYWNyb0FQSSBmcm9tIFwiLi9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25PckFjdGlvbkdyb3VwLCBDaGFydENvbnRleHRPYmplY3RQYXRoLCBDaGFydEN1c3RvbURhdGEsIENvbW1hbmRBY3Rpb24gfSBmcm9tIFwiLi9jaGFydC9NZGNDaGFydFRlbXBsYXRlXCI7XG5pbXBvcnQgeyBnZXRNZGNDaGFydFRlbXBsYXRlIH0gZnJvbSBcIi4vY2hhcnQvTWRjQ2hhcnRUZW1wbGF0ZVwiO1xuaW1wb3J0IFByZXNlbnRhdGlvblZhcmlhbnRUb1N0YXRlVXRpbHNQViBmcm9tIFwiLi9jaGFydC9hZGFwdGVyL0NoYXJ0UHZUb1N0YXRlVXRpbHNcIjtcbmltcG9ydCB7IGNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyB9IGZyb20gXCIuL2luc2lnaHRzL0FuYWx5dGljYWxJbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sU3RhdGUgfSBmcm9tIFwiLi9pbnNpZ2h0cy9Db21tb25JbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHsgaGFzSW5zaWdodEFjdGlvbkVuYWJsZWQsIHNob3dHZW5lcmljRXJyb3JNZXNzYWdlIH0gZnJvbSBcIi4vaW5zaWdodHMvQ29tbW9uSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRDb250ZW50LCBJbnNpZ2h0c1BhcmFtcyB9IGZyb20gXCIuL2luc2lnaHRzL0luc2lnaHRzU2VydmljZVwiO1xuaW1wb3J0IHsgZ2V0Q2FyZE1hbmlmZXN0LCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldywgc2hvd0luc2lnaHRzQ2FyZFByZXZpZXcgfSBmcm9tIFwiLi9pbnNpZ2h0cy9JbnNpZ2h0c1NlcnZpY2VcIjtcbmltcG9ydCBTdGF0ZUhlbHBlciBmcm9tIFwiLi9tZGMvYWRhcHRlci9TdGF0ZUhlbHBlclwiO1xuXG5leHBvcnQgdHlwZSBDaGFydFN0YXRlID0ge1xuXHRpbm5lckNoYXJ0Pzoge1xuXHRcdGluaXRpYWxTdGF0ZT86IHtcblx0XHRcdGl0ZW1zPzogeyBuYW1lOiBzdHJpbmcgfVtdO1xuXHRcdH07XG5cdFx0ZnVsbFN0YXRlPzoge1xuXHRcdFx0aXRlbXM/OiB7IG5hbWU6IHN0cmluZyB9W107XG5cdFx0XHRmaWx0ZXI/OiBvYmplY3Q7XG5cdFx0fTtcblx0fTtcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiB7XG5cdFx0dmFyaWFudElkPzogc3RyaW5nIHwgbnVsbDtcblx0fTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSBjaGFydCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBVc3VhbGx5LCBhIGNvbnRleHRQYXRoIGFuZCBtZXRhUGF0aCBpcyBleHBlY3RlZC5cbiAqXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOkNoYXJ0IGlkPVwiTXlDaGFydFwiIGNvbnRleHRQYXRoPVwiL1Jvb3RFbnRpdHlcIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLkNoYXJ0XG4gKiBAaWdub3JlSW50ZXJmYWNlIHNhcC5mZS5tYWNyb3MuY29udHJvbHMuc2VjdGlvbi5JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXG4gKiBAdWk1LW1ldGFtb2RlbFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLkNoYXJ0XCIsIHsgcmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIl0gfSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYXJ0IGV4dGVuZHMgTWFjcm9BUEkgaW1wbGVtZW50cyBJU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yLCBJVmlld1N0YXRlQ29udHJpYnV0b3I8Q2hhcnRTdGF0ZT4ge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMudmlld1N0YXRlLklWaWV3U3RhdGVDb250cmlidXRvclwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF9mZV9jb3JlX2NvbnRyb2xsZXJleHRlbnNpb25zX3ZpZXdTdGF0ZV9JVmlld1N0YXRlQ29udHJpYnV0b3IgPSB0cnVlO1xuXG5cdGNvbnRlbnQhOiBNRENDaGFydDtcblxuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5zZWN0aW9uLklTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIilcblx0X19pbXBsZW1lbnRzX19zYXBfZmVfbWFjcm9zX2NvbnRyb2xzX3NlY3Rpb25fSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciA9IHRydWU7XG5cblx0Z2V0U2VjdGlvbkNvbnRlbnRSb2xlKCk6IFwicHJvdmlkZXJcIiB8IFwiY29uc3VtZXJcIiB7XG5cdFx0cmV0dXJuIFwiY29uc3VtZXJcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2VuZERhdGFUb0NvbnN1bWVyIG1ldGhvZCB3aGljaCBpcyBhIHBhcnQgb2YgdGhlIElTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3Jcblx0ICpcblx0ICogV2lsbCBiZSBjYWxsZWQgZnJvbSB0aGUgc2FwLmZlLm1hY3Jvcy5jb250cm9scy5TZWN0aW9uIGNvbnRyb2wgd2hlbiB0aGVyZSBpcyBhIENoYXJ0IGJ1aWxkaW5nIGJsb2NrIHJlbmRlcmVkIHdpdGhpbiBhIHNlY3Rpb25cblx0ICogYWxvbmcgd2l0aCB0aGUgY29uc3VtZXJEYXRhIGkuZS4gc2VjdGlvbidzIGRhdGEgc3VjaCBhcyB0aXRsZSBhbmQgdGl0bGUgbGV2ZWwgd2hpY2ggaXMgdGhlbiBhcHBsaWVkIHRvIHRoZSBjaGFydCB1c2luZyB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3cgYWNjb3JkaW5nbHkuXG5cdCAqXG5cdCAqL1xuXG5cdHNlbmREYXRhVG9Db25zdW1lcihjb25zdW1lckRhdGE6IENvbnN1bWVyRGF0YSk6IHZvaWQge1xuXHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyKGNvbnN1bWVyRGF0YS50aXRsZSk7XG5cdFx0dGhpcy5jb250ZW50Py5zZXRIZWFkZXJTdHlsZShcIkg0XCIpO1xuXHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyTGV2ZWwoY29uc3VtZXJEYXRhLnRpdGxlTGV2ZWwgYXMgVGl0bGVMZXZlbCk7XG5cdH1cblxuXHQvKipcblx0ICogSUQgb2YgdGhlIGNoYXJ0XG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHJlYWRvbmx5IGlkITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSBwcmVzZW50YXRpb24gY29udGV4dCAoVUkuQ2hhcnQgd2l0aCBvciB3aXRob3V0IGEgcXVhbGlmaWVyKVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFwiXG5cdFx0XVxuXHR9KVxuXHRyZWFkb25seSBtZXRhUGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgZW50aXR5U2V0IG9yIG5hdmlnYXRpb25Qcm9wZXJ0eVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXVxuXHR9KVxuXHRyZWFkb25seSBjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBoZWFkZXIgdGV4dCB0aGF0IGlzIHNob3duIGluIHRoZSBjaGFydFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHJlYWRvbmx5IGhlYWRlciE6IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgaWYgdGhlIGhlYWRlciB0ZXh0IHNob3VsZCBiZSBzaG93biBvciBub3Rcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9KVxuXHRyZWFkb25seSBoZWFkZXJWaXNpYmxlITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgc2VsZWN0aW9uIG1vZGUgdG8gYmUgdXNlZCBieSB0aGUgY2hhcnQuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgTm9uZWAsIGBTaW5nbGVgIG9yIGBNdWx0aXBsZWBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiBcIk11bHRpcGxlXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIk5vbmVcIiwgXCJTaW5nbGVcIiwgXCJNdWx0aXBsZVwiXSB9KVxuXHRyZWFkb25seSBzZWxlY3Rpb25Nb2RlITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB0aGUga2luZCBvZiB2YXJpYW50IG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIGNoYXJ0LlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlIGlzIGBDb250cm9sYC48YnIvPlxuXHQgKiBJZiBzZXQgd2l0aCB2YWx1ZSBgQ29udHJvbGAsIGEgdmFyaWFudCBtYW5hZ2VtZW50IGNvbnRyb2wgaXMgc2VlbiB3aXRoaW4gdGhlIGNoYXJ0IGFuZCB0aGUgY2hhcnQgaXMgbGlua2VkIHRvIHRoaXMuPGJyLz5cblx0ICogSWYgbm90IHNldCB3aXRoIGFueSB2YWx1ZSwgdmFyaWFudCBtYW5hZ2VtZW50IGNvbnRyb2wgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBjaGFydC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiQ29udHJvbFwiXSB9KVxuXHRyZWFkb25seSB2YXJpYW50TWFuYWdlbWVudCE6IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hpY2ggb3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIGNoYXJ0IHBlcnNvbmFsaXphdGlvbiBkaWFsb2cuXG5cdCAqXG5cdCAqIElmIGl0IGlzIHNldCB0byBgdHJ1ZWAsIGFsbCBwb3NzaWJsZSBvcHRpb25zIGZvciB0aGlzIGtpbmQgb2YgY2hhcnQgYXJlIGVuYWJsZWQuPGJyLz5cblx0ICogSWYgaXQgaXMgc2V0IHRvIGBmYWxzZWAsIHBlcnNvbmFsaXphdGlvbiBpcyBkaXNhYmxlZC48YnIvPlxuXHQgKiA8YnIvPlxuXHQgKiBZb3UgY2FuIGFsc28gcHJvdmlkZSBhIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBmb3IgdGhlIHBlcnNvbmFsaXphdGlvbiBieSBwcm92aWRpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIHRoZSBvcHRpb25zIHlvdSB3YW50IHRvIGJlIGF2YWlsYWJsZS48YnIvPlxuXHQgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6PGJyLz5cblx0ICogLSBTb3J0PGJyLz5cblx0ICogLSBUeXBlPGJyLz5cblx0ICogLSBJdGVtPGJyLz5cblx0ICogLSBGaWx0ZXI8YnIvPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0cmVhZG9ubHkgcGVyc29uYWxpemF0aW9uITogc3RyaW5nIHwgYm9vbGVhbjtcblxuXHQvKipcblx0ICogSGVhZGVyIGxldmVsIG9mIGNoYXJ0XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHJlYWRvbmx5IGhlYWRlckxldmVsOiBUaXRsZUxldmVsID0gVGl0bGVMZXZlbC5BdXRvO1xuXG5cdC8qKlxuXHQgKiBDaGFydCBkZWxlZ2F0ZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRyZWFkb25seSBjaGFydERlbGVnYXRlPzogb2JqZWN0O1xuXG5cdC8qKlxuXHQgKiBVc2VkIGludGVybmFsbHkgZm9yIExSIGFuZCBPUFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cmVhZG9ubHkgX2FwcGx5SWRUb0NvbnRlbnQgPSBmYWxzZTtcblxuXHQvKipcblx0ICogTm8gZGF0YSB0ZXh0XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHJlYWRvbmx5IG5vRGF0YVRleHQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFBhcmFtZXRlciB3aXRoIGRyaWxsc3RhY2sgb24gYSBkcmlsbCB1cC8gZHJpbGwgZG93biBvZiB0aGUgTURDX0NoYXJ0XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRwcmV2RHJpbGxTdGFjazogc3RyaW5nW10gPSBbXTtcblxuXHRfY29udGVudElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X2NvbnRleHQhOiBNb2RlbENvbnRleHQ7XG5cblx0YmxvY2tBY3Rpb25zPzogQWN0aW9uT3JBY3Rpb25Hcm91cDtcblxuXHRfYmxvY2tJZD86IHN0cmluZztcblxuXHRfcGVyc29uYWxpemF0aW9uPzogc3RyaW5nIHwgYm9vbGVhbjtcblxuXHRpbml0aWFsQ29udHJvbFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG5cdF9ibG9ja0FjdGlvbnMhOiAoTWVudUl0ZW0gfCBBY3Rpb25Ub29sYmFyQWN0aW9uIHwgdW5kZWZpbmVkKVtdO1xuXG5cdGNoYXJ0RGVmaW5pdGlvbiE6IENoYXJ0VmlzdWFsaXphdGlvbjtcblxuXHRuYXZpZ2F0aW9uUGF0aD86IHN0cmluZztcblxuXHRhdXRvQmluZE9uSW5pdD86IGJvb2xlYW47XG5cblx0dml6UHJvcGVydGllcz86IHN0cmluZztcblxuXHRjaGFydEFjdGlvbnM/OiBCYXNlQWN0aW9uW10gPSBbXTtcblxuXHRmaWx0ZXI/OiBzdHJpbmc7XG5cblx0dmlzaWJsZT86IHN0cmluZztcblxuXHRkcmFmdFN1cHBvcnRlZD86IGJvb2xlYW47XG5cblx0aGVhZGVyU3R5bGU/OiBUaXRsZUxldmVsO1xuXG5cdHVzZUNvbmRlbnNlZExheW91dCE6IGJvb2xlYW47XG5cblx0X21ldGFQYXRoQ29udGV4dCE6IE1vZGVsQ29udGV4dDtcblxuXHRfY3VzdG9tRGF0YSE6IENoYXJ0Q3VzdG9tRGF0YTtcblxuXHRfY2hhcnRDb250ZXh0ITogTW9kZWxDb250ZXh0O1xuXG5cdF9jaGFydFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRfY2hhcnQhOiBWb2NhYnVsYXJ5Q2hhcnQ7XG5cblx0X21ldGFNb2RlbCE6IE9EYXRhTWV0YU1vZGVsO1xuXG5cdG1lYXN1cmVzPzogTW9kZWxDb250ZXh0O1xuXG5cdF9zb3J0Q29uZGl0aW9uczogb2JqZWN0IHwgdW5kZWZpbmVkO1xuXG5cdF9jb21tYW5kQWN0aW9uczogQ29tbWFuZEFjdGlvbltdID0gW107XG5cblx0ZmlyZVZhcmlhbnRTZWxlY3RlZD86IEZ1bmN0aW9uO1xuXG5cdGZpcmVWYXJpYW50U2F2ZWQ/OiBGdW5jdGlvbjtcblxuXHRmaXJlU2VnbWVudGVkQnV0dG9uUHJlc3NlZD86IEZ1bmN0aW9uO1xuXG5cdF9yZXNvbHZlZENvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBJZCBvZiB0aGUgRmlsdGVyQmFyIGJ1aWxkaW5nIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2hhcnQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiIH0pXG5cdGZpbHRlckJhcj86IHN0cmluZztcblxuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLnVpLmNvcmUuTGF5b3V0RGF0YVwiXG5cdH0pXG5cdGxheW91dERhdGEhOiBMYXlvdXREYXRhO1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgYWN0aW9ucyBvZiB0aGUgY2hhcnQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLmNoYXJ0LkFjdGlvblwiLFxuXHRcdGFsdFR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLmNoYXJ0LkFjdGlvbkdyb3VwXCJdLFxuXHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdGRlZmF1bHRDbGFzczogQWN0aW9uXG5cdH0pXG5cdGFjdGlvbnMhOiBBY3Rpb25bXSB8IEFjdGlvbkdyb3VwW107XG5cblx0LyoqXG5cdCAqIEdldHMgY29udGV4dHMgZnJvbSB0aGUgY2hhcnQgdGhhdCBoYXZlIGJlZW4gc2VsZWN0ZWQgYnkgdGhlIHVzZXIuXG5cdCAqIEByZXR1cm5zIENvbnRleHRzIG9mIHRoZSByb3dzIHNlbGVjdGVkIGJ5IHRoZSB1c2VyXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldFNlbGVjdGVkQ29udGV4dHMoKTogQ29udGV4dFtdIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50Py5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcInNlbGVjdGVkQ29udGV4dHNcIikgfHwgW107XG5cdH1cblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gY2hhcnQgc2VsZWN0aW9ucyBhcmUgY2hhbmdlZC4gVGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkYXRhIHNlbGVjdGVkL2Rlc2VsZWN0ZWQgYW5kIHRoZSBCb29sZWFuIGZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBkYXRhIGlzIHNlbGVjdGVkIG9yIGRlc2VsZWN0ZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBldmVudCgpXG5cdHNlbGVjdGlvbkNoYW5nZSE6IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgY2hhcnQgcmVxdWVzdHMgZGF0YS5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBldmVudCgpXG5cdGludGVybmFsRGF0YVJlcXVlc3RlZCE6IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBFdmVudCB0cmlnZ2VyZWQgd2hlbiBjaGFydCdzIHZhcmlhbnQgaXMgc2VsZWN0ZWQuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHR2YXJpYW50U2VsZWN0ZWQ/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gY2hhcnQncyB2YXJpYW50IGlzIHNhdmVkLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QGV2ZW50KClcblx0dmFyaWFudFNhdmVkPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIGNoYXJ0J3Mgc2VnbWVudGVkIGJ1dHRvbiBpLmUuLCBtb2RlIGJldHdlZW4gdGFibGUsIGNoYXJ0IGFuZCBjaGFydCB3aXRoIHRhYmxlIHZpZXcgaXMgc2VsZWN0ZWRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBldmVudCgpXG5cdHNlZ21lbnRlZEJ1dHRvblByZXNzZWQhOiBGdW5jdGlvbjtcblxuXHRjb25zdHJ1Y3RvcihzZXR0aW5ncz86IFByb3BlcnRpZXNPZjxDaGFydD4sIG90aGVycz86ICRDb250cm9sU2V0dGluZ3MpIHtcblx0XHRpZiAoc2V0dGluZ3M/Ll9hcHBseUlkVG9Db250ZW50KSB7XG5cdFx0XHRzZXR0aW5ncy5pZCA9IGdlbmVyYXRlKFtzZXR0aW5ncy5pZCwgXCI6OkNoYXJ0XCJdKTtcblx0XHR9XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gaXMgb3ZlcnJpZGRlbiB0byBlbnN1cmUgYmFja3dhcmQgaW5jb21wYXRpYmlsaXR5XG5cdCAqIEBvdmVycmlkZVxuXHQgKi9cblx0aXNBPFQgZXh0ZW5kcyBCYXNlT2JqZWN0ID0gQmFzZU9iamVjdD4odHlwZU5hbWU6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyBpcyBUO1xuXG5cdGlzQTxUPih0eXBlTmFtZT86IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyBpcyBUO1xuXG5cdGlzQSh0eXBlTmFtZTogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcblx0XHRjb25zdCBvbGRWYWxpZFR5cGUgPSBcInNhcC5mZS5tYWNyb3MuY2hhcnQuQ2hhcnRBUElcIjtcblx0XHRpZiAoKEFycmF5LmlzQXJyYXkodHlwZU5hbWUpICYmIHR5cGVOYW1lLmluY2x1ZGVzKG9sZFZhbGlkVHlwZSkpIHx8IHR5cGVOYW1lID09PSBvbGRWYWxpZFR5cGUpIHJldHVybiB0cnVlO1xuXG5cdFx0cmV0dXJuIHN1cGVyLmlzQSh0eXBlTmFtZSk7XG5cdH1cblxuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHRvbkFmdGVyUmVuZGVyaW5nKGFmdGVyUmVuZGVyaW5nRXZlbnQ6IEpRdWVyeS5FdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXcgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmdldFZpZXcoKTtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQgPSB2aWV3Py5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdGNvbnN0IGNoYXJ0ID0gdGhpcy5nZXRDb250ZW50KCkgYXMgQ2hhcnQ7XG5cdFx0Y29uc3Qgc2hvd01lc3NhZ2VTdHJpcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSBpbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJjb250cm9scy9zaG93TWVzc2FnZVN0cmlwXCIpIHx8IHt9O1xuXHRcdGNvbnN0IHNDaGFydEVudGl0eVBhdGggPSBjaGFydC5kYXRhKFwiZW50aXR5U2V0XCIpLFxuXHRcdFx0c0NhY2hlS2V5ID0gYCR7c0NoYXJ0RW50aXR5UGF0aH1DaGFydGAsXG5cdFx0XHRvQmluZGluZ0NvbnRleHQgPSB2aWV3Py5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdHNob3dNZXNzYWdlU3RyaXBbc0NhY2hlS2V5XSA9XG5cdFx0XHRjaGFydC5kYXRhKFwiZHJhZnRTdXBwb3J0ZWRcIikgPT09IFwidHJ1ZVwiICYmICEhb0JpbmRpbmdDb250ZXh0ICYmICFvQmluZGluZ0NvbnRleHQuZ2V0T2JqZWN0KFwiSXNBY3RpdmVFbnRpdHlcIik7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjb250cm9scy9zaG93TWVzc2FnZVN0cmlwXCIsIHNob3dNZXNzYWdlU3RyaXApO1xuXHRcdHRoaXMuYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyKCk7XG5cblx0XHRzdXBlci5vbkFmdGVyUmVuZGVyaW5nKGFmdGVyUmVuZGVyaW5nRXZlbnQpO1xuXHR9XG5cblx0cHJpdmF0ZSBhdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIoKTogdm9pZCB7XG5cdFx0U3RhdGVVdGlsLmRldGFjaFN0YXRlQ2hhbmdlKHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0XHRTdGF0ZVV0aWwuYXR0YWNoU3RhdGVDaGFuZ2UodGhpcy5zdGF0ZUNoYW5nZUhhbmRsZXIpO1xuXHR9XG5cblx0c3RhdGVDaGFuZ2VIYW5kbGVyKG9FdmVudDogRXZlbnQ8eyBjb250cm9sOiBDb250cm9sIH0+KTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb250cm9sXCIpO1xuXHRcdGlmIChjb250cm9sLmlzQTxDaGFydD4oXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRjb25zdCBjaGFydEJsb2NrID0gY29udHJvbC5nZXRQYXJlbnQoKSBhcyB1bmtub3duIGFzIHsgaGFuZGxlU3RhdGVDaGFuZ2U/OiBGdW5jdGlvbiB9O1xuXHRcdFx0aWYgKGNoYXJ0QmxvY2s/LmhhbmRsZVN0YXRlQ2hhbmdlKSB7XG5cdFx0XHRcdGNoYXJ0QmxvY2suaGFuZGxlU3RhdGVDaGFuZ2UoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcyhvRmlsdGVyQ29udHJvbDogQ29udHJvbCk6IHN0cmluZ1tdIHtcblx0XHRjb25zdCBvQ2hhcnQgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRyZXR1cm4gRmlsdGVyVXRpbHMuZ2V0Tm90QXBwbGljYWJsZUZpbHRlcnMob0ZpbHRlckNvbnRyb2wgYXMgRmlsdGVyQmFyLCBvQ2hhcnQhKTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRoYW5kbGVTZWxlY3Rpb25DaGFuZ2Uob0V2ZW50OiBVSTVFdmVudDx7IGRhdGE6IHVua25vd25bXTsgbmFtZTogc3RyaW5nIH0+KTogdm9pZCB7XG5cdFx0Y29uc3QgYURhdGEgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiZGF0YVwiKTtcblx0XHRjb25zdCBiU2VsZWN0ZWQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwibmFtZVwiKSA9PT0gXCJzZWxlY3REYXRhXCI7XG5cdFx0Q2hhcnRSdW50aW1lLmZuVXBkYXRlQ2hhcnQob0V2ZW50KTtcblx0XHR0aGlzLmZpcmVFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCBtZXJnZSh7fSwgeyBkYXRhOiBhRGF0YSwgc2VsZWN0ZWQ6IGJTZWxlY3RlZCB9KSk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQoKTogdm9pZCB7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJpbnRlcm5hbERhdGFSZXF1ZXN0ZWRcIik7XG5cdH1cblxuXHRAY29udHJvbGxlckV4dGVuc2lvbkhhbmRsZXIoXCJjb2xsYWJvcmF0aW9uTWFuYWdlclwiLCBcImNvbGxlY3RBdmFpbGFibGVDYXJkc1wiKVxuXHRhc3luYyBjb2xsZWN0QXZhaWxhYmxlQ2FyZHMoY2FyZHM6IFdyYXBwZWRDYXJkW10pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBhY3Rpb25Ub29sYmFySXRlbXMgPSB0aGlzLmNvbnRlbnQuZ2V0QWN0aW9ucygpIGFzIEFjdGlvblRvb2xiYXJBY3Rpb25bXTtcblx0XHRpZiAoaGFzSW5zaWdodEFjdGlvbkVuYWJsZWQoYWN0aW9uVG9vbGJhckl0ZW1zLCB0aGlzLmNvbnRlbnQuZ2V0RmlsdGVyKCkpKSB7XG5cdFx0XHRjb25zdCBjYXJkID0gYXdhaXQgdGhpcy5nZXRDYXJkTWFuaWZlc3RDaGFydCgpO1xuXHRcdFx0aWYgKE9iamVjdC5rZXlzKGNhcmQpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y2FyZHMucHVzaCh7XG5cdFx0XHRcdFx0Y2FyZDogY2FyZCxcblx0XHRcdFx0XHR0aXRsZTogdGhpcy5nZXRDaGFydENvbnRyb2woKS5nZXRIZWFkZXIoKSxcblx0XHRcdFx0XHRjYWxsYmFjazogdGhpcy5vbkFkZENhcmRUb0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FsbGJhY2suYmluZCh0aGlzKVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRoYXNTZWxlY3Rpb25zKCk6IGJvb2xlYW4ge1xuXHRcdC8vIGNvbnNpZGVyIGNoYXJ0IHNlbGVjdGlvbnMgaW4gdGhlIGN1cnJlbnQgZHJpbGwgc3RhY2sgb3Igb24gYW55IGZ1cnRoZXIgZHJpbGwgZG93bnNcblx0XHRjb25zdCBtZGNDaGFydCA9IHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIE1EQ0NoYXJ0O1xuXHRcdGlmIChtZGNDaGFydCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgY2hhcnQgPSAobWRjQ2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkgYXMgdW5rbm93biBhcyBDaGFydERlbGVnYXRlKT8uZ2V0SW5uZXJDaGFydChtZGNDaGFydCkgYXMgQ2hhcnRDaGFydDtcblx0XHRcdFx0aWYgKGNoYXJ0KSB7XG5cdFx0XHRcdFx0Y29uc3QgYURpbWVuc2lvbnMgPSBDaGFydFV0aWxzLmdldERpbWVuc2lvbnNGcm9tRHJpbGxTdGFjayhjaGFydCk7XG5cdFx0XHRcdFx0Y29uc3QgYklzRHJpbGxEb3duID0gYURpbWVuc2lvbnMubGVuZ3RoID4gdGhpcy5wcmV2RHJpbGxTdGFjay5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgYklzRHJpbGxVcCA9IGFEaW1lbnNpb25zLmxlbmd0aCA8IHRoaXMucHJldkRyaWxsU3RhY2subGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGJOb0NoYW5nZSA9IGFEaW1lbnNpb25zLnRvU3RyaW5nKCkgPT09IHRoaXMucHJldkRyaWxsU3RhY2sudG9TdHJpbmcoKTtcblx0XHRcdFx0XHRsZXQgYUZpbHRlcnM6IEZpbHRlcltdO1xuXHRcdFx0XHRcdGlmIChiSXNEcmlsbFVwICYmIGFEaW1lbnNpb25zLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdFx0Ly8gZHJpbGxpbmcgdXAgdG8gbGV2ZWwwIHdvdWxkIGNsZWFyIGFsbCBzZWxlY3Rpb25zXG5cdFx0XHRcdFx0XHRhRmlsdGVycyA9IENoYXJ0VXRpbHMuZ2V0Q2hhcnRTZWxlY3Rpb25zKG1kY0NoYXJ0LCB0cnVlKSBhcyBGaWx0ZXJbXTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gYXBwbHkgZmlsdGVycyBvZiBzZWxlY3Rpb25zIG9mIHByZXZpb3VzIGRyaWxsc3RhY2sgd2hlbiBkcmlsbGluZyB1cC9kb3duXG5cdFx0XHRcdFx0XHQvLyB0byB0aGUgY2hhcnQgYW5kIHRhYmxlXG5cdFx0XHRcdFx0XHRhRmlsdGVycyA9IENoYXJ0VXRpbHMuZ2V0Q2hhcnRTZWxlY3Rpb25zKG1kY0NoYXJ0KSBhcyBGaWx0ZXJbXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGJJc0RyaWxsRG93biB8fCBiSXNEcmlsbFVwKSB7XG5cdFx0XHRcdFx0XHQvLyB1cGRhdGUgdGhlIGRyaWxsc3RhY2sgb24gYSBkcmlsbCB1cC8gZHJpbGwgZG93blxuXHRcdFx0XHRcdFx0dGhpcy5wcmV2RHJpbGxTdGFjayA9IGFEaW1lbnNpb25zO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFGaWx0ZXJzLmxlbmd0aCA+IDA7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChiTm9DaGFuZ2UpIHtcblx0XHRcdFx0XHRcdC8vIGJOb0NoYW5nZSBpcyB0cnVlIHdoZW4gY2hhcnQgaXMgc2VsZWN0ZWRcblx0XHRcdFx0XHRcdHJldHVybiBhRmlsdGVycy5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgRXJyb3Igd2hpbGUgY2hlY2tpbmcgZm9yIHNlbGVjdGlvbnMgaW4gQ2hhcnQ6ICR7ZXJyfWApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjcmVhdGUgaW5zaWdodHNQYXJhbXMgYW5kIGNhbGwgdGhlIEFQSSB0byBzaG93IGluc2lnaHRzIGNhcmQgcHJldmlldyBmb3IgY2hhcnRzLlxuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgY2FyZCBwcmV2aWV3IGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0YXN5bmMgb25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGluc2lnaHRzUGFyYW1zID0gYXdhaXQgY3JlYXRlQ2hhcnRDYXJkUGFyYW1zKHRoaXMpO1xuXHRcdFx0aWYgKGluc2lnaHRzUGFyYW1zKSB7XG5cdFx0XHRcdHNob3dJbnNpZ2h0c0NhcmRQcmV2aWV3KGluc2lnaHRzUGFyYW1zKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdHNob3dHZW5lcmljRXJyb3JNZXNzYWdlKHRoaXMuY29udGVudCk7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjYXJkIG1hbmlmZXN0IG9wdGltaXplZCBmb3IgdGhlIGNoYXJ0IGNhc2UuXG5cdCAqIEByZXR1cm5zIFByb21pc2Ugb2YgQ2FyZE1hbmlmZXN0XG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIGdldENhcmRNYW5pZmVzdENoYXJ0KCk6IFByb21pc2U8Q2FyZE1hbmlmZXN0PiB7XG5cdFx0Y29uc3QgaW5zaWdodHNQYXJhbXMgPSBhd2FpdCBjcmVhdGVDaGFydENhcmRQYXJhbXModGhpcyk7XG5cdFx0cmV0dXJuIGdldENhcmRNYW5pZmVzdChpbnNpZ2h0c1BhcmFtcyBhcyBJbnNpZ2h0c1BhcmFtczxDaGFydENvbnRlbnQ+KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBpbnNpZ2h0c1BhcmFtcyBhbmQgY2FsbCB0aGUgQVBJIHRvIHNob3cgaW5zaWdodHMgY2FyZCBwcmV2aWV3IGZvciB0YWJsZS5cblx0ICogQHBhcmFtIGNhcmQgVGhlIGNhcmQgbWFuaWZlc3QgdG8gYmUgdXNlZCBmb3IgdGhlIGNhbGxiYWNrXG5cdCAqIEByZXR1cm5zIFVuZGVmaW5lZCBpZiBjYXJkIHByZXZpZXcgaXMgcmVuZGVyZWQuXG5cdCAqL1xuXHRhc3luYyBvbkFkZENhcmRUb0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FsbGJhY2soY2FyZDogQ2FyZE1hbmlmZXN0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmIChjYXJkKSB7XG5cdFx0XHRcdGF3YWl0IHNob3dDb2xsYWJvcmF0aW9uTWFuYWdlckNhcmRQcmV2aWV3KFxuXHRcdFx0XHRcdGNhcmQsXG5cdFx0XHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5jb2xsYWJvcmF0aW9uTWFuYWdlci5nZXRTZXJ2aWNlKCkgYXMgQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRzaG93R2VuZXJpY0Vycm9yTWVzc2FnZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0TG9nLmVycm9yKGUgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmlsdGVycyByZWxhdGVkIHRvIHRoZSBjaGFydC5cblx0ICogQHJldHVybnMgIFRoZSBmaWx0ZXIgY29uZmlndXJlZCBvbiB0aGUgY2hhcnQgb3IgdW5kZWZpbmVkIGlmIG5vbmVcblx0ICovXG5cdGdldEZpbHRlcigpOiBGaWx0ZXIgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGNoYXJ0RmlsdGVySW5mbyA9IENoYXJ0VXRpbHMuZ2V0QWxsRmlsdGVySW5mbyh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBNRENDaGFydCk7XG5cdFx0aWYgKGNoYXJ0RmlsdGVySW5mby5maWx0ZXJzLmxlbmd0aCkge1xuXHRcdFx0Y2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKSA9PiB7XG5cdFx0XHRcdGlmIChmaWx0ZXIuZ2V0UGF0aCgpKSB7XG5cdFx0XHRcdFx0KGZpbHRlciBhcyB1bmtub3duIGFzIHsgc1BhdGg6IHN0cmluZyB9KS5zUGF0aCA9IHRoaXMuZ2V0Q2hhcnRQcm9wZXJ0aWVzV2l0aG91dFByZWZpeGVzKGZpbHRlci5nZXRQYXRoKCkhKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gbmV3IEZpbHRlcih7IGZpbHRlcnM6IGNoYXJ0RmlsdGVySW5mby5maWx0ZXJzLCBhbmQ6IHRydWUgfSk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY2hhcnQgY29udHJvbCBmcm9tIHRoZSBDaGFydCBBUEkuXG5cdCAqIEByZXR1cm5zIFRoZSBDaGFydCBjb250cm9sIGluc2lkZSB0aGUgQ2hhcnQgQVBJXG5cdCAqL1xuXHRnZXRDaGFydENvbnRyb2woKTogTURDQ2hhcnQge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgZGltZW5zaW9uLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lICBOYW1lIG9mIHRoZSBkaW1lbnNpb25cblx0ICogQHJldHVybnMgVGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIGRpbWVuc2lvblxuXHQgKi9cblxuXHRnZXRQcm9wZXJ0eURhdGFNb2RlbChwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+IHwgbnVsbCB7XG5cdFx0Y29uc3QgbWV0YVBhdGggPSB0aGlzLmNvbnRlbnQuZGF0YShcInRhcmdldENvbGxlY3Rpb25QYXRoXCIpIGFzIHN0cmluZztcblx0XHRjb25zdCBtZXRhTW9kZWwgPSAodGhpcy5jb250ZW50LmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgZGltZW5zaW9uQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChgJHttZXRhUGF0aH0vJHtwcm9wZXJ0eU5hbWV9YCkgYXMgQ29udGV4dDtcblx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPFByb3BlcnR5PihkaW1lbnNpb25Db250ZXh0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgY2hhcnQgcHJvcGVydGllcyBieSByZW1vdmluZyBfZmVfZ3JvdXBhYmxlIGFuZCBfZmVfYWdncmVnYXRhYmxlIHByZWZpeC5cblx0ICogQHBhcmFtIHtBcnJheX0gYVByb3BlcnRpZXMgQ2hhcnQgZmlsdGVyIHByb3BlcnRpZXNcblx0ICogQHJldHVybnMgQ2hhcnQgcHJvcGVydGllcyB3aXRob3V0IHByZWZpeGVzXG5cdCAqL1xuXG5cdGdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyhjaGFydFByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGlmIChjaGFydFByb3BlcnR5ICYmIGNoYXJ0UHJvcGVydHkuaW5jbHVkZXMoXCJmZV9ncm91cGFibGVcIikpIHtcblx0XHRcdGNoYXJ0UHJvcGVydHkgPSB0aGlzLmdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQoY2hhcnRQcm9wZXJ0eSwgXCJncm91cGFibGVcIik7XG5cdFx0fSBlbHNlIGlmIChjaGFydFByb3BlcnR5ICYmIGNoYXJ0UHJvcGVydHkuaW5jbHVkZXMoXCJmZV9hZ2dyZWdhdGFibGVcIikpIHtcblx0XHRcdGNoYXJ0UHJvcGVydHkgPSB0aGlzLmdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQoY2hhcnRQcm9wZXJ0eSwgXCJhZ2dyZWdhdGFibGVcIik7XG5cdFx0fVxuXHRcdHJldHVybiBjaGFydFByb3BlcnR5O1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBJRCB3aGljaCBzaG91bGQgYmUgdXNlZCBpbiB0aGUgaW50ZXJuYWwgY2hhcnQgZm9yIHRoZSBtZWFzdXJlIG9yIGRpbWVuc2lvbi5cblx0ICogQHBhcmFtIG5hbWUgSUQgb2YgdGhlIHByb3BlcnR5XG5cdCAqIEBwYXJhbSBraW5kIFR5cGUgb2YgdGhlIHByb3BlcnR5IChtZWFzdXJlIG9yIGRpbWVuc2lvbilcblx0ICogQHJldHVybnMgSW50ZXJuYWwgSUQgZm9yIHRoZSBzYXAuY2hhcnQuQ2hhcnRcblx0ICovXG5cblx0Z2V0SW50ZXJuYWxDaGFydE5hbWVGcm9tUHJvcGVydHlOYW1lQW5kS2luZChuYW1lOiBzdHJpbmcsIGtpbmQ6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIG5hbWUucmVwbGFjZShcIl9mZV9cIiArIGtpbmQgKyBcIl9cIiwgXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyB0aGUgY2hhcnQncyBzdGF0ZVV0aWwgIHRvIENoYXJ0IFByZXNlbnRhdGlvbiBWYXJpYW50LlxuXHQgKiBAcGFyYW0gY2hhcnRTdGF0ZSBDaGFydCBBcHBTdGF0ZSB1dGlsIFBWXG5cdCAqIEByZXR1cm5zIFByZXNlbnRhdGlvbiBWYXJpYW50IHN0cnVjdHVyZSBmb3IgdGhlIGNoYXJ0XG5cdCAqL1xuXHRfY29udmVydFN0YXRlVXRpbFRvUHJlc2VudGF0aW9uVmFyaWFudChjaGFydFN0YXRlOiBBcHBTdGF0ZSk6IFByZXNlbnRhdGlvblZhcmlhbnQge1xuXHRcdGNvbnN0IHNvcnRPcmRlciA9IGNoYXJ0U3RhdGUuc29ydGVycz8ubWFwKChzb3J0ZXI6IFNvcnRlcnMpID0+IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFByb3BlcnR5OiB0aGlzLmdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyhzb3J0ZXIubmFtZSksXG5cdFx0XHRcdERlc2NlbmRpbmc6IHNvcnRlci5kZXNjZW5kaW5nXG5cdFx0XHR9O1xuXHRcdH0pO1xuXHRcdGNvbnN0IHR5cGUgPSBjaGFydFN0YXRlLnN1cHBsZW1lbnRhcnlDb25maWc/LnByb3BlcnRpZXM/LmNoYXJ0VHlwZTtcblx0XHRjb25zdCBjaGFydFR5cGVJblJlcXVpcmVkRm9ybWF0ID0gdHlwZSA/IHR5cGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpIDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IGNoYXJ0VHlwZSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRUeXBlL1wiICsgY2hhcnRUeXBlSW5SZXF1aXJlZEZvcm1hdDtcblx0XHRjb25zdCBkaW1lbnNpb25zOiBzdHJpbmdbXSA9IFtdLFxuXHRcdFx0bWVhc3VyZXM6IHN0cmluZ1tdID0gW10sXG5cdFx0XHRkaW1lbnNpb25BdHRyaWJ1dGVzOiBEaW1lbnNpb25UeXBlW10gPSBbXSxcblx0XHRcdG1lYXN1cmVBdHRyaWJ1dGVzOiBNZWFzdXJlVHlwZVtdID0gW107XG5cdFx0KGNoYXJ0U3RhdGUuaXRlbXMgPz8gW10pLmZvckVhY2goKGl0ZW06IEl0ZW1zKSA9PiB7XG5cdFx0XHRpdGVtLm5hbWUgPSB0aGlzLmdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyhpdGVtLm5hbWUpO1xuXHRcdFx0Y29uc3Qgcm9sZSA9IGl0ZW0ucm9sZT8ubGVuZ3RoXG5cdFx0XHRcdD8gaXRlbS5yb2xlLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgaXRlbS5yb2xlPy5zdWJzdHJpbmcoMSwgaXRlbS5yb2xlLmxlbmd0aClcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRpZiAoaXRlbS5yb2xlID09PSBcImNhdGVnb3J5XCIgfHwgaXRlbS5yb2xlID09PSBcInNlcmllc1wiIHx8IGl0ZW0ucm9sZSA9PT0gXCJjYXRlZ29yeTJcIikge1xuXHRcdFx0XHRkaW1lbnNpb25zLnB1c2goaXRlbS5uYW1lKTtcblx0XHRcdFx0ZGltZW5zaW9uQXR0cmlidXRlcy5wdXNoKHtcblx0XHRcdFx0XHREaW1lbnNpb246IGl0ZW0ubmFtZSxcblx0XHRcdFx0XHRSb2xlOiBgY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnREaW1lbnNpb25Sb2xlVHlwZS8ke3JvbGV9YFxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1lYXN1cmVzLnB1c2goaXRlbS5uYW1lKTtcblx0XHRcdFx0bWVhc3VyZUF0dHJpYnV0ZXMucHVzaCh7IE1lYXN1cmU6IGl0ZW0ubmFtZSwgUm9sZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydERpbWVuc2lvblJvbGVUeXBlL1wiICsgcm9sZSB9KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGNvbnN0IGNoYXJ0Vml6OiBWaXN1YWxpemF0aW9uID0ge1xuXHRcdFx0Q29udGVudDoge1xuXHRcdFx0XHRDaGFydFR5cGU6IGNoYXJ0VHlwZSxcblx0XHRcdFx0RGltZW5zaW9uQXR0cmlidXRlczogZGltZW5zaW9uQXR0cmlidXRlcyxcblx0XHRcdFx0RGltZW5zaW9uczogZGltZW5zaW9ucyxcblx0XHRcdFx0TWVhc3VyZUF0dHJpYnV0ZXM6IG1lYXN1cmVBdHRyaWJ1dGVzLFxuXHRcdFx0XHRNZWFzdXJlczogbWVhc3VyZXNcblx0XHRcdH0sXG5cdFx0XHRUeXBlOiBcIkNoYXJ0XCJcblx0XHR9O1xuXHRcdGNvbnN0IGNoYXJ0UFYgPSBuZXcgUHJlc2VudGF0aW9uVmFyaWFudCgpO1xuXHRcdGNoYXJ0UFYuc2V0Q2hhcnRWaXN1YWxpemF0aW9uKGNoYXJ0Vml6KTtcblx0XHRjaGFydFBWLnNldFByb3BlcnRpZXMoe1xuXHRcdFx0U29ydE9yZGVyOiBzb3J0T3JkZXIgPz8gW11cblx0XHR9KTtcblx0XHRyZXR1cm4gY2hhcnRQVjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IHRoYXQgaXMgY3VycmVudGx5IGFwcGxpZWQgb24gdGhlIGNoYXJ0LlxuXHQgKiBAcmV0dXJucyBUaGUgcHJlc2VudGF0aW9uIHZhcmlhbnQge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlByZXNlbnRhdGlvblZhcmlhbnR9IGFwcGxpZWQgdG8gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cblx0YXN5bmMgZ2V0UHJlc2VudGF0aW9uVmFyaWFudCgpOiBQcm9taXNlPFByZXNlbnRhdGlvblZhcmlhbnQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgY2hhcnRTdGF0ZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50KTtcblx0XHRcdHJldHVybiB0aGlzLl9jb252ZXJ0U3RhdGVVdGlsVG9QcmVzZW50YXRpb25WYXJpYW50KGNoYXJ0U3RhdGUpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRjb25zdCBpZDogc3RyaW5nID0gdGhpcy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcblx0XHRcdExvZy5lcnJvcihgQ2hhcnQgQnVpbGRpbmcgQmxvY2sgKCR7aWR9KSAtIGdldCBwcmVzZW50YXRpb24gdmFyaWFudCBmYWlsZWQgOiAke21lc3NhZ2V9YCk7XG5cdFx0XHR0aHJvdyBFcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBwcmVzZW50YXRpb24gdmFyaWFudCBmb3IgdGhlIG1kYyBjaGFydC5cblx0ICpcblx0ICogVGhlIGpzb24gZm9ybWF0IHJldHJpZXZlZCBieSB1c2luZyB0aGUgZ2V0IFByZXNlbnRhdGlvblZhcmlhbnQgYnV0dG9uIGluIHRoZSBsaW5rZWQgRlBNIHNhbXBsZSBzaG91bGQgYmUgZm9sbG93ZWQgd2hpbGUgdHJ5aW5nIHRvIHNldCB0aGUgUHJlc2VudGF0aW9uVmFyaWFudCBhcyBuZWVkZWQuXG5cdCAqIFRoZSB2YWx1ZXMgZGltZW5zaW9ucywgbWVhc3VyZXMgYW5kIG90aGVyIHByb3BlcnRpZXMgc2hvdWxkIGFsc28gYmUgZ2l2ZW4gaW4gdGhlIHZhbGlkIGZvcm1hdCBhbmQgbnVsbCBvciBlbXB0eSB2YWx1ZXMgc2hvdWxkIGJlIGF2b2lkZWQuXG5cdCAqIE9uZSBkaW1lbnNpb24gYXR0cmlidXRlIHNob3VsZCBoYXZlIG9ubHkgb25lIHJvbGUgYXNzb2NpYXRlZCB3aXRoIGl0IG9uIGEgZ2l2ZW4gY2hhcnQuXG5cdCAqIEBwYXJhbSBwcmVzZW50YXRpb25WYXJpYW50IHRoZSBwcmVzZW50YXRpb24gdmFyaWFudCB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uUHJlc2VudGF0aW9uVmFyaWFudH0gdG8gYmUgc2V0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cblx0YXN5bmMgc2V0UHJlc2VudGF0aW9uVmFyaWFudChwcmVzZW50YXRpb25WYXJpYW50OiBQcmVzZW50YXRpb25WYXJpYW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGNoYXJ0ID0gdGhpcy5jb250ZW50O1xuXHRcdFx0Y29uc3QgZXhpc3RpbmdQcmVzZW50YXRpb25WYXJpYW50ID0gYXdhaXQgdGhpcy5nZXRQcmVzZW50YXRpb25WYXJpYW50KCk7XG5cdFx0XHRjb25zdCBwcm9wZXJ0aWVzSW5mbyA9IChhd2FpdCAoY2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkgYXMgQ2hhcnREZWxlZ2F0ZSk/LmZldGNoUHJvcGVydGllcyhjaGFydCkpIGFzIFByb3BlcnR5SW5mb1tdO1xuXG5cdFx0XHRjb25zdCBzdGF0ZVV0aWxQdiA9IFByZXNlbnRhdGlvblZhcmlhbnRUb1N0YXRlVXRpbHNQVi5jb252ZXJ0UHZUb1N0YXRlVXRpbFB2KFxuXHRcdFx0XHRwcmVzZW50YXRpb25WYXJpYW50LFxuXHRcdFx0XHRleGlzdGluZ1ByZXNlbnRhdGlvblZhcmlhbnQsXG5cdFx0XHRcdHByb3BlcnRpZXNJbmZvXG5cdFx0XHQpO1xuXG5cdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNoYXJ0LCBzdGF0ZVV0aWxQdik7XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKGBGRTogQ2hhcnQgQnVpbGRpbmcgQmxvY2sgc2V0UHJlc2VudGF0aW9uVmFyaWFudCBBUEkgZmFpbGVkIHdpdGggZXJyb3I6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBrZXkgb2YgdGhlIGN1cnJlbnQgdmFyaWFudCBpbiB0aGUgYXNzb2NpYXRlZCB2YXJpYW50IG1hbmFnZW1lbnQuXG5cdCAqIEByZXR1cm5zIFZhcmlhbnQga2V5IG9mIHtAbGluayBzYXAudWkuZmwudmFyaWFudHMuVmFyaWFudE1hbmFnZW1lbnR9IGFwcGxpZWQgdG8gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldEN1cnJlbnRWYXJpYW50S2V5KCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpLmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFyaWFudCBvZiB0aGUgcHJvdmlkZWQga2V5IGluIHRoZSBhc3NvY2lhdGVkIHZhcmlhbnQgbWFuYWdlbWVudC5cblx0ICogQHBhcmFtIGtleSBUaGUgdmFyaWFudCBrZXkgb2Yge0BsaW5rIHNhcC51aS5mbC52YXJpYW50cy5WYXJpYW50TWFuYWdlbWVudH0gdG8gYmUgc2V0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNldEN1cnJlbnRWYXJpYW50S2V5KGtleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpO1xuXHRcdHZhcmlhbnRNYW5hZ2VtZW50LnNldEN1cnJlbnRWYXJpYW50S2V5KGtleSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzZWxlY3Rpb24gdmFyaWFudCBmcm9tIHRoZSBjaGFydC4gVGhpcyBmdW5jdGlvbiBjb25zaWRlcnMgb25seSB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgYXBwbGllZCBhdCB0aGUgY29udHJvbCBsZXZlbC5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGdldFNlbGVjdGlvblZhcmlhbnQoKTogUHJvbWlzZTxTZWxlY3Rpb25WYXJpYW50PiB7XG5cdFx0cmV0dXJuIFN0YXRlSGVscGVyLmdldFNlbGVjdGlvblZhcmlhbnQodGhpcy5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fSB0byB0aGUgY2hhcnQuIE5vdGU6IHNldFNlbGVjdGlvblZhcmlhbnQgd2lsbCBjbGVhciBleGlzdGluZyBmaWx0ZXJzIGFuZCB0aGVuIGFwcGx5IHRoZSBTZWxlY3Rpb25WYXJpYW50IHZhbHVlcy5cblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fSB0byBhcHBseSB0byB0aGUgY2hhcnRcblx0ICogQHBhcmFtIHByZWZpbGxEZXNjcmlwdGlvbnMgT3B0aW9uYWwuIElmIHRydWUsIHdlIHdpbGwgdXNlIHRoZSBhc3NvY2lhdGVkIHRleHQgcHJvcGVydHkgdmFsdWVzIChpZiB0aGV5J3JlIGF2YWlsYWJsZSBpbiB0aGUgU2VsZWN0aW9uVmFyaWFudCkgdG8gZGlzcGxheSB0aGUgZmlsdGVyIHZhbHVlIGRlc2NyaXB0aW9ucywgaW5zdGVhZCBvZiBsb2FkaW5nIHRoZW0gZnJvbSB0aGUgYmFja2VuZFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jaHJvbm91cyBoYW5kbGluZ1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXRTZWxlY3Rpb25WYXJpYW50KHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsIHByZWZpbGxEZXNjcmlwdGlvbnMgPSBmYWxzZSk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdHJldHVybiBTdGF0ZUhlbHBlci5zZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sKHRoaXMuZ2V0Q29udGVudCgpLCBzZWxlY3Rpb25WYXJpYW50LCBwcmVmaWxsRGVzY3JpcHRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRyb2wgc3RhdGUgYmFzZWQgb24gdGhlIGdpdmVuIGNvbnRyb2wgc3RhdGUga2V5LlxuXHQgKiBAcGFyYW0gY29udHJvbFN0YXRlIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcmV0dXJucyAtIFRoZSBmdWxsIHN0YXRlIG9mIHRoZSBjb250cm9sIGFsb25nIHdpdGggdGhlIGluaXRpYWwgc3RhdGUgaWYgYXZhaWxhYmxlLlxuXHQgKi9cblx0Z2V0Q29udHJvbFN0YXRlKGNvbnRyb2xTdGF0ZTogQ29udHJvbFN0YXRlKTogQ29udHJvbFN0YXRlIHtcblx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHRoaXMuaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHRpZiAoY29udHJvbFN0YXRlKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRmdWxsU3RhdGU6IGNvbnRyb2xTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdGluaXRpYWxTdGF0ZTogaW5pdGlhbENvbnRyb2xTdGF0ZSBhcyBvYmplY3Rcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiBjb250cm9sU3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29udHJvbCBieSByZXRyaWV2aW5nIHRoZSBleHRlcm5hbCBzdGF0ZS5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgaW5pdGlhbCBzdGF0ZSBpcyBzZXQuXG5cdCAqL1xuXHRhc3luYyBzZXRJbml0aWFsU3RhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGluaXRpYWxDb250cm9sU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCk7XG5cdFx0XHR0aGlzLmluaXRpYWxDb250cm9sU3RhdGUgPSBpbml0aWFsQ29udHJvbFN0YXRlO1xuXHRcdH0gY2F0Y2ggKGU6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFzeW5jaHJvbm91c2x5IHJldHJpZXZlcyB0aGUgc3RhdGUgb2YgdGhlIGNoYXJ0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCB2aWV3c3RhdGUuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjaGFydCBzdGF0ZSBvciBudWxsIGlmIG5vdCBmb3VuZC5cblx0ICovXG5cdGFzeW5jIHJldHJpZXZlU3RhdGUoKTogUHJvbWlzZTxDaGFydFN0YXRlIHwgbnVsbD4ge1xuXHRcdGNvbnN0IGNoYXJ0U3RhdGU6IENoYXJ0U3RhdGUgPSB7fTtcblx0XHRjaGFydFN0YXRlLmlubmVyQ2hhcnQgPSB0aGlzLmdldENvbnRyb2xTdGF0ZShhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCkpIGFzIG9iamVjdDtcblx0XHRjb25zdCB2YXJpYW50VG9SZXRyaWV2ZSA9IHRoaXMuY29udGVudC5nZXRWYXJpYW50KCk/LmdldElkKCk7XG5cdFx0aWYgKHZhcmlhbnRUb1JldHJpZXZlKSB7XG5cdFx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudENvbnRyb2wgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpO1xuXHRcdFx0aWYgKCFjaGFydFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRcdGNoYXJ0U3RhdGUudmFyaWFudE1hbmFnZW1lbnQgPSB7IHZhcmlhbnRJZDogdmFyaWFudE1hbmFnZW1lbnRDb250cm9sPy5nZXRDdXJyZW50VmFyaWFudEtleSgpIH07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjaGFydFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50LnZhcmlhbnRJZCA9IHZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbD8uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNoYXJ0U3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogQXBwbGllcyB0aGUgbGVnYWN5IHN0YXRlIHRvIHRoZSBjaGFydCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29udHJvbCBzdGF0ZSByZXRyaWV2YWwgZnVuY3Rpb24uXG5cdCAqIEBwYXJhbSBnZXRDb250cm9sU3RhdGUgRnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGNvbnRyb2wgc3RhdGUuXG5cdCAqIEBwYXJhbSBbX25hdlBhcmFtZXRlcnNdIE9wdGlvbmFsIG5hdmlnYXRpb24gcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIFtzaG91bGRBcHBseURpZmZTdGF0ZV0gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGRpZmYgc3RhdGUuXG5cdCAqIEByZXR1cm5zIC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc3RhdGUgaGFzIGJlZW4gYXBwbGllZC5cblx0ICovXG5cdGFzeW5jIGFwcGx5TGVnYWN5U3RhdGUoXG5cdFx0Z2V0Q29udHJvbFN0YXRlOiAoY29udHJvbDogTWFuYWdlZE9iamVjdCkgPT4gQ29udHJvbFN0YXRlLFxuXHRcdF9uYXZQYXJhbWV0ZXJzPzogTmF2aWdhdGlvblBhcmFtZXRlcixcblx0XHRzaG91bGRBcHBseURpZmZTdGF0ZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgY2hhcnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0Y29uc3Qgdm0gPSBjaGFydC5nZXRWYXJpYW50KCk7XG5cblx0XHRjb25zdCBjaGFydFN0YXRlID0gZ2V0Q29udHJvbFN0YXRlKGNoYXJ0KSBhcyB7IGluaXRpYWxTdGF0ZT86IENoYXJ0U3RhdGU7IGZ1bGxTdGF0ZT86IENoYXJ0U3RhdGUgfTtcblx0XHRjb25zdCB2bVN0YXRlID0gdm0gPyBnZXRDb250cm9sU3RhdGUodm0pIDogbnVsbDtcblxuXHRcdGNvbnN0IGNvbnRyb2xTdGF0ZTogQ2hhcnRTdGF0ZSA9IHt9O1xuXG5cdFx0aWYgKGNoYXJ0U3RhdGUpIHtcblx0XHRcdGNvbnRyb2xTdGF0ZS5pbm5lckNoYXJ0ID0ge1xuXHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJDaGFydCxcblx0XHRcdFx0Li4uY2hhcnRTdGF0ZSxcblx0XHRcdFx0ZnVsbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyQ2hhcnQ/LmZ1bGxTdGF0ZSxcblx0XHRcdFx0XHQuLi5jaGFydFN0YXRlLmZ1bGxTdGF0ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRpbml0aWFsU3RhdGU6IHtcblx0XHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJDaGFydD8uaW5pdGlhbFN0YXRlLFxuXHRcdFx0XHRcdC4uLmNoYXJ0U3RhdGUuaW5pdGlhbFN0YXRlXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0aWYgKHZtU3RhdGU/LnZhcmlhbnRJZCkge1xuXHRcdFx0Y29udHJvbFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50ID0ge1xuXHRcdFx0XHQuLi5jb250cm9sU3RhdGUudmFyaWFudE1hbmFnZW1lbnQsXG5cdFx0XHRcdHZhcmlhbnRJZDogdm1TdGF0ZS52YXJpYW50SWQudG9TdHJpbmcoKVxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRpZiAoY29udHJvbFN0YXRlICYmIE9iamVjdC5rZXlzKGNvbnRyb2xTdGF0ZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0YXdhaXQgdGhpcy5hcHBseVN0YXRlKGNvbnRyb2xTdGF0ZSBhcyBDb250cm9sU3RhdGUsIF9uYXZQYXJhbWV0ZXJzLCBzaG91bGRBcHBseURpZmZTdGF0ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFzeW5jaHJvbm91c2x5IGFwcGxpZXMgdGhlIHByb3ZpZGVkIGNvbnRyb2wgc3RhdGUgdG8gdGhlIHZpZXdzdGF0ZS5cblx0ICogQHBhcmFtIGNvbnRyb2xTdGF0ZSBUaGUgc3RhdGUgdG8gYmUgYXBwbGllZCB0byB0aGUgY29udHJvbC5cblx0ICogQHBhcmFtIFtfbmF2UGFyYW1ldGVyc10gT3B0aW9uYWwgbmF2aWdhdGlvbiBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0gW3Nob3VsZEFwcGx5RGlmZlN0YXRlXSBPcHRpb25hbCBmbGFnIHRvIHNraXAgbWVyZ2luZyBzdGF0ZXMuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHN0YXRlIGhhcyBiZWVuIGFwcGxpZWQuXG5cdCAqL1xuXHRhc3luYyBhcHBseVN0YXRlKGNvbnRyb2xTdGF0ZTogQ2hhcnRTdGF0ZSwgX25hdlBhcmFtZXRlcnM/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLCBzaG91bGRBcHBseURpZmZTdGF0ZT86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIWNvbnRyb2xTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgdmFyaWFudElkID0gY29udHJvbFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50Py52YXJpYW50SWQ7XG5cdFx0Y29uc3QgY3VycmVudFZhcmlhbnQgPSB0aGlzLmNvbnRlbnQ/LmdldFZhcmlhbnQoKTtcblxuXHRcdC8vIEhhbmRsZSBWYXJpYW50IE1hbmFnZW1lbnRcblx0XHRpZiAodmFyaWFudElkICE9PSB1bmRlZmluZWQgJiYgdmFyaWFudElkICE9PSBjdXJyZW50VmFyaWFudC5nZXRDdXJyZW50VmFyaWFudEtleSgpKSB7XG5cdFx0XHRjb25zdCBvdk0gPSB0aGlzLmNvbnRlbnQ/LmdldFZhcmlhbnQoKTtcblx0XHRcdGNvbnN0IGFWYXJpYW50cyA9IG92TT8uZ2V0VmFyaWFudHMoKTtcblx0XHRcdGNvbnN0IHNWYXJpYW50UmVmZXJlbmNlID0gYVZhcmlhbnRzPy5zb21lKChvVmFyaWFudCkgPT4gb1ZhcmlhbnQuZ2V0S2V5KCkgPT09IHZhcmlhbnRJZClcblx0XHRcdFx0PyB2YXJpYW50SWRcblx0XHRcdFx0OiBvdk0/LmdldFN0YW5kYXJkVmFyaWFudEtleTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkgPSAoYXdhaXQgaW1wb3J0KFwic2FwL3VpL2ZsL2FwcGx5L2FwaS9Db250cm9sVmFyaWFudEFwcGx5QVBJXCIpKS5kZWZhdWx0O1xuXHRcdFx0XHRhd2FpdCBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRcdFx0ZWxlbWVudDogb3ZNLFxuXHRcdFx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IHNWYXJpYW50UmVmZXJlbmNlIGFzIHN0cmluZ1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXdhaXQgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0XHRhd2FpdCB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyB3ZSBuZWVkIHRvIHVwZGF0ZSBpbml0aWFsIHN0YXRlIGV2ZW4gaWYgYWJvdmUgY29uZGl0aW9uIG5vdCBzYXRpc2ZpZWRcblx0XHRcdGF3YWl0IHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIElubmVyIENoYXJ0IFN0YXRlXG5cdFx0Y29uc3QgaW5uZXJDaGFydFN0YXRlID0gY29udHJvbFN0YXRlLmlubmVyQ2hhcnQ7XG5cdFx0bGV0IGZpbmFsU3RhdGU7XG5cblx0XHRpZiAoaW5uZXJDaGFydFN0YXRlKSB7XG5cdFx0XHRpZiAoc2hvdWxkQXBwbHlEaWZmU3RhdGUgJiYgaW5uZXJDaGFydFN0YXRlLmluaXRpYWxTdGF0ZSkge1xuXHRcdFx0XHRmaW5hbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLmRpZmZTdGF0ZShcblx0XHRcdFx0XHR0aGlzLmNvbnRlbnQsXG5cdFx0XHRcdFx0aW5uZXJDaGFydFN0YXRlLmluaXRpYWxTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdFx0aW5uZXJDaGFydFN0YXRlLmZ1bGxTdGF0ZSBhcyBvYmplY3Rcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZpbmFsU3RhdGUgPSBpbm5lckNoYXJ0U3RhdGUuZnVsbFN0YXRlO1xuXHRcdFx0fVxuXHRcdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQsIGZpbmFsU3RhdGUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgYnkgdGhlIE1EQyBzdGF0ZSB1dGlsIHdoZW4gdGhlIHN0YXRlIGZvciB0aGlzIGNvbnRyb2wncyBjaGlsZCBoYXMgY2hhbmdlZC5cblx0ICovXG5cdGhhbmRsZVN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuXHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8uZ2V0RXh0ZW5zaW9uQVBJKCkudXBkYXRlQXBwU3RhdGUoKTtcblx0fVxuXG5cdF9jcmVhdGVDb250ZW50KCk6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0Ly8gV2UgbmVlZCB0byByZW1vdmUgdGhlIGN1cnJlbnQgZmlsdGVyIGZyb20gdGhlIG9sZCAodG8gYmUgZGVzdHJveWVkKSBDaGFydCBpbnN0YW5jZSBiZWNhdXNlIGlmIHdlIGRvbid0IHRoZW4gZm9yIHNvbWUgc3RyYW5nZSByZWFzb24sIHRoZSBvbGQgQ2hhcnQgaW5zdGFuY2UgdXNlZCB0b1xuXHRcdFx0Ly8gcmVhY3QgZm9yIGZpbHRlciBiYXIgYWN0aW9uLCBmb3IgZXhhbXBsZSwgb24gQ2xpY2sgb2YgR28uXG5cdFx0XHR0aGlzLmNvbnRlbnQuc2V0RmlsdGVyKFwiXCIpO1xuXHRcdFx0dGhpcy5jb250ZW50LmRlc3Ryb3koKTtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0fVxuXG5cdHNldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnRpZXMoKSkuaW5jbHVkZXMoa2V5KSkge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgdHJ1ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cmVtb3ZlQWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCB8IG51bWJlciB8IHN0cmluZywgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IE1hbmFnZWRPYmplY3QgfCBudWxsIHtcblx0XHRsZXQgcmVtb3ZlZDogTWFuYWdlZE9iamVjdCB8IG51bGw7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldEFnZ3JlZ2F0aW9ucygpKS5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdFx0cmVtb3ZlZCA9IHN1cGVyLnJlbW92ZUFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdFx0dGhpcy5fY3JlYXRlQ29udGVudCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZW1vdmVkID0gc3VwZXIucmVtb3ZlQWdncmVnYXRpb24obmFtZSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiByZW1vdmVkO1xuXHR9XG5cblx0YWRkQWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCwgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWdncmVnYXRpb25zKCkpLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRzdXBlci5hZGRBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHRcdHRoaXMuX2NyZWF0ZUNvbnRlbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuYWRkQWdncmVnYXRpb24obmFtZSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0aW5zZXJ0QWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCwgaW5kZXg6IG51bWJlciwgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWdncmVnYXRpb25zKCkpLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRzdXBlci5pbnNlcnRBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgaW5kZXgsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLmluc2VydEFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBpbmRleCwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IE1EQ0NoYXJ0IHtcblx0XHRpZiAodGhpcy5jb250ZXh0UGF0aCkge1xuXHRcdFx0dGhpcy5fcmVzb2x2ZWRDb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGguZW5kc1dpdGgoXCIvXCIpID8gdGhpcy5jb250ZXh0UGF0aCA6IHRoaXMuY29udGV4dFBhdGggKyBcIi9cIjtcblx0XHR9XG5cblx0XHRyZXR1cm4gZ2V0TWRjQ2hhcnRUZW1wbGF0ZShcblx0XHRcdHRoaXMsXG5cdFx0XHR0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpPy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSA/PyAodGhpcy5fZ2V0T3duZXIoKT8uZ2V0Vmlld0RhdGEoKSBhcyB1bmtub3duIGFzIFZpZXdEYXRhKSxcblx0XHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk/LmdldERpYWdub3N0aWNzKCkgPz8gKHt9IGFzIERpYWdub3N0aWNzKSxcblx0XHRcdHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8Q2hhcnRDb250ZXh0T2JqZWN0UGF0aD4odGhpcy5tZXRhUGF0aCwgdGhpcy5fcmVzb2x2ZWRDb250ZXh0UGF0aCkhXG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTRFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFkQSxJQWdCcUJBLEtBQUssSUFBQUMsSUFBQSxHQUR6QkMsY0FBYyxDQUFDLHFCQUFxQixFQUFFO0lBQUVDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QjtFQUFFLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRWpGQyxrQkFBa0IsQ0FBQyxrRUFBa0Us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
|