@sapui5/sap.fe.macros 1.138.0 → 1.140.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +269 -0
- package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
- 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 +85 -58
- package/src/sap/fe/macros/Field.ts +104 -60
- package/src/sap/fe/macros/FooterContent.js +44 -11
- package/src/sap/fe/macros/FooterContent.tsx +48 -9
- package/src/sap/fe/macros/FormElement.js +2 -2
- package/src/sap/fe/macros/FormElement.ts +1 -2
- package/src/sap/fe/macros/MessageButton.js +1 -2
- package/src/sap/fe/macros/MessageButton.tsx +0 -1
- package/src/sap/fe/macros/MultiValueField.js +17 -6
- package/src/sap/fe/macros/MultiValueField.tsx +7 -4
- package/src/sap/fe/macros/RichTextEditor.js +30 -5
- package/src/sap/fe/macros/RichTextEditor.tsx +34 -6
- package/src/sap/fe/macros/Share.js +85 -40
- package/src/sap/fe/macros/Share.tsx +42 -1
- package/src/sap/fe/macros/Status.js +226 -0
- package/src/sap/fe/macros/Status.tsx +192 -0
- 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 +123 -114
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +140 -124
- 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/ai/SummarizationButton.js +2 -2
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
- 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/ChartHelper.js +1 -2
- package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
- package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
- package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
- 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/BuildingBlockWithTemplating.js +3 -1
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +2 -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 +49 -2
- package/src/sap/fe/macros/controls/FilterBar.ts +55 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -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/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/coreUI/OperationParameterDialog.js +43 -4
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
- package/src/sap/fe/macros/designtime/Designtime.helper.js +39 -2
- package/src/sap/fe/macros/designtime/Designtime.helper.ts +39 -0
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +15 -4
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +5 -0
- 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 +1 -2
- package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
- package/src/sap/fe/macros/filter/FilterUtils.js +3 -5
- package/src/sap/fe/macros/filter/FilterUtils.ts +2 -4
- 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.js +1 -4
- package/src/sap/fe/macros/form/Form.tsx +0 -3
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
- package/src/sap/fe/macros/form/FormContainer.block.js +1 -2
- package/src/sap/fe/macros/form/FormContainer.block.ts +0 -1
- 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/form/FormHelper.js +1 -2
- package/src/sap/fe/macros/form/FormHelper.ts +0 -1
- 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/fpm/CustomFragment.block.js +1 -2
- package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
- 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/ActionCommand.block.js +1 -2
- package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
- 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 +10 -2
- package/src/sap/fe/macros/internal/FilterField.block.ts +11 -1
- package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +51 -13
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +53 -6
- 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 +11 -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/AdditionalValueHelper.js +46 -8
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +2 -1
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +16 -5
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +21 -9
- 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 +7 -2
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +7 -3
- package/src/sap/fe/macros/messagebundle.properties +42 -32
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -4
- package/src/sap/fe/macros/messagebundle_bg.properties +11 -3
- package/src/sap/fe/macros/messagebundle_ca.properties +15 -7
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -4
- package/src/sap/fe/macros/messagebundle_cs.properties +10 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -4
- package/src/sap/fe/macros/messagebundle_da.properties +11 -3
- package/src/sap/fe/macros/messagebundle_de.properties +18 -10
- package/src/sap/fe/macros/messagebundle_el.properties +13 -5
- package/src/sap/fe/macros/messagebundle_en.properties +16 -8
- package/src/sap/fe/macros/messagebundle_en_GB.properties +16 -8
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +16 -8
- package/src/sap/fe/macros/messagebundle_es.properties +13 -5
- package/src/sap/fe/macros/messagebundle_es_MX.properties +14 -6
- package/src/sap/fe/macros/messagebundle_et.properties +13 -5
- package/src/sap/fe/macros/messagebundle_fi.properties +14 -6
- package/src/sap/fe/macros/messagebundle_fr.properties +14 -6
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +15 -7
- package/src/sap/fe/macros/messagebundle_hi.properties +11 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +11 -3
- package/src/sap/fe/macros/messagebundle_hu.properties +10 -2
- package/src/sap/fe/macros/messagebundle_id.properties +18 -10
- package/src/sap/fe/macros/messagebundle_it.properties +10 -2
- package/src/sap/fe/macros/messagebundle_iw.properties +10 -2
- package/src/sap/fe/macros/messagebundle_ja.properties +13 -5
- package/src/sap/fe/macros/messagebundle_kk.properties +15 -7
- package/src/sap/fe/macros/messagebundle_ko.properties +10 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +11 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -4
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ms.properties +14 -6
- package/src/sap/fe/macros/messagebundle_nl.properties +13 -5
- package/src/sap/fe/macros/messagebundle_no.properties +12 -4
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -4
- package/src/sap/fe/macros/messagebundle_pt.properties +13 -5
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ro.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +13 -5
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sk.properties +11 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sv.properties +11 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -3
- package/src/sap/fe/macros/messagebundle_tr.properties +10 -2
- package/src/sap/fe/macros/messagebundle_uk.properties +17 -9
- package/src/sap/fe/macros/messagebundle_vi.properties +12 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +11 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -4
- package/src/sap/fe/macros/messages/MessageButton.js +55 -36
- package/src/sap/fe/macros/messages/MessageButton.ts +64 -39
- package/src/sap/fe/macros/messages/MessagePopover.js +2 -2
- package/src/sap/fe/macros/messages/MessagePopover.ts +4 -4
- package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
- package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.js +1 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +0 -1
- package/src/sap/fe/macros/share/ShareAPI.js +4 -29
- package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
- package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
- package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
- 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 +36 -7
- 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/TableAPI.js +143 -133
- package/src/sap/fe/macros/table/TableAPI.ts +5 -1
- 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/TableHelper.js +1 -2
- package/src/sap/fe/macros/table/TableHelper.ts +0 -1
- package/src/sap/fe/macros/table/TableRuntime.js +26 -7
- package/src/sap/fe/macros/table/TableRuntime.ts +33 -5
- package/src/sap/fe/macros/table/Utils.js +6 -2
- package/src/sap/fe/macros/table/Utils.ts +5 -1
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +25 -20
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +25 -24
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
- 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/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 +8 -1
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +10 -0
- package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
- package/src/sap/fe/macros/table/mixin/TableSharing.ts +9 -1
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +20 -6
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +36 -14
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -7
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +16 -5
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +18 -4
|
@@ -43,6 +43,7 @@ import type { FieldBlockProperties } from "sap/fe/macros/internal/field/FieldStr
|
|
|
43
43
|
import QuickView from "sap/fe/macros/quickView/QuickView";
|
|
44
44
|
import Avatar from "sap/m/Avatar";
|
|
45
45
|
import Button from "sap/m/Button";
|
|
46
|
+
import CheckBox from "sap/m/CheckBox";
|
|
46
47
|
import ExpandableText from "sap/m/ExpandableText";
|
|
47
48
|
import HBox from "sap/m/HBox";
|
|
48
49
|
import ImageCustomData from "sap/m/ImageCustomData";
|
|
@@ -105,6 +106,7 @@ const DisplayStyle = {
|
|
|
105
106
|
text="{sap.fe.i18n>M_TABLE_SHOW_DETAILS}"
|
|
106
107
|
press={field.eventHandlers.displayAggregationDetails}
|
|
107
108
|
visible={visibleExpression}
|
|
109
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
108
110
|
>
|
|
109
111
|
{{
|
|
110
112
|
dependents: (currencyOrUnit as Control)?.clone ? (currencyOrUnit as Control).clone() : currencyOrUnit
|
|
@@ -444,7 +446,16 @@ const DisplayStyle = {
|
|
|
444
446
|
} else {
|
|
445
447
|
innerFilePart = {
|
|
446
448
|
icon: <Icon src={fileIconSrc} class="sapUiSmallMarginEnd" visible={fileStreamNotEmpty} />,
|
|
447
|
-
link:
|
|
449
|
+
link: (
|
|
450
|
+
<Link
|
|
451
|
+
text={fileLinkText}
|
|
452
|
+
target="_blank"
|
|
453
|
+
href={fileLinkHref}
|
|
454
|
+
visible={fileStreamNotEmpty}
|
|
455
|
+
wrapping="true"
|
|
456
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
457
|
+
/>
|
|
458
|
+
),
|
|
448
459
|
text: <Text emptyIndicatorMode={field.emptyIndicatorMode} text="" visible={fileTextVisible} />
|
|
449
460
|
};
|
|
450
461
|
}
|
|
@@ -458,7 +469,7 @@ const DisplayStyle = {
|
|
|
458
469
|
fileUploader: (
|
|
459
470
|
<FileUploader
|
|
460
471
|
name="FEV4FileUpload"
|
|
461
|
-
visible={field.
|
|
472
|
+
visible={field.fileUploaderVisible}
|
|
462
473
|
buttonOnly="true"
|
|
463
474
|
iconOnly="true"
|
|
464
475
|
multiple="false"
|
|
@@ -493,7 +504,7 @@ const DisplayStyle = {
|
|
|
493
504
|
type="Transparent"
|
|
494
505
|
press={field.eventHandlers.removeStream as unknown as (oEvent: Event) => void}
|
|
495
506
|
tooltip="{sap.fe.i18n>M_FIELD_FILEUPLOADER_DELETE_BUTTON_TOOLTIP}"
|
|
496
|
-
visible={field.
|
|
507
|
+
visible={field.fileUploaderVisible}
|
|
497
508
|
enabled={fileStreamNotEmpty}
|
|
498
509
|
/>
|
|
499
510
|
)
|
|
@@ -543,6 +554,7 @@ const DisplayStyle = {
|
|
|
543
554
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
544
555
|
class="sapMTextRenderWhitespaceWrap"
|
|
545
556
|
accessibleRole={LinkAccessibleRole.Button}
|
|
557
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
546
558
|
/>
|
|
547
559
|
);
|
|
548
560
|
case UIAnnotationTypes.DataFieldWithNavigationPath:
|
|
@@ -556,6 +568,7 @@ const DisplayStyle = {
|
|
|
556
568
|
enabled={field.formatOptions.isAnalyticalAggregatedRow ? UI.isNodeLevelNavigable : undefined}
|
|
557
569
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
558
570
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
571
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
559
572
|
class="sapMTextRenderWhitespaceWrap"
|
|
560
573
|
/>
|
|
561
574
|
);
|
|
@@ -571,6 +584,7 @@ const DisplayStyle = {
|
|
|
571
584
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
572
585
|
class="sapMTextRenderWhitespaceWrap"
|
|
573
586
|
accessibleRole={LinkAccessibleRole.Button}
|
|
587
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
574
588
|
/>
|
|
575
589
|
);
|
|
576
590
|
case UIAnnotationTypes.DataFieldWithUrl:
|
|
@@ -621,6 +635,7 @@ const DisplayStyle = {
|
|
|
621
635
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
622
636
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
623
637
|
class="sapMTextRenderWhitespaceWrap"
|
|
638
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
624
639
|
/>
|
|
625
640
|
);
|
|
626
641
|
}
|
|
@@ -638,6 +653,7 @@ const DisplayStyle = {
|
|
|
638
653
|
active={linkActived}
|
|
639
654
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
640
655
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
656
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
641
657
|
>
|
|
642
658
|
{{
|
|
643
659
|
customData: <CustomData key={"url"} value={linkUrl} />
|
|
@@ -656,6 +672,7 @@ const DisplayStyle = {
|
|
|
656
672
|
wrapping={field.wrap === undefined ? true : field.wrap}
|
|
657
673
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
658
674
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
675
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
659
676
|
/>
|
|
660
677
|
);
|
|
661
678
|
}
|
|
@@ -715,6 +732,7 @@ const DisplayStyle = {
|
|
|
715
732
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
716
733
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
717
734
|
accessibleRole={LinkAccessibleRole.Button}
|
|
735
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
718
736
|
>
|
|
719
737
|
{{
|
|
720
738
|
customData: [<CustomData key={"loadValue"} value={field.valueAsStringBindingExpression} />],
|
|
@@ -884,6 +902,7 @@ const DisplayStyle = {
|
|
|
884
902
|
titlePress={field.eventHandlers.linkPressed}
|
|
885
903
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
886
904
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
905
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
887
906
|
>
|
|
888
907
|
{{
|
|
889
908
|
customData: [<CustomData key={"loadValue"} value={field.valueAsStringBindingExpression} />],
|
|
@@ -993,6 +1012,7 @@ const DisplayStyle = {
|
|
|
993
1012
|
active={isActive ? isActive : active}
|
|
994
1013
|
press={pressAction}
|
|
995
1014
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
1015
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
996
1016
|
>
|
|
997
1017
|
{{
|
|
998
1018
|
customData: [
|
|
@@ -1033,6 +1053,7 @@ const DisplayStyle = {
|
|
|
1033
1053
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
1034
1054
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
1035
1055
|
accessibleRole={LinkAccessibleRole.Button}
|
|
1056
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
1036
1057
|
>
|
|
1037
1058
|
{{
|
|
1038
1059
|
customData: [<CustomData key={"loadValue"} value={field.valueAsStringBindingExpression} />],
|
|
@@ -1070,6 +1091,7 @@ const DisplayStyle = {
|
|
|
1070
1091
|
contextPath={field.contextPath.getPath()}
|
|
1071
1092
|
visible={field.draftIndicatorVisible}
|
|
1072
1093
|
ariaLabelledBy={field.ariaLabelledBy ? field.ariaLabelledBy : []}
|
|
1094
|
+
reactiveAreaMode={field.formatOptions?.reactiveAreaMode}
|
|
1073
1095
|
/>
|
|
1074
1096
|
</VBox>
|
|
1075
1097
|
</FormElementWrapper>
|
|
@@ -1137,6 +1159,28 @@ const DisplayStyle = {
|
|
|
1137
1159
|
}
|
|
1138
1160
|
},
|
|
1139
1161
|
|
|
1162
|
+
/**
|
|
1163
|
+
* Generates the CheckBoxGroup template.
|
|
1164
|
+
* @param field Reference to the current field instance
|
|
1165
|
+
* @returns An XML-based string with the definition of the field control
|
|
1166
|
+
*/
|
|
1167
|
+
getCheckBoxGroupItemTemplate(field: FieldBlockProperties): string {
|
|
1168
|
+
return (
|
|
1169
|
+
<CheckBox
|
|
1170
|
+
core:require="{Field: 'sap/fe/macros/Field'}"
|
|
1171
|
+
id={field.displayStyleId}
|
|
1172
|
+
displayOnly={true}
|
|
1173
|
+
text={field.label}
|
|
1174
|
+
wrapping={true}
|
|
1175
|
+
selected={field.valueBindingExpression}
|
|
1176
|
+
fieldGroupIds={field.fieldGroupIds}
|
|
1177
|
+
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
1178
|
+
>
|
|
1179
|
+
{{ customData: <CustomData key="sourcePath" value={field.dataSourcePath} /> }}
|
|
1180
|
+
</CheckBox>
|
|
1181
|
+
);
|
|
1182
|
+
},
|
|
1183
|
+
|
|
1140
1184
|
/**
|
|
1141
1185
|
* Entry point for further templating processings.
|
|
1142
1186
|
* @param field Reference to the current field instance
|
|
@@ -1145,15 +1189,15 @@ const DisplayStyle = {
|
|
|
1145
1189
|
getTemplate: (field: FieldBlockProperties): string => {
|
|
1146
1190
|
let innerFieldContent;
|
|
1147
1191
|
switch (field.displayStyle as DisplayStyleType) {
|
|
1148
|
-
case "NumberWithUnitOrCurrencyAligned":
|
|
1149
|
-
innerFieldContent = DisplayStyle.getNumberWithUnitOrCurrencyAlignedTemplate(field);
|
|
1150
|
-
break;
|
|
1151
1192
|
case "Avatar":
|
|
1152
1193
|
innerFieldContent = DisplayStyle.getAvatarTemplate(field);
|
|
1153
1194
|
break;
|
|
1154
1195
|
case "Button":
|
|
1155
1196
|
innerFieldContent = DisplayStyle.getButtonTemplate(field);
|
|
1156
1197
|
break;
|
|
1198
|
+
case "CheckBoxGroupItem":
|
|
1199
|
+
innerFieldContent = DisplayStyle.getCheckBoxGroupItemTemplate(field);
|
|
1200
|
+
break;
|
|
1157
1201
|
case "Contact":
|
|
1158
1202
|
innerFieldContent = DisplayStyle.getContactTemplate(field);
|
|
1159
1203
|
break;
|
|
@@ -1172,6 +1216,9 @@ const DisplayStyle = {
|
|
|
1172
1216
|
case "LinkWithQuickView":
|
|
1173
1217
|
innerFieldContent = DisplayStyle.getLinkWithQuickViewTemplate(field);
|
|
1174
1218
|
break;
|
|
1219
|
+
case "NumberWithUnitOrCurrencyAligned":
|
|
1220
|
+
innerFieldContent = DisplayStyle.getNumberWithUnitOrCurrencyAlignedTemplate(field);
|
|
1221
|
+
break;
|
|
1175
1222
|
case "ObjectIdentifier":
|
|
1176
1223
|
innerFieldContent = DisplayStyle.getObjectIdentifier(field);
|
|
1177
1224
|
break;
|
|
@@ -275,13 +275,17 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/EventDelegateHook", "s
|
|
|
275
275
|
* @returns An XML-based string with the definition of the field control
|
|
276
276
|
*/
|
|
277
277
|
getCheckBoxTemplate(field) {
|
|
278
|
+
const isCheckBoxGroupItem = field.formatOptions.isFieldGroupItem === true;
|
|
278
279
|
return _jsx(CheckBox, {
|
|
279
280
|
"core:require": "{Field: 'sap/fe/macros/Field'}",
|
|
280
281
|
id: field.editStyleId,
|
|
282
|
+
required: isCheckBoxGroupItem ? field.requiredExpression : undefined,
|
|
281
283
|
selected: field.valueBindingExpression,
|
|
282
284
|
editable: field.editableExpression,
|
|
283
285
|
enabled: field.enabledExpression,
|
|
284
286
|
fieldGroupIds: field.fieldGroupIds,
|
|
287
|
+
text: isCheckBoxGroupItem ? field.label : undefined,
|
|
288
|
+
wrapping: isCheckBoxGroupItem ? true : undefined,
|
|
285
289
|
ariaLabelledBy: field.ariaLabelledBy,
|
|
286
290
|
select: field.eventHandlers.change,
|
|
287
291
|
validateFieldGroup: field.eventHandlers.validateFieldGroup,
|
|
@@ -472,4 +476,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/EventDelegateHook", "s
|
|
|
472
476
|
};
|
|
473
477
|
return EditStyle;
|
|
474
478
|
}, false);
|
|
475
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFZGl0U3R5bGUiLCJnZXRMYXlvdXREYXRhIiwiZmllbGQiLCJsYXlvdXREYXRhIiwiY29sbGFib3JhdGlvbkVuYWJsZWQiLCJfanN4IiwiRmxleEl0ZW1EYXRhIiwiZ3Jvd0ZhY3RvciIsImdldENvbGxhYm9yYXRpb25BdmF0YXIiLCJjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsImNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24iLCJVSUZvcm1hdHRlciIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiZGF0YU1vZGVsUGF0aCIsIkNvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJBdmF0YXIiLCJ2aXNpYmxlIiwiaW5pdGlhbHMiLCJkaXNwbGF5U2l6ZSIsImN1c3RvbURpc3BsYXlTaXplIiwiY3VzdG9tRm9udFNpemUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmVzcyIsImV2ZW50SGFuZGxlcnMiLCJzaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyIiwiY2hpbGRyZW4iLCJkZXBlbmRlbnRzIiwiRXZlbnREZWxlZ2F0ZUhvb2siLCJzdG9wVGFwUHJvcGFnYXRpb24iLCJnZXREYXRlVGltZVBpY2tlckdlbmVyaWMiLCJ0eXBlIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJ0ZXh0QWxpZ24iLCJnZXRUZXh0QWxpZ25tZW50IiwiZm9ybWF0T3B0aW9ucyIsImVkaXRNb2RlQXNPYmplY3QiLCJkYXRlVGltZVBpY2tlclByb3BlcnRpZXMiLCJpZCIsImVkaXRTdHlsZUlkIiwid2lkdGgiLCJlZGl0YWJsZSIsImVkaXRhYmxlRXhwcmVzc2lvbiIsImVuYWJsZWQiLCJlbmFibGVkRXhwcmVzc2lvbiIsInJlcXVpcmVkIiwicmVxdWlyZWRFeHByZXNzaW9uIiwiYXJpYUxhYmVsbGVkQnkiLCJ2YWx1ZSIsInZhbHVlQmluZGluZ0V4cHJlc3Npb24iLCJmaWVsZEdyb3VwSWRzIiwic2hvd1RpbWV6b25lIiwibWluRGF0ZSIsIm1pbkRhdGVFeHByZXNzaW9uIiwidW5kZWZpbmVkIiwibWF4RGF0ZSIsIm1heERhdGVFeHByZXNzaW9uIiwiY2hhbmdlIiwibGl2ZUNoYW5nZSIsInZhbHVlRm9ybWF0IiwidmFsaWRhdGVGaWVsZEdyb3VwIiwiZ2V0RGF0ZVRpbWVQaWNrZXIiLCJkYXRlVGltZVBpY2tlclR5cGUiLCJkYXRlVGltZVBpY2tlciIsIkRhdGVQaWNrZXIiLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsImRhdGFTb3VyY2VQYXRoIiwiRGF0ZVRpbWVQaWNrZXIiLCJUaW1lUGlja2VyIiwiZ2V0SW5wdXRUZW1wbGF0ZSIsIklucHV0IiwicGxhY2Vob2xkZXIiLCJlZGl0U3R5bGVQbGFjZWhvbGRlciIsImRlc2NyaXB0aW9uIiwic3RhdGljRGVzY3JpcHRpb24iLCJlZGl0U3R5bGUiLCJtYXhMZW5ndGgiLCJ0ZXh0TWF4TGVuZ3RoIiwic2hvd0FzUmFkaW9CdXR0b24iLCJyYWRpb0J1dHRvbkNvbmZpZ3VyZWQiLCJwcm9wZXJ0eSIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIiwiVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5IiwidmFsdWVPZiIsImZpZWxkRWRpdFN0eWxlIiwidmFsdWVMaXN0UGFyYW1ldGVySW5PdXQiLCJWYWx1ZUxpc3QiLCJQYXJhbWV0ZXJzIiwiZmluZCIsInZhbHVlTGlzdFBhcmFtZXRlciIsIiRUeXBlIiwiTG9jYWxEYXRhUHJvcGVydHkiLCJuYW1lIiwiVmFsdWVMaXN0UmVsZXZhbnRRdWFsaWZpZXJzIiwiZ2V0UmFkaW9CdXR0b25UZW1wbGF0ZSIsImZpeGVkVmFsdWVzUGF0aCIsIkNvbGxlY3Rpb25QYXRoIiwidmFsdWVMaXN0S2V5UGF0aCIsInBhdGhJbk1vZGVsIiwiVmFsdWVMaXN0UHJvcGVydHkiLCJ2YWx1ZUxpc3REZXNjcmlwdGlvblBhdGgiLCJ2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGgiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJlbnRpdHlUeXBlIiwia2V5cyIsIlRleHQiLCJwYXRoIiwiUmFkaW9CdXR0b25zIiwicmFkaW9CdXR0b25UZXh0UHJvcGVydHkiLCJyYWRpb0J1dHRvbktleVByb3BlcnR5IiwiaG9yaXpvbnRhbExheW91dCIsInJhZGlvQnV0dG9uc0hvcml6b250YWxMYXlvdXQiLCJnZXRJbnB1dFdpdGhWYWx1ZUhlbHBUZW1wbGF0ZSIsImRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgiLCJkZWxlZ2F0ZSIsIkZpZWxkSGVscGVyIiwiY29tcHV0ZUZpZWxkQmFzZURlbGVnYXRlIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImRpc3BsYXkiLCJnZXRGaWVsZERpc3BsYXkiLCJkaXNwbGF5TW9kZSIsImhhc011bHRpbGluZUFubm90YXRpb24iLCJVSSIsIk11bHRpTGluZVRleHQiLCJtdWx0aXBsZUxpbmVzIiwiZ2V0TXVsdGlwbGVMaW5lc0ZvckRhdGFGaWVsZCIsImxhYmVsIiwiY29tcHV0ZUxhYmVsVGV4dCIsImNvbnRleHQiLCJvcHRpb25hbENvbnRlbnRFZGl0IiwiVGV4dEFyZWEiLCJyb3dzIiwidGV4dExpbmVzRWRpdCIsImdyb3dpbmciLCJ0ZXh0TWF4TGluZXMiLCJncm93aW5nTWF4TGluZXMiLCJvcHRpb25hbExheW91dERhdGEiLCJGaWVsZCIsInZhbHVlU3RhdGUiLCJlZGl0TW9kZSIsImNvbXB1dGVkRWRpdE1vZGUiLCJhZGRpdGlvbmFsVmFsdWUiLCJ0ZXh0QmluZGluZ0V4cHJlc3Npb24iLCJ2YWx1ZUhlbHAiLCJ2YWx1ZUhlbHBJZCIsImNvbnRlbnRFZGl0IiwiZ2V0Q2hlY2tCb3hUZW1wbGF0ZSIsIkNoZWNrQm94Iiwic2VsZWN0ZWQiLCJzZWxlY3QiLCJnZXRUZXh0QXJlYVRlbXBsYXRlIiwic2hvd0V4Y2VlZGVkVGV4dCIsIlRleHRBcmVhRXgiLCJjb2xzIiwiZ2V0UmF0aW5nSW5kaWNhdG9yVGVtcGxhdGUiLCJ0b29sdGlwIiwicmF0aW5nSW5kaWNhdG9yVG9vbHRpcCIsIlJhdGluZ0luZGljYXRvciIsIm1heFZhbHVlIiwicmF0aW5nSW5kaWNhdG9yVGFyZ2V0VmFsdWUiLCJpY29uU2l6ZSIsImNsYXNzIiwiZ2V0VGVtcGxhdGVXaXRoV3JhcHBlciIsIkZpZWxkRWRpdE1vZGUiLCJEaXNwbGF5IiwiX2pzeHMiLCJDb2xsYWJvcmF0aW9uSEJveCIsImFsaWduSXRlbXMiLCJnZXRUZW1wbGF0ZSIsImdldElucHV0TWFza1RlbXBsYXRlIiwib3B0aW9uYWxNYXNrSW5wdXRSdWxlcyIsIm1hc2siLCJtYXNrUnVsZSIsInJ1bGUiLCJwdXNoIiwiTWFza0lucHV0UnVsZSIsIm1hc2tGb3JtYXRTeW1ib2wiLCJzeW1ib2wiLCJyZWdleCIsIk1hc2tJbnB1dCIsInBsYWNlaG9sZGVyU3ltYm9sIiwicnVsZXMiLCJpbm5lckZpZWxkQ29udGVudCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRWRpdFN0eWxlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERhdGFGaWVsZFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IEV2ZW50RGVsZWdhdGVIb29rIGZyb20gXCJzYXAvZmUvYmFzZS9FdmVudERlbGVnYXRlSG9va1wiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0ICogYXMgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IHsgaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IENvbGxhYm9yYXRpb25IQm94IGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0NvbGxhYm9yYXRpb25IQm94XCI7XG5pbXBvcnQgUmFkaW9CdXR0b25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL1JhZGlvQnV0dG9uc1wiO1xuaW1wb3J0IHsgZ2V0TXVsdGlwbGVMaW5lc0ZvckRhdGFGaWVsZCwgZ2V0VGV4dEFsaWdubWVudCB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkVGVtcGxhdGluZ1wiO1xuaW1wb3J0IHR5cGUgeyBGaWVsZEJsb2NrUHJvcGVydGllcyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL2ZpZWxkL0ZpZWxkU3RydWN0dXJlSGVscGVyXCI7XG5pbXBvcnQgQXZhdGFyIGZyb20gXCJzYXAvbS9BdmF0YXJcIjtcbmltcG9ydCB0eXBlIHsgQ2hlY2tCb3gkU2VsZWN0RXZlbnQgfSBmcm9tIFwic2FwL20vQ2hlY2tCb3hcIjtcbmltcG9ydCBDaGVja0JveCBmcm9tIFwic2FwL20vQ2hlY2tCb3hcIjtcbmltcG9ydCBEYXRlUGlja2VyIGZyb20gXCJzYXAvbS9EYXRlUGlja2VyXCI7XG5pbXBvcnQgRGF0ZVRpbWVQaWNrZXIgZnJvbSBcInNhcC9tL0RhdGVUaW1lUGlja2VyXCI7XG5pbXBvcnQgRmxleEl0ZW1EYXRhIGZyb20gXCJzYXAvbS9GbGV4SXRlbURhdGFcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCB0eXBlIHsgSW5wdXRCYXNlJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC9tL0lucHV0QmFzZVwiO1xuaW1wb3J0IHR5cGUgeyBNYXNrSW5wdXQkTGl2ZUNoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC9tL01hc2tJbnB1dFwiO1xuaW1wb3J0IE1hc2tJbnB1dCBmcm9tIFwic2FwL20vTWFza0lucHV0XCI7XG5pbXBvcnQgTWFza0lucHV0UnVsZSBmcm9tIFwic2FwL20vTWFza0lucHV0UnVsZVwiO1xuaW1wb3J0IHR5cGUgeyBSYXRpbmdJbmRpY2F0b3IkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vUmF0aW5nSW5kaWNhdG9yXCI7XG5pbXBvcnQgUmF0aW5nSW5kaWNhdG9yIGZyb20gXCJzYXAvbS9SYXRpbmdJbmRpY2F0b3JcIjtcbmltcG9ydCBUZXh0QXJlYSBmcm9tIFwic2FwL20vVGV4dEFyZWFcIjtcbmltcG9ydCBUaW1lUGlja2VyIGZyb20gXCJzYXAvbS9UaW1lUGlja2VyXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBDb250cm9sLCBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50LCBkZWZhdWx0IGFzIENvbnRyb2wxIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IEZpZWxkRWRpdE1vZGUgZnJvbSBcInNhcC91aS9tZGMvZW51bXMvRmllbGRFZGl0TW9kZVwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IEZpZWxkSGVscGVyIGZyb20gXCIuLi8uLi9maWVsZC9GaWVsZEhlbHBlclwiO1xuaW1wb3J0IFRleHRBcmVhRXggZnJvbSBcIi4uLy4uL2ZpZWxkL1RleHRBcmVhRXhcIjtcblxuY29uc3QgRWRpdFN0eWxlID0ge1xuXHQvKipcblx0ICogQW4gaW50ZXJuYWwgaGVscGVyIHRvIHJldHJpZXZlIHRoZSByZXVzZWQgbGF5b3V0IGRhdGEuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRMYXlvdXREYXRhKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IHN0cmluZyB7XG5cdFx0bGV0IGxheW91dERhdGEgPSBcIlwiO1xuXHRcdGlmIChmaWVsZC5jb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0bGF5b3V0RGF0YSA9IDxGbGV4SXRlbURhdGEgZ3Jvd0ZhY3Rvcj1cIjlcIiAvPjtcblx0XHR9XG5cdFx0cmV0dXJuIGxheW91dERhdGE7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgYXZhdGFyIGNvbnRyb2wgbmV4dCBhIGZpZWxkIGxvY2tlZC5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGF2YXRhclxuXHQgKi9cblx0Z2V0Q29sbGFib3JhdGlvbkF2YXRhcihmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpb25IYXNBY3Rpdml0eUV4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihmaWVsZC5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbik7XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0VUlGb3JtYXR0ZXIuZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24oZmllbGQuZGF0YU1vZGVsUGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMpXG5cdFx0KTtcblx0XHRjb25zdCBjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRVSUZvcm1hdHRlci5nZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbihmaWVsZC5kYXRhTW9kZWxQYXRoLCBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlDb2xvcilcblx0XHQpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxBdmF0YXJcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZpZWxkUnVudGltZUhlbHBlcjogJ3NhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRSdW50aW1lSGVscGVyJ31cIlxuXHRcdFx0XHR2aXNpYmxlPXtjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9ufVxuXHRcdFx0XHRpbml0aWFscz17Y29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbn1cblx0XHRcdFx0ZGlzcGxheVNpemU9XCJDdXN0b21cIlxuXHRcdFx0XHRjdXN0b21EaXNwbGF5U2l6ZT1cIjEuNXJlbVwiXG5cdFx0XHRcdGN1c3RvbUZvbnRTaXplPVwiMC44cmVtXCJcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yPXtjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9ufVxuXHRcdFx0XHRwcmVzcz17ZmllbGQuZXZlbnRIYW5kbGVycy5zaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyIGFzIHVua25vd24gYXMgKChvRXZlbnQ6IEV2ZW50KSA9PiB2b2lkKSB8IHVuZGVmaW5lZH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRkZXBlbmRlbnRzOiA8RXZlbnREZWxlZ2F0ZUhvb2sgc3RvcFRhcFByb3BhZ2F0aW9uPXt0cnVlfSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9BdmF0YXI+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgdGVtcGxhdGUgZm9yIG9uZSBvZiB0aGUgcGlja2VycyByZWZlcmVuY2UgaW4gdGhlIHR5cGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHBhcmFtIHR5cGUgUmVmZXJlbmNlIHRvIG9uZSBvZiB0aGUgZWRpdCBzdHlsZSBwaWNrZXIgdHlwZXNcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXREYXRlVGltZVBpY2tlckdlbmVyaWMoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzLCB0eXBlOiBcIkRhdGVQaWNrZXJcIiB8IFwiRGF0ZVRpbWVQaWNrZXJcIiB8IFwiVGltZVBpY2tlclwiKTogc3RyaW5nIHtcblx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRUeXBlcz4oZmllbGQubWV0YVBhdGgsIGZpZWxkLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCB0ZXh0QWxpZ24gPSBnZXRUZXh0QWxpZ25tZW50KFxuXHRcdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdGZpZWxkLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRmaWVsZC5lZGl0TW9kZUFzT2JqZWN0IGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+XG5cdFx0KTtcblxuXHRcdGNvbnN0IGRhdGVUaW1lUGlja2VyUHJvcGVydGllcyA9IHtcblx0XHRcdFwiY29yZTpyZXF1aXJlXCI6IFwie0ZpZWxkOiAnc2FwL2ZlL21hY3Jvcy9GaWVsZCd9XCIsXG5cdFx0XHRpZDogZmllbGQuZWRpdFN0eWxlSWQsXG5cdFx0XHR3aWR0aDogXCIxMDAlXCIsXG5cdFx0XHRlZGl0YWJsZTogZmllbGQuZWRpdGFibGVFeHByZXNzaW9uLFxuXHRcdFx0ZW5hYmxlZDogZmllbGQuZW5hYmxlZEV4cHJlc3Npb24sXG5cdFx0XHRyZXF1aXJlZDogZmllbGQucmVxdWlyZWRFeHByZXNzaW9uLFxuXHRcdFx0dGV4dEFsaWduOiB0ZXh0QWxpZ24sXG5cdFx0XHRhcmlhTGFiZWxsZWRCeTogZmllbGQuYXJpYUxhYmVsbGVkQnkgYXMgdW5rbm93biBhcyBBcnJheTxDb250cm9sIHwgc3RyaW5nPixcblx0XHRcdHZhbHVlOiBmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9uLFxuXHRcdFx0ZmllbGRHcm91cElkczogZmllbGQuZmllbGRHcm91cElkcyxcblx0XHRcdHNob3dUaW1lem9uZTogZmllbGQuc2hvd1RpbWV6b25lLFxuXHRcdFx0bWluRGF0ZTogdHlwZSA9PT0gXCJEYXRlVGltZVBpY2tlclwiIHx8IHR5cGUgPT09IFwiRGF0ZVBpY2tlclwiID8gZmllbGQubWluRGF0ZUV4cHJlc3Npb24gOiB1bmRlZmluZWQsXG5cdFx0XHRtYXhEYXRlOiB0eXBlID09PSBcIkRhdGVUaW1lUGlja2VyXCIgfHwgdHlwZSA9PT0gXCJEYXRlUGlja2VyXCIgPyBmaWVsZC5tYXhEYXRlRXhwcmVzc2lvbiA6IHVuZGVmaW5lZCxcblx0XHRcdGNoYW5nZTpcblx0XHRcdFx0dHlwZSA9PT0gXCJEYXRlVGltZVBpY2tlclwiXG5cdFx0XHRcdFx0PyAoKGZpZWxkLmNoYW5nZSB8fCBmaWVsZC5ldmVudEhhbmRsZXJzLmNoYW5nZSkgYXMgdW5rbm93biBhcyAob0V2ZW50OiBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQpID0+IHZvaWQpXG5cdFx0XHRcdFx0OiAoZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgdW5rbm93biBhcyAob0V2ZW50OiBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQpID0+IHZvaWQpLFxuXHRcdFx0bGl2ZUNoYW5nZTogZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlLFxuXHRcdFx0dmFsdWVGb3JtYXQ6IHR5cGUgPT09IFwiRGF0ZVBpY2tlclwiID8gXCJtZWRpdW1cIiA6IHVuZGVmaW5lZCxcblx0XHRcdHZhbGlkYXRlRmllbGRHcm91cDogZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZFxuXHRcdH07XG5cblx0XHRmdW5jdGlvbiBnZXREYXRlVGltZVBpY2tlcihkYXRlVGltZVBpY2tlclR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0XHRsZXQgZGF0ZVRpbWVQaWNrZXI7XG5cdFx0XHRzd2l0Y2ggKGRhdGVUaW1lUGlja2VyVHlwZSkge1xuXHRcdFx0XHRjYXNlIFwiRGF0ZVBpY2tlclwiOlxuXHRcdFx0XHRcdGRhdGVUaW1lUGlja2VyID0gKFxuXHRcdFx0XHRcdFx0PERhdGVQaWNrZXIgey4uLmRhdGVUaW1lUGlja2VyUHJvcGVydGllc30+XG5cdFx0XHRcdFx0XHRcdHt7IGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+IH19XG5cdFx0XHRcdFx0XHQ8L0RhdGVQaWNrZXI+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcIkRhdGVUaW1lUGlja2VyXCI6XG5cdFx0XHRcdFx0ZGF0ZVRpbWVQaWNrZXIgPSAoXG5cdFx0XHRcdFx0XHQ8RGF0ZVRpbWVQaWNrZXIgey4uLmRhdGVUaW1lUGlja2VyUHJvcGVydGllc30+XG5cdFx0XHRcdFx0XHRcdHt7IGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+IH19XG5cdFx0XHRcdFx0XHQ8L0RhdGVUaW1lUGlja2VyPlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgXCJUaW1lUGlja2VyXCI6XG5cdFx0XHRcdFx0ZGF0ZVRpbWVQaWNrZXIgPSAoXG5cdFx0XHRcdFx0XHQ8VGltZVBpY2tlciB7Li4uZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdFx0XHRcdDwvVGltZVBpY2tlcj5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGRhdGVUaW1lUGlja2VyO1xuXHRcdH1cblxuXHRcdHJldHVybiBnZXREYXRlVGltZVBpY2tlcih0eXBlKTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBJbnB1dCB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldElucHV0VGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRUeXBlcz4oZmllbGQubWV0YVBhdGgsIGZpZWxkLmNvbnRleHRQYXRoKTtcblxuXHRcdGNvbnN0IHRleHRBbGlnbiA9IGdldFRleHRBbGlnbm1lbnQoXG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHQpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxJbnB1dFxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRwbGFjZWhvbGRlcj17ZmllbGQuZWRpdFN0eWxlUGxhY2Vob2xkZXJ9XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdGVkaXRhYmxlPXtmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb259XG5cdFx0XHRcdGRlc2NyaXB0aW9uPXtmaWVsZC5zdGF0aWNEZXNjcmlwdGlvbn1cblx0XHRcdFx0ZW5hYmxlZD17ZmllbGQuZW5hYmxlZEV4cHJlc3Npb259XG5cdFx0XHRcdHJlcXVpcmVkPXtmaWVsZC5yZXF1aXJlZEV4cHJlc3Npb259XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdHRleHRBbGlnbj17dGV4dEFsaWdufVxuXHRcdFx0XHR0eXBlPXtmaWVsZC5lZGl0U3R5bGUgPT09IFwiTWFza2VkXCIgPyBcIlBhc3N3b3JkXCIgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+fVxuXHRcdFx0XHRtYXhMZW5ndGg9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dE1heExlbmd0aH1cblx0XHRcdFx0Y2hhbmdlPXtmaWVsZC5ldmVudEhhbmRsZXJzLmNoYW5nZSBhcyAob0V2ZW50OiBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdGxpdmVDaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMubGl2ZUNoYW5nZX1cblx0XHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwPXtmaWVsZC5ldmVudEhhbmRsZXJzLnZhbGlkYXRlRmllbGRHcm91cCBhcyAob0V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGxheW91dERhdGE6IEVkaXRTdHlsZS5nZXRMYXlvdXREYXRhKGZpZWxkKSxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9JbnB1dD5cblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGlmIGEgZmllbGQgc2hhbGwgYmUgdGVtcGxhdGVkIGFzIGEgcmFkaW8gYnV0dG9uIGdyb3VwLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIFRoZSBldmFsdWF0aW9uIHJlc3VsdFxuXHQgKi9cblx0c2hvd0FzUmFkaW9CdXR0b24oZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogYm9vbGVhbiB7XG5cdFx0Ly8gRGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gcmVuZGVyIHRoZSBmaWVsZCBhcyBhIHJhZGlvIGJ1dHRvbiBncm91cFxuXHRcdC8vIFRPRE86IFJlbW92ZSB0aGUgbmV4dCB0d28gbGluZXMgb25jZSBVWCB1cGRhdGVkIHRoZSB2b2NhYnVsYXJ5IG1vZHVsZSBpbmNsdWRpbmcgdGhlIG5ldyBleHBlcmltZW50YWwgYW5ub3RhdGlvblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Y29uc3QgcmFkaW9CdXR0b25Db25maWd1cmVkOiBib29sZWFuID1cblx0XHRcdGZpZWxkLnByb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyAmJlxuXHRcdFx0aGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzKGZpZWxkLnByb3BlcnR5KSA9PT0gdHJ1ZSAmJlxuXHRcdFx0KChmaWVsZC5wcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzLmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdFNob3dWYWx1ZXNJbW1lZGlhdGVseSAmJlxuXHRcdFx0XHRmaWVsZC5wcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzLmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdFNob3dWYWx1ZXNJbW1lZGlhdGVseS52YWx1ZU9mKCkgPT09XG5cdFx0XHRcdFx0dHJ1ZSkgfHxcblx0XHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucy5maWVsZEVkaXRTdHlsZSA9PT0gXCJSYWRpb0J1dHRvbnNcIik7XG5cblx0XHQvLyBFeGNsdWRlIG5vdCBzdXBwb3J0ZWQgY2FzZXNcblx0XHQvLyAtIFZhbHVlTGlzdFBhcmFtYXRlckluT3V0IC8gLi4uT3V0IG11c3Qgbm90IGJlIGVtcHR5XG5cdFx0Ly8gLSBWYWx1ZUxpc3RSZWxldmFudFF1YWxpZmllcnMgYW5ub3RhdGlvbiBtdXN0IG5vdCBiZSB1c2VkXG5cdFx0Ly8gRnVydGhlciBjYXNlcyBtYXkgbm90IG1ha2Ugc2Vuc2Ugd2l0aCByYWRpbyBidXR0b25zIGJ1dCB3ZSBkbyBub3QgZXhwbGljaXRseSBleGNsdWRlIHRoZW0gYnV0IG1lbnRpb24gdGhpcyBpbiBkb2N1bWVudGF0aW9uLlxuXHRcdC8vIENoZWNrIGRvY3VtZW50YXRpb24sIGRpc2N1c3MgYW5kIGRlY2lkZSBiZWZvcmUgYWRkaW5nIGZ1cnRoZXIgcmVzdHJpY3Rpb25zIGhlcmUuXG5cdFx0Y29uc3QgdmFsdWVMaXN0UGFyYW1ldGVySW5PdXQgPSBmaWVsZC5wcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0Py5QYXJhbWV0ZXJzLmZpbmQoXG5cdFx0XHQodmFsdWVMaXN0UGFyYW1ldGVyKSA9PlxuXHRcdFx0XHQodmFsdWVMaXN0UGFyYW1ldGVyLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJJbk91dFwiIHx8XG5cdFx0XHRcdFx0dmFsdWVMaXN0UGFyYW1ldGVyLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJPdXRcIikgJiZcblx0XHRcdFx0dmFsdWVMaXN0UGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5LnZhbHVlID09PSBmaWVsZC5wcm9wZXJ0eS5uYW1lXG5cdFx0KTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0cmFkaW9CdXR0b25Db25maWd1cmVkICYmXG5cdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCAhPT0gdW5kZWZpbmVkICYmXG5cdFx0XHQhZmllbGQucHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0UmVsZXZhbnRRdWFsaWZpZXJzXG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBSYWRpb0J1dHRvbiB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIHJhZGlvIGJ1dHRvbiBkZWZpbml0aW9uXG5cdCAqL1xuXHRnZXRSYWRpb0J1dHRvblRlbXBsYXRlKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgZml4ZWRWYWx1ZXNQYXRoID0gXCIvXCIgKyBmaWVsZC5wcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0Py5Db2xsZWN0aW9uUGF0aDtcblxuXHRcdGNvbnN0IHZhbHVlTGlzdFBhcmFtZXRlckluT3V0ID0gZmllbGQucHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdD8uUGFyYW1ldGVycy5maW5kKFxuXHRcdFx0KHZhbHVlTGlzdFBhcmFtZXRlcikgPT5cblx0XHRcdFx0KHZhbHVlTGlzdFBhcmFtZXRlci4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0UGFyYW1ldGVySW5PdXRcIiB8fFxuXHRcdFx0XHRcdHZhbHVlTGlzdFBhcmFtZXRlci4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0UGFyYW1ldGVyT3V0XCIpICYmXG5cdFx0XHRcdHZhbHVlTGlzdFBhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eS52YWx1ZSA9PT0gZmllbGQucHJvcGVydHkubmFtZVxuXHRcdCk7XG5cblx0XHQvLyB3ZSBrbm93IHRoYXQgYSB2YWx1ZUxpc3RQcm9wZXJ0eSBleGlzdHMgYmVjYXVzZSB3ZSBjaGVjayB0aGlzIGFscmVhZHkgaW4gc2hvd0FzUmFkaW9CdXR0b25cblx0XHRjb25zdCB2YWx1ZUxpc3RLZXlQYXRoID0gcGF0aEluTW9kZWwodmFsdWVMaXN0UGFyYW1ldGVySW5PdXQhLlZhbHVlTGlzdFByb3BlcnR5IGFzIHN0cmluZyk7XG5cblx0XHRsZXQgdmFsdWVMaXN0RGVzY3JpcHRpb25QYXRoO1xuXHRcdGNvbnN0IHZhbHVlSGVscEtleVRleHRBbm5vdGF0aW9uUGF0aCA9XG5cdFx0XHRmaWVsZC5kYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUucmVzb2x2ZVBhdGgoZml4ZWRWYWx1ZXNQYXRoKS5lbnRpdHlUeXBlLmtleXNbMF0uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dD8ucGF0aDtcblx0XHRpZiAodmFsdWVIZWxwS2V5VGV4dEFubm90YXRpb25QYXRoKSB7XG5cdFx0XHR2YWx1ZUxpc3REZXNjcmlwdGlvblBhdGggPSBwYXRoSW5Nb2RlbCh2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YWx1ZUxpc3REZXNjcmlwdGlvblBhdGggPSB2YWx1ZUxpc3RLZXlQYXRoO1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8UmFkaW9CdXR0b25zXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0cmVxdWlyZWRFeHByZXNzaW9uPXtmaWVsZC5yZXF1aXJlZEV4cHJlc3Npb259XG5cdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0Zml4ZWRWYWx1ZXNQYXRoPXtmaXhlZFZhbHVlc1BhdGggYXMgdW5rbm93biBhcyBgeyR7c3RyaW5nfX1gfVxuXHRcdFx0XHRmaWVsZEdyb3VwSWRzPXtmaWVsZC5maWVsZEdyb3VwSWRzfVxuXHRcdFx0XHR2YWx1ZT17ZmllbGQudmFsdWVCaW5kaW5nRXhwcmVzc2lvbn1cblx0XHRcdFx0ZW5hYmxlZEV4cHJlc3Npb249e2ZpZWxkLmVuYWJsZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRyYWRpb0J1dHRvblRleHRQcm9wZXJ0eT17dmFsdWVMaXN0RGVzY3JpcHRpb25QYXRofVxuXHRcdFx0XHRyYWRpb0J1dHRvbktleVByb3BlcnR5PXt2YWx1ZUxpc3RLZXlQYXRofVxuXHRcdFx0XHRob3Jpem9udGFsTGF5b3V0PXtmaWVsZC5mb3JtYXRPcHRpb25zLnJhZGlvQnV0dG9uc0hvcml6b250YWxMYXlvdXR9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgSW5wdXRXaXRoVmFsdWVIZWxwIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0SW5wdXRXaXRoVmFsdWVIZWxwVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBkYXRhRmllbGREYXRhTW9kZWxPYmplY3RQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRUeXBlcz4oXG5cdFx0XHRmaWVsZC5tZXRhUGF0aCxcblx0XHRcdGZpZWxkLmNvbnRleHRQYXRoXG5cdFx0KTtcblxuXHRcdGNvbnN0IGRlbGVnYXRlID0gRmllbGRIZWxwZXIuY29tcHV0ZUZpZWxkQmFzZURlbGVnYXRlKFxuXHRcdFx0XCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkQmFzZURlbGVnYXRlXCIsXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLnJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QgYXMgYm9vbGVhblxuXHRcdCk7XG5cdFx0Y29uc3QgZGlzcGxheSA9IFVJRm9ybWF0dGVyLmdldEZpZWxkRGlzcGxheShcblx0XHRcdGZpZWxkLnByb3BlcnR5LFxuXHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucy5kaXNwbGF5TW9kZSBhcyBzdHJpbmcsXG5cdFx0XHRmaWVsZC5lZGl0TW9kZUFzT2JqZWN0IGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+XG5cdFx0KTtcblx0XHRjb25zdCBoYXNNdWx0aWxpbmVBbm5vdGF0aW9uID0gISFmaWVsZC5wcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LlVJPy5NdWx0aUxpbmVUZXh0O1xuXHRcdGNvbnN0IG11bHRpcGxlTGluZXMgPSBnZXRNdWx0aXBsZUxpbmVzRm9yRGF0YUZpZWxkKGZpZWxkLCBoYXNNdWx0aWxpbmVBbm5vdGF0aW9uKTtcblxuXHRcdGNvbnN0IHRleHRBbGlnbiA9IGdldFRleHRBbGlnbm1lbnQoXG5cdFx0XHRkYXRhRmllbGREYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHR0cnVlXG5cdFx0KTtcblx0XHRjb25zdCBsYWJlbCA9IEZpZWxkSGVscGVyLmNvbXB1dGVMYWJlbFRleHQoZmllbGQgYXMgdW5rbm93biBhcyBNZXRhTW9kZWxUeXBlPERhdGFGaWVsZFR5cGVzPiwge1xuXHRcdFx0Y29udGV4dDogZmllbGQubWV0YVBhdGhcblx0XHR9KTtcblxuXHRcdGxldCBvcHRpb25hbENvbnRlbnRFZGl0ID0gXCJcIjtcblx0XHRpZiAoZmllbGQucHJvcGVydHkudHlwZSA9PT0gXCJFZG0uU3RyaW5nXCIgJiYgaGFzTXVsdGlsaW5lQW5ub3RhdGlvbikge1xuXHRcdFx0b3B0aW9uYWxDb250ZW50RWRpdCA9IChcblx0XHRcdFx0PFRleHRBcmVhXG5cdFx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRyb3dzPXtmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRMaW5lc0VkaXR9XG5cdFx0XHRcdFx0Z3Jvd2luZz17KGZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dE1heExpbmVzIGFzIHVua25vd24gYXMgbnVtYmVyKSA+IDAgPyB0cnVlIDogdW5kZWZpbmVkfVxuXHRcdFx0XHRcdGdyb3dpbmdNYXhMaW5lcz17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXN9XG5cdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlIGFzIHVua25vd24gYXMgKG9FdmVudDogSW5wdXRCYXNlJENoYW5nZUV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGxldCBvcHRpb25hbExheW91dERhdGEgPSBcIlwiO1xuXHRcdGlmIChmaWVsZC5jb2xsYWJvcmF0aW9uRW5hYmxlZCA9PT0gdHJ1ZSkge1xuXHRcdFx0b3B0aW9uYWxMYXlvdXREYXRhID0gPEZsZXhJdGVtRGF0YSBncm93RmFjdG9yPVwiOVwiIC8+O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNob3dBc1JhZGlvQnV0dG9uKGZpZWxkKSAhPT0gdHJ1ZSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PEZpZWxkXG5cdFx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZpZWxkOiAnc2FwL2ZlL21hY3Jvcy9GaWVsZCd9XCJcblx0XHRcdFx0XHRkZWxlZ2F0ZT17ZGVsZWdhdGV9XG5cdFx0XHRcdFx0aWQ9e2ZpZWxkLmVkaXRTdHlsZUlkfVxuXHRcdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0XHR2YWx1ZVN0YXRlPXtmaWVsZC52YWx1ZVN0YXRlfVxuXHRcdFx0XHRcdGVkaXRNb2RlPXtmaWVsZC5lZGl0TW9kZSA/PyBmaWVsZC5jb21wdXRlZEVkaXRNb2RlfVxuXHRcdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRhZGRpdGlvbmFsVmFsdWU9e2ZpZWxkLnRleHRCaW5kaW5nRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRkaXNwbGF5PXtkaXNwbGF5fVxuXHRcdFx0XHRcdG11bHRpcGxlTGluZXM9e211bHRpcGxlTGluZXMgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogbXVsdGlwbGVMaW5lc31cblx0XHRcdFx0XHR2YWx1ZUhlbHA9e2ZpZWxkLnZhbHVlSGVscElkfVxuXHRcdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdFx0dGV4dEFsaWduPXt0ZXh0QWxpZ259XG5cdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbDEgfCBzdHJpbmc+fVxuXHRcdFx0XHRcdGxhYmVsPXtsYWJlbH1cblx0XHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlIGFzIChvRXZlbnQ6IEZpZWxkJENoYW5nZUV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0XHRcdGxpdmVDaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMubGl2ZUNoYW5nZX1cblx0XHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudEVkaXQ6IG9wdGlvbmFsQ29udGVudEVkaXQsXG5cdFx0XHRcdFx0XHRsYXlvdXREYXRhOiBvcHRpb25hbExheW91dERhdGEsXG5cdFx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvRmllbGQ+XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRSYWRpb0J1dHRvblRlbXBsYXRlKGZpZWxkKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgQ2hlY2tCb3ggdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRDaGVja0JveFRlbXBsYXRlKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxDaGVja0JveFxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdHNlbGVjdGVkPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRlZGl0YWJsZT17ZmllbGQuZWRpdGFibGVFeHByZXNzaW9ufVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdHNlbGVjdD17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogQ2hlY2tCb3gkU2VsZWN0RXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdD5cblx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdDwvQ2hlY2tCb3g+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBUZXh0QXJlYSB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldFRleHRBcmVhVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBncm93aW5nID0gZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXMgPyB0cnVlIDogZmFsc2U7XG5cblx0XHRjb25zdCBzaG93RXhjZWVkZWRUZXh0ID0gISFmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRNYXhMZW5ndGg7XG5cblx0XHQvL3VuZm9ydHVuYXRlbHkgdGhpcyBvbmUgaXMgYSBcImRpZmZlcmVudFwiIGxheW91dERhdGEgdGhhbiB0aGUgb3RoZXJzLCB0aGVyZWZvcmUgdGhlIHJldXNlIGZ1bmN0aW9uIGZyb20gYWJvdmUgY2Fubm90IGJlIHVzZWQgZm9yIHRoZSB0ZXh0QXJlYSB0ZW1wbGF0ZVxuXHRcdGxldCBsYXlvdXREYXRhID0gXCJcIjtcblx0XHRpZiAoZmllbGQuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGxheW91dERhdGEgPSA8RmxleEl0ZW1EYXRhIGdyb3dGYWN0b3I9XCI5XCIgLz47XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxUZXh0QXJlYUV4XG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cm93cz17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TGluZXNFZGl0fVxuXHRcdFx0XHRncm93aW5nPXtncm93aW5nfVxuXHRcdFx0XHRncm93aW5nTWF4TGluZXM9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dE1heExpbmVzfVxuXHRcdFx0XHRjb2xzPXszMDB9IC8vQXMgdGhlIGRlZmF1bHQgaXMgMjAsIHRoZSBcImNvbHNcIiBwcm9wZXJ0eSBpcyBjb25maWd1cmVkIHdpdGggYSB2YWx1ZSBvZiAzMDAgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIHRleHRhcmVhIHdpbGwgb2NjdXB5IGFsbCB0aGUgYXZhaWxhYmxlIHNwYWNlLlxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRlZGl0YWJsZT17ZmllbGQuZWRpdGFibGVFeHByZXNzaW9ufVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdG1heExlbmd0aD17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGVuZ3RofVxuXHRcdFx0XHRzaG93RXhjZWVkZWRUZXh0PXtzaG93RXhjZWVkZWRUZXh0fVxuXHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogbGF5b3V0RGF0YSxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9UZXh0QXJlYUV4PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgUmF0aW5nSW5kaWNhdG9yIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0UmF0aW5nSW5kaWNhdG9yVGVtcGxhdGU6IChmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcgPT4ge1xuXHRcdGNvbnN0IHRvb2x0aXAgPSBmaWVsZC5yYXRpbmdJbmRpY2F0b3JUb29sdGlwIHx8IFwie3NhcC5mZS5pMThuPlRfQ09NTU9OX1JBVElOR19JTkRJQ0FUT1JfVElUTEVfTEFCRUx9XCI7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFJhdGluZ0luZGljYXRvclxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdG1heFZhbHVlPXtmaWVsZC5yYXRpbmdJbmRpY2F0b3JUYXJnZXRWYWx1ZX1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHRvb2x0aXA9e3Rvb2x0aXB9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdGljb25TaXplPVwiMS4zNzVyZW1cIlxuXHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpblRvcEJvdHRvbVwiXG5cdFx0XHRcdGVkaXRhYmxlPVwidHJ1ZVwiXG5cdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogUmF0aW5nSW5kaWNhdG9yJENoYW5nZUV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGxheW91dERhdGE6IEVkaXRTdHlsZS5nZXRMYXlvdXREYXRhKGZpZWxkKVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9SYXRpbmdJbmRpY2F0b3I+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogSGVscHMgdG8gY2FsY3VsYXRlIHRoZSBjb250ZW50IGVkaXQgZnVuY3Rpb25hbGl0eSAvIHRlbXBsYXRpbmcuXG5cdCAqIEluY2x1ZGluZyBhIHdyYXBwZXIgYW4gaGJveCBpbiBjYXNlIG9mIGNvbGxhYm9yYXRpb24gbW9kZSBmaW5hbGx5XG5cdCAqIGl0IGNhbGxzIGludGVybmFsbHkgRWRpdFN0eWxlLmdldFRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0VGVtcGxhdGVXaXRoV3JhcHBlcihmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGxldCBjb250ZW50RWRpdDtcblxuXHRcdGlmICgoZmllbGQuZWRpdE1vZGUgPz8gZmllbGQuY29tcHV0ZWRFZGl0TW9kZSkgIT09IEZpZWxkRWRpdE1vZGUuRGlzcGxheSAmJiAhIWZpZWxkLmVkaXRTdHlsZSkge1xuXHRcdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkID8/IGZhbHNlKSB7XG5cdFx0XHRcdGNvbnRlbnRFZGl0ID0gKFxuXHRcdFx0XHRcdDxDb2xsYWJvcmF0aW9uSEJveCB3aWR0aD1cIjEwMCVcIiBhbGlnbkl0ZW1zPVwiRW5kXCI+XG5cdFx0XHRcdFx0XHR7RWRpdFN0eWxlLmdldFRlbXBsYXRlKGZpZWxkKX1cblx0XHRcdFx0XHRcdHtFZGl0U3R5bGUuZ2V0Q29sbGFib3JhdGlvbkF2YXRhcihmaWVsZCl9XG5cdFx0XHRcdFx0PC9Db2xsYWJvcmF0aW9uSEJveD5cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnRlbnRFZGl0ID0gRWRpdFN0eWxlLmdldFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29udGVudEVkaXQgfHwgXCJcIjtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBJbnB1dE1hc2sgdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRJbnB1dE1hc2tUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG9wdGlvbmFsTWFza0lucHV0UnVsZXMgPSBbXTtcblx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRUeXBlcz4oZmllbGQubWV0YVBhdGgsIGZpZWxkLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCB0ZXh0QWxpZ24gPSBnZXRUZXh0QWxpZ25tZW50KFxuXHRcdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdGZpZWxkLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRmaWVsZC5lZGl0TW9kZUFzT2JqZWN0IGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+XG5cdFx0KTtcblx0XHRpZiAoZmllbGQubWFzaz8ubWFza1J1bGUpIHtcblx0XHRcdGZvciAoY29uc3QgcnVsZSBvZiBmaWVsZC5tYXNrLm1hc2tSdWxlKSB7XG5cdFx0XHRcdG9wdGlvbmFsTWFza0lucHV0UnVsZXMucHVzaCg8TWFza0lucHV0UnVsZSBtYXNrRm9ybWF0U3ltYm9sPXtydWxlLnN5bWJvbH0gcmVnZXg9e3J1bGUucmVnZXh9IC8+KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1hc2tJbnB1dFxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRwbGFjZWhvbGRlcj17ZmllbGQuZWRpdFN0eWxlUGxhY2Vob2xkZXJ9XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdGVkaXRhYmxlPXtmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb259XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+fVxuXHRcdFx0XHRtYXNrPXtmaWVsZC5tYXNrPy5tYXNrfVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0dGV4dEFsaWduPXt0ZXh0QWxpZ259XG5cdFx0XHRcdHBsYWNlaG9sZGVyU3ltYm9sPXtmaWVsZC5tYXNrPy5wbGFjZWhvbGRlclN5bWJvbH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlIGFzIChvRXZlbnQ6IE1hc2tJbnB1dCRMaXZlQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRydWxlczogb3B0aW9uYWxNYXNrSW5wdXRSdWxlcyxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9NYXNrSW5wdXQ+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogRW50cnkgcG9pbnQgZm9yIGZ1cnRoZXIgdGVtcGxhdGluZyBwcm9jZXNzaW5ncy5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldFRlbXBsYXRlOiAoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0XHRsZXQgaW5uZXJGaWVsZENvbnRlbnQ7XG5cdFx0c3dpdGNoIChmaWVsZC5lZGl0U3R5bGUpIHtcblx0XHRcdGNhc2UgXCJDaGVja0JveFwiOlxuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRDaGVja0JveFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRGF0ZVBpY2tlclwiOlxuXHRcdFx0Y2FzZSBcIkRhdGVUaW1lUGlja2VyXCI6XG5cdFx0XHRjYXNlIFwiVGltZVBpY2tlclwiOiB7XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldERhdGVUaW1lUGlja2VyR2VuZXJpYyhmaWVsZCwgZmllbGQuZWRpdFN0eWxlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiSW5wdXRcIjoge1xuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRJbnB1dFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiTWFza2VkXCI6IHtcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0SW5wdXRUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcIklucHV0V2l0aFZhbHVlSGVscFwiOiB7XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldElucHV0V2l0aFZhbHVlSGVscFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiUmF0aW5nSW5kaWNhdG9yXCI6XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldFJhdGluZ0luZGljYXRvclRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVGV4dEFyZWFcIjpcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0VGV4dEFyZWFUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIklucHV0TWFza1wiOlxuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRJbnB1dE1hc2tUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHR9XG5cblx0XHRyZXR1cm4gaW5uZXJGaWVsZENvbnRlbnQ7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRTdHlsZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0VBcUNBLE1BQU1BLFNBQVMsR0FBRztJQUNqQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLGFBQWFBLENBQUNDLEtBQTJCLEVBQVU7TUFDbEQsSUFBSUMsVUFBVSxHQUFHLEVBQUU7TUFDbkIsSUFBSUQsS0FBSyxDQUFDRSxvQkFBb0IsRUFBRTtRQUMvQkQsVUFBVSxHQUFHRSxJQUFBLENBQUNDLFlBQVk7VUFBQ0MsVUFBVSxFQUFDO1FBQUcsQ0FBRSxDQUFDO01BQzdDO01BQ0EsT0FBT0osVUFBVTtJQUNsQixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDSyxzQkFBc0JBLENBQUNOLEtBQTJCLEVBQVU7TUFDM0QsTUFBTU8sa0NBQWtDLEdBQUdDLGlCQUFpQixDQUFDUixLQUFLLENBQUNTLHVCQUF1QixDQUFDO01BQzNGLE1BQU1DLCtCQUErQixHQUFHRixpQkFBaUIsQ0FDeERHLFdBQVcsQ0FBQ0MsMEJBQTBCLENBQUNaLEtBQUssQ0FBQ2EsYUFBYSxFQUFFQyx1QkFBdUIsQ0FBQ0MsZ0NBQWdDLENBQ3JI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
|
|
479
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFZGl0U3R5bGUiLCJnZXRMYXlvdXREYXRhIiwiZmllbGQiLCJsYXlvdXREYXRhIiwiY29sbGFib3JhdGlvbkVuYWJsZWQiLCJfanN4IiwiRmxleEl0ZW1EYXRhIiwiZ3Jvd0ZhY3RvciIsImdldENvbGxhYm9yYXRpb25BdmF0YXIiLCJjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsImNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24iLCJVSUZvcm1hdHRlciIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiZGF0YU1vZGVsUGF0aCIsIkNvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJBdmF0YXIiLCJ2aXNpYmxlIiwiaW5pdGlhbHMiLCJkaXNwbGF5U2l6ZSIsImN1c3RvbURpc3BsYXlTaXplIiwiY3VzdG9tRm9udFNpemUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmVzcyIsImV2ZW50SGFuZGxlcnMiLCJzaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyIiwiY2hpbGRyZW4iLCJkZXBlbmRlbnRzIiwiRXZlbnREZWxlZ2F0ZUhvb2siLCJzdG9wVGFwUHJvcGFnYXRpb24iLCJnZXREYXRlVGltZVBpY2tlckdlbmVyaWMiLCJ0eXBlIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJ0ZXh0QWxpZ24iLCJnZXRUZXh0QWxpZ25tZW50IiwiZm9ybWF0T3B0aW9ucyIsImVkaXRNb2RlQXNPYmplY3QiLCJkYXRlVGltZVBpY2tlclByb3BlcnRpZXMiLCJpZCIsImVkaXRTdHlsZUlkIiwid2lkdGgiLCJlZGl0YWJsZSIsImVkaXRhYmxlRXhwcmVzc2lvbiIsImVuYWJsZWQiLCJlbmFibGVkRXhwcmVzc2lvbiIsInJlcXVpcmVkIiwicmVxdWlyZWRFeHByZXNzaW9uIiwiYXJpYUxhYmVsbGVkQnkiLCJ2YWx1ZSIsInZhbHVlQmluZGluZ0V4cHJlc3Npb24iLCJmaWVsZEdyb3VwSWRzIiwic2hvd1RpbWV6b25lIiwibWluRGF0ZSIsIm1pbkRhdGVFeHByZXNzaW9uIiwidW5kZWZpbmVkIiwibWF4RGF0ZSIsIm1heERhdGVFeHByZXNzaW9uIiwiY2hhbmdlIiwibGl2ZUNoYW5nZSIsInZhbHVlRm9ybWF0IiwidmFsaWRhdGVGaWVsZEdyb3VwIiwiZ2V0RGF0ZVRpbWVQaWNrZXIiLCJkYXRlVGltZVBpY2tlclR5cGUiLCJkYXRlVGltZVBpY2tlciIsIkRhdGVQaWNrZXIiLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsImRhdGFTb3VyY2VQYXRoIiwiRGF0ZVRpbWVQaWNrZXIiLCJUaW1lUGlja2VyIiwiZ2V0SW5wdXRUZW1wbGF0ZSIsIklucHV0IiwicGxhY2Vob2xkZXIiLCJlZGl0U3R5bGVQbGFjZWhvbGRlciIsImRlc2NyaXB0aW9uIiwic3RhdGljRGVzY3JpcHRpb24iLCJlZGl0U3R5bGUiLCJtYXhMZW5ndGgiLCJ0ZXh0TWF4TGVuZ3RoIiwic2hvd0FzUmFkaW9CdXR0b24iLCJyYWRpb0J1dHRvbkNvbmZpZ3VyZWQiLCJwcm9wZXJ0eSIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIiwiVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5IiwidmFsdWVPZiIsImZpZWxkRWRpdFN0eWxlIiwidmFsdWVMaXN0UGFyYW1ldGVySW5PdXQiLCJWYWx1ZUxpc3QiLCJQYXJhbWV0ZXJzIiwiZmluZCIsInZhbHVlTGlzdFBhcmFtZXRlciIsIiRUeXBlIiwiTG9jYWxEYXRhUHJvcGVydHkiLCJuYW1lIiwiVmFsdWVMaXN0UmVsZXZhbnRRdWFsaWZpZXJzIiwiZ2V0UmFkaW9CdXR0b25UZW1wbGF0ZSIsImZpeGVkVmFsdWVzUGF0aCIsIkNvbGxlY3Rpb25QYXRoIiwidmFsdWVMaXN0S2V5UGF0aCIsInBhdGhJbk1vZGVsIiwiVmFsdWVMaXN0UHJvcGVydHkiLCJ2YWx1ZUxpc3REZXNjcmlwdGlvblBhdGgiLCJ2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGgiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJlbnRpdHlUeXBlIiwia2V5cyIsIlRleHQiLCJwYXRoIiwiUmFkaW9CdXR0b25zIiwicmFkaW9CdXR0b25UZXh0UHJvcGVydHkiLCJyYWRpb0J1dHRvbktleVByb3BlcnR5IiwiaG9yaXpvbnRhbExheW91dCIsInJhZGlvQnV0dG9uc0hvcml6b250YWxMYXlvdXQiLCJnZXRJbnB1dFdpdGhWYWx1ZUhlbHBUZW1wbGF0ZSIsImRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgiLCJkZWxlZ2F0ZSIsIkZpZWxkSGVscGVyIiwiY29tcHV0ZUZpZWxkQmFzZURlbGVnYXRlIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImRpc3BsYXkiLCJnZXRGaWVsZERpc3BsYXkiLCJkaXNwbGF5TW9kZSIsImhhc011bHRpbGluZUFubm90YXRpb24iLCJVSSIsIk11bHRpTGluZVRleHQiLCJtdWx0aXBsZUxpbmVzIiwiZ2V0TXVsdGlwbGVMaW5lc0ZvckRhdGFGaWVsZCIsImxhYmVsIiwiY29tcHV0ZUxhYmVsVGV4dCIsImNvbnRleHQiLCJvcHRpb25hbENvbnRlbnRFZGl0IiwiVGV4dEFyZWEiLCJyb3dzIiwidGV4dExpbmVzRWRpdCIsImdyb3dpbmciLCJ0ZXh0TWF4TGluZXMiLCJncm93aW5nTWF4TGluZXMiLCJvcHRpb25hbExheW91dERhdGEiLCJGaWVsZCIsInZhbHVlU3RhdGUiLCJlZGl0TW9kZSIsImNvbXB1dGVkRWRpdE1vZGUiLCJhZGRpdGlvbmFsVmFsdWUiLCJ0ZXh0QmluZGluZ0V4cHJlc3Npb24iLCJ2YWx1ZUhlbHAiLCJ2YWx1ZUhlbHBJZCIsImNvbnRlbnRFZGl0IiwiZ2V0Q2hlY2tCb3hUZW1wbGF0ZSIsImlzQ2hlY2tCb3hHcm91cEl0ZW0iLCJpc0ZpZWxkR3JvdXBJdGVtIiwiQ2hlY2tCb3giLCJzZWxlY3RlZCIsInRleHQiLCJ3cmFwcGluZyIsInNlbGVjdCIsImdldFRleHRBcmVhVGVtcGxhdGUiLCJzaG93RXhjZWVkZWRUZXh0IiwiVGV4dEFyZWFFeCIsImNvbHMiLCJnZXRSYXRpbmdJbmRpY2F0b3JUZW1wbGF0ZSIsInRvb2x0aXAiLCJyYXRpbmdJbmRpY2F0b3JUb29sdGlwIiwiUmF0aW5nSW5kaWNhdG9yIiwibWF4VmFsdWUiLCJyYXRpbmdJbmRpY2F0b3JUYXJnZXRWYWx1ZSIsImljb25TaXplIiwiY2xhc3MiLCJnZXRUZW1wbGF0ZVdpdGhXcmFwcGVyIiwiRmllbGRFZGl0TW9kZSIsIkRpc3BsYXkiLCJfanN4cyIsIkNvbGxhYm9yYXRpb25IQm94IiwiYWxpZ25JdGVtcyIsImdldFRlbXBsYXRlIiwiZ2V0SW5wdXRNYXNrVGVtcGxhdGUiLCJvcHRpb25hbE1hc2tJbnB1dFJ1bGVzIiwibWFzayIsIm1hc2tSdWxlIiwicnVsZSIsInB1c2giLCJNYXNrSW5wdXRSdWxlIiwibWFza0Zvcm1hdFN5bWJvbCIsInN5bWJvbCIsInJlZ2V4IiwiTWFza0lucHV0IiwicGxhY2Vob2xkZXJTeW1ib2wiLCJydWxlcyIsImlubmVyRmllbGRDb250ZW50Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFZGl0U3R5bGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0YUZpZWxkVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgRXZlbnREZWxlZ2F0ZUhvb2sgZnJvbSBcInNhcC9mZS9iYXNlL0V2ZW50RGVsZWdhdGVIb29rXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgKiBhcyBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9Db2xsYWJvcmF0aW9uRm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgQ29sbGFib3JhdGlvbkhCb3ggZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvQ29sbGFib3JhdGlvbkhCb3hcIjtcbmltcG9ydCBSYWRpb0J1dHRvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvUmFkaW9CdXR0b25zXCI7XG5pbXBvcnQgeyBnZXRNdWx0aXBsZUxpbmVzRm9yRGF0YUZpZWxkLCBnZXRUZXh0QWxpZ25tZW50IH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvZmllbGQvRmllbGRTdHJ1Y3R1cmVIZWxwZXJcIjtcbmltcG9ydCBBdmF0YXIgZnJvbSBcInNhcC9tL0F2YXRhclwiO1xuaW1wb3J0IHR5cGUgeyBDaGVja0JveCRTZWxlY3RFdmVudCB9IGZyb20gXCJzYXAvbS9DaGVja0JveFwiO1xuaW1wb3J0IENoZWNrQm94IGZyb20gXCJzYXAvbS9DaGVja0JveFwiO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSBcInNhcC9tL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBEYXRlVGltZVBpY2tlciBmcm9tIFwic2FwL20vRGF0ZVRpbWVQaWNrZXJcIjtcbmltcG9ydCBGbGV4SXRlbURhdGEgZnJvbSBcInNhcC9tL0ZsZXhJdGVtRGF0YVwiO1xuaW1wb3J0IElucHV0IGZyb20gXCJzYXAvbS9JbnB1dFwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRCYXNlXCI7XG5pbXBvcnQgdHlwZSB7IE1hc2tJbnB1dCRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vTWFza0lucHV0XCI7XG5pbXBvcnQgTWFza0lucHV0IGZyb20gXCJzYXAvbS9NYXNrSW5wdXRcIjtcbmltcG9ydCBNYXNrSW5wdXRSdWxlIGZyb20gXCJzYXAvbS9NYXNrSW5wdXRSdWxlXCI7XG5pbXBvcnQgdHlwZSB7IFJhdGluZ0luZGljYXRvciRDaGFuZ2VFdmVudCB9IGZyb20gXCJzYXAvbS9SYXRpbmdJbmRpY2F0b3JcIjtcbmltcG9ydCBSYXRpbmdJbmRpY2F0b3IgZnJvbSBcInNhcC9tL1JhdGluZ0luZGljYXRvclwiO1xuaW1wb3J0IFRleHRBcmVhIGZyb20gXCJzYXAvbS9UZXh0QXJlYVwiO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSBcInNhcC9tL1RpbWVQaWNrZXJcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIENvbnRyb2wsIENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQsIGRlZmF1bHQgYXMgQ29udHJvbDEgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCB0eXBlIHsgRmllbGQkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IEZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgRmllbGRFZGl0TW9kZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9GaWVsZEVkaXRNb2RlXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5pbXBvcnQgRmllbGRIZWxwZXIgZnJvbSBcIi4uLy4uL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgVGV4dEFyZWFFeCBmcm9tIFwiLi4vLi4vZmllbGQvVGV4dEFyZWFFeFwiO1xuXG5jb25zdCBFZGl0U3R5bGUgPSB7XG5cdC8qKlxuXHQgKiBBbiBpbnRlcm5hbCBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIHJldXNlZCBsYXlvdXQgZGF0YS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldExheW91dERhdGEoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRsZXQgbGF5b3V0RGF0YSA9IFwiXCI7XG5cdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRsYXlvdXREYXRhID0gPEZsZXhJdGVtRGF0YSBncm93RmFjdG9yPVwiOVwiIC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gbGF5b3V0RGF0YTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBhdmF0YXIgY29udHJvbCBuZXh0IGEgZmllbGQgbG9ja2VkLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYXZhdGFyXG5cdCAqL1xuXHRnZXRDb2xsYWJvcmF0aW9uQXZhdGFyKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvbkhhc0FjdGl2aXR5RXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKGZpZWxkLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uKTtcblx0XHRjb25zdCBjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRVSUZvcm1hdHRlci5nZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbihmaWVsZC5kYXRhTW9kZWxQYXRoLCBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlJbml0aWFscylcblx0XHQpO1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFVJRm9ybWF0dGVyLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKGZpZWxkLmRhdGFNb2RlbFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUNvbG9yKVxuXHRcdCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PEF2YXRhclxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGRSdW50aW1lSGVscGVyOiAnc2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFJ1bnRpbWVIZWxwZXInfVwiXG5cdFx0XHRcdHZpc2libGU9e2NvbGxhYm9yYXRpb25IYXNBY3Rpdml0eUV4cHJlc3Npb259XG5cdFx0XHRcdGluaXRpYWxzPXtjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9ufVxuXHRcdFx0XHRkaXNwbGF5U2l6ZT1cIkN1c3RvbVwiXG5cdFx0XHRcdGN1c3RvbURpc3BsYXlTaXplPVwiMS41cmVtXCJcblx0XHRcdFx0Y3VzdG9tRm9udFNpemU9XCIwLjhyZW1cIlxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9e2NvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb259XG5cdFx0XHRcdHByZXNzPXtmaWVsZC5ldmVudEhhbmRsZXJzLnNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXIgYXMgdW5rbm93biBhcyAoKG9FdmVudDogRXZlbnQpID0+IHZvaWQpIHwgdW5kZWZpbmVkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGRlcGVuZGVudHM6IDxFdmVudERlbGVnYXRlSG9vayBzdG9wVGFwUHJvcGFnYXRpb249e3RydWV9IC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0F2YXRhcj5cblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSB0ZW1wbGF0ZSBmb3Igb25lIG9mIHRoZSBwaWNrZXJzIHJlZmVyZW5jZSBpbiB0aGUgdHlwZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gdHlwZSBSZWZlcmVuY2UgdG8gb25lIG9mIHRoZSBlZGl0IHN0eWxlIHBpY2tlciB0eXBlc1xuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldERhdGVUaW1lUGlja2VyR2VuZXJpYyhmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMsIHR5cGU6IFwiRGF0ZVBpY2tlclwiIHwgXCJEYXRlVGltZVBpY2tlclwiIHwgXCJUaW1lUGlja2VyXCIpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihmaWVsZC5tZXRhUGF0aCwgZmllbGQuY29udGV4dFBhdGgpO1xuXHRcdGNvbnN0IHRleHRBbGlnbiA9IGdldFRleHRBbGlnbm1lbnQoXG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHQpO1xuXG5cdFx0Y29uc3QgZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzID0ge1xuXHRcdFx0XCJjb3JlOnJlcXVpcmVcIjogXCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIixcblx0XHRcdGlkOiBmaWVsZC5lZGl0U3R5bGVJZCxcblx0XHRcdHdpZHRoOiBcIjEwMCVcIixcblx0XHRcdGVkaXRhYmxlOiBmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb24sXG5cdFx0XHRlbmFibGVkOiBmaWVsZC5lbmFibGVkRXhwcmVzc2lvbixcblx0XHRcdHJlcXVpcmVkOiBmaWVsZC5yZXF1aXJlZEV4cHJlc3Npb24sXG5cdFx0XHR0ZXh0QWxpZ246IHRleHRBbGlnbixcblx0XHRcdGFyaWFMYWJlbGxlZEJ5OiBmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+LFxuXHRcdFx0dmFsdWU6IGZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb24sXG5cdFx0XHRmaWVsZEdyb3VwSWRzOiBmaWVsZC5maWVsZEdyb3VwSWRzLFxuXHRcdFx0c2hvd1RpbWV6b25lOiBmaWVsZC5zaG93VGltZXpvbmUsXG5cdFx0XHRtaW5EYXRlOiB0eXBlID09PSBcIkRhdGVUaW1lUGlja2VyXCIgfHwgdHlwZSA9PT0gXCJEYXRlUGlja2VyXCIgPyBmaWVsZC5taW5EYXRlRXhwcmVzc2lvbiA6IHVuZGVmaW5lZCxcblx0XHRcdG1heERhdGU6IHR5cGUgPT09IFwiRGF0ZVRpbWVQaWNrZXJcIiB8fCB0eXBlID09PSBcIkRhdGVQaWNrZXJcIiA/IGZpZWxkLm1heERhdGVFeHByZXNzaW9uIDogdW5kZWZpbmVkLFxuXHRcdFx0Y2hhbmdlOlxuXHRcdFx0XHR0eXBlID09PSBcIkRhdGVUaW1lUGlja2VyXCJcblx0XHRcdFx0XHQ/ICgoZmllbGQuY2hhbmdlIHx8IGZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlKSBhcyB1bmtub3duIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZClcblx0XHRcdFx0XHQ6IChmaWVsZC5ldmVudEhhbmRsZXJzLmNoYW5nZSBhcyB1bmtub3duIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZCksXG5cdFx0XHRsaXZlQ2hhbmdlOiBmaWVsZC5ldmVudEhhbmRsZXJzLmxpdmVDaGFuZ2UsXG5cdFx0XHR2YWx1ZUZvcm1hdDogdHlwZSA9PT0gXCJEYXRlUGlja2VyXCIgPyBcIm1lZGl1bVwiIDogdW5kZWZpbmVkLFxuXHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwOiBmaWVsZC5ldmVudEhhbmRsZXJzLnZhbGlkYXRlRmllbGRHcm91cCBhcyAob0V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KSA9PiB2b2lkXG5cdFx0fTtcblxuXHRcdGZ1bmN0aW9uIGdldERhdGVUaW1lUGlja2VyKGRhdGVUaW1lUGlja2VyVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRcdGxldCBkYXRlVGltZVBpY2tlcjtcblx0XHRcdHN3aXRjaCAoZGF0ZVRpbWVQaWNrZXJUeXBlKSB7XG5cdFx0XHRcdGNhc2UgXCJEYXRlUGlja2VyXCI6XG5cdFx0XHRcdFx0ZGF0ZVRpbWVQaWNrZXIgPSAoXG5cdFx0XHRcdFx0XHQ8RGF0ZVBpY2tlciB7Li4uZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdFx0XHRcdDwvRGF0ZVBpY2tlcj5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFwiRGF0ZVRpbWVQaWNrZXJcIjpcblx0XHRcdFx0XHRkYXRlVGltZVBpY2tlciA9IChcblx0XHRcdFx0XHRcdDxEYXRlVGltZVBpY2tlciB7Li4uZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdFx0XHRcdDwvRGF0ZVRpbWVQaWNrZXI+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcIlRpbWVQaWNrZXJcIjpcblx0XHRcdFx0XHRkYXRlVGltZVBpY2tlciA9IChcblx0XHRcdFx0XHRcdDxUaW1lUGlja2VyIHsuLi5kYXRlVGltZVBpY2tlclByb3BlcnRpZXN9PlxuXHRcdFx0XHRcdFx0XHR7eyBjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPiB9fVxuXHRcdFx0XHRcdFx0PC9UaW1lUGlja2VyPlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZGF0ZVRpbWVQaWNrZXI7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGdldERhdGVUaW1lUGlja2VyKHR5cGUpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIElucHV0IHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0SW5wdXRUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihmaWVsZC5tZXRhUGF0aCwgZmllbGQuY29udGV4dFBhdGgpO1xuXG5cdFx0Y29uc3QgdGV4dEFsaWduID0gZ2V0VGV4dEFsaWdubWVudChcblx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLFxuXHRcdFx0ZmllbGQuZWRpdE1vZGVBc09iamVjdCBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuXHRcdCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0ZWRpdGFibGU9e2ZpZWxkLmVkaXRhYmxlRXhwcmVzc2lvbn1cblx0XHRcdFx0ZGVzY3JpcHRpb249e2ZpZWxkLnN0YXRpY0Rlc2NyaXB0aW9ufVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0dGV4dEFsaWduPXt0ZXh0QWxpZ259XG5cdFx0XHRcdHR5cGU9e2ZpZWxkLmVkaXRTdHlsZSA9PT0gXCJNYXNrZWRcIiA/IFwiUGFzc3dvcmRcIiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdG1heExlbmd0aD17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGVuZ3RofVxuXHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogRWRpdFN0eWxlLmdldExheW91dERhdGEoZmllbGQpLFxuXHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0lucHV0PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgaWYgYSBmaWVsZCBzaGFsbCBiZSB0ZW1wbGF0ZWQgYXMgYSByYWRpbyBidXR0b24gZ3JvdXAuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgVGhlIGV2YWx1YXRpb24gcmVzdWx0XG5cdCAqL1xuXHRzaG93QXNSYWRpb0J1dHRvbihmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBib29sZWFuIHtcblx0XHQvLyBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byByZW5kZXIgdGhlIGZpZWxkIGFzIGEgcmFkaW8gYnV0dG9uIGdyb3VwXG5cdFx0Ly8gVE9ETzogUmVtb3ZlIHRoZSBuZXh0IHR3byBsaW5lcyBvbmNlIFVYIHVwZGF0ZWQgdGhlIHZvY2FidWxhcnkgbW9kdWxlIGluY2x1ZGluZyB0aGUgbmV3IGV4cGVyaW1lbnRhbCBhbm5vdGF0aW9uXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCByYWRpb0J1dHRvbkNvbmZpZ3VyZWQ6IGJvb2xlYW4gPVxuXHRcdFx0ZmllbGQucHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzICYmXG5cdFx0XHRoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMoZmllbGQucHJvcGVydHkpID09PSB0cnVlICYmXG5cdFx0XHQoKGZpZWxkLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbi5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5ICYmXG5cdFx0XHRcdGZpZWxkLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbi5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5LnZhbHVlT2YoKSA9PT1cblx0XHRcdFx0XHR0cnVlKSB8fFxuXHRcdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLmZpZWxkRWRpdFN0eWxlID09PSBcIlJhZGlvQnV0dG9uc1wiKTtcblxuXHRcdC8vIEV4Y2x1ZGUgbm90IHN1cHBvcnRlZCBjYXNlc1xuXHRcdC8vIC0gVmFsdWVMaXN0UGFyYW1hdGVySW5PdXQgLyAuLi5PdXQgbXVzdCBub3QgYmUgZW1wdHlcblx0XHQvLyAtIFZhbHVlTGlzdFJlbGV2YW50UXVhbGlmaWVycyBhbm5vdGF0aW9uIG11c3Qgbm90IGJlIHVzZWRcblx0XHQvLyBGdXJ0aGVyIGNhc2VzIG1heSBub3QgbWFrZSBzZW5zZSB3aXRoIHJhZGlvIGJ1dHRvbnMgYnV0IHdlIGRvIG5vdCBleHBsaWNpdGx5IGV4Y2x1ZGUgdGhlbSBidXQgbWVudGlvbiB0aGlzIGluIGRvY3VtZW50YXRpb24uXG5cdFx0Ly8gQ2hlY2sgZG9jdW1lbnRhdGlvbiwgZGlzY3VzcyBhbmQgZGVjaWRlIGJlZm9yZSBhZGRpbmcgZnVydGhlciByZXN0cmljdGlvbnMgaGVyZS5cblx0XHRjb25zdCB2YWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCA9IGZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3Q/LlBhcmFtZXRlcnMuZmluZChcblx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIpID0+XG5cdFx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluT3V0XCIgfHxcblx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlck91dFwiKSAmJlxuXHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkudmFsdWUgPT09IGZpZWxkLnByb3BlcnR5Lm5hbWVcblx0XHQpO1xuXHRcdHJldHVybiAoXG5cdFx0XHRyYWRpb0J1dHRvbkNvbmZpZ3VyZWQgJiZcblx0XHRcdHZhbHVlTGlzdFBhcmFtZXRlckluT3V0ICE9PSB1bmRlZmluZWQgJiZcblx0XHRcdCFmaWVsZC5wcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RSZWxldmFudFF1YWxpZmllcnNcblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIFJhZGlvQnV0dG9uIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgcmFkaW8gYnV0dG9uIGRlZmluaXRpb25cblx0ICovXG5cdGdldFJhZGlvQnV0dG9uVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBmaXhlZFZhbHVlc1BhdGggPSBcIi9cIiArIGZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3Q/LkNvbGxlY3Rpb25QYXRoO1xuXG5cdFx0Y29uc3QgdmFsdWVMaXN0UGFyYW1ldGVySW5PdXQgPSBmaWVsZC5wcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0Py5QYXJhbWV0ZXJzLmZpbmQoXG5cdFx0XHQodmFsdWVMaXN0UGFyYW1ldGVyKSA9PlxuXHRcdFx0XHQodmFsdWVMaXN0UGFyYW1ldGVyLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJJbk91dFwiIHx8XG5cdFx0XHRcdFx0dmFsdWVMaXN0UGFyYW1ldGVyLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJPdXRcIikgJiZcblx0XHRcdFx0dmFsdWVMaXN0UGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5LnZhbHVlID09PSBmaWVsZC5wcm9wZXJ0eS5uYW1lXG5cdFx0KTtcblxuXHRcdC8vIHdlIGtub3cgdGhhdCBhIHZhbHVlTGlzdFByb3BlcnR5IGV4aXN0cyBiZWNhdXNlIHdlIGNoZWNrIHRoaXMgYWxyZWFkeSBpbiBzaG93QXNSYWRpb0J1dHRvblxuXHRcdGNvbnN0IHZhbHVlTGlzdEtleVBhdGggPSBwYXRoSW5Nb2RlbCh2YWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCEuVmFsdWVMaXN0UHJvcGVydHkgYXMgc3RyaW5nKTtcblxuXHRcdGxldCB2YWx1ZUxpc3REZXNjcmlwdGlvblBhdGg7XG5cdFx0Y29uc3QgdmFsdWVIZWxwS2V5VGV4dEFubm90YXRpb25QYXRoID1cblx0XHRcdGZpZWxkLmRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5yZXNvbHZlUGF0aChmaXhlZFZhbHVlc1BhdGgpLmVudGl0eVR5cGUua2V5c1swXS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0Py5wYXRoO1xuXHRcdGlmICh2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGgpIHtcblx0XHRcdHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aCA9IHBhdGhJbk1vZGVsKHZhbHVlSGVscEtleVRleHRBbm5vdGF0aW9uUGF0aCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aCA9IHZhbHVlTGlzdEtleVBhdGg7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxSYWRpb0J1dHRvbnNcblx0XHRcdFx0aWQ9e2ZpZWxkLmVkaXRTdHlsZUlkfVxuXHRcdFx0XHRyZXF1aXJlZEV4cHJlc3Npb249e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwPXtmaWVsZC5ldmVudEhhbmRsZXJzLnZhbGlkYXRlRmllbGRHcm91cCBhcyAob0V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0XHRmaXhlZFZhbHVlc1BhdGg9e2ZpeGVkVmFsdWVzUGF0aCBhcyB1bmtub3duIGFzIGB7JHtzdHJpbmd9fWB9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRlbmFibGVkRXhwcmVzc2lvbj17ZmllbGQuZW5hYmxlZEV4cHJlc3Npb259XG5cdFx0XHRcdHJhZGlvQnV0dG9uVGV4dFByb3BlcnR5PXt2YWx1ZUxpc3REZXNjcmlwdGlvblBhdGh9XG5cdFx0XHRcdHJhZGlvQnV0dG9uS2V5UHJvcGVydHk9e3ZhbHVlTGlzdEtleVBhdGh9XG5cdFx0XHRcdGhvcml6b250YWxMYXlvdXQ9e2ZpZWxkLmZvcm1hdE9wdGlvbnMucmFkaW9CdXR0b25zSG9yaXpvbnRhbExheW91dH1cblx0XHRcdC8+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBJbnB1dFdpdGhWYWx1ZUhlbHAgdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRJbnB1dFdpdGhWYWx1ZUhlbHBUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihcblx0XHRcdGZpZWxkLm1ldGFQYXRoLFxuXHRcdFx0ZmllbGQuY29udGV4dFBhdGhcblx0XHQpO1xuXG5cdFx0Y29uc3QgZGVsZWdhdGUgPSBGaWVsZEhlbHBlci5jb21wdXRlRmllbGRCYXNlRGVsZWdhdGUoXG5cdFx0XHRcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRCYXNlRGVsZWdhdGVcIixcblx0XHRcdGZpZWxkLmZvcm1hdE9wdGlvbnMucmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCBhcyBib29sZWFuXG5cdFx0KTtcblx0XHRjb25zdCBkaXNwbGF5ID0gVUlGb3JtYXR0ZXIuZ2V0RmllbGREaXNwbGF5KFxuXHRcdFx0ZmllbGQucHJvcGVydHksXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLmRpc3BsYXlNb2RlIGFzIHN0cmluZyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHQpO1xuXHRcdGNvbnN0IGhhc011bHRpbGluZUFubm90YXRpb24gPSAhIWZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uVUk/Lk11bHRpTGluZVRleHQ7XG5cdFx0Y29uc3QgbXVsdGlwbGVMaW5lcyA9IGdldE11bHRpcGxlTGluZXNGb3JEYXRhRmllbGQoZmllbGQsIGhhc011bHRpbGluZUFubm90YXRpb24pO1xuXG5cdFx0Y29uc3QgdGV4dEFsaWduID0gZ2V0VGV4dEFsaWdubWVudChcblx0XHRcdGRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLFxuXHRcdFx0ZmllbGQuZWRpdE1vZGVBc09iamVjdCBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0XHRcdHRydWVcblx0XHQpO1xuXHRcdGNvbnN0IGxhYmVsID0gRmllbGRIZWxwZXIuY29tcHV0ZUxhYmVsVGV4dChmaWVsZCBhcyB1bmtub3duIGFzIE1ldGFNb2RlbFR5cGU8RGF0YUZpZWxkVHlwZXM+LCB7XG5cdFx0XHRjb250ZXh0OiBmaWVsZC5tZXRhUGF0aFxuXHRcdH0pO1xuXG5cdFx0bGV0IG9wdGlvbmFsQ29udGVudEVkaXQgPSBcIlwiO1xuXHRcdGlmIChmaWVsZC5wcm9wZXJ0eS50eXBlID09PSBcIkVkbS5TdHJpbmdcIiAmJiBoYXNNdWx0aWxpbmVBbm5vdGF0aW9uKSB7XG5cdFx0XHRvcHRpb25hbENvbnRlbnRFZGl0ID0gKFxuXHRcdFx0XHQ8VGV4dEFyZWFcblx0XHRcdFx0XHR2YWx1ZT17ZmllbGQudmFsdWVCaW5kaW5nRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRyZXF1aXJlZD17ZmllbGQucmVxdWlyZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdHJvd3M9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dExpbmVzRWRpdH1cblx0XHRcdFx0XHRncm93aW5nPXsoZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXMgYXMgdW5rbm93biBhcyBudW1iZXIpID4gMCA/IHRydWUgOiB1bmRlZmluZWR9XG5cdFx0XHRcdFx0Z3Jvd2luZ01heExpbmVzPXtmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRNYXhMaW5lc31cblx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgdW5rbm93biBhcyAob0V2ZW50OiBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0bGV0IG9wdGlvbmFsTGF5b3V0RGF0YSA9IFwiXCI7XG5cdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkID09PSB0cnVlKSB7XG5cdFx0XHRvcHRpb25hbExheW91dERhdGEgPSA8RmxleEl0ZW1EYXRhIGdyb3dGYWN0b3I9XCI5XCIgLz47XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuc2hvd0FzUmFkaW9CdXR0b24oZmllbGQpICE9PSB0cnVlKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8RmllbGRcblx0XHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRcdGRlbGVnYXRlPXtkZWxlZ2F0ZX1cblx0XHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9e2ZpZWxkLmVkaXRTdHlsZVBsYWNlaG9sZGVyfVxuXHRcdFx0XHRcdHZhbHVlU3RhdGU9e2ZpZWxkLnZhbHVlU3RhdGV9XG5cdFx0XHRcdFx0ZWRpdE1vZGU9e2ZpZWxkLmVkaXRNb2RlID8/IGZpZWxkLmNvbXB1dGVkRWRpdE1vZGV9XG5cdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRyZXF1aXJlZD17ZmllbGQucmVxdWlyZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGFkZGl0aW9uYWxWYWx1ZT17ZmllbGQudGV4dEJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGRpc3BsYXk9e2Rpc3BsYXl9XG5cdFx0XHRcdFx0bXVsdGlwbGVMaW5lcz17bXVsdGlwbGVMaW5lcyA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBtdWx0aXBsZUxpbmVzfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17ZmllbGQudmFsdWVIZWxwSWR9XG5cdFx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0XHR0ZXh0QWxpZ249e3RleHRBbGlnbn1cblx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17ZmllbGQuYXJpYUxhYmVsbGVkQnkgYXMgdW5rbm93biBhcyBBcnJheTxDb250cm9sMSB8IHN0cmluZz59XG5cdFx0XHRcdFx0bGFiZWw9e2xhYmVsfVxuXHRcdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogRmllbGQkQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50RWRpdDogb3B0aW9uYWxDb250ZW50RWRpdCxcblx0XHRcdFx0XHRcdGxheW91dERhdGE6IG9wdGlvbmFsTGF5b3V0RGF0YSxcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9GaWVsZD5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFJhZGlvQnV0dG9uVGVtcGxhdGUoZmllbGQpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBDaGVja0JveCB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldENoZWNrQm94VGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBpc0NoZWNrQm94R3JvdXBJdGVtID0gZmllbGQuZm9ybWF0T3B0aW9ucy5pc0ZpZWxkR3JvdXBJdGVtID09PSB0cnVlO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8Q2hlY2tCb3hcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZpZWxkOiAnc2FwL2ZlL21hY3Jvcy9GaWVsZCd9XCJcblx0XHRcdFx0aWQ9e2ZpZWxkLmVkaXRTdHlsZUlkfVxuXHRcdFx0XHRyZXF1aXJlZD17aXNDaGVja0JveEdyb3VwSXRlbSA/IGZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0c2VsZWN0ZWQ9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdGVkaXRhYmxlPXtmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb259XG5cdFx0XHRcdGVuYWJsZWQ9e2ZpZWxkLmVuYWJsZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRmaWVsZEdyb3VwSWRzPXtmaWVsZC5maWVsZEdyb3VwSWRzfVxuXHRcdFx0XHR0ZXh0PXtpc0NoZWNrQm94R3JvdXBJdGVtID8gZmllbGQubGFiZWwgOiB1bmRlZmluZWR9XG5cdFx0XHRcdHdyYXBwaW5nPXtpc0NoZWNrQm94R3JvdXBJdGVtID8gdHJ1ZSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdHNlbGVjdD17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogQ2hlY2tCb3gkU2VsZWN0RXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdD5cblx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdDwvQ2hlY2tCb3g+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBUZXh0QXJlYSB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldFRleHRBcmVhVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBncm93aW5nID0gZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXMgPyB0cnVlIDogZmFsc2U7XG5cblx0XHRjb25zdCBzaG93RXhjZWVkZWRUZXh0ID0gISFmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRNYXhMZW5ndGg7XG5cblx0XHQvL3VuZm9ydHVuYXRlbHkgdGhpcyBvbmUgaXMgYSBcImRpZmZlcmVudFwiIGxheW91dERhdGEgdGhhbiB0aGUgb3RoZXJzLCB0aGVyZWZvcmUgdGhlIHJldXNlIGZ1bmN0aW9uIGZyb20gYWJvdmUgY2Fubm90IGJlIHVzZWQgZm9yIHRoZSB0ZXh0QXJlYSB0ZW1wbGF0ZVxuXHRcdGxldCBsYXlvdXREYXRhID0gXCJcIjtcblx0XHRpZiAoZmllbGQuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGxheW91dERhdGEgPSA8RmxleEl0ZW1EYXRhIGdyb3dGYWN0b3I9XCI5XCIgLz47XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxUZXh0QXJlYUV4XG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cm93cz17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TGluZXNFZGl0fVxuXHRcdFx0XHRncm93aW5nPXtncm93aW5nfVxuXHRcdFx0XHRncm93aW5nTWF4TGluZXM9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dE1heExpbmVzfVxuXHRcdFx0XHRjb2xzPXszMDB9IC8vQXMgdGhlIGRlZmF1bHQgaXMgMjAsIHRoZSBcImNvbHNcIiBwcm9wZXJ0eSBpcyBjb25maWd1cmVkIHdpdGggYSB2YWx1ZSBvZiAzMDAgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIHRleHRhcmVhIHdpbGwgb2NjdXB5IGFsbCB0aGUgYXZhaWxhYmxlIHNwYWNlLlxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRlZGl0YWJsZT17ZmllbGQuZWRpdGFibGVFeHByZXNzaW9ufVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdG1heExlbmd0aD17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGVuZ3RofVxuXHRcdFx0XHRzaG93RXhjZWVkZWRUZXh0PXtzaG93RXhjZWVkZWRUZXh0fVxuXHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogbGF5b3V0RGF0YSxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9UZXh0QXJlYUV4PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgUmF0aW5nSW5kaWNhdG9yIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0UmF0aW5nSW5kaWNhdG9yVGVtcGxhdGU6IChmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcgPT4ge1xuXHRcdGNvbnN0IHRvb2x0aXAgPSBmaWVsZC5yYXRpbmdJbmRpY2F0b3JUb29sdGlwIHx8IFwie3NhcC5mZS5pMThuPlRfQ09NTU9OX1JBVElOR19JTkRJQ0FUT1JfVElUTEVfTEFCRUx9XCI7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFJhdGluZ0luZGljYXRvclxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdG1heFZhbHVlPXtmaWVsZC5yYXRpbmdJbmRpY2F0b3JUYXJnZXRWYWx1ZX1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHRvb2x0aXA9e3Rvb2x0aXB9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdGljb25TaXplPVwiMS4zNzVyZW1cIlxuXHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpblRvcEJvdHRvbVwiXG5cdFx0XHRcdGVkaXRhYmxlPVwidHJ1ZVwiXG5cdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogUmF0aW5nSW5kaWNhdG9yJENoYW5nZUV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGxheW91dERhdGE6IEVkaXRTdHlsZS5nZXRMYXlvdXREYXRhKGZpZWxkKVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9SYXRpbmdJbmRpY2F0b3I+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogSGVscHMgdG8gY2FsY3VsYXRlIHRoZSBjb250ZW50IGVkaXQgZnVuY3Rpb25hbGl0eSAvIHRlbXBsYXRpbmcuXG5cdCAqIEluY2x1ZGluZyBhIHdyYXBwZXIgYW4gaGJveCBpbiBjYXNlIG9mIGNvbGxhYm9yYXRpb24gbW9kZSBmaW5hbGx5XG5cdCAqIGl0IGNhbGxzIGludGVybmFsbHkgRWRpdFN0eWxlLmdldFRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0VGVtcGxhdGVXaXRoV3JhcHBlcihmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGxldCBjb250ZW50RWRpdDtcblxuXHRcdGlmICgoZmllbGQuZWRpdE1vZGUgPz8gZmllbGQuY29tcHV0ZWRFZGl0TW9kZSkgIT09IEZpZWxkRWRpdE1vZGUuRGlzcGxheSAmJiAhIWZpZWxkLmVkaXRTdHlsZSkge1xuXHRcdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkID8/IGZhbHNlKSB7XG5cdFx0XHRcdGNvbnRlbnRFZGl0ID0gKFxuXHRcdFx0XHRcdDxDb2xsYWJvcmF0aW9uSEJveCB3aWR0aD1cIjEwMCVcIiBhbGlnbkl0ZW1zPVwiRW5kXCI+XG5cdFx0XHRcdFx0XHR7RWRpdFN0eWxlLmdldFRlbXBsYXRlKGZpZWxkKX1cblx0XHRcdFx0XHRcdHtFZGl0U3R5bGUuZ2V0Q29sbGFib3JhdGlvbkF2YXRhcihmaWVsZCl9XG5cdFx0XHRcdFx0PC9Db2xsYWJvcmF0aW9uSEJveD5cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnRlbnRFZGl0ID0gRWRpdFN0eWxlLmdldFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29udGVudEVkaXQgfHwgXCJcIjtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBJbnB1dE1hc2sgdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRJbnB1dE1hc2tUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG9wdGlvbmFsTWFza0lucHV0UnVsZXMgPSBbXTtcblx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRUeXBlcz4oZmllbGQubWV0YVBhdGgsIGZpZWxkLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCB0ZXh0QWxpZ24gPSBnZXRUZXh0QWxpZ25tZW50KFxuXHRcdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdGZpZWxkLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRmaWVsZC5lZGl0TW9kZUFzT2JqZWN0IGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+XG5cdFx0KTtcblx0XHRpZiAoZmllbGQubWFzaz8ubWFza1J1bGUpIHtcblx0XHRcdGZvciAoY29uc3QgcnVsZSBvZiBmaWVsZC5tYXNrLm1hc2tSdWxlKSB7XG5cdFx0XHRcdG9wdGlvbmFsTWFza0lucHV0UnVsZXMucHVzaCg8TWFza0lucHV0UnVsZSBtYXNrRm9ybWF0U3ltYm9sPXtydWxlLnN5bWJvbH0gcmVnZXg9e3J1bGUucmVnZXh9IC8+KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1hc2tJbnB1dFxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRwbGFjZWhvbGRlcj17ZmllbGQuZWRpdFN0eWxlUGxhY2Vob2xkZXJ9XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdGVkaXRhYmxlPXtmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb259XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+fVxuXHRcdFx0XHRtYXNrPXtmaWVsZC5tYXNrPy5tYXNrfVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0dGV4dEFsaWduPXt0ZXh0QWxpZ259XG5cdFx0XHRcdHBsYWNlaG9sZGVyU3ltYm9sPXtmaWVsZC5tYXNrPy5wbGFjZWhvbGRlclN5bWJvbH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlIGFzIChvRXZlbnQ6IE1hc2tJbnB1dCRMaXZlQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRydWxlczogb3B0aW9uYWxNYXNrSW5wdXRSdWxlcyxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9NYXNrSW5wdXQ+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogRW50cnkgcG9pbnQgZm9yIGZ1cnRoZXIgdGVtcGxhdGluZyBwcm9jZXNzaW5ncy5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldFRlbXBsYXRlOiAoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0XHRsZXQgaW5uZXJGaWVsZENvbnRlbnQ7XG5cdFx0c3dpdGNoIChmaWVsZC5lZGl0U3R5bGUpIHtcblx0XHRcdGNhc2UgXCJDaGVja0JveFwiOlxuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRDaGVja0JveFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRGF0ZVBpY2tlclwiOlxuXHRcdFx0Y2FzZSBcIkRhdGVUaW1lUGlja2VyXCI6XG5cdFx0XHRjYXNlIFwiVGltZVBpY2tlclwiOiB7XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldERhdGVUaW1lUGlja2VyR2VuZXJpYyhmaWVsZCwgZmllbGQuZWRpdFN0eWxlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiSW5wdXRcIjoge1xuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRJbnB1dFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiTWFza2VkXCI6IHtcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0SW5wdXRUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcIklucHV0V2l0aFZhbHVlSGVscFwiOiB7XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldElucHV0V2l0aFZhbHVlSGVscFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiUmF0aW5nSW5kaWNhdG9yXCI6XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldFJhdGluZ0luZGljYXRvclRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVGV4dEFyZWFcIjpcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0VGV4dEFyZWFUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIklucHV0TWFza1wiOlxuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRJbnB1dE1hc2tUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHR9XG5cblx0XHRyZXR1cm4gaW5uZXJGaWVsZENvbnRlbnQ7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRTdHlsZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0VBcUNBLE1BQU1BLFNBQVMsR0FBRztJQUNqQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLGFBQWFBLENBQUNDLEtBQTJCLEVBQVU7TUFDbEQsSUFBSUMsVUFBVSxHQUFHLEVBQUU7TUFDbkIsSUFBSUQsS0FBSyxDQUFD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
|
|
@@ -366,14 +366,18 @@ const EditStyle = {
|
|
|
366
366
|
* @returns An XML-based string with the definition of the field control
|
|
367
367
|
*/
|
|
368
368
|
getCheckBoxTemplate(field: FieldBlockProperties): string {
|
|
369
|
+
const isCheckBoxGroupItem = field.formatOptions.isFieldGroupItem === true;
|
|
369
370
|
return (
|
|
370
371
|
<CheckBox
|
|
371
372
|
core:require="{Field: 'sap/fe/macros/Field'}"
|
|
372
373
|
id={field.editStyleId}
|
|
374
|
+
required={isCheckBoxGroupItem ? field.requiredExpression : undefined}
|
|
373
375
|
selected={field.valueBindingExpression}
|
|
374
376
|
editable={field.editableExpression}
|
|
375
377
|
enabled={field.enabledExpression}
|
|
376
378
|
fieldGroupIds={field.fieldGroupIds}
|
|
379
|
+
text={isCheckBoxGroupItem ? field.label : undefined}
|
|
380
|
+
wrapping={isCheckBoxGroupItem ? true : undefined}
|
|
377
381
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
378
382
|
select={field.eventHandlers.change as (oEvent: CheckBox$SelectEvent) => void}
|
|
379
383
|
validateFieldGroup={field.eventHandlers.validateFieldGroup as (oEvent: Control$ValidateFieldGroupEvent) => void}
|