@sapui5/sap.fe.macros 1.142.0 → 1.143.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/CollaborativeDraftHandler.js +1 -7
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +0 -6
- package/src/sap/fe/macros/ConditionalSwitch.js +1 -2
- package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
- package/src/sap/fe/macros/Field.js +5 -5
- package/src/sap/fe/macros/Field.ts +5 -3
- package/src/sap/fe/macros/FooterContent.js +3 -2
- package/src/sap/fe/macros/FooterContent.tsx +2 -10
- package/src/sap/fe/macros/KPITag.js +6 -6
- package/src/sap/fe/macros/KPITag.tsx +5 -5
- package/src/sap/fe/macros/MacroAPI.js +2 -2
- package/src/sap/fe/macros/MacroAPI.ts +1 -1
- package/src/sap/fe/macros/MessageButton.js +3 -3
- package/src/sap/fe/macros/MessageButton.tsx +3 -2
- package/src/sap/fe/macros/MicroChart.js +3 -2
- package/src/sap/fe/macros/MicroChart.tsx +1 -1
- package/src/sap/fe/macros/Share.js +7 -7
- package/src/sap/fe/macros/Share.tsx +9 -6
- package/src/sap/fe/macros/Status.js +6 -5
- package/src/sap/fe/macros/Status.tsx +3 -4
- package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
- package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- package/src/sap/fe/macros/chart/ChartDelegate.js +22 -1
- package/src/sap/fe/macros/chart/ChartDelegate.ts +29 -2
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +5 -2
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +5 -2
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +7 -7
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
- package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
- package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +3 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -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 +4 -4
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +3 -3
- package/src/sap/fe/macros/field/FieldFormatOptions.js +2 -2
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +7 -2
- package/src/sap/fe/macros/field/FieldRuntime.ts +7 -1
- package/src/sap/fe/macros/filter/FilterUtils.js +31 -5
- package/src/sap/fe/macros/filter/FilterUtils.ts +40 -6
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +6 -3
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +5 -1
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +19 -9
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +76 -61
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
- package/src/sap/fe/macros/form/FormContainer.block.js +22 -6
- package/src/sap/fe/macros/form/FormContainer.block.ts +24 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +2 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
- package/src/sap/fe/macros/library.js +5 -6
- package/src/sap/fe/macros/{library.ts → library.tsx} +1 -1
- package/src/sap/fe/macros/messagebundle.properties +6 -0
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +1 -1
- package/src/sap/fe/macros/messages/MessageButton.js +21 -12
- package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
- package/src/sap/fe/macros/quickView/QuickView.js +5 -4
- package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
- package/src/sap/fe/macros/table/Action.js +7 -4
- package/src/sap/fe/macros/table/Action.ts +3 -3
- package/src/sap/fe/macros/table/Column.js +3 -2
- package/src/sap/fe/macros/table/Column.ts +1 -1
- package/src/sap/fe/macros/table/MdcTableTemplate.js +6 -9
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +5 -7
- package/src/sap/fe/macros/table/Table.block.js +6 -3
- package/src/sap/fe/macros/table/Table.block.tsx +13 -3
- package/src/sap/fe/macros/table/TableAPI.js +13 -8
- package/src/sap/fe/macros/table/TableAPI.ts +10 -3
- package/src/sap/fe/macros/table/TableDefinition.js +2 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +1 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +3 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +4 -0
- package/src/sap/fe/macros/table/TableRuntime.js +24 -12
- package/src/sap/fe/macros/table/TableRuntime.ts +27 -11
- package/src/sap/fe/macros/table/Utils.js +9 -3
- package/src/sap/fe/macros/table/Utils.ts +14 -8
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +6 -4
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +6 -5
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +14 -5
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +13 -4
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -3
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +37 -10
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +39 -15
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/DelegateUtil", "sap/fe/macros/filter/FilterUtils", "sap/ui/core/format/NumberFormat", "sap/ui/model/Filter", "../CollectionBindingInfo"], function (CommonUtils, DelegateUtil, FilterUtils, NumberFormat, Filter, CollectionBindingInfoAPI) {
|
|
5
|
+
sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/DelegateUtil", "sap/fe/macros/filter/FilterUtils", "sap/ui/core/format/NumberFormat", "sap/ui/mdc/odata/v4/TableDelegate", "sap/ui/model/Filter", "../CollectionBindingInfo"], function (CommonUtils, DelegateUtil, FilterUtils, NumberFormat, TableDelegateBase, Filter, CollectionBindingInfoAPI) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
function getHiddenFilters(oTable) {
|
|
@@ -44,7 +44,13 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/DelegateUtil", "sap/fe/
|
|
|
44
44
|
const oDataModel = table.getModel();
|
|
45
45
|
const tableAPI = table.getParent();
|
|
46
46
|
const filterInfo = tableUtils.getFilterInfo(table);
|
|
47
|
-
|
|
47
|
+
let filters = (Array.isArray(params.additionalFilters) ? params.additionalFilters : []).concat(filterInfo.filters).concat(tableUtils.getP13nFilters(table));
|
|
48
|
+
if (table.getDataStateIndicator()?.isFiltering()) {
|
|
49
|
+
// Include filters on messageStrip
|
|
50
|
+
const bindingInfoBase = {};
|
|
51
|
+
TableDelegateBase.updateBindingInfo.apply(table.getControlDelegate(), [table, bindingInfoBase]);
|
|
52
|
+
filters = filters.concat(bindingInfoBase.filters || []);
|
|
53
|
+
}
|
|
48
54
|
const bindingInfo = {
|
|
49
55
|
path: filterInfo.bindingPath ? filterInfo.bindingPath : tableAPI.getRowCollectionPath(),
|
|
50
56
|
filters: new Filter({
|
|
@@ -321,4 +327,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/DelegateUtil", "sap/fe/
|
|
|
321
327
|
};
|
|
322
328
|
return tableUtils;
|
|
323
329
|
}, false);
|
|
324
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRIaWRkZW5GaWx0ZXJzIiwib1RhYmxlIiwiYUZpbHRlcnMiLCJoaWRkZW5GaWx0ZXJzIiwiZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsInBhdGhzIiwiZm9yRWFjaCIsIm1QYXRoIiwib1N2RmlsdGVycyIsIkNvbW1vblV0aWxzIiwiZ2V0RmlsdGVyc0Zyb21Bbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJjb25jYXQiLCJnZXRFeHRlcm5hbEZpbHRlcnMiLCJ0YWJsZSIsImZpbHRlcnMiLCJxdWlja0ZpbHRlciIsImdldFF1aWNrRmlsdGVyIiwiZ2V0U2VsZWN0ZWRLZXkiLCJnZXRMaXN0QmluZGluZ0ZvckNvdW50IiwicGFnZUJpbmRpbmdDb250ZXh0IiwicGFyYW1zIiwib0RhdGFNb2RlbCIsImdldE1vZGVsIiwidGFibGVBUEkiLCJnZXRQYXJlbnQiLCJmaWx0ZXJJbmZvIiwidGFibGVVdGlscyIsImdldEZpbHRlckluZm8iLCJhZGRpdGlvbmFsRmlsdGVycyIsImdldFAxM25GaWx0ZXJzIiwiYmluZGluZ0luZm8iLCJwYXRoIiwiYmluZGluZ1BhdGgiLCJnZXRSb3dDb2xsZWN0aW9uUGF0aCIsIkZpbHRlciIsImFuZCIsImZpcmVFdmVudCIsImNvbGxlY3Rpb25CaW5kaW5nSW5mbyIsIkNvbGxlY3Rpb25CaW5kaW5nSW5mb0FQSSIsInF1aWNrRmlsdGVyS2V5IiwiaXRlbUtleSIsImxpc3RCaW5kaW5nUGF0aCIsInN0YXJ0c1dpdGgiLCJnZXRQYXRoIiwibGlzdEJpbmRpbmciLCJiaW5kTGlzdCIsImdldEJpbmRpbmdDb250ZXh0Iiwic3RyaW5nRmlsdGVycyIsImZldGNoRmlsdGVyIiwiZ2V0Q29udGV4dCIsImNvdW50QmluZGluZyIsImJpbmRQcm9wZXJ0eSIsIiQkZ3JvdXBJZCIsImJhdGNoR3JvdXBJZCIsIiRmaWx0ZXIiLCIkc2VhcmNoIiwic2VhcmNoIiwibm9ybWFsaXplU2VhcmNoVGVybSIsInVuZGVmaW5lZCIsInByb21pc2VWYWx1ZSIsInJlcXVlc3RWYWx1ZSIsInN1Ym1pdEJhdGNoIiwidmFsdWUiLCJkZXN0cm95IiwiZ2V0Q291bnRGb3JtYXR0ZWQiLCJpQ291bnQiLCJvQ291bnRGb3JtYXR0ZXIiLCJOdW1iZXJGb3JtYXQiLCJnZXRJbnRlZ2VySW5zdGFuY2UiLCJncm91cGluZ0VuYWJsZWQiLCJmb3JtYXQiLCJpZ25vcmVQcm9wZXJ0aWVzIiwib1RhYmxlRGVmaW5pdGlvbiIsImdldFRhYmxlRGVmaW5pdGlvbiIsImFJZ25vcmVQcm9wZXJ0aWVzIiwiZW5hYmxlQW5hbHl0aWNzIiwiZW5hYmxlQmFzaWNTZWFyY2giLCJjb250cm9sIiwidHlwZSIsIkZpbHRlclV0aWxzIiwiZ2V0RmlsdGVyIiwiaWdub3JlZFByb3BlcnRpZXMiLCJ0YXJnZXRDb250cm9sIiwib0NvbnRyb2wiLCJwMTNuTW9kZSIsImdldFAxM25Nb2RlIiwicDEzblByb3BlcnRpZXMiLCJpbmNsdWRlcyIsImlzQSIsImdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MiLCJmaWx0ZXIiLCJwcm9wZXJ0eSIsImZpbHRlcmFibGUiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDdXN0b21EYXRhIiwib0NvbnRyb2xQcm9wZXJ0eSIsInByb3BlcnRpZXNNZXRhZGF0YSIsImdldEFsbEZpbHRlckluZm8iLCJvSUZpbHRlckluZm8iLCJmaW5kVmFsdWVzRm9yS2V5UmVjdXJzaXZlbHkiLCJvYmoiLCJrZXkiLCJsaXN0IiwicHVzaCIsImNoaWxkcmVuIiwiT2JqZWN0Iiwia2V5cyIsImNoaWxkIiwiZmluZFZhbHVlcyIsImlzRmlsdGVyRWxpZ2libGVGb3JPcHRpbWlzdGljQmF0Y2giLCJtZGNUYWJsZSIsImZpbHRlckJhciIsImZpbHRlcnNGcm9tVGFibGUiLCJmaWx0ZXJzQ29uZGl0aW9ucyIsImdldENvbmRpdGlvbnMiLCJmaWx0ZXJzQ29uZGl0aW9uc1BhdGhzIiwidGFibGVSb3dCaW5kaW5nc0luZm9QYXRoIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiZmlsdGVyUHJvcGVydGllc0FzUG90ZW50aWFsbHlTZW5zaXRpdmVEYXRhT3JEYXRlVHlwZSIsImZpbHRlcnNQYXRoc0Zyb21UYWJsZSIsImdldEZpbHRlcnNQYXRoc0Zyb21UYWJsZSIsImZpbHRlcnNQYXRoc0Zyb21GaWx0ZXJCYXIiLCJnZXRGaWx0ZXJzUGF0aHNGcm9tRmlsdGVyQmFyIiwiZWRtRGF0ZVR5cGVzIiwiYWxsRmlsdGVyc1BhdGhzIiwicG90ZW50aWFsbHlTZW5zaXRpdmVBbm5vdGF0aW9uIiwiZ2V0T2JqZWN0IiwiZmlsdGVyc0Fubm90YXRpb25zUGF0aHMiLCJmaWx0ZXJQYXRoIiwiZ2V0UmVmZXJlbmNlUGF0aHNGb3JGaWx0ZXJzIiwiZ2V0RmlsdGVycyIsImZpbHRlclJlc3VsdCIsImxlbmd0aCIsImkiLCJsZWZ0IiwicmlnaHQiLCJ3aGVuQm91bmQiLCJfZ2V0T3JDcmVhdGVCb3VuZFByb21pc2VJbmZvIiwicHJvbWlzZSIsIm9uVGFibGVCb3VuZCIsIm9Cb3VuZFByb21pc2VJbmZvIiwicmVzb2x2ZSIsImZuUmVzb2x2ZSIsIlByb21pc2UiLCJpc0JvdW5kIiwidXBkYXRlRmlsdGVyc0ZvckV4dGVybmFsSUQiLCJlbnRpdHlUeXBlUGF0aCIsImNvbmRpdGlvbiIsIm5lc3RlZEZpbHRlcnMiLCJleHRlcm5hbElkUHJvcFBhdGgiLCJzUGF0aCIsIiRQYXRoIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvRmlsdGVyQmFyXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgeyBJRmlsdGVyQ29udHJvbCB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IHR5cGUgUXVpY2tGaWx0ZXJTZWxlY3RvciBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9RdWlja0ZpbHRlclNlbGVjdG9yXCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IE51bWJlckZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L051bWJlckZvcm1hdFwiO1xuaW1wb3J0IHR5cGUgTURDQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IE1EQ1RhYmxlUHJvcGVydHlJbmZvIGFzIFRhYmxlUHJvcGVydHlJbmZvIH0gZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQ29uZGl0aW9uT2JqZWN0IH0gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IENvbGxlY3Rpb25CaW5kaW5nSW5mb0FQSSBmcm9tIFwiLi4vQ29sbGVjdGlvbkJpbmRpbmdJbmZvXCI7XG5cbnR5cGUgRmlsdGVySW5mbyA9IHtcblx0ZmlsdGVyczogRmlsdGVyW107XG5cdHNlYXJjaDogc3RyaW5nO1xuXHRiaW5kaW5nUGF0aDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgSW50ZXJuYWxCaW5kaW5nSW5mbyA9IHtcblx0cGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cdGZpbHRlcnM6IEZpbHRlcltdO1xuXHRzZWFyY2g/OiBzdHJpbmcgfCBudWxsO1xuXHRiaW5kaW5nUGF0aD86IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIGdldEhpZGRlbkZpbHRlcnMob1RhYmxlOiBDb250cm9sKTogRmlsdGVyW10ge1xuXHRsZXQgYUZpbHRlcnM6IEZpbHRlcltdID0gW107XG5cdGNvbnN0IGhpZGRlbkZpbHRlcnMgPSBvVGFibGUuZGF0YShcImhpZGRlbkZpbHRlcnNcIik7XG5cdGlmIChoaWRkZW5GaWx0ZXJzICYmIEFycmF5LmlzQXJyYXkoaGlkZGVuRmlsdGVycy5wYXRocykpIHtcblx0XHRoaWRkZW5GaWx0ZXJzLnBhdGhzLmZvckVhY2goZnVuY3Rpb24gKG1QYXRoOiB7IGFubm90YXRpb25QYXRoOiBzdHJpbmcgfSkge1xuXHRcdFx0Y29uc3Qgb1N2RmlsdGVycyA9IENvbW1vblV0aWxzLmdldEZpbHRlcnNGcm9tQW5ub3RhdGlvbihvVGFibGUsIG1QYXRoLmFubm90YXRpb25QYXRoKTtcblx0XHRcdGFGaWx0ZXJzID0gYUZpbHRlcnMuY29uY2F0KG9TdkZpbHRlcnMpO1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBhRmlsdGVycztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGV4dGVybmFsIGZpbHRlcnMgY29uZmlndXJlZCBvbiB0aGUgdGFibGUuXG4gKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlXG4gKiBAcmV0dXJucyAgVGhlIGZpbHRlcnNcbiAqL1xuZnVuY3Rpb24gZ2V0RXh0ZXJuYWxGaWx0ZXJzKHRhYmxlOiBUYWJsZSk6IEZpbHRlcltdIHtcblx0bGV0IGZpbHRlcnM6IEZpbHRlcltdID0gZ2V0SGlkZGVuRmlsdGVycyh0YWJsZSk7XG5cdGNvbnN0IHF1aWNrRmlsdGVyID0gdGFibGUuZ2V0UXVpY2tGaWx0ZXIoKSBhcyBRdWlja0ZpbHRlclNlbGVjdG9yO1xuXHRpZiAocXVpY2tGaWx0ZXIpIHtcblx0XHRmaWx0ZXJzID0gZmlsdGVycy5jb25jYXQoQ29tbW9uVXRpbHMuZ2V0RmlsdGVyc0Zyb21Bbm5vdGF0aW9uKHRhYmxlLCBxdWlja0ZpbHRlci5nZXRTZWxlY3RlZEtleSgpKSk7XG5cdH1cblx0cmV0dXJuIGZpbHRlcnM7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBjb3VudCBvZiB0aGUgT0RhdGEgbGlzdCBiaW5kaW5nLlxuICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSB1c2VkIHRvIGdldCB0aGUgaW5pdGlhbCBPRGF0YSBsaXN0IGJpbmRpbmdcbiAqIEBwYXJhbSBwYWdlQmluZGluZ0NvbnRleHQgVGhlIGJpbmRpbmcgY29udGV4dCBvZiB0aGUgcGFnZVxuICogQHBhcmFtIHBhcmFtcyBDb250YWlucyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXNcbiAqIEBwYXJhbSBwYXJhbXMuYmF0Y2hHcm91cElkIFRoZSBncm91cElkIG9mIHRoZSBiYXRjaCByZXF1ZXN0XG4gKiBAcGFyYW0gcGFyYW1zLmFkZGl0aW9uYWxGaWx0ZXJzIFRoZSBhZGRpdGlvbmFsIGZpbHRlcnMgdG8gYXBwbHkgdG8gdGhlIG9yaWdpbmFsIE9EYXRhIGxpc3QgYmluZGluZ1xuICogQHJldHVybnMgVGhlIGNvdW50XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldExpc3RCaW5kaW5nRm9yQ291bnQoXG5cdHRhYmxlOiBUYWJsZSxcblx0cGFnZUJpbmRpbmdDb250ZXh0OiBDb250ZXh0IHwgbnVsbCB8IHVuZGVmaW5lZCxcblx0cGFyYW1zOiB7IGJhdGNoR3JvdXBJZD86IHN0cmluZzsgYWRkaXRpb25hbEZpbHRlcnM/OiBGaWx0ZXJbXTsgaXRlbUtleT86IHN0cmluZyB9XG4pOiBQcm9taXNlPG51bWJlcj4ge1xuXHRjb25zdCBvRGF0YU1vZGVsID0gdGFibGUuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRjb25zdCB0YWJsZUFQSSA9IHRhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJO1xuXHRjb25zdCBmaWx0ZXJJbmZvID0gdGFibGVVdGlscy5nZXRGaWx0ZXJJbmZvKHRhYmxlKTtcblx0Y29uc3QgZmlsdGVycyA9IChBcnJheS5pc0FycmF5KHBhcmFtcy5hZGRpdGlvbmFsRmlsdGVycykgPyBwYXJhbXMuYWRkaXRpb25hbEZpbHRlcnMgOiBbXSlcblx0XHQuY29uY2F0KGZpbHRlckluZm8uZmlsdGVycylcblx0XHQuY29uY2F0KHRhYmxlVXRpbHMuZ2V0UDEzbkZpbHRlcnModGFibGUpKTtcblx0Y29uc3QgYmluZGluZ0luZm8gPSB7XG5cdFx0cGF0aDogZmlsdGVySW5mby5iaW5kaW5nUGF0aCA/IGZpbHRlckluZm8uYmluZGluZ1BhdGggOiB0YWJsZUFQSS5nZXRSb3dDb2xsZWN0aW9uUGF0aCgpLFxuXHRcdGZpbHRlcnM6IG5ldyBGaWx0ZXIoe1xuXHRcdFx0ZmlsdGVyczogZmlsdGVycyxcblx0XHRcdGFuZDogdHJ1ZVxuXHRcdH0pXG5cdH07XG5cdHRhYmxlXG5cdFx0LmdldFBhcmVudCgpXG5cdFx0Py5maXJlRXZlbnQoXCJiZWZvcmVSZWJpbmRUYWJsZVwiLCB7XG5cdFx0XHRjb2xsZWN0aW9uQmluZGluZ0luZm86IG5ldyBDb2xsZWN0aW9uQmluZGluZ0luZm9BUEkoYmluZGluZ0luZm8pLFxuXHRcdFx0cXVpY2tGaWx0ZXJLZXk6IHBhcmFtcy5pdGVtS2V5XG5cdFx0fSk7XG5cblx0Ly8gTmVlZCB0byBwYXNzIGJ5IGEgdGVtcG9yYXJ5IExpc3RCaW5kaW5nIGluIG9yZGVyIHRvIGdldCAkZmlsdGVyIHF1ZXJ5IG9wdGlvbiAoYXMgc3RyaW5nKSB0aGFua3MgdG8gZmV0Y2hGaWx0ZXIgb2YgT2RhdGFMaXN0QmluZGluZ1xuXHRjb25zdCBsaXN0QmluZGluZ1BhdGggPVxuXHRcdHBhZ2VCaW5kaW5nQ29udGV4dCAmJiAhYmluZGluZ0luZm8ucGF0aC5zdGFydHNXaXRoKFwiL1wiKSA/IGAke3BhZ2VCaW5kaW5nQ29udGV4dC5nZXRQYXRoKCl9LyR7YmluZGluZ0luZm8ucGF0aH1gIDogYmluZGluZ0luZm8ucGF0aDtcblx0Y29uc3QgbGlzdEJpbmRpbmcgPSBvRGF0YU1vZGVsLmJpbmRMaXN0KGxpc3RCaW5kaW5nUGF0aCwgdGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0LCBbXSwgYmluZGluZ0luZm8uZmlsdGVycyk7XG5cdGNvbnN0IHN0cmluZ0ZpbHRlcnM6IHN0cmluZ1tdID0gYXdhaXQgKGxpc3RCaW5kaW5nIGFzIE9EYXRhTGlzdEJpbmRpbmcgJiB7IGZldGNoRmlsdGVyOiBGdW5jdGlvbiB9KS5mZXRjaEZpbHRlcihcblx0XHRsaXN0QmluZGluZy5nZXRDb250ZXh0KClcblx0KTtcblx0Y29uc3QgY291bnRCaW5kaW5nID0gb0RhdGFNb2RlbC5iaW5kUHJvcGVydHkoYCR7bGlzdEJpbmRpbmcuZ2V0UGF0aCgpfS8kY291bnRgLCBsaXN0QmluZGluZy5nZXRDb250ZXh0KCksIHtcblx0XHQkJGdyb3VwSWQ6IHBhcmFtcy5iYXRjaEdyb3VwSWQgPz8gXCIkYXV0b1wiLFxuXHRcdCRmaWx0ZXI6IHN0cmluZ0ZpbHRlcnNbMF0sXG5cdFx0JHNlYXJjaDogZmlsdGVySW5mby5zZWFyY2ggPyBDb21tb25VdGlscy5ub3JtYWxpemVTZWFyY2hUZXJtKGZpbHRlckluZm8uc2VhcmNoKSA6IHVuZGVmaW5lZFxuXHR9KTtcblx0Y29uc3QgcHJvbWlzZVZhbHVlID0gY291bnRCaW5kaW5nLnJlcXVlc3RWYWx1ZSgpO1xuXHRpZiAocGFyYW1zLmJhdGNoR3JvdXBJZCAmJiBwYXJhbXMuYmF0Y2hHcm91cElkICE9PSBcIiRhdXRvXCIpIHtcblx0XHRvRGF0YU1vZGVsLnN1Ym1pdEJhdGNoKHBhcmFtcy5iYXRjaEdyb3VwSWQpO1xuXHR9XG5cdGNvbnN0IHZhbHVlID0gYXdhaXQgcHJvbWlzZVZhbHVlO1xuXHRjb3VudEJpbmRpbmcuZGVzdHJveSgpO1xuXHRsaXN0QmluZGluZy5kZXN0cm95KCk7XG5cdHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldENvdW50Rm9ybWF0dGVkKGlDb3VudDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3Qgb0NvdW50Rm9ybWF0dGVyID0gTnVtYmVyRm9ybWF0LmdldEludGVnZXJJbnN0YW5jZSh7IGdyb3VwaW5nRW5hYmxlZDogdHJ1ZSB9KTtcblx0cmV0dXJuIG9Db3VudEZvcm1hdHRlci5mb3JtYXQoaUNvdW50KTtcbn1cbmZ1bmN0aW9uIGdldEZpbHRlckluZm8ob1RhYmxlOiBUYWJsZSwgaWdub3JlUHJvcGVydGllcz86IHN0cmluZ1tdKTogSW50ZXJuYWxCaW5kaW5nSW5mbyB7XG5cdGNvbnN0IG9UYWJsZURlZmluaXRpb24gPSAob1RhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5nZXRUYWJsZURlZmluaXRpb24oKTtcblx0bGV0IGFJZ25vcmVQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IGlnbm9yZVByb3BlcnRpZXMgfHwgW107XG5cblx0aWYgKG9UYWJsZURlZmluaXRpb24uZW5hYmxlQW5hbHl0aWNzKSB7XG5cdFx0aWYgKCFvVGFibGVEZWZpbml0aW9uLmVuYWJsZUJhc2ljU2VhcmNoKSB7XG5cdFx0XHQvLyBTZWFyY2ggaXNuJ3QgYWxsb3cgYXMgYSAkYXBwbHkgdHJhbnNmb3JtYXRpb24gZm9yIHRoaXMgdGFibGVcblx0XHRcdGFJZ25vcmVQcm9wZXJ0aWVzID0gYUlnbm9yZVByb3BlcnRpZXMuY29uY2F0KFtcInNlYXJjaFwiXSk7XG5cdFx0fVxuXHRcdGFJZ25vcmVQcm9wZXJ0aWVzID0gYUlnbm9yZVByb3BlcnRpZXMuY29uY2F0KFtcIiRlZGl0U3RhdGVcIl0pO1xuXHR9IGVsc2UgaWYgKG9UYWJsZURlZmluaXRpb24uY29udHJvbC50eXBlID09PSBcIlRyZWVUYWJsZVwiKSB7XG5cdFx0YUlnbm9yZVByb3BlcnRpZXMgPSBhSWdub3JlUHJvcGVydGllcy5jb25jYXQoW1wiJGVkaXRTdGF0ZVwiXSk7XG5cdH1cblx0cmV0dXJuIEZpbHRlclV0aWxzLmdldEZpbHRlckluZm8ob1RhYmxlLmdldEZpbHRlcigpLCB7XG5cdFx0aWdub3JlZFByb3BlcnRpZXM6IGFJZ25vcmVQcm9wZXJ0aWVzLFxuXHRcdHRhcmdldENvbnRyb2w6IG9UYWJsZVxuXHR9KTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYWxsIGZpbHRlcnMgY29uZmlndXJlZCBpbiB0aGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZyBvZiB0aGUgdGFibGUgb3IgY2hhcnQuXG4gKiBAcGFyYW0gb0NvbnRyb2wgVGFibGUgb3IgQ2hhcnQgaW5zdGFuY2VcbiAqIEByZXR1cm5zIEZpbHRlcnMgY29uZmlndXJlZCBpbiB0aGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZyBvZiB0aGUgdGFibGUgb3IgY2hhcnRcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGdldFAxM25GaWx0ZXJzKG9Db250cm9sOiBUYWJsZSB8IE1EQ0NoYXJ0KTogRmlsdGVyW10ge1xuXHRjb25zdCBwMTNuTW9kZSA9IG9Db250cm9sLmdldFAxM25Nb2RlKCk7XG5cdGxldCBwMTNuUHJvcGVydGllczogVGFibGVQcm9wZXJ0eUluZm9bXSB8IFByb3BlcnR5SW5mb1tdIHwgdW5kZWZpbmVkO1xuXHRpZiAocDEzbk1vZGUgJiYgcDEzbk1vZGUuaW5jbHVkZXMoXCJGaWx0ZXJcIikpIHtcblx0XHRpZiAob0NvbnRyb2wuaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdGNvbnN0IHRhYmxlQVBJID0gb0NvbnRyb2wuZ2V0UGFyZW50KCkgYXMgVGFibGVBUEk7XG5cdFx0XHRwMTNuUHJvcGVydGllcyA9IHRhYmxlQVBJLmdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoKS5maWx0ZXIoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0XHRcdHJldHVybiBwcm9wZXJ0eT8uZmlsdGVyYWJsZSAhPT0gZmFsc2U7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cDEzblByb3BlcnRpZXMgPSAoRGVsZWdhdGVVdGlsLmdldEN1c3RvbURhdGE8UHJvcGVydHlJbmZvW10+KG9Db250cm9sLCBcInNhcF9mZV9Db250cm9sRGVsZWdhdGVfcHJvcGVydHlJbmZvTWFwXCIpIHx8IFtdKS5maWx0ZXIoXG5cdFx0XHRcdGZ1bmN0aW9uIChvQ29udHJvbFByb3BlcnR5OiBQcm9wZXJ0eUluZm8pIHtcblx0XHRcdFx0XHRyZXR1cm4gb0NvbnRyb2xQcm9wZXJ0eSAmJiAhKG9Db250cm9sUHJvcGVydHkuZmlsdGVyYWJsZSA9PT0gZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRjb25zdCBmaWx0ZXJJbmZvID0gRmlsdGVyVXRpbHMuZ2V0RmlsdGVySW5mbyhvQ29udHJvbCBhcyB1bmtub3duIGFzIElGaWx0ZXJDb250cm9sLCB7XG5cdFx0XHRwcm9wZXJ0aWVzTWV0YWRhdGE6IHAxM25Qcm9wZXJ0aWVzIGFzIFByb3BlcnR5SW5mb1tdXG5cdFx0fSk7XG5cdFx0aWYgKGZpbHRlckluZm8gJiYgZmlsdGVySW5mby5maWx0ZXJzKSB7XG5cdFx0XHRyZXR1cm4gZmlsdGVySW5mby5maWx0ZXJzO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIGdldEFsbEZpbHRlckluZm8ob1RhYmxlOiBUYWJsZSwgaWdub3JlUHJvcGVydGllcz86IHN0cmluZ1tdKTogSW50ZXJuYWxCaW5kaW5nSW5mbyB7XG5cdGNvbnN0IG9JRmlsdGVySW5mbyA9IHRhYmxlVXRpbHMuZ2V0RmlsdGVySW5mbyhvVGFibGUsIGlnbm9yZVByb3BlcnRpZXMpO1xuXHRyZXR1cm4ge1xuXHRcdGZpbHRlcnM6IG9JRmlsdGVySW5mby5maWx0ZXJzLmNvbmNhdChnZXRFeHRlcm5hbEZpbHRlcnMob1RhYmxlKSwgdGFibGVVdGlscy5nZXRQMTNuRmlsdGVycyhvVGFibGUpKSxcblx0XHRzZWFyY2g6IG9JRmlsdGVySW5mby5zZWFyY2gsXG5cdFx0YmluZGluZ1BhdGg6IG9JRmlsdGVySW5mby5iaW5kaW5nUGF0aFxuXHR9O1xufVxuXG4vKipcbiAqIEZpbmQgYSB2YWx1ZSBpbiBhbiBvYmplY3QuXG4gKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gbG9vayBpbnRvXG4gKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoXG4gKiBAcGFyYW0gbGlzdCBBbiBhcnJheSB0byByZXR1cm4gaWYgb2JqIGlzIHVuZGVmaW5lZFxuICogQHJldHVybnMgUmV0dXJuIGFuIGFycmF5IG9mIGFsbCBrZXlzIGNvbnRlbnRcbiAqL1xuZnVuY3Rpb24gZmluZFZhbHVlc0ZvcktleVJlY3Vyc2l2ZWx5KG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogc3RyaW5nLCBsaXN0OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcblx0aWYgKG9ialtrZXldKSB7XG5cdFx0bGlzdC5wdXNoKG9ialtrZXldIGFzIHN0cmluZyk7XG5cdH1cblx0Y29uc3QgY2hpbGRyZW4gPSBPYmplY3Qua2V5cyhvYmopO1xuXHRmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG5cdFx0aWYgKHR5cGVvZiBvYmpbY2hpbGRdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRsaXN0ID0gbGlzdC5jb25jYXQoZmluZFZhbHVlc0ZvcktleVJlY3Vyc2l2ZWx5KG9ialtjaGlsZF0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleSwgW10pKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGxpc3Q7XG59XG5cbi8qKlxuICogRmluZCBhIHZhbHVlIGludG8gYW4gb2JqZWN0LlxuICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGxvb2sgaW50b1xuICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHNlYXJjaFxuICogQHJldHVybnMgUmV0dXJuIGFuIGFycmF5IG9mIGFsbCBrZXlzIGNvbnRlbnRcbiAqL1xuZnVuY3Rpb24gZmluZFZhbHVlcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZyk6IHN0cmluZ1tdIHtcblx0cmV0dXJuIGZpbmRWYWx1ZXNGb3JLZXlSZWN1cnNpdmVseShvYmosIGtleSwgW10pO1xufVxuXG4vKipcbiAqIENoZWNrIGFsbCBmaWx0ZXIgY29uZGl0aW9ucyBmb3IgZGF0ZSB0eXBlcyBvciBzZW5zaXRpdmUgZGF0YS5cbiAqIEBwYXJhbSBtZGNUYWJsZSBUYWJsZSBvciBDaGFydCBpbnN0YW5jZVxuICogQHBhcmFtIGZpbHRlckJhciBGaWx0ZXJCYXJcbiAqIEByZXR1cm5zIFRydWUgaWYgb25lIGZpbHRlciBoYXMgYSBkYXRlIHR5cGUgb3IgYSBzZW5zaXRpdmUgZGF0YVxuICovXG5mdW5jdGlvbiBpc0ZpbHRlckVsaWdpYmxlRm9yT3B0aW1pc3RpY0JhdGNoKG1kY1RhYmxlOiBUYWJsZSwgZmlsdGVyQmFyOiBGaWx0ZXJCYXIgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcblx0aWYgKCFmaWx0ZXJCYXIpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Y29uc3QgZmlsdGVyc0Zyb21UYWJsZSA9IHRhYmxlVXRpbHMuZ2V0QWxsRmlsdGVySW5mbyhtZGNUYWJsZSkgYXMgdW5rbm93biBhcyBGaWx0ZXJJbmZvO1xuXHRjb25zdCBmaWx0ZXJzQ29uZGl0aW9ucyA9IGZpbHRlckJhci5nZXRDb25kaXRpb25zKCk7XG5cdGNvbnN0IGZpbHRlcnNDb25kaXRpb25zUGF0aHMgPSBPYmplY3Qua2V5cyhmaWx0ZXJzQ29uZGl0aW9ucyk7XG5cdGNvbnN0IHRhYmxlUm93QmluZGluZ3NJbmZvUGF0aCA9IG1kY1RhYmxlLmRhdGEoXCJtZXRhUGF0aFwiKTtcblx0Y29uc3QgbWV0YU1vZGVsID0gbWRjVGFibGUuZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCk7XG5cdGxldCBmaWx0ZXJQcm9wZXJ0aWVzQXNQb3RlbnRpYWxseVNlbnNpdGl2ZURhdGFPckRhdGVUeXBlID0gZmFsc2U7XG5cdGNvbnN0IGZpbHRlcnNQYXRoc0Zyb21UYWJsZSA9IGdldEZpbHRlcnNQYXRoc0Zyb21UYWJsZSh0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGgsIGZpbHRlcnNGcm9tVGFibGUpO1xuXHRjb25zdCBmaWx0ZXJzUGF0aHNGcm9tRmlsdGVyQmFyID0gZ2V0RmlsdGVyc1BhdGhzRnJvbUZpbHRlckJhcih0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGgsIGZpbHRlcnNDb25kaXRpb25zUGF0aHMpO1xuXHRjb25zdCBlZG1EYXRlVHlwZXMgPSBbXCJFZG0uRGF0ZVwiLCBcIkVkbS5EYXRlVGltZU9mZnNldFwiLCBcIkVkbS5UaW1lT2ZEYXlcIl07XG5cdGNvbnN0IGFsbEZpbHRlcnNQYXRocyA9IGZpbHRlcnNQYXRoc0Zyb21GaWx0ZXJCYXIuY29uY2F0KGZpbHRlcnNQYXRoc0Zyb21UYWJsZSk7XG5cdGZvciAoY29uc3QgcG90ZW50aWFsbHlTZW5zaXRpdmVBbm5vdGF0aW9uIG9mIGFsbEZpbHRlcnNQYXRocykge1xuXHRcdGlmIChcblx0XHRcdG1ldGFNb2RlbD8uZ2V0T2JqZWN0KGAke3BvdGVudGlhbGx5U2Vuc2l0aXZlQW5ub3RhdGlvbn1AY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLklzUG90ZW50aWFsbHlTZW5zaXRpdmVgKSB8fFxuXHRcdFx0bWV0YU1vZGVsPy5nZXRPYmplY3QoYCR7cG90ZW50aWFsbHlTZW5zaXRpdmVBbm5vdGF0aW9ufUBjb20uc2FwLnZvY2FidWxhcmllcy5QZXJzb25hbERhdGEudjEuSXNQb3RlbnRpYWxseVBlcnNvbmFsYClcblx0XHQpIHtcblx0XHRcdGZpbHRlclByb3BlcnRpZXNBc1BvdGVudGlhbGx5U2Vuc2l0aXZlRGF0YU9yRGF0ZVR5cGUgPSB0cnVlO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGlmIChlZG1EYXRlVHlwZXMuaW5jbHVkZXMobWV0YU1vZGVsPy5nZXRPYmplY3QoYCR7cG90ZW50aWFsbHlTZW5zaXRpdmVBbm5vdGF0aW9ufS8kVHlwZWApKSkge1xuXHRcdFx0ZmlsdGVyUHJvcGVydGllc0FzUG90ZW50aWFsbHlTZW5zaXRpdmVEYXRhT3JEYXRlVHlwZSA9IHRydWU7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZpbHRlclByb3BlcnRpZXNBc1BvdGVudGlhbGx5U2Vuc2l0aXZlRGF0YU9yRGF0ZVR5cGU7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYW5ub3RhdGlvbiBwYXRocyBvZiBhbGwgZmlsdGVycyBvZiB0aGUgRmlsdGVyIEJhci5cbiAqIEBwYXJhbSB0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGggVGhlIHRhYmxlIG1ldGFQYXRoXG4gKiBAcGFyYW0gZmlsdGVyc0NvbmRpdGlvbnNQYXRocyBUaGUgcGF0aHMgb2YgYWxsIGZpbHRlcnMgY29uZGl0aW9uc1xuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcGF0aHMgb2YgYWxsIGZpbHRlcnNcbiAqL1xuZnVuY3Rpb24gZ2V0RmlsdGVyc1BhdGhzRnJvbUZpbHRlckJhcih0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGg6IHN0cmluZywgZmlsdGVyc0NvbmRpdGlvbnNQYXRoczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG5cdGNvbnN0IGZpbHRlcnNBbm5vdGF0aW9uc1BhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRmb3IgKGNvbnN0IGZpbHRlclBhdGggb2YgZmlsdGVyc0NvbmRpdGlvbnNQYXRocykge1xuXHRcdGZpbHRlcnNBbm5vdGF0aW9uc1BhdGhzLnB1c2goYCR7dGFibGVSb3dCaW5kaW5nc0luZm9QYXRofS8ke2ZpbHRlclBhdGh9YCk7XG5cdH1cblx0cmV0dXJuIGZpbHRlcnNBbm5vdGF0aW9uc1BhdGhzO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhdGhzIG9mIGFsbCBmaWx0ZXJzIGNvbmRpdGlvbnMuXG4gKiBAcGFyYW0gZmlsdGVyIFRoZSBmaWx0ZXIgdG8gZ2V0IHRoZSBwYXRoc1xuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgcGF0aHMgY29uZGl0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRSZWZlcmVuY2VQYXRoc0ZvckZpbHRlcnMoZmlsdGVyOiBGaWx0ZXIpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdGNvbnN0IGZpbHRlcnMgPSBmaWx0ZXIuZ2V0RmlsdGVycygpO1xuXHRsZXQgZmlsdGVyUmVzdWx0ID0ge307XG5cdC8vIGZpbmQgYWxsIGZpbHRlcnMgaW4gbXVsdGkgZmlsdGVyc1xuXHRpZiAoZmlsdGVycykge1xuXHRcdGZpbHRlclJlc3VsdCA9IGdldFJlZmVyZW5jZVBhdGhzRm9yRmlsdGVycyhmaWx0ZXJzW2ZpbHRlcnMubGVuZ3RoIC0gMV0pO1xuXHRcdGZvciAobGV0IGkgPSBmaWx0ZXJzLmxlbmd0aCAtIDI7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRmaWx0ZXJSZXN1bHQgPSB7XG5cdFx0XHRcdGxlZnQ6IGdldFJlZmVyZW5jZVBhdGhzRm9yRmlsdGVycyhmaWx0ZXJzW2ldKSxcblx0XHRcdFx0cmlnaHQ6IGZpbHRlclJlc3VsdFxuXHRcdFx0fTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhdGg6IGZpbHRlci5nZXRQYXRoKClcblx0XHR9O1xuXHR9XG5cdHJldHVybiBmaWx0ZXJSZXN1bHQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYW5ub3RhdGlvbiBwYXRocyBvZiBhbGwgdGFibGUgZmlsdGVycy5cbiAqIEBwYXJhbSB0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGggVGhlIHRhYmxlIG1ldGFQYXRoXG4gKiBAcGFyYW0gZmlsdGVycyBUaGUgZmlsdGVycyB0byBjaGVjayBmb3IgcGF0aHNcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHBhdGhzIG9mIGFsbCBmaWx0ZXJzXG4gKi9cbmZ1bmN0aW9uIGdldEZpbHRlcnNQYXRoc0Zyb21UYWJsZSh0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGg6IHN0cmluZywgZmlsdGVyczogRmlsdGVySW5mbyk6IHN0cmluZ1tdIHtcblx0bGV0IHBhdGhzOiBzdHJpbmdbXTtcblx0Y29uc3QgZmlsdGVyc0Fubm90YXRpb25zUGF0aHM6IHN0cmluZ1tdID0gW107XG5cdGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMuZmlsdGVycykge1xuXHRcdHBhdGhzID0gZmluZFZhbHVlcyhnZXRSZWZlcmVuY2VQYXRoc0ZvckZpbHRlcnMoZmlsdGVyKSwgXCJwYXRoXCIpO1xuXHRcdGZvciAoY29uc3QgZmlsdGVyUGF0aCBvZiBwYXRocykge1xuXHRcdFx0ZmlsdGVyc0Fubm90YXRpb25zUGF0aHMucHVzaChgJHt0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGh9LyR7ZmlsdGVyUGF0aH1gKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZpbHRlcnNBbm5vdGF0aW9uc1BhdGhzO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCB0aGUgdGFibGUgaXRzZWxmIHdoZW4gdGhlIHRhYmxlIHdhcyBib3VuZC5cbiAqIEBwYXJhbSBvVGFibGUgVGhlIHRhYmxlIHRvIGNoZWNrIGZvciBiaW5kaW5nXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCB3aWxsIGJlIHJlc29sdmVkIHdoZW4gdGFibGUgaXMgYm91bmRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gd2hlbkJvdW5kKG9UYWJsZTogVGFibGUpOiBQcm9taXNlPFRhYmxlPiB7XG5cdHJldHVybiBfZ2V0T3JDcmVhdGVCb3VuZFByb21pc2VJbmZvKG9UYWJsZSkucHJvbWlzZTtcbn1cblxuLyoqXG4gKiBJZiBub3QgeWV0IGhhcHBlbmVkLCBpdCByZXNvbHZlcyB0aGUgdGFibGUgYm91bmQgcHJvbWlzZS5cbiAqIEBwYXJhbSBvVGFibGUgVGhlIHRhYmxlIHRoYXQgd2FzIGJvdW5kXG4gKi9cbmZ1bmN0aW9uIG9uVGFibGVCb3VuZChvVGFibGU6IFRhYmxlKTogdm9pZCB7XG5cdGNvbnN0IG9Cb3VuZFByb21pc2VJbmZvID0gX2dldE9yQ3JlYXRlQm91bmRQcm9taXNlSW5mbyhvVGFibGUpO1xuXHRpZiAob0JvdW5kUHJvbWlzZUluZm8ucmVzb2x2ZSkge1xuXHRcdG9Cb3VuZFByb21pc2VJbmZvLnJlc29sdmUob1RhYmxlKTtcblx0XHRvVGFibGUuZGF0YShcImJvdW5kUHJvbWlzZVJlc29sdmVcIiwgbnVsbCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gX2dldE9yQ3JlYXRlQm91bmRQcm9taXNlSW5mbyhvVGFibGU6IFRhYmxlKTogeyBwcm9taXNlOiBQcm9taXNlPFRhYmxlPjsgcmVzb2x2ZTogRnVuY3Rpb24gfSB7XG5cdGlmICghb1RhYmxlLmRhdGEoXCJib3VuZFByb21pc2VcIikpIHtcblx0XHRsZXQgZm5SZXNvbHZlITogRnVuY3Rpb247XG5cdFx0b1RhYmxlLmRhdGEoXG5cdFx0XHRcImJvdW5kUHJvbWlzZVwiLFxuXHRcdFx0bmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcblx0XHRcdFx0Zm5SZXNvbHZlID0gcmVzb2x2ZTtcblx0XHRcdH0pXG5cdFx0KTtcblx0XHRpZiAoKG9UYWJsZSBhcyB1bmtub3duIGFzIHsgaXNCb3VuZD86ICgpID0+IGJvb2xlYW4gfSkuaXNCb3VuZD8uKCkpIHtcblx0XHRcdGZuUmVzb2x2ZShvVGFibGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvVGFibGUuZGF0YShcImJvdW5kUHJvbWlzZVJlc29sdmVcIiwgZm5SZXNvbHZlKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHsgcHJvbWlzZTogb1RhYmxlLmRhdGEoXCJib3VuZFByb21pc2VcIiksIHJlc29sdmU6IG9UYWJsZS5kYXRhKFwiYm91bmRQcm9taXNlUmVzb2x2ZVwiKSB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVGaWx0ZXJzRm9yRXh0ZXJuYWxJRChtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLCBmaWx0ZXJzOiBDb25kaXRpb25PYmplY3RbXSwgZW50aXR5VHlwZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRmaWx0ZXJzPy5mb3JFYWNoKChjb25kaXRpb24pID0+IHtcblx0XHRjb25zdCBuZXN0ZWRGaWx0ZXJzID0gY29uZGl0aW9uLmdldEZpbHRlcnMoKTtcblxuXHRcdGlmIChuZXN0ZWRGaWx0ZXJzKSB7XG5cdFx0XHR1cGRhdGVGaWx0ZXJzRm9yRXh0ZXJuYWxJRChtZXRhTW9kZWwsIG5lc3RlZEZpbHRlcnMsIGVudGl0eVR5cGVQYXRoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgZXh0ZXJuYWxJZFByb3BQYXRoID0gbWV0YU1vZGVsLmdldE9iamVjdChlbnRpdHlUeXBlUGF0aCArIGNvbmRpdGlvbi5zUGF0aCArIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5FeHRlcm5hbElEXCIpXG5cdFx0XHRcdD8uJFBhdGg7XG5cdFx0XHRpZiAoZXh0ZXJuYWxJZFByb3BQYXRoKSB7XG5cdFx0XHRcdGNvbmRpdGlvbi5zUGF0aCA9IGV4dGVybmFsSWRQcm9wUGF0aDtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG5jb25zdCB0YWJsZVV0aWxzID0ge1xuXHRnZXRDb3VudEZvcm1hdHRlZDogZ2V0Q291bnRGb3JtYXR0ZWQsXG5cdGdldEhpZGRlbkZpbHRlcnM6IGdldEhpZGRlbkZpbHRlcnMsXG5cdGdldExpc3RCaW5kaW5nRm9yQ291bnQ6IGdldExpc3RCaW5kaW5nRm9yQ291bnQsXG5cdGdldEZpbHRlckluZm86IGdldEZpbHRlckluZm8sXG5cdGdldFAxM25GaWx0ZXJzOiBnZXRQMTNuRmlsdGVycyxcblx0Z2V0QWxsRmlsdGVySW5mbzogZ2V0QWxsRmlsdGVySW5mbyxcblx0aXNGaWx0ZXJFbGlnaWJsZUZvck9wdGltaXN0aWNCYXRjaDogaXNGaWx0ZXJFbGlnaWJsZUZvck9wdGltaXN0aWNCYXRjaCxcblx0d2hlbkJvdW5kOiB3aGVuQm91bmQsXG5cdG9uVGFibGVCb3VuZDogb25UYWJsZUJvdW5kLFxuXHR1cGRhdGVGaWx0ZXJzRm9yRXh0ZXJuYWxJRDogdXBkYXRlRmlsdGVyc0ZvckV4dGVybmFsSURcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRhYmxlVXRpbHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFrQ0EsU0FBU0EsZ0JBQWdCQSxDQUFDQyxNQUFlLEVBQVk7SUFDcEQsSUFBSUMsUUFBa0IsR0FBRyxFQUFFO0lBQzNCLE1BQU1DLGFBQWEsR0FBR0YsTUFBTSxDQUFDRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2xELElBQUlELGFBQWEsSUFBSUUsS0FBSyxDQUFDQyxPQUFPLENBQUNILGFBQWEsQ0FBQ0ksS0FBSyxDQUFDLEVBQUU7TUFDeERKLGFBQWEsQ0FBQ0ksS0FBSyxDQUFDQyxPQUFPLENBQUMsVUFBVUMsS0FBaUMsRUFBRTtRQUN4RSxNQUFNQyxVQUFVLEdBQUdDLFdBQVcsQ0FBQ0Msd0JBQXdCLENBQUNYLE1BQU0sRUFBRVEsS0FBSyxDQUFDSSxjQUFjLENBQUM7UUFDckZYLFFBQVEsR0FBR0EsUUFBUSxDQUFDWSxNQUFNLENBQUNKLFVBQVUsQ0FBQztNQUN2QyxDQUFDLENBQUM7SUFDSDtJQUNBLE9BQU9SLFFBQVE7RUFDaEI7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNhLGtCQUFrQkEsQ0FBQ0MsS0FBWSxFQUFZO0lBQ25ELElBQUlDLE9BQWlCLEdBQUdqQixnQkFBZ0IsQ0FBQ2dCLEtBQUssQ0FBQztJQUMvQyxNQUFNRSxXQUFXLEdBQUdGLEtBQUssQ0FBQ0csY0FBYyxDQUFDLENBQXdCO0lBQ2pFLElBQUlELFdBQVcsRUFBRTtNQUNoQkQsT0FBTyxHQUFHQSxPQUFPLENBQUNILE1BQU0sQ0FBQ0gs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
|
|
330
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRIaWRkZW5GaWx0ZXJzIiwib1RhYmxlIiwiYUZpbHRlcnMiLCJoaWRkZW5GaWx0ZXJzIiwiZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsInBhdGhzIiwiZm9yRWFjaCIsIm1QYXRoIiwib1N2RmlsdGVycyIsIkNvbW1vblV0aWxzIiwiZ2V0RmlsdGVyc0Zyb21Bbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJjb25jYXQiLCJnZXRFeHRlcm5hbEZpbHRlcnMiLCJ0YWJsZSIsImZpbHRlcnMiLCJxdWlja0ZpbHRlciIsImdldFF1aWNrRmlsdGVyIiwiZ2V0U2VsZWN0ZWRLZXkiLCJnZXRMaXN0QmluZGluZ0ZvckNvdW50IiwicGFnZUJpbmRpbmdDb250ZXh0IiwicGFyYW1zIiwib0RhdGFNb2RlbCIsImdldE1vZGVsIiwidGFibGVBUEkiLCJnZXRQYXJlbnQiLCJmaWx0ZXJJbmZvIiwidGFibGVVdGlscyIsImdldEZpbHRlckluZm8iLCJhZGRpdGlvbmFsRmlsdGVycyIsImdldFAxM25GaWx0ZXJzIiwiZ2V0RGF0YVN0YXRlSW5kaWNhdG9yIiwiaXNGaWx0ZXJpbmciLCJiaW5kaW5nSW5mb0Jhc2UiLCJUYWJsZURlbGVnYXRlQmFzZSIsInVwZGF0ZUJpbmRpbmdJbmZvIiwiYXBwbHkiLCJnZXRDb250cm9sRGVsZWdhdGUiLCJiaW5kaW5nSW5mbyIsInBhdGgiLCJiaW5kaW5nUGF0aCIsImdldFJvd0NvbGxlY3Rpb25QYXRoIiwiRmlsdGVyIiwiYW5kIiwiZmlyZUV2ZW50IiwiY29sbGVjdGlvbkJpbmRpbmdJbmZvIiwiQ29sbGVjdGlvbkJpbmRpbmdJbmZvQVBJIiwicXVpY2tGaWx0ZXJLZXkiLCJpdGVtS2V5IiwibGlzdEJpbmRpbmdQYXRoIiwic3RhcnRzV2l0aCIsImdldFBhdGgiLCJsaXN0QmluZGluZyIsImJpbmRMaXN0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJzdHJpbmdGaWx0ZXJzIiwiZmV0Y2hGaWx0ZXIiLCJnZXRDb250ZXh0IiwiY291bnRCaW5kaW5nIiwiYmluZFByb3BlcnR5IiwiJCRncm91cElkIiwiYmF0Y2hHcm91cElkIiwiJGZpbHRlciIsIiRzZWFyY2giLCJzZWFyY2giLCJub3JtYWxpemVTZWFyY2hUZXJtIiwidW5kZWZpbmVkIiwicHJvbWlzZVZhbHVlIiwicmVxdWVzdFZhbHVlIiwic3VibWl0QmF0Y2giLCJ2YWx1ZSIsImRlc3Ryb3kiLCJnZXRDb3VudEZvcm1hdHRlZCIsImlDb3VudCIsIm9Db3VudEZvcm1hdHRlciIsIk51bWJlckZvcm1hdCIsImdldEludGVnZXJJbnN0YW5jZSIsImdyb3VwaW5nRW5hYmxlZCIsImZvcm1hdCIsImlnbm9yZVByb3BlcnRpZXMiLCJvVGFibGVEZWZpbml0aW9uIiwiZ2V0VGFibGVEZWZpbml0aW9uIiwiYUlnbm9yZVByb3BlcnRpZXMiLCJlbmFibGVBbmFseXRpY3MiLCJlbmFibGVCYXNpY1NlYXJjaCIsImNvbnRyb2wiLCJ0eXBlIiwiRmlsdGVyVXRpbHMiLCJnZXRGaWx0ZXIiLCJpZ25vcmVkUHJvcGVydGllcyIsInRhcmdldENvbnRyb2wiLCJvQ29udHJvbCIsInAxM25Nb2RlIiwiZ2V0UDEzbk1vZGUiLCJwMTNuUHJvcGVydGllcyIsImluY2x1ZGVzIiwiaXNBIiwiZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyIsImZpbHRlciIsInByb3BlcnR5IiwiZmlsdGVyYWJsZSIsIkRlbGVnYXRlVXRpbCIsImdldEN1c3RvbURhdGEiLCJvQ29udHJvbFByb3BlcnR5IiwicHJvcGVydGllc01ldGFkYXRhIiwiZ2V0QWxsRmlsdGVySW5mbyIsIm9JRmlsdGVySW5mbyIsImZpbmRWYWx1ZXNGb3JLZXlSZWN1cnNpdmVseSIsIm9iaiIsImtleSIsImxpc3QiLCJwdXNoIiwiY2hpbGRyZW4iLCJPYmplY3QiLCJrZXlzIiwiY2hpbGQiLCJmaW5kVmFsdWVzIiwiaXNGaWx0ZXJFbGlnaWJsZUZvck9wdGltaXN0aWNCYXRjaCIsIm1kY1RhYmxlIiwiZmlsdGVyQmFyIiwiZmlsdGVyc0Zyb21UYWJsZSIsImZpbHRlcnNDb25kaXRpb25zIiwiZ2V0Q29uZGl0aW9ucyIsImZpbHRlcnNDb25kaXRpb25zUGF0aHMiLCJ0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGgiLCJtZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJmaWx0ZXJQcm9wZXJ0aWVzQXNQb3RlbnRpYWxseVNlbnNpdGl2ZURhdGFPckRhdGVUeXBlIiwiZmlsdGVyc1BhdGhzRnJvbVRhYmxlIiwiZ2V0RmlsdGVyc1BhdGhzRnJvbVRhYmxlIiwiZmlsdGVyc1BhdGhzRnJvbUZpbHRlckJhciIsImdldEZpbHRlcnNQYXRoc0Zyb21GaWx0ZXJCYXIiLCJlZG1EYXRlVHlwZXMiLCJhbGxGaWx0ZXJzUGF0aHMiLCJwb3RlbnRpYWxseVNlbnNpdGl2ZUFubm90YXRpb24iLCJnZXRPYmplY3QiLCJmaWx0ZXJzQW5ub3RhdGlvbnNQYXRocyIsImZpbHRlclBhdGgiLCJnZXRSZWZlcmVuY2VQYXRoc0ZvckZpbHRlcnMiLCJnZXRGaWx0ZXJzIiwiZmlsdGVyUmVzdWx0IiwibGVuZ3RoIiwiaSIsImxlZnQiLCJyaWdodCIsIndoZW5Cb3VuZCIsIl9nZXRPckNyZWF0ZUJvdW5kUHJvbWlzZUluZm8iLCJwcm9taXNlIiwib25UYWJsZUJvdW5kIiwib0JvdW5kUHJvbWlzZUluZm8iLCJyZXNvbHZlIiwiZm5SZXNvbHZlIiwiUHJvbWlzZSIsImlzQm91bmQiLCJ1cGRhdGVGaWx0ZXJzRm9yRXh0ZXJuYWxJRCIsImVudGl0eVR5cGVQYXRoIiwiY29uZGl0aW9uIiwibmVzdGVkRmlsdGVycyIsImV4dGVybmFsSWRQcm9wUGF0aCIsInNQYXRoIiwiJFBhdGgiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvTGlzdFJlcG9ydC9GaWx0ZXJCYXJcIjtcbmltcG9ydCBEZWxlZ2F0ZVV0aWwgZnJvbSBcInNhcC9mZS9tYWNyb3MvRGVsZWdhdGVVdGlsXCI7XG5pbXBvcnQgdHlwZSB7IElGaWx0ZXJDb250cm9sIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSBRdWlja0ZpbHRlclNlbGVjdG9yIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1F1aWNrRmlsdGVyU2VsZWN0b3JcIjtcbmltcG9ydCB0eXBlIFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQVBJXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTnVtYmVyRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvTnVtYmVyRm9ybWF0XCI7XG5pbXBvcnQgdHlwZSBNRENDaGFydCBmcm9tIFwic2FwL3VpL21kYy9DaGFydFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIHsgTURDVGFibGVQcm9wZXJ0eUluZm8gYXMgVGFibGVQcm9wZXJ0eUluZm8gfSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgVGFibGVEZWxlZ2F0ZUJhc2UgZnJvbSBcInNhcC91aS9tZGMvb2RhdGEvdjQvVGFibGVEZWxlZ2F0ZVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IENvbGxlY3Rpb25CaW5kaW5nSW5mb0FQSSwgeyB0eXBlIFNlcmlhbGl6ZWRDb2xsZWN0aW9uQmluZGluZ0luZm8gfSBmcm9tIFwiLi4vQ29sbGVjdGlvbkJpbmRpbmdJbmZvXCI7XG5cbnR5cGUgRmlsdGVySW5mbyA9IHtcblx0ZmlsdGVyczogRmlsdGVyW107XG5cdHNlYXJjaDogc3RyaW5nO1xuXHRiaW5kaW5nUGF0aDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgSW50ZXJuYWxCaW5kaW5nSW5mbyA9IHtcblx0cGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cdGZpbHRlcnM6IEZpbHRlcltdO1xuXHRzZWFyY2g/OiBzdHJpbmcgfCBudWxsO1xuXHRiaW5kaW5nUGF0aD86IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIGdldEhpZGRlbkZpbHRlcnMob1RhYmxlOiBDb250cm9sKTogRmlsdGVyW10ge1xuXHRsZXQgYUZpbHRlcnM6IEZpbHRlcltdID0gW107XG5cdGNvbnN0IGhpZGRlbkZpbHRlcnMgPSBvVGFibGUuZGF0YShcImhpZGRlbkZpbHRlcnNcIik7XG5cdGlmIChoaWRkZW5GaWx0ZXJzICYmIEFycmF5LmlzQXJyYXkoaGlkZGVuRmlsdGVycy5wYXRocykpIHtcblx0XHRoaWRkZW5GaWx0ZXJzLnBhdGhzLmZvckVhY2goZnVuY3Rpb24gKG1QYXRoOiB7IGFubm90YXRpb25QYXRoOiBzdHJpbmcgfSkge1xuXHRcdFx0Y29uc3Qgb1N2RmlsdGVycyA9IENvbW1vblV0aWxzLmdldEZpbHRlcnNGcm9tQW5ub3RhdGlvbihvVGFibGUsIG1QYXRoLmFubm90YXRpb25QYXRoKTtcblx0XHRcdGFGaWx0ZXJzID0gYUZpbHRlcnMuY29uY2F0KG9TdkZpbHRlcnMpO1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBhRmlsdGVycztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGV4dGVybmFsIGZpbHRlcnMgY29uZmlndXJlZCBvbiB0aGUgdGFibGUuXG4gKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlXG4gKiBAcmV0dXJucyAgVGhlIGZpbHRlcnNcbiAqL1xuZnVuY3Rpb24gZ2V0RXh0ZXJuYWxGaWx0ZXJzKHRhYmxlOiBUYWJsZSk6IEZpbHRlcltdIHtcblx0bGV0IGZpbHRlcnM6IEZpbHRlcltdID0gZ2V0SGlkZGVuRmlsdGVycyh0YWJsZSk7XG5cdGNvbnN0IHF1aWNrRmlsdGVyID0gdGFibGUuZ2V0UXVpY2tGaWx0ZXIoKSBhcyBRdWlja0ZpbHRlclNlbGVjdG9yO1xuXHRpZiAocXVpY2tGaWx0ZXIpIHtcblx0XHRmaWx0ZXJzID0gZmlsdGVycy5jb25jYXQoQ29tbW9uVXRpbHMuZ2V0RmlsdGVyc0Zyb21Bbm5vdGF0aW9uKHRhYmxlLCBxdWlja0ZpbHRlci5nZXRTZWxlY3RlZEtleSgpKSk7XG5cdH1cblx0cmV0dXJuIGZpbHRlcnM7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBjb3VudCBvZiB0aGUgT0RhdGEgbGlzdCBiaW5kaW5nLlxuICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSB1c2VkIHRvIGdldCB0aGUgaW5pdGlhbCBPRGF0YSBsaXN0IGJpbmRpbmdcbiAqIEBwYXJhbSBwYWdlQmluZGluZ0NvbnRleHQgVGhlIGJpbmRpbmcgY29udGV4dCBvZiB0aGUgcGFnZVxuICogQHBhcmFtIHBhcmFtcyBDb250YWlucyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXNcbiAqIEBwYXJhbSBwYXJhbXMuYmF0Y2hHcm91cElkIFRoZSBncm91cElkIG9mIHRoZSBiYXRjaCByZXF1ZXN0XG4gKiBAcGFyYW0gcGFyYW1zLmFkZGl0aW9uYWxGaWx0ZXJzIFRoZSBhZGRpdGlvbmFsIGZpbHRlcnMgdG8gYXBwbHkgdG8gdGhlIG9yaWdpbmFsIE9EYXRhIGxpc3QgYmluZGluZ1xuICogQHJldHVybnMgVGhlIGNvdW50XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldExpc3RCaW5kaW5nRm9yQ291bnQoXG5cdHRhYmxlOiBUYWJsZSxcblx0cGFnZUJpbmRpbmdDb250ZXh0OiBDb250ZXh0IHwgbnVsbCB8IHVuZGVmaW5lZCxcblx0cGFyYW1zOiB7IGJhdGNoR3JvdXBJZD86IHN0cmluZzsgYWRkaXRpb25hbEZpbHRlcnM/OiBGaWx0ZXJbXTsgaXRlbUtleT86IHN0cmluZyB9XG4pOiBQcm9taXNlPG51bWJlcj4ge1xuXHRjb25zdCBvRGF0YU1vZGVsID0gdGFibGUuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRjb25zdCB0YWJsZUFQSSA9IHRhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJO1xuXHRjb25zdCBmaWx0ZXJJbmZvID0gdGFibGVVdGlscy5nZXRGaWx0ZXJJbmZvKHRhYmxlKTtcblx0bGV0IGZpbHRlcnMgPSAoQXJyYXkuaXNBcnJheShwYXJhbXMuYWRkaXRpb25hbEZpbHRlcnMpID8gcGFyYW1zLmFkZGl0aW9uYWxGaWx0ZXJzIDogW10pXG5cdFx0LmNvbmNhdChmaWx0ZXJJbmZvLmZpbHRlcnMpXG5cdFx0LmNvbmNhdCh0YWJsZVV0aWxzLmdldFAxM25GaWx0ZXJzKHRhYmxlKSk7XG5cblx0aWYgKHRhYmxlLmdldERhdGFTdGF0ZUluZGljYXRvcigpPy5pc0ZpbHRlcmluZygpKSB7XG5cdFx0Ly8gSW5jbHVkZSBmaWx0ZXJzIG9uIG1lc3NhZ2VTdHJpcFxuXHRcdGNvbnN0IGJpbmRpbmdJbmZvQmFzZTogU2VyaWFsaXplZENvbGxlY3Rpb25CaW5kaW5nSW5mbyA9IHt9O1xuXHRcdFRhYmxlRGVsZWdhdGVCYXNlLnVwZGF0ZUJpbmRpbmdJbmZvLmFwcGx5KHRhYmxlLmdldENvbnRyb2xEZWxlZ2F0ZSgpLCBbdGFibGUsIGJpbmRpbmdJbmZvQmFzZV0pO1xuXHRcdGZpbHRlcnMgPSBmaWx0ZXJzLmNvbmNhdChiaW5kaW5nSW5mb0Jhc2UuZmlsdGVycyB8fCBbXSk7XG5cdH1cblx0Y29uc3QgYmluZGluZ0luZm8gPSB7XG5cdFx0cGF0aDogZmlsdGVySW5mby5iaW5kaW5nUGF0aCA/IGZpbHRlckluZm8uYmluZGluZ1BhdGggOiB0YWJsZUFQSS5nZXRSb3dDb2xsZWN0aW9uUGF0aCgpLFxuXHRcdGZpbHRlcnM6IG5ldyBGaWx0ZXIoe1xuXHRcdFx0ZmlsdGVyczogZmlsdGVycyxcblx0XHRcdGFuZDogdHJ1ZVxuXHRcdH0pXG5cdH07XG5cdHRhYmxlLmdldFBhcmVudCgpPy5maXJlRXZlbnQoXCJiZWZvcmVSZWJpbmRUYWJsZVwiLCB7XG5cdFx0Y29sbGVjdGlvbkJpbmRpbmdJbmZvOiBuZXcgQ29sbGVjdGlvbkJpbmRpbmdJbmZvQVBJKGJpbmRpbmdJbmZvKSxcblx0XHRxdWlja0ZpbHRlcktleTogcGFyYW1zLml0ZW1LZXlcblx0fSk7XG5cblx0Ly8gTmVlZCB0byBwYXNzIGJ5IGEgdGVtcG9yYXJ5IExpc3RCaW5kaW5nIGluIG9yZGVyIHRvIGdldCAkZmlsdGVyIHF1ZXJ5IG9wdGlvbiAoYXMgc3RyaW5nKSB0aGFua3MgdG8gZmV0Y2hGaWx0ZXIgb2YgT2RhdGFMaXN0QmluZGluZ1xuXHRjb25zdCBsaXN0QmluZGluZ1BhdGggPVxuXHRcdHBhZ2VCaW5kaW5nQ29udGV4dCAmJiAhYmluZGluZ0luZm8ucGF0aC5zdGFydHNXaXRoKFwiL1wiKSA/IGAke3BhZ2VCaW5kaW5nQ29udGV4dC5nZXRQYXRoKCl9LyR7YmluZGluZ0luZm8ucGF0aH1gIDogYmluZGluZ0luZm8ucGF0aDtcblx0Y29uc3QgbGlzdEJpbmRpbmcgPSBvRGF0YU1vZGVsLmJpbmRMaXN0KGxpc3RCaW5kaW5nUGF0aCwgdGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0LCBbXSwgYmluZGluZ0luZm8uZmlsdGVycyk7XG5cdGNvbnN0IHN0cmluZ0ZpbHRlcnM6IHN0cmluZ1tdID0gYXdhaXQgKGxpc3RCaW5kaW5nIGFzIE9EYXRhTGlzdEJpbmRpbmcgJiB7IGZldGNoRmlsdGVyOiBGdW5jdGlvbiB9KS5mZXRjaEZpbHRlcihcblx0XHRsaXN0QmluZGluZy5nZXRDb250ZXh0KClcblx0KTtcblx0Y29uc3QgY291bnRCaW5kaW5nID0gb0RhdGFNb2RlbC5iaW5kUHJvcGVydHkoYCR7bGlzdEJpbmRpbmcuZ2V0UGF0aCgpfS8kY291bnRgLCBsaXN0QmluZGluZy5nZXRDb250ZXh0KCksIHtcblx0XHQkJGdyb3VwSWQ6IHBhcmFtcy5iYXRjaEdyb3VwSWQgPz8gXCIkYXV0b1wiLFxuXHRcdCRmaWx0ZXI6IHN0cmluZ0ZpbHRlcnNbMF0sXG5cdFx0JHNlYXJjaDogZmlsdGVySW5mby5zZWFyY2ggPyBDb21tb25VdGlscy5ub3JtYWxpemVTZWFyY2hUZXJtKGZpbHRlckluZm8uc2VhcmNoKSA6IHVuZGVmaW5lZFxuXHR9KTtcblx0Y29uc3QgcHJvbWlzZVZhbHVlID0gY291bnRCaW5kaW5nLnJlcXVlc3RWYWx1ZSgpO1xuXHRpZiAocGFyYW1zLmJhdGNoR3JvdXBJZCAmJiBwYXJhbXMuYmF0Y2hHcm91cElkICE9PSBcIiRhdXRvXCIpIHtcblx0XHRvRGF0YU1vZGVsLnN1Ym1pdEJhdGNoKHBhcmFtcy5iYXRjaEdyb3VwSWQpO1xuXHR9XG5cdGNvbnN0IHZhbHVlID0gYXdhaXQgcHJvbWlzZVZhbHVlO1xuXHRjb3VudEJpbmRpbmcuZGVzdHJveSgpO1xuXHRsaXN0QmluZGluZy5kZXN0cm95KCk7XG5cdHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldENvdW50Rm9ybWF0dGVkKGlDb3VudDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3Qgb0NvdW50Rm9ybWF0dGVyID0gTnVtYmVyRm9ybWF0LmdldEludGVnZXJJbnN0YW5jZSh7IGdyb3VwaW5nRW5hYmxlZDogdHJ1ZSB9KTtcblx0cmV0dXJuIG9Db3VudEZvcm1hdHRlci5mb3JtYXQoaUNvdW50KTtcbn1cbmZ1bmN0aW9uIGdldEZpbHRlckluZm8ob1RhYmxlOiBUYWJsZSwgaWdub3JlUHJvcGVydGllcz86IHN0cmluZ1tdKTogSW50ZXJuYWxCaW5kaW5nSW5mbyB7XG5cdGNvbnN0IG9UYWJsZURlZmluaXRpb24gPSAob1RhYmxlLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5nZXRUYWJsZURlZmluaXRpb24oKTtcblx0bGV0IGFJZ25vcmVQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IGlnbm9yZVByb3BlcnRpZXMgfHwgW107XG5cblx0aWYgKG9UYWJsZURlZmluaXRpb24uZW5hYmxlQW5hbHl0aWNzKSB7XG5cdFx0aWYgKCFvVGFibGVEZWZpbml0aW9uLmVuYWJsZUJhc2ljU2VhcmNoKSB7XG5cdFx0XHQvLyBTZWFyY2ggaXNuJ3QgYWxsb3cgYXMgYSAkYXBwbHkgdHJhbnNmb3JtYXRpb24gZm9yIHRoaXMgdGFibGVcblx0XHRcdGFJZ25vcmVQcm9wZXJ0aWVzID0gYUlnbm9yZVByb3BlcnRpZXMuY29uY2F0KFtcInNlYXJjaFwiXSk7XG5cdFx0fVxuXHRcdGFJZ25vcmVQcm9wZXJ0aWVzID0gYUlnbm9yZVByb3BlcnRpZXMuY29uY2F0KFtcIiRlZGl0U3RhdGVcIl0pO1xuXHR9IGVsc2UgaWYgKG9UYWJsZURlZmluaXRpb24uY29udHJvbC50eXBlID09PSBcIlRyZWVUYWJsZVwiKSB7XG5cdFx0YUlnbm9yZVByb3BlcnRpZXMgPSBhSWdub3JlUHJvcGVydGllcy5jb25jYXQoW1wiJGVkaXRTdGF0ZVwiXSk7XG5cdH1cblx0cmV0dXJuIEZpbHRlclV0aWxzLmdldEZpbHRlckluZm8ob1RhYmxlLmdldEZpbHRlcigpLCB7XG5cdFx0aWdub3JlZFByb3BlcnRpZXM6IGFJZ25vcmVQcm9wZXJ0aWVzLFxuXHRcdHRhcmdldENvbnRyb2w6IG9UYWJsZVxuXHR9KTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYWxsIGZpbHRlcnMgY29uZmlndXJlZCBpbiB0aGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZyBvZiB0aGUgdGFibGUgb3IgY2hhcnQuXG4gKiBAcGFyYW0gb0NvbnRyb2wgVGFibGUgb3IgQ2hhcnQgaW5zdGFuY2VcbiAqIEByZXR1cm5zIEZpbHRlcnMgY29uZmlndXJlZCBpbiB0aGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZyBvZiB0aGUgdGFibGUgb3IgY2hhcnRcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGdldFAxM25GaWx0ZXJzKG9Db250cm9sOiBUYWJsZSB8IE1EQ0NoYXJ0KTogRmlsdGVyW10ge1xuXHRjb25zdCBwMTNuTW9kZSA9IG9Db250cm9sLmdldFAxM25Nb2RlKCk7XG5cdGxldCBwMTNuUHJvcGVydGllczogVGFibGVQcm9wZXJ0eUluZm9bXSB8IFByb3BlcnR5SW5mb1tdIHwgdW5kZWZpbmVkO1xuXHRpZiAocDEzbk1vZGUgJiYgcDEzbk1vZGUuaW5jbHVkZXMoXCJGaWx0ZXJcIikpIHtcblx0XHRpZiAob0NvbnRyb2wuaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdGNvbnN0IHRhYmxlQVBJID0gb0NvbnRyb2wuZ2V0UGFyZW50KCkgYXMgVGFibGVBUEk7XG5cdFx0XHRwMTNuUHJvcGVydGllcyA9IHRhYmxlQVBJLmdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoKS5maWx0ZXIoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0XHRcdHJldHVybiBwcm9wZXJ0eT8uZmlsdGVyYWJsZSAhPT0gZmFsc2U7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cDEzblByb3BlcnRpZXMgPSAoRGVsZWdhdGVVdGlsLmdldEN1c3RvbURhdGE8UHJvcGVydHlJbmZvW10+KG9Db250cm9sLCBcInNhcF9mZV9Db250cm9sRGVsZWdhdGVfcHJvcGVydHlJbmZvTWFwXCIpIHx8IFtdKS5maWx0ZXIoXG5cdFx0XHRcdGZ1bmN0aW9uIChvQ29udHJvbFByb3BlcnR5OiBQcm9wZXJ0eUluZm8pIHtcblx0XHRcdFx0XHRyZXR1cm4gb0NvbnRyb2xQcm9wZXJ0eSAmJiAhKG9Db250cm9sUHJvcGVydHkuZmlsdGVyYWJsZSA9PT0gZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRjb25zdCBmaWx0ZXJJbmZvID0gRmlsdGVyVXRpbHMuZ2V0RmlsdGVySW5mbyhvQ29udHJvbCBhcyB1bmtub3duIGFzIElGaWx0ZXJDb250cm9sLCB7XG5cdFx0XHRwcm9wZXJ0aWVzTWV0YWRhdGE6IHAxM25Qcm9wZXJ0aWVzIGFzIFByb3BlcnR5SW5mb1tdXG5cdFx0fSk7XG5cdFx0aWYgKGZpbHRlckluZm8gJiYgZmlsdGVySW5mby5maWx0ZXJzKSB7XG5cdFx0XHRyZXR1cm4gZmlsdGVySW5mby5maWx0ZXJzO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIGdldEFsbEZpbHRlckluZm8ob1RhYmxlOiBUYWJsZSwgaWdub3JlUHJvcGVydGllcz86IHN0cmluZ1tdKTogSW50ZXJuYWxCaW5kaW5nSW5mbyB7XG5cdGNvbnN0IG9JRmlsdGVySW5mbyA9IHRhYmxlVXRpbHMuZ2V0RmlsdGVySW5mbyhvVGFibGUsIGlnbm9yZVByb3BlcnRpZXMpO1xuXHRyZXR1cm4ge1xuXHRcdGZpbHRlcnM6IG9JRmlsdGVySW5mby5maWx0ZXJzLmNvbmNhdChnZXRFeHRlcm5hbEZpbHRlcnMob1RhYmxlKSwgdGFibGVVdGlscy5nZXRQMTNuRmlsdGVycyhvVGFibGUpKSxcblx0XHRzZWFyY2g6IG9JRmlsdGVySW5mby5zZWFyY2gsXG5cdFx0YmluZGluZ1BhdGg6IG9JRmlsdGVySW5mby5iaW5kaW5nUGF0aFxuXHR9O1xufVxuXG4vKipcbiAqIEZpbmQgYSB2YWx1ZSBpbiBhbiBvYmplY3QuXG4gKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gbG9vayBpbnRvXG4gKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoXG4gKiBAcGFyYW0gbGlzdCBBbiBhcnJheSB0byByZXR1cm4gaWYgb2JqIGlzIHVuZGVmaW5lZFxuICogQHJldHVybnMgUmV0dXJuIGFuIGFycmF5IG9mIGFsbCBrZXlzIGNvbnRlbnRcbiAqL1xuZnVuY3Rpb24gZmluZFZhbHVlc0ZvcktleVJlY3Vyc2l2ZWx5KG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogc3RyaW5nLCBsaXN0OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcblx0aWYgKG9ialtrZXldKSB7XG5cdFx0bGlzdC5wdXNoKG9ialtrZXldIGFzIHN0cmluZyk7XG5cdH1cblx0Y29uc3QgY2hpbGRyZW4gPSBPYmplY3Qua2V5cyhvYmopO1xuXHRmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG5cdFx0aWYgKHR5cGVvZiBvYmpbY2hpbGRdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRsaXN0ID0gbGlzdC5jb25jYXQoZmluZFZhbHVlc0ZvcktleVJlY3Vyc2l2ZWx5KG9ialtjaGlsZF0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleSwgW10pKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGxpc3Q7XG59XG5cbi8qKlxuICogRmluZCBhIHZhbHVlIGludG8gYW4gb2JqZWN0LlxuICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGxvb2sgaW50b1xuICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHNlYXJjaFxuICogQHJldHVybnMgUmV0dXJuIGFuIGFycmF5IG9mIGFsbCBrZXlzIGNvbnRlbnRcbiAqL1xuZnVuY3Rpb24gZmluZFZhbHVlcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZyk6IHN0cmluZ1tdIHtcblx0cmV0dXJuIGZpbmRWYWx1ZXNGb3JLZXlSZWN1cnNpdmVseShvYmosIGtleSwgW10pO1xufVxuXG4vKipcbiAqIENoZWNrIGFsbCBmaWx0ZXIgY29uZGl0aW9ucyBmb3IgZGF0ZSB0eXBlcyBvciBzZW5zaXRpdmUgZGF0YS5cbiAqIEBwYXJhbSBtZGNUYWJsZSBUYWJsZSBvciBDaGFydCBpbnN0YW5jZVxuICogQHBhcmFtIGZpbHRlckJhciBGaWx0ZXJCYXJcbiAqIEByZXR1cm5zIFRydWUgaWYgb25lIGZpbHRlciBoYXMgYSBkYXRlIHR5cGUgb3IgYSBzZW5zaXRpdmUgZGF0YVxuICovXG5mdW5jdGlvbiBpc0ZpbHRlckVsaWdpYmxlRm9yT3B0aW1pc3RpY0JhdGNoKG1kY1RhYmxlOiBUYWJsZSwgZmlsdGVyQmFyOiBGaWx0ZXJCYXIgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcblx0aWYgKCFmaWx0ZXJCYXIpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Y29uc3QgZmlsdGVyc0Zyb21UYWJsZSA9IHRhYmxlVXRpbHMuZ2V0QWxsRmlsdGVySW5mbyhtZGNUYWJsZSkgYXMgdW5rbm93biBhcyBGaWx0ZXJJbmZvO1xuXHRjb25zdCBmaWx0ZXJzQ29uZGl0aW9ucyA9IGZpbHRlckJhci5nZXRDb25kaXRpb25zKCk7XG5cdGNvbnN0IGZpbHRlcnNDb25kaXRpb25zUGF0aHMgPSBPYmplY3Qua2V5cyhmaWx0ZXJzQ29uZGl0aW9ucyk7XG5cdGNvbnN0IHRhYmxlUm93QmluZGluZ3NJbmZvUGF0aCA9IG1kY1RhYmxlLmRhdGEoXCJtZXRhUGF0aFwiKTtcblx0Y29uc3QgbWV0YU1vZGVsID0gbWRjVGFibGUuZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCk7XG5cdGxldCBmaWx0ZXJQcm9wZXJ0aWVzQXNQb3RlbnRpYWxseVNlbnNpdGl2ZURhdGFPckRhdGVUeXBlID0gZmFsc2U7XG5cdGNvbnN0IGZpbHRlcnNQYXRoc0Zyb21UYWJsZSA9IGdldEZpbHRlcnNQYXRoc0Zyb21UYWJsZSh0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGgsIGZpbHRlcnNGcm9tVGFibGUpO1xuXHRjb25zdCBmaWx0ZXJzUGF0aHNGcm9tRmlsdGVyQmFyID0gZ2V0RmlsdGVyc1BhdGhzRnJvbUZpbHRlckJhcih0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGgsIGZpbHRlcnNDb25kaXRpb25zUGF0aHMpO1xuXHRjb25zdCBlZG1EYXRlVHlwZXMgPSBbXCJFZG0uRGF0ZVwiLCBcIkVkbS5EYXRlVGltZU9mZnNldFwiLCBcIkVkbS5UaW1lT2ZEYXlcIl07XG5cdGNvbnN0IGFsbEZpbHRlcnNQYXRocyA9IGZpbHRlcnNQYXRoc0Zyb21GaWx0ZXJCYXIuY29uY2F0KGZpbHRlcnNQYXRoc0Zyb21UYWJsZSk7XG5cdGZvciAoY29uc3QgcG90ZW50aWFsbHlTZW5zaXRpdmVBbm5vdGF0aW9uIG9mIGFsbEZpbHRlcnNQYXRocykge1xuXHRcdGlmIChcblx0XHRcdG1ldGFNb2RlbD8uZ2V0T2JqZWN0KGAke3BvdGVudGlhbGx5U2Vuc2l0aXZlQW5ub3RhdGlvbn1AY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLklzUG90ZW50aWFsbHlTZW5zaXRpdmVgKSB8fFxuXHRcdFx0bWV0YU1vZGVsPy5nZXRPYmplY3QoYCR7cG90ZW50aWFsbHlTZW5zaXRpdmVBbm5vdGF0aW9ufUBjb20uc2FwLnZvY2FidWxhcmllcy5QZXJzb25hbERhdGEudjEuSXNQb3RlbnRpYWxseVBlcnNvbmFsYClcblx0XHQpIHtcblx0XHRcdGZpbHRlclByb3BlcnRpZXNBc1BvdGVudGlhbGx5U2Vuc2l0aXZlRGF0YU9yRGF0ZVR5cGUgPSB0cnVlO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGlmIChlZG1EYXRlVHlwZXMuaW5jbHVkZXMobWV0YU1vZGVsPy5nZXRPYmplY3QoYCR7cG90ZW50aWFsbHlTZW5zaXRpdmVBbm5vdGF0aW9ufS8kVHlwZWApKSkge1xuXHRcdFx0ZmlsdGVyUHJvcGVydGllc0FzUG90ZW50aWFsbHlTZW5zaXRpdmVEYXRhT3JEYXRlVHlwZSA9IHRydWU7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZpbHRlclByb3BlcnRpZXNBc1BvdGVudGlhbGx5U2Vuc2l0aXZlRGF0YU9yRGF0ZVR5cGU7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYW5ub3RhdGlvbiBwYXRocyBvZiBhbGwgZmlsdGVycyBvZiB0aGUgRmlsdGVyIEJhci5cbiAqIEBwYXJhbSB0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGggVGhlIHRhYmxlIG1ldGFQYXRoXG4gKiBAcGFyYW0gZmlsdGVyc0NvbmRpdGlvbnNQYXRocyBUaGUgcGF0aHMgb2YgYWxsIGZpbHRlcnMgY29uZGl0aW9uc1xuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcGF0aHMgb2YgYWxsIGZpbHRlcnNcbiAqL1xuZnVuY3Rpb24gZ2V0RmlsdGVyc1BhdGhzRnJvbUZpbHRlckJhcih0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGg6IHN0cmluZywgZmlsdGVyc0NvbmRpdGlvbnNQYXRoczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG5cdGNvbnN0IGZpbHRlcnNBbm5vdGF0aW9uc1BhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRmb3IgKGNvbnN0IGZpbHRlclBhdGggb2YgZmlsdGVyc0NvbmRpdGlvbnNQYXRocykge1xuXHRcdGZpbHRlcnNBbm5vdGF0aW9uc1BhdGhzLnB1c2goYCR7dGFibGVSb3dCaW5kaW5nc0luZm9QYXRofS8ke2ZpbHRlclBhdGh9YCk7XG5cdH1cblx0cmV0dXJuIGZpbHRlcnNBbm5vdGF0aW9uc1BhdGhzO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhdGhzIG9mIGFsbCBmaWx0ZXJzIGNvbmRpdGlvbnMuXG4gKiBAcGFyYW0gZmlsdGVyIFRoZSBmaWx0ZXIgdG8gZ2V0IHRoZSBwYXRoc1xuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgcGF0aHMgY29uZGl0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRSZWZlcmVuY2VQYXRoc0ZvckZpbHRlcnMoZmlsdGVyOiBGaWx0ZXIpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdGNvbnN0IGZpbHRlcnMgPSBmaWx0ZXIuZ2V0RmlsdGVycygpO1xuXHRsZXQgZmlsdGVyUmVzdWx0ID0ge307XG5cdC8vIGZpbmQgYWxsIGZpbHRlcnMgaW4gbXVsdGkgZmlsdGVyc1xuXHRpZiAoZmlsdGVycykge1xuXHRcdGZpbHRlclJlc3VsdCA9IGdldFJlZmVyZW5jZVBhdGhzRm9yRmlsdGVycyhmaWx0ZXJzW2ZpbHRlcnMubGVuZ3RoIC0gMV0pO1xuXHRcdGZvciAobGV0IGkgPSBmaWx0ZXJzLmxlbmd0aCAtIDI7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRmaWx0ZXJSZXN1bHQgPSB7XG5cdFx0XHRcdGxlZnQ6IGdldFJlZmVyZW5jZVBhdGhzRm9yRmlsdGVycyhmaWx0ZXJzW2ldKSxcblx0XHRcdFx0cmlnaHQ6IGZpbHRlclJlc3VsdFxuXHRcdFx0fTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhdGg6IGZpbHRlci5nZXRQYXRoKClcblx0XHR9O1xuXHR9XG5cdHJldHVybiBmaWx0ZXJSZXN1bHQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYW5ub3RhdGlvbiBwYXRocyBvZiBhbGwgdGFibGUgZmlsdGVycy5cbiAqIEBwYXJhbSB0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGggVGhlIHRhYmxlIG1ldGFQYXRoXG4gKiBAcGFyYW0gZmlsdGVycyBUaGUgZmlsdGVycyB0byBjaGVjayBmb3IgcGF0aHNcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHBhdGhzIG9mIGFsbCBmaWx0ZXJzXG4gKi9cbmZ1bmN0aW9uIGdldEZpbHRlcnNQYXRoc0Zyb21UYWJsZSh0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGg6IHN0cmluZywgZmlsdGVyczogRmlsdGVySW5mbyk6IHN0cmluZ1tdIHtcblx0bGV0IHBhdGhzOiBzdHJpbmdbXTtcblx0Y29uc3QgZmlsdGVyc0Fubm90YXRpb25zUGF0aHM6IHN0cmluZ1tdID0gW107XG5cdGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMuZmlsdGVycykge1xuXHRcdHBhdGhzID0gZmluZFZhbHVlcyhnZXRSZWZlcmVuY2VQYXRoc0ZvckZpbHRlcnMoZmlsdGVyKSwgXCJwYXRoXCIpO1xuXHRcdGZvciAoY29uc3QgZmlsdGVyUGF0aCBvZiBwYXRocykge1xuXHRcdFx0ZmlsdGVyc0Fubm90YXRpb25zUGF0aHMucHVzaChgJHt0YWJsZVJvd0JpbmRpbmdzSW5mb1BhdGh9LyR7ZmlsdGVyUGF0aH1gKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZpbHRlcnNBbm5vdGF0aW9uc1BhdGhzO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCB0aGUgdGFibGUgaXRzZWxmIHdoZW4gdGhlIHRhYmxlIHdhcyBib3VuZC5cbiAqIEBwYXJhbSBvVGFibGUgVGhlIHRhYmxlIHRvIGNoZWNrIGZvciBiaW5kaW5nXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCB3aWxsIGJlIHJlc29sdmVkIHdoZW4gdGFibGUgaXMgYm91bmRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gd2hlbkJvdW5kKG9UYWJsZTogVGFibGUpOiBQcm9taXNlPFRhYmxlPiB7XG5cdHJldHVybiBfZ2V0T3JDcmVhdGVCb3VuZFByb21pc2VJbmZvKG9UYWJsZSkucHJvbWlzZTtcbn1cblxuLyoqXG4gKiBJZiBub3QgeWV0IGhhcHBlbmVkLCBpdCByZXNvbHZlcyB0aGUgdGFibGUgYm91bmQgcHJvbWlzZS5cbiAqIEBwYXJhbSBvVGFibGUgVGhlIHRhYmxlIHRoYXQgd2FzIGJvdW5kXG4gKi9cbmZ1bmN0aW9uIG9uVGFibGVCb3VuZChvVGFibGU6IFRhYmxlKTogdm9pZCB7XG5cdGNvbnN0IG9Cb3VuZFByb21pc2VJbmZvID0gX2dldE9yQ3JlYXRlQm91bmRQcm9taXNlSW5mbyhvVGFibGUpO1xuXHRpZiAob0JvdW5kUHJvbWlzZUluZm8ucmVzb2x2ZSkge1xuXHRcdG9Cb3VuZFByb21pc2VJbmZvLnJlc29sdmUob1RhYmxlKTtcblx0XHRvVGFibGUuZGF0YShcImJvdW5kUHJvbWlzZVJlc29sdmVcIiwgbnVsbCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gX2dldE9yQ3JlYXRlQm91bmRQcm9taXNlSW5mbyhvVGFibGU6IFRhYmxlKTogeyBwcm9taXNlOiBQcm9taXNlPFRhYmxlPjsgcmVzb2x2ZTogRnVuY3Rpb24gfSB7XG5cdGlmICghb1RhYmxlLmRhdGEoXCJib3VuZFByb21pc2VcIikpIHtcblx0XHRsZXQgZm5SZXNvbHZlITogRnVuY3Rpb247XG5cdFx0b1RhYmxlLmRhdGEoXG5cdFx0XHRcImJvdW5kUHJvbWlzZVwiLFxuXHRcdFx0bmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcblx0XHRcdFx0Zm5SZXNvbHZlID0gcmVzb2x2ZTtcblx0XHRcdH0pXG5cdFx0KTtcblx0XHRpZiAoKG9UYWJsZSBhcyB1bmtub3duIGFzIHsgaXNCb3VuZD86ICgpID0+IGJvb2xlYW4gfSkuaXNCb3VuZD8uKCkpIHtcblx0XHRcdGZuUmVzb2x2ZShvVGFibGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvVGFibGUuZGF0YShcImJvdW5kUHJvbWlzZVJlc29sdmVcIiwgZm5SZXNvbHZlKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHsgcHJvbWlzZTogb1RhYmxlLmRhdGEoXCJib3VuZFByb21pc2VcIiksIHJlc29sdmU6IG9UYWJsZS5kYXRhKFwiYm91bmRQcm9taXNlUmVzb2x2ZVwiKSB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVGaWx0ZXJzRm9yRXh0ZXJuYWxJRChtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLCBmaWx0ZXJzOiBDb25kaXRpb25PYmplY3RbXSwgZW50aXR5VHlwZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRmaWx0ZXJzPy5mb3JFYWNoKChjb25kaXRpb24pID0+IHtcblx0XHRjb25zdCBuZXN0ZWRGaWx0ZXJzID0gY29uZGl0aW9uLmdldEZpbHRlcnMoKTtcblxuXHRcdGlmIChuZXN0ZWRGaWx0ZXJzKSB7XG5cdFx0XHR1cGRhdGVGaWx0ZXJzRm9yRXh0ZXJuYWxJRChtZXRhTW9kZWwsIG5lc3RlZEZpbHRlcnMsIGVudGl0eVR5cGVQYXRoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgZXh0ZXJuYWxJZFByb3BQYXRoID0gbWV0YU1vZGVsLmdldE9iamVjdChlbnRpdHlUeXBlUGF0aCArIGNvbmRpdGlvbi5zUGF0aCArIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5FeHRlcm5hbElEXCIpXG5cdFx0XHRcdD8uJFBhdGg7XG5cdFx0XHRpZiAoZXh0ZXJuYWxJZFByb3BQYXRoKSB7XG5cdFx0XHRcdGNvbmRpdGlvbi5zUGF0aCA9IGV4dGVybmFsSWRQcm9wUGF0aDtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG5jb25zdCB0YWJsZVV0aWxzID0ge1xuXHRnZXRDb3VudEZvcm1hdHRlZDogZ2V0Q291bnRGb3JtYXR0ZWQsXG5cdGdldEhpZGRlbkZpbHRlcnM6IGdldEhpZGRlbkZpbHRlcnMsXG5cdGdldExpc3RCaW5kaW5nRm9yQ291bnQ6IGdldExpc3RCaW5kaW5nRm9yQ291bnQsXG5cdGdldEZpbHRlckluZm86IGdldEZpbHRlckluZm8sXG5cdGdldFAxM25GaWx0ZXJzOiBnZXRQMTNuRmlsdGVycyxcblx0Z2V0QWxsRmlsdGVySW5mbzogZ2V0QWxsRmlsdGVySW5mbyxcblx0aXNGaWx0ZXJFbGlnaWJsZUZvck9wdGltaXN0aWNCYXRjaDogaXNGaWx0ZXJFbGlnaWJsZUZvck9wdGltaXN0aWNCYXRjaCxcblx0d2hlbkJvdW5kOiB3aGVuQm91bmQsXG5cdG9uVGFibGVCb3VuZDogb25UYWJsZUJvdW5kLFxuXHR1cGRhdGVGaWx0ZXJzRm9yRXh0ZXJuYWxJRDogdXBkYXRlRmlsdGVyc0ZvckV4dGVybmFsSURcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRhYmxlVXRpbHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFtQ0EsU0FBU0EsZ0JBQWdCQSxDQUFDQyxNQUFlLEVBQVk7SUFDcEQsSUFBSUMsUUFBa0IsR0FBRyxFQUFFO0lBQzNCLE1BQU1DLGFBQWEsR0FBR0YsTUFB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
|
|
@@ -12,12 +12,13 @@ import type FilterBar from "sap/ui/mdc/FilterBar";
|
|
|
12
12
|
import type Table from "sap/ui/mdc/Table";
|
|
13
13
|
import type { MDCTablePropertyInfo as TablePropertyInfo } from "sap/ui/mdc/Table";
|
|
14
14
|
import type { ConditionObject } from "sap/ui/mdc/condition/Condition";
|
|
15
|
+
import TableDelegateBase from "sap/ui/mdc/odata/v4/TableDelegate";
|
|
15
16
|
import type Context from "sap/ui/model/Context";
|
|
16
17
|
import Filter from "sap/ui/model/Filter";
|
|
17
18
|
import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
18
19
|
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
19
20
|
import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
20
|
-
import CollectionBindingInfoAPI from "../CollectionBindingInfo";
|
|
21
|
+
import CollectionBindingInfoAPI, { type SerializedCollectionBindingInfo } from "../CollectionBindingInfo";
|
|
21
22
|
|
|
22
23
|
type FilterInfo = {
|
|
23
24
|
filters: Filter[];
|
|
@@ -75,9 +76,16 @@ async function getListBindingForCount(
|
|
|
75
76
|
const oDataModel = table.getModel() as ODataModel;
|
|
76
77
|
const tableAPI = table.getParent() as TableAPI;
|
|
77
78
|
const filterInfo = tableUtils.getFilterInfo(table);
|
|
78
|
-
|
|
79
|
+
let filters = (Array.isArray(params.additionalFilters) ? params.additionalFilters : [])
|
|
79
80
|
.concat(filterInfo.filters)
|
|
80
81
|
.concat(tableUtils.getP13nFilters(table));
|
|
82
|
+
|
|
83
|
+
if (table.getDataStateIndicator()?.isFiltering()) {
|
|
84
|
+
// Include filters on messageStrip
|
|
85
|
+
const bindingInfoBase: SerializedCollectionBindingInfo = {};
|
|
86
|
+
TableDelegateBase.updateBindingInfo.apply(table.getControlDelegate(), [table, bindingInfoBase]);
|
|
87
|
+
filters = filters.concat(bindingInfoBase.filters || []);
|
|
88
|
+
}
|
|
81
89
|
const bindingInfo = {
|
|
82
90
|
path: filterInfo.bindingPath ? filterInfo.bindingPath : tableAPI.getRowCollectionPath(),
|
|
83
91
|
filters: new Filter({
|
|
@@ -85,12 +93,10 @@ async function getListBindingForCount(
|
|
|
85
93
|
and: true
|
|
86
94
|
})
|
|
87
95
|
};
|
|
88
|
-
table
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
quickFilterKey: params.itemKey
|
|
93
|
-
});
|
|
96
|
+
table.getParent()?.fireEvent("beforeRebindTable", {
|
|
97
|
+
collectionBindingInfo: new CollectionBindingInfoAPI(bindingInfo),
|
|
98
|
+
quickFilterKey: params.itemKey
|
|
99
|
+
});
|
|
94
100
|
|
|
95
101
|
// Need to pass by a temporary ListBinding in order to get $filter query option (as string) thanks to fetchFilter of OdataListBinding
|
|
96
102
|
const listBindingPath =
|