@sapui5/sap.fe.core 1.130.0 → 1.131.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/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +3 -3
- package/src/sap/fe/core/ActionRuntime.ts +1 -1
- package/src/sap/fe/core/CommonUtils.js +38 -14
- package/src/sap/fe/core/CommonUtils.ts +39 -15
- package/src/sap/fe/core/TemplateComponent.js +4 -1
- package/src/sap/fe/core/TemplateComponent.ts +2 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +248 -0
- package/src/sap/fe/core/buildingBlocks/{BuildingBlockBase.ts → BuildingBlock.ts} +73 -132
- package/src/sap/fe/core/controllerextensions/EditFlow.js +17 -7
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +17 -6
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +4 -2
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +3 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +5 -2
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +4 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +47 -19
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +57 -19
- package/src/sap/fe/core/controllerextensions/PageReady.js +20 -18
- package/src/sap/fe/core/controllerextensions/PageReady.ts +19 -18
- package/src/sap/fe/core/controllerextensions/Placeholder.js +5 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +5 -0
- package/src/sap/fe/core/controllerextensions/Routing.js +2 -2
- package/src/sap/fe/core/controllerextensions/Routing.ts +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +3 -2
- package/src/sap/fe/core/controllerextensions/Share.ts +2 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js +5 -1
- package/src/sap/fe/core/controllerextensions/ViewState.ts +4 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +9 -5
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +17 -6
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +4 -3
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +3 -2
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +4 -4
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +3 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +3 -4
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +17 -20
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +30 -29
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +5 -5
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +4 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +77 -35
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +88 -43
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +3 -7
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.ts +0 -4
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributorMixin.js +70 -0
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributorMixin.ts +99 -0
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +1 -1
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +14 -2
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +20 -6
- package/src/sap/fe/core/converters/ConverterContext.js +10 -3
- package/src/sap/fe/core/converters/ConverterContext.ts +8 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +2 -1
- package/src/sap/fe/core/converters/controls/Common/Action.js +2 -2
- package/src/sap/fe/core/converters/controls/Common/Action.ts +5 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +10 -5
- package/src/sap/fe/core/converters/controls/Common/KPI.js +26 -9
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +48 -5
- package/src/sap/fe/core/converters/controls/Common/Table.js +63 -67
- package/src/sap/fe/core/converters/controls/Common/Table.ts +87 -81
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +2 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +1 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +2 -3
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +2 -2
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +12 -8
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +10 -6
- package/src/sap/fe/core/formatters/StandardFormatter.js +4 -1
- package/src/sap/fe/core/formatters/StandardFormatter.ts +4 -1
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +37 -10
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +38 -14
- package/src/sap/fe/core/helpers/BindingHelper.js +2 -2
- package/src/sap/fe/core/helpers/BindingHelper.ts +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js +3 -2
- package/src/sap/fe/core/helpers/DeleteHelper.ts +2 -1
- package/src/sap/fe/core/helpers/MetaPath.js +17 -2
- package/src/sap/fe/core/helpers/MetaPath.ts +27 -6
- package/src/sap/fe/core/helpers/RecommendationHelper.js +2 -2
- package/src/sap/fe/core/helpers/RecommendationHelper.ts +1 -1
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +8 -3
- package/src/sap/fe/core/helpers/ResourceModelHelper.ts +9 -2
- package/src/sap/fe/core/library.js +5 -2
- package/src/sap/fe/core/library.support.js +3 -3
- package/src/sap/fe/core/library.support.ts +2 -1
- package/src/sap/fe/core/library.ts +4 -0
- package/src/sap/fe/core/messagebundle.properties +6 -0
- package/src/sap/fe/core/messagebundle_ar.properties +11 -3
- package/src/sap/fe/core/messagebundle_bg.properties +14 -6
- package/src/sap/fe/core/messagebundle_ca.properties +10 -2
- package/src/sap/fe/core/messagebundle_cnr.properties +10 -2
- package/src/sap/fe/core/messagebundle_cs.properties +10 -2
- package/src/sap/fe/core/messagebundle_cy.properties +10 -2
- package/src/sap/fe/core/messagebundle_da.properties +10 -2
- package/src/sap/fe/core/messagebundle_de.properties +12 -4
- package/src/sap/fe/core/messagebundle_el.properties +10 -2
- package/src/sap/fe/core/messagebundle_en.properties +9 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +10 -2
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +10 -2
- package/src/sap/fe/core/messagebundle_es.properties +12 -4
- package/src/sap/fe/core/messagebundle_es_MX.properties +10 -2
- package/src/sap/fe/core/messagebundle_et.properties +10 -2
- package/src/sap/fe/core/messagebundle_fi.properties +10 -2
- package/src/sap/fe/core/messagebundle_fr.properties +10 -2
- package/src/sap/fe/core/messagebundle_fr_CA.properties +11 -3
- package/src/sap/fe/core/messagebundle_hi.properties +10 -2
- package/src/sap/fe/core/messagebundle_hr.properties +11 -3
- package/src/sap/fe/core/messagebundle_hu.properties +11 -3
- package/src/sap/fe/core/messagebundle_id.properties +10 -2
- package/src/sap/fe/core/messagebundle_it.properties +10 -2
- package/src/sap/fe/core/messagebundle_iw.properties +11 -3
- package/src/sap/fe/core/messagebundle_ja.properties +10 -2
- package/src/sap/fe/core/messagebundle_kk.properties +10 -2
- package/src/sap/fe/core/messagebundle_ko.properties +10 -2
- package/src/sap/fe/core/messagebundle_lt.properties +10 -2
- package/src/sap/fe/core/messagebundle_lv.properties +10 -2
- package/src/sap/fe/core/messagebundle_mk.properties +10 -2
- package/src/sap/fe/core/messagebundle_ms.properties +10 -2
- package/src/sap/fe/core/messagebundle_nl.properties +12 -4
- package/src/sap/fe/core/messagebundle_no.properties +11 -3
- package/src/sap/fe/core/messagebundle_pl.properties +10 -2
- package/src/sap/fe/core/messagebundle_pt.properties +10 -2
- package/src/sap/fe/core/messagebundle_pt_PT.properties +10 -2
- package/src/sap/fe/core/messagebundle_ro.properties +10 -2
- package/src/sap/fe/core/messagebundle_ru.properties +10 -2
- package/src/sap/fe/core/messagebundle_sh.properties +10 -2
- package/src/sap/fe/core/messagebundle_sk.properties +10 -2
- package/src/sap/fe/core/messagebundle_sl.properties +10 -2
- package/src/sap/fe/core/messagebundle_sr.properties +10 -2
- package/src/sap/fe/core/messagebundle_sv.properties +10 -2
- package/src/sap/fe/core/messagebundle_th.properties +12 -4
- package/src/sap/fe/core/messagebundle_tr.properties +12 -4
- package/src/sap/fe/core/messagebundle_uk.properties +10 -2
- package/src/sap/fe/core/messagebundle_vi.properties +11 -3
- package/src/sap/fe/core/messagebundle_zh_CN.properties +10 -2
- package/src/sap/fe/core/messagebundle_zh_TW.properties +10 -2
- package/src/sap/fe/core/operationsHelper.js +4 -4
- package/src/sap/fe/core/operationsHelper.ts +4 -4
- package/src/sap/fe/core/rootView/Fcl.controller.js +2 -2
- package/src/sap/fe/core/rootView/Fcl.controller.ts +4 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +5 -5
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +4 -3
- package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -28
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +3 -35
- package/src/sap/fe/core/services/RoutingServiceFactory.js +2 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +1 -3
- package/src/sap/fe/core/services/ShellServicesFactory.js +2 -13
- package/src/sap/fe/core/services/ShellServicesFactory.ts +1 -17
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +5 -3
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +3 -1
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +3 -4
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +2 -2
- package/src/sap/fe/core/templating/DataFieldFormatters.js +13 -6
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -6
- package/src/sap/fe/core/templating/UIFormatters.js +3 -3
- package/src/sap/fe/core/templating/UIFormatters.ts +4 -3
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +0 -326
|
@@ -381,4 +381,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/conver
|
|
|
381
381
|
_exports.createBlankChartVisualization = createBlankChartVisualization;
|
|
382
382
|
return _exports;
|
|
383
383
|
}, false);
|
|
384
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDaGFydEFjdGlvbnNGcm9tQW5ub3RhdGlvbnMiLCJjaGFydEFubm90YXRpb24iLCJ2aXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJjaGFydEFjdGlvbnMiLCJBY3Rpb25zIiwiZm9yRWFjaCIsImRhdGFGaWVsZCIsImlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QiLCJJbmxpbmUiLCJEZXRlcm1pbmluZyIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsIiRUeXBlIiwiQWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsInB1c2giLCJ0eXBlIiwiQWN0aW9uVHlwZSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInZpc2libGUiLCJnZXRDb21waWxlRXhwcmVzc2lvbkZvckFjdGlvbiIsIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiIsImlzTmF2aWdhYmxlIiwiZ2V0Q2hhcnRBY3Rpb25zIiwiYUFubm90YXRpb25BY3Rpb25zIiwibWFuaWZlc3RBY3Rpb25zIiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsImdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24iLCJhY3Rpb25zIiwiYWN0aW9uT3ZlcndyaXRlQ29uZmlnIiwiZW5hYmxlZCIsIk92ZXJyaWRlVHlwZSIsIm92ZXJ3cml0ZSIsImVuYWJsZU9uU2VsZWN0IiwiY29tbWFuZCIsInBvc2l0aW9uIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJjb21tYW5kQWN0aW9ucyIsIl9leHBvcnRzIiwiZ2V0UDEzbk1vZGUiLCJfY2hhcnRNYW5pZmVzdFNldHRpbmciLCJtYW5pZmVzdFdyYXBwZXIiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJjaGFydE1hbmlmZXN0U2V0dGluZ3MiLCJ2YXJpYW50TWFuYWdlbWVudCIsImdldFZhcmlhbnRNYW5hZ2VtZW50IiwiYVBlcnNvbmFsaXphdGlvbiIsInBlcnNvbmFsaXphdGlvbiIsImNoYXJ0U2V0dGluZ3MiLCJpc0NvbnRyb2xWYXJpYW50IiwiVmFyaWFudE1hbmFnZW1lbnRUeXBlIiwiQ29udHJvbCIsInVuZGVmaW5lZCIsIml0ZW0iLCJzb3J0IiwiZmlsdGVyIiwiam9pbiIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXNPYmplY3QiLCJhZ2dQcm9wIiwib2JqIiwiUHJvcGVydHkiLCJfUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwidmFsdWUiLCJuYW1lIiwiY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uIiwiZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkIiwic2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGgiLCJfY2hhcnRBbm5vdGF0aW9uJFRpdGwiLCJhZ2dyZWdhdGlvbkhlbHBlciIsIkFnZ3JlZ2F0aW9uSGVscGVyIiwiZ2V0RW50aXR5VHlwZSIsImlzQW5hbHl0aWNzU3VwcG9ydGVkIiwiRXJyb3IiLCJhVHJhbnNBZ2dyZWdhdGlvbnMiLCJnZXRUcmFuc0FnZ3JlZ2F0aW9ucyIsImFDdXN0b21BZ2dyZWdhdGVzIiwiZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMiLCJwYWdlTWFuaWZlc3RTZXR0aW5ncyIsInAxM25Nb2RlIiwiTG9nIiwid2FybmluZyIsIm1DdXN0b21BZ2dyZWdhdGVzIiwiZW50aXR5VHlwZSIsImN1c3RvbUFnZ3JlZ2F0ZSIsIl9jdXN0b21BZ2dyZWdhdGUkYW5ubyIsIl9jdXN0b21BZ2dyZWdhdGUkYW5ubzIiLCJfcmVsYXRlZEN1c3RvbUFnZ3JlZ2EiLCJfcmVsYXRlZEN1c3RvbUFnZ3JlZ2EyIiwiX3JlbGF0ZWRDdXN0b21BZ2dyZWdhMyIsImFDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzIiwiYW5ub3RhdGlvbnMiLCJBZ2dyZWdhdGlvbiIsIkNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMiLCJxdWFsaWZpZXIiLCJyZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkiLCJlbnRpdHlQcm9wZXJ0aWVzIiwiZmluZCIsInByb3BlcnR5IiwibGFiZWwiLCJDb21tb24iLCJMYWJlbCIsInRvU3RyaW5nIiwic29ydGFibGUiLCJzb3J0T3JkZXIiLCJjb250ZXh0RGVmaW5pbmdQcm9wZXJ0eSIsIm1hcCIsIm9DdHhEZWZQcm9wZXJ0eSIsIm1UcmFuc0FnZ3JlZ2F0aW9ucyIsIm9SZXNvdXJjZUJ1bmRsZUNvcmUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJlbGVtZW50IiwiX2VsZW1lbnQkYW5ub3RhdGlvbnMiLCJfZWxlbWVudCRhbm5vdGF0aW9ucyQiLCJfZWxlbWVudCRhbm5vdGF0aW9uczIiLCJfZWxlbWVudCRhbm5vdGF0aW9uczMiLCJfZWxlbWVudCRhbm5vdGF0aW9uczQiLCJOYW1lIiwicHJvcGVydHlQYXRoIiwiQWdncmVnYXRhYmxlUHJvcGVydHkiLCJhZ2dyZWdhdGlvbk1ldGhvZCIsIkFnZ3JlZ2F0aW9uTWV0aG9kIiwiZ2V0VGV4dCIsImN1c3RvbSIsImFBZ2dQcm9wcyIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJhR3JwUHJvcHMiLCJnZXRHcm91cGFibGVQcm9wZXJ0aWVzIiwibUFwcGx5U3VwcG9ydGVkIiwiQWdncmVnYXRhYmxlUHJvcGVydGllcyIsIkdyb3VwYWJsZVByb3BlcnRpZXMiLCJwcm9wIiwibmF2aWdhdGlvblByb3BlcnR5UGF0aCIsInNwbGl0IiwibGFzdEluZGV4T2YiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJ0aXRsZSIsIlRpdGxlIiwiZGF0YU1vZGVsUGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJpc0VudGl0eVNldCIsImVudGl0eU5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJzdGFydGluZ0VudGl0eVNldCIsInNGaWx0ZXJiYXJJZCIsImdldEZpbHRlckJhcklEIiwiZ2V0Q29udGV4dFBhdGgiLCJvVml6UHJvcGVydGllcyIsInBsb3RBcmVhIiwid2luZG93Iiwic3RhcnQiLCJlbmQiLCJsZWdlbmRHcm91cCIsImxheW91dCIsImF1dG9CaW5kT25Jbml0IiwiZ2V0VGVtcGxhdGVUeXBlIiwiVGVtcGxhdGVUeXBlIiwiT2JqZWN0UGFnZSIsIkxpc3RSZXBvcnQiLCJBbmFseXRpY2FsTGlzdFBhZ2UiLCJoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zIiwib25TZWdtZW50ZWRCdXR0b25QcmVzc2VkIiwiYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyIsImdldEFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMiLCJlbmFibGVTZWFyY2giLCJpbmNsdWRlcyIsImlzSW5zaWdodHNWaXNpYmxlIiwiZ2V0SW5zaWdodHNWaXNpYmlsaXR5IiwiaXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0IiwiZ2V0UGFyYW1ldGVyRW50aXR5VHlwZSIsImlzSW5zaWdodHNFbmFibGVkIiwiYW5kIiwiZ2V0SW5zaWdodHNFbmFibGVtZW50IiwiVmlzdWFsaXphdGlvblR5cGUiLCJDaGFydCIsImlkIiwiZ2V0Q2hhcnRJRCIsImNvbGxlY3Rpb24iLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiYXBpSWQiLCJnZW5lcmF0ZSIsIm5hdmlnYXRpb25QYXRoIiwiZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aCIsImZpbHRlcklkIiwidml6UHJvcGVydGllcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjdXN0b21BZ2ciLCJ0cmFuc0FnZyIsImFwcGx5U3VwcG9ydGVkIiwiZmluZFZhcmlhbnRNYW5hZ2VtZW50IiwiTm9uZSIsImNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbkZvclRlbXBsYXRpbmciLCJ2aXN1YWxpemF0aW9uIiwiX2RhdGFNb2RlbFBhdGgkdGFyZ2V0IiwiX2RhdGFGaWVsZCRhbm5vdGF0aW9uIiwiX2RhdGFGaWVsZCRhbm5vdGF0aW9uMiIsImNvbXBpbGVFeHByZXNzaW9uIiwibm90IiwiZXF1YWwiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJVSSIsIkhpZGRlbiIsImdldFJlbGF0aXZlTW9kZWxQYXRoRnVuY3Rpb24iLCJjcmVhdGVCbGFua0NoYXJ0VmlzdWFsaXphdGlvbiIsIm11bHRpVmlld3MiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNoYXJ0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQWdncmVnYXRhYmxlUHJvcGVydHlUeXBlLCBBZ2dyZWdhdGlvbk1ldGhvZCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydCwgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGNvbXBpbGVFeHByZXNzaW9uLCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBub3QsIHR5cGUgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgeyBpc0RhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFubm90YXRpb25BY3Rpb24sXG5cdEJhc2VBY3Rpb24sXG5cdENvbWJpbmVkQWN0aW9uLFxuXHRDdXN0b21BY3Rpb24sXG5cdE92ZXJyaWRlVHlwZUFjdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgeyBnZXRBY3Rpb25zRnJvbU1hbmlmZXN0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHsgT3ZlcnJpZGVUeXBlLCBpbnNlcnRDdXN0b21FbGVtZW50cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0tleVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0VGFyZ2V0T2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24sIE1hbmlmZXN0QWN0aW9uIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUsIFRlbXBsYXRlVHlwZSwgVmFyaWFudE1hbmFnZW1lbnRUeXBlLCBWaXN1YWxpemF0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcIi4uLy4uL01hbmlmZXN0V3JhcHBlclwiO1xuaW1wb3J0IHsgQWdncmVnYXRpb25IZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHsgZ2V0Q2hhcnRJRCwgZ2V0RmlsdGVyQmFySUQgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9JRFwiO1xuaW1wb3J0IHsgZ2V0SW5zaWdodHNFbmFibGVtZW50LCBnZXRJbnNpZ2h0c1Zpc2liaWxpdHkgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9JbnNpZ2h0c0hlbHBlcnNcIjtcbmltcG9ydCB0eXBlIHsgQWN0dWFsVmlzdWFsaXphdGlvbkFubm90YXRpb25zIH0gZnJvbSBcIi4vRGF0YVZpc3VhbGl6YXRpb25cIjtcblxuZXhwb3J0IHR5cGUgQ2hhcnRBcHBseVN1cHBvcnRlZCA9IHtcblx0JFR5cGU6IHN0cmluZztcblx0ZW5hYmxlU2VhcmNoPzogYm9vbGVhbjtcblx0QWdncmVnYXRhYmxlUHJvcGVydGllcz86IHVua25vd25bXTtcblx0R3JvdXBhYmxlUHJvcGVydGllcz86IHVua25vd25bXTtcbn07XG5leHBvcnQgdHlwZSBDaGFydFRlbXBsYXRlVmlzdWFsaXphdGlvbiA9IHtcblx0dHlwZTogVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQ7XG5cdGlkOiBzdHJpbmc7XG5cdGFwaUlkOiBzdHJpbmc7XG5cdGVudGl0eU5hbWU6IHN0cmluZztcblx0Y29sbGVjdGlvbjogc3RyaW5nO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRhcHBseVN1cHBvcnRlZDogQ2hhcnRBcHBseVN1cHBvcnRlZDtcblx0aXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0PzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgQ2hhcnRWaXN1YWxpemF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIENoYXJ0VmlzdWFsaXphdGlvbiA9IENoYXJ0VGVtcGxhdGVWaXN1YWxpemF0aW9uICYge1xuXHRlbnRpdHlOYW1lOiBzdHJpbmc7XG5cdHBlcnNvbmFsaXphdGlvbj86IHN0cmluZztcblx0bmF2aWdhdGlvblBhdGg6IHN0cmluZztcblx0ZmlsdGVySWQ/OiBzdHJpbmc7XG5cdHZpelByb3BlcnRpZXM6IHN0cmluZztcblx0YWN0aW9uczogQmFzZUFjdGlvbltdO1xuXHRjb21tYW5kQWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPjtcblx0dGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0YXV0b0JpbmRPbkluaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZDogc3RyaW5nO1xuXHR2aXNpYmxlOiBzdHJpbmc7XG5cdGN1c3RvbUFnZzogb2JqZWN0O1xuXHR0cmFuc0FnZzogb2JqZWN0O1xuXHRtdWx0aVZpZXdzPzogYm9vbGVhbjtcblx0dmFyaWFudE1hbmFnZW1lbnQ6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZTtcblx0c2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGg/OiBzdHJpbmc7XG5cdGlzSW5zaWdodHNFbmFibGVkPzogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRpc0luc2lnaHRzVmlzaWJsZT86IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcbn07XG5cbi8qKlxuICogTWV0aG9kIHRvIHJldHJpZXZlIGFsbCBjaGFydCBhY3Rpb25zIGZyb20gYW5ub3RhdGlvbnMuXG4gKiBAcGFyYW0gY2hhcnRBbm5vdGF0aW9uXG4gKiBAcGFyYW0gdmlzdWFsaXphdGlvblBhdGhcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgY2hhcnQgYWN0aW9ucyBmcm9tIHRoZSBhbm5vdGF0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldENoYXJ0QWN0aW9uc0Zyb21Bbm5vdGF0aW9ucyhcblx0Y2hhcnRBbm5vdGF0aW9uOiBDaGFydCxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBBbm5vdGF0aW9uQWN0aW9uW10ge1xuXHRjb25zdCBjaGFydEFjdGlvbnM6IEFubm90YXRpb25BY3Rpb25bXSA9IFtdO1xuXHRpZiAoY2hhcnRBbm5vdGF0aW9uPy5BY3Rpb25zKSB7XG5cdFx0Y2hhcnRBbm5vdGF0aW9uLkFjdGlvbnMuZm9yRWFjaCgoZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKSA9PiB7XG5cdFx0XHRpZiAoaXNEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdChkYXRhRmllbGQpICYmICFkYXRhRmllbGQuSW5saW5lICYmICFkYXRhRmllbGQuRGV0ZXJtaW5pbmcpIHtcblx0XHRcdFx0Y29uc3Qga2V5ID0gS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpO1xuXHRcdFx0XHRzd2l0Y2ggKGRhdGFGaWVsZC4kVHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdFx0XHRcdFx0aWYgKGRhdGFGaWVsZC5BY3Rpb25UYXJnZXQgJiYgIWRhdGFGaWVsZC5BY3Rpb25UYXJnZXQuaXNCb3VuZCkge1xuXHRcdFx0XHRcdFx0XHRjaGFydEFjdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChkYXRhRmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSxcblx0XHRcdFx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0XHRcdFx0dmlzaWJsZTogZ2V0Q29tcGlsZUV4cHJlc3Npb25Gb3JBY3Rpb24oZGF0YUZpZWxkLCBjb252ZXJ0ZXJDb250ZXh0KVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRcdFx0XHRjaGFydEFjdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uLFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGRhdGFGaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdFx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0XHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGNoYXJ0QWN0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXJ0QWN0aW9ucyhcblx0Y2hhcnRBbm5vdGF0aW9uOiBDaGFydCxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBDb21iaW5lZEFjdGlvbiB7XG5cdGNvbnN0IGFBbm5vdGF0aW9uQWN0aW9ucyA9IGdldENoYXJ0QWN0aW9uc0Zyb21Bbm5vdGF0aW9ucyhjaGFydEFubm90YXRpb24sIHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0Y29uc3QgbWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb248Q2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24+KHZpc3VhbGl6YXRpb25QYXRoKS5hY3Rpb25zIGFzIFJlY29yZDxcblx0XHRcdHN0cmluZyxcblx0XHRcdE1hbmlmZXN0QWN0aW9uXG5cdFx0Pixcblx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdGFBbm5vdGF0aW9uQWN0aW9uc1xuXHQpO1xuXHRjb25zdCBhY3Rpb25PdmVyd3JpdGVDb25maWc6IE92ZXJyaWRlVHlwZUFjdGlvbiA9IHtcblx0XHRlbmFibGVkOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdGVuYWJsZU9uU2VsZWN0OiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdHZpc2libGU6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0Y29tbWFuZDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRwb3NpdGlvbjogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZVxuXHR9O1xuXHRjb25zdCBjaGFydEFjdGlvbnMgPSBpbnNlcnRDdXN0b21FbGVtZW50czxCYXNlQWN0aW9uPihhQW5ub3RhdGlvbkFjdGlvbnMsIG1hbmlmZXN0QWN0aW9ucy5hY3Rpb25zLCBhY3Rpb25PdmVyd3JpdGVDb25maWcpO1xuXHRyZXR1cm4ge1xuXHRcdGFjdGlvbnM6IGNoYXJ0QWN0aW9ucyxcblx0XHRjb21tYW5kQWN0aW9uczogbWFuaWZlc3RBY3Rpb25zLmNvbW1hbmRBY3Rpb25zXG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQMTNuTW9kZSh2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXI6IE1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IGNoYXJ0TWFuaWZlc3RTZXR0aW5nczogQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24odmlzdWFsaXphdGlvblBhdGgpO1xuXHRjb25zdCB2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnRUeXBlID0gbWFuaWZlc3RXcmFwcGVyLmdldFZhcmlhbnRNYW5hZ2VtZW50KCk7XG5cdGNvbnN0IGFQZXJzb25hbGl6YXRpb246IHN0cmluZ1tdID0gW107XG5cdC8vIFBlcnNvbmFsaXphdGlvbiBjb25maWd1cmVkIGluIG1hbmlmZXN0LlxuXHRjb25zdCBwZXJzb25hbGl6YXRpb24gPSBjaGFydE1hbmlmZXN0U2V0dGluZ3M/LmNoYXJ0U2V0dGluZ3M/LnBlcnNvbmFsaXphdGlvbjtcblx0Y29uc3QgaXNDb250cm9sVmFyaWFudCA9IHZhcmlhbnRNYW5hZ2VtZW50ID09PSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbCA/IHRydWUgOiBmYWxzZTtcblx0Ly8gaWYgcGVyc29uYWxpemF0aW9uIGlzIHNldCB0byBmYWxzZSBkbyBub3Qgc2hvdyBhbnkgb3B0aW9uXG5cdGlmICgocGVyc29uYWxpemF0aW9uICE9PSB1bmRlZmluZWQgJiYgIXBlcnNvbmFsaXphdGlvbikgfHwgcGVyc29uYWxpemF0aW9uID09IFwiZmFsc2VcIikge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0aWYgKHR5cGVvZiBwZXJzb25hbGl6YXRpb24gPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBTcGVjaWZpYyBwZXJzb25hbGl6YXRpb24gb3B0aW9ucyBlbmFibGVkIGluIG1hbmlmZXN0LiBVc2UgdGhlbSBhcyBpcy5cblx0XHRpZiAocGVyc29uYWxpemF0aW9uLnR5cGUpIHtcblx0XHRcdGFQZXJzb25hbGl6YXRpb24ucHVzaChcIlR5cGVcIik7XG5cdFx0fVxuXHRcdGlmIChwZXJzb25hbGl6YXRpb24uaXRlbSkge1xuXHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiSXRlbVwiKTtcblx0XHR9XG5cdFx0aWYgKHBlcnNvbmFsaXphdGlvbi5zb3J0KSB7XG5cdFx0XHRhUGVyc29uYWxpemF0aW9uLnB1c2goXCJTb3J0XCIpO1xuXHRcdH1cblx0XHRpZiAocGVyc29uYWxpemF0aW9uLmZpbHRlcikge1xuXHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiRmlsdGVyXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gYVBlcnNvbmFsaXphdGlvbi5qb2luKFwiLFwiKTtcblx0fSBlbHNlIGlmIChpc0NvbnRyb2xWYXJpYW50IHx8ICEhcGVyc29uYWxpemF0aW9uKSB7XG5cdFx0Ly8gbWFuaWZlc3QgaGFzIHBlcnNvbmFsaXphdGlvbiBjb25maWd1cmVkLCBjaGVjayBpZiBpdCdzIHRydWVcblx0XHQvLyBpZiBtYW5pZmVzdCBkb2Vzbid0IGhhdmUgcGVyc29uYWxpemF0aW9uLCBjaGVjayBmb3IgdmFyaWFudCBtYW5hZ2VtZW50IGlzIHNldCB0byBjb250cm9sXG5cdFx0cmV0dXJuIFwiU29ydCxUeXBlLEl0ZW0sRmlsdGVyXCI7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gaWYgbWFuaWZlc3QgZG9lc24ndCBoYXZlIHBlcnNvbmFsaXphdGlvbiwgc2hvdyBkZWZhdWx0IG9wdGlvbnMgd2l0aG91dCBmaWx0ZXJcblx0XHRyZXR1cm4gXCJTb3J0LFR5cGUsSXRlbVwiO1xuXHR9XG59XG5leHBvcnQgdHlwZSBDaGFydEN1c3RvbUFnZ3JlZ2F0ZSA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRzb3J0YWJsZTogYm9vbGVhbjtcblx0c29ydE9yZGVyOiBcImJvdGhcIjtcblx0Y29udGV4dERlZmluaW5nUHJvcGVydHk6IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgVHJhbnNBZ2cgPSB7XG5cdG5hbWU6IHN0cmluZztcblx0cHJvcGVydHlQYXRoOiBzdHJpbmc7XG5cdGFnZ3JlZ2F0aW9uTWV0aG9kOiBBZ2dyZWdhdGlvbk1ldGhvZDtcblx0bGFiZWw6IHN0cmluZztcblx0c29ydGFibGU6IGJvb2xlYW47XG5cdHNvcnRPcmRlcjogXCJib3RoXCI7XG5cdGN1c3RvbTogYm9vbGVhbjtcbn07XG5mdW5jdGlvbiBnZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzT2JqZWN0KGFnZ1Byb3A6IEFnZ3JlZ2F0YWJsZVByb3BlcnR5VHlwZSB8IFByb3BlcnR5KTogeyBQcm9wZXJ0eTogeyAkUHJvcGVydHlQYXRoOiBzdHJpbmcgfSB9IHtcblx0bGV0IG9iajtcblx0aWYgKChhZ2dQcm9wIGFzIEFnZ3JlZ2F0YWJsZVByb3BlcnR5VHlwZSk/LlByb3BlcnR5KSB7XG5cdFx0b2JqID0ge1xuXHRcdFx0UHJvcGVydHk6IHtcblx0XHRcdFx0JFByb3BlcnR5UGF0aDogKGFnZ1Byb3AgYXMgQWdncmVnYXRhYmxlUHJvcGVydHlUeXBlKT8uUHJvcGVydHk/LnZhbHVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRvYmogPSB7XG5cdFx0XHRQcm9wZXJ0eToge1xuXHRcdFx0XHQkUHJvcGVydHlQYXRoOiAoYWdnUHJvcCBhcyBQcm9wZXJ0eSk/Lm5hbWVcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cdHJldHVybiBvYmo7XG59XG4vKipcbiAqIENyZWF0ZSB0aGUgQ2hhcnRWaXN1YWxpemF0aW9uIGNvbmZpZ3VyYXRpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGlzcGxheSBhIGNoYXJ0IHVzaW5nIHRoZSBDaGFydCBidWlsZGluZyBibG9jay5cbiAqIEBwYXJhbSBjaGFydEFubm90YXRpb24gVGhlIHRhcmdldGVkIGNoYXJ0IGFubm90YXRpb25cbiAqIEBwYXJhbSB2aXN1YWxpemF0aW9uUGF0aCBUaGUgcGF0aCBvZiB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQgRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIEFwcGx5U3VwcG9ydGVkIG5lZWRzIHRvIGJlIGNoZWNrZWQgb3Igbm90XG4gKiBAcGFyYW0gc2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGhcbiAqIEByZXR1cm5zIFRoZSBjaGFydCB2aXN1YWxpemF0aW9uIGJhc2VkIG9uIHRoZSBhbm5vdGF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGFydFZpc3VhbGl6YXRpb24oXG5cdGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQsXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0ZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkPzogYm9vbGVhbixcblx0c2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGg/OiBzdHJpbmdcbik6IENoYXJ0VmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBjb252ZXJ0ZXJDb250ZXh0LCB0cnVlKTsgLy8gcGFzc2luZyB0aGUgbGFzdCBwYXJhbWV0ZXIgYXMgdHJ1ZSB0byBjb25zaWRlciB0aGUgb2xkIGFubm90YXRpb25zIGkuZS4gQWdncmVnYXRpb24uQWdncmVnYXRhYmxlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGluIGNhc2Ugb2YgY2hhcnRcblx0aWYgKCFkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQgJiYgIWFnZ3JlZ2F0aW9uSGVscGVyLmlzQW5hbHl0aWNzU3VwcG9ydGVkKCkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJBcHBseVN1cHBvcnRlZCBpcyBub3QgYWRkZWQgdG8gdGhlIGFubm90YXRpb25zXCIpO1xuXHR9XG5cdGNvbnN0IGFUcmFuc0FnZ3JlZ2F0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldFRyYW5zQWdncmVnYXRpb25zKCk7XG5cdGNvbnN0IGFDdXN0b21BZ2dyZWdhdGVzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMoKTtcblx0Y29uc3QgcGFnZU1hbmlmZXN0U2V0dGluZ3M6IE1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudFR5cGUgPSBwYWdlTWFuaWZlc3RTZXR0aW5ncy5nZXRWYXJpYW50TWFuYWdlbWVudCgpO1xuXHRjb25zdCBwMTNuTW9kZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gZ2V0UDEzbk1vZGUodmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRpZiAocDEzbk1vZGUgPT09IHVuZGVmaW5lZCAmJiB2YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIpIHtcblx0XHRMb2cud2FybmluZyhcIlZhcmlhbnQgTWFuYWdlbWVudCBjYW5ub3QgYmUgZW5hYmxlZCB3aGVuIHBlcnNvbmFsaXphdGlvbiBpcyBkaXNhYmxlZFwiKTtcblx0fVxuXHRjb25zdCBtQ3VzdG9tQWdncmVnYXRlczogUmVjb3JkPHN0cmluZywgb2JqZWN0PiA9IHt9O1xuXHRpZiAoYUN1c3RvbUFnZ3JlZ2F0ZXMpIHtcblx0XHRjb25zdCBlbnRpdHlUeXBlID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0RW50aXR5VHlwZSgpO1xuXHRcdGZvciAoY29uc3QgY3VzdG9tQWdncmVnYXRlIG9mIGFDdXN0b21BZ2dyZWdhdGVzKSB7XG5cdFx0XHRjb25zdCBhQ29udGV4dERlZmluaW5nUHJvcGVydGllcyA9IGN1c3RvbUFnZ3JlZ2F0ZT8uYW5ub3RhdGlvbnM/LkFnZ3JlZ2F0aW9uPy5Db250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzO1xuXHRcdFx0Y29uc3QgcXVhbGlmaWVyID0gY3VzdG9tQWdncmVnYXRlPy5xdWFsaWZpZXI7XG5cdFx0XHRjb25zdCByZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkgPSBxdWFsaWZpZXIgJiYgZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZpbmQoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5uYW1lID09PSBxdWFsaWZpZXIpO1xuXHRcdFx0Y29uc3QgbGFiZWwgPSByZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkgJiYgcmVsYXRlZEN1c3RvbUFnZ3JlZ2F0ZVByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKTtcblx0XHRcdG1DdXN0b21BZ2dyZWdhdGVzW3F1YWxpZmllcl0gPSB7XG5cdFx0XHRcdG5hbWU6IHF1YWxpZmllcixcblx0XHRcdFx0bGFiZWw6IGxhYmVsIHx8IGBDdXN0b20gQWdncmVnYXRlICgke3F1YWxpZmllcn0pYCxcblx0XHRcdFx0c29ydGFibGU6IHRydWUsXG5cdFx0XHRcdHNvcnRPcmRlcjogXCJib3RoXCIsXG5cdFx0XHRcdGNvbnRleHREZWZpbmluZ1Byb3BlcnR5OiBhQ29udGV4dERlZmluaW5nUHJvcGVydGllc1xuXHRcdFx0XHRcdD8gYUNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMubWFwKChvQ3R4RGVmUHJvcGVydHkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9DdHhEZWZQcm9wZXJ0eS52YWx1ZTtcblx0XHRcdFx0XHQgIH0pXG5cdFx0XHRcdFx0OiBbXVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBtVHJhbnNBZ2dyZWdhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFRyYW5zQWdnPiA9IHt9O1xuXHRjb25zdCBvUmVzb3VyY2VCdW5kbGVDb3JlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpITtcblx0aWYgKGFUcmFuc0FnZ3JlZ2F0aW9ucykge1xuXHRcdGZvciAoY29uc3QgZWxlbWVudCBvZiBhVHJhbnNBZ2dyZWdhdGlvbnMpIHtcblx0XHRcdG1UcmFuc0FnZ3JlZ2F0aW9uc1tlbGVtZW50Lk5hbWUgYXMgc3RyaW5nXSA9IHtcblx0XHRcdFx0bmFtZTogZWxlbWVudC5OYW1lIGFzIHN0cmluZyxcblx0XHRcdFx0cHJvcGVydHlQYXRoOiBlbGVtZW50LkFnZ3JlZ2F0YWJsZVByb3BlcnR5LnZhbHVlLFxuXHRcdFx0XHRhZ2dyZWdhdGlvbk1ldGhvZDogZWxlbWVudC5BZ2dyZWdhdGlvbk1ldGhvZCxcblx0XHRcdFx0bGFiZWw6IGVsZW1lbnQ/LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsXG5cdFx0XHRcdFx0PyBlbGVtZW50Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKVxuXHRcdFx0XHRcdDogYCR7b1Jlc291cmNlQnVuZGxlQ29yZS5nZXRUZXh0KFwiQUdHUkVHQVRBQkxFX1BST1BFUlRZXCIpfSAoJHtlbGVtZW50Lk5hbWV9KWAsXG5cdFx0XHRcdHNvcnRhYmxlOiB0cnVlLFxuXHRcdFx0XHRzb3J0T3JkZXI6IFwiYm90aFwiLFxuXHRcdFx0XHRjdXN0b206IGZhbHNlXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGFBZ2dQcm9wcyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMoKTtcblx0Y29uc3QgYUdycFByb3BzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0R3JvdXBhYmxlUHJvcGVydGllcygpO1xuXHRjb25zdCBtQXBwbHlTdXBwb3J0ZWQgPSB7fSBhcyBDaGFydEFwcGx5U3VwcG9ydGVkO1xuXHRtQXBwbHlTdXBwb3J0ZWQuJFR5cGUgPSBBZ2dyZWdhdGlvbkFubm90YXRpb25UeXBlcy5BcHBseVN1cHBvcnRlZFR5cGU7XG5cdG1BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gW107XG5cdG1BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzID0gW107XG5cblx0aWYgKGFBZ2dQcm9wcykge1xuXHRcdG1BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gYUFnZ1Byb3BzLm1hcCgocHJvcCkgPT4gZ2V0QWdncmVnYXRhYmxlUHJvcGVydGllc09iamVjdChwcm9wKSk7XG5cdH1cblxuXHRpZiAoYUdycFByb3BzKSB7XG5cdFx0bUFwcGx5U3VwcG9ydGVkLkdyb3VwYWJsZVByb3BlcnRpZXMgPSBhR3JwUHJvcHMubWFwKChwcm9wKSA9PiAoeyBbXCIkUHJvcGVydHlQYXRoXCJdOiBwcm9wLnZhbHVlIH0pKTtcblx0fVxuXG5cdGNvbnN0IGNoYXJ0QWN0aW9ucyA9IGdldENoYXJ0QWN0aW9ucyhjaGFydEFubm90YXRpb24sIHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0bGV0IFtuYXZpZ2F0aW9uUHJvcGVydHlQYXRoIC8qLCBhbm5vdGF0aW9uUGF0aCovXSA9IHZpc3VhbGl6YXRpb25QYXRoLnNwbGl0KFwiQFwiKTtcblx0aWYgKG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGFzdEluZGV4T2YoXCIvXCIpID09PSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpIHtcblx0XHQvLyBEcm9wIHRyYWlsaW5nIHNsYXNoXG5cdFx0bmF2aWdhdGlvblByb3BlcnR5UGF0aCA9IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGguc3Vic3RyaW5nKDAsIG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGVuZ3RoIC0gMSk7XG5cdH1cblx0Y29uc3QgdGl0bGUgPSBjaGFydEFubm90YXRpb24uVGl0bGU/LnRvU3RyaW5nKCkgfHwgXCJcIjsgLy8gcmVhZCB0aXRsZSBmcm9tIGNoYXJ0IGFubm90YXRpb25cblx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHRjb25zdCBpc0VudGl0eVNldDogYm9vbGVhbiA9IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGVuZ3RoID09PSAwO1xuXHRjb25zdCBlbnRpdHlOYW1lOiBzdHJpbmcgPSBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldCA/IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0Lm5hbWUgOiBkYXRhTW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWU7XG5cdGNvbnN0IHNGaWx0ZXJiYXJJZCA9IGlzRW50aXR5U2V0ID8gZ2V0RmlsdGVyQmFySUQoY29udmVydGVyQ29udGV4dC5nZXRDb250ZXh0UGF0aCgpKSA6IHVuZGVmaW5lZDtcblx0Y29uc3Qgb1ZpelByb3BlcnRpZXMgPSB7XG5cdFx0cGxvdEFyZWE6IHtcblx0XHRcdHdpbmRvdzoge1xuXHRcdFx0XHRzdGFydDogXCJmaXJzdERhdGFQb2ludFwiLFxuXHRcdFx0XHRlbmQ6IFwibGFzdERhdGFQb2ludFwiXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRsZWdlbmRHcm91cDoge1xuXHRcdFx0bGF5b3V0OiB7XG5cdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiXG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRsZXQgYXV0b0JpbmRPbkluaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cdGlmIChjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuT2JqZWN0UGFnZSkge1xuXHRcdGF1dG9CaW5kT25Jbml0ID0gdHJ1ZTtcblx0fSBlbHNlIGlmIChcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCB8fFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2Vcblx0KSB7XG5cdFx0YXV0b0JpbmRPbkluaXQgPSBmYWxzZTtcblx0fVxuXHRjb25zdCBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID1cblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMoKSB8fFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2U7XG5cdGNvbnN0IG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCA9IGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMgPyBcIi5oYW5kbGVycy5vblNlZ21lbnRlZEJ1dHRvblByZXNzZWRcIiA6IFwiXCI7XG5cdGNvbnN0IHZpc2libGUgPSBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID8gXCJ7PSAke3BhZ2VJbnRlcm5hbD5hbHBDb250ZW50Vmlld30gIT09ICdUYWJsZSd9XCIgOiBcInRydWVcIjtcblx0Y29uc3QgYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMoKTtcblx0bUFwcGx5U3VwcG9ydGVkLmVuYWJsZVNlYXJjaCA9IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMgPyBhbGxvd2VkVHJhbnNmb3JtYXRpb25zLmluY2x1ZGVzKFwic2VhcmNoXCIpIDogdHJ1ZTtcblx0bGV0IHF1YWxpZmllciA9IFwiXCI7XG5cdGlmIChjaGFydEFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiI1wiKS5sZW5ndGggPiAxKSB7XG5cdFx0cXVhbGlmaWVyID0gY2hhcnRBbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIiNcIilbMV07XG5cdH1cblx0Y29uc3QgaXNJbnNpZ2h0c1Zpc2libGUgPSBnZXRJbnNpZ2h0c1Zpc2liaWxpdHkoXCJBbmFseXRpY2FsXCIsIGNvbnZlcnRlckNvbnRleHQsIHZpc3VhbGl6YXRpb25QYXRoKTtcblx0Y29uc3QgaXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRQYXJhbWV0ZXJFbnRpdHlUeXBlKCkgPyB0cnVlIDogZmFsc2U7XG5cdGNvbnN0IGlzSW5zaWdodHNFbmFibGVkID0gYW5kKGdldEluc2lnaHRzRW5hYmxlbWVudCgpLCBpc0luc2lnaHRzVmlzaWJsZSk7XG5cdHJldHVybiB7XG5cdFx0dHlwZTogVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQsXG5cdFx0aWQ6IHF1YWxpZmllclxuXHRcdFx0PyBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIHF1YWxpZmllciwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpXG5cdFx0XHQ6IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpLFxuXHRcdGNvbGxlY3Rpb246IGdldFRhcmdldE9iamVjdFBhdGgoY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkpLFxuXHRcdGFwaUlkOiBnZW5lcmF0ZShbXG5cdFx0XHRxdWFsaWZpZXJcblx0XHRcdFx0PyBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIHF1YWxpZmllciwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpXG5cdFx0XHRcdDogZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0XHRcIkNoYXJ0XCJcblx0XHRdKSxcblx0XHRlbnRpdHlOYW1lOiBlbnRpdHlOYW1lLFxuXHRcdHBlcnNvbmFsaXphdGlvbjogZ2V0UDEzbk1vZGUodmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdG5hdmlnYXRpb25QYXRoOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLFxuXHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEFic29sdXRlQW5ub3RhdGlvblBhdGgodmlzdWFsaXphdGlvblBhdGgpLFxuXHRcdGZpbHRlcklkOiBzRmlsdGVyYmFySWQsXG5cdFx0dml6UHJvcGVydGllczogSlNPTi5zdHJpbmdpZnkob1ZpelByb3BlcnRpZXMpLFxuXHRcdGFjdGlvbnM6IGNoYXJ0QWN0aW9ucy5hY3Rpb25zLFxuXHRcdGNvbW1hbmRBY3Rpb25zOiBjaGFydEFjdGlvbnMuY29tbWFuZEFjdGlvbnMsXG5cdFx0dGl0bGU6IHRpdGxlLFxuXHRcdGF1dG9CaW5kT25Jbml0OiBhdXRvQmluZE9uSW5pdCxcblx0XHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQ6IG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCxcblx0XHR2aXNpYmxlOiB2aXNpYmxlLFxuXHRcdGN1c3RvbUFnZzogbUN1c3RvbUFnZ3JlZ2F0ZXMsXG5cdFx0dHJhbnNBZ2c6IG1UcmFuc0FnZ3JlZ2F0aW9ucyxcblx0XHRhcHBseVN1cHBvcnRlZDogbUFwcGx5U3VwcG9ydGVkLFxuXHRcdHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRQYXRoLFxuXHRcdHZhcmlhbnRNYW5hZ2VtZW50OiBmaW5kVmFyaWFudE1hbmFnZW1lbnQocDEzbk1vZGUsIHZhcmlhbnRNYW5hZ2VtZW50KSxcblx0XHRpc0luc2lnaHRzRW5hYmxlZDogaXNJbnNpZ2h0c0VuYWJsZWQsXG5cdFx0aXNJbnNpZ2h0c1Zpc2libGU6IGlzSW5zaWdodHNWaXNpYmxlLFxuXHRcdGlzUGFyYW1ldGVyaXplZEVudGl0eVNldDogaXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0XG5cdH07XG59XG4vKipcbiAqIE1ldGhvZCB0byBkZXRlcm1pbmUgdGhlIHZhcmlhbnQgbWFuYWdlbWVudC5cbiAqIEBwYXJhbSBwMTNuTW9kZVxuICogQHBhcmFtIHZhcmlhbnRNYW5hZ2VtZW50XG4gKiBAcmV0dXJucyBUaGUgdmFyaWFudCBtYW5hZ2VtZW50IGZvciB0aGUgY2hhcnRcbiAqL1xuZnVuY3Rpb24gZmluZFZhcmlhbnRNYW5hZ2VtZW50KHAxM25Nb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQsIHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudFR5cGUpOiBWYXJpYW50TWFuYWdlbWVudFR5cGUge1xuXHRyZXR1cm4gdmFyaWFudE1hbmFnZW1lbnQgPT09IFwiQ29udHJvbFwiICYmICFwMTNuTW9kZSA/IFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Ob25lIDogdmFyaWFudE1hbmFnZW1lbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBDaGFydFZpc3VhbGl6YXRpb24gY29uZmlndXJhdGlvbiB0aGF0IHdpbGwgYmUgdXNlZCB0byBkdXJpbmcgdGVtcGxhdGluZy5cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIHZpc3VhbGl6YXRpb25QYXRoIFRoZSBwYXRoIG9mIHRoZSB2aXN1YWxpemF0aW9uIGFubm90YXRpb25cbiAqIEBwYXJhbSB2aXN1YWxpemF0aW9uIFRoZSB2aXN1YWxpemF0aW9uIGFubm90YXRpb25cbiAqIEByZXR1cm5zIFRoZSBjaGFydCB2aXN1YWxpemF0aW9uIGJhc2VkIG9uIHRoZSBhbm5vdGF0aW9uIHVzZWQgZm9yIHRlbXBsYXRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbkZvclRlbXBsYXRpbmcoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0dmlzdWFsaXphdGlvbjogQWN0dWFsVmlzdWFsaXphdGlvbkFubm90YXRpb25zXG4pOiBDaGFydFRlbXBsYXRlVmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IHF1YWxpZmllciA9IHZpc3VhbGl6YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiI1wiKS5sZW5ndGggPiAxID8gdmlzdWFsaXphdGlvbi5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoXCIjXCIpWzFdIDogXCJcIjtcblx0Y29uc3QgW25hdmlnYXRpb25Qcm9wZXJ0eVBhdGhdID0gdmlzdWFsaXphdGlvblBhdGguc3BsaXQoXCJAXCIpO1xuXG5cdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgaXNFbnRpdHlTZXQ6IGJvb2xlYW4gPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCA9PT0gMDtcblx0Y29uc3QgZW50aXR5TmFtZTogc3RyaW5nID0gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQ/Lm5hbWUgPz8gZGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lO1xuXHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSwgY29udmVydGVyQ29udGV4dCwgdHJ1ZSk7XG5cdGNvbnN0IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRBbGxvd2VkVHJhbnNmb3JtYXRpb25zKCk7XG5cdGNvbnN0IGlzUGFyYW1ldGVyaXplZEVudGl0eVNldCA9ICEhY29udmVydGVyQ29udGV4dC5nZXRQYXJhbWV0ZXJFbnRpdHlUeXBlKCk7XG5cdHJldHVybiB7XG5cdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aCh2aXN1YWxpemF0aW9uUGF0aCksXG5cdFx0aXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0LFxuXHRcdGNvbGxlY3Rpb246IGdldFRhcmdldE9iamVjdFBhdGgoY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkpLFxuXHRcdHR5cGU6IFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0LFxuXHRcdGVudGl0eU5hbWUsXG5cdFx0aWQ6IHF1YWxpZmllclxuXHRcdFx0PyBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIHF1YWxpZmllciwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpXG5cdFx0XHQ6IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpLFxuXHRcdGFwaUlkOiBnZW5lcmF0ZShbXG5cdFx0XHRxdWFsaWZpZXJcblx0XHRcdFx0PyBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIHF1YWxpZmllciwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpXG5cdFx0XHRcdDogZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0XHRcIkNoYXJ0XCJcblx0XHRdKSxcblx0XHRhcHBseVN1cHBvcnRlZDoge1xuXHRcdFx0JFR5cGU6IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFwcGx5U3VwcG9ydGVkVHlwZVwiLFxuXHRcdFx0ZW5hYmxlU2VhcmNoOiBhbGxvd2VkVHJhbnNmb3JtYXRpb25zPy5pbmNsdWRlcyhcInNlYXJjaFwiKSA/PyB0cnVlXG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBnZXQgY29tcGlsZSBleHByZXNzaW9uIGZvciBEYXRhRmllbGRGb3JBY3Rpb24gYW5kIERhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbi5cbiAqIEBwYXJhbSBkYXRhRmllbGRcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBDb21waWxlIGV4cHJlc3Npb24gZm9yIERhdGFGaWVsZEZvckFjdGlvbiBhbmQgRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKFxuXHRkYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0bm90KFxuXHRcdFx0ZXF1YWwoXG5cdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihcblx0XHRcdFx0XHRkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4sXG5cdFx0XHRcdFx0W10sXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0UmVsYXRpdmVNb2RlbFBhdGhGdW5jdGlvbigpXG5cdFx0XHRcdCksXG5cdFx0XHRcdHRydWVcblx0XHRcdClcblx0XHQpXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCbGFua0NoYXJ0VmlzdWFsaXphdGlvbihjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4pOiBDaGFydFZpc3VhbGl6YXRpb24ge1xuXHRjb25zdCBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID1cblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMoKSB8fFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2U7XG5cdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgZW50aXR5TmFtZSA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0ID8gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQubmFtZSA6IGRhdGFNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZTtcblxuXHRjb25zdCB2aXN1YWxpemF0aW9uOiBDaGFydFZpc3VhbGl6YXRpb24gPSB7XG5cdFx0dHlwZTogVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQsXG5cdFx0aWQ6IGdldENoYXJ0SUQoZW50aXR5TmFtZSwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpLFxuXHRcdGFwaUlkOiBnZW5lcmF0ZShbZ2V0Q2hhcnRJRChlbnRpdHlOYW1lLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksIFwiQ2hhcnRcIl0pLFxuXHRcdGVudGl0eU5hbWU6IGVudGl0eU5hbWUsXG5cdFx0dGl0bGU6IFwiXCIsXG5cdFx0Y29sbGVjdGlvbjogXCJcIixcblx0XHRwZXJzb25hbGl6YXRpb246IHVuZGVmaW5lZCxcblx0XHRuYXZpZ2F0aW9uUGF0aDogXCJcIixcblx0XHRhbm5vdGF0aW9uUGF0aDogXCJcIixcblx0XHR2aXpQcm9wZXJ0aWVzOiBKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRsZWdlbmRHcm91cDoge1xuXHRcdFx0XHRsYXlvdXQ6IHtcblx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSksXG5cdFx0YWN0aW9uczogW10sXG5cdFx0Y29tbWFuZEFjdGlvbnM6IHt9LFxuXHRcdGF1dG9CaW5kT25Jbml0OiBmYWxzZSxcblx0XHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQ6IFwiXCIsXG5cdFx0dmlzaWJsZTogaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyA/IFwiez0gJHtwYWdlSW50ZXJuYWw+YWxwQ29udGVudFZpZXd9ICE9PSAnVGFibGUnfVwiIDogXCJ0cnVlXCIsXG5cdFx0Y3VzdG9tQWdnOiB7fSxcblx0XHR0cmFuc0FnZzoge30sXG5cdFx0YXBwbHlTdXBwb3J0ZWQ6IHtcblx0XHRcdCRUeXBlOiBcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BcHBseVN1cHBvcnRlZFR5cGVcIixcblx0XHRcdEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXM6IFtdLFxuXHRcdFx0R3JvdXBhYmxlUHJvcGVydGllczogW10sXG5cdFx0XHRlbmFibGVTZWFyY2g6IGZhbHNlXG5cdFx0fSxcblx0XHRtdWx0aVZpZXdzOiBmYWxzZSxcblx0XHR2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmVcblx0fTtcblxuXHRyZXR1cm4gdmlzdWFsaXphdGlvbjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpREE7QUFDQTtBQUNBOztFQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNBLDhCQUE4QkEsQ0FDdENDLGVBQXNCLEVBQ3RCQyxpQkFBeUIsRUFDekJDLGdCQUF5RCxFQUNwQztJQUNyQixNQUFNQyxZQUFnQyxHQUFHLEVBQUU7SUFDM0MsSUFBSUgsZUFBZSxhQUFmQSxlQUFlLGVBQWZBLGVBQWUsQ0FBRUksT0FBTyxFQUFFO01BQzdCSixlQUFlLENBQUNJLE9BQU8sQ0FBQ0MsT0FBTyxDQUFFQyxTQUFpQyxJQUFLO1FBQ3RFLElBQUlDLDRCQUE0QixDQUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDQSxTQUFTLENBQUNFLE1BQU0sSUFBSSxDQUFDRixTQUFTLENBQUNHLFdBQVcsRUFBRTtVQUMzRixNQUFNQyxHQUFHLEdBQUdDLFNBQVMsQ0FBQ0Msd0JBQXdCLENBQUNOLFNBQVMsQ0FB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
|
|
384
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDaGFydEFjdGlvbnNGcm9tQW5ub3RhdGlvbnMiLCJjaGFydEFubm90YXRpb24iLCJ2aXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJjaGFydEFjdGlvbnMiLCJBY3Rpb25zIiwiZm9yRWFjaCIsImRhdGFGaWVsZCIsImlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QiLCJJbmxpbmUiLCJEZXRlcm1pbmluZyIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsIiRUeXBlIiwiQWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsInB1c2giLCJ0eXBlIiwiQWN0aW9uVHlwZSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInZpc2libGUiLCJnZXRDb21waWxlRXhwcmVzc2lvbkZvckFjdGlvbiIsIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiIsImlzTmF2aWdhYmxlIiwiZ2V0Q2hhcnRBY3Rpb25zIiwiYUFubm90YXRpb25BY3Rpb25zIiwibWFuaWZlc3RBY3Rpb25zIiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsImdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24iLCJhY3Rpb25zIiwiYWN0aW9uT3ZlcndyaXRlQ29uZmlnIiwiZW5hYmxlZCIsIk92ZXJyaWRlVHlwZSIsIm92ZXJ3cml0ZSIsImVuYWJsZU9uU2VsZWN0IiwiY29tbWFuZCIsInBvc2l0aW9uIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJjb21tYW5kQWN0aW9ucyIsIl9leHBvcnRzIiwiZ2V0UDEzbk1vZGUiLCJfY2hhcnRNYW5pZmVzdFNldHRpbmciLCJtYW5pZmVzdFdyYXBwZXIiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJjaGFydE1hbmlmZXN0U2V0dGluZ3MiLCJ2YXJpYW50TWFuYWdlbWVudCIsImdldFZhcmlhbnRNYW5hZ2VtZW50IiwiYVBlcnNvbmFsaXphdGlvbiIsInBlcnNvbmFsaXphdGlvbiIsImNoYXJ0U2V0dGluZ3MiLCJpc0NvbnRyb2xWYXJpYW50IiwiVmFyaWFudE1hbmFnZW1lbnRUeXBlIiwiQ29udHJvbCIsInVuZGVmaW5lZCIsIml0ZW0iLCJzb3J0IiwiZmlsdGVyIiwiam9pbiIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXNPYmplY3QiLCJhZ2dQcm9wIiwib2JqIiwiUHJvcGVydHkiLCJfUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwidmFsdWUiLCJuYW1lIiwiY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uIiwiZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkIiwic2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGgiLCJfY2hhcnRBbm5vdGF0aW9uJFRpdGwiLCJhZ2dyZWdhdGlvbkhlbHBlciIsIkFnZ3JlZ2F0aW9uSGVscGVyIiwiZ2V0RW50aXR5VHlwZSIsImlzQW5hbHl0aWNzU3VwcG9ydGVkIiwiRXJyb3IiLCJhVHJhbnNBZ2dyZWdhdGlvbnMiLCJnZXRUcmFuc0FnZ3JlZ2F0aW9ucyIsImFDdXN0b21BZ2dyZWdhdGVzIiwiZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMiLCJwYWdlTWFuaWZlc3RTZXR0aW5ncyIsInAxM25Nb2RlIiwiTG9nIiwid2FybmluZyIsIm1DdXN0b21BZ2dyZWdhdGVzIiwiZW50aXR5VHlwZSIsImN1c3RvbUFnZ3JlZ2F0ZSIsIl9jdXN0b21BZ2dyZWdhdGUkYW5ubyIsIl9jdXN0b21BZ2dyZWdhdGUkYW5ubzIiLCJfcmVsYXRlZEN1c3RvbUFnZ3JlZ2EiLCJfcmVsYXRlZEN1c3RvbUFnZ3JlZ2EyIiwiX3JlbGF0ZWRDdXN0b21BZ2dyZWdhMyIsImFDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzIiwiYW5ub3RhdGlvbnMiLCJBZ2dyZWdhdGlvbiIsIkNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMiLCJxdWFsaWZpZXIiLCJyZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkiLCJlbnRpdHlQcm9wZXJ0aWVzIiwiZmluZCIsInByb3BlcnR5IiwibGFiZWwiLCJDb21tb24iLCJMYWJlbCIsInRvU3RyaW5nIiwic29ydGFibGUiLCJzb3J0T3JkZXIiLCJjb250ZXh0RGVmaW5pbmdQcm9wZXJ0eSIsIm1hcCIsIm9DdHhEZWZQcm9wZXJ0eSIsIm1UcmFuc0FnZ3JlZ2F0aW9ucyIsIm9SZXNvdXJjZUJ1bmRsZUNvcmUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJlbGVtZW50IiwiX2VsZW1lbnQkYW5ub3RhdGlvbnMiLCJfZWxlbWVudCRhbm5vdGF0aW9ucyQiLCJfZWxlbWVudCRhbm5vdGF0aW9uczIiLCJfZWxlbWVudCRhbm5vdGF0aW9uczMiLCJfZWxlbWVudCRhbm5vdGF0aW9uczQiLCJOYW1lIiwicHJvcGVydHlQYXRoIiwiQWdncmVnYXRhYmxlUHJvcGVydHkiLCJhZ2dyZWdhdGlvbk1ldGhvZCIsIkFnZ3JlZ2F0aW9uTWV0aG9kIiwiZ2V0VGV4dCIsImN1c3RvbSIsImFBZ2dQcm9wcyIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJhR3JwUHJvcHMiLCJnZXRHcm91cGFibGVQcm9wZXJ0aWVzIiwibUFwcGx5U3VwcG9ydGVkIiwiQWdncmVnYXRhYmxlUHJvcGVydGllcyIsIkdyb3VwYWJsZVByb3BlcnRpZXMiLCJwcm9wIiwibmF2aWdhdGlvblByb3BlcnR5UGF0aCIsInNwbGl0IiwibGFzdEluZGV4T2YiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJ0aXRsZSIsIlRpdGxlIiwiZGF0YU1vZGVsUGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJpc0VudGl0eVNldCIsImVudGl0eU5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJzdGFydGluZ0VudGl0eVNldCIsInNGaWx0ZXJiYXJJZCIsImdldEZpbHRlckJhcklEIiwiZ2V0Q29udGV4dFBhdGgiLCJvVml6UHJvcGVydGllcyIsInBsb3RBcmVhIiwid2luZG93Iiwic3RhcnQiLCJlbmQiLCJsZWdlbmRHcm91cCIsImxheW91dCIsImF1dG9CaW5kT25Jbml0IiwiZ2V0VGVtcGxhdGVUeXBlIiwiVGVtcGxhdGVUeXBlIiwiT2JqZWN0UGFnZSIsIkxpc3RSZXBvcnQiLCJBbmFseXRpY2FsTGlzdFBhZ2UiLCJoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zIiwib25TZWdtZW50ZWRCdXR0b25QcmVzc2VkIiwiYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyIsImdldEFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMiLCJlbmFibGVTZWFyY2giLCJpbmNsdWRlcyIsImlzSW5zaWdodHNWaXNpYmxlIiwiZ2V0SW5zaWdodHNWaXNpYmlsaXR5IiwiaXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0IiwiZ2V0UGFyYW1ldGVyRW50aXR5VHlwZSIsImlzSW5zaWdodHNFbmFibGVkIiwiYW5kIiwiZ2V0SW5zaWdodHNFbmFibGVtZW50IiwiVmlzdWFsaXphdGlvblR5cGUiLCJDaGFydCIsImlkIiwiZ2V0Q2hhcnRJRCIsImNvbGxlY3Rpb24iLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiYXBpSWQiLCJnZW5lcmF0ZSIsIm5hdmlnYXRpb25QYXRoIiwiZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aCIsImZpbHRlcklkIiwidml6UHJvcGVydGllcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjdXN0b21BZ2ciLCJ0cmFuc0FnZyIsImFwcGx5U3VwcG9ydGVkIiwiZmluZFZhcmlhbnRNYW5hZ2VtZW50IiwiTm9uZSIsImNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbkZvclRlbXBsYXRpbmciLCJ2aXN1YWxpemF0aW9uIiwiX2RhdGFNb2RlbFBhdGgkdGFyZ2V0IiwiX2RhdGFGaWVsZCRhbm5vdGF0aW9uIiwiX2RhdGFGaWVsZCRhbm5vdGF0aW9uMiIsImNvbXBpbGVFeHByZXNzaW9uIiwibm90IiwiZXF1YWwiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJVSSIsIkhpZGRlbiIsImdldFJlbGF0aXZlTW9kZWxQYXRoRnVuY3Rpb24iLCJjcmVhdGVCbGFua0NoYXJ0VmlzdWFsaXphdGlvbiIsIm11bHRpVmlld3MiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNoYXJ0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHksIFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBBZ2dyZWdhdGFibGVQcm9wZXJ0eVR5cGUsIEFnZ3JlZ2F0aW9uTWV0aG9kIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHsgQWdncmVnYXRpb25Bbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0FnZ3JlZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0LCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFuZCwgY29tcGlsZUV4cHJlc3Npb24sIGVxdWFsLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIG5vdCwgdHlwZSBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB0eXBlIHtcblx0QW5ub3RhdGlvbkFjdGlvbixcblx0QmFzZUFjdGlvbixcblx0Q29tYmluZWRBY3Rpb24sXG5cdEN1c3RvbUFjdGlvbixcblx0T3ZlcnJpZGVUeXBlQWN0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB7IGdldEFjdGlvbnNGcm9tTWFuaWZlc3QgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgeyBPdmVycmlkZVR5cGUsIGluc2VydEN1c3RvbUVsZW1lbnRzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IEtleUhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvS2V5XCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgeyBFeHBhbmRQYXRoVHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24sIE1hbmlmZXN0QWN0aW9uIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUsIFRlbXBsYXRlVHlwZSwgVmFyaWFudE1hbmFnZW1lbnRUeXBlLCBWaXN1YWxpemF0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcIi4uLy4uL01hbmlmZXN0V3JhcHBlclwiO1xuaW1wb3J0IHsgQWdncmVnYXRpb25IZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHsgZ2V0Q2hhcnRJRCwgZ2V0RmlsdGVyQmFySUQgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9JRFwiO1xuaW1wb3J0IHsgZ2V0SW5zaWdodHNFbmFibGVtZW50LCBnZXRJbnNpZ2h0c1Zpc2liaWxpdHkgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9JbnNpZ2h0c0hlbHBlcnNcIjtcbmltcG9ydCB0eXBlIHsgQWN0dWFsVmlzdWFsaXphdGlvbkFubm90YXRpb25zIH0gZnJvbSBcIi4vRGF0YVZpc3VhbGl6YXRpb25cIjtcblxuZXhwb3J0IHR5cGUgQ2hhcnRBcHBseVN1cHBvcnRlZCA9IHtcblx0JFR5cGU6IHN0cmluZztcblx0ZW5hYmxlU2VhcmNoPzogYm9vbGVhbjtcblx0QWdncmVnYXRhYmxlUHJvcGVydGllcz86IChFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+ICYgeyBQcm9wZXJ0eTogRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiB9KVtdO1xuXHRHcm91cGFibGVQcm9wZXJ0aWVzPzogKEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gJiB7IFByb3BlcnR5OiBFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+IH0pW107XG59O1xuZXhwb3J0IHR5cGUgQ2hhcnRUZW1wbGF0ZVZpc3VhbGl6YXRpb24gPSB7XG5cdHR5cGU6IFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0O1xuXHRpZDogc3RyaW5nO1xuXHRhcGlJZDogc3RyaW5nO1xuXHRlbnRpdHlOYW1lOiBzdHJpbmc7XG5cdGNvbGxlY3Rpb246IHN0cmluZztcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0YXBwbHlTdXBwb3J0ZWQ6IENoYXJ0QXBwbHlTdXBwb3J0ZWQ7XG5cdGlzUGFyYW1ldGVyaXplZEVudGl0eVNldD86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIENoYXJ0VmlzdWFsaXphdGlvblxuICovXG5leHBvcnQgdHlwZSBDaGFydFZpc3VhbGl6YXRpb24gPSBDaGFydFRlbXBsYXRlVmlzdWFsaXphdGlvbiAmIHtcblx0ZW50aXR5TmFtZTogc3RyaW5nO1xuXHRwZXJzb25hbGl6YXRpb24/OiBzdHJpbmc7XG5cdG5hdmlnYXRpb25QYXRoOiBzdHJpbmc7XG5cdGZpbHRlcklkPzogc3RyaW5nO1xuXHR2aXpQcm9wZXJ0aWVzOiBzdHJpbmc7XG5cdGFjdGlvbnM6IEJhc2VBY3Rpb25bXTtcblx0Y29tbWFuZEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj47XG5cdHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGF1dG9CaW5kT25Jbml0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQ6IHN0cmluZztcblx0dmlzaWJsZTogc3RyaW5nO1xuXHRjdXN0b21BZ2c6IG9iamVjdDtcblx0dHJhbnNBZ2c6IG9iamVjdDtcblx0bXVsdGlWaWV3cz86IGJvb2xlYW47XG5cdHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudFR5cGU7XG5cdHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nO1xuXHRpc0luc2lnaHRzRW5hYmxlZD86IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblx0aXNJbnNpZ2h0c1Zpc2libGU/OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG59O1xuXG4vKipcbiAqIE1ldGhvZCB0byByZXRyaWV2ZSBhbGwgY2hhcnQgYWN0aW9ucyBmcm9tIGFubm90YXRpb25zLlxuICogQHBhcmFtIGNoYXJ0QW5ub3RhdGlvblxuICogQHBhcmFtIHZpc3VhbGl6YXRpb25QYXRoXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgVGhlIGNoYXJ0IGFjdGlvbnMgZnJvbSB0aGUgYW5ub3RhdGlvblxuICovXG5mdW5jdGlvbiBnZXRDaGFydEFjdGlvbnNGcm9tQW5ub3RhdGlvbnMoXG5cdGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQsXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogQW5ub3RhdGlvbkFjdGlvbltdIHtcblx0Y29uc3QgY2hhcnRBY3Rpb25zOiBBbm5vdGF0aW9uQWN0aW9uW10gPSBbXTtcblx0aWYgKGNoYXJ0QW5ub3RhdGlvbj8uQWN0aW9ucykge1xuXHRcdGNoYXJ0QW5ub3RhdGlvbi5BY3Rpb25zLmZvckVhY2goKGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcykgPT4ge1xuXHRcdFx0aWYgKGlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QoZGF0YUZpZWxkKSAmJiAhZGF0YUZpZWxkLklubGluZSAmJiAhZGF0YUZpZWxkLkRldGVybWluaW5nKSB7XG5cdFx0XHRcdGNvbnN0IGtleSA9IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZGF0YUZpZWxkKTtcblx0XHRcdFx0c3dpdGNoIChkYXRhRmllbGQuJFR5cGUpIHtcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbjpcblx0XHRcdFx0XHRcdGlmIChkYXRhRmllbGQuQWN0aW9uVGFyZ2V0ICYmICFkYXRhRmllbGQuQWN0aW9uVGFyZ2V0LmlzQm91bmQpIHtcblx0XHRcdFx0XHRcdFx0Y2hhcnRBY3Rpb25zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9yQWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdFx0XHRcdFx0a2V5LFxuXHRcdFx0XHRcdFx0XHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dClcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0XHRcdFx0Y2hhcnRBY3Rpb25zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbixcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChkYXRhRmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSxcblx0XHRcdFx0XHRcdFx0a2V5LFxuXHRcdFx0XHRcdFx0XHR2aXNpYmxlOiBnZXRDb21waWxlRXhwcmVzc2lvbkZvckFjdGlvbihkYXRhRmllbGQsIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0XHRcdFx0XHRpc05hdmlnYWJsZTogdHJ1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBjaGFydEFjdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFydEFjdGlvbnMoXG5cdGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQsXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogQ29tYmluZWRBY3Rpb24ge1xuXHRjb25zdCBhQW5ub3RhdGlvbkFjdGlvbnMgPSBnZXRDaGFydEFjdGlvbnNGcm9tQW5ub3RhdGlvbnMoY2hhcnRBbm5vdGF0aW9uLCB2aXN1YWxpemF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dCk7XG5cdGNvbnN0IG1hbmlmZXN0QWN0aW9ucyA9IGdldEFjdGlvbnNGcm9tTWFuaWZlc3QoXG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uPENoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uPih2aXN1YWxpemF0aW9uUGF0aCkuYWN0aW9ucyBhcyBSZWNvcmQ8XG5cdFx0XHRzdHJpbmcsXG5cdFx0XHRNYW5pZmVzdEFjdGlvblxuXHRcdD4sXG5cdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRhQW5ub3RhdGlvbkFjdGlvbnNcblx0KTtcblx0Y29uc3QgYWN0aW9uT3ZlcndyaXRlQ29uZmlnOiBPdmVycmlkZVR5cGVBY3Rpb24gPSB7XG5cdFx0ZW5hYmxlZDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRlbmFibGVPblNlbGVjdDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHR2aXNpYmxlOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdGNvbW1hbmQ6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0cG9zaXRpb246IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGVcblx0fTtcblx0Y29uc3QgY2hhcnRBY3Rpb25zID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHM8QmFzZUFjdGlvbj4oYUFubm90YXRpb25BY3Rpb25zLCBtYW5pZmVzdEFjdGlvbnMuYWN0aW9ucywgYWN0aW9uT3ZlcndyaXRlQ29uZmlnKTtcblx0cmV0dXJuIHtcblx0XHRhY3Rpb25zOiBjaGFydEFjdGlvbnMsXG5cdFx0Y29tbWFuZEFjdGlvbnM6IG1hbmlmZXN0QWN0aW9ucy5jb21tYW5kQWN0aW9uc1xuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UDEzbk1vZGUodmlzdWFsaXphdGlvblBhdGg6IHN0cmluZywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbWFuaWZlc3RXcmFwcGVyOiBNYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBjaGFydE1hbmlmZXN0U2V0dGluZ3M6IENoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uKHZpc3VhbGl6YXRpb25QYXRoKTtcblx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQ6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZSA9IG1hbmlmZXN0V3JhcHBlci5nZXRWYXJpYW50TWFuYWdlbWVudCgpO1xuXHRjb25zdCBhUGVyc29uYWxpemF0aW9uOiBzdHJpbmdbXSA9IFtdO1xuXHQvLyBQZXJzb25hbGl6YXRpb24gY29uZmlndXJlZCBpbiBtYW5pZmVzdC5cblx0Y29uc3QgcGVyc29uYWxpemF0aW9uID0gY2hhcnRNYW5pZmVzdFNldHRpbmdzPy5jaGFydFNldHRpbmdzPy5wZXJzb25hbGl6YXRpb247XG5cdGNvbnN0IGlzQ29udHJvbFZhcmlhbnQgPSB2YXJpYW50TWFuYWdlbWVudCA9PT0gVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2wgPyB0cnVlIDogZmFsc2U7XG5cdC8vIGlmIHBlcnNvbmFsaXphdGlvbiBpcyBzZXQgdG8gZmFsc2UgZG8gbm90IHNob3cgYW55IG9wdGlvblxuXHRpZiAoKHBlcnNvbmFsaXphdGlvbiAhPT0gdW5kZWZpbmVkICYmICFwZXJzb25hbGl6YXRpb24pIHx8IHBlcnNvbmFsaXphdGlvbiA9PSBcImZhbHNlXCIpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGlmICh0eXBlb2YgcGVyc29uYWxpemF0aW9uID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gU3BlY2lmaWMgcGVyc29uYWxpemF0aW9uIG9wdGlvbnMgZW5hYmxlZCBpbiBtYW5pZmVzdC4gVXNlIHRoZW0gYXMgaXMuXG5cdFx0aWYgKHBlcnNvbmFsaXphdGlvbi50eXBlKSB7XG5cdFx0XHRhUGVyc29uYWxpemF0aW9uLnB1c2goXCJUeXBlXCIpO1xuXHRcdH1cblx0XHRpZiAocGVyc29uYWxpemF0aW9uLml0ZW0pIHtcblx0XHRcdGFQZXJzb25hbGl6YXRpb24ucHVzaChcIkl0ZW1cIik7XG5cdFx0fVxuXHRcdGlmIChwZXJzb25hbGl6YXRpb24uc29ydCkge1xuXHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiU29ydFwiKTtcblx0XHR9XG5cdFx0aWYgKHBlcnNvbmFsaXphdGlvbi5maWx0ZXIpIHtcblx0XHRcdGFQZXJzb25hbGl6YXRpb24ucHVzaChcIkZpbHRlclwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIGFQZXJzb25hbGl6YXRpb24uam9pbihcIixcIik7XG5cdH0gZWxzZSBpZiAoaXNDb250cm9sVmFyaWFudCB8fCAhIXBlcnNvbmFsaXphdGlvbikge1xuXHRcdC8vIG1hbmlmZXN0IGhhcyBwZXJzb25hbGl6YXRpb24gY29uZmlndXJlZCwgY2hlY2sgaWYgaXQncyB0cnVlXG5cdFx0Ly8gaWYgbWFuaWZlc3QgZG9lc24ndCBoYXZlIHBlcnNvbmFsaXphdGlvbiwgY2hlY2sgZm9yIHZhcmlhbnQgbWFuYWdlbWVudCBpcyBzZXQgdG8gY29udHJvbFxuXHRcdHJldHVybiBcIlNvcnQsVHlwZSxJdGVtLEZpbHRlclwiO1xuXHR9IGVsc2Uge1xuXHRcdC8vIGlmIG1hbmlmZXN0IGRvZXNuJ3QgaGF2ZSBwZXJzb25hbGl6YXRpb24sIHNob3cgZGVmYXVsdCBvcHRpb25zIHdpdGhvdXQgZmlsdGVyXG5cdFx0cmV0dXJuIFwiU29ydCxUeXBlLEl0ZW1cIjtcblx0fVxufVxuZXhwb3J0IHR5cGUgQ2hhcnRDdXN0b21BZ2dyZWdhdGUgPSB7XG5cdG5hbWU6IHN0cmluZztcblx0bGFiZWw6IHN0cmluZztcblx0c29ydGFibGU6IGJvb2xlYW47XG5cdHNvcnRPcmRlcjogXCJib3RoXCI7XG5cdGNvbnRleHREZWZpbmluZ1Byb3BlcnR5OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFRyYW5zQWdnID0ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHByb3BlcnR5UGF0aDogc3RyaW5nO1xuXHRhZ2dyZWdhdGlvbk1ldGhvZDogQWdncmVnYXRpb25NZXRob2Q7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdHNvcnRhYmxlOiBib29sZWFuO1xuXHRzb3J0T3JkZXI6IFwiYm90aFwiO1xuXHRjdXN0b206IGJvb2xlYW47XG59O1xuZnVuY3Rpb24gZ2V0QWdncmVnYXRhYmxlUHJvcGVydGllc09iamVjdChhZ2dQcm9wOiBBZ2dyZWdhdGFibGVQcm9wZXJ0eVR5cGUgfCBQcm9wZXJ0eSk6IHsgUHJvcGVydHk6IHsgJFByb3BlcnR5UGF0aDogc3RyaW5nIH0gfSB7XG5cdGxldCBvYmo7XG5cdGlmICgoYWdnUHJvcCBhcyBBZ2dyZWdhdGFibGVQcm9wZXJ0eVR5cGUpPy5Qcm9wZXJ0eSkge1xuXHRcdG9iaiA9IHtcblx0XHRcdFByb3BlcnR5OiB7XG5cdFx0XHRcdCRQcm9wZXJ0eVBhdGg6IChhZ2dQcm9wIGFzIEFnZ3JlZ2F0YWJsZVByb3BlcnR5VHlwZSk/LlByb3BlcnR5Py52YWx1ZVxuXHRcdFx0fVxuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0b2JqID0ge1xuXHRcdFx0UHJvcGVydHk6IHtcblx0XHRcdFx0JFByb3BlcnR5UGF0aDogKGFnZ1Byb3AgYXMgUHJvcGVydHkpPy5uYW1lXG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuLyoqXG4gKiBDcmVhdGUgdGhlIENoYXJ0VmlzdWFsaXphdGlvbiBjb25maWd1cmF0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRpc3BsYXkgYSBjaGFydCB1c2luZyB0aGUgQ2hhcnQgYnVpbGRpbmcgYmxvY2suXG4gKiBAcGFyYW0gY2hhcnRBbm5vdGF0aW9uIFRoZSB0YXJnZXRlZCBjaGFydCBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gdmlzdWFsaXphdGlvblBhdGggVGhlIHBhdGggb2YgdGhlIHZpc3VhbGl6YXRpb24gYW5ub3RhdGlvblxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkIEZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBBcHBseVN1cHBvcnRlZCBuZWVkcyB0byBiZSBjaGVja2VkIG9yIG5vdFxuICogQHBhcmFtIHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRQYXRoXG4gKiBAcmV0dXJucyBUaGUgY2hhcnQgdmlzdWFsaXphdGlvbiBiYXNlZCBvbiB0aGUgYW5ub3RhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uKFxuXHRjaGFydEFubm90YXRpb246IENoYXJ0LFxuXHR2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdGRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZD86IGJvb2xlYW4sXG5cdHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nXG4pOiBDaGFydFZpc3VhbGl6YXRpb24ge1xuXHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSwgY29udmVydGVyQ29udGV4dCwgdHJ1ZSk7IC8vIHBhc3NpbmcgdGhlIGxhc3QgcGFyYW1ldGVyIGFzIHRydWUgdG8gY29uc2lkZXIgdGhlIG9sZCBhbm5vdGF0aW9ucyBpLmUuIEFnZ3JlZ2F0aW9uLkFnZ3JlZ2F0YWJsZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpbiBjYXNlIG9mIGNoYXJ0XG5cdGlmICghZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkICYmICFhZ2dyZWdhdGlvbkhlbHBlci5pc0FuYWx5dGljc1N1cHBvcnRlZCgpKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQXBwbHlTdXBwb3J0ZWQgaXMgbm90IGFkZGVkIHRvIHRoZSBhbm5vdGF0aW9uc1wiKTtcblx0fVxuXHRjb25zdCBhVHJhbnNBZ2dyZWdhdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRUcmFuc0FnZ3JlZ2F0aW9ucygpO1xuXHRjb25zdCBhQ3VzdG9tQWdncmVnYXRlcyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb25zKCk7XG5cdGNvbnN0IHBhZ2VNYW5pZmVzdFNldHRpbmdzOiBNYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCB2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnRUeXBlID0gcGFnZU1hbmlmZXN0U2V0dGluZ3MuZ2V0VmFyaWFudE1hbmFnZW1lbnQoKTtcblx0Y29uc3QgcDEzbk1vZGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGdldFAxM25Nb2RlKHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0aWYgKHAxM25Nb2RlID09PSB1bmRlZmluZWQgJiYgdmFyaWFudE1hbmFnZW1lbnQgPT09IFwiQ29udHJvbFwiKSB7XG5cdFx0TG9nLndhcm5pbmcoXCJWYXJpYW50IE1hbmFnZW1lbnQgY2Fubm90IGJlIGVuYWJsZWQgd2hlbiBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWRcIik7XG5cdH1cblx0Y29uc3QgbUN1c3RvbUFnZ3JlZ2F0ZXM6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4gPSB7fTtcblx0aWYgKGFDdXN0b21BZ2dyZWdhdGVzKSB7XG5cdFx0Y29uc3QgZW50aXR5VHlwZSA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEVudGl0eVR5cGUoKTtcblx0XHRmb3IgKGNvbnN0IGN1c3RvbUFnZ3JlZ2F0ZSBvZiBhQ3VzdG9tQWdncmVnYXRlcykge1xuXHRcdFx0Y29uc3QgYUNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMgPSBjdXN0b21BZ2dyZWdhdGU/LmFubm90YXRpb25zPy5BZ2dyZWdhdGlvbj8uQ29udGV4dERlZmluaW5nUHJvcGVydGllcztcblx0XHRcdGNvbnN0IHF1YWxpZmllciA9IGN1c3RvbUFnZ3JlZ2F0ZT8ucXVhbGlmaWVyO1xuXHRcdFx0Y29uc3QgcmVsYXRlZEN1c3RvbUFnZ3JlZ2F0ZVByb3BlcnR5ID0gcXVhbGlmaWVyICYmIGVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllcy5maW5kKChwcm9wZXJ0eSkgPT4gcHJvcGVydHkubmFtZSA9PT0gcXVhbGlmaWVyKTtcblx0XHRcdGNvbnN0IGxhYmVsID0gcmVsYXRlZEN1c3RvbUFnZ3JlZ2F0ZVByb3BlcnR5ICYmIHJlbGF0ZWRDdXN0b21BZ2dyZWdhdGVQcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uTGFiZWw/LnRvU3RyaW5nKCk7XG5cdFx0XHRtQ3VzdG9tQWdncmVnYXRlc1txdWFsaWZpZXJdID0ge1xuXHRcdFx0XHRuYW1lOiBxdWFsaWZpZXIsXG5cdFx0XHRcdGxhYmVsOiBsYWJlbCB8fCBgQ3VzdG9tIEFnZ3JlZ2F0ZSAoJHtxdWFsaWZpZXJ9KWAsXG5cdFx0XHRcdHNvcnRhYmxlOiB0cnVlLFxuXHRcdFx0XHRzb3J0T3JkZXI6IFwiYm90aFwiLFxuXHRcdFx0XHRjb250ZXh0RGVmaW5pbmdQcm9wZXJ0eTogYUNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXNcblx0XHRcdFx0XHQ/IGFDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzLm1hcCgob0N0eERlZlByb3BlcnR5KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvQ3R4RGVmUHJvcGVydHkudmFsdWU7XG5cdFx0XHRcdFx0ICB9KVxuXHRcdFx0XHRcdDogW11cblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgbVRyYW5zQWdncmVnYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBUcmFuc0FnZz4gPSB7fTtcblx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlQ29yZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKSE7XG5cdGlmIChhVHJhbnNBZ2dyZWdhdGlvbnMpIHtcblx0XHRmb3IgKGNvbnN0IGVsZW1lbnQgb2YgYVRyYW5zQWdncmVnYXRpb25zKSB7XG5cdFx0XHRtVHJhbnNBZ2dyZWdhdGlvbnNbZWxlbWVudC5OYW1lIGFzIHN0cmluZ10gPSB7XG5cdFx0XHRcdG5hbWU6IGVsZW1lbnQuTmFtZSBhcyBzdHJpbmcsXG5cdFx0XHRcdHByb3BlcnR5UGF0aDogZWxlbWVudC5BZ2dyZWdhdGFibGVQcm9wZXJ0eS52YWx1ZSxcblx0XHRcdFx0YWdncmVnYXRpb25NZXRob2Q6IGVsZW1lbnQuQWdncmVnYXRpb25NZXRob2QsXG5cdFx0XHRcdGxhYmVsOiBlbGVtZW50Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbFxuXHRcdFx0XHRcdD8gZWxlbWVudD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uTGFiZWw/LnRvU3RyaW5nKClcblx0XHRcdFx0XHQ6IGAke29SZXNvdXJjZUJ1bmRsZUNvcmUuZ2V0VGV4dChcIkFHR1JFR0FUQUJMRV9QUk9QRVJUWVwiKX0gKCR7ZWxlbWVudC5OYW1lfSlgLFxuXHRcdFx0XHRzb3J0YWJsZTogdHJ1ZSxcblx0XHRcdFx0c29ydE9yZGVyOiBcImJvdGhcIixcblx0XHRcdFx0Y3VzdG9tOiBmYWxzZVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBhQWdnUHJvcHMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzKCk7XG5cdGNvbnN0IGFHcnBQcm9wcyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEdyb3VwYWJsZVByb3BlcnRpZXMoKTtcblx0Y29uc3QgbUFwcGx5U3VwcG9ydGVkID0ge30gYXMgQ2hhcnRBcHBseVN1cHBvcnRlZDtcblx0bUFwcGx5U3VwcG9ydGVkLiRUeXBlID0gQWdncmVnYXRpb25Bbm5vdGF0aW9uVHlwZXMuQXBwbHlTdXBwb3J0ZWRUeXBlO1xuXHRtQXBwbHlTdXBwb3J0ZWQuQWdncmVnYXRhYmxlUHJvcGVydGllcyA9IFtdO1xuXHRtQXBwbHlTdXBwb3J0ZWQuR3JvdXBhYmxlUHJvcGVydGllcyA9IFtdO1xuXG5cdGlmIChhQWdnUHJvcHMpIHtcblx0XHRtQXBwbHlTdXBwb3J0ZWQuQWdncmVnYXRhYmxlUHJvcGVydGllcyA9IGFBZ2dQcm9wcy5tYXAoKHByb3ApID0+XG5cdFx0XHRnZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzT2JqZWN0KHByb3ApXG5cdFx0KSBhcyAoRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiAmIHsgUHJvcGVydHk6IEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gfSlbXTtcblx0fVxuXG5cdGlmIChhR3JwUHJvcHMpIHtcblx0XHRtQXBwbHlTdXBwb3J0ZWQuR3JvdXBhYmxlUHJvcGVydGllcyA9IGFHcnBQcm9wcy5tYXAoKHByb3ApID0+ICh7XG5cdFx0XHRbXCIkUHJvcGVydHlQYXRoXCJdOiBwcm9wLnZhbHVlXG5cdFx0fSkpIGFzIChFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+ICYgeyBQcm9wZXJ0eTogRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiB9KVtdO1xuXHR9XG5cblx0Y29uc3QgY2hhcnRBY3Rpb25zID0gZ2V0Q2hhcnRBY3Rpb25zKGNoYXJ0QW5ub3RhdGlvbiwgdmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRsZXQgW25hdmlnYXRpb25Qcm9wZXJ0eVBhdGggLyosIGFubm90YXRpb25QYXRoKi9dID0gdmlzdWFsaXphdGlvblBhdGguc3BsaXQoXCJAXCIpO1xuXHRpZiAobmF2aWdhdGlvblByb3BlcnR5UGF0aC5sYXN0SW5kZXhPZihcIi9cIikgPT09IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGVuZ3RoIC0gMSkge1xuXHRcdC8vIERyb3AgdHJhaWxpbmcgc2xhc2hcblx0XHRuYXZpZ2F0aW9uUHJvcGVydHlQYXRoID0gbmF2aWdhdGlvblByb3BlcnR5UGF0aC5zdWJzdHJpbmcoMCwgbmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggLSAxKTtcblx0fVxuXHRjb25zdCB0aXRsZSA9IGNoYXJ0QW5ub3RhdGlvbi5UaXRsZT8udG9TdHJpbmcoKSB8fCBcIlwiOyAvLyByZWFkIHRpdGxlIGZyb20gY2hhcnQgYW5ub3RhdGlvblxuXHRjb25zdCBkYXRhTW9kZWxQYXRoID0gY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCk7XG5cdGNvbnN0IGlzRW50aXR5U2V0OiBib29sZWFuID0gbmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggPT09IDA7XG5cdGNvbnN0IGVudGl0eU5hbWU6IHN0cmluZyA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0ID8gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQubmFtZSA6IGRhdGFNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZTtcblx0Y29uc3Qgc0ZpbHRlcmJhcklkID0gaXNFbnRpdHlTZXQgPyBnZXRGaWx0ZXJCYXJJRChjb252ZXJ0ZXJDb250ZXh0LmdldENvbnRleHRQYXRoKCkpIDogdW5kZWZpbmVkO1xuXHRjb25zdCBvVml6UHJvcGVydGllcyA9IHtcblx0XHRwbG90QXJlYToge1xuXHRcdFx0d2luZG93OiB7XG5cdFx0XHRcdHN0YXJ0OiBcImZpcnN0RGF0YVBvaW50XCIsXG5cdFx0XHRcdGVuZDogXCJsYXN0RGF0YVBvaW50XCJcblx0XHRcdH1cblx0XHR9LFxuXHRcdGxlZ2VuZEdyb3VwOiB7XG5cdFx0XHRsYXlvdXQ6IHtcblx0XHRcdFx0cG9zaXRpb246IFwiYm90dG9tXCJcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdGxldCBhdXRvQmluZE9uSW5pdDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblx0aWYgKGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5PYmplY3RQYWdlKSB7XG5cdFx0YXV0b0JpbmRPbkluaXQgPSB0cnVlO1xuXHR9IGVsc2UgaWYgKFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0IHx8XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZVxuXHQpIHtcblx0XHRhdXRvQmluZE9uSW5pdCA9IGZhbHNlO1xuXHR9XG5cdGNvbnN0IGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMgPVxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucygpIHx8XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZTtcblx0Y29uc3Qgb25TZWdtZW50ZWRCdXR0b25QcmVzc2VkID0gaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyA/IFwiLmhhbmRsZXJzLm9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZFwiIDogXCJcIjtcblx0Y29uc3QgdmlzaWJsZSA9IGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMgPyBcIns9ICR7cGFnZUludGVybmFsPmFscENvbnRlbnRWaWV3fSAhPT0gJ1RhYmxlJ31cIiA6IFwidHJ1ZVwiO1xuXHRjb25zdCBhbGxvd2VkVHJhbnNmb3JtYXRpb25zID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0QWxsb3dlZFRyYW5zZm9ybWF0aW9ucygpO1xuXHRtQXBwbHlTdXBwb3J0ZWQuZW5hYmxlU2VhcmNoID0gYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyA/IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMuaW5jbHVkZXMoXCJzZWFyY2hcIikgOiB0cnVlO1xuXHRsZXQgcXVhbGlmaWVyID0gXCJcIjtcblx0aWYgKGNoYXJ0QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoXCIjXCIpLmxlbmd0aCA+IDEpIHtcblx0XHRxdWFsaWZpZXIgPSBjaGFydEFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiI1wiKVsxXTtcblx0fVxuXHRjb25zdCBpc0luc2lnaHRzVmlzaWJsZSA9IGdldEluc2lnaHRzVmlzaWJpbGl0eShcIkFuYWx5dGljYWxcIiwgY29udmVydGVyQ29udGV4dCwgdmlzdWFsaXphdGlvblBhdGgpO1xuXHRjb25zdCBpc1BhcmFtZXRlcml6ZWRFbnRpdHlTZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldFBhcmFtZXRlckVudGl0eVR5cGUoKSA/IHRydWUgOiBmYWxzZTtcblx0Y29uc3QgaXNJbnNpZ2h0c0VuYWJsZWQgPSBhbmQoZ2V0SW5zaWdodHNFbmFibGVtZW50KCksIGlzSW5zaWdodHNWaXNpYmxlKTtcblx0cmV0dXJuIHtcblx0XHR0eXBlOiBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCxcblx0XHRpZDogcXVhbGlmaWVyXG5cdFx0XHQ/IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgcXVhbGlmaWVyLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydClcblx0XHRcdDogZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0Y29sbGVjdGlvbjogZ2V0VGFyZ2V0T2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSksXG5cdFx0YXBpSWQ6IGdlbmVyYXRlKFtcblx0XHRcdHF1YWxpZmllclxuXHRcdFx0XHQ/IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgcXVhbGlmaWVyLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydClcblx0XHRcdFx0OiBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KSxcblx0XHRcdFwiQ2hhcnRcIlxuXHRcdF0pLFxuXHRcdGVudGl0eU5hbWU6IGVudGl0eU5hbWUsXG5cdFx0cGVyc29uYWxpemF0aW9uOiBnZXRQMTNuTW9kZSh2aXN1YWxpemF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0bmF2aWdhdGlvblBhdGg6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsXG5cdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aCh2aXN1YWxpemF0aW9uUGF0aCksXG5cdFx0ZmlsdGVySWQ6IHNGaWx0ZXJiYXJJZCxcblx0XHR2aXpQcm9wZXJ0aWVzOiBKU09OLnN0cmluZ2lmeShvVml6UHJvcGVydGllcyksXG5cdFx0YWN0aW9uczogY2hhcnRBY3Rpb25zLmFjdGlvbnMsXG5cdFx0Y29tbWFuZEFjdGlvbnM6IGNoYXJ0QWN0aW9ucy5jb21tYW5kQWN0aW9ucyxcblx0XHR0aXRsZTogdGl0bGUsXG5cdFx0YXV0b0JpbmRPbkluaXQ6IGF1dG9CaW5kT25Jbml0LFxuXHRcdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZDogb25TZWdtZW50ZWRCdXR0b25QcmVzc2VkLFxuXHRcdHZpc2libGU6IHZpc2libGUsXG5cdFx0Y3VzdG9tQWdnOiBtQ3VzdG9tQWdncmVnYXRlcyxcblx0XHR0cmFuc0FnZzogbVRyYW5zQWdncmVnYXRpb25zLFxuXHRcdGFwcGx5U3VwcG9ydGVkOiBtQXBwbHlTdXBwb3J0ZWQsXG5cdFx0c2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGgsXG5cdFx0dmFyaWFudE1hbmFnZW1lbnQ6IGZpbmRWYXJpYW50TWFuYWdlbWVudChwMTNuTW9kZSwgdmFyaWFudE1hbmFnZW1lbnQpLFxuXHRcdGlzSW5zaWdodHNFbmFibGVkOiBpc0luc2lnaHRzRW5hYmxlZCxcblx0XHRpc0luc2lnaHRzVmlzaWJsZTogaXNJbnNpZ2h0c1Zpc2libGUsXG5cdFx0aXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0OiBpc1BhcmFtZXRlcml6ZWRFbnRpdHlTZXRcblx0fTtcbn1cbi8qKlxuICogTWV0aG9kIHRvIGRldGVybWluZSB0aGUgdmFyaWFudCBtYW5hZ2VtZW50LlxuICogQHBhcmFtIHAxM25Nb2RlXG4gKiBAcGFyYW0gdmFyaWFudE1hbmFnZW1lbnRcbiAqIEByZXR1cm5zIFRoZSB2YXJpYW50IG1hbmFnZW1lbnQgZm9yIHRoZSBjaGFydFxuICovXG5mdW5jdGlvbiBmaW5kVmFyaWFudE1hbmFnZW1lbnQocDEzbk1vZGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgdmFyaWFudE1hbmFnZW1lbnQ6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZSk6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZSB7XG5cdHJldHVybiB2YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIgJiYgIXAxM25Nb2RlID8gVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmUgOiB2YXJpYW50TWFuYWdlbWVudDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIENoYXJ0VmlzdWFsaXphdGlvbiBjb25maWd1cmF0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGR1cmluZyB0ZW1wbGF0aW5nLlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gdmlzdWFsaXphdGlvblBhdGggVGhlIHBhdGggb2YgdGhlIHZpc3VhbGl6YXRpb24gYW5ub3RhdGlvblxuICogQHBhcmFtIHZpc3VhbGl6YXRpb24gVGhlIHZpc3VhbGl6YXRpb24gYW5ub3RhdGlvblxuICogQHJldHVybnMgVGhlIGNoYXJ0IHZpc3VhbGl6YXRpb24gYmFzZWQgb24gdGhlIGFubm90YXRpb24gdXNlZCBmb3IgdGVtcGxhdGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uRm9yVGVtcGxhdGluZyhcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHR2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLFxuXHR2aXN1YWxpemF0aW9uOiBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnNcbik6IENoYXJ0VGVtcGxhdGVWaXN1YWxpemF0aW9uIHtcblx0Y29uc3QgcXVhbGlmaWVyID0gdmlzdWFsaXphdGlvbi5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoXCIjXCIpLmxlbmd0aCA+IDEgPyB2aXN1YWxpemF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIiNcIilbMV0gOiBcIlwiO1xuXHRjb25zdCBbbmF2aWdhdGlvblByb3BlcnR5UGF0aF0gPSB2aXN1YWxpemF0aW9uUGF0aC5zcGxpdChcIkBcIik7XG5cblx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHRjb25zdCBpc0VudGl0eVNldDogYm9vbGVhbiA9IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGVuZ3RoID09PSAwO1xuXHRjb25zdCBlbnRpdHlOYW1lOiBzdHJpbmcgPSBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldD8ubmFtZSA/PyBkYXRhTW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWU7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBjb252ZXJ0ZXJDb250ZXh0LCB0cnVlKTtcblx0Y29uc3QgYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMoKTtcblx0Y29uc3QgaXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0ID0gISFjb252ZXJ0ZXJDb250ZXh0LmdldFBhcmFtZXRlckVudGl0eVR5cGUoKTtcblx0cmV0dXJuIHtcblx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHZpc3VhbGl6YXRpb25QYXRoKSxcblx0XHRpc1BhcmFtZXRlcml6ZWRFbnRpdHlTZXQsXG5cdFx0Y29sbGVjdGlvbjogZ2V0VGFyZ2V0T2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSksXG5cdFx0dHlwZTogVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQsXG5cdFx0ZW50aXR5TmFtZSxcblx0XHRpZDogcXVhbGlmaWVyXG5cdFx0XHQ/IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgcXVhbGlmaWVyLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydClcblx0XHRcdDogZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0YXBpSWQ6IGdlbmVyYXRlKFtcblx0XHRcdHF1YWxpZmllclxuXHRcdFx0XHQ/IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgcXVhbGlmaWVyLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydClcblx0XHRcdFx0OiBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KSxcblx0XHRcdFwiQ2hhcnRcIlxuXHRcdF0pLFxuXHRcdGFwcGx5U3VwcG9ydGVkOiB7XG5cdFx0XHQkVHlwZTogXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQXBwbHlTdXBwb3J0ZWRUeXBlXCIsXG5cdFx0XHRlbmFibGVTZWFyY2g6IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnM/LmluY2x1ZGVzKFwic2VhcmNoXCIpID8/IHRydWVcblx0XHR9XG5cdH07XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGdldCBjb21waWxlIGV4cHJlc3Npb24gZm9yIERhdGFGaWVsZEZvckFjdGlvbiBhbmQgRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uLlxuICogQHBhcmFtIGRhdGFGaWVsZFxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIENvbXBpbGUgZXhwcmVzc2lvbiBmb3IgRGF0YUZpZWxkRm9yQWN0aW9uIGFuZCBEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcGlsZUV4cHJlc3Npb25Gb3JBY3Rpb24oXG5cdGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRub3QoXG5cdFx0XHRlcXVhbChcblx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKFxuXHRcdFx0XHRcdGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbixcblx0XHRcdFx0XHRbXSxcblx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZU1vZGVsUGF0aEZ1bmN0aW9uKClcblx0XHRcdFx0KSxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KVxuXHRcdClcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJsYW5rQ2hhcnRWaXN1YWxpemF0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pik6IENoYXJ0VmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMgPVxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucygpIHx8XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZTtcblx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHRjb25zdCBlbnRpdHlOYW1lID0gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQgPyBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldC5uYW1lIDogZGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lO1xuXG5cdGNvbnN0IHZpc3VhbGl6YXRpb246IENoYXJ0VmlzdWFsaXphdGlvbiA9IHtcblx0XHR0eXBlOiBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCxcblx0XHRpZDogZ2V0Q2hhcnRJRChlbnRpdHlOYW1lLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0YXBpSWQ6IGdlbmVyYXRlKFtnZXRDaGFydElEKGVudGl0eU5hbWUsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KSwgXCJDaGFydFwiXSksXG5cdFx0ZW50aXR5TmFtZTogZW50aXR5TmFtZSxcblx0XHR0aXRsZTogXCJcIixcblx0XHRjb2xsZWN0aW9uOiBcIlwiLFxuXHRcdHBlcnNvbmFsaXphdGlvbjogdW5kZWZpbmVkLFxuXHRcdG5hdmlnYXRpb25QYXRoOiBcIlwiLFxuXHRcdGFubm90YXRpb25QYXRoOiBcIlwiLFxuXHRcdHZpelByb3BlcnRpZXM6IEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdGxlZ2VuZEdyb3VwOiB7XG5cdFx0XHRcdGxheW91dDoge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KSxcblx0XHRhY3Rpb25zOiBbXSxcblx0XHRjb21tYW5kQWN0aW9uczoge30sXG5cdFx0YXV0b0JpbmRPbkluaXQ6IGZhbHNlLFxuXHRcdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZDogXCJcIixcblx0XHR2aXNpYmxlOiBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID8gXCJ7PSAke3BhZ2VJbnRlcm5hbD5hbHBDb250ZW50Vmlld30gIT09ICdUYWJsZSd9XCIgOiBcInRydWVcIixcblx0XHRjdXN0b21BZ2c6IHt9LFxuXHRcdHRyYW5zQWdnOiB7fSxcblx0XHRhcHBseVN1cHBvcnRlZDoge1xuXHRcdFx0JFR5cGU6IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFwcGx5U3VwcG9ydGVkVHlwZVwiLFxuXHRcdFx0QWdncmVnYXRhYmxlUHJvcGVydGllczogW10sXG5cdFx0XHRHcm91cGFibGVQcm9wZXJ0aWVzOiBbXSxcblx0XHRcdGVuYWJsZVNlYXJjaDogZmFsc2Vcblx0XHR9LFxuXHRcdG11bHRpVmlld3M6IGZhbHNlLFxuXHRcdHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudFR5cGUuTm9uZVxuXHR9O1xuXG5cdHJldHVybiB2aXN1YWxpemF0aW9uO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Property } from "@sap-ux/vocabularies-types";
|
|
1
|
+
import type { Property, PropertyPath } from "@sap-ux/vocabularies-types";
|
|
2
2
|
import type { AggregatablePropertyType, AggregationMethod } from "@sap-ux/vocabularies-types/vocabularies/Aggregation";
|
|
3
3
|
import { AggregationAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/Aggregation";
|
|
4
4
|
import type { Chart, DataFieldAbstractTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
@@ -21,6 +21,7 @@ import { KeyHelper } from "sap/fe/core/converters/helpers/Key";
|
|
|
21
21
|
import { generate } from "sap/fe/core/helpers/StableIdHelper";
|
|
22
22
|
import { getTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
23
23
|
import Library from "sap/ui/core/Lib";
|
|
24
|
+
import type { ExpandPathType } from "../../../../../../../../../types/metamodel_types";
|
|
24
25
|
import type ConverterContext from "../../ConverterContext";
|
|
25
26
|
import type { ChartManifestConfiguration, ManifestAction } from "../../ManifestSettings";
|
|
26
27
|
import { ActionType, TemplateType, VariantManagementType, VisualizationType } from "../../ManifestSettings";
|
|
@@ -33,8 +34,8 @@ import type { ActualVisualizationAnnotations } from "./DataVisualization";
|
|
|
33
34
|
export type ChartApplySupported = {
|
|
34
35
|
$Type: string;
|
|
35
36
|
enableSearch?: boolean;
|
|
36
|
-
AggregatableProperties?:
|
|
37
|
-
GroupableProperties?:
|
|
37
|
+
AggregatableProperties?: (ExpandPathType<PropertyPath> & { Property: ExpandPathType<PropertyPath> })[];
|
|
38
|
+
GroupableProperties?: (ExpandPathType<PropertyPath> & { Property: ExpandPathType<PropertyPath> })[];
|
|
38
39
|
};
|
|
39
40
|
export type ChartTemplateVisualization = {
|
|
40
41
|
type: VisualizationType.Chart;
|
|
@@ -290,11 +291,15 @@ export function createChartVisualization(
|
|
|
290
291
|
mApplySupported.GroupableProperties = [];
|
|
291
292
|
|
|
292
293
|
if (aAggProps) {
|
|
293
|
-
mApplySupported.AggregatableProperties = aAggProps.map((prop) =>
|
|
294
|
+
mApplySupported.AggregatableProperties = aAggProps.map((prop) =>
|
|
295
|
+
getAggregatablePropertiesObject(prop)
|
|
296
|
+
) as (ExpandPathType<PropertyPath> & { Property: ExpandPathType<PropertyPath> })[];
|
|
294
297
|
}
|
|
295
298
|
|
|
296
299
|
if (aGrpProps) {
|
|
297
|
-
mApplySupported.GroupableProperties = aGrpProps.map((prop) => ({
|
|
300
|
+
mApplySupported.GroupableProperties = aGrpProps.map((prop) => ({
|
|
301
|
+
["$PropertyPath"]: prop.value
|
|
302
|
+
})) as (ExpandPathType<PropertyPath> & { Property: ExpandPathType<PropertyPath> })[];
|
|
298
303
|
}
|
|
299
304
|
|
|
300
305
|
const chartActions = getChartActions(chartAnnotation, visualizationPath, converterContext);
|