@sapui5/sap.fe.macros 1.140.0 → 1.141.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/Chart.js +53 -2
- package/src/sap/fe/macros/Chart.tsx +55 -0
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +230 -0
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +218 -0
- package/src/sap/fe/macros/CommonHelper.js +59 -15
- package/src/sap/fe/macros/CommonHelper.ts +65 -14
- package/src/sap/fe/macros/ConditionalSwitch.js +174 -0
- package/src/sap/fe/macros/ConditionalSwitch.tsx +141 -0
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +78 -0
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +62 -0
- package/src/sap/fe/macros/Field.js +14 -10
- package/src/sap/fe/macros/Field.ts +15 -12
- package/src/sap/fe/macros/MacroAPI.js +9 -4
- package/src/sap/fe/macros/MacroAPI.ts +9 -4
- package/src/sap/fe/macros/MultiValueField.js +10 -5
- package/src/sap/fe/macros/MultiValueField.tsx +7 -1
- package/src/sap/fe/macros/Page.js +5 -7
- package/src/sap/fe/macros/Page.tsx +4 -6
- package/src/sap/fe/macros/Paginator.js +9 -4
- package/src/sap/fe/macros/Paginator.tsx +12 -3
- package/src/sap/fe/macros/RichTextEditor.js +3 -2
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -1
- package/src/sap/fe/macros/Status.js +38 -13
- package/src/sap/fe/macros/Status.tsx +26 -6
- package/src/sap/fe/macros/ai/EasyFillDialog.js +11 -17
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +11 -16
- package/src/sap/fe/macros/ai/EasyFilterBar.js +195 -55
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +234 -57
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +76 -33
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +89 -40
- package/src/sap/fe/macros/chart/Chart.js +2 -2
- package/src/sap/fe/macros/chart/Chart.tsx +1 -1
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +4 -2
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +4 -1
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.js +9 -2
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.tsx +8 -0
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +2 -2
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +1 -1
- package/src/sap/fe/macros/controls/FilterBar.js +14 -5
- package/src/sap/fe/macros/controls/FilterBar.ts +3 -0
- package/src/sap/fe/macros/controls/RadioButtons.js +61 -38
- package/src/sap/fe/macros/controls/RadioButtons.tsx +39 -18
- package/src/sap/fe/macros/controls/Section.js +4 -3
- package/src/sap/fe/macros/controls/Section.ts +3 -2
- package/src/sap/fe/macros/controls/section/SubSection.js +63 -8
- package/src/sap/fe/macros/controls/section/SubSection.ts +67 -1
- package/src/sap/fe/macros/field/Field.js +2 -2
- package/src/sap/fe/macros/field/Field.tsx +1 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +25 -2
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +13 -0
- package/src/sap/fe/macros/field/FieldHelper.js +2 -2
- package/src/sap/fe/macros/field/FieldHelper.ts +1 -4
- package/src/sap/fe/macros/field/FieldTemplating.js +3 -3
- package/src/sap/fe/macros/field/FieldTemplating.ts +4 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +232 -2
- package/src/sap/fe/macros/filter/FilterUtils.ts +290 -4
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +4 -2
- package/src/sap/fe/macros/filterBar/FilterBar.js +2 -2
- package/src/sap/fe/macros/filterBar/FilterBar.tsx +1 -1
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +63 -27
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +49 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +7 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +6 -1
- package/src/sap/fe/macros/form/Form.block.js +7 -8
- package/src/sap/fe/macros/form/Form.block.ts +4 -6
- package/src/sap/fe/macros/form/FormContainer.block.js +555 -4
- package/src/sap/fe/macros/form/FormContainer.block.ts +665 -6
- package/src/sap/fe/macros/form/FormContainer.fragment.xml +1 -0
- package/src/sap/fe/macros/form/FormDelegate.js +6 -9
- package/src/sap/fe/macros/form/FormDelegate.ts +5 -8
- package/src/sap/fe/macros/internal/DataPoint.js +3 -2
- package/src/sap/fe/macros/internal/DataPoint.tsx +10 -1
- package/src/sap/fe/macros/internal/FilterField.block.js +16 -8
- package/src/sap/fe/macros/internal/FilterField.block.ts +11 -7
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +7 -1
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +8 -0
- package/src/sap/fe/macros/internal/field/EditStyle.js +21 -4
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +18 -4
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +3 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +4 -1
- package/src/sap/fe/macros/internal/filterField/FilterFieldTemplate.fragment.xml +1 -0
- package/src/sap/fe/macros/internal/helpers/ActionHelper.js +36 -5
- package/src/sap/fe/macros/internal/helpers/ActionHelper.ts +34 -4
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.js +2 -1
- package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.ts +1 -0
- package/src/sap/fe/macros/messagebundle.properties +20 -2
- package/src/sap/fe/macros/messagebundle_ar.properties +1 -1
- package/src/sap/fe/macros/messagebundle_bg.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ca.properties +1 -1
- package/src/sap/fe/macros/messagebundle_cnr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_cs.properties +1 -1
- package/src/sap/fe/macros/messagebundle_cy.properties +1 -1
- package/src/sap/fe/macros/messagebundle_da.properties +1 -1
- package/src/sap/fe/macros/messagebundle_de.properties +4 -4
- package/src/sap/fe/macros/messagebundle_el.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +1 -1
- package/src/sap/fe/macros/messagebundle_es.properties +2 -2
- package/src/sap/fe/macros/messagebundle_es_MX.properties +1 -1
- package/src/sap/fe/macros/messagebundle_et.properties +1 -1
- package/src/sap/fe/macros/messagebundle_fi.properties +1 -1
- package/src/sap/fe/macros/messagebundle_fr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +1 -1
- package/src/sap/fe/macros/messagebundle_hi.properties +1 -1
- package/src/sap/fe/macros/messagebundle_hr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_hu.properties +1 -1
- package/src/sap/fe/macros/messagebundle_id.properties +5 -5
- package/src/sap/fe/macros/messagebundle_it.properties +1 -1
- package/src/sap/fe/macros/messagebundle_iw.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ja.properties +5 -5
- package/src/sap/fe/macros/messagebundle_kk.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ko.properties +2 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +2 -2
- package/src/sap/fe/macros/messagebundle_lv.properties +1 -1
- package/src/sap/fe/macros/messagebundle_mk.properties +2 -2
- package/src/sap/fe/macros/messagebundle_ms.properties +1 -1
- package/src/sap/fe/macros/messagebundle_nl.properties +1 -1
- package/src/sap/fe/macros/messagebundle_no.properties +1 -1
- package/src/sap/fe/macros/messagebundle_pl.properties +1 -1
- package/src/sap/fe/macros/messagebundle_pt.properties +1 -1
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ro.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ru.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sh.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sk.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sl.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sv.properties +1 -1
- package/src/sap/fe/macros/messagebundle_th.properties +1 -1
- package/src/sap/fe/macros/messagebundle_tr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_uk.properties +1 -1
- package/src/sap/fe/macros/messagebundle_vi.properties +2 -2
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +1 -1
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +1 -1
- package/src/sap/fe/macros/messages/MessageButton.js +1 -1
- package/src/sap/fe/macros/messages/MessageButton.ts +2 -2
- package/src/sap/fe/macros/messages/MessagePopover.js +3 -1
- package/src/sap/fe/macros/messages/MessagePopover.ts +2 -0
- package/src/sap/fe/macros/microchart/MicroChart.js +2 -2
- package/src/sap/fe/macros/microchart/MicroChart.tsx +1 -1
- package/src/sap/fe/macros/microchart/MicroChartHelper.js +2 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +1 -1
- package/src/sap/fe/macros/table/ActionsTemplating.js +4 -8
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +5 -8
- package/src/sap/fe/macros/table/BasicSearch.js +1 -1
- package/src/sap/fe/macros/table/BasicSearch.ts +2 -1
- package/src/sap/fe/macros/table/Column.js +14 -2
- package/src/sap/fe/macros/table/Column.ts +7 -0
- package/src/sap/fe/macros/table/ColumnExportSettings.js +83 -15
- package/src/sap/fe/macros/table/ColumnExportSettings.ts +44 -0
- package/src/sap/fe/macros/table/ColumnOverride.js +14 -2
- package/src/sap/fe/macros/table/ColumnOverride.ts +7 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +5 -5
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +15 -9
- package/src/sap/fe/macros/table/QuickFilterSelector.js +12 -3
- package/src/sap/fe/macros/table/QuickFilterSelector.tsx +15 -2
- package/src/sap/fe/macros/table/Table.block.js +188 -147
- package/src/sap/fe/macros/table/Table.block.tsx +41 -11
- package/src/sap/fe/macros/table/Table.js +16 -10
- package/src/sap/fe/macros/table/Table.tsx +16 -10
- package/src/sap/fe/macros/table/TableAPI.js +224 -184
- package/src/sap/fe/macros/table/TableAPI.ts +63 -19
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -6
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +5 -4
- package/src/sap/fe/macros/table/TableHelper.js +2 -2
- package/src/sap/fe/macros/table/TableHelper.ts +1 -1
- package/src/sap/fe/macros/table/TreeTable.js +16 -10
- package/src/sap/fe/macros/table/TreeTable.tsx +16 -10
- package/src/sap/fe/macros/table/Utils.js +3 -2
- package/src/sap/fe/macros/table/Utils.ts +7 -2
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +69 -33
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +75 -32
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +14 -12
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +11 -10
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +34 -4
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +45 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +55 -12
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +71 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +53 -2
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +55 -0
- package/src/sap/fe/macros/table/mixin/TableExport.js +22 -3
- package/src/sap/fe/macros/table/mixin/TableExport.ts +25 -4
- package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
- package/src/sap/fe/macros/table/mixin/TableSharing.ts +4 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +27 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +31 -13
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +5 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +3 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildingBlocks/templating/BuildingBlockSupport", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/ListReport/FilterField", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/PropertyFormatters", "sap/fe/core/templating/PropertyHelper", "sap/fe/core/templating/UIFormatters", "sap/fe/macros/CommonHelper", "sap/fe/macros/field/FieldHelper", "sap/fe/macros/filter/FilterFieldHelper", "sap/fe/macros/filter/FilterFieldTemplating", "sap/fe/macros/filterBar/ExtendedSemanticDateOperators"], function (Log, BindingToolkit, BuildingBlockSupport, BuildingBlockTemplateProcessor, BuildingBlockTemplatingBase, MetaModelConverter, FilterField, StableIdHelper, DataModelPathHelper, PropertyFormatters, PropertyHelper, UIFormatters, CommonHelper, FieldHelper, FilterFieldHelper, FilterFieldTemplating, ExtendedSemanticDateOperators) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;
|
|
8
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9;
|
|
9
9
|
var _exports = {};
|
|
10
10
|
var getFilterFieldDisplayFormat = FilterFieldTemplating.getFilterFieldDisplayFormat;
|
|
11
11
|
var isRequiredInFilter = FilterFieldHelper.isRequiredInFilter;
|
|
@@ -75,6 +75,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
|
|
|
75
75
|
}), _dec9 = blockAttribute({
|
|
76
76
|
type: "string",
|
|
77
77
|
isPublic: false
|
|
78
|
+
}), _dec10 = blockAttribute({
|
|
79
|
+
type: "string",
|
|
80
|
+
isPublic: false
|
|
78
81
|
}), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlockTemplat) {
|
|
79
82
|
/***********************************************
|
|
80
83
|
* INTERNAL ATTRIBUTES *
|
|
@@ -100,10 +103,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
|
|
|
100
103
|
* Tooltip content from @Common.QuickInfo annotation
|
|
101
104
|
*/
|
|
102
105
|
|
|
103
|
-
/**
|
|
104
|
-
* Label for filterfield.
|
|
105
|
-
*/
|
|
106
|
-
|
|
107
106
|
/**
|
|
108
107
|
* Data Type of the filter field.
|
|
109
108
|
*/
|
|
@@ -195,6 +194,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
|
|
|
195
194
|
* Speficies the enablement of the filter field.
|
|
196
195
|
*/
|
|
197
196
|
_initializerDefineProperty(_this, "editMode", _descriptor8, _this);
|
|
197
|
+
/**
|
|
198
|
+
* Label for filterfield.
|
|
199
|
+
*/
|
|
200
|
+
_initializerDefineProperty(_this, "label", _descriptor9, _this);
|
|
198
201
|
const propertyConverted = MetaModelConverter.convertMetaModelContext(_this.property);
|
|
199
202
|
const externalIdPropertyPath = getAssociatedExternalIdPropertyPath(propertyConverted);
|
|
200
203
|
if (externalIdPropertyPath) {
|
|
@@ -212,7 +215,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
|
|
|
212
215
|
_this.documentRefText = dataModelPath.targetObject?.annotations.Common?.DocumentationRef?.toString();
|
|
213
216
|
_this.tooltip = propertyConverted?.annotations?.Common?.QuickInfo?.toString();
|
|
214
217
|
_this.dataType = getDataType(propertyConvertedExternalId || propertyConverted); // data type for LR-FilterBar condition of the value help
|
|
215
|
-
const labelTerm = propertyConverted?.annotations?.Common?.Label;
|
|
218
|
+
const labelTerm = _this.label ? _this.label : propertyConverted?.annotations?.Common?.Label;
|
|
216
219
|
const labelExpression = labelTerm?.toString() ?? constant(propertyName);
|
|
217
220
|
_this.label = compileExpression(labelExpression) || propertyName;
|
|
218
221
|
_this.conditionsBinding = getConditionsBinding(dataModelPath) || "";
|
|
@@ -315,7 +318,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
|
|
|
315
318
|
if (this.isFilterable) {
|
|
316
319
|
let display;
|
|
317
320
|
const companionTextAvailable = this.documentRefText === undefined || null ? false : true;
|
|
318
|
-
const formattedResult = compileExpression(formatResult([this.documentRefText], "
|
|
321
|
+
const formattedResult = compileExpression(formatResult([this.documentRefText], "._formatters.StandardFormatter#asArray"));
|
|
319
322
|
try {
|
|
320
323
|
const dataModelPathExternalId = this.propertyExternalId && MetaModelConverter.getInvolvedDataModelObjects(this.propertyExternalId, this.contextPath);
|
|
321
324
|
display = dataModelPathExternalId ? getDisplayMode(dataModelPathExternalId) : await this.display;
|
|
@@ -409,8 +412,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/buildi
|
|
|
409
412
|
enumerable: true,
|
|
410
413
|
writable: true,
|
|
411
414
|
initializer: null
|
|
415
|
+
}), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, "label", [_dec10], {
|
|
416
|
+
configurable: true,
|
|
417
|
+
enumerable: true,
|
|
418
|
+
writable: true,
|
|
419
|
+
initializer: null
|
|
412
420
|
}), _class2)) || _class);
|
|
413
421
|
_exports = FilterFieldBlock;
|
|
414
422
|
return _exports;
|
|
415
423
|
}, false);
|
|
416
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWx0ZXJGaWVsZEJsb2NrIiwiX2RlYyIsImRlZmluZUJ1aWxkaW5nQmxvY2siLCJuYW1lIiwibmFtZXNwYWNlIiwiX2RlYzIiLCJibG9ja0F0dHJpYnV0ZSIsInR5cGUiLCJyZXF1aXJlZCIsImlzUHVibGljIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2tUZW1wbGF0IiwicHJvcHMiLCJjb25maWd1cmF0aW9uIiwic2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwicHJvcGVydHlDb252ZXJ0ZWQiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsInByb3BlcnR5IiwiZXh0ZXJuYWxJZFByb3BlcnR5UGF0aCIsImdldEFzc29jaWF0ZWRFeHRlcm5hbElkUHJvcGVydHlQYXRoIiwicHJvcGVydHlFeHRlcm5hbElkIiwiZ2V0TW9kZWwiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJyZXBsYWNlIiwicHJvcGVydHlDb252ZXJ0ZWRFeHRlcm5hbElkIiwidW5kZWZpbmVkIiwiZGF0YU1vZGVsUGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImNvbnRleHRQYXRoIiwicHJvcGVydHlOYW1lIiwib3JpZ2luYWxQcm9wZXJ0eU5hbWUiLCJmaXhlZFZhbHVlcyIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiY29udHJvbElkIiwiaWRQcmVmaXgiLCJnZW5lcmF0ZSIsInNvdXJjZVBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiZG9jdW1lbnRSZWZUZXh0IiwidGFyZ2V0T2JqZWN0IiwiRG9jdW1lbnRhdGlvblJlZiIsInRvU3RyaW5nIiwidG9vbHRpcCIsIlF1aWNrSW5mbyIsImRhdGFUeXBlIiwiZ2V0RGF0YVR5cGUiLCJsYWJlbFRlcm0iLCJMYWJlbCIsImxhYmVsRXhwcmVzc2lvbiIsImNvbnN0YW50IiwibGFiZWwiLCJjb21waWxlRXhwcmVzc2lvbiIsImNvbmRpdGlvbnNCaW5kaW5nIiwiZ2V0Q29uZGl0aW9uc0JpbmRpbmciLCJwbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicHJvcGVydHlLZXkiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwidmZFbmFibGVkIiwidmlzdWFsRmlsdGVyIiwiaW5jbHVkZXMiLCJ2ZklkIiwidmZSdW50aW1lSWQiLCJwcm9wZXJ0eUNvbnRleHQiLCJtb2RlbCIsInZoUHJvcGVydHlQYXRoIiwiRmllbGRIZWxwZXIiLCJ2YWx1ZUhlbHBQcm9wZXJ0eUZvckZpbHRlckZpZWxkIiwiZmlsdGVyYWJsZSIsIkNvbW1vbkhlbHBlciIsImlzUHJvcGVydHlGaWx0ZXJhYmxlIiwicHJvcGVydHlPYmplY3QiLCJnZXRPYmplY3QiLCJwcm9wZXJ0eUludGVyZmFjZSIsImNvbnRleHQiLCJkaXNwbGF5IiwiZ2V0RmlsdGVyRmllbGREaXNwbGF5Rm9ybWF0IiwiaXNGaWx0ZXJhYmxlIiwibWF4Q29uZGl0aW9ucyIsImdldE1heENvbmRpdGlvbnMiLCJkYXRhVHlwZUNvbnN0cmFpbnRzIiwiY29uc3RyYWludHMiLCJkYXRhVHlwZUZvcm1hdE9wdGlvbnMiLCJmb3JtYXRPcHRpb25zIiwiaXNSZXF1aXJlZEluRmlsdGVyIiwib3BlcmF0b3JzIiwidXNlU2VtYW50aWNEYXRlUmFuZ2UiLCJFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImFkZEV4dGVuZGVkRmlsdGVyT3BlcmF0b3JzIiwic3BsaXQiLCJ2aFByb3BlcnR5IiwidmhQcm9wZXJ0eU9iamVjdCIsInZoUHJvcGVydHlJbnRlcmZhY2UiLCJyZWxhdGl2ZVZoUHJvcGVydHlQYXRoIiwiZ2V0UmVsYXRpdmVQcm9wZXJ0eVBhdGgiLCJyZWxhdGl2ZVByb3BlcnR5UGF0aCIsInZhbHVlSGVscFByb3BlcnR5IiwiZ2V0VmFsdWVIZWxwUHJvcGVydHlGb3JGaWx0ZXJGaWVsZCIsIiRUeXBlIiwidmhJZFByZWZpeCIsInRhcmdldEVudGl0eVR5cGUiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0VmlzdWFsRmlsdGVyQ29udGVudCIsInZpc3VhbEZpbHRlck9iamVjdCIsInZmWE1MIiwiaXNBIiwiU0FQX1VJX01PREVMX0NPTlRFWFQiLCJwcmVzZW50YXRpb25Bbm5vdGF0aW9uIiwib3V0UGFyYW1ldGVyIiwiaW5QYXJhbWV0ZXJzIiwidmFsdWVsaXN0UHJvcGVydHkiLCJzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiIsIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCIsInJlcXVpcmVkUHJvcGVydGllcyIsInNob3dPdmVybGF5SW5pdGlhbGx5IiwicmVuZGVyTGluZUNoYXJ0IiwiaXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMiLCJpbml0aWFsQ2hhcnRCaW5kaW5nRW5hYmxlZCIsInhtbCIsInN0cmluZ2lmeUN1c3RvbURhdGEiLCJnZXRUZW1wbGF0ZSIsInhtbFJldCIsImNvbXBhbmlvblRleHRBdmFpbGFibGUiLCJmb3JtYXR0ZWRSZXN1bHQiLCJmb3JtYXRSZXN1bHQiLCJkYXRhTW9kZWxQYXRoRXh0ZXJuYWxJZCIsImdldERpc3BsYXlNb2RlIiwiZXJyIiwiTG9nIiwiZXJyb3IiLCJhdHRyIiwiZWRpdE1vZGUiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbHRlckZpZWxkLmJsb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vbl9FZG1cIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBmb3JtYXRSZXN1bHQgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYmxvY2tBdHRyaWJ1dGUsIGRlZmluZUJ1aWxkaW5nQmxvY2sgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgeyBTQVBfVUlfTU9ERUxfQ09OVEVYVCwgeG1sIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZVwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0TWF4Q29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvRmlsdGVyRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgVmlzdWFsRmlsdGVycyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvVmlzdWFsRmlsdGVyc1wiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0dHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldFJlbGF0aXZlUHJvcGVydHlQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgeyBnZXRBc3NvY2lhdGVkRXh0ZXJuYWxJZFByb3BlcnR5UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgeyBnZXREaXNwbGF5TW9kZSwgdHlwZSBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2UsIHR5cGUgTWV0YU1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBGaWVsZEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Y29uc3RyYWludHMsXG5cdGZvcm1hdE9wdGlvbnMsXG5cdGdldENvbmRpdGlvbnNCaW5kaW5nLFxuXHRnZXREYXRhVHlwZSxcblx0Z2V0UGxhY2Vob2xkZXIsXG5cdGlzUmVxdWlyZWRJbkZpbHRlclxufSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyRmllbGRIZWxwZXJcIjtcbmltcG9ydCB7IGdldEZpbHRlckZpZWxkRGlzcGxheUZvcm1hdCB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJGaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCBFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9NZXRhTW9kZWxcIjtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBGaWx0ZXIgRmllbGQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogSXQgaXMgZGVzaWduZWQgdG8gd29yayBiYXNlZCBvbiBhIHByb3BlcnR5IGNvbnRleHQocHJvcGVydHkpIHBvaW50aW5nIHRvIGFuIGVudGl0eSB0eXBlIHByb3BlcnR5XG4gKiBuZWVkZWQgdG8gYmUgdXNlZCBhcyBmaWx0ZXJmaWVsZCBhbmQgZW50aXR5VHlwZSBjb250ZXh0KGNvbnRleHRQYXRoKSB0byBjb25zaWRlciB0aGUgcmVsYXRpdml0eSBvZlxuICogdGhlIHByb3BlcnR5UGF0aCBvZiB0aGUgcHJvcGVydHkgd3J0IGVudGl0eVR5cGUuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOkZpbHRlckZpZWxkIGlkPVwiTXlGaWx0ZXJGaWVsZFwiIHByb3BlcnR5PVwiQ29tcGFueU5hbWVcIiAvJmd0O1xuICogPC9wcmU+XG4gKiBAcHJpdmF0ZVxuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiRmlsdGVyRmllbGRcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlckZpZWxkQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2Uge1xuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbWV0YWRhdGEgcGF0aCB0byB0aGUgcHJvcGVydHkuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRwcm9wZXJ0eSE6IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eVNldCBvciBuYXZpZ2F0aW9uUHJvcGVydHlcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGNvbnRleHRQYXRoITogQ29udGV4dDtcblxuXHQvKipcblx0ICogVmlzdWFsIGZpbHRlciBzZXR0aW5ncyBmb3IgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0dmlzdWFsRmlsdGVyPzogQ29udGV4dCB8IFZpc3VhbEZpbHRlcnM7XG5cblx0LyoqXG5cdCAqIEEgcHJlZml4IHRoYXQgaXMgYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBJRCBvZiB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGlkUHJlZml4ID0gXCJGaWx0ZXJGaWVsZFwiO1xuXG5cdC8qKlxuXHQgKiBBIHByZWZpeCB0aGF0IGlzIGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIHZhbHVlIGhlbHAgdXNlZCBmb3IgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHR2aElkUHJlZml4ID0gXCJGaWx0ZXJGaWVsZFZhbHVlSGVscFwiO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIFNlbWF0aWMgRGF0ZSBSYW5nZSBvcHRpb24gZm9yIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdHVzZVNlbWFudGljRGF0ZVJhbmdlID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU2V0dGluZ3MgZnJvbSB0aGUgbWFuaWZlc3QuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0c2V0dGluZ3MgPSBcIlwiO1xuXG5cdC8qKlxuXHQgKiBTcGVmaWNpZXMgdGhlIGVuYWJsZW1lbnQgb2YgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogZmFsc2Vcblx0fSlcblx0ZWRpdE1vZGU/OiBzdHJpbmc7XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdCAqICAgICAgICAgICAgSU5URVJOQUwgQVRUUklCVVRFUyAgICAgICAgICAgICAgKlxuXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHQvKipcblx0ICogQ29udHJvbCBJZCBmb3IgTURDIGZpbHRlciBmaWVsZCB1c2VkIGluc2lkZS5cblx0ICovXG5cdGNvbnRyb2xJZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkga2V5IGZvciBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRwcm9wZXJ0eUtleSE6IHN0cmluZztcblxuXHQvKipcblx0ICogU291cmNlIGFubm90YXRpb24gcGF0aCBvZiB0aGUgcHJvcGVydHkuXG5cdCAqL1xuXHRzb3VyY2VQYXRoITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTb3VyY2UgYW5ub3RhdGlvbiBwYXRoIG9mIHRoZSBwcm9wZXJ0eS5cblx0ICovXG5cdGRvY3VtZW50UmVmVGV4dD86IHN0cmluZztcblxuXHQvKipcblx0ICogVG9vbHRpcCBjb250ZW50IGZyb20gQENvbW1vbi5RdWlja0luZm8gYW5ub3RhdGlvblxuXHQgKi9cblx0dG9vbHRpcD86IHN0cmluZztcblxuXHQvKipcblx0ICogTGFiZWwgZm9yIGZpbHRlcmZpZWxkLlxuXHQgKi9cblx0bGFiZWwhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERhdGEgVHlwZSBvZiB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0ZGF0YVR5cGUhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1heGltdW0gY29uZGl0aW9ucyB0aGF0IGNhbiBiZSBhZGRlZCB0byB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0bWF4Q29uZGl0aW9ucyE6IG51bWJlcjtcblxuXHQvKipcblx0ICogVmFsdWUgSGVscCBpZCBhcyBhc3NvY2lhdGlvbiBmb3IgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdHZhbHVlSGVscFByb3BlcnR5Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBCaW5kaW5nIHBhdGggZm9yIGNvbmRpdGlvbnMgYWRkZWQgdG8gZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0Y29uZGl0aW9uc0JpbmRpbmchOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERhdGF0eXBlIGNvbnN0cmFpbnRzIG9mIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRkYXRhVHlwZUNvbnN0cmFpbnRzPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEYXRhdHlwZSBmb3JtYXQgb3B0aW9ucyBvZiB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0ZGF0YVR5cGVGb3JtYXRPcHRpb25zPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUbyBzcGVjaWZ5IGZpbHRlciBmaWVsZCBpcyBtYW5kYXRvcnkgZm9yIGZpbHRlcmluZy5cblx0ICovXG5cdHJlcXVpcmVkITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogVmFsaWQgb3BlcmF0b3JzIGZvciB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0b3BlcmF0b3JzPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBWaXN1YWwgRmlsdGVyIGlkIHRvIGJlIHVzZWQuXG5cdCAqL1xuXHR2ZklkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBWaXN1YWwgRmlsdGVyIGJ1aWxkaW5nIGJsb2NrIGlkIHRvIGJlIHVzZWQuXG5cdCAqL1xuXHR2ZlJ1bnRpbWVJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogVmlzdWFsIEZpbHRlciBpcyBleHBlY3RlZC5cblx0ICovXG5cdHZmRW5hYmxlZCE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIFByb3BlcnR5IHVzZWQgaXMgZmlsdGVyYWJsZVxuXHQgKi9cblx0aXNGaWx0ZXJhYmxlITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogUHJvcGVydHkgZm9yIHBsYWNlaG9sZGVyXG5cdCAqL1xuXHRwbGFjZWhvbGRlcj86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkgdG8gaG9sZCBwcm9taXNlIGZvciBkaXNwbGF5XG5cdCAqL1xuXHRkaXNwbGF5PzogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuXG5cdHByb3BlcnR5RXh0ZXJuYWxJZD86IENvbnRleHQ7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxGaWx0ZXJGaWVsZEJsb2NrPiwgY29uZmlndXJhdGlvbjogdW5rbm93biwgc2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29uZmlndXJhdGlvbiwgc2V0dGluZ3MpO1xuXG5cdFx0Y29uc3QgcHJvcGVydHlDb252ZXJ0ZWQgPSBNZXRhTW9kZWxDb252ZXJ0ZXIuY29udmVydE1ldGFNb2RlbENvbnRleHQodGhpcy5wcm9wZXJ0eSkgYXMgUHJvcGVydHk7XG5cblx0XHRjb25zdCBleHRlcm5hbElkUHJvcGVydHlQYXRoID0gZ2V0QXNzb2NpYXRlZEV4dGVybmFsSWRQcm9wZXJ0eVBhdGgocHJvcGVydHlDb252ZXJ0ZWQpIGFzIHN0cmluZztcblx0XHRpZiAoZXh0ZXJuYWxJZFByb3BlcnR5UGF0aCkge1xuXHRcdFx0dGhpcy5wcm9wZXJ0eUV4dGVybmFsSWQgPSB0aGlzLnByb3BlcnR5XG5cdFx0XHRcdC5nZXRNb2RlbCgpXG5cdFx0XHRcdC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLnByb3BlcnR5LmdldFBhdGgoKS5yZXBsYWNlKHByb3BlcnR5Q29udmVydGVkLm5hbWUsIGV4dGVybmFsSWRQcm9wZXJ0eVBhdGgpLCB0aGlzLnByb3BlcnR5KTtcblx0XHR9XG5cblx0XHRjb25zdCBwcm9wZXJ0eUNvbnZlcnRlZEV4dGVybmFsSWQgPSB0aGlzLnByb3BlcnR5RXh0ZXJuYWxJZFxuXHRcdFx0PyAoTWV0YU1vZGVsQ29udmVydGVyLmNvbnZlcnRNZXRhTW9kZWxDb250ZXh0KHRoaXMucHJvcGVydHlFeHRlcm5hbElkKSBhcyBQcm9wZXJ0eSlcblx0XHRcdDogdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8UHJvcGVydHk+KHRoaXMucHJvcGVydHksIHRoaXMuY29udGV4dFBhdGgpO1xuXG5cdFx0Ly8gUHJvcGVydHkgc2V0dGluZ3Ncblx0XHRjb25zdCBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUNvbnZlcnRlZC5uYW1lLFxuXHRcdFx0b3JpZ2luYWxQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUNvbnZlcnRlZC5uYW1lLFxuXHRcdFx0Zml4ZWRWYWx1ZXMgPVxuXHRcdFx0XHQhIXByb3BlcnR5Q29udmVydGVkRXh0ZXJuYWxJZD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIHx8XG5cdFx0XHRcdCEhcHJvcGVydHlDb252ZXJ0ZWQuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzO1xuXG5cdFx0dGhpcy5jb250cm9sSWQgPSB0aGlzLmlkUHJlZml4ICYmIGdlbmVyYXRlKFt0aGlzLmlkUHJlZml4LCBvcmlnaW5hbFByb3BlcnR5TmFtZV0pO1xuXHRcdHRoaXMuc291cmNlUGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsUGF0aCk7XG5cblx0XHR0eXBlIFByb3BlcnR5QW5ub3RhdGlvbnNfQ29tbW9uX2V4dGVuZGVkID0gUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb24gJiB7IERvY3VtZW50YXRpb25SZWY/OiBzdHJpbmcgfTtcblx0XHR0aGlzLmRvY3VtZW50UmVmVGV4dCA9IChcblx0XHRcdGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucy5Db21tb24gYXMgUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb25fZXh0ZW5kZWRcblx0XHQpPy5Eb2N1bWVudGF0aW9uUmVmPy50b1N0cmluZygpO1xuXG5cdFx0dGhpcy50b29sdGlwID0gcHJvcGVydHlDb252ZXJ0ZWQ/LmFubm90YXRpb25zPy5Db21tb24/LlF1aWNrSW5mbz8udG9TdHJpbmcoKTtcblxuXHRcdHRoaXMuZGF0YVR5cGUgPSBnZXREYXRhVHlwZShwcm9wZXJ0eUNvbnZlcnRlZEV4dGVybmFsSWQgfHwgcHJvcGVydHlDb252ZXJ0ZWQpOyAvLyBkYXRhIHR5cGUgZm9yIExSLUZpbHRlckJhciBjb25kaXRpb24gb2YgdGhlIHZhbHVlIGhlbHBcblx0XHRjb25zdCBsYWJlbFRlcm0gPSBwcm9wZXJ0eUNvbnZlcnRlZD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uTGFiZWw7XG5cdFx0Y29uc3QgbGFiZWxFeHByZXNzaW9uID0gbGFiZWxUZXJtPy50b1N0cmluZygpID8/IGNvbnN0YW50KHByb3BlcnR5TmFtZSk7XG5cdFx0dGhpcy5sYWJlbCA9IGNvbXBpbGVFeHByZXNzaW9uKGxhYmVsRXhwcmVzc2lvbikgfHwgcHJvcGVydHlOYW1lO1xuXHRcdHRoaXMuY29uZGl0aW9uc0JpbmRpbmcgPSBnZXRDb25kaXRpb25zQmluZGluZyhkYXRhTW9kZWxQYXRoKSB8fCBcIlwiO1xuXHRcdHRoaXMucGxhY2Vob2xkZXIgPSBnZXRQbGFjZWhvbGRlcihwcm9wZXJ0eUNvbnZlcnRlZCk7XG5cdFx0dGhpcy5wcm9wZXJ0eUtleSA9IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsUGF0aCwgZmFsc2UsIHRydWUpIHx8IHByb3BlcnR5TmFtZTtcblx0XHQvLyBWaXN1YWwgRmlsdGVyIHNldHRpbmdzXG5cdFx0dGhpcy52ZkVuYWJsZWQgPSAhIXRoaXMudmlzdWFsRmlsdGVyICYmICEodGhpcy5pZFByZWZpeCAmJiB0aGlzLmlkUHJlZml4LmluY2x1ZGVzKFwiQWRhcHRhdGlvblwiKSk7XG5cdFx0dGhpcy52ZklkID0gdGhpcy52ZkVuYWJsZWQgPyBnZW5lcmF0ZShbdGhpcy5pZFByZWZpeCwgcHJvcGVydHlOYW1lLCBcIlZpc3VhbEZpbHRlclwiXSkgOiB1bmRlZmluZWQ7XG5cdFx0dGhpcy52ZlJ1bnRpbWVJZCA9IHRoaXMudmZFbmFibGVkID8gZ2VuZXJhdGUoW3RoaXMuaWRQcmVmaXgsIHByb3BlcnR5TmFtZSwgXCJWaXN1YWxGaWx0ZXJDb250YWluZXJcIl0pIDogdW5kZWZpbmVkO1xuXG5cdFx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vXG5cdFx0Ly8gVE9ETzogbmVlZCB0byBjaGFuZ2Ugb3BlcmF0aW9ucyBmcm9tIE1ldGFNb2RlbCB0byBDb252ZXJ0ZXJzLlxuXHRcdC8vIFRoaXMgbWFpbmx5IGluY2x1ZGVkIGNoYW5naW5nIGNoYW5naW5nIGdldEZpbHRlclJlc3RyaWN0aW9ucyBvcGVyYXRpb25zIGZyb20gbWV0YU1vZGVsIHRvIGNvbnZlcnRlcnNcblx0XHRjb25zdCBwcm9wZXJ0eUNvbnRleHQgPSB0aGlzLnByb3BlcnR5LFxuXHRcdFx0bW9kZWw6IE1ldGFNb2RlbCA9IHByb3BlcnR5Q29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdFx0dmhQcm9wZXJ0eVBhdGg6IHN0cmluZyA9IEZpZWxkSGVscGVyLnZhbHVlSGVscFByb3BlcnR5Rm9yRmlsdGVyRmllbGQocHJvcGVydHlDb250ZXh0KSxcblx0XHRcdGZpbHRlcmFibGUgPSBDb21tb25IZWxwZXIuaXNQcm9wZXJ0eUZpbHRlcmFibGUocHJvcGVydHlDb250ZXh0KSxcblx0XHRcdHByb3BlcnR5T2JqZWN0ID0gcHJvcGVydHlDb250ZXh0LmdldE9iamVjdCgpLFxuXHRcdFx0cHJvcGVydHlJbnRlcmZhY2UgPSB7IGNvbnRleHQ6IHByb3BlcnR5Q29udGV4dCB9IGFzIENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZTtcblxuXHRcdHRoaXMuZGlzcGxheSA9IGdldEZpbHRlckZpZWxkRGlzcGxheUZvcm1hdChkYXRhTW9kZWxQYXRoLCBwcm9wZXJ0eUNvbnZlcnRlZCwgcHJvcGVydHlJbnRlcmZhY2UpO1xuXHRcdHRoaXMuaXNGaWx0ZXJhYmxlID0gIShmaWx0ZXJhYmxlID09PSBmYWxzZSB8fCBmaWx0ZXJhYmxlID09PSBcImZhbHNlXCIpO1xuXHRcdHRoaXMubWF4Q29uZGl0aW9ucyA9IGdldE1heENvbmRpdGlvbnMoZGF0YU1vZGVsUGF0aCk7XG5cdFx0dGhpcy5kYXRhVHlwZUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMocHJvcGVydHlPYmplY3QsIHByb3BlcnR5SW50ZXJmYWNlKTtcblx0XHR0aGlzLmRhdGFUeXBlRm9ybWF0T3B0aW9ucyA9IGZvcm1hdE9wdGlvbnMocHJvcGVydHlPYmplY3QsIHByb3BlcnR5SW50ZXJmYWNlKTtcblx0XHR0aGlzLnJlcXVpcmVkID0gaXNSZXF1aXJlZEluRmlsdGVyKHByb3BlcnR5T2JqZWN0LCBwcm9wZXJ0eUludGVyZmFjZSk7XG5cdFx0dGhpcy5vcGVyYXRvcnMgPSBGaWVsZEhlbHBlci5vcGVyYXRvcnMoXG5cdFx0XHRwcm9wZXJ0eUNvbnRleHQsXG5cdFx0XHRwcm9wZXJ0eU9iamVjdCxcblx0XHRcdHRoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2UsXG5cdFx0XHR0aGlzLnNldHRpbmdzIHx8IFwiXCIsXG5cdFx0XHR0aGlzLmNvbnRleHRQYXRoLmdldFBhdGgoKVxuXHRcdCk7XG5cdFx0aWYgKHRoaXMub3BlcmF0b3JzKSB7XG5cdFx0XHQvLyBFeHRlbmRlZCBvcGVyYXRvcnMgYXJlIG5vdCBhZGRlZCBieSBkZWZhdWx0LlxuXHRcdFx0Ly8gV2UgYWRkIHRoZW0gdG8gTURDIGZpbHRlciBlbnZpcm9ubWVudC5cblx0XHRcdEV4dGVuZGVkU2VtYW50aWNEYXRlT3BlcmF0b3JzLmFkZEV4dGVuZGVkRmlsdGVyT3BlcmF0b3JzKHRoaXMub3BlcmF0b3JzLnNwbGl0KFwiLFwiKSk7XG5cdFx0fVxuXHRcdC8vIFZhbHVlIEhlbHAgc2V0dGluZ3Ncblx0XHQvLyBUT0RPOiBUaGlzIG5lZWRzIHRvIGJlIHVwZGF0ZWQgd2hlbiBWSCBtYWNybyBpcyBjb252ZXJ0ZWQgdG8gMi4wXG5cdFx0Y29uc3QgdmhQcm9wZXJ0eSA9IG1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHZoUHJvcGVydHlQYXRoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IHZoUHJvcGVydHlPYmplY3QgPSB2aFByb3BlcnR5LmdldE9iamVjdCgpIGFzIE1ldGFNb2RlbENvbnRleHQsXG5cdFx0XHR2aFByb3BlcnR5SW50ZXJmYWNlID0geyBjb250ZXh0OiB2aFByb3BlcnR5IH0sXG5cdFx0XHRyZWxhdGl2ZVZoUHJvcGVydHlQYXRoID0gZ2V0UmVsYXRpdmVQcm9wZXJ0eVBhdGgodmhQcm9wZXJ0eU9iamVjdCwgdmhQcm9wZXJ0eUludGVyZmFjZSksXG5cdFx0XHRyZWxhdGl2ZVByb3BlcnR5UGF0aCA9IGdldFJlbGF0aXZlUHJvcGVydHlQYXRoKHByb3BlcnR5T2JqZWN0LCBwcm9wZXJ0eUludGVyZmFjZSk7XG5cdFx0dGhpcy52YWx1ZUhlbHBQcm9wZXJ0eSA9IEZpZWxkSGVscGVyLmdldFZhbHVlSGVscFByb3BlcnR5Rm9yRmlsdGVyRmllbGQoXG5cdFx0XHRwcm9wZXJ0eUNvbnRleHQsXG5cdFx0XHRwcm9wZXJ0eU9iamVjdCxcblx0XHRcdHByb3BlcnR5T2JqZWN0LiRUeXBlLFxuXHRcdFx0dGhpcy52aElkUHJlZml4LFxuXHRcdFx0ZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlLm5hbWUsXG5cdFx0XHRyZWxhdGl2ZVByb3BlcnR5UGF0aCxcblx0XHRcdHJlbGF0aXZlVmhQcm9wZXJ0eVBhdGgsXG5cdFx0XHRmaXhlZFZhbHVlcyxcblx0XHRcdHRoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2Vcblx0XHQpO1xuXG5cdFx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vXG5cdH1cblxuXHRnZXRWaXN1YWxGaWx0ZXJDb250ZW50KCk6IHN0cmluZyB7XG5cdFx0bGV0IHZpc3VhbEZpbHRlck9iamVjdCA9IHRoaXMudmlzdWFsRmlsdGVyLFxuXHRcdFx0dmZYTUwgPSBcIlwiO1xuXHRcdGlmICghdGhpcy52ZkVuYWJsZWQgfHwgIXZpc3VhbEZpbHRlck9iamVjdCkge1xuXHRcdFx0cmV0dXJuIHZmWE1MO1xuXHRcdH1cblx0XHRpZiAoKHZpc3VhbEZpbHRlck9iamVjdCBhcyBDb250ZXh0KT8uaXNBPy4oU0FQX1VJX01PREVMX0NPTlRFWFQpKSB7XG5cdFx0XHR2aXN1YWxGaWx0ZXJPYmplY3QgPSAodmlzdWFsRmlsdGVyT2JqZWN0IGFzIENvbnRleHQpLmdldE9iamVjdCgpIGFzIFZpc3VhbEZpbHRlcnM7XG5cdFx0fVxuXG5cdFx0Y29uc3Qge1xuXHRcdFx0Y29udGV4dFBhdGgsXG5cdFx0XHRwcmVzZW50YXRpb25Bbm5vdGF0aW9uLFxuXHRcdFx0b3V0UGFyYW1ldGVyLFxuXHRcdFx0aW5QYXJhbWV0ZXJzLFxuXHRcdFx0dmFsdWVsaXN0UHJvcGVydHksXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbixcblx0XHRcdG11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCxcblx0XHRcdHJlcXVpcmVkLFxuXHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzID0gW10sXG5cdFx0XHRzaG93T3ZlcmxheUluaXRpYWxseSxcblx0XHRcdHJlbmRlckxpbmVDaGFydCxcblx0XHRcdGlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzLFxuXHRcdFx0aW5pdGlhbENoYXJ0QmluZGluZ0VuYWJsZWRcblx0XHR9ID0gdmlzdWFsRmlsdGVyT2JqZWN0IGFzIFZpc3VhbEZpbHRlcnM7XG5cdFx0dmZYTUwgPSB4bWxgXG5cdFx0XHRcdDx2aXN1YWxGaWx0ZXI6VmlzdWFsRmlsdGVyXG5cdFx0XHRcdCAgICB4bWxuczp2aXN1YWxGaWx0ZXI9IFwic2FwLmZlLm1hY3Jvcy52aXN1YWxmaWx0ZXJzXCJcblx0XHRcdFx0XHRpZD1cIiR7dGhpcy52ZlJ1bnRpbWVJZH1cIlxuXHRcdFx0XHRcdF9jb250ZW50SWQ9XCIke3RoaXMudmZJZH1cIlxuXHRcdFx0XHRcdGNvbnRleHRQYXRoPVwiJHtjb250ZXh0UGF0aH1cIlxuXHRcdFx0XHRcdG1ldGFQYXRoPVwiJHtwcmVzZW50YXRpb25Bbm5vdGF0aW9ufVwiXG5cdFx0XHRcdFx0b3V0UGFyYW1ldGVyPVwiJHtvdXRQYXJhbWV0ZXJ9XCJcblx0XHRcdFx0XHRpblBhcmFtZXRlcnM9XCIke0NvbW1vbkhlbHBlci5zdHJpbmdpZnlDdXN0b21EYXRhKGluUGFyYW1ldGVycyl9XCJcblx0XHRcdFx0XHR2YWx1ZWxpc3RQcm9wZXJ0eT1cIiR7dmFsdWVsaXN0UHJvcGVydHl9XCJcblx0XHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbj1cIiR7c2VsZWN0aW9uVmFyaWFudEFubm90YXRpb259XCJcblx0XHRcdFx0XHRtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQ9XCIke211bHRpcGxlU2VsZWN0aW9uQWxsb3dlZH1cIlxuXHRcdFx0XHRcdHJlcXVpcmVkPVwiJHtyZXF1aXJlZH1cIlxuXHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydGllcz1cIiR7Q29tbW9uSGVscGVyLnN0cmluZ2lmeUN1c3RvbURhdGEocmVxdWlyZWRQcm9wZXJ0aWVzKX1cIlxuXHRcdFx0XHRcdHNob3dPdmVybGF5SW5pdGlhbGx5PVwiJHtzaG93T3ZlcmxheUluaXRpYWxseX1cIlxuXHRcdFx0XHRcdHJlbmRlckxpbmVDaGFydD1cIiR7cmVuZGVyTGluZUNoYXJ0fVwiXG5cdFx0XHRcdFx0aXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXM9XCIke2lzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzfVwiXG5cdFx0XHRcdFx0ZmlsdGVyQmFyRW50aXR5VHlwZT1cIiR7Y29udGV4dFBhdGh9XCJcblx0XHRcdFx0XHRlbmFibGVDaGFydEJpbmRpbmc9XCIke2luaXRpYWxDaGFydEJpbmRpbmdFbmFibGVkfVwiXG5cdFx0XHRcdC8+XG5cdFx0XHRgO1xuXG5cdFx0cmV0dXJuIHZmWE1MO1xuXHR9XG5cblx0YXN5bmMgZ2V0VGVtcGxhdGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRsZXQgeG1sUmV0ID0gYGA7XG5cdFx0aWYgKHRoaXMuaXNGaWx0ZXJhYmxlKSB7XG5cdFx0XHRsZXQgZGlzcGxheTtcblx0XHRcdGNvbnN0IGNvbXBhbmlvblRleHRBdmFpbGFibGUgPSB0aGlzLmRvY3VtZW50UmVmVGV4dCA9PT0gdW5kZWZpbmVkIHx8IG51bGwgPyBmYWxzZSA6IHRydWU7XG5cdFx0XHRjb25zdCBmb3JtYXR0ZWRSZXN1bHQ6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGZvcm1hdFJlc3VsdChbdGhpcy5kb2N1bWVudFJlZlRleHRdLCBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuU3RhbmRhcmRGb3JtYXR0ZXIjYXNBcnJheVwiKVxuXHRcdFx0KTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IGRhdGFNb2RlbFBhdGhFeHRlcm5hbElkID1cblx0XHRcdFx0XHR0aGlzLnByb3BlcnR5RXh0ZXJuYWxJZCAmJiBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKHRoaXMucHJvcGVydHlFeHRlcm5hbElkLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRcdFx0ZGlzcGxheSA9IGRhdGFNb2RlbFBhdGhFeHRlcm5hbElkXG5cdFx0XHRcdFx0PyBnZXREaXNwbGF5TW9kZShkYXRhTW9kZWxQYXRoRXh0ZXJuYWxJZCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pilcblx0XHRcdFx0XHQ6IGF3YWl0IHRoaXMuZGlzcGxheTtcblx0XHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoYEZFIDogRmlsdGVyRmllbGQgQnVpbGRpbmdCbG9jayA6IEVycm9yIGZldGNoaW5nIGRpc3BsYXkgcHJvcGVydHkgZm9yICR7dGhpcy5zb3VyY2VQYXRofSA6ICR7ZXJyfWApO1xuXHRcdFx0fVxuXHRcdFx0eG1sUmV0ID0geG1sYFxuXHRcdFx0XHQ8bWRjOkZpbHRlckZpZWxkXG5cdFx0XHRcdFx0eG1sbnM6bWRjPVwic2FwLnVpLm1kY1wiXG5cdFx0XHRcdFx0eG1sbnM6dGVtcGxhdGU9XCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9leHRlbnNpb24vc2FwLnVpLmNvcmUudGVtcGxhdGUvMVwiXG5cdFx0XHRcdFx0eG1sbnM6bWFjcm89XCJzYXAuZmUubWFjcm9zXCJcblx0XHRcdFx0XHR4bWxuczpjdXN0b21EYXRhPVwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiXG5cdFx0XHRcdFx0eG1sbnM6ZmllbGRoZWxwPVwic2FwLnVpLmNvcmUuZmllbGRoZWxwXCJcblx0XHRcdFx0XHRjdXN0b21EYXRhOnNvdXJjZVBhdGg9XCIke3RoaXMuc291cmNlUGF0aH1cIlxuXHRcdFx0XHRcdGlkPVwiJHt0aGlzLmNvbnRyb2xJZH1cIlxuXHRcdFx0XHRcdGRlbGVnYXRlPVwie25hbWU6ICdzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkQmFzZURlbGVnYXRlJywgcGF5bG9hZDp7aXNGaWx0ZXJGaWVsZDp0cnVlfX1cIlxuXHRcdFx0XHRcdHByb3BlcnR5S2V5PVwiJHt0aGlzLnByb3BlcnR5S2V5fVwiXG5cdFx0XHRcdFx0bGFiZWw9XCIke3RoaXMubGFiZWx9XCJcblx0XHRcdFx0XHRkYXRhVHlwZT1cIiR7dGhpcy5kYXRhVHlwZX1cIlxuXHRcdFx0XHRcdGRpc3BsYXk9XCIke2Rpc3BsYXl9XCJcblx0XHRcdFx0XHRtYXhDb25kaXRpb25zPVwiJHt0aGlzLm1heENvbmRpdGlvbnN9XCJcblx0XHRcdFx0XHR2YWx1ZUhlbHA9XCIke3RoaXMudmFsdWVIZWxwUHJvcGVydHl9XCJcblx0XHRcdFx0XHRjb25kaXRpb25zPVwiJHt0aGlzLmNvbmRpdGlvbnNCaW5kaW5nfVwiXG5cdFx0XHRcdFx0ZGF0YVR5cGVDb25zdHJhaW50cz1cIiR7dGhpcy5kYXRhVHlwZUNvbnN0cmFpbnRzfVwiXG5cdFx0XHRcdFx0ZGF0YVR5cGVGb3JtYXRPcHRpb25zPVwiJHt0aGlzLmRhdGFUeXBlRm9ybWF0T3B0aW9uc31cIlxuXHRcdFx0XHRcdHJlcXVpcmVkPVwiJHt0aGlzLnJlcXVpcmVkfVwiXG5cdFx0XHRcdFx0b3BlcmF0b3JzPVwiJHt0aGlzLm9wZXJhdG9yc31cIlxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiJHt0aGlzLnBsYWNlaG9sZGVyfVwiXG5cdFx0XHRcdFx0JHt0aGlzLmF0dHIoXCJ0b29sdGlwXCIsIHRoaXMudG9vbHRpcCl9XG5cdFx0XHRcdFx0JHt0aGlzLmF0dHIoXCJlZGl0TW9kZVwiLCB0aGlzLmVkaXRNb2RlKX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdCR7XG5cdFx0XHRcdFx0XHRjb21wYW5pb25UZXh0QXZhaWxhYmxlXG5cdFx0XHRcdFx0XHRcdD8geG1sYFxuXHRcdFx0XHRcdFx0PG1kYzpjdXN0b21EYXRhPlxuXHRcdFx0XHRcdFx0XHQ8ZmllbGRoZWxwOkZpZWxkSGVscEN1c3RvbURhdGFcblx0XHRcdFx0XHRcdFx0XHQke3RoaXMuYXR0cihcInZhbHVlXCIsIGZvcm1hdHRlZFJlc3VsdCl9XG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8L21kYzpjdXN0b21EYXRhPlxuXHRcdFx0XHRcdGBcblx0XHRcdFx0XHRcdFx0OiBcIlwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCR7dGhpcy52ZkVuYWJsZWQgPyB0aGlzLmdldFZpc3VhbEZpbHRlckNvbnRlbnQoKSA6IFwiXCJ9XG5cdFx0XHRcdDwvbWRjOkZpbHRlckZpZWxkPlxuXHRcdFx0YDtcblx0XHR9XG5cblx0XHRy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
|
|
424
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWx0ZXJGaWVsZEJsb2NrIiwiX2RlYyIsImRlZmluZUJ1aWxkaW5nQmxvY2siLCJuYW1lIiwibmFtZXNwYWNlIiwiX2RlYzIiLCJibG9ja0F0dHJpYnV0ZSIsInR5cGUiLCJyZXF1aXJlZCIsImlzUHVibGljIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2tUZW1wbGF0IiwicHJvcHMiLCJjb25maWd1cmF0aW9uIiwic2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwicHJvcGVydHlDb252ZXJ0ZWQiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsInByb3BlcnR5IiwiZXh0ZXJuYWxJZFByb3BlcnR5UGF0aCIsImdldEFzc29jaWF0ZWRFeHRlcm5hbElkUHJvcGVydHlQYXRoIiwicHJvcGVydHlFeHRlcm5hbElkIiwiZ2V0TW9kZWwiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJyZXBsYWNlIiwicHJvcGVydHlDb252ZXJ0ZWRFeHRlcm5hbElkIiwidW5kZWZpbmVkIiwiZGF0YU1vZGVsUGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImNvbnRleHRQYXRoIiwicHJvcGVydHlOYW1lIiwib3JpZ2luYWxQcm9wZXJ0eU5hbWUiLCJmaXhlZFZhbHVlcyIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiY29udHJvbElkIiwiaWRQcmVmaXgiLCJnZW5lcmF0ZSIsInNvdXJjZVBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiZG9jdW1lbnRSZWZUZXh0IiwidGFyZ2V0T2JqZWN0IiwiRG9jdW1lbnRhdGlvblJlZiIsInRvU3RyaW5nIiwidG9vbHRpcCIsIlF1aWNrSW5mbyIsImRhdGFUeXBlIiwiZ2V0RGF0YVR5cGUiLCJsYWJlbFRlcm0iLCJsYWJlbCIsIkxhYmVsIiwibGFiZWxFeHByZXNzaW9uIiwiY29uc3RhbnQiLCJjb21waWxlRXhwcmVzc2lvbiIsImNvbmRpdGlvbnNCaW5kaW5nIiwiZ2V0Q29uZGl0aW9uc0JpbmRpbmciLCJwbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicHJvcGVydHlLZXkiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwidmZFbmFibGVkIiwidmlzdWFsRmlsdGVyIiwiaW5jbHVkZXMiLCJ2ZklkIiwidmZSdW50aW1lSWQiLCJwcm9wZXJ0eUNvbnRleHQiLCJtb2RlbCIsInZoUHJvcGVydHlQYXRoIiwiRmllbGRIZWxwZXIiLCJ2YWx1ZUhlbHBQcm9wZXJ0eUZvckZpbHRlckZpZWxkIiwiZmlsdGVyYWJsZSIsIkNvbW1vbkhlbHBlciIsImlzUHJvcGVydHlGaWx0ZXJhYmxlIiwicHJvcGVydHlPYmplY3QiLCJnZXRPYmplY3QiLCJwcm9wZXJ0eUludGVyZmFjZSIsImNvbnRleHQiLCJkaXNwbGF5IiwiZ2V0RmlsdGVyRmllbGREaXNwbGF5Rm9ybWF0IiwiaXNGaWx0ZXJhYmxlIiwibWF4Q29uZGl0aW9ucyIsImdldE1heENvbmRpdGlvbnMiLCJkYXRhVHlwZUNvbnN0cmFpbnRzIiwiY29uc3RyYWludHMiLCJkYXRhVHlwZUZvcm1hdE9wdGlvbnMiLCJmb3JtYXRPcHRpb25zIiwiaXNSZXF1aXJlZEluRmlsdGVyIiwib3BlcmF0b3JzIiwidXNlU2VtYW50aWNEYXRlUmFuZ2UiLCJFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImFkZEV4dGVuZGVkRmlsdGVyT3BlcmF0b3JzIiwic3BsaXQiLCJ2aFByb3BlcnR5IiwidmhQcm9wZXJ0eU9iamVjdCIsInZoUHJvcGVydHlJbnRlcmZhY2UiLCJyZWxhdGl2ZVZoUHJvcGVydHlQYXRoIiwiZ2V0UmVsYXRpdmVQcm9wZXJ0eVBhdGgiLCJyZWxhdGl2ZVByb3BlcnR5UGF0aCIsInZhbHVlSGVscFByb3BlcnR5IiwiZ2V0VmFsdWVIZWxwUHJvcGVydHlGb3JGaWx0ZXJGaWVsZCIsIiRUeXBlIiwidmhJZFByZWZpeCIsInRhcmdldEVudGl0eVR5cGUiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0VmlzdWFsRmlsdGVyQ29udGVudCIsInZpc3VhbEZpbHRlck9iamVjdCIsInZmWE1MIiwiaXNBIiwiU0FQX1VJX01PREVMX0NPTlRFWFQiLCJwcmVzZW50YXRpb25Bbm5vdGF0aW9uIiwib3V0UGFyYW1ldGVyIiwiaW5QYXJhbWV0ZXJzIiwidmFsdWVsaXN0UHJvcGVydHkiLCJzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiIsIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCIsInJlcXVpcmVkUHJvcGVydGllcyIsInNob3dPdmVybGF5SW5pdGlhbGx5IiwicmVuZGVyTGluZUNoYXJ0IiwiaXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMiLCJpbml0aWFsQ2hhcnRCaW5kaW5nRW5hYmxlZCIsInhtbCIsInN0cmluZ2lmeUN1c3RvbURhdGEiLCJnZXRUZW1wbGF0ZSIsInhtbFJldCIsImNvbXBhbmlvblRleHRBdmFpbGFibGUiLCJmb3JtYXR0ZWRSZXN1bHQiLCJmb3JtYXRSZXN1bHQiLCJkYXRhTW9kZWxQYXRoRXh0ZXJuYWxJZCIsImdldERpc3BsYXlNb2RlIiwiZXJyIiwiTG9nIiwiZXJyb3IiLCJhdHRyIiwiZWRpdE1vZGUiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbHRlckZpZWxkLmJsb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vbl9FZG1cIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBmb3JtYXRSZXN1bHQgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYmxvY2tBdHRyaWJ1dGUsIGRlZmluZUJ1aWxkaW5nQmxvY2sgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgeyBTQVBfVUlfTU9ERUxfQ09OVEVYVCwgeG1sIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZVwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0TWF4Q29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvRmlsdGVyRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgVmlzdWFsRmlsdGVycyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvVmlzdWFsRmlsdGVyc1wiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0dHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldFJlbGF0aXZlUHJvcGVydHlQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgeyBnZXRBc3NvY2lhdGVkRXh0ZXJuYWxJZFByb3BlcnR5UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgeyBnZXREaXNwbGF5TW9kZSwgdHlwZSBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2UsIHR5cGUgTWV0YU1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBGaWVsZEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Y29uc3RyYWludHMsXG5cdGZvcm1hdE9wdGlvbnMsXG5cdGdldENvbmRpdGlvbnNCaW5kaW5nLFxuXHRnZXREYXRhVHlwZSxcblx0Z2V0UGxhY2Vob2xkZXIsXG5cdGlzUmVxdWlyZWRJbkZpbHRlclxufSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyRmllbGRIZWxwZXJcIjtcbmltcG9ydCB7IGdldEZpbHRlckZpZWxkRGlzcGxheUZvcm1hdCB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJGaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCBFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRXh0ZW5kZWRTZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9NZXRhTW9kZWxcIjtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBGaWx0ZXIgRmllbGQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogSXQgaXMgZGVzaWduZWQgdG8gd29yayBiYXNlZCBvbiBhIHByb3BlcnR5IGNvbnRleHQocHJvcGVydHkpIHBvaW50aW5nIHRvIGFuIGVudGl0eSB0eXBlIHByb3BlcnR5XG4gKiBuZWVkZWQgdG8gYmUgdXNlZCBhcyBmaWx0ZXJmaWVsZCBhbmQgZW50aXR5VHlwZSBjb250ZXh0KGNvbnRleHRQYXRoKSB0byBjb25zaWRlciB0aGUgcmVsYXRpdml0eSBvZlxuICogdGhlIHByb3BlcnR5UGF0aCBvZiB0aGUgcHJvcGVydHkgd3J0IGVudGl0eVR5cGUuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOkZpbHRlckZpZWxkIGlkPVwiTXlGaWx0ZXJGaWVsZFwiIHByb3BlcnR5PVwiQ29tcGFueU5hbWVcIiAvJmd0O1xuICogPC9wcmU+XG4gKiBAcHJpdmF0ZVxuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiRmlsdGVyRmllbGRcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlckZpZWxkQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2Uge1xuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbWV0YWRhdGEgcGF0aCB0byB0aGUgcHJvcGVydHkuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRwcm9wZXJ0eSE6IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eVNldCBvciBuYXZpZ2F0aW9uUHJvcGVydHlcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGNvbnRleHRQYXRoITogQ29udGV4dDtcblxuXHQvKipcblx0ICogVmlzdWFsIGZpbHRlciBzZXR0aW5ncyBmb3IgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0dmlzdWFsRmlsdGVyPzogQ29udGV4dCB8IFZpc3VhbEZpbHRlcnM7XG5cblx0LyoqXG5cdCAqIEEgcHJlZml4IHRoYXQgaXMgYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBJRCBvZiB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGlkUHJlZml4ID0gXCJGaWx0ZXJGaWVsZFwiO1xuXG5cdC8qKlxuXHQgKiBBIHByZWZpeCB0aGF0IGlzIGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIHZhbHVlIGhlbHAgdXNlZCBmb3IgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHR2aElkUHJlZml4ID0gXCJGaWx0ZXJGaWVsZFZhbHVlSGVscFwiO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIFNlbWF0aWMgRGF0ZSBSYW5nZSBvcHRpb24gZm9yIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdHVzZVNlbWFudGljRGF0ZVJhbmdlID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU2V0dGluZ3MgZnJvbSB0aGUgbWFuaWZlc3QuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0c2V0dGluZ3MgPSBcIlwiO1xuXG5cdC8qKlxuXHQgKiBTcGVmaWNpZXMgdGhlIGVuYWJsZW1lbnQgb2YgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogZmFsc2Vcblx0fSlcblx0ZWRpdE1vZGU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIExhYmVsIGZvciBmaWx0ZXJmaWVsZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogZmFsc2Vcblx0fSlcblx0bGFiZWwhOiBzdHJpbmc7XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdCAqICAgICAgICAgICAgSU5URVJOQUwgQVRUUklCVVRFUyAgICAgICAgICAgICAgKlxuXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHQvKipcblx0ICogQ29udHJvbCBJZCBmb3IgTURDIGZpbHRlciBmaWVsZCB1c2VkIGluc2lkZS5cblx0ICovXG5cdGNvbnRyb2xJZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkga2V5IGZvciBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRwcm9wZXJ0eUtleSE6IHN0cmluZztcblxuXHQvKipcblx0ICogU291cmNlIGFubm90YXRpb24gcGF0aCBvZiB0aGUgcHJvcGVydHkuXG5cdCAqL1xuXHRzb3VyY2VQYXRoITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTb3VyY2UgYW5ub3RhdGlvbiBwYXRoIG9mIHRoZSBwcm9wZXJ0eS5cblx0ICovXG5cdGRvY3VtZW50UmVmVGV4dD86IHN0cmluZztcblxuXHQvKipcblx0ICogVG9vbHRpcCBjb250ZW50IGZyb20gQENvbW1vbi5RdWlja0luZm8gYW5ub3RhdGlvblxuXHQgKi9cblx0dG9vbHRpcD86IHN0cmluZztcblxuXHQvKipcblx0ICogRGF0YSBUeXBlIG9mIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRkYXRhVHlwZSE6IHN0cmluZztcblxuXHQvKipcblx0ICogTWF4aW11bSBjb25kaXRpb25zIHRoYXQgY2FuIGJlIGFkZGVkIHRvIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRtYXhDb25kaXRpb25zITogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBWYWx1ZSBIZWxwIGlkIGFzIGFzc29jaWF0aW9uIGZvciB0aGUgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0dmFsdWVIZWxwUHJvcGVydHk/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEJpbmRpbmcgcGF0aCBmb3IgY29uZGl0aW9ucyBhZGRlZCB0byBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRjb25kaXRpb25zQmluZGluZyE6IHN0cmluZztcblxuXHQvKipcblx0ICogRGF0YXR5cGUgY29uc3RyYWludHMgb2YgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdGRhdGFUeXBlQ29uc3RyYWludHM/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERhdGF0eXBlIGZvcm1hdCBvcHRpb25zIG9mIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRkYXRhVHlwZUZvcm1hdE9wdGlvbnM/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRvIHNwZWNpZnkgZmlsdGVyIGZpZWxkIGlzIG1hbmRhdG9yeSBmb3IgZmlsdGVyaW5nLlxuXHQgKi9cblx0cmVxdWlyZWQhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBWYWxpZCBvcGVyYXRvcnMgZm9yIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRvcGVyYXRvcnM/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFZpc3VhbCBGaWx0ZXIgaWQgdG8gYmUgdXNlZC5cblx0ICovXG5cdHZmSWQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFZpc3VhbCBGaWx0ZXIgYnVpbGRpbmcgYmxvY2sgaWQgdG8gYmUgdXNlZC5cblx0ICovXG5cdHZmUnVudGltZUlkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBWaXN1YWwgRmlsdGVyIGlzIGV4cGVjdGVkLlxuXHQgKi9cblx0dmZFbmFibGVkITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogUHJvcGVydHkgdXNlZCBpcyBmaWx0ZXJhYmxlXG5cdCAqL1xuXHRpc0ZpbHRlcmFibGUhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSBmb3IgcGxhY2Vob2xkZXJcblx0ICovXG5cdHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSB0byBob2xkIHByb21pc2UgZm9yIGRpc3BsYXlcblx0ICovXG5cdGRpc3BsYXk/OiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD47XG5cblx0cHJvcGVydHlFeHRlcm5hbElkPzogQ29udGV4dDtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPEZpbHRlckZpZWxkQmxvY2s+LCBjb25maWd1cmF0aW9uOiB1bmtub3duLCBzZXR0aW5nczogVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BzLCBjb25maWd1cmF0aW9uLCBzZXR0aW5ncyk7XG5cblx0XHRjb25zdCBwcm9wZXJ0eUNvbnZlcnRlZCA9IE1ldGFNb2RlbENvbnZlcnRlci5jb252ZXJ0TWV0YU1vZGVsQ29udGV4dCh0aGlzLnByb3BlcnR5KSBhcyBQcm9wZXJ0eTtcblxuXHRcdGNvbnN0IGV4dGVybmFsSWRQcm9wZXJ0eVBhdGggPSBnZXRBc3NvY2lhdGVkRXh0ZXJuYWxJZFByb3BlcnR5UGF0aChwcm9wZXJ0eUNvbnZlcnRlZCkgYXMgc3RyaW5nO1xuXHRcdGlmIChleHRlcm5hbElkUHJvcGVydHlQYXRoKSB7XG5cdFx0XHR0aGlzLnByb3BlcnR5RXh0ZXJuYWxJZCA9IHRoaXMucHJvcGVydHlcblx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0LmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMucHJvcGVydHkuZ2V0UGF0aCgpLnJlcGxhY2UocHJvcGVydHlDb252ZXJ0ZWQubmFtZSwgZXh0ZXJuYWxJZFByb3BlcnR5UGF0aCksIHRoaXMucHJvcGVydHkpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHByb3BlcnR5Q29udmVydGVkRXh0ZXJuYWxJZCA9IHRoaXMucHJvcGVydHlFeHRlcm5hbElkXG5cdFx0XHQ/IChNZXRhTW9kZWxDb252ZXJ0ZXIuY29udmVydE1ldGFNb2RlbENvbnRleHQodGhpcy5wcm9wZXJ0eUV4dGVybmFsSWQpIGFzIFByb3BlcnR5KVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBkYXRhTW9kZWxQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxQcm9wZXJ0eT4odGhpcy5wcm9wZXJ0eSwgdGhpcy5jb250ZXh0UGF0aCk7XG5cblx0XHQvLyBQcm9wZXJ0eSBzZXR0aW5nc1xuXHRcdGNvbnN0IHByb3BlcnR5TmFtZSA9IHByb3BlcnR5Q29udmVydGVkLm5hbWUsXG5cdFx0XHRvcmlnaW5hbFByb3BlcnR5TmFtZSA9IHByb3BlcnR5Q29udmVydGVkLm5hbWUsXG5cdFx0XHRmaXhlZFZhbHVlcyA9XG5cdFx0XHRcdCEhcHJvcGVydHlDb252ZXJ0ZWRFeHRlcm5hbElkPy5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMgfHxcblx0XHRcdFx0ISFwcm9wZXJ0eUNvbnZlcnRlZC5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXM7XG5cblx0XHR0aGlzLmNvbnRyb2xJZCA9IHRoaXMuaWRQcmVmaXggJiYgZ2VuZXJhdGUoW3RoaXMuaWRQcmVmaXgsIG9yaWdpbmFsUHJvcGVydHlOYW1lXSk7XG5cdFx0dGhpcy5zb3VyY2VQYXRoID0gZ2V0VGFyZ2V0T2JqZWN0UGF0aChkYXRhTW9kZWxQYXRoKTtcblxuXHRcdHR5cGUgUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb25fZXh0ZW5kZWQgPSBQcm9wZXJ0eUFubm90YXRpb25zX0NvbW1vbiAmIHsgRG9jdW1lbnRhdGlvblJlZj86IHN0cmluZyB9O1xuXHRcdHRoaXMuZG9jdW1lbnRSZWZUZXh0ID0gKFxuXHRcdFx0ZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zLkNvbW1vbiBhcyBQcm9wZXJ0eUFubm90YXRpb25zX0NvbW1vbl9leHRlbmRlZFxuXHRcdCk/LkRvY3VtZW50YXRpb25SZWY/LnRvU3RyaW5nKCk7XG5cblx0XHR0aGlzLnRvb2x0aXAgPSBwcm9wZXJ0eUNvbnZlcnRlZD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uUXVpY2tJbmZvPy50b1N0cmluZygpO1xuXG5cdFx0dGhpcy5kYXRhVHlwZSA9IGdldERhdGFUeXBlKHByb3BlcnR5Q29udmVydGVkRXh0ZXJuYWxJZCB8fCBwcm9wZXJ0eUNvbnZlcnRlZCk7IC8vIGRhdGEgdHlwZSBmb3IgTFItRmlsdGVyQmFyIGNvbmRpdGlvbiBvZiB0aGUgdmFsdWUgaGVscFxuXHRcdGNvbnN0IGxhYmVsVGVybSA9IHRoaXMubGFiZWwgPyB0aGlzLmxhYmVsIDogcHJvcGVydHlDb252ZXJ0ZWQ/LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsO1xuXHRcdGNvbnN0IGxhYmVsRXhwcmVzc2lvbiA9IGxhYmVsVGVybT8udG9TdHJpbmcoKSA/PyBjb25zdGFudChwcm9wZXJ0eU5hbWUpO1xuXHRcdHRoaXMubGFiZWwgPSBjb21waWxlRXhwcmVzc2lvbihsYWJlbEV4cHJlc3Npb24pIHx8IHByb3BlcnR5TmFtZTtcblx0XHR0aGlzLmNvbmRpdGlvbnNCaW5kaW5nID0gZ2V0Q29uZGl0aW9uc0JpbmRpbmcoZGF0YU1vZGVsUGF0aCkgfHwgXCJcIjtcblx0XHR0aGlzLnBsYWNlaG9sZGVyID0gZ2V0UGxhY2Vob2xkZXIocHJvcGVydHlDb252ZXJ0ZWQpO1xuXHRcdHRoaXMucHJvcGVydHlLZXkgPSBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKGRhdGFNb2RlbFBhdGgsIGZhbHNlLCB0cnVlKSB8fCBwcm9wZXJ0eU5hbWU7XG5cdFx0Ly8gVmlzdWFsIEZpbHRlciBzZXR0aW5nc1xuXHRcdHRoaXMudmZFbmFibGVkID0gISF0aGlzLnZpc3VhbEZpbHRlciAmJiAhKHRoaXMuaWRQcmVmaXggJiYgdGhpcy5pZFByZWZpeC5pbmNsdWRlcyhcIkFkYXB0YXRpb25cIikpO1xuXHRcdHRoaXMudmZJZCA9IHRoaXMudmZFbmFibGVkID8gZ2VuZXJhdGUoW3RoaXMuaWRQcmVmaXgsIHByb3BlcnR5TmFtZSwgXCJWaXN1YWxGaWx0ZXJcIl0pIDogdW5kZWZpbmVkO1xuXHRcdHRoaXMudmZSdW50aW1lSWQgPSB0aGlzLnZmRW5hYmxlZCA/IGdlbmVyYXRlKFt0aGlzLmlkUHJlZml4LCBwcm9wZXJ0eU5hbWUsIFwiVmlzdWFsRmlsdGVyQ29udGFpbmVyXCJdKSA6IHVuZGVmaW5lZDtcblxuXHRcdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vL1xuXHRcdC8vIFRPRE86IG5lZWQgdG8gY2hhbmdlIG9wZXJhdGlvbnMgZnJvbSBNZXRhTW9kZWwgdG8gQ29udmVydGVycy5cblx0XHQvLyBUaGlzIG1haW5seSBpbmNsdWRlZCBjaGFuZ2luZyBjaGFuZ2luZyBnZXRGaWx0ZXJSZXN0cmljdGlvbnMgb3BlcmF0aW9ucyBmcm9tIG1ldGFNb2RlbCB0byBjb252ZXJ0ZXJzXG5cdFx0Y29uc3QgcHJvcGVydHlDb250ZXh0ID0gdGhpcy5wcm9wZXJ0eSxcblx0XHRcdG1vZGVsOiBNZXRhTW9kZWwgPSBwcm9wZXJ0eUNvbnRleHQuZ2V0TW9kZWwoKSxcblx0XHRcdHZoUHJvcGVydHlQYXRoOiBzdHJpbmcgPSBGaWVsZEhlbHBlci52YWx1ZUhlbHBQcm9wZXJ0eUZvckZpbHRlckZpZWxkKHByb3BlcnR5Q29udGV4dCksXG5cdFx0XHRmaWx0ZXJhYmxlID0gQ29tbW9uSGVscGVyLmlzUHJvcGVydHlGaWx0ZXJhYmxlKHByb3BlcnR5Q29udGV4dCksXG5cdFx0XHRwcm9wZXJ0eU9iamVjdCA9IHByb3BlcnR5Q29udGV4dC5nZXRPYmplY3QoKSxcblx0XHRcdHByb3BlcnR5SW50ZXJmYWNlID0geyBjb250ZXh0OiBwcm9wZXJ0eUNvbnRleHQgfSBhcyBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2U7XG5cblx0XHR0aGlzLmRpc3BsYXkgPSBnZXRGaWx0ZXJGaWVsZERpc3BsYXlGb3JtYXQoZGF0YU1vZGVsUGF0aCwgcHJvcGVydHlDb252ZXJ0ZWQsIHByb3BlcnR5SW50ZXJmYWNlKTtcblx0XHR0aGlzLmlzRmlsdGVyYWJsZSA9ICEoZmlsdGVyYWJsZSA9PT0gZmFsc2UgfHwgZmlsdGVyYWJsZSA9PT0gXCJmYWxzZVwiKTtcblx0XHR0aGlzLm1heENvbmRpdGlvbnMgPSBnZXRNYXhDb25kaXRpb25zKGRhdGFNb2RlbFBhdGgpO1xuXHRcdHRoaXMuZGF0YVR5cGVDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzKHByb3BlcnR5T2JqZWN0LCBwcm9wZXJ0eUludGVyZmFjZSk7XG5cdFx0dGhpcy5kYXRhVHlwZUZvcm1hdE9wdGlvbnMgPSBmb3JtYXRPcHRpb25zKHByb3BlcnR5T2JqZWN0LCBwcm9wZXJ0eUludGVyZmFjZSk7XG5cdFx0dGhpcy5yZXF1aXJlZCA9IGlzUmVxdWlyZWRJbkZpbHRlcihwcm9wZXJ0eU9iamVjdCwgcHJvcGVydHlJbnRlcmZhY2UpO1xuXHRcdHRoaXMub3BlcmF0b3JzID0gRmllbGRIZWxwZXIub3BlcmF0b3JzKFxuXHRcdFx0cHJvcGVydHlDb250ZXh0LFxuXHRcdFx0cHJvcGVydHlPYmplY3QsXG5cdFx0XHR0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlLFxuXHRcdFx0dGhpcy5zZXR0aW5ncyB8fCBcIlwiLFxuXHRcdFx0dGhpcy5jb250ZXh0UGF0aC5nZXRQYXRoKClcblx0XHQpO1xuXHRcdGlmICh0aGlzLm9wZXJhdG9ycykge1xuXHRcdFx0Ly8gRXh0ZW5kZWQgb3BlcmF0b3JzIGFyZSBub3QgYWRkZWQgYnkgZGVmYXVsdC5cblx0XHRcdC8vIFdlIGFkZCB0aGVtIHRvIE1EQyBmaWx0ZXIgZW52aXJvbm1lbnQuXG5cdFx0XHRFeHRlbmRlZFNlbWFudGljRGF0ZU9wZXJhdG9ycy5hZGRFeHRlbmRlZEZpbHRlck9wZXJhdG9ycyh0aGlzLm9wZXJhdG9ycy5zcGxpdChcIixcIikpO1xuXHRcdH1cblx0XHQvLyBWYWx1ZSBIZWxwIHNldHRpbmdzXG5cdFx0Ly8gVE9ETzogVGhpcyBuZWVkcyB0byBiZSB1cGRhdGVkIHdoZW4gVkggbWFjcm8gaXMgY29udmVydGVkIHRvIDIuMFxuXHRcdGNvbnN0IHZoUHJvcGVydHkgPSBtb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh2aFByb3BlcnR5UGF0aCkgYXMgQ29udGV4dDtcblx0XHRjb25zdCB2aFByb3BlcnR5T2JqZWN0ID0gdmhQcm9wZXJ0eS5nZXRPYmplY3QoKSBhcyBNZXRhTW9kZWxDb250ZXh0LFxuXHRcdFx0dmhQcm9wZXJ0eUludGVyZmFjZSA9IHsgY29udGV4dDogdmhQcm9wZXJ0eSB9LFxuXHRcdFx0cmVsYXRpdmVWaFByb3BlcnR5UGF0aCA9IGdldFJlbGF0aXZlUHJvcGVydHlQYXRoKHZoUHJvcGVydHlPYmplY3QsIHZoUHJvcGVydHlJbnRlcmZhY2UpLFxuXHRcdFx0cmVsYXRpdmVQcm9wZXJ0eVBhdGggPSBnZXRSZWxhdGl2ZVByb3BlcnR5UGF0aChwcm9wZXJ0eU9iamVjdCwgcHJvcGVydHlJbnRlcmZhY2UpO1xuXHRcdHRoaXMudmFsdWVIZWxwUHJvcGVydHkgPSBGaWVsZEhlbHBlci5nZXRWYWx1ZUhlbHBQcm9wZXJ0eUZvckZpbHRlckZpZWxkKFxuXHRcdFx0cHJvcGVydHlDb250ZXh0LFxuXHRcdFx0cHJvcGVydHlPYmplY3QsXG5cdFx0XHRwcm9wZXJ0eU9iamVjdC4kVHlwZSxcblx0XHRcdHRoaXMudmhJZFByZWZpeCxcblx0XHRcdGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5uYW1lLFxuXHRcdFx0cmVsYXRpdmVQcm9wZXJ0eVBhdGgsXG5cdFx0XHRyZWxhdGl2ZVZoUHJvcGVydHlQYXRoLFxuXHRcdFx0Zml4ZWRWYWx1ZXMsXG5cdFx0XHR0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlXG5cdFx0KTtcblxuXHRcdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vL1xuXHR9XG5cblx0Z2V0VmlzdWFsRmlsdGVyQ29udGVudCgpOiBzdHJpbmcge1xuXHRcdGxldCB2aXN1YWxGaWx0ZXJPYmplY3QgPSB0aGlzLnZpc3VhbEZpbHRlcixcblx0XHRcdHZmWE1MID0gXCJcIjtcblx0XHRpZiAoIXRoaXMudmZFbmFibGVkIHx8ICF2aXN1YWxGaWx0ZXJPYmplY3QpIHtcblx0XHRcdHJldHVybiB2ZlhNTDtcblx0XHR9XG5cdFx0aWYgKCh2aXN1YWxGaWx0ZXJPYmplY3QgYXMgQ29udGV4dCk/LmlzQT8uKFNBUF9VSV9NT0RFTF9DT05URVhUKSkge1xuXHRcdFx0dmlzdWFsRmlsdGVyT2JqZWN0ID0gKHZpc3VhbEZpbHRlck9iamVjdCBhcyBDb250ZXh0KS5nZXRPYmplY3QoKSBhcyBWaXN1YWxGaWx0ZXJzO1xuXHRcdH1cblxuXHRcdGNvbnN0IHtcblx0XHRcdGNvbnRleHRQYXRoLFxuXHRcdFx0cHJlc2VudGF0aW9uQW5ub3RhdGlvbixcblx0XHRcdG91dFBhcmFtZXRlcixcblx0XHRcdGluUGFyYW1ldGVycyxcblx0XHRcdHZhbHVlbGlzdFByb3BlcnR5LFxuXHRcdFx0c2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24sXG5cdFx0XHRtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQsXG5cdFx0XHRyZXF1aXJlZCxcblx0XHRcdHJlcXVpcmVkUHJvcGVydGllcyA9IFtdLFxuXHRcdFx0c2hvd092ZXJsYXlJbml0aWFsbHksXG5cdFx0XHRyZW5kZXJMaW5lQ2hhcnQsXG5cdFx0XHRpc1ZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyxcblx0XHRcdGluaXRpYWxDaGFydEJpbmRpbmdFbmFibGVkXG5cdFx0fSA9IHZpc3VhbEZpbHRlck9iamVjdCBhcyBWaXN1YWxGaWx0ZXJzO1xuXHRcdHZmWE1MID0geG1sYFxuXHRcdFx0XHQ8dmlzdWFsRmlsdGVyOlZpc3VhbEZpbHRlclxuXHRcdFx0XHQgICAgeG1sbnM6dmlzdWFsRmlsdGVyPSBcInNhcC5mZS5tYWNyb3MudmlzdWFsZmlsdGVyc1wiXG5cdFx0XHRcdFx0aWQ9XCIke3RoaXMudmZSdW50aW1lSWR9XCJcblx0XHRcdFx0XHRfY29udGVudElkPVwiJHt0aGlzLnZmSWR9XCJcblx0XHRcdFx0XHRjb250ZXh0UGF0aD1cIiR7Y29udGV4dFBhdGh9XCJcblx0XHRcdFx0XHRtZXRhUGF0aD1cIiR7cHJlc2VudGF0aW9uQW5ub3RhdGlvbn1cIlxuXHRcdFx0XHRcdG91dFBhcmFtZXRlcj1cIiR7b3V0UGFyYW1ldGVyfVwiXG5cdFx0XHRcdFx0aW5QYXJhbWV0ZXJzPVwiJHtDb21tb25IZWxwZXIuc3RyaW5naWZ5Q3VzdG9tRGF0YShpblBhcmFtZXRlcnMpfVwiXG5cdFx0XHRcdFx0dmFsdWVsaXN0UHJvcGVydHk9XCIke3ZhbHVlbGlzdFByb3BlcnR5fVwiXG5cdFx0XHRcdFx0c2VsZWN0aW9uVmFyaWFudEFubm90YXRpb249XCIke3NlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9ufVwiXG5cdFx0XHRcdFx0bXVsdGlwbGVTZWxlY3Rpb25BbGxvd2VkPVwiJHttdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWR9XCJcblx0XHRcdFx0XHRyZXF1aXJlZD1cIiR7cmVxdWlyZWR9XCJcblx0XHRcdFx0XHRyZXF1aXJlZFByb3BlcnRpZXM9XCIke0NvbW1vbkhlbHBlci5zdHJpbmdpZnlDdXN0b21EYXRhKHJlcXVpcmVkUHJvcGVydGllcyl9XCJcblx0XHRcdFx0XHRzaG93T3ZlcmxheUluaXRpYWxseT1cIiR7c2hvd092ZXJsYXlJbml0aWFsbHl9XCJcblx0XHRcdFx0XHRyZW5kZXJMaW5lQ2hhcnQ9XCIke3JlbmRlckxpbmVDaGFydH1cIlxuXHRcdFx0XHRcdGlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzPVwiJHtpc1ZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlc31cIlxuXHRcdFx0XHRcdGZpbHRlckJhckVudGl0eVR5cGU9XCIke2NvbnRleHRQYXRofVwiXG5cdFx0XHRcdFx0ZW5hYmxlQ2hhcnRCaW5kaW5nPVwiJHtpbml0aWFsQ2hhcnRCaW5kaW5nRW5hYmxlZH1cIlxuXHRcdFx0XHQvPlxuXHRcdFx0YDtcblxuXHRcdHJldHVybiB2ZlhNTDtcblx0fVxuXG5cdGFzeW5jIGdldFRlbXBsYXRlKCk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0bGV0IHhtbFJldCA9IGBgO1xuXHRcdGlmICh0aGlzLmlzRmlsdGVyYWJsZSkge1xuXHRcdFx0bGV0IGRpc3BsYXk7XG5cdFx0XHRjb25zdCBjb21wYW5pb25UZXh0QXZhaWxhYmxlID0gdGhpcy5kb2N1bWVudFJlZlRleHQgPT09IHVuZGVmaW5lZCB8fCBudWxsID8gZmFsc2UgOiB0cnVlO1xuXHRcdFx0Y29uc3QgZm9ybWF0dGVkUmVzdWx0OiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRmb3JtYXRSZXN1bHQoW3RoaXMuZG9jdW1lbnRSZWZUZXh0XSwgXCIuX2Zvcm1hdHRlcnMuU3RhbmRhcmRGb3JtYXR0ZXIjYXNBcnJheVwiKVxuXHRcdFx0KTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IGRhdGFNb2RlbFBhdGhFeHRlcm5hbElkID1cblx0XHRcdFx0XHR0aGlzLnByb3BlcnR5RXh0ZXJuYWxJZCAmJiBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKHRoaXMucHJvcGVydHlFeHRlcm5hbElkLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRcdFx0ZGlzcGxheSA9IGRhdGFNb2RlbFBhdGhFeHRlcm5hbElkXG5cdFx0XHRcdFx0PyBnZXREaXNwbGF5TW9kZShkYXRhTW9kZWxQYXRoRXh0ZXJuYWxJZCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pilcblx0XHRcdFx0XHQ6IGF3YWl0IHRoaXMuZGlzcGxheTtcblx0XHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoYEZFIDogRmlsdGVyRmllbGQgQnVpbGRpbmdCbG9jayA6IEVycm9yIGZldGNoaW5nIGRpc3BsYXkgcHJvcGVydHkgZm9yICR7dGhpcy5zb3VyY2VQYXRofSA6ICR7ZXJyfWApO1xuXHRcdFx0fVxuXHRcdFx0eG1sUmV0ID0geG1sYFxuXHRcdFx0XHQ8bWRjOkZpbHRlckZpZWxkXG5cdFx0XHRcdFx0eG1sbnM6bWRjPVwic2FwLnVpLm1kY1wiXG5cdFx0XHRcdFx0eG1sbnM6dGVtcGxhdGU9XCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9leHRlbnNpb24vc2FwLnVpLmNvcmUudGVtcGxhdGUvMVwiXG5cdFx0XHRcdFx0eG1sbnM6bWFjcm89XCJzYXAuZmUubWFjcm9zXCJcblx0XHRcdFx0XHR4bWxuczpjdXN0b21EYXRhPVwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiXG5cdFx0XHRcdFx0eG1sbnM6ZmllbGRoZWxwPVwic2FwLnVpLmNvcmUuZmllbGRoZWxwXCJcblx0XHRcdFx0XHRjdXN0b21EYXRhOnNvdXJjZVBhdGg9XCIke3RoaXMuc291cmNlUGF0aH1cIlxuXHRcdFx0XHRcdGlkPVwiJHt0aGlzLmNvbnRyb2xJZH1cIlxuXHRcdFx0XHRcdGRlbGVnYXRlPVwie25hbWU6ICdzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkQmFzZURlbGVnYXRlJywgcGF5bG9hZDp7aXNGaWx0ZXJGaWVsZDp0cnVlfX1cIlxuXHRcdFx0XHRcdHByb3BlcnR5S2V5PVwiJHt0aGlzLnByb3BlcnR5S2V5fVwiXG5cdFx0XHRcdFx0bGFiZWw9XCIke3RoaXMubGFiZWx9XCJcblx0XHRcdFx0XHRkYXRhVHlwZT1cIiR7dGhpcy5kYXRhVHlwZX1cIlxuXHRcdFx0XHRcdGRpc3BsYXk9XCIke2Rpc3BsYXl9XCJcblx0XHRcdFx0XHRtYXhDb25kaXRpb25zPVwiJHt0aGlzLm1heENvbmRpdGlvbnN9XCJcblx0XHRcdFx0XHR2YWx1ZUhlbHA9XCIke3RoaXMudmFsdWVIZWxwUHJvcGVydHl9XCJcblx0XHRcdFx0XHRjb25kaXRpb25zPVwiJHt0aGlzLmNvbmRpdGlvbnNCaW5kaW5nfVwiXG5cdFx0XHRcdFx0ZGF0YVR5cGVDb25zdHJhaW50cz1cIiR7dGhpcy5kYXRhVHlwZUNvbnN0cmFpbnRzfVwiXG5cdFx0XHRcdFx0ZGF0YVR5cGVGb3JtYXRPcHRpb25zPVwiJHt0aGlzLmRhdGFUeXBlRm9ybWF0T3B0aW9uc31cIlxuXHRcdFx0XHRcdHJlcXVpcmVkPVwiJHt0aGlzLnJlcXVpcmVkfVwiXG5cdFx0XHRcdFx0b3BlcmF0b3JzPVwiJHt0aGlzLm9wZXJhdG9yc31cIlxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiJHt0aGlzLnBsYWNlaG9sZGVyfVwiXG5cdFx0XHRcdFx0JHt0aGlzLmF0dHIoXCJ0b29sdGlwXCIsIHRoaXMudG9vbHRpcCl9XG5cdFx0XHRcdFx0JHt0aGlzLmF0dHIoXCJlZGl0TW9kZVwiLCB0aGlzLmVkaXRNb2RlKX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdCR7XG5cdFx0XHRcdFx0XHRjb21wYW5pb25UZXh0QXZhaWxhYmxlXG5cdFx0XHRcdFx0XHRcdD8geG1sYFxuXHRcdFx0XHRcdFx0PG1kYzpjdXN0b21EYXRhPlxuXHRcdFx0XHRcdFx0XHQ8ZmllbGRoZWxwOkZpZWxkSGVscEN1c3RvbURhdGFcblx0XHRcdFx0XHRcdFx0XHQke3RoaXMuYXR0cihcInZhbHVlXCIsIGZvcm1hdHRlZFJlc3VsdCl9XG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8L21kYzpjdXN0b21EYXRhPlxuXHRcdFx0XHRcdGBcblx0XHRcdFx0XHRcdFx0OiBcIlwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCR7dGhpcy52ZkVuYWJsZWQgPyB0aGlzLmdldFZpc3VhbEZpbHRlckNvbnRlbnQoKSA6IFwiXCJ9XG5cdFx0XHRcdDwvbWRjOkZpbHRlckZpZWxkPlxuXHRcdFx0YDtcblx0XHR9XG5cblx0XHRyZXR1cm4geG1sUmV0O1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBWkEsSUFpQnFCQSxnQkFBZ0IsSUFBQUMsSUFBQSxHQUpwQ0MsbUJBQW1CLENBQUM7SUFDcEJDLElBQUksRUFBRSxhQUFhO0lBQ25CQyxTQUFTLEVBQUU7RUFDWixDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUtBQyxjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QkMsUUFBUSxFQUFFLElBQUk7SUFDZEMsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FNREosY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxzQkFBc0I7SUFDNUJDLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBTURMLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsc0JBQXNCO0lBQzVCRSxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUcsS0FBQSxHQU1ETixjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFLFFBQVE7SUFDZEUsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FNRFAsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxRQUFRO0lBQ2RFLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBTURSLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsU0FBUztJQUNmRSxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQU0sS0FBQSxHQU1EVCxjQUFj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
|
|
@@ -127,6 +127,15 @@ export default class FilterFieldBlock extends BuildingBlockTemplatingBase {
|
|
|
127
127
|
})
|
|
128
128
|
editMode?: string;
|
|
129
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Label for filterfield.
|
|
132
|
+
*/
|
|
133
|
+
@blockAttribute({
|
|
134
|
+
type: "string",
|
|
135
|
+
isPublic: false
|
|
136
|
+
})
|
|
137
|
+
label!: string;
|
|
138
|
+
|
|
130
139
|
/***********************************************
|
|
131
140
|
* INTERNAL ATTRIBUTES *
|
|
132
141
|
**********************************************/
|
|
@@ -156,11 +165,6 @@ export default class FilterFieldBlock extends BuildingBlockTemplatingBase {
|
|
|
156
165
|
*/
|
|
157
166
|
tooltip?: string;
|
|
158
167
|
|
|
159
|
-
/**
|
|
160
|
-
* Label for filterfield.
|
|
161
|
-
*/
|
|
162
|
-
label!: string;
|
|
163
|
-
|
|
164
168
|
/**
|
|
165
169
|
* Data Type of the filter field.
|
|
166
170
|
*/
|
|
@@ -269,7 +273,7 @@ export default class FilterFieldBlock extends BuildingBlockTemplatingBase {
|
|
|
269
273
|
this.tooltip = propertyConverted?.annotations?.Common?.QuickInfo?.toString();
|
|
270
274
|
|
|
271
275
|
this.dataType = getDataType(propertyConvertedExternalId || propertyConverted); // data type for LR-FilterBar condition of the value help
|
|
272
|
-
const labelTerm = propertyConverted?.annotations?.Common?.Label;
|
|
276
|
+
const labelTerm = this.label ? this.label : propertyConverted?.annotations?.Common?.Label;
|
|
273
277
|
const labelExpression = labelTerm?.toString() ?? constant(propertyName);
|
|
274
278
|
this.label = compileExpression(labelExpression) || propertyName;
|
|
275
279
|
this.conditionsBinding = getConditionsBinding(dataModelPath) || "";
|
|
@@ -386,7 +390,7 @@ export default class FilterFieldBlock extends BuildingBlockTemplatingBase {
|
|
|
386
390
|
let display;
|
|
387
391
|
const companionTextAvailable = this.documentRefText === undefined || null ? false : true;
|
|
388
392
|
const formattedResult: CompiledBindingToolkitExpression = compileExpression(
|
|
389
|
-
formatResult([this.documentRefText], "
|
|
393
|
+
formatResult([this.documentRefText], "._formatters.StandardFormatter#asArray")
|
|
390
394
|
);
|
|
391
395
|
try {
|
|
392
396
|
const dataModelPathExternalId =
|