@sapui5/sap.fe.core 1.141.2 → 1.142.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +4 -1
- package/src/sap/fe/core/ActionRuntime.js +48 -23
- package/src/sap/fe/core/ActionRuntime.ts +61 -35
- package/src/sap/fe/core/AppComponent.js +76 -6
- package/src/sap/fe/core/AppComponent.ts +94 -8
- package/src/sap/fe/core/AppStateHandler.js +9 -8
- package/src/sap/fe/core/AppStateHandler.ts +13 -9
- package/src/sap/fe/core/BaseController.js +8 -5
- package/src/sap/fe/core/BaseController.ts +6 -1
- package/src/sap/fe/core/CommonUtils.js +4 -123
- package/src/sap/fe/core/CommonUtils.ts +3 -172
- package/src/sap/fe/core/ExtensionAPI.js +3 -10
- package/src/sap/fe/core/ExtensionAPI.ts +2 -14
- package/src/sap/fe/core/PageController.js +64 -43
- package/src/sap/fe/core/PageController.ts +62 -47
- package/src/sap/fe/core/TemplateComponent.js +20 -1
- package/src/sap/fe/core/TemplateComponent.ts +24 -2
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +37 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +47 -31
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +4 -0
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +4 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -0
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +4 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -0
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +7 -5
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +22 -2
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +82 -39
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +91 -54
- package/src/sap/fe/core/controllerextensions/EditFlow.js +25 -3
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +27 -3
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +9 -7
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +17 -5
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +37 -18
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +49 -17
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +30 -15
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +32 -14
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +9 -10
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +8 -9
- package/src/sap/fe/core/controllerextensions/Paginator.js +2 -2
- package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -2
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +5 -1
- package/src/sap/fe/core/controllerextensions/Recommendations.js +3 -3
- package/src/sap/fe/core/controllerextensions/Recommendations.ts +2 -2
- package/src/sap/fe/core/controllerextensions/Routing.js +9 -5
- package/src/sap/fe/core/controllerextensions/Routing.ts +7 -7
- package/src/sap/fe/core/controllerextensions/Share.js +5 -5
- package/src/sap/fe/core/controllerextensions/Share.ts +4 -4
- package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +17 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +3 -3
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +3 -2
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +33 -11
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +45 -14
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +37 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +41 -8
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -4
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +6 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +7 -7
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +6 -5
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +2 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +1 -0
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +10 -6
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +6 -5
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +11 -9
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +22 -9
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +9 -4
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +10 -4
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +31 -2
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +34 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +7 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +37 -0
- package/src/sap/fe/core/converters/ManifestWrapper.js +29 -9
- package/src/sap/fe/core/converters/ManifestWrapper.ts +29 -11
- package/src/sap/fe/core/converters/annotations/DataField.js +46 -19
- package/src/sap/fe/core/converters/annotations/DataField.ts +93 -19
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +88 -35
- package/src/sap/fe/core/converters/controls/Common/Action.js +57 -20
- package/src/sap/fe/core/converters/controls/Common/Action.ts +71 -21
- package/src/sap/fe/core/converters/controls/Common/Chart.js +13 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -4
- package/src/sap/fe/core/converters/controls/Common/Form.js +18 -3
- package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js +89 -57
- package/src/sap/fe/core/converters/controls/Common/Table.ts +110 -56
- package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.js +243 -0
- package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.ts +309 -0
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +142 -58
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +172 -78
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +12 -18
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +13 -27
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -16
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +6 -17
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +16 -5
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +16 -5
- package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +11 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +27 -3
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +28 -1
- package/src/sap/fe/core/converters/helpers/ID.js +3 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +5 -2
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +7 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +11 -3
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +12 -4
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +19 -8
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +18 -7
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +8 -3
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +7 -2
- package/src/sap/fe/core/formatters/FPMFormatter.js +2 -2
- package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
- package/src/sap/fe/core/fpm/Component.js +8 -1
- package/src/sap/fe/core/fpm/Component.ts +8 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +79 -25
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +91 -32
- package/src/sap/fe/core/helpers/ManifestHelper.js +6 -3
- package/src/sap/fe/core/helpers/ManifestHelper.ts +3 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js +12 -3
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +11 -3
- package/src/sap/fe/core/helpers/ModelHelper.js +48 -9
- package/src/sap/fe/core/helpers/ModelHelper.ts +55 -10
- package/src/sap/fe/core/helpers/TypeGuards.js +12 -2
- package/src/sap/fe/core/helpers/TypeGuards.ts +10 -1
- package/src/sap/fe/core/helpers/WebSocket.js +6 -7
- package/src/sap/fe/core/helpers/WebSocket.ts +10 -6
- package/src/sap/fe/core/library.js +30 -3
- package/src/sap/fe/core/library.ts +28 -1
- package/src/sap/fe/core/messagebundle.properties +8 -1
- package/src/sap/fe/core/messagebundle_ar.properties +7 -0
- package/src/sap/fe/core/messagebundle_bg.properties +10 -3
- package/src/sap/fe/core/messagebundle_ca.properties +7 -0
- package/src/sap/fe/core/messagebundle_cnr.properties +7 -0
- package/src/sap/fe/core/messagebundle_cs.properties +7 -0
- package/src/sap/fe/core/messagebundle_cy.properties +8 -1
- package/src/sap/fe/core/messagebundle_da.properties +7 -0
- package/src/sap/fe/core/messagebundle_de.properties +7 -0
- package/src/sap/fe/core/messagebundle_el.properties +7 -0
- package/src/sap/fe/core/messagebundle_en.properties +8 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +7 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +5 -0
- package/src/sap/fe/core/messagebundle_es.properties +8 -1
- package/src/sap/fe/core/messagebundle_es_MX.properties +7 -0
- package/src/sap/fe/core/messagebundle_et.properties +7 -0
- package/src/sap/fe/core/messagebundle_fi.properties +7 -0
- package/src/sap/fe/core/messagebundle_fr.properties +16 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +7 -0
- package/src/sap/fe/core/messagebundle_hi.properties +8 -1
- package/src/sap/fe/core/messagebundle_hr.properties +7 -0
- package/src/sap/fe/core/messagebundle_hu.properties +7 -0
- package/src/sap/fe/core/messagebundle_id.properties +7 -0
- package/src/sap/fe/core/messagebundle_it.properties +7 -0
- package/src/sap/fe/core/messagebundle_iw.properties +7 -0
- package/src/sap/fe/core/messagebundle_ja.properties +8 -1
- package/src/sap/fe/core/messagebundle_kk.properties +7 -0
- package/src/sap/fe/core/messagebundle_ko.properties +7 -0
- package/src/sap/fe/core/messagebundle_lt.properties +7 -0
- package/src/sap/fe/core/messagebundle_lv.properties +7 -0
- package/src/sap/fe/core/messagebundle_mk.properties +7 -0
- package/src/sap/fe/core/messagebundle_ms.properties +7 -0
- package/src/sap/fe/core/messagebundle_nl.properties +7 -0
- package/src/sap/fe/core/messagebundle_no.properties +7 -0
- package/src/sap/fe/core/messagebundle_pl.properties +7 -0
- package/src/sap/fe/core/messagebundle_pt.properties +7 -0
- package/src/sap/fe/core/messagebundle_pt_PT.properties +7 -0
- package/src/sap/fe/core/messagebundle_ro.properties +7 -0
- package/src/sap/fe/core/messagebundle_ru.properties +7 -0
- package/src/sap/fe/core/messagebundle_sh.properties +7 -0
- package/src/sap/fe/core/messagebundle_sk.properties +7 -0
- package/src/sap/fe/core/messagebundle_sl.properties +7 -0
- package/src/sap/fe/core/messagebundle_sr.properties +7 -0
- package/src/sap/fe/core/messagebundle_sv.properties +7 -0
- package/src/sap/fe/core/messagebundle_th.properties +7 -0
- package/src/sap/fe/core/messagebundle_tr.properties +7 -0
- package/src/sap/fe/core/messagebundle_uk.properties +7 -0
- package/src/sap/fe/core/messagebundle_vi.properties +7 -0
- package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -1
- package/src/sap/fe/core/messagebundle_zh_TW.properties +7 -0
- package/src/sap/fe/core/rootView/Fcl.controller.js +21 -7
- package/src/sap/fe/core/rootView/Fcl.controller.ts +28 -6
- package/src/sap/fe/core/rootView/RootViewBaseController.js +96 -88
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +106 -96
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +14 -10
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -10
- package/src/sap/fe/core/services/RoutingServiceFactory.js +16 -7
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +23 -10
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +9 -7
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +13 -8
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +62 -6
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +74 -11
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +33 -15
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +31 -11
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +4 -5
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +4 -6
- package/src/sap/fe/core/templating/UIFormatters.js +17 -2
- package/src/sap/fe/core/templating/UIFormatters.ts +25 -1
- package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.js +10 -0
- package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.ts +369 -0
- package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.js +9 -0
- package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.ts +49 -0
- package/ui5.yaml +2 -0
|
@@ -162,7 +162,7 @@ export const FieldEditMode = {
|
|
|
162
162
|
export const getDisplayMode = function (
|
|
163
163
|
oDataModelObjectPath: DataModelObjectPath<Property | DataFieldAbstractTypes | DataPointTypeTypes>
|
|
164
164
|
): DisplayMode {
|
|
165
|
-
return DisplayModeFormatter.getDisplayMode(oDataModelObjectPath.targetObject, oDataModelObjectPath);
|
|
165
|
+
return DisplayModeFormatter.getDisplayMode(oDataModelObjectPath.targetObject, oDataModelObjectPath.targetEntityType);
|
|
166
166
|
};
|
|
167
167
|
export const getEditableExpressionAsObject = function (
|
|
168
168
|
oPropertyPath: PropertyOrPath<Property>,
|
|
@@ -1010,3 +1010,27 @@ export const getVisibleExpressionForBreadcrumbs = function (viewData: ViewData):
|
|
|
1010
1010
|
? "{fclhelper>/breadCrumbIsVisible}"
|
|
1011
1011
|
: !!viewData.breadcrumbsHierarchyMode;
|
|
1012
1012
|
};
|
|
1013
|
+
|
|
1014
|
+
/**
|
|
1015
|
+
* Get the tooltip value from the data model path or property data model path.
|
|
1016
|
+
* @param dataModelPath
|
|
1017
|
+
* @param propertyDataModelPath
|
|
1018
|
+
* @returns The tooltip binding expression
|
|
1019
|
+
*/
|
|
1020
|
+
export const getTooltipValue = function (
|
|
1021
|
+
dataModelPath: DataModelObjectPath<DataField | DataPointType> | undefined,
|
|
1022
|
+
propertyDataModelPath?: DataModelObjectPath<Property> | undefined
|
|
1023
|
+
): BindingToolkitExpression<string> | undefined {
|
|
1024
|
+
let result = dataModelPath?.targetObject?.annotations?.Common?.QuickInfo
|
|
1025
|
+
? getExpressionFromAnnotation(dataModelPath.targetObject?.annotations?.Common?.QuickInfo, getRelativePaths(dataModelPath))
|
|
1026
|
+
: undefined;
|
|
1027
|
+
if (result == undefined) {
|
|
1028
|
+
result = propertyDataModelPath?.targetObject?.annotations?.Common?.QuickInfo
|
|
1029
|
+
? getExpressionFromAnnotation(
|
|
1030
|
+
propertyDataModelPath.targetObject?.annotations?.Common?.QuickInfo,
|
|
1031
|
+
getRelativePaths(propertyDataModelPath)
|
|
1032
|
+
)
|
|
1033
|
+
: undefined;
|
|
1034
|
+
}
|
|
1035
|
+
return result;
|
|
1036
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define([], function () {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
// This is autogenerated, do not edit
|
|
9
|
+
}, false);
|
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJzYXAuZmUuY29yZS1hdXRvLWV4dC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgaXMgYXV0b2dlbmVyYXRlZCwgZG8gbm90IGVkaXRcblxuZGVjbGFyZSBtb2R1bGUgXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9NZXNzYWdlSGFuZGxlck92ZXJyaWRlc1wiIHtcblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIG1lc3NhZ2UgZGV0YWlscyByZWxldmFudCBmb3IgdGhlIE1lc3NhZ2VCdXR0b24gYnVpbGRpbmcgYmxvY2sgdG8gZGlzcGxheSBhIHBvcG92ZXIuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGV4cG9ydCB0eXBlIE1lc3NhZ2VEZXRhaWwgPSB7XG5cdFx0bWVzc2FnZTogTWVzc2FnZTtcblx0XHRncm91cE5hbWU/OiBzdHJpbmc7XG5cdFx0YWN0aXZlVGl0bGVIYW5kbGVyPzogRnVuY3Rpb247XG5cdH07XG5cdGltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuXHRleHBvcnQgZGVmYXVsdCBpbnRlcmZhY2UgTWVzc2FnZUhhbmRsZXJPdmVycmlkZXMge1xuXHRcdC8qKlxuXHRcdCAqIEFsbG93cyB0aGUgY29uc3VtZXIgb2YgdGhlIE1lc3NhZ2VCdXR0b24gYnVpbGRpbmcgYmxvY2sgdG8gZGVjaWRlIHdoaWNoIGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biBhbmQgaG93LlxuXHRcdCAqXG5cdFx0ICogVGhpcyBob29rIGlzIGNhbGxlZCB3aGVuIHRoZSBNZXNzYWdlQnV0dG9uIGJ1aWxkaW5nIGJsb2NrIGRldGVjdHMgYSBjaGFuZ2UgaW4gdGhlIG1lc3NhZ2UgbW9kZWwuXG5cdFx0ICogVGhlIGhvb2tzIGFsbG93IHlvdSB0byBkZWZpbmUgdGhlIGJlaGF2aW9yIGZvciBtZXNzYWdlcyBpbiB0aGUgTWVzc2FnZUJ1dHRvbiBidWlsZGluZyBibG9jay5cblx0XHQgKlxuXHRcdCAqIENvbnN1bWVycyBhcmUgYWJsZSB0byBkbyB0aGUgZm9sbG93aW5nIHdpdGggdGhpcyBob29rOlxuXHRcdCAqXG5cdFx0ICogMS4gRmlsdGVyIG91dCBtZXNzYWdlcyBzbyB0aGF0IHRoZXkgYXJlIG5vdCBzaG93biBvbiB0aGUgbWVzc2FnZSBidXR0b24uXG5cdFx0ICogMi4gR3JvdXAgbWVzc2FnZXMgYmFzZWQgb24gdGhlaXIgVUkuXG5cdFx0ICogMy4gUHJvdmlkZSBhIHByZXNzZXIgaGFuZGxlciBpZiB0aGUgbWVzc2FnZSBzaG91bGQgZGlzcGxheSBhcyBhIGxpbmsuXG5cdFx0ICogQHBhcmFtIF9tZXNzYWdlRGV0YWlscyBPYmplY3QgY29udGFpbmluZyB0aGUgZGV0YWlscyByZWxhdGVkIHRvIHRoZSBtZXNzYWdlLlxuXHRcdCAqIEBwYXJhbSBfbWVzc2FnZURldGFpbHMubWVzc2FnZSBUaGUgbWVzc2FnZSBmcm9tIHRoZSBtZXNzYWdlLiBJdCBtdXN0IG5vdCBiZSBtb2RpZmllZCBkaXJlY3RseS5cblx0XHQgKiBAcGFyYW0gX21lc3NhZ2VEZXRhaWxzLmdyb3VwTmFtZSBUaGUgZ3JvdXAgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgbWVzc2FnZS5cblx0XHQgKiBAcGFyYW0gX21lc3NhZ2VEZXRhaWxzLmFjdGl2ZVRpdGxlSGFuZGxlciBGdW5jdGlvbiB0byBoYW5kbGUgdGhlIGNsaWNrIGV2ZW50IG9uIGEgbWVzc2FnZSBpbiB0aGUgTWVzc2FnZUJ1dHRvbiBidWlsZGluZyBibG9jay5cblx0XHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCBtdXN0IGJlIHJldHVybmVkIGJ5IHRoZSBvdmVycmlkZGVuIG1ldGhvZC5cblx0XHQgKiBAcHVibGljXG5cdFx0ICovXG5cdFx0YmVmb3JlU2hvd01lc3NhZ2VCdXR0b24oX21lc3NhZ2VEZXRhaWxzOiBNZXNzYWdlRGV0YWlsW10pOiBQcm9taXNlPHZvaWQ+O1xuXHR9XG59XG5cbmRlY2xhcmUgbW9kdWxlIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dPdmVycmlkZXNcIiB7XG5cdGltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBDb250ZXh0IH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5cdGV4cG9ydCBkZWZhdWx0IGludGVyZmFjZSBFZGl0Rmxvd092ZXJyaWRlcyB7XG5cdFx0LyoqXG5cdFx0ICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBpbnRlcmNlcHQgdGhlICdDcmVhdGUnIGFjdGlvbi4gWW91IGNhbiBleGVjdXRlIGN1c3RvbSBjb2RpbmcgaW4gdGhpcyBmdW5jdGlvbi5cblx0XHQgKiBUaGUgZnJhbWV3b3JrIHdhaXRzIGZvciB0aGUgcmV0dXJuZWQgcHJvbWlzZSB0byBiZSByZXNvbHZlZCBiZWZvcmUgY29udGludWluZyB0aGUgJ0NyZWF0ZScgYWN0aW9uLlxuXHRcdCAqIElmIHlvdSByZWplY3QgdGhlIHByb21pc2UsIHRoZSAnQ3JlYXRlJyBhY3Rpb24gaXMgc3RvcHBlZC5cblx0XHQgKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0XHQgKiBUaGUgb3ZlcnJpZGUgZXhlY3V0aW9uIGlzOiB7QGxpbmsgc2FwLnVpLmNvcmUubXZjLk92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyfS5cblx0XHQgKiBAcGFyYW0gX21QYXJhbWV0ZXJzIE9iamVjdCBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBvbkJlZm9yZUNyZWF0ZVxuXHRcdCAqIEBwYXJhbSBfbVBhcmFtZXRlcnMuY29udGV4dFBhdGggUGF0aCBwb2ludGluZyB0byB0aGUgY29udGV4dCBvbiB3aGljaCBDcmVhdGUgYWN0aW9uIGlzIHRyaWdnZXJlZFxuXHRcdCAqIEBwYXJhbSBfbVBhcmFtZXRlcnMuY3JlYXRlUGFyYW1ldGVycyBBcnJheSBvZiB2YWx1ZXMgdGhhdCBhcmUgZmlsbGVkIGluIHRoZSBBY3Rpb24gUGFyYW1ldGVyIERpYWxvZ1xuXHRcdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0byBiZSByZXR1cm5lZCBieSB0aGUgb3ZlcnJpZGRlbiBtZXRob2QuIElmIHJlc29sdmVkLCB0aGUgJ0NyZWF0ZScgYWN0aW9uIGlzIHRyaWdnZXJlZC4gSWYgcmVqZWN0ZWQsIHRoZSAnQ3JlYXRlJyBhY3Rpb24gaXMgbm90IHRyaWdnZXJlZC5cblx0XHQgKiBAcHVibGljXG5cdFx0ICogQHNpbmNlIDEuOTguMFxuXHRcdCAqL1xuXHRcdG9uQmVmb3JlQ3JlYXRlKF9tUGFyYW1ldGVycz86IHsgY29udGV4dFBhdGg/OiBzdHJpbmc7IGNyZWF0ZVBhcmFtZXRlcnM/OiB1bmtub3duW10gfSk6IFByb21pc2U8dm9pZD47XG5cdFx0LyoqXG5cdFx0ICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBpbnRlcmNlcHQgdGhlICdFZGl0JyBhY3Rpb24uIFlvdSBjYW4gZXhlY3V0ZSBjdXN0b20gY29kaW5nIGluIHRoaXMgZnVuY3Rpb24uXG5cdFx0ICogVGhlIGZyYW1ld29yayB3YWl0cyBmb3IgdGhlIHJldHVybmVkIHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgYmVmb3JlIGNvbnRpbnVpbmcgdGhlICdFZGl0JyBhY3Rpb24uXG5cdFx0ICogSWYgeW91IHJlamVjdCB0aGUgcHJvbWlzZSwgdGhlICdFZGl0JyBhY3Rpb24gaXMgc3RvcHBlZCBhbmQgdGhlIHVzZXIgc3RheXMgaW4gZGlzcGxheSBtb2RlLlxuXHRcdCAqXG5cdFx0ICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBpbmRpdmlkdWFsbHkgb3ZlcnJpZGRlbiBieSBjb25zdW1pbmcgY29udHJvbGxlcnMsIGJ1dCBub3QgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LlxuXHRcdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHRcdCAqIEBwYXJhbSBfbVBhcmFtZXRlcnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIG9uQmVmb3JlRWRpdFxuXHRcdCAqIEBwYXJhbSBfbVBhcmFtZXRlcnMuY29udGV4dCBQYWdlIGNvbnRleHQgdGhhdCBpcyBnb2luZyB0byBiZSBlZGl0ZWQuXG5cdFx0ICogQHJldHVybnMgQSBwcm9taXNlIHRvIGJlIHJldHVybmVkIGJ5IHRoZSBvdmVycmlkZGVuIG1ldGhvZC4gSWYgcmVzb2x2ZWQsIHRoZSAnRWRpdCcgYWN0aW9uIGlzIHRyaWdnZXJlZC4gSWYgcmVqZWN0ZWQsIHRoZSAnRWRpdCcgYWN0aW9uIGlzIG5vdCB0cmlnZ2VyZWQgYW5kIHRoZSB1c2VyIHN0YXlzIGluIGRpc3BsYXkgbW9kZS5cblx0XHQgKiBAcHVibGljXG5cdFx0ICogQHNpbmNlIDEuOTguMFxuXHRcdCAqL1xuXHRcdG9uQmVmb3JlRWRpdChfbVBhcmFtZXRlcnM/OiB7IGNvbnRleHQ/OiBDb250ZXh0IH0pOiBQcm9taXNlPHZvaWQ+O1xuXHRcdC8qKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gaW50ZXJjZXB0IHRoZSAnU2F2ZScgYWN0aW9uLiBZb3UgY2FuIGV4ZWN1dGUgY3VzdG9tIGNvZGluZyBpbiB0aGlzIGZ1bmN0aW9uLlxuXHRcdCAqIFRoZSBmcmFtZXdvcmsgd2FpdHMgZm9yIHRoZSByZXR1cm5lZCBwcm9taXNlIHRvIGJlIHJlc29sdmVkIGJlZm9yZSBjb250aW51aW5nIHRoZSAnU2F2ZScgYWN0aW9uLlxuXHRcdCAqIElmIHlvdSByZWplY3QgdGhlIHByb21pc2UsIHRoZSAnU2F2ZScgYWN0aW9uIGlzIHN0b3BwZWQgYW5kIHRoZSB1c2VyIHN0YXlzIGluIGVkaXQgbW9kZS5cblx0XHQgKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0XHQgKiBUaGUgb3ZlcnJpZGUgZXhlY3V0aW9uIGlzOiB7QGxpbmsgc2FwLnVpLmNvcmUubXZjLk92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyfS5cblx0XHQgKiBAcGFyYW0gX21QYXJhbWV0ZXJzIE9iamVjdCBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBvbkJlZm9yZVNhdmVcblx0XHQgKiBAcGFyYW0gX21QYXJhbWV0ZXJzLmNvbnRleHQgUGFnZSBjb250ZXh0IHRoYXQgaXMgZ29pbmcgdG8gYmUgc2F2ZWQuXG5cdFx0ICogQHJldHVybnMgQSBwcm9taXNlIHRvIGJlIHJldHVybmVkIGJ5IHRoZSBvdmVycmlkZGVuIG1ldGhvZC4gSWYgcmVzb2x2ZWQsIHRoZSAnU2F2ZScgYWN0aW9uIGlzIHRyaWdnZXJlZC4gSWYgcmVqZWN0ZWQsIHRoZSAnU2F2ZScgYWN0aW9uIGlzIG5vdCB0cmlnZ2VyZWQgYW5kIHRoZSB1c2VyIHN0YXlzIGluIGVkaXQgbW9kZS5cblx0XHQgKiBAcHVibGljXG5cdFx0ICogQHNpbmNlIDEuOTAuMFxuXHRcdCAqL1xuXHRcdG9uQmVmb3JlU2F2ZShfbVBhcmFtZXRlcnM/OiB7IGNvbnRleHQ/OiBDb250ZXh0IH0pOiBQcm9taXNlPHZvaWQ+O1xuXHRcdC8qKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gaW50ZXJjZXB0IHRoZSAnRGlzY2FyZCcgYWN0aW9uLiBZb3UgY2FuIGV4ZWN1dGUgY3VzdG9tIGNvZGluZyBpbiB0aGlzIGZ1bmN0aW9uLlxuXHRcdCAqIFRoZSBmcmFtZXdvcmsgd2FpdHMgZm9yIHRoZSByZXR1cm5lZCBwcm9taXNlIHRvIGJlIHJlc29sdmVkIGJlZm9yZSBjb250aW51aW5nIHRoZSAnRGlzY2FyZCcgYWN0aW9uLlxuXHRcdCAqIElmIHlvdSByZWplY3QgdGhlIHByb21pc2UsIHRoZSAnRGlzY2FyZCcgYWN0aW9uIGlzIHN0b3BwZWQgYW5kIHRoZSB1c2VyIHN0YXlzIGluIGVkaXQgbW9kZS5cblx0XHQgKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0XHQgKiBUaGUgb3ZlcnJpZGUgZXhlY3V0aW9uIGlzOiB7QGxpbmsgc2FwLnVpLmNvcmUubXZjLk92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyfS5cblx0XHQgKiBAcGFyYW0gX21QYXJhbWV0ZXJzIE9iamVjdCBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBvbkJlZm9yZURpc2NhcmRcblx0XHQgKiBAcGFyYW0gX21QYXJhbWV0ZXJzLmNvbnRleHQgUGFnZSBjb250ZXh0IHRoYXQgaXMgZ29pbmcgdG8gYmUgZGlzY2FyZGVkLlxuXHRcdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0byBiZSByZXR1cm5lZCBieSB0aGUgb3ZlcnJpZGRlbiBtZXRob2QuIElmIHJlc29sdmVkLCB0aGUgJ0Rpc2NhcmQnIGFjdGlvbiBpcyB0cmlnZ2VyZWQuIElmIHJlamVjdGVkLCB0aGUgJ0Rpc2NhcmQnIGFjdGlvbiBpcyBub3QgdHJpZ2dlcmVkIGFuZCB0aGUgdXNlciBzdGF5cyBpbiBlZGl0IG1vZGUuXG5cdFx0ICogQHB1YmxpY1xuXHRcdCAqIEBzaW5jZSAxLjk4LjBcblx0XHQgKi9cblx0XHRvbkJlZm9yZURpc2NhcmQoX21QYXJhbWV0ZXJzPzogeyBjb250ZXh0PzogQ29udGV4dCB9KTogUHJvbWlzZTx2b2lkPjtcblx0XHQvKipcblx0XHQgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGludGVyY2VwdCB0aGUgJ0RlbGV0ZScgYWN0aW9uLiBZb3UgY2FuIGV4ZWN1dGUgY3VzdG9tIGNvZGluZyBpbiB0aGlzIGZ1bmN0aW9uLlxuXHRcdCAqIFRoZSBmcmFtZXdvcmsgd2FpdHMgZm9yIHRoZSByZXR1cm5lZCBwcm9taXNlIHRvIGJlIHJlc29sdmVkIGJlZm9yZSBjb250aW51aW5nIHRoZSAnRGVsZXRlJyBhY3Rpb24uXG5cdFx0ICogSWYgeW91IHJlamVjdCB0aGUgcHJvbWlzZSwgdGhlICdEZWxldGUnIGFjdGlvbiBpcyBzdG9wcGVkLlxuXHRcdCAqXG5cdFx0ICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBpbmRpdmlkdWFsbHkgb3ZlcnJpZGRlbiBieSBjb25zdW1pbmcgY29udHJvbGxlcnMsIGJ1dCBub3QgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LlxuXHRcdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHRcdCAqIEBwYXJhbSBfbVBhcmFtZXRlcnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIG9uQmVmb3JlRGVsZXRlXG5cdFx0ICogQHBhcmFtIF9tUGFyYW1ldGVycy5jb250ZXh0cyBBbiBhcnJheSBvZiBjb250ZXh0cyB0aGF0IGFyZSBnb2luZyB0byBiZSBkZWxldGVkXG5cdFx0ICogQHJldHVybnMgQSBwcm9taXNlIHRvIGJlIHJldHVybmVkIGJ5IHRoZSBvdmVycmlkZGVuIG1ldGhvZC4gSWYgcmVzb2x2ZWQsIHRoZSAnRGVsZXRlJyBhY3Rpb24gaXMgdHJpZ2dlcmVkLiBJZiByZWplY3RlZCwgdGhlICdEZWxldGUnIGFjdGlvbiBpcyBub3QgdHJpZ2dlcmVkLlxuXHRcdCAqIEBwdWJsaWNcblx0XHQgKiBAc2luY2UgMS45OC4wXG5cdFx0ICovXG5cdFx0b25CZWZvcmVEZWxldGUoX21QYXJhbWV0ZXJzPzogeyBjb250ZXh0cz86IENvbnRleHRbXSB9KTogUHJvbWlzZTx2b2lkPjtcblx0XHQvKipcblx0XHQgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgY29kZSBhZnRlciB0aGUgJ1NhdmUnIGFjdGlvbi5cblx0XHQgKiBZb3UgY2FuIGV4ZWN1dGUgY3VzdG9tIGNvZGluZyBpbiB0aGlzIGZ1bmN0aW9uLlxuXHRcdCAqXG5cdFx0ICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBpbmRpdmlkdWFsbHkgb3ZlcnJpZGRlbiBieSBjb25zdW1pbmcgY29udHJvbGxlcnMsIGJ1dCBub3QgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LlxuXHRcdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHRcdCAqIEBwYXJhbSBfbVBhcmFtZXRlcnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIG9uQWZ0ZXJTYXZlXG5cdFx0ICogQHBhcmFtIF9tUGFyYW1ldGVycy5jb250ZXh0IFRoZSBjb250ZXh0IHdlIG9idGFpbmVkIGFmdGVyIHNhdmluZ1xuXHRcdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0byBiZSByZXR1cm5lZCBieSB0aGUgb3ZlcnJpZGRlbiBtZXRob2QuIElmIHJlamVjdGVkLCBhbnkgZnVydGhlciBwcm9jZXNzaW5nIGJ5IHRoZSBmcmFtZXdvcmsgaXMgc3RvcHBlZC5cblx0XHQgKiBAcHVibGljXG5cdFx0ICogQHNpbmNlIDEuMTE2LjBcblx0XHQgKi9cblx0XHRvbkFmdGVyU2F2ZShfbVBhcmFtZXRlcnM/OiB7IGNvbnRleHQ/OiBDb250ZXh0IH0pOiBQcm9taXNlPHZvaWQ+O1xuXHRcdC8qKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSBjb2RlIGFmdGVyIHRoZSAnQ3JlYXRlJyBhY3Rpb24uXG5cdFx0ICogWW91IGNhbiBleGVjdXRlIGN1c3RvbSBjb2RpbmcgaW4gdGhpcyBmdW5jdGlvbi5cblx0XHQgKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0XHQgKiBUaGUgb3ZlcnJpZGUgZXhlY3V0aW9uIGlzOiB7QGxpbmsgc2FwLnVpLmNvcmUubXZjLk92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyfS5cblx0XHQgKiBAcGFyYW0gX21QYXJhbWV0ZXJzIE9iamVjdCBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBvbkFmdGVyQ3JlYXRlXG5cdFx0ICogQHBhcmFtIF9tUGFyYW1ldGVycy5jb250ZXh0IFRoZSBuZXdseSBjcmVhdGVkIGNvbnRleHRcblx0XHQgKiBAcmV0dXJucyBBIHByb21pc2UgdG8gYmUgcmV0dXJuZWQgYnkgdGhlIG92ZXJyaWRkZW4gbWV0aG9kLiBJZiByZWplY3RlZCwgYW55IGZ1cnRoZXIgcHJvY2Vzc2luZyBieSB0aGUgZnJhbWV3b3JrIGlzIHN0b3BwZWQuXG5cdFx0ICogQHB1YmxpY1xuXHRcdCAqIEBzaW5jZSAxLjExNi4wXG5cdFx0ICovXG5cdFx0b25BZnRlckNyZWF0ZShfbVBhcmFtZXRlcnM/OiB7IGNvbnRleHQ/OiBDb250ZXh0IH0pOiBQcm9taXNlPHZvaWQ+O1xuXHRcdC8qKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSBjb2RlIGFmdGVyIHRoZSAnRWRpdCcgYWN0aW9uLlxuXHRcdCAqIFlvdSBjYW4gZXhlY3V0ZSBjdXN0b20gY29kaW5nIGluIHRoaXMgZnVuY3Rpb24uXG5cdFx0ICpcblx0XHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdFx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5BZnRlcn0uXG5cdFx0ICogQHBhcmFtIF9tUGFyYW1ldGVycyBPYmplY3QgY29udGFpbmluZyB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gb25BZnRlckVkaXRcblx0XHQgKiBAcGFyYW0gX21QYXJhbWV0ZXJzLmNvbnRleHQgUGFnZSBjb250ZXh0IHRoYXQgaXMgZ29pbmcgdG8gYmUgZWRpdGVkLlxuXHRcdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0byBiZSByZXR1cm5lZCBieSB0aGUgb3ZlcnJpZGRlbiBtZXRob2QuIElmIHJlamVjdGVkLCBhbnkgZnVydGhlciBwcm9jZXNzaW5nIGJ5IHRoZSBmcmFtZXdvcmsgaXMgc3RvcHBlZC5cblx0XHQgKiBAcHVibGljXG5cdFx0ICogQHNpbmNlIDEuMTE2LjBcblx0XHQgKi9cblx0XHRvbkFmdGVyRWRpdChfbVBhcmFtZXRlcnM/OiB7IGNvbnRleHQ/OiBDb250ZXh0IH0pOiBQcm9taXNlPHZvaWQ+O1xuXHRcdC8qKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSBjb2RlIGFmdGVyIHRoZSAnRGlzY2FyZCcgYWN0aW9uLlxuXHRcdCAqIFlvdSBjYW4gZXhlY3V0ZSBjdXN0b20gY29kaW5nIGluIHRoaXMgZnVuY3Rpb24uXG5cdFx0ICpcblx0XHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdFx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5BZnRlcn0uXG5cdFx0ICogQHBhcmFtIF9tUGFyYW1ldGVycyBPYmplY3QgY29udGFpbmluZyB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gb25BZnRlckRpc2NhcmRcblx0XHQgKiBAcGFyYW0gX21QYXJhbWV0ZXJzLmNvbnRleHQgVGhlIGNvbnRleHQgb2J0YWluZWQgYWZ0ZXIgZGlzY2FyZGluZyB0aGUgb2JqZWN0LCBvciB1bmRlZmluZWQgaWYgd2UgZGlzY2FyZGVkIGEgbmV3IG9iamVjdFxuXHRcdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0byBiZSByZXR1cm5lZCBieSB0aGUgb3ZlcnJpZGRlbiBtZXRob2QuIElmIHJlamVjdGVkLCBhbnkgZnVydGhlciBwcm9jZXNzaW5nIGJ5IHRoZSBmcmFtZXdvcmsgaXMgc3RvcHBlZC5cblx0XHQgKiBAcHVibGljXG5cdFx0ICogQHNpbmNlIDEuMTE2LjBcblx0XHQgKi9cblx0XHRvbkFmdGVyRGlzY2FyZChfbVBhcmFtZXRlcnM/OiB7IGNvbnRleHQ/OiBDb250ZXh0IH0pOiBQcm9taXNlPHZvaWQ+O1xuXHRcdC8qKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSBjb2RlIGFmdGVyIHRoZSAnRGVsZXRlJyBhY3Rpb24uXG5cdFx0ICogWW91IGNhbiBleGVjdXRlIGN1c3RvbSBjb2RpbmcgaW4gdGhpcyBmdW5jdGlvbi5cblx0XHQgKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0XHQgKiBUaGUgb3ZlcnJpZGUgZXhlY3V0aW9uIGlzOiB7QGxpbmsgc2FwLnVpLmNvcmUubXZjLk92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyfS5cblx0XHQgKiBAcGFyYW0gX21QYXJhbWV0ZXJzIE9iamVjdCBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBvbkFmdGVyRGVsZXRlXG5cdFx0ICogQHBhcmFtIF9tUGFyYW1ldGVycy5jb250ZXh0cyBBbiBhcnJheSBvZiBjb250ZXh0cyB0aGF0IGFyZSBnb2luZyB0byBiZSBkZWxldGVkXG5cdFx0ICogQHJldHVybnMgQSBwcm9taXNlIHRvIGJlIHJldHVybmVkIGJ5IHRoZSBvdmVycmlkZGVuIG1ldGhvZC4gSWYgcmVqZWN0ZWQsIGFueSBmdXJ0aGVyIHByb2Nlc3NpbmcgYnkgdGhlIGZyYW1ld29yayBpcyBzdG9wcGVkLlxuXHRcdCAqIEBwdWJsaWNcblx0XHQgKiBAc2luY2UgMS4xMTYuMFxuXHRcdCAqL1xuXHRcdG9uQWZ0ZXJEZWxldGUoX21QYXJhbWV0ZXJzPzogeyBjb250ZXh0cz86IENvbnRleHRbXSB9KTogUHJvbWlzZTx2b2lkPjtcblx0XHQvKipcblx0XHQgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgY29kZSBvbiB0aGUgbWFzcyBlZGl0IHNhdmUuXG5cdFx0ICogWW91IGNhbiBleGVjdXRlIGN1c3RvbSBjb2RpbmcgaW4gdGhpcyBmdW5jdGlvbi5cblx0XHQgKiBJZiB5b3UgZGVjaWRlIHRvIGRvIHlvdXIgb3duIHNhdmUgcHJvY2Vzc2luZywgeW91IGNhbiByZXR1cm4gYHRydWVgIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgc2F2ZSBiZWhhdmlvci5cblx0XHQgKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzIGJ1dCBub3QgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LlxuXHRcdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZH0uXG5cdFx0ICogQHBhcmFtIF9tUGFyYW1ldGVycyBPYmplY3QgY29udGFpbmluZyB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gY3VzdG9tTWFzc0VkaXRTYXZlXG5cdFx0ICogQHBhcmFtIF9tUGFyYW1ldGVycy5hQ29udGV4dHMgQXJyYXkgY29udGFpbmluZyB0aGUgc2VsZWN0ZWQgY29udGV4dHMgZm9yIHRoZSBtYXNzIGVkaXRcblx0XHQgKiBAcGFyYW0gX21QYXJhbWV0ZXJzLm9VcGRhdGVEYXRhIEEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBwcm9wZXJ0eVBhdGggYW5kIGl0cyB2YWx1ZVxuXHRcdCAqIEByZXR1cm5zIGB0cnVlYCB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGV4ZWN1dGlvbiwgYGZhbHNlYCB0byBrZWVwIHRoZSBzdGFuZGFyZCBiZWhhdmlvclxuXHRcdCAqIEBwdWJsaWNcblx0XHQgKiBAc2luY2UgMS4xMzAuMFxuXHRcdCAqL1xuXHRcdGN1c3RvbU1hc3NFZGl0U2F2ZShfbVBhcmFtZXRlcnM6IHsgYUNvbnRleHRzOiBDb250ZXh0W107IG9VcGRhdGVEYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9KTogUHJvbWlzZTxib29sZWFuPjtcblx0fVxufVxuXG5kZWNsYXJlIG1vZHVsZSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvbk92ZXJyaWRlc1wiIHtcblx0aW1wb3J0IHR5cGUgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuXHRleHBvcnQgZGVmYXVsdCBpbnRlcmZhY2UgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGVzIHtcblx0XHQvKipcblx0XHQgKiBQcm92aWRlcyBhIGhvb2sgdG8gY3VzdG9taXplIHRoZSB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH0gcmVsYXRlZCB0byB0aGUgaW50ZW50LWJhc2VkIG5hdmlnYXRpb24uXG5cdFx0ICogQHBhcmFtIF9vU2VsZWN0aW9uVmFyaWFudCBTZWxlY3Rpb25WYXJpYW50IHByb3ZpZGVkIGJ5IFNBUCBGaW9yaSBlbGVtZW50cy5cblx0XHQgKiBAcGFyYW0gX29OYXZpZ2F0aW9uSW5mbyBPYmplY3QgY29udGFpbmluZyBpbnRlbnQtYmFzZWQgbmF2aWdhdGlvbi1yZWxhdGVkIGluZm9cblx0XHQgKiBAcGFyYW0gX29OYXZpZ2F0aW9uSW5mby5zZW1hbnRpY09iamVjdCBTZW1hbnRpYyBvYmplY3QgcmVsYXRlZCB0byB0aGUgaW50ZW50XG5cdFx0ICogQHBhcmFtIF9vTmF2aWdhdGlvbkluZm8uYWN0aW9uIEFjdGlvbiByZWxhdGVkIHRvIHRoZSBpbnRlbnRcblx0XHQgKiBAcHVibGljXG5cdFx0ICogQHNpbmNlIDEuODYuMFxuXHRcdCAqL1xuXHRcdGFkYXB0TmF2aWdhdGlvbkNvbnRleHQoXG5cdFx0XHRfb1NlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRfb05hdmlnYXRpb25JbmZvOiB7XG5cdFx0XHRcdHNlbWFudGljT2JqZWN0OiBzdHJpbmc7XG5cdFx0XHRcdGFjdGlvbjogc3RyaW5nO1xuXHRcdFx0fVxuXHRcdCk6IHZvaWQ7XG5cdH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QYWdpbmF0b3JPdmVycmlkZXNcIiB7XG5cdGltcG9ydCB0eXBlIHsgQ29udGV4dE5hdmlnYXRpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcblx0aW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcblx0ZXhwb3J0IGRlZmF1bHQgaW50ZXJmYWNlIFBhZ2luYXRvck92ZXJyaWRlcyB7XG5cdFx0LyoqXG5cdFx0ICogUmV0dXJucyB0aGUgdXBkYXRlZCBjb250ZXh0IGFmdGVyIHRoZSBwYWdpbmF0b3Igb3BlcmF0aW9uLlxuXHRcdCAqIEBwYXJhbSBvQ29udGV4dCBGaW5hbCBjb250ZXh0IHJldHVybmVkIGFmdGVyIHRoZSBwYWdpbmF0b3IgYWN0aW9uXG5cdFx0ICogQHB1YmxpY1xuXHRcdCAqIEBzaW5jZSAxLjk0LjBcblx0XHQgKi9cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdFx0b25Db250ZXh0VXBkYXRlKG9Db250ZXh0OiBDb250ZXh0KTogdm9pZDtcblx0XHQvKipcblx0XHQgKiBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIHdoZW5ldmVyIGEgY29udGV4dCBpcyBsb2FkZWQgdXNpbmcgdGhlIHBhZ2luYXRvciBidXR0b25zLiBJdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNvbnRleHQgc3VwcG9ydHMgbmF2aWdhdGlvbi4gVGhlIG1ldGhvZCBtdXN0IHJldHVybiBvbmUgb2YgdGhlIGZvbGxvd2luZzpcblx0XHQgKiBDb250ZXh0TmF2aWdhdGlvblR5cGUuTm9uZTogSWYgdGhlIGNvbnRleHQgaXMgbm90IG5hdmlnYWJsZS5cblx0XHQgKiBDb250ZXh0TmF2aWdhdGlvblR5cGUuSW50ZXJuYWw6IElmIHRoZSBjb250ZXh0IHN1cHBvcnRzIGludGVybmFsIG5hdmlnYXRpb24gd2l0aGluIHRoZSBzYW1lIGFwcGxpY2F0aW9uIHRvIGEgZGV0YWlsIHZpZXcsIHN1Y2ggYXMgYW4gb2JqZWN0IHBhZ2Ugb3IgYSBzdWJvYmplY3QgcGFnZS5cblx0XHQgKiBDb250ZXh0TmF2aWdhdGlvblR5cGUuRXh0ZXJuYWw6IElmIHRoZSBjb250ZXh0IG5hdmlnYXRlcyB0byBhbiBleHRlcm5hbCBhcHBsaWNhdGlvbi5cblx0XHQgKiBUaGUgcGFnaW5hdG9yIGJ1dHRvbnMgb25seSBhbGxvdyBuYXZpZ2F0aW9uIHRvIGNvbnRleHRzIHdpdGggaW50ZXJuYWwgbmF2aWdhdGlvbi4gQ29udGV4dHMgd2l0aCBOb25lIG9yIEV4dGVybmFsIG5hdmlnYXRpb24gYXJlIHNraXBwZWQuXG5cdFx0ICogQHBhcmFtIGNvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgdG8gYmUgbmF2aWdhdGVkLlxuXHRcdCAqIEByZXR1cm5zIEEgUHJvbWlzZSB3aGljaCBzaG91bGQgcmVzb2x2ZSB0byBDb250ZXh0TmF2aWdhdGlvblR5cGUgZW51bS5cblx0XHQgKiBAcHVibGljXG5cdFx0ICogQHNpbmNlIDEuMTM4LjBcblx0XHQgKi9cblx0XHRkZXRlcm1pbmVDb250ZXh0TmF2aWdhdGlvblR5cGUoY29udGV4dDogQ29udGV4dCk6IFByb21pc2U8Q29udGV4dE5hdmlnYXRpb25UeXBlPjtcblx0fVxufVxuXG5kZWNsYXJlIG1vZHVsZSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1JvdXRpbmdPdmVycmlkZXNcIiB7XG5cdGltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5cdGV4cG9ydCBkZWZhdWx0IGludGVyZmFjZSBSb3V0aW5nT3ZlcnJpZGVzIHtcblx0XHQvKipcblx0XHQgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGludGVyY2VwdCB0aGUgcm91dGluZyBldmVudCBkdXJpbmcgdGhlIG5vcm1hbCBuYXZpZ2F0aW9uIHByb2Nlc3MsIHN1Y2ggYXMgd2hlbiBhIHRhYmxlIHJvdyBpcyBjbGlja2VkIHRvIG5hdmlnYXRlLCBwYWdpbmF0aW9uIGJ1dHRvbnMgYXJlIHVzZWQsIHRoZSBBcHBseSBidXR0b24gaW4gYW4gb2JqZWN0IHBhZ2UgaXMgY2xpY2tlZCwgb3IgYSBzdWItb2JqZWN0IHBhZ2UgaW4gYSBmbGV4aWJsZSBjb2x1bW4gbGF5b3V0IGlzIGNsb3NlZC5cblx0XHQgKlxuXHRcdCAqIFRoZSBmdW5jdGlvbiBpcyBub3QgY2FsbGVkIGR1cmluZyBvdGhlciBtZWFucyBvZiBleHRlcm5hbCBvdXRib3VuZCBuYXZpZ2F0aW9uIHN1Y2ggYXMgYSBuYXZpZ2F0aW9uIGNvbmZpZ3VyZWQgdXNpbmcgYSBsaW5rIG9yIGJ5IHVzaW5nIG5hdmlnYXRpb24gYnV0dG9ucy5cblx0XHQgKlxuXHRcdCAqIElmIGRlY2xhcmVkIGFzIGFuIGV4dGVuc2lvbiwgaXQgYWxsb3dzIHlvdSB0byBpbnRlcmNlcHQgYW5kIGNoYW5nZSB0aGUgbm9ybWFsIG5hdmlnYXRpb24gZmxvdy5cblx0XHQgKiBJZiB5b3UgZGVjaWRlIHRvIGltcGxlbWVudCB5b3VyIG93biBuYXZpZ2F0aW9uIHByb2Nlc3NpbmcsIHlvdSBjYW4gcmV0dXJuIGB0cnVlYCB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IHJvdXRpbmcgYmVoYXZpb3IuXG5cdFx0ICpcblx0XHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycyBhbmQgbm90IGNhbGxlZCBkaXJlY3RseS5cblx0XHQgKiBUaGUgb3ZlcnJpZGUgZXhlY3V0aW9uIGlzOiB7QGxpbmsgc2FwLnVpLmNvcmUubXZjLk92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyfS5cblx0XHQgKiBAcGFyYW0gbU5hdmlnYXRpb25QYXJhbWV0ZXJzIE9iamVjdCBjb250YWluaW5nIHJvdyBjb250ZXh0IGFuZCBwYWdlIGNvbnRleHRcblx0XHQgKiBAcGFyYW0gbU5hdmlnYXRpb25QYXJhbWV0ZXJzLmJpbmRpbmdDb250ZXh0IFRoZSB0YXJnZXQgbmF2aWdhdGlvbiBjb250ZXh0XG5cdFx0ICogQHJldHVybnMgYHRydWVgIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgZXhlY3V0aW9uLCBmYWxzZSB0byBrZWVwIHRoZSBzdGFuZGFyZCBiZWhhdmlvclxuXHRcdCAqIEBwdWJsaWNcblx0XHQgKiBAc2luY2UgMS44Ni4wXG5cdFx0ICovXG5cdFx0b25CZWZvcmVOYXZpZ2F0aW9uKG1OYXZpZ2F0aW9uUGFyYW1ldGVyczogeyBiaW5kaW5nQ29udGV4dDogQ29udGV4dCB9KTogUHJvbWlzZTxib29sZWFuPjtcblx0XHQvKipcblx0XHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW50ZXJjZXB0IHRoZSByb3V0aW5nIGV2ZW50IGJlZm9yZSBiaW5kaW5nIGEgcGFnZS5cblx0XHQgKlxuXHRcdCAqIElmIGl0IGlzIGRlY2xhcmVkIGFzIGFuIGV4dGVuc2lvbiwgaXQgYWxsb3dzIHlvdSB0byBpbnRlcmNlcHQgYW5kIGNoYW5nZSB0aGUgbm9ybWFsIGZsb3cgb2YgYmluZGluZy5cblx0XHQgKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCBkaXJlY3RseSwgYnV0IG92ZXJyaWRkZW4gc2VwYXJhdGVseSBieSBjb25zdW1pbmcgY29udHJvbGxlcnMuXG5cdFx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5BZnRlcn0uXG5cdFx0ICogQHBhcmFtIG9Db250ZXh0IE9iamVjdCBjb250YWluaW5nIHRoZSBjb250ZXh0IGZvciB0aGUgbmF2aWdhdGlvblxuXHRcdCAqIEBwdWJsaWNcblx0XHQgKiBAc2luY2UgMS45MC4wXG5cdFx0ICovXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRcdG9uQmVmb3JlQmluZGluZyhvQ29udGV4dDogb2JqZWN0IHwgbnVsbCk6IHZvaWQ7XG5cdFx0LyoqXG5cdFx0ICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGludGVyY2VwdCB0aGUgcm91dGluZyBldmVudCBhZnRlciBiaW5kaW5nIGEgcGFnZS5cblx0XHQgKlxuXHRcdCAqIElmIGl0IGlzIGRlY2xhcmVkIGFzIGFuIGV4dGVuc2lvbiwgaXQgYWxsb3dzIHlvdSB0byBpbnRlcmNlcHQgYW5kIGNoYW5nZSB0aGUgbm9ybWFsIGZsb3cgb2YgYmluZGluZy5cblx0XHQgKlxuXHRcdCAqIFRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCBkaXJlY3RseSwgYnV0IG92ZXJyaWRkZW4gc2VwYXJhdGVseSBieSBjb25zdW1pbmcgY29udHJvbGxlcnMuXG5cdFx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5BZnRlcn0uXG5cdFx0ICogQHBhcmFtIG9Db250ZXh0IE9iamVjdCBjb250YWluaW5nIHRoZSBjb250ZXh0IHRvIGJlIG5hdmlnYXRlZFxuXHRcdCAqIEBwdWJsaWNcblx0XHQgKiBAc2luY2UgMS45MC4wXG5cdFx0ICovXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRcdG9uQWZ0ZXJCaW5kaW5nKG9Db250ZXh0OiBvYmplY3QgfCBudWxsKTogdm9pZDtcblx0fVxufVxuXG5kZWNsYXJlIG1vZHVsZSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NoYXJlT3ZlcnJpZGVzXCIge1xuXHRleHBvcnQgdHlwZSBTaGFyZU1ldGFkYXRhID0ge1xuXHRcdHVybDogc3RyaW5nO1xuXHRcdHRpdGxlOiBzdHJpbmc7XG5cdFx0ZW1haWw6IHtcblx0XHRcdHVybDogc3RyaW5nO1xuXHRcdFx0dGl0bGU6IHN0cmluZztcblx0XHR9O1xuXHRcdGphbToge1xuXHRcdFx0dXJsPzogc3RyaW5nO1xuXHRcdFx0dGl0bGU6IHN0cmluZztcblx0XHR9O1xuXHRcdHRpbGU6IHtcblx0XHRcdHVybD86IHN0cmluZztcblx0XHRcdHRpdGxlOiBzdHJpbmc7XG5cdFx0XHRzdWJ0aXRsZTogc3RyaW5nO1xuXHRcdFx0aWNvbj86IHN0cmluZztcblx0XHRcdHF1ZXJ5VXJsPzogc3RyaW5nO1xuXHRcdH07XG5cdH07XG5cdGV4cG9ydCBkZWZhdWx0IGludGVyZmFjZSBTaGFyZU92ZXJyaWRlcyB7XG5cdFx0LyoqXG5cdFx0ICogQWRhcHRzIHRoZSBtZXRhZGF0YSB1c2VkIHdoaWxlIHNoYXJpbmcgdGhlIHBhZ2UgVVJMIHVzaW5nICdTZW5kIEVtYWlsJywgJ1NoYXJlIGluIFNBUCBKYW0nLCBhbmQgJ1NhdmUgYXMgVGlsZScuXG5cdFx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhIE9iamVjdCBjb250YWluaW5nIHRoZSBzaGFyZSBtZXRhZGF0YS5cblx0XHQgKiBAcGFyYW0gb1NoYXJlTWV0YWRhdGEudXJsIERlZmF1bHQgVVJMIHRoYXQgd2lsbCBiZSB1c2VkIHdpdGggJ1NlbmQgRW1haWwnLCAnU2hhcmUgaW4gU0FQIEphbScsIGFuZCAnU2F2ZSBhcyBUaWxlJ1xuXHRcdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS50aXRsZSBEZWZhdWx0IHRpdGxlIHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSAnZW1haWwgc3ViamVjdCcgaW4gJ1NlbmQgRW1haWwnLCAnc2hhcmUgdGV4dCcgaW4gJ1NoYXJlIGluIFNBUCBKYW0nIGFuZCAndGl0bGUnIGluICdTYXZlIGFzIFRpbGUnXG5cdFx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLmVtYWlsIEVtYWlsLXNwZWNpZmljIG1ldGFkYXRhLlxuXHRcdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS5lbWFpbC51cmwgVVJMIHRoYXQgd2lsbCBiZSB1c2VkIHNwZWNpZmljYWxseSBmb3IgJ1NlbmQgRW1haWwnLiBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvU2hhcmVNZXRhZGF0YS51cmwuXG5cdFx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLmVtYWlsLnRpdGxlIFRpdGxlIHRoYXQgd2lsbCBiZSB1c2VkIGFzIFwiZW1haWwgc3ViamVjdFwiIGluICdTZW5kIEVtYWlsJy4gVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb1NoYXJlTWV0YWRhdGEudGl0bGUuXG5cdFx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLmphbSBTQVAgSmFtLXNwZWNpZmljIG1ldGFkYXRhLlxuXHRcdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS5qYW0udXJsIFVSTCB0aGF0IHdpbGwgYmUgdXNlZCBzcGVjaWZpY2FsbHkgZm9yICdTaGFyZSBpbiBTQVAgSmFtJy4gVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb1NoYXJlTWV0YWRhdGEudXJsLlxuXHRcdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS5qYW0udGl0bGUgVGl0bGUgdGhhdCB3aWxsIGJlIHVzZWQgYXMgJ3NoYXJlIHRleHQnIGluICdTaGFyZSBpbiBTQVAgSmFtJy4gVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb1NoYXJlTWV0YWRhdGEudGl0bGUuXG5cdFx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLnRpbGUgU2F2ZSBhcyBUaWxlLXNwZWNpZmljIG1ldGFkYXRhLlxuXHRcdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS50aWxlLnVybCBVUkwgdGhhdCB3aWxsIGJlIHVzZWQgc3BlY2lmaWNhbGx5IGZvciAnU2F2ZSBhcyBUaWxlJy4gVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb1NoYXJlTWV0YWRhdGEudXJsLlxuXHRcdCAqIEBwYXJhbSBvU2hhcmVNZXRhZGF0YS50aWxlLnRpdGxlIFRpdGxlIHRvIGJlIHVzZWQgZm9yIHRoZSB0aWxlLiBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvU2hhcmVNZXRhZGF0YS50aXRsZS5cblx0XHQgKiBAcGFyYW0gb1NoYXJlTWV0YWRhdGEudGlsZS5zdWJ0aXRsZSBTdWJ0aXRsZSB0byBiZSB1c2VkIGZvciB0aGUgdGlsZS5cblx0XHQgKiBAcGFyYW0gb1NoYXJlTWV0YWRhdGEudGlsZS5pY29uIEljb24gdG8gYmUgdXNlZCBmb3IgdGhlIHRpbGUuXG5cdFx0ICogQHBhcmFtIG9TaGFyZU1ldGFkYXRhLnRpbGUucXVlcnlVcmwgUXVlcnkgVVJMIG9mIGFuIE9EYXRhIHNlcnZpY2UgZnJvbSB3aGljaCBkYXRhIGZvciBhIGR5bmFtaWMgdGlsZSBpcyByZWFkLlxuXHRcdCAqIEByZXR1cm5zIFNoYXJlIE1ldGFkYXRhIG9yIGEgUHJvbWlzZSByZXNvbHZpbmcgdGhlIFNoYXJlIE1ldGFkYXRhXG5cdFx0ICogQHB1YmxpY1xuXHRcdCAqIEBzaW5jZSAxLjkzLjBcblx0XHQgKi9cblx0XHRhZGFwdFNoYXJlTWV0YWRhdGEob1NoYXJlTWV0YWRhdGE6IHtcblx0XHRcdHVybDogc3RyaW5nO1xuXHRcdFx0dGl0bGU6IHN0cmluZztcblx0XHRcdGVtYWlsOiB7XG5cdFx0XHRcdHVybDogc3RyaW5nO1xuXHRcdFx0XHR0aXRsZTogc3RyaW5nO1xuXHRcdFx0fTtcblx0XHRcdGphbToge1xuXHRcdFx0XHR1cmw/OiBzdHJpbmc7XG5cdFx0XHRcdHRpdGxlOiBzdHJpbmc7XG5cdFx0XHR9O1xuXHRcdFx0dGlsZToge1xuXHRcdFx0XHR1cmw/OiBzdHJpbmc7XG5cdFx0XHRcdHRpdGxlOiBzdHJpbmc7XG5cdFx0XHRcdHN1YnRpdGxlOiBzdHJpbmc7XG5cdFx0XHRcdGljb24/OiBzdHJpbmc7XG5cdFx0XHRcdHF1ZXJ5VXJsPzogc3RyaW5nO1xuXHRcdFx0fTtcblx0XHR9KTogU2hhcmVNZXRhZGF0YSB8IFByb21pc2U8U2hhcmVNZXRhZGF0YT47XG5cdH1cbn1cblxuZGVjbGFyZSBtb2R1bGUgXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVPdmVycmlkZXNcIiB7XG5cdGV4cG9ydCBkZWZhdWx0IGludGVyZmFjZSBWaWV3U3RhdGVPdmVycmlkZXMge1xuXHRcdC8qKlxuXHRcdCAqIENhbGxlZCB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBzdXNwZW5kZWQgZHVlIHRvIGtlZXAtYWxpdmUgbW9kZS5cblx0XHQgKiBAcHVibGljXG5cdFx0ICovXG5cdFx0b25TdXNwZW5kKCk6IHZvaWQ7XG5cdFx0LyoqXG5cdFx0ICogQ2FsbGVkIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIHJlc3RvcmVkIGR1ZSB0byBrZWVwLWFsaXZlIG1vZGUuXG5cdFx0ICogQHB1YmxpY1xuXHRcdCAqL1xuXHRcdG9uUmVzdG9yZSgpOiB2b2lkO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
// This is autogenerated, do not edit
|
|
2
|
+
|
|
3
|
+
declare module "sap/fe/core/controllerextensions/MessageHandlerOverrides" {
|
|
4
|
+
/**
|
|
5
|
+
* Defines the message details relevant for the MessageButton building block to display a popover.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export type MessageDetail = {
|
|
9
|
+
message: Message;
|
|
10
|
+
groupName?: string;
|
|
11
|
+
activeTitleHandler?: Function;
|
|
12
|
+
};
|
|
13
|
+
import type Message from "sap/ui/core/message/Message";
|
|
14
|
+
export default interface MessageHandlerOverrides {
|
|
15
|
+
/**
|
|
16
|
+
* Allows the consumer of the MessageButton building block to decide which bound messages are shown and how.
|
|
17
|
+
*
|
|
18
|
+
* This hook is called when the MessageButton building block detects a change in the message model.
|
|
19
|
+
* The hooks allow you to define the behavior for messages in the MessageButton building block.
|
|
20
|
+
*
|
|
21
|
+
* Consumers are able to do the following with this hook:
|
|
22
|
+
*
|
|
23
|
+
* 1. Filter out messages so that they are not shown on the message button.
|
|
24
|
+
* 2. Group messages based on their UI.
|
|
25
|
+
* 3. Provide a presser handler if the message should display as a link.
|
|
26
|
+
* @param _messageDetails Object containing the details related to the message.
|
|
27
|
+
* @param _messageDetails.message The message from the message. It must not be modified directly.
|
|
28
|
+
* @param _messageDetails.groupName The group name associated with the current message.
|
|
29
|
+
* @param _messageDetails.activeTitleHandler Function to handle the click event on a message in the MessageButton building block.
|
|
30
|
+
* @returns A promise that must be returned by the overridden method.
|
|
31
|
+
* @public
|
|
32
|
+
*/
|
|
33
|
+
beforeShowMessageButton(_messageDetails: MessageDetail[]): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
declare module "sap/fe/core/controllerextensions/EditFlowOverrides" {
|
|
38
|
+
import type { default as Context } from "sap/ui/model/odata/v4/Context";
|
|
39
|
+
export default interface EditFlowOverrides {
|
|
40
|
+
/**
|
|
41
|
+
* This function can be used to intercept the 'Create' action. You can execute custom coding in this function.
|
|
42
|
+
* The framework waits for the returned promise to be resolved before continuing the 'Create' action.
|
|
43
|
+
* If you reject the promise, the 'Create' action is stopped.
|
|
44
|
+
*
|
|
45
|
+
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
46
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
47
|
+
* @param _mParameters Object containing the parameters passed to onBeforeCreate
|
|
48
|
+
* @param _mParameters.contextPath Path pointing to the context on which Create action is triggered
|
|
49
|
+
* @param _mParameters.createParameters Array of values that are filled in the Action Parameter Dialog
|
|
50
|
+
* @returns A promise to be returned by the overridden method. If resolved, the 'Create' action is triggered. If rejected, the 'Create' action is not triggered.
|
|
51
|
+
* @public
|
|
52
|
+
* @since 1.98.0
|
|
53
|
+
*/
|
|
54
|
+
onBeforeCreate(_mParameters?: { contextPath?: string; createParameters?: unknown[] }): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* This function can be used to intercept the 'Edit' action. You can execute custom coding in this function.
|
|
57
|
+
* The framework waits for the returned promise to be resolved before continuing the 'Edit' action.
|
|
58
|
+
* If you reject the promise, the 'Edit' action is stopped and the user stays in display mode.
|
|
59
|
+
*
|
|
60
|
+
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
61
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
62
|
+
* @param _mParameters Object containing the parameters passed to onBeforeEdit
|
|
63
|
+
* @param _mParameters.context Page context that is going to be edited.
|
|
64
|
+
* @returns A promise to be returned by the overridden method. If resolved, the 'Edit' action is triggered. If rejected, the 'Edit' action is not triggered and the user stays in display mode.
|
|
65
|
+
* @public
|
|
66
|
+
* @since 1.98.0
|
|
67
|
+
*/
|
|
68
|
+
onBeforeEdit(_mParameters?: { context?: Context }): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* This function can be used to intercept the 'Save' action. You can execute custom coding in this function.
|
|
71
|
+
* The framework waits for the returned promise to be resolved before continuing the 'Save' action.
|
|
72
|
+
* If you reject the promise, the 'Save' action is stopped and the user stays in edit mode.
|
|
73
|
+
*
|
|
74
|
+
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
75
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
76
|
+
* @param _mParameters Object containing the parameters passed to onBeforeSave
|
|
77
|
+
* @param _mParameters.context Page context that is going to be saved.
|
|
78
|
+
* @returns A promise to be returned by the overridden method. If resolved, the 'Save' action is triggered. If rejected, the 'Save' action is not triggered and the user stays in edit mode.
|
|
79
|
+
* @public
|
|
80
|
+
* @since 1.90.0
|
|
81
|
+
*/
|
|
82
|
+
onBeforeSave(_mParameters?: { context?: Context }): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* This function can be used to intercept the 'Discard' action. You can execute custom coding in this function.
|
|
85
|
+
* The framework waits for the returned promise to be resolved before continuing the 'Discard' action.
|
|
86
|
+
* If you reject the promise, the 'Discard' action is stopped and the user stays in edit mode.
|
|
87
|
+
*
|
|
88
|
+
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
89
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
90
|
+
* @param _mParameters Object containing the parameters passed to onBeforeDiscard
|
|
91
|
+
* @param _mParameters.context Page context that is going to be discarded.
|
|
92
|
+
* @returns A promise to be returned by the overridden method. If resolved, the 'Discard' action is triggered. If rejected, the 'Discard' action is not triggered and the user stays in edit mode.
|
|
93
|
+
* @public
|
|
94
|
+
* @since 1.98.0
|
|
95
|
+
*/
|
|
96
|
+
onBeforeDiscard(_mParameters?: { context?: Context }): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* This function can be used to intercept the 'Delete' action. You can execute custom coding in this function.
|
|
99
|
+
* The framework waits for the returned promise to be resolved before continuing the 'Delete' action.
|
|
100
|
+
* If you reject the promise, the 'Delete' action is stopped.
|
|
101
|
+
*
|
|
102
|
+
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
103
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
104
|
+
* @param _mParameters Object containing the parameters passed to onBeforeDelete
|
|
105
|
+
* @param _mParameters.contexts An array of contexts that are going to be deleted
|
|
106
|
+
* @returns A promise to be returned by the overridden method. If resolved, the 'Delete' action is triggered. If rejected, the 'Delete' action is not triggered.
|
|
107
|
+
* @public
|
|
108
|
+
* @since 1.98.0
|
|
109
|
+
*/
|
|
110
|
+
onBeforeDelete(_mParameters?: { contexts?: Context[] }): Promise<void>;
|
|
111
|
+
/**
|
|
112
|
+
* This function can be used to execute code after the 'Save' action.
|
|
113
|
+
* You can execute custom coding in this function.
|
|
114
|
+
*
|
|
115
|
+
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
116
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
117
|
+
* @param _mParameters Object containing the parameters passed to onAfterSave
|
|
118
|
+
* @param _mParameters.context The context we obtained after saving
|
|
119
|
+
* @returns A promise to be returned by the overridden method. If rejected, any further processing by the framework is stopped.
|
|
120
|
+
* @public
|
|
121
|
+
* @since 1.116.0
|
|
122
|
+
*/
|
|
123
|
+
onAfterSave(_mParameters?: { context?: Context }): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* This function can be used to execute code after the 'Create' action.
|
|
126
|
+
* You can execute custom coding in this function.
|
|
127
|
+
*
|
|
128
|
+
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
129
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
130
|
+
* @param _mParameters Object containing the parameters passed to onAfterCreate
|
|
131
|
+
* @param _mParameters.context The newly created context
|
|
132
|
+
* @returns A promise to be returned by the overridden method. If rejected, any further processing by the framework is stopped.
|
|
133
|
+
* @public
|
|
134
|
+
* @since 1.116.0
|
|
135
|
+
*/
|
|
136
|
+
onAfterCreate(_mParameters?: { context?: Context }): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* This function can be used to execute code after the 'Edit' action.
|
|
139
|
+
* You can execute custom coding in this function.
|
|
140
|
+
*
|
|
141
|
+
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
142
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
143
|
+
* @param _mParameters Object containing the parameters passed to onAfterEdit
|
|
144
|
+
* @param _mParameters.context Page context that is going to be edited.
|
|
145
|
+
* @returns A promise to be returned by the overridden method. If rejected, any further processing by the framework is stopped.
|
|
146
|
+
* @public
|
|
147
|
+
* @since 1.116.0
|
|
148
|
+
*/
|
|
149
|
+
onAfterEdit(_mParameters?: { context?: Context }): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* This function can be used to execute code after the 'Discard' action.
|
|
152
|
+
* You can execute custom coding in this function.
|
|
153
|
+
*
|
|
154
|
+
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
155
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
156
|
+
* @param _mParameters Object containing the parameters passed to onAfterDiscard
|
|
157
|
+
* @param _mParameters.context The context obtained after discarding the object, or undefined if we discarded a new object
|
|
158
|
+
* @returns A promise to be returned by the overridden method. If rejected, any further processing by the framework is stopped.
|
|
159
|
+
* @public
|
|
160
|
+
* @since 1.116.0
|
|
161
|
+
*/
|
|
162
|
+
onAfterDiscard(_mParameters?: { context?: Context }): Promise<void>;
|
|
163
|
+
/**
|
|
164
|
+
* This function can be used to execute code after the 'Delete' action.
|
|
165
|
+
* You can execute custom coding in this function.
|
|
166
|
+
*
|
|
167
|
+
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
168
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
169
|
+
* @param _mParameters Object containing the parameters passed to onAfterDelete
|
|
170
|
+
* @param _mParameters.contexts An array of contexts that are going to be deleted
|
|
171
|
+
* @returns A promise to be returned by the overridden method. If rejected, any further processing by the framework is stopped.
|
|
172
|
+
* @public
|
|
173
|
+
* @since 1.116.0
|
|
174
|
+
*/
|
|
175
|
+
onAfterDelete(_mParameters?: { contexts?: Context[] }): Promise<void>;
|
|
176
|
+
/**
|
|
177
|
+
* This function can be used to execute code on the mass edit save.
|
|
178
|
+
* You can execute custom coding in this function.
|
|
179
|
+
* If you decide to do your own save processing, you can return `true` to prevent the default save behavior.
|
|
180
|
+
*
|
|
181
|
+
* This function is meant to be individually overridden by consuming controllers but not to be called directly.
|
|
182
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.Instead}.
|
|
183
|
+
* @param _mParameters Object containing the parameters passed to customMassEditSave
|
|
184
|
+
* @param _mParameters.aContexts Array containing the selected contexts for the mass edit
|
|
185
|
+
* @param _mParameters.oUpdateData A dictionary containing the propertyPath and its value
|
|
186
|
+
* @returns `true` to prevent the default execution, `false` to keep the standard behavior
|
|
187
|
+
* @public
|
|
188
|
+
* @since 1.130.0
|
|
189
|
+
*/
|
|
190
|
+
customMassEditSave(_mParameters: { aContexts: Context[]; oUpdateData: Record<string, unknown> }): Promise<boolean>;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
declare module "sap/fe/core/controllerextensions/IntentBasedNavigationOverrides" {
|
|
195
|
+
import type SelectionVariant from "sap/fe/navigation/SelectionVariant";
|
|
196
|
+
export default interface IntentBasedNavigationOverrides {
|
|
197
|
+
/**
|
|
198
|
+
* Provides a hook to customize the {@link sap.fe.navigation.SelectionVariant} related to the intent-based navigation.
|
|
199
|
+
* @param _oSelectionVariant SelectionVariant provided by SAP Fiori elements.
|
|
200
|
+
* @param _oNavigationInfo Object containing intent-based navigation-related info
|
|
201
|
+
* @param _oNavigationInfo.semanticObject Semantic object related to the intent
|
|
202
|
+
* @param _oNavigationInfo.action Action related to the intent
|
|
203
|
+
* @public
|
|
204
|
+
* @since 1.86.0
|
|
205
|
+
*/
|
|
206
|
+
adaptNavigationContext(
|
|
207
|
+
_oSelectionVariant: SelectionVariant,
|
|
208
|
+
_oNavigationInfo: {
|
|
209
|
+
semanticObject: string;
|
|
210
|
+
action: string;
|
|
211
|
+
}
|
|
212
|
+
): void;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
declare module "sap/fe/core/controllerextensions/PaginatorOverrides" {
|
|
217
|
+
import type { ContextNavigationType } from "sap/fe/core/library";
|
|
218
|
+
import type { default as Context } from "sap/ui/model/odata/v4/Context";
|
|
219
|
+
export default interface PaginatorOverrides {
|
|
220
|
+
/**
|
|
221
|
+
* Returns the updated context after the paginator operation.
|
|
222
|
+
* @param oContext Final context returned after the paginator action
|
|
223
|
+
* @public
|
|
224
|
+
* @since 1.94.0
|
|
225
|
+
*/
|
|
226
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
227
|
+
onContextUpdate(oContext: Context): void;
|
|
228
|
+
/**
|
|
229
|
+
* This method is invoked whenever a context is loaded using the paginator buttons. It determines whether the context supports navigation. The method must return one of the following:
|
|
230
|
+
* ContextNavigationType.None: If the context is not navigable.
|
|
231
|
+
* ContextNavigationType.Internal: If the context supports internal navigation within the same application to a detail view, such as an object page or a subobject page.
|
|
232
|
+
* ContextNavigationType.External: If the context navigates to an external application.
|
|
233
|
+
* The paginator buttons only allow navigation to contexts with internal navigation. Contexts with None or External navigation are skipped.
|
|
234
|
+
* @param context Object containing the context to be navigated.
|
|
235
|
+
* @returns A Promise which should resolve to ContextNavigationType enum.
|
|
236
|
+
* @public
|
|
237
|
+
* @since 1.138.0
|
|
238
|
+
*/
|
|
239
|
+
determineContextNavigationType(context: Context): Promise<ContextNavigationType>;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
declare module "sap/fe/core/controllerextensions/RoutingOverrides" {
|
|
244
|
+
import type Context from "sap/ui/model/odata/v4/Context";
|
|
245
|
+
export default interface RoutingOverrides {
|
|
246
|
+
/**
|
|
247
|
+
* This function can be used to intercept the routing event during the normal navigation process, such as when a table row is clicked to navigate, pagination buttons are used, the Apply button in an object page is clicked, or a sub-object page in a flexible column layout is closed.
|
|
248
|
+
*
|
|
249
|
+
* The function is not called during other means of external outbound navigation such as a navigation configured using a link or by using navigation buttons.
|
|
250
|
+
*
|
|
251
|
+
* If declared as an extension, it allows you to intercept and change the normal navigation flow.
|
|
252
|
+
* If you decide to implement your own navigation processing, you can return `true` to prevent the default routing behavior.
|
|
253
|
+
*
|
|
254
|
+
* This function is meant to be individually overridden by consuming controllers and not called directly.
|
|
255
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
256
|
+
* @param mNavigationParameters Object containing row context and page context
|
|
257
|
+
* @param mNavigationParameters.bindingContext The target navigation context
|
|
258
|
+
* @returns `true` to prevent the default execution, false to keep the standard behavior
|
|
259
|
+
* @public
|
|
260
|
+
* @since 1.86.0
|
|
261
|
+
*/
|
|
262
|
+
onBeforeNavigation(mNavigationParameters: { bindingContext: Context }): Promise<boolean>;
|
|
263
|
+
/**
|
|
264
|
+
* This function is used to intercept the routing event before binding a page.
|
|
265
|
+
*
|
|
266
|
+
* If it is declared as an extension, it allows you to intercept and change the normal flow of binding.
|
|
267
|
+
*
|
|
268
|
+
* This function is not called directly, but overridden separately by consuming controllers.
|
|
269
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
270
|
+
* @param oContext Object containing the context for the navigation
|
|
271
|
+
* @public
|
|
272
|
+
* @since 1.90.0
|
|
273
|
+
*/
|
|
274
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
275
|
+
onBeforeBinding(oContext: object | null): void;
|
|
276
|
+
/**
|
|
277
|
+
* This function is used to intercept the routing event after binding a page.
|
|
278
|
+
*
|
|
279
|
+
* If it is declared as an extension, it allows you to intercept and change the normal flow of binding.
|
|
280
|
+
*
|
|
281
|
+
* This function is not called directly, but overridden separately by consuming controllers.
|
|
282
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
283
|
+
* @param oContext Object containing the context to be navigated
|
|
284
|
+
* @public
|
|
285
|
+
* @since 1.90.0
|
|
286
|
+
*/
|
|
287
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
288
|
+
onAfterBinding(oContext: object | null): void;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
declare module "sap/fe/core/controllerextensions/ShareOverrides" {
|
|
293
|
+
export type ShareMetadata = {
|
|
294
|
+
url: string;
|
|
295
|
+
title: string;
|
|
296
|
+
email: {
|
|
297
|
+
url: string;
|
|
298
|
+
title: string;
|
|
299
|
+
};
|
|
300
|
+
jam: {
|
|
301
|
+
url?: string;
|
|
302
|
+
title: string;
|
|
303
|
+
};
|
|
304
|
+
tile: {
|
|
305
|
+
url?: string;
|
|
306
|
+
title: string;
|
|
307
|
+
subtitle: string;
|
|
308
|
+
icon?: string;
|
|
309
|
+
queryUrl?: string;
|
|
310
|
+
};
|
|
311
|
+
};
|
|
312
|
+
export default interface ShareOverrides {
|
|
313
|
+
/**
|
|
314
|
+
* Adapts the metadata used while sharing the page URL using 'Send Email', 'Share in SAP Jam', and 'Save as Tile'.
|
|
315
|
+
* @param oShareMetadata Object containing the share metadata.
|
|
316
|
+
* @param oShareMetadata.url Default URL that will be used with 'Send Email', 'Share in SAP Jam', and 'Save as Tile'
|
|
317
|
+
* @param oShareMetadata.title Default title that will be used as the 'email subject' in 'Send Email', 'share text' in 'Share in SAP Jam' and 'title' in 'Save as Tile'
|
|
318
|
+
* @param oShareMetadata.email Email-specific metadata.
|
|
319
|
+
* @param oShareMetadata.email.url URL that will be used specifically for 'Send Email'. This takes precedence over oShareMetadata.url.
|
|
320
|
+
* @param oShareMetadata.email.title Title that will be used as "email subject" in 'Send Email'. This takes precedence over oShareMetadata.title.
|
|
321
|
+
* @param oShareMetadata.jam SAP Jam-specific metadata.
|
|
322
|
+
* @param oShareMetadata.jam.url URL that will be used specifically for 'Share in SAP Jam'. This takes precedence over oShareMetadata.url.
|
|
323
|
+
* @param oShareMetadata.jam.title Title that will be used as 'share text' in 'Share in SAP Jam'. This takes precedence over oShareMetadata.title.
|
|
324
|
+
* @param oShareMetadata.tile Save as Tile-specific metadata.
|
|
325
|
+
* @param oShareMetadata.tile.url URL that will be used specifically for 'Save as Tile'. This takes precedence over oShareMetadata.url.
|
|
326
|
+
* @param oShareMetadata.tile.title Title to be used for the tile. This takes precedence over oShareMetadata.title.
|
|
327
|
+
* @param oShareMetadata.tile.subtitle Subtitle to be used for the tile.
|
|
328
|
+
* @param oShareMetadata.tile.icon Icon to be used for the tile.
|
|
329
|
+
* @param oShareMetadata.tile.queryUrl Query URL of an OData service from which data for a dynamic tile is read.
|
|
330
|
+
* @returns Share Metadata or a Promise resolving the Share Metadata
|
|
331
|
+
* @public
|
|
332
|
+
* @since 1.93.0
|
|
333
|
+
*/
|
|
334
|
+
adaptShareMetadata(oShareMetadata: {
|
|
335
|
+
url: string;
|
|
336
|
+
title: string;
|
|
337
|
+
email: {
|
|
338
|
+
url: string;
|
|
339
|
+
title: string;
|
|
340
|
+
};
|
|
341
|
+
jam: {
|
|
342
|
+
url?: string;
|
|
343
|
+
title: string;
|
|
344
|
+
};
|
|
345
|
+
tile: {
|
|
346
|
+
url?: string;
|
|
347
|
+
title: string;
|
|
348
|
+
subtitle: string;
|
|
349
|
+
icon?: string;
|
|
350
|
+
queryUrl?: string;
|
|
351
|
+
};
|
|
352
|
+
}): ShareMetadata | Promise<ShareMetadata>;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
declare module "sap/fe/core/controllerextensions/ViewStateOverrides" {
|
|
357
|
+
export default interface ViewStateOverrides {
|
|
358
|
+
/**
|
|
359
|
+
* Called when the application is suspended due to keep-alive mode.
|
|
360
|
+
* @public
|
|
361
|
+
*/
|
|
362
|
+
onSuspend(): void;
|
|
363
|
+
/**
|
|
364
|
+
* Called when the application is restored due to keep-alive mode.
|
|
365
|
+
* @public
|
|
366
|
+
*/
|
|
367
|
+
onRestore(): void;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define([], function () {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
}, false);
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJzYXAuZmUuY29yZS1tYW51YWwtZXh0LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSBtb2R1bGUgXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9CYXNlQ29udHJvbGxlckV4dGVuc2lvblwiIHtcblx0aW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5cdGltcG9ydCB0eXBlIEVkaXRGbG93T3ZlcnJpZGVzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd092ZXJyaWRlc1wiO1xuXHRpbXBvcnQgdHlwZSBJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGVzXCI7XG5cdGltcG9ydCB0eXBlIE1lc3NhZ2VIYW5kbGVyT3ZlcnJpZGVzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9NZXNzYWdlSGFuZGxlck92ZXJyaWRlc1wiO1xuXHRpbXBvcnQgdHlwZSBQYWdpbmF0b3JPdmVycmlkZXMgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BhZ2luYXRvck92ZXJyaWRlc1wiO1xuXHRpbXBvcnQgdHlwZSBSb3V0aW5nT3ZlcnJpZGVzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nT3ZlcnJpZGVzXCI7XG5cdGltcG9ydCB0eXBlIFNoYXJlT3ZlcnJpZGVzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZU92ZXJyaWRlc1wiO1xuXHRpbXBvcnQgdHlwZSBWaWV3U3RhdGVPdmVycmlkZXMgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZU92ZXJyaWRlc1wiO1xuXHRpbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcblxuXHR0eXBlIE1hcFRoaXM8VCwgUz4gPSB7XG5cdFx0W1AgaW4ga2V5b2YgU10/OiBTW1BdIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIEEpID0+IGluZmVyIFIgPyAodGhpczogVCwgLi4uYXJnczogQSkgPT4gUiA6IFNbUF07XG5cdH07XG5cdGV4cG9ydCB0eXBlIENvbnRyb2xsZXJFeHRlbnNpb25PdmVycmlkZXM8VCwgQ29udHJvbGxlclR5cGU+ID0ge1xuXHRcdC8vIExpZmVjeWNsZSBob29rc1xuXHRcdG9uSW5pdD86ICh0aGlzOiBUKSA9PiB2b2lkO1xuXHRcdG9uQmVmb3JlUmVuZGVyaW5nPzogKHRoaXM6IFQpID0+IHZvaWQ7XG5cdFx0b25BZnRlclJlbmRlcmluZz86ICh0aGlzOiBUKSA9PiB2b2lkO1xuXHRcdG9uRXhpdD86ICh0aGlzOiBUKSA9PiB2b2lkO1xuXG5cdFx0Ly8gQ0V4dCBIb29rc1xuXHRcdHBhZ2luYXRvcj86IE1hcFRoaXM8VCwgUGFnaW5hdG9yT3ZlcnJpZGVzPjtcblx0XHRlZGl0Rmxvdz86IE1hcFRoaXM8VCwgRWRpdEZsb3dPdmVycmlkZXM+O1xuXHRcdHJvdXRpbmc/OiBNYXBUaGlzPFQsIFJvdXRpbmdPdmVycmlkZXM+O1xuXHRcdG1lc3NhZ2VIYW5kbGVyPzogTWFwVGhpczxULCBNZXNzYWdlSGFuZGxlck92ZXJyaWRlcz47XG5cdFx0aW50ZW50QmFzZWROYXZpZ2F0aW9uPzogTWFwVGhpczxULCBJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZT47XG5cdFx0c2hhcmU/OiBNYXBUaGlzPFQsIFNoYXJlT3ZlcnJpZGVzPjtcblx0XHR2aWV3U3RhdGU/OiBNYXBUaGlzPFQsIFZpZXdTdGF0ZU92ZXJyaWRlcz47XG5cdH0gJiBNYXBUaGlzPFxuXHRcdFQsXG5cdFx0T21pdDxcblx0XHRcdENvbnRyb2xsZXJUeXBlLFxuXHRcdFx0XCJlZGl0Rmxvd1wiIHwgXCJwYWdpbmF0b3JcIiB8IFwicm91dGluZ1wiIHwgXCJtZXNzYWdlSGFuZGxlclwiIHwgXCJpbnRlbnRCYXNlZE5hdmlnYXRpb25cIiB8IFwicmVjb21tZW5kYXRpb25zXCIgfCBcInNoYXJlXCIgfCBcInZpZXdTdGF0ZVwiXG5cdFx0PlxuXHQ+O1xuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0Ly8gQHRzLWlnbm9yZVxuXHRleHBvcnQgZGVmYXVsdCBjbGFzcyBCYXNlQ29udHJvbGxlckV4dGVuc2lvbjxUIGV4dGVuZHMgUGFnZUNvbnRyb2xsZXIgPSBQYWdlQ29udHJvbGxlcj4gZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0XHRwcm90ZWN0ZWQgYmFzZTogVDtcblxuXHRcdHB1YmxpYyBzdGF0aWMgY3JlYXRlRXh0ZW5zaW9uT3ZlcnJpZGVzPEssIEJhc2VDb250cm9sbGVyVHlwZSA9IFBhZ2VDb250cm9sbGVyPihcblx0XHRcdG92ZXJyaWRlczogQ29udHJvbGxlckV4dGVuc2lvbk92ZXJyaWRlczxLLCBCYXNlQ29udHJvbGxlclR5cGU+XG5cdFx0KTogQ29udHJvbGxlckV4dGVuc2lvbk92ZXJyaWRlczxLLCBCYXNlQ29udHJvbGxlclR5cGU+O1xuXG5cdFx0Y29uc3RydWN0b3IoKTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
declare module "sap/fe/core/controllerextensions/BaseControllerExtension" {
|
|
2
|
+
import type PageController from "sap/fe/core/PageController";
|
|
3
|
+
import type EditFlowOverrides from "sap/fe/core/controllerextensions/EditFlowOverrides";
|
|
4
|
+
import type IntentBasedNavigationOverride from "sap/fe/core/controllerextensions/IntentBasedNavigationOverrides";
|
|
5
|
+
import type MessageHandlerOverrides from "sap/fe/core/controllerextensions/MessageHandlerOverrides";
|
|
6
|
+
import type PaginatorOverrides from "sap/fe/core/controllerextensions/PaginatorOverrides";
|
|
7
|
+
import type RoutingOverrides from "sap/fe/core/controllerextensions/RoutingOverrides";
|
|
8
|
+
import type ShareOverrides from "sap/fe/core/controllerextensions/ShareOverrides";
|
|
9
|
+
import type ViewStateOverrides from "sap/fe/core/controllerextensions/ViewStateOverrides";
|
|
10
|
+
import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
|
|
11
|
+
|
|
12
|
+
type MapThis<T, S> = {
|
|
13
|
+
[P in keyof S]?: S[P] extends (...args: infer A) => infer R ? (this: T, ...args: A) => R : S[P];
|
|
14
|
+
};
|
|
15
|
+
export type ControllerExtensionOverrides<T, ControllerType> = {
|
|
16
|
+
// Lifecycle hooks
|
|
17
|
+
onInit?: (this: T) => void;
|
|
18
|
+
onBeforeRendering?: (this: T) => void;
|
|
19
|
+
onAfterRendering?: (this: T) => void;
|
|
20
|
+
onExit?: (this: T) => void;
|
|
21
|
+
|
|
22
|
+
// CExt Hooks
|
|
23
|
+
paginator?: MapThis<T, PaginatorOverrides>;
|
|
24
|
+
editFlow?: MapThis<T, EditFlowOverrides>;
|
|
25
|
+
routing?: MapThis<T, RoutingOverrides>;
|
|
26
|
+
messageHandler?: MapThis<T, MessageHandlerOverrides>;
|
|
27
|
+
intentBasedNavigation?: MapThis<T, IntentBasedNavigationOverride>;
|
|
28
|
+
share?: MapThis<T, ShareOverrides>;
|
|
29
|
+
viewState?: MapThis<T, ViewStateOverrides>;
|
|
30
|
+
} & MapThis<
|
|
31
|
+
T,
|
|
32
|
+
Omit<
|
|
33
|
+
ControllerType,
|
|
34
|
+
"editFlow" | "paginator" | "routing" | "messageHandler" | "intentBasedNavigation" | "recommendations" | "share" | "viewState"
|
|
35
|
+
>
|
|
36
|
+
>;
|
|
37
|
+
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
export default class BaseControllerExtension<T extends PageController = PageController> extends ControllerExtension {
|
|
41
|
+
protected base: T;
|
|
42
|
+
|
|
43
|
+
public static createExtensionOverrides<K, BaseControllerType = PageController>(
|
|
44
|
+
overrides: ControllerExtensionOverrides<K, BaseControllerType>
|
|
45
|
+
): ControllerExtensionOverrides<K, BaseControllerType>;
|
|
46
|
+
|
|
47
|
+
constructor();
|
|
48
|
+
}
|
|
49
|
+
}
|
package/ui5.yaml
CHANGED
|
@@ -11,6 +11,7 @@ framework:
|
|
|
11
11
|
- name: sap.fe.placeholder
|
|
12
12
|
- name: sap.m
|
|
13
13
|
- name: sap.ui.core
|
|
14
|
+
- name: sap.ui.fl
|
|
14
15
|
- name: sap.ui.layout
|
|
15
16
|
- name: themelib_sap_fiori_3
|
|
16
17
|
optional: true
|
|
@@ -23,6 +24,7 @@ builder:
|
|
|
23
24
|
name: sap/fe/core-lib-preload
|
|
24
25
|
filters:
|
|
25
26
|
- sap/fe/core/**/*
|
|
27
|
+
- sap/fe/core/manifest.json
|
|
26
28
|
- sap/fe/base/**/*
|
|
27
29
|
- "!sap/fe/**/*.designtime.js"
|
|
28
30
|
- "!sap/fe/designtime/**/*"
|