@sapui5/sap.fe.macros 1.138.0 → 1.139.1
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/Breadcrumbs.js +269 -0
- package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
- package/src/sap/fe/macros/Chart.js +1 -1
- package/src/sap/fe/macros/Chart.tsx +1 -1
- package/src/sap/fe/macros/CommonHelper.js +2 -2
- package/src/sap/fe/macros/CommonHelper.ts +1 -1
- package/src/sap/fe/macros/Field.js +21 -4
- package/src/sap/fe/macros/Field.ts +21 -3
- package/src/sap/fe/macros/FooterContent.js +40 -10
- package/src/sap/fe/macros/FooterContent.tsx +44 -8
- package/src/sap/fe/macros/FormElement.js +2 -2
- package/src/sap/fe/macros/FormElement.ts +1 -2
- package/src/sap/fe/macros/MultiValueField.js +17 -4
- package/src/sap/fe/macros/MultiValueField.tsx +7 -2
- package/src/sap/fe/macros/RichTextEditor.js +30 -6
- package/src/sap/fe/macros/RichTextEditor.tsx +34 -7
- package/src/sap/fe/macros/Share.js +73 -40
- package/src/sap/fe/macros/Share.tsx +29 -1
- package/src/sap/fe/macros/ValueHelp.js +4 -29
- package/src/sap/fe/macros/ValueHelp.tsx +2 -43
- package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
- package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
- package/src/sap/fe/macros/ai/EasyFilterBar.js +30 -30
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +40 -43
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
- package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
- package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
- package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
- package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
- package/src/sap/fe/macros/controls/FilterBar.js +86 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +97 -2
- package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
- package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
- package/src/sap/fe/macros/controls/Section.js +3 -2
- package/src/sap/fe/macros/controls/Section.ts +2 -1
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/designtime/Designtime.helper.js +12 -2
- package/src/sap/fe/macros/designtime/Designtime.helper.ts +12 -0
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +16 -5
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +6 -1
- package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
- package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
- package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
- package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
- package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
- package/src/sap/fe/macros/filter/FilterUtils.js +7 -1
- package/src/sap/fe/macros/filter/FilterUtils.ts +7 -0
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
- package/src/sap/fe/macros/form/Form.block.js +6 -2
- package/src/sap/fe/macros/form/Form.block.ts +4 -1
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
- package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
- package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
- package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
- package/src/sap/fe/macros/form/FormDelegate.js +20 -1
- package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
- package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
- package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
- package/src/sap/fe/macros/internal/DataPoint.js +2 -1
- package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
- package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
- package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
- package/src/sap/fe/macros/internal/FilterField.block.js +4 -2
- package/src/sap/fe/macros/internal/FilterField.block.ts +3 -1
- package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +52 -12
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +54 -5
- package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +10 -0
- package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
- package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +3 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -0
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +11 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +12 -7
- package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +11 -6
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +12 -7
- package/src/sap/fe/macros/messagebundle.properties +37 -29
- package/src/sap/fe/macros/messagebundle_ar.properties +5 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +6 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +8 -6
- package/src/sap/fe/macros/messagebundle_cnr.properties +5 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +4 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +7 -5
- package/src/sap/fe/macros/messagebundle_da.properties +6 -4
- package/src/sap/fe/macros/messagebundle_de.properties +11 -9
- package/src/sap/fe/macros/messagebundle_el.properties +7 -5
- package/src/sap/fe/macros/messagebundle_en.properties +8 -6
- package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -6
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +8 -6
- package/src/sap/fe/macros/messagebundle_es.properties +6 -4
- package/src/sap/fe/macros/messagebundle_es_MX.properties +6 -4
- package/src/sap/fe/macros/messagebundle_et.properties +5 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +8 -6
- package/src/sap/fe/macros/messagebundle_fr.properties +6 -4
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -6
- package/src/sap/fe/macros/messagebundle_hi.properties +6 -4
- package/src/sap/fe/macros/messagebundle_hr.properties +6 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +4 -2
- package/src/sap/fe/macros/messagebundle_id.properties +8 -6
- package/src/sap/fe/macros/messagebundle_it.properties +4 -2
- package/src/sap/fe/macros/messagebundle_iw.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +5 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ko.properties +4 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +6 -4
- package/src/sap/fe/macros/messagebundle_lv.properties +5 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +8 -6
- package/src/sap/fe/macros/messagebundle_nl.properties +7 -5
- package/src/sap/fe/macros/messagebundle_no.properties +6 -4
- package/src/sap/fe/macros/messagebundle_pl.properties +6 -4
- package/src/sap/fe/macros/messagebundle_pt.properties +7 -5
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -4
- package/src/sap/fe/macros/messagebundle_ro.properties +7 -5
- package/src/sap/fe/macros/messagebundle_ru.properties +4 -2
- package/src/sap/fe/macros/messagebundle_sh.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +6 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +5 -3
- package/src/sap/fe/macros/messagebundle_th.properties +4 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +4 -2
- package/src/sap/fe/macros/messagebundle_uk.properties +10 -8
- package/src/sap/fe/macros/messagebundle_vi.properties +6 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +5 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +5 -3
- package/src/sap/fe/macros/messages/MessageButton.js +17 -19
- package/src/sap/fe/macros/messages/MessageButton.ts +24 -22
- package/src/sap/fe/macros/table/Action.js +24 -2
- package/src/sap/fe/macros/table/Action.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroup.js +24 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
- package/src/sap/fe/macros/table/Column.js +3 -3
- package/src/sap/fe/macros/table/Column.ts +2 -2
- package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +32 -6
- package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
- package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
- package/src/sap/fe/macros/table/Table.block.js +137 -108
- package/src/sap/fe/macros/table/Table.block.tsx +29 -2
- package/src/sap/fe/macros/table/Table.js +7 -1
- package/src/sap/fe/macros/table/Table.tsx +7 -1
- package/src/sap/fe/macros/table/TableAPI.js +150 -133
- package/src/sap/fe/macros/table/TableAPI.ts +20 -3
- package/src/sap/fe/macros/table/TableDefinition.js +4 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
- package/src/sap/fe/macros/table/TableRuntime.js +3 -3
- package/src/sap/fe/macros/table/TableRuntime.ts +2 -2
- package/src/sap/fe/macros/table/TableSizeHelper.js +3 -3
- package/src/sap/fe/macros/table/TableSizeHelper.ts +5 -2
- package/src/sap/fe/macros/table/TreeTable.js +7 -1
- package/src/sap/fe/macros/table/TreeTable.tsx +7 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +27 -20
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +35 -26
- package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
- package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +8 -8
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +7 -6
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +4 -1
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +3 -0
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +37 -8
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +47 -16
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -6
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -2
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +15 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +17 -2
|
@@ -929,4 +929,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
|
|
|
929
929
|
_exports = Chart;
|
|
930
930
|
return _exports;
|
|
931
931
|
}, false);
|
|
932
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsIl9kZWM0IiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzUiLCJyZXF1aXJlZCIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiZGVmYXVsdFZhbHVlIiwiX2RlYzkiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiYXNzb2NpYXRpb24iLCJfZGVjMTciLCJhZ2dyZWdhdGlvbiIsIl9kZWMxOCIsImFsdFR5cGVzIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJBY3Rpb24iLCJfZGVjMTkiLCJldmVudCIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsInhtbEV2ZW50SGFuZGxlciIsIl9kZWMyNSIsIl9kZWMyNiIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9NYWNyb0FQSSIsInNldHRpbmdzIiwib3RoZXJzIiwiX3RoaXMiLCJfYXBwbHlJZFRvQ29udGVudCIsImlkIiwiZ2VuZXJhdGUiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwicHJldkRyaWxsU3RhY2siLCJpbml0aWFsQ29udHJvbFN0YXRlIiwiY2hhcnRBY3Rpb25zIiwiX2NvbW1hbmRBY3Rpb25zIiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2Rlc2NyaXB0b3IyMSIsIl9kZXNjcmlwdG9yMjIiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0U2VjdGlvbkNvbnRlbnRSb2xlIiwic2VuZERhdGFUb0NvbnN1bWVyIiwiY29uc3VtZXJEYXRhIiwiY29udGVudCIsInNldEhlYWRlciIsInRpdGxlIiwic2V0SGVhZGVyU3R5bGUiLCJzZXRIZWFkZXJMZXZlbCIsInRpdGxlTGV2ZWwiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsImlzQSIsInR5cGVOYW1lIiwib2xkVmFsaWRUeXBlIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5jbHVkZXMiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiY3JlYXRlQ29udGVudCIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJhZnRlclJlbmRlcmluZ0V2ZW50IiwidmlldyIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsImludGVybmFsTW9kZWxDb250ZXh0IiwiY2hhcnQiLCJnZXRDb250ZW50Iiwic2hvd01lc3NhZ2VTdHJpcCIsInNDaGFydEVudGl0eVBhdGgiLCJkYXRhIiwic0NhY2hlS2V5Iiwib0JpbmRpbmdDb250ZXh0IiwiZ2V0T2JqZWN0Iiwic2V0UHJvcGVydHkiLCJhdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIiLCJTdGF0ZVV0aWwiLCJkZXRhY2hTdGF0ZUNoYW5nZSIsInN0YXRlQ2hhbmdlSGFuZGxlciIsImF0dGFjaFN0YXRlQ2hhbmdlIiwib0V2ZW50IiwiY29udHJvbCIsImdldFBhcmFtZXRlciIsImNoYXJ0QmxvY2siLCJnZXRQYXJlbnQiLCJoYW5kbGVTdGF0ZUNoYW5nZSIsInJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzIiwib0ZpbHRlckNvbnRyb2wiLCJvQ2hhcnQiLCJGaWx0ZXJVdGlscyIsImdldE5vdEFwcGxpY2FibGVGaWx0ZXJzIiwiaGFuZGxlU2VsZWN0aW9uQ2hhbmdlIiwiYURhdGEiLCJiU2VsZWN0ZWQiLCJDaGFydFJ1bnRpbWUiLCJmblVwZGF0ZUNoYXJ0IiwiZmlyZUV2ZW50IiwibWVyZ2UiLCJzZWxlY3RlZCIsIm9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkIiwiY29sbGVjdEF2YWlsYWJsZUNhcmRzIiwiY2FyZHMiLCJhY3Rpb25Ub29sYmFySXRlbXMiLCJnZXRBY3Rpb25zIiwiaGFzSW5zaWdodEFjdGlvbkVuYWJsZWQiLCJnZXRGaWx0ZXIiLCJjYXJkIiwiZ2V0Q2FyZE1hbmlmZXN0Q2hhcnQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwicHVzaCIsImdldENoYXJ0Q29udHJvbCIsImdldEhlYWRlciIsImNhbGxiYWNrIiwib25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrIiwiYmluZCIsImhhc1NlbGVjdGlvbnMiLCJtZGNDaGFydCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsImdldElubmVyQ2hhcnQiLCJhRGltZW5zaW9ucyIsIkNoYXJ0VXRpbHMiLCJnZXREaW1lbnNpb25zRnJvbURyaWxsU3RhY2siLCJiSXNEcmlsbERvd24iLCJiSXNEcmlsbFVwIiwiYk5vQ2hhbmdlIiwidG9TdHJpbmciLCJhRmlsdGVycyIsImdldENoYXJ0U2VsZWN0aW9ucyIsImVyciIsIkxvZyIsImVycm9yIiwib25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQiLCJpbnNpZ2h0c1BhcmFtcyIsImNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyIsInNob3dJbnNpZ2h0c0NhcmRQcmV2aWV3IiwiZSIsInNob3dHZW5lcmljRXJyb3JNZXNzYWdlIiwiZ2V0Q2FyZE1hbmlmZXN0Iiwic2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FyZFByZXZpZXciLCJjb2xsYWJvcmF0aW9uTWFuYWdlciIsImdldFNlcnZpY2UiLCJjaGFydEZpbHRlckluZm8iLCJnZXRBbGxGaWx0ZXJJbmZvIiwiZmlsdGVycyIsImZvckVhY2giLCJmaWx0ZXIiLCJnZXRQYXRoIiwic1BhdGgiLCJnZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMiLCJGaWx0ZXIiLCJhbmQiLCJ1bmRlZmluZWQiLCJnZXRQcm9wZXJ0eURhdGFNb2RlbCIsInByb3BlcnR5TmFtZSIsIm1ldGFQYXRoIiwibWV0YU1vZGVsIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJkaW1lbnNpb25Db250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJjaGFydFByb3BlcnR5IiwiZ2V0SW50ZXJuYWxDaGFydE5hbWVGcm9tUHJvcGVydHlOYW1lQW5kS2luZCIsIm5hbWUiLCJraW5kIiwicmVwbGFjZSIsIl9jb252ZXJ0U3RhdGVVdGlsVG9QcmVzZW50YXRpb25WYXJpYW50IiwiY2hhcnRTdGF0ZSIsInNvcnRPcmRlciIsInNvcnRlcnMiLCJtYXAiLCJzb3J0ZXIiLCJQcm9wZXJ0eSIsIkRlc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwic3VwcGxlbWVudGFyeUNvbmZpZyIsInByb3BlcnRpZXMiLCJjaGFydFR5cGUiLCJjaGFydFR5cGVJblJlcXVpcmVkRm9ybWF0IiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImRpbWVuc2lvbnMiLCJtZWFzdXJlcyIsImRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJtZWFzdXJlQXR0cmlidXRlcyIsIml0ZW1zIiwiaXRlbSIsInJvbGUiLCJzdWJzdHJpbmciLCJEaW1lbnNpb24iLCJSb2xlIiwiTWVhc3VyZSIsImNoYXJ0Vml6IiwiQ29udGVudCIsIkNoYXJ0VHlwZSIsIkRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJEaW1lbnNpb25zIiwiTWVhc3VyZUF0dHJpYnV0ZXMiLCJNZWFzdXJlcyIsIlR5cGUiLCJjaGFydFBWIiwiUHJlc2VudGF0aW9uVmFyaWFudCIsInNldENoYXJ0VmlzdWFsaXphdGlvbiIsInNldFByb3BlcnRpZXMiLCJTb3J0T3JkZXIiLCJnZXRQcmVzZW50YXRpb25WYXJpYW50IiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwiZ2V0SWQiLCJtZXNzYWdlIiwiRXJyb3IiLCJTdHJpbmciLCJzZXRQcmVzZW50YXRpb25WYXJpYW50IiwicHJlc2VudGF0aW9uVmFyaWFudCIsImV4aXN0aW5nUHJlc2VudGF0aW9uVmFyaWFudCIsInByb3BlcnRpZXNJbmZvIiwiZmV0Y2hQcm9wZXJ0aWVzIiwic3RhdGVVdGlsUHYiLCJQcmVzZW50YXRpb25WYXJpYW50VG9TdGF0ZVV0aWxzUFYiLCJjb252ZXJ0UHZUb1N0YXRlVXRpbFB2IiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiZ2V0Q3VycmVudFZhcmlhbnRLZXkiLCJnZXRWYXJpYW50Iiwic2V0Q3VycmVudFZhcmlhbnRLZXkiLCJrZXkiLCJ2YXJpYW50TWFuYWdlbWVudCIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJTdGF0ZUhlbHBlciIsInNldFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50IiwicHJlZmlsbERlc2NyaXB0aW9ucyIsImFyZ3VtZW50cyIsInNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2wiLCJnZXRDb250cm9sU3RhdGUiLCJjb250cm9sU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJzZXRJbml0aWFsU3RhdGUiLCJyZXRyaWV2ZVN0YXRlIiwiaW5uZXJDaGFydCIsInZhcmlhbnRUb1JldHJpZXZlIiwidmFyaWFudE1hbmFnZW1lbnRDb250cm9sIiwidmFyaWFudElkIiwiYXBwbHlMZWdhY3lTdGF0ZSIsIl9uYXZQYXJhbWV0ZXJzIiwic2hvdWxkQXBwbHlEaWZmU3RhdGUiLCJ2bSIsInZtU3RhdGUiLCJhcHBseVN0YXRlIiwiY3VycmVudFZhcmlhbnQiLCJvdk0iLCJhVmFyaWFudHMiLCJnZXRWYXJpYW50cyIsInNWYXJpYW50UmVmZXJlbmNlIiwic29tZSIsIm9WYXJpYW50IiwiZ2V0S2V5IiwiZ2V0U3RhbmRhcmRWYXJpYW50S2V5IiwiQ29udHJvbFZhcmlhbnRBcHBseUFQSSIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwiYWN0aXZhdGVWYXJpYW50IiwiZWxlbWVudCIsInZhcmlhbnRSZWZlcmVuY2UiLCJpbm5lckNoYXJ0U3RhdGUiLCJmaW5hbFN0YXRlIiwiZGlmZlN0YXRlIiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJfY3JlYXRlQ29udGVudCIsIm93bmVyIiwiX2dldE93bmVyIiwic2V0RmlsdGVyIiwiZGVzdHJveSIsInZhbHVlIiwic3VwcHJlc3NJbnZhbGlkYXRlIiwiX2FwcGx5aW5nU2V0dGluZ3MiLCJnZXRNZXRhZGF0YSIsImdldFByb3BlcnRpZXMiLCJyZW1vdmVBZ2dyZWdhdGlvbiIsInJlbW92ZWQiLCJnZXRBZ2dyZWdhdGlvbnMiLCJhZGRBZ2dyZWdhdGlvbiIsImluc2VydEFnZ3JlZ2F0aW9uIiwiaW5kZXgiLCJjb250ZXh0UGF0aCIsIl9yZXNvbHZlZENvbnRleHRQYXRoIiwiZW5kc1dpdGgiLCJnZXRNZGNDaGFydFRlbXBsYXRlIiwiZ2V0Um9vdENvbnRyb2xsZXIiLCJnZXRWaWV3RGF0YSIsImdldEFwcENvbXBvbmVudCIsImdldERpYWdub3N0aWNzIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJNYWNyb0FQSSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIlRpdGxlTGV2ZWwiLCJBdXRvIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDaGFydC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDaGFydCBhcyBWb2NhYnVsYXJ5Q2hhcnQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHR5cGUgQ2hhcnRDaGFydCBmcm9tIFwic2FwL2NoYXJ0L0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBhc3NvY2lhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5LCB4bWxFdmVudEhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25QYXJhbWV0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgdHlwZSBJVmlld1N0YXRlQ29udHJpYnV0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3ZpZXdTdGF0ZS9JVmlld1N0YXRlQ29udHJpYnV0b3JcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydFZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UsIFdyYXBwZWRDYXJkIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSBEaWFnbm9zdGljcyBmcm9tIFwic2FwL2ZlL2NvcmUvc3VwcG9ydC9EaWFnbm9zdGljc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jaGFydC9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgQ2hhcnRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0UnVudGltZVwiO1xuaW1wb3J0IENoYXJ0VXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQ2hhcnRVdGlsc1wiO1xuaW1wb3J0IHR5cGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3VtZXJEYXRhIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvc2VjdGlvbi9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IERpbWVuc2lvblR5cGUsIE1lYXN1cmVUeXBlLCBWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1ByZXNlbnRhdGlvblZhcmlhbnRcIjtcbmltcG9ydCBQcmVzZW50YXRpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9QcmVzZW50YXRpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSB7IENhcmRNYW5pZmVzdCB9IGZyb20gXCJzYXAvaW5zaWdodHMvQ2FyZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgRXZlbnQsIGRlZmF1bHQgYXMgVUk1RXZlbnQgfSBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIExheW91dERhdGEgZnJvbSBcInNhcC91aS9jb3JlL0xheW91dERhdGFcIjtcbmltcG9ydCB7IFRpdGxlTGV2ZWwgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgTURDQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIENoYXJ0RGVsZWdhdGUgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnREZWxlZ2F0ZVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uVG9vbGJhckFjdGlvbiBmcm9tIFwic2FwL3VpL21kYy9hY3Rpb250b29sYmFyL0FjdGlvblRvb2xiYXJBY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgQXBwU3RhdGUsIEl0ZW1zLCBTb3J0ZXJzIH0gZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIE1vZGVsQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwiLi9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCBNYWNyb0FQSSBmcm9tIFwiLi9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25PckFjdGlvbkdyb3VwLCBDaGFydENvbnRleHRPYmplY3RQYXRoLCBDaGFydEN1c3RvbURhdGEsIENvbW1hbmRBY3Rpb24gfSBmcm9tIFwiLi9jaGFydC9NZGNDaGFydFRlbXBsYXRlXCI7XG5pbXBvcnQgeyBnZXRNZGNDaGFydFRlbXBsYXRlIH0gZnJvbSBcIi4vY2hhcnQvTWRjQ2hhcnRUZW1wbGF0ZVwiO1xuaW1wb3J0IFByZXNlbnRhdGlvblZhcmlhbnRUb1N0YXRlVXRpbHNQViBmcm9tIFwiLi9jaGFydC9hZGFwdGVyL0NoYXJ0UHZUb1N0YXRlVXRpbHNcIjtcbmltcG9ydCB7IGNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyB9IGZyb20gXCIuL2luc2lnaHRzL0FuYWx5dGljYWxJbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sU3RhdGUgfSBmcm9tIFwiLi9pbnNpZ2h0cy9Db21tb25JbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHsgaGFzSW5zaWdodEFjdGlvbkVuYWJsZWQsIHNob3dHZW5lcmljRXJyb3JNZXNzYWdlIH0gZnJvbSBcIi4vaW5zaWdodHMvQ29tbW9uSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRDb250ZW50LCBJbnNpZ2h0c1BhcmFtcyB9IGZyb20gXCIuL2luc2lnaHRzL0luc2lnaHRzU2VydmljZVwiO1xuaW1wb3J0IHsgZ2V0Q2FyZE1hbmlmZXN0LCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldywgc2hvd0luc2lnaHRzQ2FyZFByZXZpZXcgfSBmcm9tIFwiLi9pbnNpZ2h0cy9JbnNpZ2h0c1NlcnZpY2VcIjtcbmltcG9ydCBTdGF0ZUhlbHBlciBmcm9tIFwiLi9tZGMvYWRhcHRlci9TdGF0ZUhlbHBlclwiO1xuXG5leHBvcnQgdHlwZSBDaGFydFN0YXRlID0ge1xuXHRpbm5lckNoYXJ0Pzoge1xuXHRcdGluaXRpYWxTdGF0ZT86IHtcblx0XHRcdGl0ZW1zPzogeyBuYW1lOiBzdHJpbmcgfVtdO1xuXHRcdH07XG5cdFx0ZnVsbFN0YXRlPzoge1xuXHRcdFx0aXRlbXM/OiB7IG5hbWU6IHN0cmluZyB9W107XG5cdFx0XHRmaWx0ZXI/OiBvYmplY3Q7XG5cdFx0fTtcblx0fTtcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiB7XG5cdFx0dmFyaWFudElkPzogc3RyaW5nIHwgbnVsbDtcblx0fTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSBjaGFydCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9idWlsZGluZ0Jsb2Nrcy9jaGFydC9jaGFydERlZmF1bHQgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2tzfVxuICogPGJyPlxuICogVXN1YWxseSwgYSBjb250ZXh0UGF0aCBhbmQgbWV0YVBhdGggaXMgZXhwZWN0ZWQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpDaGFydCBpZD1cIk15Q2hhcnRcIiBjb250ZXh0UGF0aD1cIi9Sb290RW50aXR5XCIgbWV0YVBhdGg9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIiAvJmd0O1xuICogPC9wcmU+XG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5DaGFydFxuICogQGlnbm9yZUludGVyZmFjZSBzYXAuZmUubWFjcm9zLmNvbnRyb2xzLnNlY3Rpb24uSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclxuICogQHVpNS1tZXRhbW9kZWxcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5DaGFydFwiLCB7IHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCJdIH0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFydCBleHRlbmRzIE1hY3JvQVBJIGltcGxlbWVudHMgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciwgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPENoYXJ0U3RhdGU+IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIilcblx0X19pbXBsZW1lbnRzX19zYXBfZmVfY29yZV9jb250cm9sbGVyZXh0ZW5zaW9uc192aWV3U3RhdGVfSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yID0gdHJ1ZTtcblxuXHRjb250ZW50ITogTURDQ2hhcnQ7XG5cblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuc2VjdGlvbi5JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX2ZlX21hY3Jvc19jb250cm9sc19zZWN0aW9uX0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IgPSB0cnVlO1xuXG5cdGdldFNlY3Rpb25Db250ZW50Um9sZSgpOiBcInByb3ZpZGVyXCIgfCBcImNvbnN1bWVyXCIge1xuXHRcdHJldHVybiBcImNvbnN1bWVyXCI7XG5cdH1cblxuXHQvKipcblx0ICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNlbmREYXRhVG9Db25zdW1lciBtZXRob2Qgd2hpY2ggaXMgYSBwYXJ0IG9mIHRoZSBJU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXG5cdCAqXG5cdCAqIFdpbGwgYmUgY2FsbGVkIGZyb20gdGhlIHNhcC5mZS5tYWNyb3MuY29udHJvbHMuU2VjdGlvbiBjb250cm9sIHdoZW4gdGhlcmUgaXMgYSBDaGFydCBidWlsZGluZyBibG9jayByZW5kZXJlZCB3aXRoaW4gYSBzZWN0aW9uXG5cdCAqIGFsb25nIHdpdGggdGhlIGNvbnN1bWVyRGF0YSBpLmUuIHNlY3Rpb24ncyBkYXRhIHN1Y2ggYXMgdGl0bGUgYW5kIHRpdGxlIGxldmVsIHdoaWNoIGlzIHRoZW4gYXBwbGllZCB0byB0aGUgY2hhcnQgdXNpbmcgdGhlIGltcGxlbWVudGF0aW9uIGJlbG93IGFjY29yZGluZ2x5LlxuXHQgKlxuXHQgKi9cblxuXHRzZW5kRGF0YVRvQ29uc3VtZXIoY29uc3VtZXJEYXRhOiBDb25zdW1lckRhdGEpOiB2b2lkIHtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlcihjb25zdW1lckRhdGEudGl0bGUpO1xuXHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyU3R5bGUoXCJINFwiKTtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlckxldmVsKGNvbnN1bWVyRGF0YS50aXRsZUxldmVsIGFzIFRpdGxlTGV2ZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBjaGFydFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBpZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgcHJlc2VudGF0aW9uIGNvbnRleHQgKFVJLkNoYXJ0IHdpdGggb3Igd2l0aG91dCBhIHF1YWxpZmllcilcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1xuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50XCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcIlxuXHRcdF1cblx0fSlcblx0cmVhZG9ubHkgbWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eVNldCBvciBuYXZpZ2F0aW9uUHJvcGVydHlcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW11cblx0fSlcblx0cmVhZG9ubHkgY29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIHRleHQgdGhhdCBpcyBzaG93biBpbiB0aGUgY2hhcnRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBoZWFkZXIhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0cmVhZG9ubHkgaGVhZGVyVmlzaWJsZSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIGNoYXJ0LlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCBvciBgTXVsdGlwbGVgXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJNdWx0aXBsZVwiLCBhbGxvd2VkVmFsdWVzOiBbXCJOb25lXCIsIFwiU2luZ2xlXCIsIFwiTXVsdGlwbGVcIl0gfSlcblx0cmVhZG9ubHkgc2VsZWN0aW9uTW9kZSE6IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIGtpbmQgb2YgdmFyaWFudCBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydC5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZSBpcyBgQ29udHJvbGAuPGJyLz5cblx0ICogSWYgc2V0IHdpdGggdmFsdWUgYENvbnRyb2xgLCBhIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIHNlZW4gd2l0aGluIHRoZSBjaGFydCBhbmQgdGhlIGNoYXJ0IGlzIGxpbmtlZCB0byB0aGlzLjxici8+XG5cdCAqIElmIG5vdCBzZXQgd2l0aCBhbnkgdmFsdWUsIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgY2hhcnQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0cmVhZG9ubHkgdmFyaWFudE1hbmFnZW1lbnQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydCBwZXJzb25hbGl6YXRpb24gZGlhbG9nLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYHRydWVgLCBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhpcyBraW5kIG9mIGNoYXJ0IGFyZSBlbmFibGVkLjxici8+XG5cdCAqIElmIGl0IGlzIHNldCB0byBgZmFsc2VgLCBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWQuPGJyLz5cblx0ICogPGJyLz5cblx0ICogWW91IGNhbiBhbHNvIHByb3ZpZGUgYSBtb3JlIGdyYW51bGFyIGNvbnRyb2wgZm9yIHRoZSBwZXJzb25hbGl6YXRpb24gYnkgcHJvdmlkaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aCB0aGUgb3B0aW9ucyB5b3Ugd2FudCB0byBiZSBhdmFpbGFibGUuPGJyLz5cblx0ICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOjxici8+XG5cdCAqIC0gU29ydDxici8+XG5cdCAqIC0gVHlwZTxici8+XG5cdCAqIC0gSXRlbTxici8+XG5cdCAqIC0gRmlsdGVyPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0pXG5cdHJlYWRvbmx5IHBlcnNvbmFsaXphdGlvbiE6IHN0cmluZyB8IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEhlYWRlciBsZXZlbCBvZiBjaGFydFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBoZWFkZXJMZXZlbDogVGl0bGVMZXZlbCA9IFRpdGxlTGV2ZWwuQXV0bztcblxuXHQvKipcblx0ICogQ2hhcnQgZGVsZWdhdGVcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0cmVhZG9ubHkgY2hhcnREZWxlZ2F0ZT86IG9iamVjdDtcblxuXHQvKipcblx0ICogVXNlZCBpbnRlcm5hbGx5IGZvciBMUiBhbmQgT1Bcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHJlYWRvbmx5IF9hcHBseUlkVG9Db250ZW50ID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIE5vIGRhdGEgdGV4dFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBub0RhdGFUZXh0Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQYXJhbWV0ZXIgd2l0aCBkcmlsbHN0YWNrIG9uIGEgZHJpbGwgdXAvIGRyaWxsIGRvd24gb2YgdGhlIE1EQ19DaGFydFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJldkRyaWxsU3RhY2s6IHN0cmluZ1tdID0gW107XG5cblx0X2NvbnRlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF9jb250ZXh0ITogTW9kZWxDb250ZXh0O1xuXG5cdGJsb2NrQWN0aW9ucz86IEFjdGlvbk9yQWN0aW9uR3JvdXA7XG5cblx0X2Jsb2NrSWQ/OiBzdHJpbmc7XG5cblx0X3BlcnNvbmFsaXphdGlvbj86IHN0cmluZyB8IGJvb2xlYW47XG5cblx0aW5pdGlhbENvbnRyb2xTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRfYmxvY2tBY3Rpb25zITogKE1lbnVJdGVtIHwgQWN0aW9uVG9vbGJhckFjdGlvbiB8IHVuZGVmaW5lZClbXTtcblxuXHRjaGFydERlZmluaXRpb24hOiBDaGFydFZpc3VhbGl6YXRpb247XG5cblx0bmF2aWdhdGlvblBhdGg/OiBzdHJpbmc7XG5cblx0YXV0b0JpbmRPbkluaXQ/OiBib29sZWFuO1xuXG5cdHZpelByb3BlcnRpZXM/OiBzdHJpbmc7XG5cblx0Y2hhcnRBY3Rpb25zPzogQmFzZUFjdGlvbltdID0gW107XG5cblx0ZmlsdGVyPzogc3RyaW5nO1xuXG5cdHZpc2libGU/OiBzdHJpbmc7XG5cblx0ZHJhZnRTdXBwb3J0ZWQ/OiBib29sZWFuO1xuXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHR1c2VDb25kZW5zZWRMYXlvdXQhOiBib29sZWFuO1xuXG5cdF9tZXRhUGF0aENvbnRleHQhOiBNb2RlbENvbnRleHQ7XG5cblx0X2N1c3RvbURhdGEhOiBDaGFydEN1c3RvbURhdGE7XG5cblx0X2NoYXJ0Q29udGV4dCE6IE1vZGVsQ29udGV4dDtcblxuXHRfY2hhcnRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X2NoYXJ0ITogVm9jYWJ1bGFyeUNoYXJ0O1xuXG5cdF9tZXRhTW9kZWwhOiBPRGF0YU1ldGFNb2RlbDtcblxuXHRtZWFzdXJlcz86IE1vZGVsQ29udGV4dDtcblxuXHRfc29ydENvbmRpdGlvbnM6IG9iamVjdCB8IHVuZGVmaW5lZDtcblxuXHRfY29tbWFuZEFjdGlvbnM6IENvbW1hbmRBY3Rpb25bXSA9IFtdO1xuXG5cdGZpcmVWYXJpYW50U2VsZWN0ZWQ/OiBGdW5jdGlvbjtcblxuXHRmaXJlVmFyaWFudFNhdmVkPzogRnVuY3Rpb247XG5cblx0ZmlyZVNlZ21lbnRlZEJ1dHRvblByZXNzZWQ/OiBGdW5jdGlvbjtcblxuXHRfcmVzb2x2ZWRDb250ZXh0UGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogSWQgb2YgdGhlIEZpbHRlckJhciBidWlsZGluZyBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIGNoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiB9KVxuXHRmaWx0ZXJCYXI/OiBzdHJpbmc7XG5cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC51aS5jb3JlLkxheW91dERhdGFcIlxuXHR9KVxuXHRsYXlvdXREYXRhITogTGF5b3V0RGF0YTtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIGFjdGlvbnMgb2YgdGhlIGNoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5jaGFydC5BY3Rpb25cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy5jaGFydC5BY3Rpb25Hcm91cFwiXSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRkZWZhdWx0Q2xhc3M6IEFjdGlvblxuXHR9KVxuXHRhY3Rpb25zITogQWN0aW9uW10gfCBBY3Rpb25Hcm91cFtdO1xuXG5cdC8qKlxuXHQgKiBHZXRzIGNvbnRleHRzIGZyb20gdGhlIGNoYXJ0IHRoYXQgaGF2ZSBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLlxuXHQgKiBAcmV0dXJucyBDb250ZXh0cyBvZiB0aGUgcm93cyBzZWxlY3RlZCBieSB0aGUgdXNlclxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKCk6IENvbnRleHRbXSB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudD8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJzZWxlY3RlZENvbnRleHRzXCIpIHx8IFtdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIGNoYXJ0IHNlbGVjdGlvbnMgYXJlIGNoYW5nZWQuIFRoZSBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGF0YSBzZWxlY3RlZC9kZXNlbGVjdGVkIGFuZCB0aGUgQm9vbGVhbiBmbGFnIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgZGF0YSBpcyBzZWxlY3RlZCBvciBkZXNlbGVjdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRzZWxlY3Rpb25DaGFuZ2UhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIGNoYXJ0IHJlcXVlc3RzIGRhdGEuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRpbnRlcm5hbERhdGFSZXF1ZXN0ZWQhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gY2hhcnQncyB2YXJpYW50IGlzIHNlbGVjdGVkLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QGV2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIGNoYXJ0J3MgdmFyaWFudCBpcyBzYXZlZC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBldmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBFdmVudCB0cmlnZ2VyZWQgd2hlbiBjaGFydCdzIHNlZ21lbnRlZCBidXR0b24gaS5lLiwgbW9kZSBiZXR3ZWVuIHRhYmxlLCBjaGFydCBhbmQgY2hhcnQgd2l0aCB0YWJsZSB2aWV3IGlzIHNlbGVjdGVkXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzc2VkITogRnVuY3Rpb247XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8Q2hhcnQ+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0aWYgKHNldHRpbmdzPy5fYXBwbHlJZFRvQ29udGVudCkge1xuXHRcdFx0c2V0dGluZ3MuaWQgPSBnZW5lcmF0ZShbc2V0dGluZ3MuaWQsIFwiOjpDaGFydFwiXSk7XG5cdFx0fVxuXHRcdHN1cGVyKHNldHRpbmdzLCBvdGhlcnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIGlzIG92ZXJyaWRkZW4gdG8gZW5zdXJlIGJhY2t3YXJkIGluY29tcGF0aWJpbGl0eVxuXHQgKiBAb3ZlcnJpZGVcblx0ICovXG5cdGlzQTxUIGV4dGVuZHMgQmFzZU9iamVjdCA9IEJhc2VPYmplY3Q+KHR5cGVOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMgaXMgVDtcblxuXHRpc0E8VD4odHlwZU5hbWU/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMgaXMgVDtcblxuXHRpc0EodHlwZU5hbWU6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgb2xkVmFsaWRUeXBlID0gXCJzYXAuZmUubWFjcm9zLmNoYXJ0LkNoYXJ0QVBJXCI7XG5cdFx0aWYgKChBcnJheS5pc0FycmF5KHR5cGVOYW1lKSAmJiB0eXBlTmFtZS5pbmNsdWRlcyhvbGRWYWxpZFR5cGUpKSB8fCB0eXBlTmFtZSA9PT0gb2xkVmFsaWRUeXBlKSByZXR1cm4gdHJ1ZTtcblxuXHRcdHJldHVybiBzdXBlci5pc0EodHlwZU5hbWUpO1xuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0b25BZnRlclJlbmRlcmluZyhhZnRlclJlbmRlcmluZ0V2ZW50OiBKUXVlcnkuRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRWaWV3KCk7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBjaGFydCA9IHRoaXMuZ2V0Q29udGVudCgpIGFzIENoYXJ0O1xuXHRcdGNvbnN0IHNob3dNZXNzYWdlU3RyaXA6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0gaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiY29udHJvbHMvc2hvd01lc3NhZ2VTdHJpcFwiKSB8fCB7fTtcblx0XHRjb25zdCBzQ2hhcnRFbnRpdHlQYXRoID0gY2hhcnQuZGF0YShcImVudGl0eVNldFwiKSxcblx0XHRcdHNDYWNoZUtleSA9IGAke3NDaGFydEVudGl0eVBhdGh9Q2hhcnRgLFxuXHRcdFx0b0JpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRzaG93TWVzc2FnZVN0cmlwW3NDYWNoZUtleV0gPVxuXHRcdFx0Y2hhcnQuZGF0YShcImRyYWZ0U3VwcG9ydGVkXCIpID09PSBcInRydWVcIiAmJiAhIW9CaW5kaW5nQ29udGV4dCAmJiAhb0JpbmRpbmdDb250ZXh0LmdldE9iamVjdChcIklzQWN0aXZlRW50aXR5XCIpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29udHJvbHMvc2hvd01lc3NhZ2VTdHJpcFwiLCBzaG93TWVzc2FnZVN0cmlwKTtcblx0XHR0aGlzLmF0dGFjaFN0YXRlQ2hhbmdlSGFuZGxlcigpO1xuXG5cdFx0c3VwZXIub25BZnRlclJlbmRlcmluZyhhZnRlclJlbmRlcmluZ0V2ZW50KTtcblx0fVxuXG5cdHByaXZhdGUgYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyKCk6IHZvaWQge1xuXHRcdFN0YXRlVXRpbC5kZXRhY2hTdGF0ZUNoYW5nZSh0aGlzLnN0YXRlQ2hhbmdlSGFuZGxlcik7XG5cdFx0U3RhdGVVdGlsLmF0dGFjaFN0YXRlQ2hhbmdlKHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0fVxuXG5cdHN0YXRlQ2hhbmdlSGFuZGxlcihvRXZlbnQ6IEV2ZW50PHsgY29udHJvbDogQ29udHJvbCB9Pik6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2wgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udHJvbFwiKTtcblx0XHRpZiAoY29udHJvbC5pc0E8Q2hhcnQ+KFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0Y29uc3QgY2hhcnRCbG9jayA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyB7IGhhbmRsZVN0YXRlQ2hhbmdlPzogRnVuY3Rpb24gfTtcblx0XHRcdGlmIChjaGFydEJsb2NrPy5oYW5kbGVTdGF0ZUNoYW5nZSkge1xuXHRcdFx0XHRjaGFydEJsb2NrLmhhbmRsZVN0YXRlQ2hhbmdlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMob0ZpbHRlckNvbnRyb2w6IENvbnRyb2wpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3Qgb0NoYXJ0ID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIEZpbHRlclV0aWxzLmdldE5vdEFwcGxpY2FibGVGaWx0ZXJzKG9GaWx0ZXJDb250cm9sIGFzIEZpbHRlckJhciwgb0NoYXJ0ISk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0aGFuZGxlU2VsZWN0aW9uQ2hhbmdlKG9FdmVudDogVUk1RXZlbnQ8eyBkYXRhOiB1bmtub3duW107IG5hbWU6IHN0cmluZyB9Pik6IHZvaWQge1xuXHRcdGNvbnN0IGFEYXRhID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImRhdGFcIik7XG5cdFx0Y29uc3QgYlNlbGVjdGVkID0gb0V2ZW50LmdldFBhcmFtZXRlcihcIm5hbWVcIikgPT09IFwic2VsZWN0RGF0YVwiO1xuXHRcdENoYXJ0UnVudGltZS5mblVwZGF0ZUNoYXJ0KG9FdmVudCk7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIiwgbWVyZ2Uoe30sIHsgZGF0YTogYURhdGEsIHNlbGVjdGVkOiBiU2VsZWN0ZWQgfSkpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkKCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiaW50ZXJuYWxEYXRhUmVxdWVzdGVkXCIpO1xuXHR9XG5cblx0QGNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyKFwiY29sbGFib3JhdGlvbk1hbmFnZXJcIiwgXCJjb2xsZWN0QXZhaWxhYmxlQ2FyZHNcIilcblx0YXN5bmMgY29sbGVjdEF2YWlsYWJsZUNhcmRzKGNhcmRzOiBXcmFwcGVkQ2FyZFtdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYWN0aW9uVG9vbGJhckl0ZW1zID0gdGhpcy5jb250ZW50LmdldEFjdGlvbnMoKSBhcyBBY3Rpb25Ub29sYmFyQWN0aW9uW107XG5cdFx0aWYgKGhhc0luc2lnaHRBY3Rpb25FbmFibGVkKGFjdGlvblRvb2xiYXJJdGVtcywgdGhpcy5jb250ZW50LmdldEZpbHRlcigpKSkge1xuXHRcdFx0Y29uc3QgY2FyZCA9IGF3YWl0IHRoaXMuZ2V0Q2FyZE1hbmlmZXN0Q2hhcnQoKTtcblx0XHRcdGlmIChPYmplY3Qua2V5cyhjYXJkKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNhcmRzLnB1c2goe1xuXHRcdFx0XHRcdGNhcmQ6IGNhcmQsXG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuZ2V0Q2hhcnRDb250cm9sKCkuZ2V0SGVhZGVyKCksXG5cdFx0XHRcdFx0Y2FsbGJhY2s6IHRoaXMub25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrLmJpbmQodGhpcylcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aGFzU2VsZWN0aW9ucygpOiBib29sZWFuIHtcblx0XHQvLyBjb25zaWRlciBjaGFydCBzZWxlY3Rpb25zIGluIHRoZSBjdXJyZW50IGRyaWxsIHN0YWNrIG9yIG9uIGFueSBmdXJ0aGVyIGRyaWxsIGRvd25zXG5cdFx0Y29uc3QgbWRjQ2hhcnQgPSB0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBNRENDaGFydDtcblx0XHRpZiAobWRjQ2hhcnQpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IGNoYXJ0ID0gKG1kY0NoYXJ0LmdldENvbnRyb2xEZWxlZ2F0ZSgpIGFzIHVua25vd24gYXMgQ2hhcnREZWxlZ2F0ZSk/LmdldElubmVyQ2hhcnQobWRjQ2hhcnQpIGFzIENoYXJ0Q2hhcnQ7XG5cdFx0XHRcdGlmIChjaGFydCkge1xuXHRcdFx0XHRcdGNvbnN0IGFEaW1lbnNpb25zID0gQ2hhcnRVdGlscy5nZXREaW1lbnNpb25zRnJvbURyaWxsU3RhY2soY2hhcnQpO1xuXHRcdFx0XHRcdGNvbnN0IGJJc0RyaWxsRG93biA9IGFEaW1lbnNpb25zLmxlbmd0aCA+IHRoaXMucHJldkRyaWxsU3RhY2subGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGJJc0RyaWxsVXAgPSBhRGltZW5zaW9ucy5sZW5ndGggPCB0aGlzLnByZXZEcmlsbFN0YWNrLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBiTm9DaGFuZ2UgPSBhRGltZW5zaW9ucy50b1N0cmluZygpID09PSB0aGlzLnByZXZEcmlsbFN0YWNrLnRvU3RyaW5nKCk7XG5cdFx0XHRcdFx0bGV0IGFGaWx0ZXJzOiBGaWx0ZXJbXTtcblx0XHRcdFx0XHRpZiAoYklzRHJpbGxVcCAmJiBhRGltZW5zaW9ucy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRcdC8vIGRyaWxsaW5nIHVwIHRvIGxldmVsMCB3b3VsZCBjbGVhciBhbGwgc2VsZWN0aW9uc1xuXHRcdFx0XHRcdFx0YUZpbHRlcnMgPSBDaGFydFV0aWxzLmdldENoYXJ0U2VsZWN0aW9ucyhtZGNDaGFydCwgdHJ1ZSkgYXMgRmlsdGVyW107XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIGFwcGx5IGZpbHRlcnMgb2Ygc2VsZWN0aW9ucyBvZiBwcmV2aW91cyBkcmlsbHN0YWNrIHdoZW4gZHJpbGxpbmcgdXAvZG93blxuXHRcdFx0XHRcdFx0Ly8gdG8gdGhlIGNoYXJ0IGFuZCB0YWJsZVxuXHRcdFx0XHRcdFx0YUZpbHRlcnMgPSBDaGFydFV0aWxzLmdldENoYXJ0U2VsZWN0aW9ucyhtZGNDaGFydCkgYXMgRmlsdGVyW107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChiSXNEcmlsbERvd24gfHwgYklzRHJpbGxVcCkge1xuXHRcdFx0XHRcdFx0Ly8gdXBkYXRlIHRoZSBkcmlsbHN0YWNrIG9uIGEgZHJpbGwgdXAvIGRyaWxsIGRvd25cblx0XHRcdFx0XHRcdHRoaXMucHJldkRyaWxsU3RhY2sgPSBhRGltZW5zaW9ucztcblx0XHRcdFx0XHRcdHJldHVybiBhRmlsdGVycy5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYk5vQ2hhbmdlKSB7XG5cdFx0XHRcdFx0XHQvLyBiTm9DaGFuZ2UgaXMgdHJ1ZSB3aGVuIGNoYXJ0IGlzIHNlbGVjdGVkXG5cdFx0XHRcdFx0XHRyZXR1cm4gYUZpbHRlcnMubGVuZ3RoID4gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoYEVycm9yIHdoaWxlIGNoZWNraW5nIGZvciBzZWxlY3Rpb25zIGluIENoYXJ0OiAke2Vycn1gKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIGNoYXJ0cy5cblx0ICogQHJldHVybnMgVW5kZWZpbmVkIGlmIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdGFzeW5jIG9uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpbnNpZ2h0c1BhcmFtcyA9IGF3YWl0IGNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyh0aGlzKTtcblx0XHRcdGlmIChpbnNpZ2h0c1BhcmFtcykge1xuXHRcdFx0XHRzaG93SW5zaWdodHNDYXJkUHJldmlldyhpbnNpZ2h0c1BhcmFtcyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRzaG93R2VuZXJpY0Vycm9yTWVzc2FnZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0TG9nLmVycm9yKGUgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY2FyZCBtYW5pZmVzdCBvcHRpbWl6ZWQgZm9yIHRoZSBjaGFydCBjYXNlLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIG9mIENhcmRNYW5pZmVzdFxuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyBnZXRDYXJkTWFuaWZlc3RDaGFydCgpOiBQcm9taXNlPENhcmRNYW5pZmVzdD4ge1xuXHRcdGNvbnN0IGluc2lnaHRzUGFyYW1zID0gYXdhaXQgY3JlYXRlQ2hhcnRDYXJkUGFyYW1zKHRoaXMpO1xuXHRcdHJldHVybiBnZXRDYXJkTWFuaWZlc3QoaW5zaWdodHNQYXJhbXMgYXMgSW5zaWdodHNQYXJhbXM8Q2hhcnRDb250ZW50Pik7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjcmVhdGUgaW5zaWdodHNQYXJhbXMgYW5kIGNhbGwgdGhlIEFQSSB0byBzaG93IGluc2lnaHRzIGNhcmQgcHJldmlldyBmb3IgdGFibGUuXG5cdCAqIEBwYXJhbSBjYXJkIFRoZSBjYXJkIG1hbmlmZXN0IHRvIGJlIHVzZWQgZm9yIHRoZSBjYWxsYmFja1xuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgY2FyZCBwcmV2aWV3IGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0YXN5bmMgb25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrKGNhcmQ6IENhcmRNYW5pZmVzdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoY2FyZCkge1xuXHRcdFx0XHRhd2FpdCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldyhcblx0XHRcdFx0XHRjYXJkLFxuXHRcdFx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8uY29sbGFib3JhdGlvbk1hbmFnZXIuZ2V0U2VydmljZSgpIGFzIENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0c2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UodGhpcy5jb250ZW50KTtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZpbHRlcnMgcmVsYXRlZCB0byB0aGUgY2hhcnQuXG5cdCAqIEByZXR1cm5zICBUaGUgZmlsdGVyIGNvbmZpZ3VyZWQgb24gdGhlIGNoYXJ0IG9yIHVuZGVmaW5lZCBpZiBub25lXG5cdCAqL1xuXHRnZXRGaWx0ZXIoKTogRmlsdGVyIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBjaGFydEZpbHRlckluZm8gPSBDaGFydFV0aWxzLmdldEFsbEZpbHRlckluZm8odGhpcy5jb250ZW50IGFzIHVua25vd24gYXMgTURDQ2hhcnQpO1xuXHRcdGlmIChjaGFydEZpbHRlckluZm8uZmlsdGVycy5sZW5ndGgpIHtcblx0XHRcdGNoYXJ0RmlsdGVySW5mby5maWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4ge1xuXHRcdFx0XHRpZiAoZmlsdGVyLmdldFBhdGgoKSkge1xuXHRcdFx0XHRcdChmaWx0ZXIgYXMgdW5rbm93biBhcyB7IHNQYXRoOiBzdHJpbmcgfSkuc1BhdGggPSB0aGlzLmdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyhmaWx0ZXIuZ2V0UGF0aCgpISk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIG5ldyBGaWx0ZXIoeyBmaWx0ZXJzOiBjaGFydEZpbHRlckluZm8uZmlsdGVycywgYW5kOiB0cnVlIH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNoYXJ0IGNvbnRyb2wgZnJvbSB0aGUgQ2hhcnQgQVBJLlxuXHQgKiBAcmV0dXJucyBUaGUgQ2hhcnQgY29udHJvbCBpbnNpZGUgdGhlIENoYXJ0IEFQSVxuXHQgKi9cblx0Z2V0Q2hhcnRDb250cm9sKCk6IE1EQ0NoYXJ0IHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIGRpbWVuc2lvbi5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSAgTmFtZSBvZiB0aGUgZGltZW5zaW9uXG5cdCAqIEByZXR1cm5zIFRoZSBkYXRhbW9kZWwgb2JqZWN0IHBhdGggZm9yIHRoZSBkaW1lbnNpb25cblx0ICovXG5cblx0Z2V0UHJvcGVydHlEYXRhTW9kZWwocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PiB8IG51bGwge1xuXHRcdGNvbnN0IG1ldGFQYXRoID0gdGhpcy5jb250ZW50LmRhdGEoXCJ0YXJnZXRDb2xsZWN0aW9uUGF0aFwiKSBhcyBzdHJpbmc7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gKHRoaXMuY29udGVudC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWwpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IGRpbWVuc2lvbkNvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoYCR7bWV0YVBhdGh9LyR7cHJvcGVydHlOYW1lfWApIGFzIENvbnRleHQ7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxQcm9wZXJ0eT4oZGltZW5zaW9uQ29udGV4dCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IG9mIGNoYXJ0IHByb3BlcnRpZXMgYnkgcmVtb3ZpbmcgX2ZlX2dyb3VwYWJsZSBhbmQgX2ZlX2FnZ3JlZ2F0YWJsZSBwcmVmaXguXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFQcm9wZXJ0aWVzIENoYXJ0IGZpbHRlciBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIENoYXJ0IHByb3BlcnRpZXMgd2l0aG91dCBwcmVmaXhlc1xuXHQgKi9cblxuXHRnZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMoY2hhcnRQcm9wZXJ0eTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRpZiAoY2hhcnRQcm9wZXJ0eSAmJiBjaGFydFByb3BlcnR5LmluY2x1ZGVzKFwiZmVfZ3JvdXBhYmxlXCIpKSB7XG5cdFx0XHRjaGFydFByb3BlcnR5ID0gdGhpcy5nZXRJbnRlcm5hbENoYXJ0TmFtZUZyb21Qcm9wZXJ0eU5hbWVBbmRLaW5kKGNoYXJ0UHJvcGVydHksIFwiZ3JvdXBhYmxlXCIpO1xuXHRcdH0gZWxzZSBpZiAoY2hhcnRQcm9wZXJ0eSAmJiBjaGFydFByb3BlcnR5LmluY2x1ZGVzKFwiZmVfYWdncmVnYXRhYmxlXCIpKSB7XG5cdFx0XHRjaGFydFByb3BlcnR5ID0gdGhpcy5nZXRJbnRlcm5hbENoYXJ0TmFtZUZyb21Qcm9wZXJ0eU5hbWVBbmRLaW5kKGNoYXJ0UHJvcGVydHksIFwiYWdncmVnYXRhYmxlXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gY2hhcnRQcm9wZXJ0eTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gSUQgd2hpY2ggc2hvdWxkIGJlIHVzZWQgaW4gdGhlIGludGVybmFsIGNoYXJ0IGZvciB0aGUgbWVhc3VyZSBvciBkaW1lbnNpb24uXG5cdCAqIEBwYXJhbSBuYW1lIElEIG9mIHRoZSBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0ga2luZCBUeXBlIG9mIHRoZSBwcm9wZXJ0eSAobWVhc3VyZSBvciBkaW1lbnNpb24pXG5cdCAqIEByZXR1cm5zIEludGVybmFsIElEIGZvciB0aGUgc2FwLmNoYXJ0LkNoYXJ0XG5cdCAqL1xuXG5cdGdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQobmFtZTogc3RyaW5nLCBraW5kOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiBuYW1lLnJlcGxhY2UoXCJfZmVfXCIgKyBraW5kICsgXCJfXCIsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIGNoYXJ0J3Mgc3RhdGVVdGlsICB0byBDaGFydCBQcmVzZW50YXRpb24gVmFyaWFudC5cblx0ICogQHBhcmFtIGNoYXJ0U3RhdGUgQ2hhcnQgQXBwU3RhdGUgdXRpbCBQVlxuXHQgKiBAcmV0dXJucyBQcmVzZW50YXRpb24gVmFyaWFudCBzdHJ1Y3R1cmUgZm9yIHRoZSBjaGFydFxuXHQgKi9cblx0X2NvbnZlcnRTdGF0ZVV0aWxUb1ByZXNlbnRhdGlvblZhcmlhbnQoY2hhcnRTdGF0ZTogQXBwU3RhdGUpOiBQcmVzZW50YXRpb25WYXJpYW50IHtcblx0XHRjb25zdCBzb3J0T3JkZXIgPSBjaGFydFN0YXRlLnNvcnRlcnM/Lm1hcCgoc29ydGVyOiBTb3J0ZXJzKSA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRQcm9wZXJ0eTogdGhpcy5nZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMoc29ydGVyLm5hbWUpLFxuXHRcdFx0XHREZXNjZW5kaW5nOiBzb3J0ZXIuZGVzY2VuZGluZ1xuXHRcdFx0fTtcblx0XHR9KTtcblx0XHRjb25zdCB0eXBlID0gY2hhcnRTdGF0ZS5zdXBwbGVtZW50YXJ5Q29uZmlnPy5wcm9wZXJ0aWVzPy5jaGFydFR5cGU7XG5cdFx0Y29uc3QgY2hhcnRUeXBlSW5SZXF1aXJlZEZvcm1hdCA9IHR5cGUgPyB0eXBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zbGljZSgxKSA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBjaGFydFR5cGUgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0VHlwZS9cIiArIGNoYXJ0VHlwZUluUmVxdWlyZWRGb3JtYXQ7XG5cdFx0Y29uc3QgZGltZW5zaW9uczogc3RyaW5nW10gPSBbXSxcblx0XHRcdG1lYXN1cmVzOiBzdHJpbmdbXSA9IFtdLFxuXHRcdFx0ZGltZW5zaW9uQXR0cmlidXRlczogRGltZW5zaW9uVHlwZVtdID0gW10sXG5cdFx0XHRtZWFzdXJlQXR0cmlidXRlczogTWVhc3VyZVR5cGVbXSA9IFtdO1xuXHRcdChjaGFydFN0YXRlLml0ZW1zID8/IFtdKS5mb3JFYWNoKChpdGVtOiBJdGVtcykgPT4ge1xuXHRcdFx0aXRlbS5uYW1lID0gdGhpcy5nZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMoaXRlbS5uYW1lKTtcblx0XHRcdGNvbnN0IHJvbGUgPSBpdGVtLnJvbGU/Lmxlbmd0aFxuXHRcdFx0XHQ/IGl0ZW0ucm9sZS5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArIGl0ZW0ucm9sZT8uc3Vic3RyaW5nKDEsIGl0ZW0ucm9sZS5sZW5ndGgpXG5cdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0aWYgKGl0ZW0ucm9sZSA9PT0gXCJjYXRlZ29yeVwiIHx8IGl0ZW0ucm9sZSA9PT0gXCJzZXJpZXNcIiB8fCBpdGVtLnJvbGUgPT09IFwiY2F0ZWdvcnkyXCIpIHtcblx0XHRcdFx0ZGltZW5zaW9ucy5wdXNoKGl0ZW0ubmFtZSk7XG5cdFx0XHRcdGRpbWVuc2lvbkF0dHJpYnV0ZXMucHVzaCh7XG5cdFx0XHRcdFx0RGltZW5zaW9uOiBpdGVtLm5hbWUsXG5cdFx0XHRcdFx0Um9sZTogYGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0RGltZW5zaW9uUm9sZVR5cGUvJHtyb2xlfWBcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtZWFzdXJlcy5wdXNoKGl0ZW0ubmFtZSk7XG5cdFx0XHRcdG1lYXN1cmVBdHRyaWJ1dGVzLnB1c2goeyBNZWFzdXJlOiBpdGVtLm5hbWUsIFJvbGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnREaW1lbnNpb25Sb2xlVHlwZS9cIiArIHJvbGUgfSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRjb25zdCBjaGFydFZpejogVmlzdWFsaXphdGlvbiA9IHtcblx0XHRcdENvbnRlbnQ6IHtcblx0XHRcdFx0Q2hhcnRUeXBlOiBjaGFydFR5cGUsXG5cdFx0XHRcdERpbWVuc2lvbkF0dHJpYnV0ZXM6IGRpbWVuc2lvbkF0dHJpYnV0ZXMsXG5cdFx0XHRcdERpbWVuc2lvbnM6IGRpbWVuc2lvbnMsXG5cdFx0XHRcdE1lYXN1cmVBdHRyaWJ1dGVzOiBtZWFzdXJlQXR0cmlidXRlcyxcblx0XHRcdFx0TWVhc3VyZXM6IG1lYXN1cmVzXG5cdFx0XHR9LFxuXHRcdFx0VHlwZTogXCJDaGFydFwiXG5cdFx0fTtcblx0XHRjb25zdCBjaGFydFBWID0gbmV3IFByZXNlbnRhdGlvblZhcmlhbnQoKTtcblx0XHRjaGFydFBWLnNldENoYXJ0VmlzdWFsaXphdGlvbihjaGFydFZpeik7XG5cdFx0Y2hhcnRQVi5zZXRQcm9wZXJ0aWVzKHtcblx0XHRcdFNvcnRPcmRlcjogc29ydE9yZGVyID8/IFtdXG5cdFx0fSk7XG5cdFx0cmV0dXJuIGNoYXJ0UFY7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBwcmVzZW50YXRpb24gdmFyaWFudCB0aGF0IGlzIGN1cnJlbnRseSBhcHBsaWVkIG9uIHRoZSBjaGFydC5cblx0ICogQHJldHVybnMgVGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5QcmVzZW50YXRpb25WYXJpYW50fSBhcHBsaWVkIHRvIHRoZSBjaGFydFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXG5cdGFzeW5jIGdldFByZXNlbnRhdGlvblZhcmlhbnQoKTogUHJvbWlzZTxQcmVzZW50YXRpb25WYXJpYW50PiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGNoYXJ0U3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCk7XG5cdFx0XHRyZXR1cm4gdGhpcy5fY29udmVydFN0YXRlVXRpbFRvUHJlc2VudGF0aW9uVmFyaWFudChjaGFydFN0YXRlKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc3QgaWQ6IHN0cmluZyA9IHRoaXMuZ2V0SWQoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG5cdFx0XHRMb2cuZXJyb3IoYENoYXJ0IEJ1aWxkaW5nIEJsb2NrICgke2lkfSkgLSBnZXQgcHJlc2VudGF0aW9uIHZhcmlhbnQgZmFpbGVkIDogJHttZXNzYWdlfWApO1xuXHRcdFx0dGhyb3cgRXJyb3IobWVzc2FnZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgcHJlc2VudGF0aW9uIHZhcmlhbnQgZm9yIHRoZSBtZGMgY2hhcnQuXG5cdCAqXG5cdCAqIFRoZSBqc29uIGZvcm1hdCByZXRyaWV2ZWQgYnkgdXNpbmcgdGhlIGdldCBQcmVzZW50YXRpb25WYXJpYW50IGJ1dHRvbiBpbiB0aGUgbGlua2VkIEZQTSBzYW1wbGUgc2hvdWxkIGJlIGZvbGxvd2VkIHdoaWxlIHRyeWluZyB0byBzZXQgdGhlIFByZXNlbnRhdGlvblZhcmlhbnQgYXMgbmVlZGVkLlxuXHQgKiBUaGUgdmFsdWVzIGRpbWVuc2lvbnMsIG1lYXN1cmVzIGFuZCBvdGhlciBwcm9wZXJ0aWVzIHNob3VsZCBhbHNvIGJlIGdpdmVuIGluIHRoZSB2YWxpZCBmb3JtYXQgYW5kIG51bGwgb3IgZW1wdHkgdmFsdWVzIHNob3VsZCBiZSBhdm9pZGVkLlxuXHQgKiBPbmUgZGltZW5zaW9uIGF0dHJpYnV0ZSBzaG91bGQgaGF2ZSBvbmx5IG9uZSByb2xlIGFzc29jaWF0ZWQgd2l0aCBpdCBvbiBhIGdpdmVuIGNoYXJ0LlxuXHQgKiBAcGFyYW0gcHJlc2VudGF0aW9uVmFyaWFudCB0aGUgcHJlc2VudGF0aW9uIHZhcmlhbnQge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlByZXNlbnRhdGlvblZhcmlhbnR9IHRvIGJlIHNldFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXG5cdGFzeW5jIHNldFByZXNlbnRhdGlvblZhcmlhbnQocHJlc2VudGF0aW9uVmFyaWFudDogUHJlc2VudGF0aW9uVmFyaWFudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjaGFydCA9IHRoaXMuY29udGVudDtcblx0XHRcdGNvbnN0IGV4aXN0aW5nUHJlc2VudGF0aW9uVmFyaWFudCA9IGF3YWl0IHRoaXMuZ2V0UHJlc2VudGF0aW9uVmFyaWFudCgpO1xuXHRcdFx0Y29uc3QgcHJvcGVydGllc0luZm8gPSAoYXdhaXQgKGNoYXJ0LmdldENvbnRyb2xEZWxlZ2F0ZSgpIGFzIENoYXJ0RGVsZWdhdGUpPy5mZXRjaFByb3BlcnRpZXMoXG5cdFx0XHRcdGNoYXJ0XG5cdFx0XHQpKSBhcyB1bmtub3duIGFzIFByb3BlcnR5SW5mb1tdO1xuXG5cdFx0XHRjb25zdCBzdGF0ZVV0aWxQdiA9IFByZXNlbnRhdGlvblZhcmlhbnRUb1N0YXRlVXRpbHNQVi5jb252ZXJ0UHZUb1N0YXRlVXRpbFB2KFxuXHRcdFx0XHRwcmVzZW50YXRpb25WYXJpYW50LFxuXHRcdFx0XHRleGlzdGluZ1ByZXNlbnRhdGlvblZhcmlhbnQsXG5cdFx0XHRcdHByb3BlcnRpZXNJbmZvXG5cdFx0XHQpO1xuXG5cdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNoYXJ0LCBzdGF0ZVV0aWxQdik7XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKGBGRTogQ2hhcnQgQnVpbGRpbmcgQmxvY2sgc2V0UHJlc2VudGF0aW9uVmFyaWFudCBBUEkgZmFpbGVkIHdpdGggZXJyb3I6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBrZXkgb2YgdGhlIGN1cnJlbnQgdmFyaWFudCBpbiB0aGUgYXNzb2NpYXRlZCB2YXJpYW50IG1hbmFnZW1lbnQuXG5cdCAqIEByZXR1cm5zIFZhcmlhbnQga2V5IG9mIHtAbGluayBzYXAudWkuZmwudmFyaWFudHMuVmFyaWFudE1hbmFnZW1lbnR9IGFwcGxpZWQgdG8gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldEN1cnJlbnRWYXJpYW50S2V5KCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpLmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFyaWFudCBvZiB0aGUgcHJvdmlkZWQga2V5IGluIHRoZSBhc3NvY2lhdGVkIHZhcmlhbnQgbWFuYWdlbWVudC5cblx0ICogQHBhcmFtIGtleSBUaGUgdmFyaWFudCBrZXkgb2Yge0BsaW5rIHNhcC51aS5mbC52YXJpYW50cy5WYXJpYW50TWFuYWdlbWVudH0gdG8gYmUgc2V0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNldEN1cnJlbnRWYXJpYW50S2V5KGtleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpO1xuXHRcdHZhcmlhbnRNYW5hZ2VtZW50LnNldEN1cnJlbnRWYXJpYW50S2V5KGtleSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzZWxlY3Rpb24gdmFyaWFudCBmcm9tIHRoZSBjaGFydC4gVGhpcyBmdW5jdGlvbiBjb25zaWRlcnMgb25seSB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgYXBwbGllZCBhdCB0aGUgY29udHJvbCBsZXZlbC5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGdldFNlbGVjdGlvblZhcmlhbnQoKTogUHJvbWlzZTxTZWxlY3Rpb25WYXJpYW50PiB7XG5cdFx0cmV0dXJuIFN0YXRlSGVscGVyLmdldFNlbGVjdGlvblZhcmlhbnQodGhpcy5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fSB0byB0aGUgY2hhcnQuIE5vdGU6IHNldFNlbGVjdGlvblZhcmlhbnQgd2lsbCBjbGVhciBleGlzdGluZyBmaWx0ZXJzIGFuZCB0aGVuIGFwcGx5IHRoZSBTZWxlY3Rpb25WYXJpYW50IHZhbHVlcy5cblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fSB0byBhcHBseSB0byB0aGUgY2hhcnRcblx0ICogQHBhcmFtIHByZWZpbGxEZXNjcmlwdGlvbnMgT3B0aW9uYWwuIElmIHRydWUsIHdlIHdpbGwgdXNlIHRoZSBhc3NvY2lhdGVkIHRleHQgcHJvcGVydHkgdmFsdWVzIChpZiB0aGV5J3JlIGF2YWlsYWJsZSBpbiB0aGUgU2VsZWN0aW9uVmFyaWFudCkgdG8gZGlzcGxheSB0aGUgZmlsdGVyIHZhbHVlIGRlc2NyaXB0aW9ucywgaW5zdGVhZCBvZiBsb2FkaW5nIHRoZW0gZnJvbSB0aGUgYmFja2VuZFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jaHJvbm91cyBoYW5kbGluZ1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXRTZWxlY3Rpb25WYXJpYW50KHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsIHByZWZpbGxEZXNjcmlwdGlvbnMgPSBmYWxzZSk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdHJldHVybiBTdGF0ZUhlbHBlci5zZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sKHRoaXMuZ2V0Q29udGVudCgpLCBzZWxlY3Rpb25WYXJpYW50LCBwcmVmaWxsRGVzY3JpcHRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRyb2wgc3RhdGUgYmFzZWQgb24gdGhlIGdpdmVuIGNvbnRyb2wgc3RhdGUga2V5LlxuXHQgKiBAcGFyYW0gY29udHJvbFN0YXRlIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcmV0dXJucyAtIFRoZSBmdWxsIHN0YXRlIG9mIHRoZSBjb250cm9sIGFsb25nIHdpdGggdGhlIGluaXRpYWwgc3RhdGUgaWYgYXZhaWxhYmxlLlxuXHQgKi9cblx0Z2V0Q29udHJvbFN0YXRlKGNvbnRyb2xTdGF0ZTogQ29udHJvbFN0YXRlKTogQ29udHJvbFN0YXRlIHtcblx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHRoaXMuaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHRpZiAoY29udHJvbFN0YXRlKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRmdWxsU3RhdGU6IGNvbnRyb2xTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdGluaXRpYWxTdGF0ZTogaW5pdGlhbENvbnRyb2xTdGF0ZSBhcyBvYmplY3Rcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiBjb250cm9sU3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29udHJvbCBieSByZXRyaWV2aW5nIHRoZSBleHRlcm5hbCBzdGF0ZS5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgaW5pdGlhbCBzdGF0ZSBpcyBzZXQuXG5cdCAqL1xuXHRhc3luYyBzZXRJbml0aWFsU3RhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGluaXRpYWxDb250cm9sU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCk7XG5cdFx0XHR0aGlzLmluaXRpYWxDb250cm9sU3RhdGUgPSBpbml0aWFsQ29udHJvbFN0YXRlO1xuXHRcdH0gY2F0Y2ggKGU6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFzeW5jaHJvbm91c2x5IHJldHJpZXZlcyB0aGUgc3RhdGUgb2YgdGhlIGNoYXJ0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCB2aWV3c3RhdGUuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjaGFydCBzdGF0ZSBvciBudWxsIGlmIG5vdCBmb3VuZC5cblx0ICovXG5cdGFzeW5jIHJldHJpZXZlU3RhdGUoKTogUHJvbWlzZTxDaGFydFN0YXRlIHwgbnVsbD4ge1xuXHRcdGNvbnN0IGNoYXJ0U3RhdGU6IENoYXJ0U3RhdGUgPSB7fTtcblx0XHRjaGFydFN0YXRlLmlubmVyQ2hhcnQgPSB0aGlzLmdldENvbnRyb2xTdGF0ZShhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCkpIGFzIG9iamVjdDtcblx0XHRjb25zdCB2YXJpYW50VG9SZXRyaWV2ZSA9IHRoaXMuY29udGVudC5nZXRWYXJpYW50KCk/LmdldElkKCk7XG5cdFx0aWYgKHZhcmlhbnRUb1JldHJpZXZlKSB7XG5cdFx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudENvbnRyb2wgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpO1xuXHRcdFx0aWYgKCFjaGFydFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRcdGNoYXJ0U3RhdGUudmFyaWFudE1hbmFnZW1lbnQgPSB7IHZhcmlhbnRJZDogdmFyaWFudE1hbmFnZW1lbnRDb250cm9sPy5nZXRDdXJyZW50VmFyaWFudEtleSgpIH07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjaGFydFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50LnZhcmlhbnRJZCA9IHZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbD8uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNoYXJ0U3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogQXBwbGllcyB0aGUgbGVnYWN5IHN0YXRlIHRvIHRoZSBjaGFydCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29udHJvbCBzdGF0ZSByZXRyaWV2YWwgZnVuY3Rpb24uXG5cdCAqIEBwYXJhbSBnZXRDb250cm9sU3RhdGUgRnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGNvbnRyb2wgc3RhdGUuXG5cdCAqIEBwYXJhbSBbX25hdlBhcmFtZXRlcnNdIE9wdGlvbmFsIG5hdmlnYXRpb24gcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIFtzaG91bGRBcHBseURpZmZTdGF0ZV0gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGRpZmYgc3RhdGUuXG5cdCAqIEByZXR1cm5zIC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc3RhdGUgaGFzIGJlZW4gYXBwbGllZC5cblx0ICovXG5cdGFzeW5jIGFwcGx5TGVnYWN5U3RhdGUoXG5cdFx0Z2V0Q29udHJvbFN0YXRlOiAoY29udHJvbDogTWFuYWdlZE9iamVjdCkgPT4gQ29udHJvbFN0YXRlLFxuXHRcdF9uYXZQYXJhbWV0ZXJzPzogTmF2aWdhdGlvblBhcmFtZXRlcixcblx0XHRzaG91bGRBcHBseURpZmZTdGF0ZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgY2hhcnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0Y29uc3Qgdm0gPSBjaGFydC5nZXRWYXJpYW50KCk7XG5cblx0XHRjb25zdCBjaGFydFN0YXRlID0gZ2V0Q29udHJvbFN0YXRlKGNoYXJ0KSBhcyB7IGluaXRpYWxTdGF0ZT86IENoYXJ0U3RhdGU7IGZ1bGxTdGF0ZT86IENoYXJ0U3RhdGUgfTtcblx0XHRjb25zdCB2bVN0YXRlID0gdm0gPyBnZXRDb250cm9sU3RhdGUodm0pIDogbnVsbDtcblxuXHRcdGNvbnN0IGNvbnRyb2xTdGF0ZTogQ2hhcnRTdGF0ZSA9IHt9O1xuXG5cdFx0aWYgKGNoYXJ0U3RhdGUpIHtcblx0XHRcdGNvbnRyb2xTdGF0ZS5pbm5lckNoYXJ0ID0ge1xuXHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJDaGFydCxcblx0XHRcdFx0Li4uY2hhcnRTdGF0ZSxcblx0XHRcdFx0ZnVsbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyQ2hhcnQ/LmZ1bGxTdGF0ZSxcblx0XHRcdFx0XHQuLi5jaGFydFN0YXRlLmZ1bGxTdGF0ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRpbml0aWFsU3RhdGU6IHtcblx0XHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJDaGFydD8uaW5pdGlhbFN0YXRlLFxuXHRcdFx0XHRcdC4uLmNoYXJ0U3RhdGUuaW5pdGlhbFN0YXRlXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0aWYgKHZtU3RhdGU/LnZhcmlhbnRJZCkge1xuXHRcdFx0Y29udHJvbFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50ID0ge1xuXHRcdFx0XHQuLi5jb250cm9sU3RhdGUudmFyaWFudE1hbmFnZW1lbnQsXG5cdFx0XHRcdHZhcmlhbnRJZDogdm1TdGF0ZS52YXJpYW50SWQudG9TdHJpbmcoKVxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRpZiAoY29udHJvbFN0YXRlICYmIE9iamVjdC5rZXlzKGNvbnRyb2xTdGF0ZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0YXdhaXQgdGhpcy5hcHBseVN0YXRlKGNvbnRyb2xTdGF0ZSBhcyBDb250cm9sU3RhdGUsIF9uYXZQYXJhbWV0ZXJzLCBzaG91bGRBcHBseURpZmZTdGF0ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFzeW5jaHJvbm91c2x5IGFwcGxpZXMgdGhlIHByb3ZpZGVkIGNvbnRyb2wgc3RhdGUgdG8gdGhlIHZpZXdzdGF0ZS5cblx0ICogQHBhcmFtIGNvbnRyb2xTdGF0ZSBUaGUgc3RhdGUgdG8gYmUgYXBwbGllZCB0byB0aGUgY29udHJvbC5cblx0ICogQHBhcmFtIFtfbmF2UGFyYW1ldGVyc10gT3B0aW9uYWwgbmF2aWdhdGlvbiBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0gW3Nob3VsZEFwcGx5RGlmZlN0YXRlXSBPcHRpb25hbCBmbGFnIHRvIHNraXAgbWVyZ2luZyBzdGF0ZXMuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHN0YXRlIGhhcyBiZWVuIGFwcGxpZWQuXG5cdCAqL1xuXHRhc3luYyBhcHBseVN0YXRlKGNvbnRyb2xTdGF0ZTogQ2hhcnRTdGF0ZSwgX25hdlBhcmFtZXRlcnM/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLCBzaG91bGRBcHBseURpZmZTdGF0ZT86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIWNvbnRyb2xTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgdmFyaWFudElkID0gY29udHJvbFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50Py52YXJpYW50SWQ7XG5cdFx0Y29uc3QgY3VycmVudFZhcmlhbnQgPSB0aGlzLmNvbnRlbnQ/LmdldFZhcmlhbnQoKTtcblxuXHRcdC8vIEhhbmRsZSBWYXJpYW50IE1hbmFnZW1lbnRcblx0XHRpZiAodmFyaWFudElkICE9PSB1bmRlZmluZWQgJiYgdmFyaWFudElkICE9PSBjdXJyZW50VmFyaWFudC5nZXRDdXJyZW50VmFyaWFudEtleSgpKSB7XG5cdFx0XHRjb25zdCBvdk0gPSB0aGlzLmNvbnRlbnQ/LmdldFZhcmlhbnQoKTtcblx0XHRcdGNvbnN0IGFWYXJpYW50cyA9IG92TT8uZ2V0VmFyaWFudHMoKTtcblx0XHRcdGNvbnN0IHNWYXJpYW50UmVmZXJlbmNlID0gYVZhcmlhbnRzPy5zb21lKChvVmFyaWFudCkgPT4gb1ZhcmlhbnQuZ2V0S2V5KCkgPT09IHZhcmlhbnRJZClcblx0XHRcdFx0PyB2YXJpYW50SWRcblx0XHRcdFx0OiBvdk0/LmdldFN0YW5kYXJkVmFyaWFudEtleTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkgPSAoYXdhaXQgaW1wb3J0KFwic2FwL3VpL2ZsL2FwcGx5L2FwaS9Db250cm9sVmFyaWFudEFwcGx5QVBJXCIpKS5kZWZhdWx0O1xuXHRcdFx0XHRhd2FpdCBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRcdFx0ZWxlbWVudDogb3ZNLFxuXHRcdFx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IHNWYXJpYW50UmVmZXJlbmNlIGFzIHN0cmluZ1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXdhaXQgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0XHRhd2FpdCB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyB3ZSBuZWVkIHRvIHVwZGF0ZSBpbml0aWFsIHN0YXRlIGV2ZW4gaWYgYWJvdmUgY29uZGl0aW9uIG5vdCBzYXRpc2ZpZWRcblx0XHRcdGF3YWl0IHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIElubmVyIENoYXJ0IFN0YXRlXG5cdFx0Y29uc3QgaW5uZXJDaGFydFN0YXRlID0gY29udHJvbFN0YXRlLmlubmVyQ2hhcnQ7XG5cdFx0bGV0IGZpbmFsU3RhdGU7XG5cblx0XHRpZiAoaW5uZXJDaGFydFN0YXRlKSB7XG5cdFx0XHRpZiAoc2hvdWxkQXBwbHlEaWZmU3RhdGUgJiYgaW5uZXJDaGFydFN0YXRlLmluaXRpYWxTdGF0ZSkge1xuXHRcdFx0XHRmaW5hbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLmRpZmZTdGF0ZShcblx0XHRcdFx0XHR0aGlzLmNvbnRlbnQsXG5cdFx0XHRcdFx0aW5uZXJDaGFydFN0YXRlLmluaXRpYWxTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdFx0aW5uZXJDaGFydFN0YXRlLmZ1bGxTdGF0ZSBhcyBvYmplY3Rcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZpbmFsU3RhdGUgPSBpbm5lckNoYXJ0U3RhdGUuZnVsbFN0YXRlO1xuXHRcdFx0fVxuXHRcdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQsIGZpbmFsU3RhdGUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgYnkgdGhlIE1EQyBzdGF0ZSB1dGlsIHdoZW4gdGhlIHN0YXRlIGZvciB0aGlzIGNvbnRyb2wncyBjaGlsZCBoYXMgY2hhbmdlZC5cblx0ICovXG5cdGhhbmRsZVN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuXHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8uZ2V0RXh0ZW5zaW9uQVBJKCkudXBkYXRlQXBwU3RhdGUoKTtcblx0fVxuXG5cdF9jcmVhdGVDb250ZW50KCk6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0Ly8gV2UgbmVlZCB0byByZW1vdmUgdGhlIGN1cnJlbnQgZmlsdGVyIGZyb20gdGhlIG9sZCAodG8gYmUgZGVzdHJveWVkKSBDaGFydCBpbnN0YW5jZSBiZWNhdXNlIGlmIHdlIGRvbid0IHRoZW4gZm9yIHNvbWUgc3RyYW5nZSByZWFzb24sIHRoZSBvbGQgQ2hhcnQgaW5zdGFuY2UgdXNlZCB0b1xuXHRcdFx0Ly8gcmVhY3QgZm9yIGZpbHRlciBiYXIgYWN0aW9uLCBmb3IgZXhhbXBsZSwgb24gQ2xpY2sgb2YgR28uXG5cdFx0XHR0aGlzLmNvbnRlbnQuc2V0RmlsdGVyKFwiXCIpO1xuXHRcdFx0dGhpcy5jb250ZW50LmRlc3Ryb3koKTtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0fVxuXG5cdHNldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnRpZXMoKSkuaW5jbHVkZXMoa2V5KSkge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgdHJ1ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cmVtb3ZlQWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCB8IG51bWJlciB8IHN0cmluZywgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IE1hbmFnZWRPYmplY3QgfCBudWxsIHtcblx0XHRsZXQgcmVtb3ZlZDogTWFuYWdlZE9iamVjdCB8IG51bGw7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldEFnZ3JlZ2F0aW9ucygpKS5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdFx0cmVtb3ZlZCA9IHN1cGVyLnJlbW92ZUFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdFx0dGhpcy5fY3JlYXRlQ29udGVudCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZW1vdmVkID0gc3VwZXIucmVtb3ZlQWdncmVnYXRpb24obmFtZSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiByZW1vdmVkO1xuXHR9XG5cblx0YWRkQWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCwgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWdncmVnYXRpb25zKCkpLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRzdXBlci5hZGRBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHRcdHRoaXMuX2NyZWF0ZUNvbnRlbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuYWRkQWdncmVnYXRpb24obmFtZSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0aW5zZXJ0QWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCwgaW5kZXg6IG51bWJlciwgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWdncmVnYXRpb25zKCkpLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRzdXBlci5pbnNlcnRBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgaW5kZXgsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLmluc2VydEFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBpbmRleCwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IE1EQ0NoYXJ0IHtcblx0XHRpZiAodGhpcy5jb250ZXh0UGF0aCkge1xuXHRcdFx0dGhpcy5fcmVzb2x2ZWRDb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGguZW5kc1dpdGgoXCIvXCIpID8gdGhpcy5jb250ZXh0UGF0aCA6IHRoaXMuY29udGV4dFBhdGggKyBcIi9cIjtcblx0XHR9XG5cblx0XHRyZXR1cm4gZ2V0TWRjQ2hhcnRUZW1wbGF0ZShcblx0XHRcdHRoaXMsXG5cdFx0XHR0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpPy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSA/PyAodGhpcy5fZ2V0T3duZXIoKT8uZ2V0Vmlld0RhdGEoKSBhcyB1bmtub3duIGFzIFZpZXdEYXRhKSxcblx0XHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk/LmdldERpYWdub3N0aWNzKCkgPz8gKHt9IGFzIERpYWdub3N0aWNzKSxcblx0XHRcdHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8Q2hhcnRDb250ZXh0T2JqZWN0UGF0aD4odGhpcy5tZXRhUGF0aCwgdGhpcy5fcmVzb2x2ZWRDb250ZXh0UGF0aCkhXG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBZkEsSUFpQnFCQSxLQUFLLElBQUFDLElBQUEsR0FEekJDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRTtJQUFFQyxXQUFXLEVBQUUsQ0FBQyx3QkFBd0I7RUFBRSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUVqRkMsa0JBQWtCLENBQUMsa0VBQWtFLENBQUMsRUFBQUMsS0FBQSxHQUt0RkQsa0JBQWtCLENBQUMsMERBQTBELENBQUMsRUFBQUUsS0FBQSxHQXdCOUVDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU81QkYsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRSxRQUFRO0lBQ2RFLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFDO0lBQzdFQyxtQkFBbUIsRUFBRSxDQUNwQixrQ0FBa0MsRUFDbEMsZ0RBQWdELEVBQ2hELHlEQUF5RDtFQUUzRCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU9ETixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEUsUUFBUSxFQUFFLElBQUk7SUFDZEMsYUFBYSxFQUFFLENBQUMs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
|
|
932
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsIl9kZWM0IiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzUiLCJyZXF1aXJlZCIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiZGVmYXVsdFZhbHVlIiwiX2RlYzkiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiYXNzb2NpYXRpb24iLCJfZGVjMTciLCJhZ2dyZWdhdGlvbiIsIl9kZWMxOCIsImFsdFR5cGVzIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJBY3Rpb24iLCJfZGVjMTkiLCJldmVudCIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsInhtbEV2ZW50SGFuZGxlciIsIl9kZWMyNSIsIl9kZWMyNiIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9NYWNyb0FQSSIsInNldHRpbmdzIiwib3RoZXJzIiwiX3RoaXMiLCJfYXBwbHlJZFRvQ29udGVudCIsImlkIiwiZ2VuZXJhdGUiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwicHJldkRyaWxsU3RhY2siLCJpbml0aWFsQ29udHJvbFN0YXRlIiwiY2hhcnRBY3Rpb25zIiwiX2NvbW1hbmRBY3Rpb25zIiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2Rlc2NyaXB0b3IyMSIsIl9kZXNjcmlwdG9yMjIiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0U2VjdGlvbkNvbnRlbnRSb2xlIiwic2VuZERhdGFUb0NvbnN1bWVyIiwiY29uc3VtZXJEYXRhIiwiY29udGVudCIsInNldEhlYWRlciIsInRpdGxlIiwic2V0SGVhZGVyU3R5bGUiLCJzZXRIZWFkZXJMZXZlbCIsInRpdGxlTGV2ZWwiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsImlzQSIsInR5cGVOYW1lIiwib2xkVmFsaWRUeXBlIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5jbHVkZXMiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiY3JlYXRlQ29udGVudCIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJhZnRlclJlbmRlcmluZ0V2ZW50IiwidmlldyIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsImludGVybmFsTW9kZWxDb250ZXh0IiwiY2hhcnQiLCJnZXRDb250ZW50Iiwic2hvd01lc3NhZ2VTdHJpcCIsInNDaGFydEVudGl0eVBhdGgiLCJkYXRhIiwic0NhY2hlS2V5Iiwib0JpbmRpbmdDb250ZXh0IiwiZ2V0T2JqZWN0Iiwic2V0UHJvcGVydHkiLCJhdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIiLCJTdGF0ZVV0aWwiLCJkZXRhY2hTdGF0ZUNoYW5nZSIsInN0YXRlQ2hhbmdlSGFuZGxlciIsImF0dGFjaFN0YXRlQ2hhbmdlIiwib0V2ZW50IiwiY29udHJvbCIsImdldFBhcmFtZXRlciIsImNoYXJ0QmxvY2siLCJnZXRQYXJlbnQiLCJoYW5kbGVTdGF0ZUNoYW5nZSIsInJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzIiwib0ZpbHRlckNvbnRyb2wiLCJvQ2hhcnQiLCJGaWx0ZXJVdGlscyIsImdldE5vdEFwcGxpY2FibGVGaWx0ZXJzIiwiaGFuZGxlU2VsZWN0aW9uQ2hhbmdlIiwiYURhdGEiLCJiU2VsZWN0ZWQiLCJDaGFydFJ1bnRpbWUiLCJmblVwZGF0ZUNoYXJ0IiwiZmlyZUV2ZW50IiwibWVyZ2UiLCJzZWxlY3RlZCIsIm9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkIiwiY29sbGVjdEF2YWlsYWJsZUNhcmRzIiwiY2FyZHMiLCJhY3Rpb25Ub29sYmFySXRlbXMiLCJnZXRBY3Rpb25zIiwiaGFzSW5zaWdodEFjdGlvbkVuYWJsZWQiLCJnZXRGaWx0ZXIiLCJjYXJkIiwiZ2V0Q2FyZE1hbmlmZXN0Q2hhcnQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwicHVzaCIsImdldENoYXJ0Q29udHJvbCIsImdldEhlYWRlciIsImNhbGxiYWNrIiwib25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrIiwiYmluZCIsImhhc1NlbGVjdGlvbnMiLCJtZGNDaGFydCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsImdldElubmVyQ2hhcnQiLCJhRGltZW5zaW9ucyIsIkNoYXJ0VXRpbHMiLCJnZXREaW1lbnNpb25zRnJvbURyaWxsU3RhY2siLCJiSXNEcmlsbERvd24iLCJiSXNEcmlsbFVwIiwiYk5vQ2hhbmdlIiwidG9TdHJpbmciLCJhRmlsdGVycyIsImdldENoYXJ0U2VsZWN0aW9ucyIsImVyciIsIkxvZyIsImVycm9yIiwib25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQiLCJpbnNpZ2h0c1BhcmFtcyIsImNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyIsInNob3dJbnNpZ2h0c0NhcmRQcmV2aWV3IiwiZSIsInNob3dHZW5lcmljRXJyb3JNZXNzYWdlIiwiZ2V0Q2FyZE1hbmlmZXN0Iiwic2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FyZFByZXZpZXciLCJjb2xsYWJvcmF0aW9uTWFuYWdlciIsImdldFNlcnZpY2UiLCJjaGFydEZpbHRlckluZm8iLCJnZXRBbGxGaWx0ZXJJbmZvIiwiZmlsdGVycyIsImZvckVhY2giLCJmaWx0ZXIiLCJnZXRQYXRoIiwic1BhdGgiLCJnZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMiLCJGaWx0ZXIiLCJhbmQiLCJ1bmRlZmluZWQiLCJnZXRQcm9wZXJ0eURhdGFNb2RlbCIsInByb3BlcnR5TmFtZSIsIm1ldGFQYXRoIiwibWV0YU1vZGVsIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJkaW1lbnNpb25Db250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJjaGFydFByb3BlcnR5IiwiZ2V0SW50ZXJuYWxDaGFydE5hbWVGcm9tUHJvcGVydHlOYW1lQW5kS2luZCIsIm5hbWUiLCJraW5kIiwicmVwbGFjZSIsIl9jb252ZXJ0U3RhdGVVdGlsVG9QcmVzZW50YXRpb25WYXJpYW50IiwiY2hhcnRTdGF0ZSIsInNvcnRPcmRlciIsInNvcnRlcnMiLCJtYXAiLCJzb3J0ZXIiLCJQcm9wZXJ0eSIsIkRlc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwic3VwcGxlbWVudGFyeUNvbmZpZyIsInByb3BlcnRpZXMiLCJjaGFydFR5cGUiLCJjaGFydFR5cGVJblJlcXVpcmVkRm9ybWF0IiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImRpbWVuc2lvbnMiLCJtZWFzdXJlcyIsImRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJtZWFzdXJlQXR0cmlidXRlcyIsIml0ZW1zIiwiaXRlbSIsInJvbGUiLCJzdWJzdHJpbmciLCJEaW1lbnNpb24iLCJSb2xlIiwiTWVhc3VyZSIsImNoYXJ0Vml6IiwiQ29udGVudCIsIkNoYXJ0VHlwZSIsIkRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJEaW1lbnNpb25zIiwiTWVhc3VyZUF0dHJpYnV0ZXMiLCJNZWFzdXJlcyIsIlR5cGUiLCJjaGFydFBWIiwiUHJlc2VudGF0aW9uVmFyaWFudCIsInNldENoYXJ0VmlzdWFsaXphdGlvbiIsInNldFByb3BlcnRpZXMiLCJTb3J0T3JkZXIiLCJnZXRQcmVzZW50YXRpb25WYXJpYW50IiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwiZ2V0SWQiLCJtZXNzYWdlIiwiRXJyb3IiLCJTdHJpbmciLCJzZXRQcmVzZW50YXRpb25WYXJpYW50IiwicHJlc2VudGF0aW9uVmFyaWFudCIsImV4aXN0aW5nUHJlc2VudGF0aW9uVmFyaWFudCIsInByb3BlcnRpZXNJbmZvIiwiZmV0Y2hQcm9wZXJ0aWVzIiwic3RhdGVVdGlsUHYiLCJQcmVzZW50YXRpb25WYXJpYW50VG9TdGF0ZVV0aWxzUFYiLCJjb252ZXJ0UHZUb1N0YXRlVXRpbFB2IiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiZ2V0Q3VycmVudFZhcmlhbnRLZXkiLCJnZXRWYXJpYW50Iiwic2V0Q3VycmVudFZhcmlhbnRLZXkiLCJrZXkiLCJ2YXJpYW50TWFuYWdlbWVudCIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJTdGF0ZUhlbHBlciIsInNldFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50IiwicHJlZmlsbERlc2NyaXB0aW9ucyIsImFyZ3VtZW50cyIsInNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2wiLCJnZXRDb250cm9sU3RhdGUiLCJjb250cm9sU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJzZXRJbml0aWFsU3RhdGUiLCJyZXRyaWV2ZVN0YXRlIiwiaW5uZXJDaGFydCIsInZhcmlhbnRUb1JldHJpZXZlIiwidmFyaWFudE1hbmFnZW1lbnRDb250cm9sIiwidmFyaWFudElkIiwiYXBwbHlMZWdhY3lTdGF0ZSIsIl9uYXZQYXJhbWV0ZXJzIiwic2hvdWxkQXBwbHlEaWZmU3RhdGUiLCJ2bSIsInZtU3RhdGUiLCJhcHBseVN0YXRlIiwiY3VycmVudFZhcmlhbnQiLCJvdk0iLCJhVmFyaWFudHMiLCJnZXRWYXJpYW50cyIsInNWYXJpYW50UmVmZXJlbmNlIiwic29tZSIsIm9WYXJpYW50IiwiZ2V0S2V5IiwiZ2V0U3RhbmRhcmRWYXJpYW50S2V5IiwiQ29udHJvbFZhcmlhbnRBcHBseUFQSSIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwiYWN0aXZhdGVWYXJpYW50IiwiZWxlbWVudCIsInZhcmlhbnRSZWZlcmVuY2UiLCJpbm5lckNoYXJ0U3RhdGUiLCJmaW5hbFN0YXRlIiwiZGlmZlN0YXRlIiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJfY3JlYXRlQ29udGVudCIsIm93bmVyIiwiX2dldE93bmVyIiwic2V0RmlsdGVyIiwiZGVzdHJveSIsInZhbHVlIiwic3VwcHJlc3NJbnZhbGlkYXRlIiwiX2FwcGx5aW5nU2V0dGluZ3MiLCJnZXRNZXRhZGF0YSIsImdldFByb3BlcnRpZXMiLCJyZW1vdmVBZ2dyZWdhdGlvbiIsInJlbW92ZWQiLCJnZXRBZ2dyZWdhdGlvbnMiLCJhZGRBZ2dyZWdhdGlvbiIsImluc2VydEFnZ3JlZ2F0aW9uIiwiaW5kZXgiLCJjb250ZXh0UGF0aCIsIl9yZXNvbHZlZENvbnRleHRQYXRoIiwiZW5kc1dpdGgiLCJnZXRNZGNDaGFydFRlbXBsYXRlIiwiZ2V0Um9vdENvbnRyb2xsZXIiLCJnZXRWaWV3RGF0YSIsImdldEFwcENvbXBvbmVudCIsImdldERpYWdub3N0aWNzIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJNYWNyb0FQSSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIlRpdGxlTGV2ZWwiLCJBdXRvIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDaGFydC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDaGFydCBhcyBWb2NhYnVsYXJ5Q2hhcnQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHR5cGUgQ2hhcnRDaGFydCBmcm9tIFwic2FwL2NoYXJ0L0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBhc3NvY2lhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5LCB4bWxFdmVudEhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25QYXJhbWV0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgdHlwZSBJVmlld1N0YXRlQ29udHJpYnV0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3ZpZXdTdGF0ZS9JVmlld1N0YXRlQ29udHJpYnV0b3JcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydFZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UsIFdyYXBwZWRDYXJkIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSBEaWFnbm9zdGljcyBmcm9tIFwic2FwL2ZlL2NvcmUvc3VwcG9ydC9EaWFnbm9zdGljc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jaGFydC9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgQ2hhcnRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0UnVudGltZVwiO1xuaW1wb3J0IENoYXJ0VXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQ2hhcnRVdGlsc1wiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3VtZXJEYXRhIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvc2VjdGlvbi9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IERpbWVuc2lvblR5cGUsIE1lYXN1cmVUeXBlLCBWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1ByZXNlbnRhdGlvblZhcmlhbnRcIjtcbmltcG9ydCBQcmVzZW50YXRpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9QcmVzZW50YXRpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSB7IENhcmRNYW5pZmVzdCB9IGZyb20gXCJzYXAvaW5zaWdodHMvQ2FyZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgRXZlbnQsIGRlZmF1bHQgYXMgVUk1RXZlbnQgfSBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIExheW91dERhdGEgZnJvbSBcInNhcC91aS9jb3JlL0xheW91dERhdGFcIjtcbmltcG9ydCB7IFRpdGxlTGV2ZWwgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgTURDQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIENoYXJ0RGVsZWdhdGUgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnREZWxlZ2F0ZVwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uVG9vbGJhckFjdGlvbiBmcm9tIFwic2FwL3VpL21kYy9hY3Rpb250b29sYmFyL0FjdGlvblRvb2xiYXJBY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgQXBwU3RhdGUsIEl0ZW1zLCBTb3J0ZXJzIH0gZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIE1vZGVsQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwiLi9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCBNYWNyb0FQSSBmcm9tIFwiLi9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25PckFjdGlvbkdyb3VwLCBDaGFydENvbnRleHRPYmplY3RQYXRoLCBDaGFydEN1c3RvbURhdGEsIENvbW1hbmRBY3Rpb24gfSBmcm9tIFwiLi9jaGFydC9NZGNDaGFydFRlbXBsYXRlXCI7XG5pbXBvcnQgeyBnZXRNZGNDaGFydFRlbXBsYXRlIH0gZnJvbSBcIi4vY2hhcnQvTWRjQ2hhcnRUZW1wbGF0ZVwiO1xuaW1wb3J0IFByZXNlbnRhdGlvblZhcmlhbnRUb1N0YXRlVXRpbHNQViBmcm9tIFwiLi9jaGFydC9hZGFwdGVyL0NoYXJ0UHZUb1N0YXRlVXRpbHNcIjtcbmltcG9ydCB7IGNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyB9IGZyb20gXCIuL2luc2lnaHRzL0FuYWx5dGljYWxJbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sU3RhdGUgfSBmcm9tIFwiLi9pbnNpZ2h0cy9Db21tb25JbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHsgaGFzSW5zaWdodEFjdGlvbkVuYWJsZWQsIHNob3dHZW5lcmljRXJyb3JNZXNzYWdlIH0gZnJvbSBcIi4vaW5zaWdodHMvQ29tbW9uSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRDb250ZW50LCBJbnNpZ2h0c1BhcmFtcyB9IGZyb20gXCIuL2luc2lnaHRzL0luc2lnaHRzU2VydmljZVwiO1xuaW1wb3J0IHsgZ2V0Q2FyZE1hbmlmZXN0LCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldywgc2hvd0luc2lnaHRzQ2FyZFByZXZpZXcgfSBmcm9tIFwiLi9pbnNpZ2h0cy9JbnNpZ2h0c1NlcnZpY2VcIjtcbmltcG9ydCBTdGF0ZUhlbHBlciBmcm9tIFwiLi9tZGMvYWRhcHRlci9TdGF0ZUhlbHBlclwiO1xuXG5leHBvcnQgdHlwZSBDaGFydFN0YXRlID0ge1xuXHRpbm5lckNoYXJ0Pzoge1xuXHRcdGluaXRpYWxTdGF0ZT86IHtcblx0XHRcdGl0ZW1zPzogeyBuYW1lOiBzdHJpbmcgfVtdO1xuXHRcdH07XG5cdFx0ZnVsbFN0YXRlPzoge1xuXHRcdFx0aXRlbXM/OiB7IG5hbWU6IHN0cmluZyB9W107XG5cdFx0XHRmaWx0ZXI/OiBvYmplY3Q7XG5cdFx0fTtcblx0fTtcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiB7XG5cdFx0dmFyaWFudElkPzogc3RyaW5nIHwgbnVsbDtcblx0fTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSBjaGFydCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9idWlsZGluZ0Jsb2Nrcy9jaGFydC9jaGFydERlZmF1bHQgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2tzfVxuICogPGJyPlxuICogVXN1YWxseSwgYSBjb250ZXh0UGF0aCBhbmQgbWV0YVBhdGggaXMgZXhwZWN0ZWQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpDaGFydCBpZD1cIk15Q2hhcnRcIiBjb250ZXh0UGF0aD1cIi9Sb290RW50aXR5XCIgbWV0YVBhdGg9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIiAvJmd0O1xuICogPC9wcmU+XG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5DaGFydFxuICogQGlnbm9yZUludGVyZmFjZSBzYXAuZmUubWFjcm9zLmNvbnRyb2xzLnNlY3Rpb24uSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclxuICogQHVpNS1tZXRhbW9kZWxcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5DaGFydFwiLCB7IHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCJdIH0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFydCBleHRlbmRzIE1hY3JvQVBJIGltcGxlbWVudHMgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciwgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPENoYXJ0U3RhdGU+IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIilcblx0X19pbXBsZW1lbnRzX19zYXBfZmVfY29yZV9jb250cm9sbGVyZXh0ZW5zaW9uc192aWV3U3RhdGVfSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yID0gdHJ1ZTtcblxuXHRjb250ZW50ITogTURDQ2hhcnQ7XG5cblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuc2VjdGlvbi5JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX2ZlX21hY3Jvc19jb250cm9sc19zZWN0aW9uX0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IgPSB0cnVlO1xuXG5cdGdldFNlY3Rpb25Db250ZW50Um9sZSgpOiBcInByb3ZpZGVyXCIgfCBcImNvbnN1bWVyXCIge1xuXHRcdHJldHVybiBcImNvbnN1bWVyXCI7XG5cdH1cblxuXHQvKipcblx0ICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNlbmREYXRhVG9Db25zdW1lciBtZXRob2Qgd2hpY2ggaXMgYSBwYXJ0IG9mIHRoZSBJU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXG5cdCAqXG5cdCAqIFdpbGwgYmUgY2FsbGVkIGZyb20gdGhlIHNhcC5mZS5tYWNyb3MuY29udHJvbHMuU2VjdGlvbiBjb250cm9sIHdoZW4gdGhlcmUgaXMgYSBDaGFydCBidWlsZGluZyBibG9jayByZW5kZXJlZCB3aXRoaW4gYSBzZWN0aW9uXG5cdCAqIGFsb25nIHdpdGggdGhlIGNvbnN1bWVyRGF0YSBpLmUuIHNlY3Rpb24ncyBkYXRhIHN1Y2ggYXMgdGl0bGUgYW5kIHRpdGxlIGxldmVsIHdoaWNoIGlzIHRoZW4gYXBwbGllZCB0byB0aGUgY2hhcnQgdXNpbmcgdGhlIGltcGxlbWVudGF0aW9uIGJlbG93IGFjY29yZGluZ2x5LlxuXHQgKlxuXHQgKi9cblxuXHRzZW5kRGF0YVRvQ29uc3VtZXIoY29uc3VtZXJEYXRhOiBDb25zdW1lckRhdGEpOiB2b2lkIHtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlcihjb25zdW1lckRhdGEudGl0bGUpO1xuXHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyU3R5bGUoXCJINFwiKTtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlckxldmVsKGNvbnN1bWVyRGF0YS50aXRsZUxldmVsIGFzIFRpdGxlTGV2ZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBjaGFydFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBpZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgcHJlc2VudGF0aW9uIGNvbnRleHQgKFVJLkNoYXJ0IHdpdGggb3Igd2l0aG91dCBhIHF1YWxpZmllcilcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1xuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50XCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcIlxuXHRcdF1cblx0fSlcblx0cmVhZG9ubHkgbWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eVNldCBvciBuYXZpZ2F0aW9uUHJvcGVydHlcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW11cblx0fSlcblx0cmVhZG9ubHkgY29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIHRleHQgdGhhdCBpcyBzaG93biBpbiB0aGUgY2hhcnRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBoZWFkZXIhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0cmVhZG9ubHkgaGVhZGVyVmlzaWJsZSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIGNoYXJ0LlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCBvciBgTXVsdGlwbGVgXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJNdWx0aXBsZVwiLCBhbGxvd2VkVmFsdWVzOiBbXCJOb25lXCIsIFwiU2luZ2xlXCIsIFwiTXVsdGlwbGVcIl0gfSlcblx0cmVhZG9ubHkgc2VsZWN0aW9uTW9kZSE6IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIGtpbmQgb2YgdmFyaWFudCBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydC5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZSBpcyBgQ29udHJvbGAuPGJyLz5cblx0ICogSWYgc2V0IHdpdGggdmFsdWUgYENvbnRyb2xgLCBhIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIHNlZW4gd2l0aGluIHRoZSBjaGFydCBhbmQgdGhlIGNoYXJ0IGlzIGxpbmtlZCB0byB0aGlzLjxici8+XG5cdCAqIElmIG5vdCBzZXQgd2l0aCBhbnkgdmFsdWUsIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgY2hhcnQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0cmVhZG9ubHkgdmFyaWFudE1hbmFnZW1lbnQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSBjaGFydCBwZXJzb25hbGl6YXRpb24gZGlhbG9nLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYHRydWVgLCBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhpcyBraW5kIG9mIGNoYXJ0IGFyZSBlbmFibGVkLjxici8+XG5cdCAqIElmIGl0IGlzIHNldCB0byBgZmFsc2VgLCBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWQuPGJyLz5cblx0ICogPGJyLz5cblx0ICogWW91IGNhbiBhbHNvIHByb3ZpZGUgYSBtb3JlIGdyYW51bGFyIGNvbnRyb2wgZm9yIHRoZSBwZXJzb25hbGl6YXRpb24gYnkgcHJvdmlkaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aCB0aGUgb3B0aW9ucyB5b3Ugd2FudCB0byBiZSBhdmFpbGFibGUuPGJyLz5cblx0ICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOjxici8+XG5cdCAqIC0gU29ydDxici8+XG5cdCAqIC0gVHlwZTxici8+XG5cdCAqIC0gSXRlbTxici8+XG5cdCAqIC0gRmlsdGVyPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0pXG5cdHJlYWRvbmx5IHBlcnNvbmFsaXphdGlvbiE6IHN0cmluZyB8IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEhlYWRlciBsZXZlbCBvZiBjaGFydFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBoZWFkZXJMZXZlbDogVGl0bGVMZXZlbCA9IFRpdGxlTGV2ZWwuQXV0bztcblxuXHQvKipcblx0ICogQ2hhcnQgZGVsZWdhdGVcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0cmVhZG9ubHkgY2hhcnREZWxlZ2F0ZT86IG9iamVjdDtcblxuXHQvKipcblx0ICogVXNlZCBpbnRlcm5hbGx5IGZvciBMUiBhbmQgT1Bcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHJlYWRvbmx5IF9hcHBseUlkVG9Db250ZW50ID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIE5vIGRhdGEgdGV4dFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZWFkb25seSBub0RhdGFUZXh0Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQYXJhbWV0ZXIgd2l0aCBkcmlsbHN0YWNrIG9uIGEgZHJpbGwgdXAvIGRyaWxsIGRvd24gb2YgdGhlIE1EQ19DaGFydFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJldkRyaWxsU3RhY2s6IHN0cmluZ1tdID0gW107XG5cblx0X2NvbnRlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF9jb250ZXh0ITogTW9kZWxDb250ZXh0O1xuXG5cdGJsb2NrQWN0aW9ucz86IEFjdGlvbk9yQWN0aW9uR3JvdXA7XG5cblx0X2Jsb2NrSWQ/OiBzdHJpbmc7XG5cblx0X3BlcnNvbmFsaXphdGlvbj86IHN0cmluZyB8IGJvb2xlYW47XG5cblx0aW5pdGlhbENvbnRyb2xTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRfYmxvY2tBY3Rpb25zITogKE1lbnVJdGVtIHwgQWN0aW9uVG9vbGJhckFjdGlvbiB8IHVuZGVmaW5lZClbXTtcblxuXHRjaGFydERlZmluaXRpb24hOiBDaGFydFZpc3VhbGl6YXRpb247XG5cblx0bmF2aWdhdGlvblBhdGg/OiBzdHJpbmc7XG5cblx0YXV0b0JpbmRPbkluaXQ/OiBib29sZWFuO1xuXG5cdHZpelByb3BlcnRpZXM/OiBzdHJpbmc7XG5cblx0Y2hhcnRBY3Rpb25zPzogQmFzZUFjdGlvbltdID0gW107XG5cblx0ZmlsdGVyPzogc3RyaW5nO1xuXG5cdHZpc2libGU/OiBzdHJpbmc7XG5cblx0ZHJhZnRTdXBwb3J0ZWQ/OiBib29sZWFuO1xuXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHR1c2VDb25kZW5zZWRMYXlvdXQhOiBib29sZWFuO1xuXG5cdF9tZXRhUGF0aENvbnRleHQhOiBNb2RlbENvbnRleHQ7XG5cblx0X2N1c3RvbURhdGEhOiBDaGFydEN1c3RvbURhdGE7XG5cblx0X2NoYXJ0Q29udGV4dCE6IE1vZGVsQ29udGV4dDtcblxuXHRfY2hhcnRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X2NoYXJ0ITogVm9jYWJ1bGFyeUNoYXJ0O1xuXG5cdF9tZXRhTW9kZWwhOiBPRGF0YU1ldGFNb2RlbDtcblxuXHRtZWFzdXJlcz86IE1vZGVsQ29udGV4dDtcblxuXHRfc29ydENvbmRpdGlvbnM6IG9iamVjdCB8IHVuZGVmaW5lZDtcblxuXHRfY29tbWFuZEFjdGlvbnM6IENvbW1hbmRBY3Rpb25bXSA9IFtdO1xuXG5cdGZpcmVWYXJpYW50U2VsZWN0ZWQ/OiBGdW5jdGlvbjtcblxuXHRmaXJlVmFyaWFudFNhdmVkPzogRnVuY3Rpb247XG5cblx0ZmlyZVNlZ21lbnRlZEJ1dHRvblByZXNzZWQ/OiBGdW5jdGlvbjtcblxuXHRfcmVzb2x2ZWRDb250ZXh0UGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogSWQgb2YgdGhlIEZpbHRlckJhciBidWlsZGluZyBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIGNoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiB9KVxuXHRmaWx0ZXJCYXI/OiBzdHJpbmc7XG5cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC51aS5jb3JlLkxheW91dERhdGFcIlxuXHR9KVxuXHRsYXlvdXREYXRhITogTGF5b3V0RGF0YTtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIGFjdGlvbnMgb2YgdGhlIGNoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5jaGFydC5BY3Rpb25cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy5jaGFydC5BY3Rpb25Hcm91cFwiXSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRkZWZhdWx0Q2xhc3M6IEFjdGlvblxuXHR9KVxuXHRhY3Rpb25zITogQWN0aW9uW10gfCBBY3Rpb25Hcm91cFtdO1xuXG5cdC8qKlxuXHQgKiBHZXRzIGNvbnRleHRzIGZyb20gdGhlIGNoYXJ0IHRoYXQgaGF2ZSBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLlxuXHQgKiBAcmV0dXJucyBDb250ZXh0cyBvZiB0aGUgcm93cyBzZWxlY3RlZCBieSB0aGUgdXNlclxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKCk6IENvbnRleHRbXSB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudD8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCJzZWxlY3RlZENvbnRleHRzXCIpIHx8IFtdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIGNoYXJ0IHNlbGVjdGlvbnMgYXJlIGNoYW5nZWQuIFRoZSBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGF0YSBzZWxlY3RlZC9kZXNlbGVjdGVkIGFuZCB0aGUgQm9vbGVhbiBmbGFnIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgZGF0YSBpcyBzZWxlY3RlZCBvciBkZXNlbGVjdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRzZWxlY3Rpb25DaGFuZ2UhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIGNoYXJ0IHJlcXVlc3RzIGRhdGEuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRpbnRlcm5hbERhdGFSZXF1ZXN0ZWQhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gY2hhcnQncyB2YXJpYW50IGlzIHNlbGVjdGVkLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QGV2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIGNoYXJ0J3MgdmFyaWFudCBpcyBzYXZlZC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBldmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBFdmVudCB0cmlnZ2VyZWQgd2hlbiBjaGFydCdzIHNlZ21lbnRlZCBidXR0b24gaS5lLiwgbW9kZSBiZXR3ZWVuIHRhYmxlLCBjaGFydCBhbmQgY2hhcnQgd2l0aCB0YWJsZSB2aWV3IGlzIHNlbGVjdGVkXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzc2VkITogRnVuY3Rpb247XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8Q2hhcnQ+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0aWYgKHNldHRpbmdzPy5fYXBwbHlJZFRvQ29udGVudCkge1xuXHRcdFx0c2V0dGluZ3MuaWQgPSBnZW5lcmF0ZShbc2V0dGluZ3MuaWQsIFwiOjpDaGFydFwiXSk7XG5cdFx0fVxuXHRcdHN1cGVyKHNldHRpbmdzLCBvdGhlcnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIGlzIG92ZXJyaWRkZW4gdG8gZW5zdXJlIGJhY2t3YXJkIGluY29tcGF0aWJpbGl0eVxuXHQgKiBAb3ZlcnJpZGVcblx0ICovXG5cdGlzQTxUIGV4dGVuZHMgQmFzZU9iamVjdCA9IEJhc2VPYmplY3Q+KHR5cGVOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMgaXMgVDtcblxuXHRpc0E8VD4odHlwZU5hbWU/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMgaXMgVDtcblxuXHRpc0EodHlwZU5hbWU6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgb2xkVmFsaWRUeXBlID0gXCJzYXAuZmUubWFjcm9zLmNoYXJ0LkNoYXJ0QVBJXCI7XG5cdFx0aWYgKChBcnJheS5pc0FycmF5KHR5cGVOYW1lKSAmJiB0eXBlTmFtZS5pbmNsdWRlcyhvbGRWYWxpZFR5cGUpKSB8fCB0eXBlTmFtZSA9PT0gb2xkVmFsaWRUeXBlKSByZXR1cm4gdHJ1ZTtcblxuXHRcdHJldHVybiBzdXBlci5pc0EodHlwZU5hbWUpO1xuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0b25BZnRlclJlbmRlcmluZyhhZnRlclJlbmRlcmluZ0V2ZW50OiBKUXVlcnkuRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRWaWV3KCk7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBjaGFydCA9IHRoaXMuZ2V0Q29udGVudCgpIGFzIENoYXJ0O1xuXHRcdGNvbnN0IHNob3dNZXNzYWdlU3RyaXA6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0gaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiY29udHJvbHMvc2hvd01lc3NhZ2VTdHJpcFwiKSB8fCB7fTtcblx0XHRjb25zdCBzQ2hhcnRFbnRpdHlQYXRoID0gY2hhcnQuZGF0YShcImVudGl0eVNldFwiKSxcblx0XHRcdHNDYWNoZUtleSA9IGAke3NDaGFydEVudGl0eVBhdGh9Q2hhcnRgLFxuXHRcdFx0b0JpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRzaG93TWVzc2FnZVN0cmlwW3NDYWNoZUtleV0gPVxuXHRcdFx0Y2hhcnQuZGF0YShcImRyYWZ0U3VwcG9ydGVkXCIpID09PSBcInRydWVcIiAmJiAhIW9CaW5kaW5nQ29udGV4dCAmJiAhb0JpbmRpbmdDb250ZXh0LmdldE9iamVjdChcIklzQWN0aXZlRW50aXR5XCIpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29udHJvbHMvc2hvd01lc3NhZ2VTdHJpcFwiLCBzaG93TWVzc2FnZVN0cmlwKTtcblx0XHR0aGlzLmF0dGFjaFN0YXRlQ2hhbmdlSGFuZGxlcigpO1xuXG5cdFx0c3VwZXIub25BZnRlclJlbmRlcmluZyhhZnRlclJlbmRlcmluZ0V2ZW50KTtcblx0fVxuXG5cdHByaXZhdGUgYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyKCk6IHZvaWQge1xuXHRcdFN0YXRlVXRpbC5kZXRhY2hTdGF0ZUNoYW5nZSh0aGlzLnN0YXRlQ2hhbmdlSGFuZGxlcik7XG5cdFx0U3RhdGVVdGlsLmF0dGFjaFN0YXRlQ2hhbmdlKHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0fVxuXG5cdHN0YXRlQ2hhbmdlSGFuZGxlcihvRXZlbnQ6IEV2ZW50PHsgY29udHJvbDogQ29udHJvbCB9Pik6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2wgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udHJvbFwiKTtcblx0XHRpZiAoY29udHJvbC5pc0E8Q2hhcnQ+KFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0Y29uc3QgY2hhcnRCbG9jayA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyB7IGhhbmRsZVN0YXRlQ2hhbmdlPzogRnVuY3Rpb24gfTtcblx0XHRcdGlmIChjaGFydEJsb2NrPy5oYW5kbGVTdGF0ZUNoYW5nZSkge1xuXHRcdFx0XHRjaGFydEJsb2NrLmhhbmRsZVN0YXRlQ2hhbmdlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMob0ZpbHRlckNvbnRyb2w6IENvbnRyb2wpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3Qgb0NoYXJ0ID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIEZpbHRlclV0aWxzLmdldE5vdEFwcGxpY2FibGVGaWx0ZXJzKG9GaWx0ZXJDb250cm9sIGFzIEZpbHRlckJhciwgb0NoYXJ0ISk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0aGFuZGxlU2VsZWN0aW9uQ2hhbmdlKG9FdmVudDogVUk1RXZlbnQ8eyBkYXRhOiB1bmtub3duW107IG5hbWU6IHN0cmluZyB9Pik6IHZvaWQge1xuXHRcdGNvbnN0IGFEYXRhID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImRhdGFcIik7XG5cdFx0Y29uc3QgYlNlbGVjdGVkID0gb0V2ZW50LmdldFBhcmFtZXRlcihcIm5hbWVcIikgPT09IFwic2VsZWN0RGF0YVwiO1xuXHRcdENoYXJ0UnVudGltZS5mblVwZGF0ZUNoYXJ0KG9FdmVudCk7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIiwgbWVyZ2Uoe30sIHsgZGF0YTogYURhdGEsIHNlbGVjdGVkOiBiU2VsZWN0ZWQgfSkpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkKCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiaW50ZXJuYWxEYXRhUmVxdWVzdGVkXCIpO1xuXHR9XG5cblx0QGNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyKFwiY29sbGFib3JhdGlvbk1hbmFnZXJcIiwgXCJjb2xsZWN0QXZhaWxhYmxlQ2FyZHNcIilcblx0YXN5bmMgY29sbGVjdEF2YWlsYWJsZUNhcmRzKGNhcmRzOiBXcmFwcGVkQ2FyZFtdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYWN0aW9uVG9vbGJhckl0ZW1zID0gdGhpcy5jb250ZW50LmdldEFjdGlvbnMoKSBhcyBBY3Rpb25Ub29sYmFyQWN0aW9uW107XG5cdFx0aWYgKGhhc0luc2lnaHRBY3Rpb25FbmFibGVkKGFjdGlvblRvb2xiYXJJdGVtcywgdGhpcy5jb250ZW50LmdldEZpbHRlcigpKSkge1xuXHRcdFx0Y29uc3QgY2FyZCA9IGF3YWl0IHRoaXMuZ2V0Q2FyZE1hbmlmZXN0Q2hhcnQoKTtcblx0XHRcdGlmIChPYmplY3Qua2V5cyhjYXJkKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNhcmRzLnB1c2goe1xuXHRcdFx0XHRcdGNhcmQ6IGNhcmQsXG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuZ2V0Q2hhcnRDb250cm9sKCkuZ2V0SGVhZGVyKCksXG5cdFx0XHRcdFx0Y2FsbGJhY2s6IHRoaXMub25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrLmJpbmQodGhpcylcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aGFzU2VsZWN0aW9ucygpOiBib29sZWFuIHtcblx0XHQvLyBjb25zaWRlciBjaGFydCBzZWxlY3Rpb25zIGluIHRoZSBjdXJyZW50IGRyaWxsIHN0YWNrIG9yIG9uIGFueSBmdXJ0aGVyIGRyaWxsIGRvd25zXG5cdFx0Y29uc3QgbWRjQ2hhcnQgPSB0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBNRENDaGFydDtcblx0XHRpZiAobWRjQ2hhcnQpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IGNoYXJ0ID0gKG1kY0NoYXJ0LmdldENvbnRyb2xEZWxlZ2F0ZSgpIGFzIHVua25vd24gYXMgQ2hhcnREZWxlZ2F0ZSk/LmdldElubmVyQ2hhcnQobWRjQ2hhcnQpIGFzIENoYXJ0Q2hhcnQ7XG5cdFx0XHRcdGlmIChjaGFydCkge1xuXHRcdFx0XHRcdGNvbnN0IGFEaW1lbnNpb25zID0gQ2hhcnRVdGlscy5nZXREaW1lbnNpb25zRnJvbURyaWxsU3RhY2soY2hhcnQpO1xuXHRcdFx0XHRcdGNvbnN0IGJJc0RyaWxsRG93biA9IGFEaW1lbnNpb25zLmxlbmd0aCA+IHRoaXMucHJldkRyaWxsU3RhY2subGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGJJc0RyaWxsVXAgPSBhRGltZW5zaW9ucy5sZW5ndGggPCB0aGlzLnByZXZEcmlsbFN0YWNrLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBiTm9DaGFuZ2UgPSBhRGltZW5zaW9ucy50b1N0cmluZygpID09PSB0aGlzLnByZXZEcmlsbFN0YWNrLnRvU3RyaW5nKCk7XG5cdFx0XHRcdFx0bGV0IGFGaWx0ZXJzOiBGaWx0ZXJbXTtcblx0XHRcdFx0XHRpZiAoYklzRHJpbGxVcCAmJiBhRGltZW5zaW9ucy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRcdC8vIGRyaWxsaW5nIHVwIHRvIGxldmVsMCB3b3VsZCBjbGVhciBhbGwgc2VsZWN0aW9uc1xuXHRcdFx0XHRcdFx0YUZpbHRlcnMgPSBDaGFydFV0aWxzLmdldENoYXJ0U2VsZWN0aW9ucyhtZGNDaGFydCwgdHJ1ZSkgYXMgRmlsdGVyW107XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIGFwcGx5IGZpbHRlcnMgb2Ygc2VsZWN0aW9ucyBvZiBwcmV2aW91cyBkcmlsbHN0YWNrIHdoZW4gZHJpbGxpbmcgdXAvZG93blxuXHRcdFx0XHRcdFx0Ly8gdG8gdGhlIGNoYXJ0IGFuZCB0YWJsZVxuXHRcdFx0XHRcdFx0YUZpbHRlcnMgPSBDaGFydFV0aWxzLmdldENoYXJ0U2VsZWN0aW9ucyhtZGNDaGFydCkgYXMgRmlsdGVyW107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChiSXNEcmlsbERvd24gfHwgYklzRHJpbGxVcCkge1xuXHRcdFx0XHRcdFx0Ly8gdXBkYXRlIHRoZSBkcmlsbHN0YWNrIG9uIGEgZHJpbGwgdXAvIGRyaWxsIGRvd25cblx0XHRcdFx0XHRcdHRoaXMucHJldkRyaWxsU3RhY2sgPSBhRGltZW5zaW9ucztcblx0XHRcdFx0XHRcdHJldHVybiBhRmlsdGVycy5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYk5vQ2hhbmdlKSB7XG5cdFx0XHRcdFx0XHQvLyBiTm9DaGFuZ2UgaXMgdHJ1ZSB3aGVuIGNoYXJ0IGlzIHNlbGVjdGVkXG5cdFx0XHRcdFx0XHRyZXR1cm4gYUZpbHRlcnMubGVuZ3RoID4gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoYEVycm9yIHdoaWxlIGNoZWNraW5nIGZvciBzZWxlY3Rpb25zIGluIENoYXJ0OiAke2Vycn1gKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIGNoYXJ0cy5cblx0ICogQHJldHVybnMgVW5kZWZpbmVkIGlmIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdGFzeW5jIG9uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpbnNpZ2h0c1BhcmFtcyA9IGF3YWl0IGNyZWF0ZUNoYXJ0Q2FyZFBhcmFtcyh0aGlzKTtcblx0XHRcdGlmIChpbnNpZ2h0c1BhcmFtcykge1xuXHRcdFx0XHRzaG93SW5zaWdodHNDYXJkUHJldmlldyhpbnNpZ2h0c1BhcmFtcyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRzaG93R2VuZXJpY0Vycm9yTWVzc2FnZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0TG9nLmVycm9yKGUgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY2FyZCBtYW5pZmVzdCBvcHRpbWl6ZWQgZm9yIHRoZSBjaGFydCBjYXNlLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIG9mIENhcmRNYW5pZmVzdFxuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyBnZXRDYXJkTWFuaWZlc3RDaGFydCgpOiBQcm9taXNlPENhcmRNYW5pZmVzdD4ge1xuXHRcdGNvbnN0IGluc2lnaHRzUGFyYW1zID0gYXdhaXQgY3JlYXRlQ2hhcnRDYXJkUGFyYW1zKHRoaXMpO1xuXHRcdHJldHVybiBnZXRDYXJkTWFuaWZlc3QoaW5zaWdodHNQYXJhbXMgYXMgSW5zaWdodHNQYXJhbXM8Q2hhcnRDb250ZW50Pik7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBjcmVhdGUgaW5zaWdodHNQYXJhbXMgYW5kIGNhbGwgdGhlIEFQSSB0byBzaG93IGluc2lnaHRzIGNhcmQgcHJldmlldyBmb3IgdGFibGUuXG5cdCAqIEBwYXJhbSBjYXJkIFRoZSBjYXJkIG1hbmlmZXN0IHRvIGJlIHVzZWQgZm9yIHRoZSBjYWxsYmFja1xuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgY2FyZCBwcmV2aWV3IGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0YXN5bmMgb25BZGRDYXJkVG9Db2xsYWJvcmF0aW9uTWFuYWdlckNhbGxiYWNrKGNhcmQ6IENhcmRNYW5pZmVzdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoY2FyZCkge1xuXHRcdFx0XHRhd2FpdCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldyhcblx0XHRcdFx0XHRjYXJkLFxuXHRcdFx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8uY29sbGFib3JhdGlvbk1hbmFnZXIuZ2V0U2VydmljZSgpIGFzIENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0c2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UodGhpcy5jb250ZW50KTtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZpbHRlcnMgcmVsYXRlZCB0byB0aGUgY2hhcnQuXG5cdCAqIEByZXR1cm5zICBUaGUgZmlsdGVyIGNvbmZpZ3VyZWQgb24gdGhlIGNoYXJ0IG9yIHVuZGVmaW5lZCBpZiBub25lXG5cdCAqL1xuXHRnZXRGaWx0ZXIoKTogRmlsdGVyIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBjaGFydEZpbHRlckluZm8gPSBDaGFydFV0aWxzLmdldEFsbEZpbHRlckluZm8odGhpcy5jb250ZW50IGFzIHVua25vd24gYXMgTURDQ2hhcnQpO1xuXHRcdGlmIChjaGFydEZpbHRlckluZm8uZmlsdGVycy5sZW5ndGgpIHtcblx0XHRcdGNoYXJ0RmlsdGVySW5mby5maWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4ge1xuXHRcdFx0XHRpZiAoZmlsdGVyLmdldFBhdGgoKSkge1xuXHRcdFx0XHRcdChmaWx0ZXIgYXMgdW5rbm93biBhcyB7IHNQYXRoOiBzdHJpbmcgfSkuc1BhdGggPSB0aGlzLmdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyhmaWx0ZXIuZ2V0UGF0aCgpISk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIG5ldyBGaWx0ZXIoeyBmaWx0ZXJzOiBjaGFydEZpbHRlckluZm8uZmlsdGVycywgYW5kOiB0cnVlIH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNoYXJ0IGNvbnRyb2wgZnJvbSB0aGUgQ2hhcnQgQVBJLlxuXHQgKiBAcmV0dXJucyBUaGUgQ2hhcnQgY29udHJvbCBpbnNpZGUgdGhlIENoYXJ0IEFQSVxuXHQgKi9cblx0Z2V0Q2hhcnRDb250cm9sKCk6IE1EQ0NoYXJ0IHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIGRpbWVuc2lvbi5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSAgTmFtZSBvZiB0aGUgZGltZW5zaW9uXG5cdCAqIEByZXR1cm5zIFRoZSBkYXRhbW9kZWwgb2JqZWN0IHBhdGggZm9yIHRoZSBkaW1lbnNpb25cblx0ICovXG5cblx0Z2V0UHJvcGVydHlEYXRhTW9kZWwocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PiB8IG51bGwge1xuXHRcdGNvbnN0IG1ldGFQYXRoID0gdGhpcy5jb250ZW50LmRhdGEoXCJ0YXJnZXRDb2xsZWN0aW9uUGF0aFwiKSBhcyBzdHJpbmc7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gKHRoaXMuY29udGVudC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWwpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IGRpbWVuc2lvbkNvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoYCR7bWV0YVBhdGh9LyR7cHJvcGVydHlOYW1lfWApIGFzIENvbnRleHQ7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxQcm9wZXJ0eT4oZGltZW5zaW9uQ29udGV4dCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IG9mIGNoYXJ0IHByb3BlcnRpZXMgYnkgcmVtb3ZpbmcgX2ZlX2dyb3VwYWJsZSBhbmQgX2ZlX2FnZ3JlZ2F0YWJsZSBwcmVmaXguXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFQcm9wZXJ0aWVzIENoYXJ0IGZpbHRlciBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIENoYXJ0IHByb3BlcnRpZXMgd2l0aG91dCBwcmVmaXhlc1xuXHQgKi9cblxuXHRnZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMoY2hhcnRQcm9wZXJ0eTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRpZiAoY2hhcnRQcm9wZXJ0eSAmJiBjaGFydFByb3BlcnR5LmluY2x1ZGVzKFwiZmVfZ3JvdXBhYmxlXCIpKSB7XG5cdFx0XHRjaGFydFByb3BlcnR5ID0gdGhpcy5nZXRJbnRlcm5hbENoYXJ0TmFtZUZyb21Qcm9wZXJ0eU5hbWVBbmRLaW5kKGNoYXJ0UHJvcGVydHksIFwiZ3JvdXBhYmxlXCIpO1xuXHRcdH0gZWxzZSBpZiAoY2hhcnRQcm9wZXJ0eSAmJiBjaGFydFByb3BlcnR5LmluY2x1ZGVzKFwiZmVfYWdncmVnYXRhYmxlXCIpKSB7XG5cdFx0XHRjaGFydFByb3BlcnR5ID0gdGhpcy5nZXRJbnRlcm5hbENoYXJ0TmFtZUZyb21Qcm9wZXJ0eU5hbWVBbmRLaW5kKGNoYXJ0UHJvcGVydHksIFwiYWdncmVnYXRhYmxlXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gY2hhcnRQcm9wZXJ0eTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gSUQgd2hpY2ggc2hvdWxkIGJlIHVzZWQgaW4gdGhlIGludGVybmFsIGNoYXJ0IGZvciB0aGUgbWVhc3VyZSBvciBkaW1lbnNpb24uXG5cdCAqIEBwYXJhbSBuYW1lIElEIG9mIHRoZSBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0ga2luZCBUeXBlIG9mIHRoZSBwcm9wZXJ0eSAobWVhc3VyZSBvciBkaW1lbnNpb24pXG5cdCAqIEByZXR1cm5zIEludGVybmFsIElEIGZvciB0aGUgc2FwLmNoYXJ0LkNoYXJ0XG5cdCAqL1xuXG5cdGdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQobmFtZTogc3RyaW5nLCBraW5kOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiBuYW1lLnJlcGxhY2UoXCJfZmVfXCIgKyBraW5kICsgXCJfXCIsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIGNoYXJ0J3Mgc3RhdGVVdGlsICB0byBDaGFydCBQcmVzZW50YXRpb24gVmFyaWFudC5cblx0ICogQHBhcmFtIGNoYXJ0U3RhdGUgQ2hhcnQgQXBwU3RhdGUgdXRpbCBQVlxuXHQgKiBAcmV0dXJucyBQcmVzZW50YXRpb24gVmFyaWFudCBzdHJ1Y3R1cmUgZm9yIHRoZSBjaGFydFxuXHQgKi9cblx0X2NvbnZlcnRTdGF0ZVV0aWxUb1ByZXNlbnRhdGlvblZhcmlhbnQoY2hhcnRTdGF0ZTogQXBwU3RhdGUpOiBQcmVzZW50YXRpb25WYXJpYW50IHtcblx0XHRjb25zdCBzb3J0T3JkZXIgPSBjaGFydFN0YXRlLnNvcnRlcnM/Lm1hcCgoc29ydGVyOiBTb3J0ZXJzKSA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRQcm9wZXJ0eTogdGhpcy5nZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMoc29ydGVyLm5hbWUpLFxuXHRcdFx0XHREZXNjZW5kaW5nOiBzb3J0ZXIuZGVzY2VuZGluZ1xuXHRcdFx0fTtcblx0XHR9KTtcblx0XHRjb25zdCB0eXBlID0gY2hhcnRTdGF0ZS5zdXBwbGVtZW50YXJ5Q29uZmlnPy5wcm9wZXJ0aWVzPy5jaGFydFR5cGU7XG5cdFx0Y29uc3QgY2hhcnRUeXBlSW5SZXF1aXJlZEZvcm1hdCA9IHR5cGUgPyB0eXBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zbGljZSgxKSA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBjaGFydFR5cGUgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0VHlwZS9cIiArIGNoYXJ0VHlwZUluUmVxdWlyZWRGb3JtYXQ7XG5cdFx0Y29uc3QgZGltZW5zaW9uczogc3RyaW5nW10gPSBbXSxcblx0XHRcdG1lYXN1cmVzOiBzdHJpbmdbXSA9IFtdLFxuXHRcdFx0ZGltZW5zaW9uQXR0cmlidXRlczogRGltZW5zaW9uVHlwZVtdID0gW10sXG5cdFx0XHRtZWFzdXJlQXR0cmlidXRlczogTWVhc3VyZVR5cGVbXSA9IFtdO1xuXHRcdChjaGFydFN0YXRlLml0ZW1zID8/IFtdKS5mb3JFYWNoKChpdGVtOiBJdGVtcykgPT4ge1xuXHRcdFx0aXRlbS5uYW1lID0gdGhpcy5nZXRDaGFydFByb3BlcnRpZXNXaXRob3V0UHJlZml4ZXMoaXRlbS5uYW1lKTtcblx0XHRcdGNvbnN0IHJvbGUgPSBpdGVtLnJvbGU/Lmxlbmd0aFxuXHRcdFx0XHQ/IGl0ZW0ucm9sZS5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArIGl0ZW0ucm9sZT8uc3Vic3RyaW5nKDEsIGl0ZW0ucm9sZS5sZW5ndGgpXG5cdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0aWYgKGl0ZW0ucm9sZSA9PT0gXCJjYXRlZ29yeVwiIHx8IGl0ZW0ucm9sZSA9PT0gXCJzZXJpZXNcIiB8fCBpdGVtLnJvbGUgPT09IFwiY2F0ZWdvcnkyXCIpIHtcblx0XHRcdFx0ZGltZW5zaW9ucy5wdXNoKGl0ZW0ubmFtZSk7XG5cdFx0XHRcdGRpbWVuc2lvbkF0dHJpYnV0ZXMucHVzaCh7XG5cdFx0XHRcdFx0RGltZW5zaW9uOiBpdGVtLm5hbWUsXG5cdFx0XHRcdFx0Um9sZTogYGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0RGltZW5zaW9uUm9sZVR5cGUvJHtyb2xlfWBcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtZWFzdXJlcy5wdXNoKGl0ZW0ubmFtZSk7XG5cdFx0XHRcdG1lYXN1cmVBdHRyaWJ1dGVzLnB1c2goeyBNZWFzdXJlOiBpdGVtLm5hbWUsIFJvbGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnREaW1lbnNpb25Sb2xlVHlwZS9cIiArIHJvbGUgfSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRjb25zdCBjaGFydFZpejogVmlzdWFsaXphdGlvbiA9IHtcblx0XHRcdENvbnRlbnQ6IHtcblx0XHRcdFx0Q2hhcnRUeXBlOiBjaGFydFR5cGUsXG5cdFx0XHRcdERpbWVuc2lvbkF0dHJpYnV0ZXM6IGRpbWVuc2lvbkF0dHJpYnV0ZXMsXG5cdFx0XHRcdERpbWVuc2lvbnM6IGRpbWVuc2lvbnMsXG5cdFx0XHRcdE1lYXN1cmVBdHRyaWJ1dGVzOiBtZWFzdXJlQXR0cmlidXRlcyxcblx0XHRcdFx0TWVhc3VyZXM6IG1lYXN1cmVzXG5cdFx0XHR9LFxuXHRcdFx0VHlwZTogXCJDaGFydFwiXG5cdFx0fTtcblx0XHRjb25zdCBjaGFydFBWID0gbmV3IFByZXNlbnRhdGlvblZhcmlhbnQoKTtcblx0XHRjaGFydFBWLnNldENoYXJ0VmlzdWFsaXphdGlvbihjaGFydFZpeik7XG5cdFx0Y2hhcnRQVi5zZXRQcm9wZXJ0aWVzKHtcblx0XHRcdFNvcnRPcmRlcjogc29ydE9yZGVyID8/IFtdXG5cdFx0fSk7XG5cdFx0cmV0dXJuIGNoYXJ0UFY7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBwcmVzZW50YXRpb24gdmFyaWFudCB0aGF0IGlzIGN1cnJlbnRseSBhcHBsaWVkIG9uIHRoZSBjaGFydC5cblx0ICogQHJldHVybnMgVGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5QcmVzZW50YXRpb25WYXJpYW50fSBhcHBsaWVkIHRvIHRoZSBjaGFydFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXG5cdGFzeW5jIGdldFByZXNlbnRhdGlvblZhcmlhbnQoKTogUHJvbWlzZTxQcmVzZW50YXRpb25WYXJpYW50PiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGNoYXJ0U3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCk7XG5cdFx0XHRyZXR1cm4gdGhpcy5fY29udmVydFN0YXRlVXRpbFRvUHJlc2VudGF0aW9uVmFyaWFudChjaGFydFN0YXRlKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc3QgaWQ6IHN0cmluZyA9IHRoaXMuZ2V0SWQoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG5cdFx0XHRMb2cuZXJyb3IoYENoYXJ0IEJ1aWxkaW5nIEJsb2NrICgke2lkfSkgLSBnZXQgcHJlc2VudGF0aW9uIHZhcmlhbnQgZmFpbGVkIDogJHttZXNzYWdlfWApO1xuXHRcdFx0dGhyb3cgRXJyb3IobWVzc2FnZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgcHJlc2VudGF0aW9uIHZhcmlhbnQgZm9yIHRoZSBtZGMgY2hhcnQuXG5cdCAqXG5cdCAqIFRoZSBqc29uIGZvcm1hdCByZXRyaWV2ZWQgYnkgdXNpbmcgdGhlIGdldCBQcmVzZW50YXRpb25WYXJpYW50IGJ1dHRvbiBpbiB0aGUgbGlua2VkIEZQTSBzYW1wbGUgc2hvdWxkIGJlIGZvbGxvd2VkIHdoaWxlIHRyeWluZyB0byBzZXQgdGhlIFByZXNlbnRhdGlvblZhcmlhbnQgYXMgbmVlZGVkLlxuXHQgKiBUaGUgdmFsdWVzIGRpbWVuc2lvbnMsIG1lYXN1cmVzIGFuZCBvdGhlciBwcm9wZXJ0aWVzIHNob3VsZCBhbHNvIGJlIGdpdmVuIGluIHRoZSB2YWxpZCBmb3JtYXQgYW5kIG51bGwgb3IgZW1wdHkgdmFsdWVzIHNob3VsZCBiZSBhdm9pZGVkLlxuXHQgKiBPbmUgZGltZW5zaW9uIGF0dHJpYnV0ZSBzaG91bGQgaGF2ZSBvbmx5IG9uZSByb2xlIGFzc29jaWF0ZWQgd2l0aCBpdCBvbiBhIGdpdmVuIGNoYXJ0LlxuXHQgKiBAcGFyYW0gcHJlc2VudGF0aW9uVmFyaWFudCB0aGUgcHJlc2VudGF0aW9uIHZhcmlhbnQge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlByZXNlbnRhdGlvblZhcmlhbnR9IHRvIGJlIHNldFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXG5cdGFzeW5jIHNldFByZXNlbnRhdGlvblZhcmlhbnQocHJlc2VudGF0aW9uVmFyaWFudDogUHJlc2VudGF0aW9uVmFyaWFudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjaGFydCA9IHRoaXMuY29udGVudDtcblx0XHRcdGNvbnN0IGV4aXN0aW5nUHJlc2VudGF0aW9uVmFyaWFudCA9IGF3YWl0IHRoaXMuZ2V0UHJlc2VudGF0aW9uVmFyaWFudCgpO1xuXHRcdFx0Y29uc3QgcHJvcGVydGllc0luZm8gPSAoYXdhaXQgKGNoYXJ0LmdldENvbnRyb2xEZWxlZ2F0ZSgpIGFzIENoYXJ0RGVsZWdhdGUpPy5mZXRjaFByb3BlcnRpZXMoXG5cdFx0XHRcdGNoYXJ0XG5cdFx0XHQpKSBhcyB1bmtub3duIGFzIFByb3BlcnR5SW5mb1tdO1xuXG5cdFx0XHRjb25zdCBzdGF0ZVV0aWxQdiA9IFByZXNlbnRhdGlvblZhcmlhbnRUb1N0YXRlVXRpbHNQVi5jb252ZXJ0UHZUb1N0YXRlVXRpbFB2KFxuXHRcdFx0XHRwcmVzZW50YXRpb25WYXJpYW50LFxuXHRcdFx0XHRleGlzdGluZ1ByZXNlbnRhdGlvblZhcmlhbnQsXG5cdFx0XHRcdHByb3BlcnRpZXNJbmZvXG5cdFx0XHQpO1xuXG5cdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNoYXJ0LCBzdGF0ZVV0aWxQdik7XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKGBGRTogQ2hhcnQgQnVpbGRpbmcgQmxvY2sgc2V0UHJlc2VudGF0aW9uVmFyaWFudCBBUEkgZmFpbGVkIHdpdGggZXJyb3I6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBrZXkgb2YgdGhlIGN1cnJlbnQgdmFyaWFudCBpbiB0aGUgYXNzb2NpYXRlZCB2YXJpYW50IG1hbmFnZW1lbnQuXG5cdCAqIEByZXR1cm5zIFZhcmlhbnQga2V5IG9mIHtAbGluayBzYXAudWkuZmwudmFyaWFudHMuVmFyaWFudE1hbmFnZW1lbnR9IGFwcGxpZWQgdG8gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldEN1cnJlbnRWYXJpYW50S2V5KCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpLmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFyaWFudCBvZiB0aGUgcHJvdmlkZWQga2V5IGluIHRoZSBhc3NvY2lhdGVkIHZhcmlhbnQgbWFuYWdlbWVudC5cblx0ICogQHBhcmFtIGtleSBUaGUgdmFyaWFudCBrZXkgb2Yge0BsaW5rIHNhcC51aS5mbC52YXJpYW50cy5WYXJpYW50TWFuYWdlbWVudH0gdG8gYmUgc2V0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNldEN1cnJlbnRWYXJpYW50S2V5KGtleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpO1xuXHRcdHZhcmlhbnRNYW5hZ2VtZW50LnNldEN1cnJlbnRWYXJpYW50S2V5KGtleSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzZWxlY3Rpb24gdmFyaWFudCBmcm9tIHRoZSBjaGFydC4gVGhpcyBmdW5jdGlvbiBjb25zaWRlcnMgb25seSB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgYXBwbGllZCBhdCB0aGUgY29udHJvbCBsZXZlbC5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGdldFNlbGVjdGlvblZhcmlhbnQoKTogUHJvbWlzZTxTZWxlY3Rpb25WYXJpYW50PiB7XG5cdFx0cmV0dXJuIFN0YXRlSGVscGVyLmdldFNlbGVjdGlvblZhcmlhbnQodGhpcy5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fSB0byB0aGUgY2hhcnQuIE5vdGU6IHNldFNlbGVjdGlvblZhcmlhbnQgd2lsbCBjbGVhciBleGlzdGluZyBmaWx0ZXJzIGFuZCB0aGVuIGFwcGx5IHRoZSBTZWxlY3Rpb25WYXJpYW50IHZhbHVlcy5cblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fSB0byBhcHBseSB0byB0aGUgY2hhcnRcblx0ICogQHBhcmFtIHByZWZpbGxEZXNjcmlwdGlvbnMgT3B0aW9uYWwuIElmIHRydWUsIHdlIHdpbGwgdXNlIHRoZSBhc3NvY2lhdGVkIHRleHQgcHJvcGVydHkgdmFsdWVzIChpZiB0aGV5J3JlIGF2YWlsYWJsZSBpbiB0aGUgU2VsZWN0aW9uVmFyaWFudCkgdG8gZGlzcGxheSB0aGUgZmlsdGVyIHZhbHVlIGRlc2NyaXB0aW9ucywgaW5zdGVhZCBvZiBsb2FkaW5nIHRoZW0gZnJvbSB0aGUgYmFja2VuZFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jaHJvbm91cyBoYW5kbGluZ1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXRTZWxlY3Rpb25WYXJpYW50KHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsIHByZWZpbGxEZXNjcmlwdGlvbnMgPSBmYWxzZSk6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdHJldHVybiBTdGF0ZUhlbHBlci5zZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sKHRoaXMuZ2V0Q29udGVudCgpLCBzZWxlY3Rpb25WYXJpYW50LCBwcmVmaWxsRGVzY3JpcHRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRyb2wgc3RhdGUgYmFzZWQgb24gdGhlIGdpdmVuIGNvbnRyb2wgc3RhdGUga2V5LlxuXHQgKiBAcGFyYW0gY29udHJvbFN0YXRlIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcmV0dXJucyAtIFRoZSBmdWxsIHN0YXRlIG9mIHRoZSBjb250cm9sIGFsb25nIHdpdGggdGhlIGluaXRpYWwgc3RhdGUgaWYgYXZhaWxhYmxlLlxuXHQgKi9cblx0Z2V0Q29udHJvbFN0YXRlKGNvbnRyb2xTdGF0ZTogQ29udHJvbFN0YXRlKTogQ29udHJvbFN0YXRlIHtcblx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHRoaXMuaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHRpZiAoY29udHJvbFN0YXRlKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRmdWxsU3RhdGU6IGNvbnRyb2xTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdGluaXRpYWxTdGF0ZTogaW5pdGlhbENvbnRyb2xTdGF0ZSBhcyBvYmplY3Rcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiBjb250cm9sU3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29udHJvbCBieSByZXRyaWV2aW5nIHRoZSBleHRlcm5hbCBzdGF0ZS5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgaW5pdGlhbCBzdGF0ZSBpcyBzZXQuXG5cdCAqL1xuXHRhc3luYyBzZXRJbml0aWFsU3RhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGluaXRpYWxDb250cm9sU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCk7XG5cdFx0XHR0aGlzLmluaXRpYWxDb250cm9sU3RhdGUgPSBpbml0aWFsQ29udHJvbFN0YXRlO1xuXHRcdH0gY2F0Y2ggKGU6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFzeW5jaHJvbm91c2x5IHJldHJpZXZlcyB0aGUgc3RhdGUgb2YgdGhlIGNoYXJ0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCB2aWV3c3RhdGUuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjaGFydCBzdGF0ZSBvciBudWxsIGlmIG5vdCBmb3VuZC5cblx0ICovXG5cdGFzeW5jIHJldHJpZXZlU3RhdGUoKTogUHJvbWlzZTxDaGFydFN0YXRlIHwgbnVsbD4ge1xuXHRcdGNvbnN0IGNoYXJ0U3RhdGU6IENoYXJ0U3RhdGUgPSB7fTtcblx0XHRjaGFydFN0YXRlLmlubmVyQ2hhcnQgPSB0aGlzLmdldENvbnRyb2xTdGF0ZShhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKHRoaXMuY29udGVudCkpIGFzIG9iamVjdDtcblx0XHRjb25zdCB2YXJpYW50VG9SZXRyaWV2ZSA9IHRoaXMuY29udGVudC5nZXRWYXJpYW50KCk/LmdldElkKCk7XG5cdFx0aWYgKHZhcmlhbnRUb1JldHJpZXZlKSB7XG5cdFx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudENvbnRyb2wgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpO1xuXHRcdFx0aWYgKCFjaGFydFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRcdGNoYXJ0U3RhdGUudmFyaWFudE1hbmFnZW1lbnQgPSB7IHZhcmlhbnRJZDogdmFyaWFudE1hbmFnZW1lbnRDb250cm9sPy5nZXRDdXJyZW50VmFyaWFudEtleSgpIH07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjaGFydFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50LnZhcmlhbnRJZCA9IHZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbD8uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNoYXJ0U3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogQXBwbGllcyB0aGUgbGVnYWN5IHN0YXRlIHRvIHRoZSBjaGFydCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29udHJvbCBzdGF0ZSByZXRyaWV2YWwgZnVuY3Rpb24uXG5cdCAqIEBwYXJhbSBnZXRDb250cm9sU3RhdGUgRnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGNvbnRyb2wgc3RhdGUuXG5cdCAqIEBwYXJhbSBbX25hdlBhcmFtZXRlcnNdIE9wdGlvbmFsIG5hdmlnYXRpb24gcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIFtzaG91bGRBcHBseURpZmZTdGF0ZV0gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGRpZmYgc3RhdGUuXG5cdCAqIEByZXR1cm5zIC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc3RhdGUgaGFzIGJlZW4gYXBwbGllZC5cblx0ICovXG5cdGFzeW5jIGFwcGx5TGVnYWN5U3RhdGUoXG5cdFx0Z2V0Q29udHJvbFN0YXRlOiAoY29udHJvbDogTWFuYWdlZE9iamVjdCkgPT4gQ29udHJvbFN0YXRlLFxuXHRcdF9uYXZQYXJhbWV0ZXJzPzogTmF2aWdhdGlvblBhcmFtZXRlcixcblx0XHRzaG91bGRBcHBseURpZmZTdGF0ZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgY2hhcnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0Y29uc3Qgdm0gPSBjaGFydC5nZXRWYXJpYW50KCk7XG5cblx0XHRjb25zdCBjaGFydFN0YXRlID0gZ2V0Q29udHJvbFN0YXRlKGNoYXJ0KSBhcyB7IGluaXRpYWxTdGF0ZT86IENoYXJ0U3RhdGU7IGZ1bGxTdGF0ZT86IENoYXJ0U3RhdGUgfTtcblx0XHRjb25zdCB2bVN0YXRlID0gdm0gPyBnZXRDb250cm9sU3RhdGUodm0pIDogbnVsbDtcblxuXHRcdGNvbnN0IGNvbnRyb2xTdGF0ZTogQ2hhcnRTdGF0ZSA9IHt9O1xuXG5cdFx0aWYgKGNoYXJ0U3RhdGUpIHtcblx0XHRcdGNvbnRyb2xTdGF0ZS5pbm5lckNoYXJ0ID0ge1xuXHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJDaGFydCxcblx0XHRcdFx0Li4uY2hhcnRTdGF0ZSxcblx0XHRcdFx0ZnVsbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyQ2hhcnQ/LmZ1bGxTdGF0ZSxcblx0XHRcdFx0XHQuLi5jaGFydFN0YXRlLmZ1bGxTdGF0ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRpbml0aWFsU3RhdGU6IHtcblx0XHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJDaGFydD8uaW5pdGlhbFN0YXRlLFxuXHRcdFx0XHRcdC4uLmNoYXJ0U3RhdGUuaW5pdGlhbFN0YXRlXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0aWYgKHZtU3RhdGU/LnZhcmlhbnRJZCkge1xuXHRcdFx0Y29udHJvbFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50ID0ge1xuXHRcdFx0XHQuLi5jb250cm9sU3RhdGUudmFyaWFudE1hbmFnZW1lbnQsXG5cdFx0XHRcdHZhcmlhbnRJZDogdm1TdGF0ZS52YXJpYW50SWQudG9TdHJpbmcoKVxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRpZiAoY29udHJvbFN0YXRlICYmIE9iamVjdC5rZXlzKGNvbnRyb2xTdGF0ZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0YXdhaXQgdGhpcy5hcHBseVN0YXRlKGNvbnRyb2xTdGF0ZSBhcyBDb250cm9sU3RhdGUsIF9uYXZQYXJhbWV0ZXJzLCBzaG91bGRBcHBseURpZmZTdGF0ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFzeW5jaHJvbm91c2x5IGFwcGxpZXMgdGhlIHByb3ZpZGVkIGNvbnRyb2wgc3RhdGUgdG8gdGhlIHZpZXdzdGF0ZS5cblx0ICogQHBhcmFtIGNvbnRyb2xTdGF0ZSBUaGUgc3RhdGUgdG8gYmUgYXBwbGllZCB0byB0aGUgY29udHJvbC5cblx0ICogQHBhcmFtIFtfbmF2UGFyYW1ldGVyc10gT3B0aW9uYWwgbmF2aWdhdGlvbiBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0gW3Nob3VsZEFwcGx5RGlmZlN0YXRlXSBPcHRpb25hbCBmbGFnIHRvIHNraXAgbWVyZ2luZyBzdGF0ZXMuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHN0YXRlIGhhcyBiZWVuIGFwcGxpZWQuXG5cdCAqL1xuXHRhc3luYyBhcHBseVN0YXRlKGNvbnRyb2xTdGF0ZTogQ2hhcnRTdGF0ZSwgX25hdlBhcmFtZXRlcnM/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLCBzaG91bGRBcHBseURpZmZTdGF0ZT86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIWNvbnRyb2xTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgdmFyaWFudElkID0gY29udHJvbFN0YXRlLnZhcmlhbnRNYW5hZ2VtZW50Py52YXJpYW50SWQ7XG5cdFx0Y29uc3QgY3VycmVudFZhcmlhbnQgPSB0aGlzLmNvbnRlbnQ/LmdldFZhcmlhbnQoKTtcblxuXHRcdC8vIEhhbmRsZSBWYXJpYW50IE1hbmFnZW1lbnRcblx0XHRpZiAodmFyaWFudElkICE9PSB1bmRlZmluZWQgJiYgdmFyaWFudElkICE9PSBjdXJyZW50VmFyaWFudC5nZXRDdXJyZW50VmFyaWFudEtleSgpKSB7XG5cdFx0XHRjb25zdCBvdk0gPSB0aGlzLmNvbnRlbnQ/LmdldFZhcmlhbnQoKTtcblx0XHRcdGNvbnN0IGFWYXJpYW50cyA9IG92TT8uZ2V0VmFyaWFudHMoKTtcblx0XHRcdGNvbnN0IHNWYXJpYW50UmVmZXJlbmNlID0gYVZhcmlhbnRzPy5zb21lKChvVmFyaWFudCkgPT4gb1ZhcmlhbnQuZ2V0S2V5KCkgPT09IHZhcmlhbnRJZClcblx0XHRcdFx0PyB2YXJpYW50SWRcblx0XHRcdFx0OiBvdk0/LmdldFN0YW5kYXJkVmFyaWFudEtleTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkgPSAoYXdhaXQgaW1wb3J0KFwic2FwL3VpL2ZsL2FwcGx5L2FwaS9Db250cm9sVmFyaWFudEFwcGx5QVBJXCIpKS5kZWZhdWx0O1xuXHRcdFx0XHRhd2FpdCBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRcdFx0ZWxlbWVudDogb3ZNLFxuXHRcdFx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IHNWYXJpYW50UmVmZXJlbmNlIGFzIHN0cmluZ1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXdhaXQgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0XHRhd2FpdCB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyB3ZSBuZWVkIHRvIHVwZGF0ZSBpbml0aWFsIHN0YXRlIGV2ZW4gaWYgYWJvdmUgY29uZGl0aW9uIG5vdCBzYXRpc2ZpZWRcblx0XHRcdGF3YWl0IHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIElubmVyIENoYXJ0IFN0YXRlXG5cdFx0Y29uc3QgaW5uZXJDaGFydFN0YXRlID0gY29udHJvbFN0YXRlLmlubmVyQ2hhcnQ7XG5cdFx0bGV0IGZpbmFsU3RhdGU7XG5cblx0XHRpZiAoaW5uZXJDaGFydFN0YXRlKSB7XG5cdFx0XHRpZiAoc2hvdWxkQXBwbHlEaWZmU3RhdGUgJiYgaW5uZXJDaGFydFN0YXRlLmluaXRpYWxTdGF0ZSkge1xuXHRcdFx0XHRmaW5hbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLmRpZmZTdGF0ZShcblx0XHRcdFx0XHR0aGlzLmNvbnRlbnQsXG5cdFx0XHRcdFx0aW5uZXJDaGFydFN0YXRlLmluaXRpYWxTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdFx0aW5uZXJDaGFydFN0YXRlLmZ1bGxTdGF0ZSBhcyBvYmplY3Rcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZpbmFsU3RhdGUgPSBpbm5lckNoYXJ0U3RhdGUuZnVsbFN0YXRlO1xuXHRcdFx0fVxuXHRcdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQsIGZpbmFsU3RhdGUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgYnkgdGhlIE1EQyBzdGF0ZSB1dGlsIHdoZW4gdGhlIHN0YXRlIGZvciB0aGlzIGNvbnRyb2wncyBjaGlsZCBoYXMgY2hhbmdlZC5cblx0ICovXG5cdGhhbmRsZVN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuXHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8uZ2V0RXh0ZW5zaW9uQVBJKCkudXBkYXRlQXBwU3RhdGUoKTtcblx0fVxuXG5cdF9jcmVhdGVDb250ZW50KCk6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0Ly8gV2UgbmVlZCB0byByZW1vdmUgdGhlIGN1cnJlbnQgZmlsdGVyIGZyb20gdGhlIG9sZCAodG8gYmUgZGVzdHJveWVkKSBDaGFydCBpbnN0YW5jZSBiZWNhdXNlIGlmIHdlIGRvbid0IHRoZW4gZm9yIHNvbWUgc3RyYW5nZSByZWFzb24sIHRoZSBvbGQgQ2hhcnQgaW5zdGFuY2UgdXNlZCB0b1xuXHRcdFx0Ly8gcmVhY3QgZm9yIGZpbHRlciBiYXIgYWN0aW9uLCBmb3IgZXhhbXBsZSwgb24gQ2xpY2sgb2YgR28uXG5cdFx0XHR0aGlzLmNvbnRlbnQuc2V0RmlsdGVyKFwiXCIpO1xuXHRcdFx0dGhpcy5jb250ZW50LmRlc3Ryb3koKTtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0fVxuXG5cdHNldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnRpZXMoKSkuaW5jbHVkZXMoa2V5KSkge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgdHJ1ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cmVtb3ZlQWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCB8IG51bWJlciB8IHN0cmluZywgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IE1hbmFnZWRPYmplY3QgfCBudWxsIHtcblx0XHRsZXQgcmVtb3ZlZDogTWFuYWdlZE9iamVjdCB8IG51bGw7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldEFnZ3JlZ2F0aW9ucygpKS5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdFx0cmVtb3ZlZCA9IHN1cGVyLnJlbW92ZUFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdFx0dGhpcy5fY3JlYXRlQ29udGVudCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZW1vdmVkID0gc3VwZXIucmVtb3ZlQWdncmVnYXRpb24obmFtZSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiByZW1vdmVkO1xuXHR9XG5cblx0YWRkQWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCwgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWdncmVnYXRpb25zKCkpLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRzdXBlci5hZGRBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHRcdHRoaXMuX2NyZWF0ZUNvbnRlbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuYWRkQWdncmVnYXRpb24obmFtZSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0aW5zZXJ0QWdncmVnYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogTWFuYWdlZE9iamVjdCwgaW5kZXg6IG51bWJlciwgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWdncmVnYXRpb25zKCkpLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRzdXBlci5pbnNlcnRBZ2dyZWdhdGlvbihuYW1lLCB2YWx1ZSwgaW5kZXgsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0XHR0aGlzLl9jcmVhdGVDb250ZW50KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLmluc2VydEFnZ3JlZ2F0aW9uKG5hbWUsIHZhbHVlLCBpbmRleCwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IE1EQ0NoYXJ0IHtcblx0XHRpZiAodGhpcy5jb250ZXh0UGF0aCkge1xuXHRcdFx0dGhpcy5fcmVzb2x2ZWRDb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGguZW5kc1dpdGgoXCIvXCIpID8gdGhpcy5jb250ZXh0UGF0aCA6IHRoaXMuY29udGV4dFBhdGggKyBcIi9cIjtcblx0XHR9XG5cblx0XHRyZXR1cm4gZ2V0TWRjQ2hhcnRUZW1wbGF0ZShcblx0XHRcdHRoaXMsXG5cdFx0XHR0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpPy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSA/PyAodGhpcy5fZ2V0T3duZXIoKT8uZ2V0Vmlld0RhdGEoKSBhcyB1bmtub3duIGFzIFZpZXdEYXRhKSxcblx0XHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk/LmdldERpYWdub3N0aWNzKCkgPz8gKHt9IGFzIERpYWdub3N0aWNzKSxcblx0XHRcdHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8Q2hhcnRDb250ZXh0T2JqZWN0UGF0aD4odGhpcy5tZXRhUGF0aCwgdGhpcy5fcmVzb2x2ZWRDb250ZXh0UGF0aCkhXG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBZkEsSUFpQnFCQSxLQUFLLElBQUFDLElBQUEsR0FEekJDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRTtJQUFFQyxXQUFXLEVBQUUsQ0FBQyx3QkFBd0I7RUFBRSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUVqRkMsa0JBQWtCLENBQUMsa0VBQWtFLENBQUMsRUFBQUMsS0FBQSxHQUt0RkQsa0JBQWtCLENBQUMsMERBQTBELENBQUMsRUFBQUUsS0FBQSxHQXdCOUVDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU81QkYsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRSxRQUFRO0lBQ2RFLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFDO0lBQzdFQyxtQkFBbUIsRUFBRSxDQUNwQixrQ0FBa0MsRUFDbEMsZ0RBQWdELEVBQ2hELHlEQUF5RDtFQUUzRCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU9ETixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEUsUUFBUSxFQUFFLElBQUk7SUFDZEMsYUFB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
|
|
@@ -22,6 +22,7 @@ import Action from "sap/fe/macros/chart/Action";
|
|
|
22
22
|
import type ActionGroup from "sap/fe/macros/chart/ActionGroup";
|
|
23
23
|
import ChartRuntime from "sap/fe/macros/chart/ChartRuntime";
|
|
24
24
|
import ChartUtils from "sap/fe/macros/chart/ChartUtils";
|
|
25
|
+
import type FilterBar from "sap/fe/macros/controls/FilterBar";
|
|
25
26
|
import type ISingleSectionContributor from "sap/fe/macros/controls/section/ISingleSectionContributor";
|
|
26
27
|
import type { ConsumerData } from "sap/fe/macros/controls/section/ISingleSectionContributor";
|
|
27
28
|
import FilterUtils from "sap/fe/macros/filter/FilterUtils";
|
|
@@ -39,7 +40,6 @@ import type LayoutData from "sap/ui/core/LayoutData";
|
|
|
39
40
|
import { TitleLevel } from "sap/ui/core/library";
|
|
40
41
|
import type MDCChart from "sap/ui/mdc/Chart";
|
|
41
42
|
import type ChartDelegate from "sap/ui/mdc/ChartDelegate";
|
|
42
|
-
import type FilterBar from "sap/ui/mdc/FilterBar";
|
|
43
43
|
import type ActionToolbarAction from "sap/ui/mdc/actiontoolbar/ActionToolbarAction";
|
|
44
44
|
import type { AppState, Items, Sorters } from "sap/ui/mdc/p13n/StateUtil";
|
|
45
45
|
import StateUtil from "sap/ui/mdc/p13n/StateUtil";
|