@sapui5/sap.fe.core 1.136.9 → 1.136.11
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 +48 -23
- package/src/sap/fe/core/ActionRuntime.ts +61 -35
- package/src/sap/fe/core/AppStateHandler.js +4 -5
- package/src/sap/fe/core/AppStateHandler.ts +6 -5
- package/src/sap/fe/core/CommonUtils.js +3 -3
- package/src/sap/fe/core/CommonUtils.ts +2 -2
- package/src/sap/fe/core/PageController.controller.js +10 -0
- package/src/sap/fe/core/PageController.controller.ts +3 -0
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +4 -4
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +5 -2
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +26 -16
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +37 -16
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +20 -10
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +29 -13
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +12 -2
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +14 -7
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +5 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +4 -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/routing/RouterProxy.js +7 -6
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +8 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +2 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +1 -0
- package/src/sap/fe/core/converters/controls/Common/Action.js +15 -1
- package/src/sap/fe/core/converters/controls/Common/Action.ts +21 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js +54 -46
- package/src/sap/fe/core/converters/controls/Common/Table.ts +65 -45
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +26 -6
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +32 -10
- 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/objectPage/HeaderAndFooterAction.js +5 -2
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +7 -1
- 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/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +75 -18
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +79 -25
- package/src/sap/fe/core/helpers/MetaModelFunction.js +10 -3
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +9 -3
- package/src/sap/fe/core/helpers/ModelHelper.js +5 -2
- package/src/sap/fe/core/helpers/ModelHelper.ts +7 -3
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/messagebundle_ar.properties +1 -1
- package/src/sap/fe/core/messagebundle_bg.properties +3 -3
- package/src/sap/fe/core/messagebundle_es.properties +1 -1
- package/src/sap/fe/core/messagebundle_fr.properties +1 -1
- package/src/sap/fe/core/messagebundle_ko.properties +1 -1
- package/src/sap/fe/core/messagebundle_no.properties +2 -2
- package/src/sap/fe/core/rootView/RootViewBaseController.js +3 -2
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +2 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +4 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +5 -2
- package/ui5.yaml +1 -0
|
@@ -240,9 +240,9 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/base/ClassSupp
|
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
242
|
if (appStateData?.appState) {
|
|
243
|
-
return {
|
|
243
|
+
return key ? {
|
|
244
244
|
[Object.keys(appStateData.appState)[i]]: appStateData.appState[key] || {}
|
|
245
|
-
};
|
|
245
|
+
} : {};
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
248
|
|
|
@@ -305,8 +305,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/base/ClassSupp
|
|
|
305
305
|
}
|
|
306
306
|
shouldApplyState = false;
|
|
307
307
|
}
|
|
308
|
-
const
|
|
309
|
-
const applyViewState = await oRootController.viewState.applyViewState(stateToApply, this._createNavigationParameters(oAppData, sNavType), skipMerge);
|
|
308
|
+
const applyViewState = await oRootController.viewState.applyViewState(viewId ? appStateData : this._mCurrentAppState, this._createNavigationParameters(oAppData, sNavType), skipMerge);
|
|
310
309
|
if (!shouldApplyState) {
|
|
311
310
|
return {};
|
|
312
311
|
} else {
|
|
@@ -358,4 +357,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/base/ClassSupp
|
|
|
358
357
|
*/
|
|
359
358
|
return AppStateHandler;
|
|
360
359
|
}, true);
|
|
361
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIlNLSVBfTUVSR0VfS0VZIiwiUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSIsIkFwcFN0YXRlSGFuZGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9jbGFzcyIsIl9BcHBTdGF0ZUhhbmRsZXIiLCJfQmFzZU9iamVjdCIsIm9BcHBDb21wb25lbnQiLCJfdGhpcyIsImNhbGwiLCJfbUN1cnJlbnRBcHBTdGF0ZSIsInNJZCIsImdldElkIiwic2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCIsImJOb1JvdXRlQ2hhbmdlIiwiTG9nIiwiaW5mbyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiX2dldElubmVyQXBwU3RhdGVGb3JWaWV3IiwiaW5uZXJBcHBTdGF0ZSIsInN0YXRlSWRlbnRpZmllciIsIl9hZGRBcHBTdGF0ZUluSGFzaCIsImFwcFN0YXRlS2V5IiwiYXBwQ29tcG9uZW50IiwibmF2aWdhdGlvblNlcnZpY2UiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsInJvdXRlclByb3h5IiwiZ2V0Um91dGVyUHJveHkiLCJoYXNoIiwiZ2V0SGFzaCIsImlzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZ2V0TWV0YU1vZGVsIiwibmV3SGFzaCIsInJlcGxhY2VJbm5lckFwcFN0YXRlS2V5IiwibmF2VG9IYXNoIiwidW5kZWZpbmVkIiwiX2NyZWF0ZUFwcFN0YXRlS2V5IiwiYXBwU3RhdGVEYXRhIiwic3RvcmVJbm5lckFwcFN0YXRlQXN5bmMiLCJfZ2V0QXBwU3RhdGVJbmZvIiwiY3JlYXRlQXBwUGFyYW1ldGVycyIsInJlcGxhY2VIYXNoIiwidmlld0lkIiwiYXBwU3RhdGUiLCJjdXJyZW50U3RhdGVUb1VwZGF0ZSIsImRlZXBFcXVhbCIsIm9FcnJvciIsImVycm9yIiwiZmluZEFwcFN0YXRlSW5IYXNoIiwiY3JlYXRlQXBwU3RhdGUiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkFwcFN0YXRlIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwic2tpcE1lcmdlIiwicm9vdENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJ2aWV3U3RhdGUiLCJFcnJvciIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsInJvdXRpbmdJc0NvbXBsZXRlIiwicmV0cmlldmVWaWV3U3RhdGUiLCJfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvQXBwRGF0YSIsInNOYXZUeXBlIiwiT2JqZWN0IiwiYXNzaWduIiwic2VsZWN0aW9uVmFyaWFudERlZmF1bHRzIiwib0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50Iiwib1NlbGVjdGlvblZhcmlhbnQiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsImJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHkiLCJuYXZpZ2F0aW9uVHlwZSIsInNldFJUQVZlcnNpb25XYXNBY3RpdmF0ZWQiLCJpZCIsInZhbHVlIiwidmVyc2lvbkFjdGl2YXRpb25TdGF0dXMiLCJnZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkIiwiX2NoZWNrSWZMYXN0U2VlblJlY29yZCIsInZpZXciLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJ0ZWNobmljYWxLZXlzT2JqZWN0IiwiYmluZGluZ0NvbnRleHQiLCJwYXRoIiwiZ2V0UGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsInRlY2huaWNhbEtleXMiLCJnZXRPYmplY3QiLCJlbGVtZW50Iiwia2V5VmFsdWUiLCJzZXRQcm9wZXJ0eSIsIl9nZXRBcHBTdGF0ZURhdGEiLCJuYXZUeXBlIiwia2V5IiwiaSIsImh5YnJpZCIsImlBcHBTdGF0ZSIsImtleXMiLCJsZW5ndGgiLCJhcHBseUFwcFN0YXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0lmTGFzdFNlZW5SZWNvcmQiLCJsb2NrIiwib05hdmlnYXRpb25TZXJ2aWNlIiwidG9FUzZQcm9taXNlIiwicGFyc2VOYXZpZ2F0aW9uIiwiY2F0Y2giLCJhRXJyb3JEYXRhIiwid2FybmluZyIsInRoZW4iLCJhUmVzdWx0cyIsImluaXRpYWwiLCJvUm9vdENvbnRyb2xsZXIiLCJzaG91bGRBcHBseVN0YXRlIiwiX2lzU3RhdGVFbXB0eUZvcklBcHBTdGF0ZU5hdlR5cGUiLCJfZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsIl9zZXRJbml0aWFsU3RhdGVBcHBsaWVkIiwic3RhdGVUb0FwcGx5IiwiYXBwbHlWaWV3U3RhdGUiLCJmaW5hbGx5IiwidW5sb2NrIiwiY2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCIsInJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwIiwicmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cyIsImhhc093blByb3BlcnR5IiwiQmFzZU9iamVjdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblBhcmFtZXRlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHRvRVM2UHJvbWlzZSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Ub0VTNlByb21pc2VcIjtcbmltcG9ydCB0eXBlIHsgSW5uZXJBcHBEYXRhIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL05hdmlnYXRpb25IYW5kbGVyXCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IGxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQnVzeUxvY2tlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCIuL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcblxuY29uc3QgTmF2VHlwZSA9IGxpYnJhcnkuTmF2VHlwZTtcbnR5cGUgQXBwU3RhdGUgPSB7XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG59O1xuZXhwb3J0IHR5cGUgQXBwRGF0YSA9IHtcblx0b0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQ7XG5cdG9TZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50O1xuXHRiTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5OiBib29sZWFuO1xuXHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdGlBcHBTdGF0ZT86IHtcblx0XHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdH07XG59O1xuY29uc3QgU0tJUF9NRVJHRV9LRVkgPSBcInNraXBNZXJnZVwiO1xuZXhwb3J0IHR5cGUgSUFwcFN0YXRlID0ge1xuXHRhcHBTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEYXRhSW5mbyA9IHtcblx0YXBwU3RhdGVEYXRhOiB7IGFwcFN0YXRlOiBvYmplY3QgfCB1bmRlZmluZWQgfTtcblx0YXBwU3RhdGVLZXk6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVBcHBQYXJhbWV0ZXJzID0ge1xuXHRyZXBsYWNlSGFzaD86IGJvb2xlYW47XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdHZpZXdJZD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZlcnNpb25BY3RpdmF0ZWQgPSB7XG5cdHZlcnNpb25XYXNBY3RpdmF0ZWQ6IGJvb2xlYW47XG59O1xuXG5jb25zdCBSRVBMQUNFX0NPTVBMRVRFX0FQUFNUQVRFID0gXCJSRVBMQUNFX0NPTVBMRVRFX0FQUFNUQVRFXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkFwcFN0YXRlSGFuZGxlclwiKVxuY2xhc3MgQXBwU3RhdGVIYW5kbGVyIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdHB1YmxpYyBzSWQ6IHN0cmluZztcblxuXHRwdWJsaWMgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50O1xuXG5cdHB1YmxpYyBiTm9Sb3V0ZUNoYW5nZTogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9tQ3VycmVudEFwcFN0YXRlPzogQXBwU3RhdGUgPSB7fTtcblxuXHRzaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuXG5cdHN0YXRpYyB2ZXJzaW9uQWN0aXZhdGlvblN0YXR1czogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuXHRjb25zdHJ1Y3RvcihvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMub0FwcENvbXBvbmVudCA9IG9BcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zSWQgPSBgJHtvQXBwQ29tcG9uZW50LmdldElkKCl9L0FwcFN0YXRlSGFuZGxlcmA7XG5cdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0ID0ge307XG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cblx0Z2V0SWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zSWQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHZpZXcgc3BlY2lmaWMgYXBwc3RhdGUuXG5cdCAqIEBwYXJhbSBpbm5lckFwcFN0YXRlIE92ZXJhbGwgYXBwc3RhdGVcblx0ICogQHBhcmFtIHN0YXRlSWRlbnRpZmllciBTdGF0ZSBpZGVudGlmaWVyLiBJZCBvZiB0aGUgbG9jYWwgdmlld1xuXHQgKiBAcmV0dXJucyBJbm5lciBhcHBzdGF0ZVxuXHQgKi9cblx0X2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGU6IElubmVyQXBwRGF0YSB8IHVuZGVmaW5lZCwgc3RhdGVJZGVudGlmaWVyOiBzdHJpbmcpOiBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQge1xuXHRcdGlmIChzdGF0ZUlkZW50aWZpZXIgPT09IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfHwgIWlubmVyQXBwU3RhdGUpIHtcblx0XHRcdC8vIG92ZXJhbGwgYXBwIHN0YXRlIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQuXG5cdFx0XHRyZXR1cm4gaW5uZXJBcHBTdGF0ZTtcblx0XHR9XG5cblx0XHQvLyB3ZSB0YWtlIHRoZSBzdWJzZXQgb2YgdGhlIGFwcCBzdGF0ZSB3cnQgdG8gdGhlIGxvY2FsIHZpZXcgaWQuXG5cdFx0cmV0dXJuIHtcblx0XHRcdFtzdGF0ZUlkZW50aWZpZXJdOiBpbm5lckFwcFN0YXRlW3N0YXRlSWRlbnRpZmllciBhcyBrZXlvZiB0eXBlb2YgaW5uZXJBcHBTdGF0ZV0gfHwge31cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhcHBzdGF0ZSBpbiBoYXNoLlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVLZXkgQXBwc3RhdGUga2V5XG5cdCAqIEBwYXJhbSBzdGF0ZUlkZW50aWZpZXIgU3RhdGUgaWRlbnRpZmllci4gSWQgb2YgdGhlIGxvY2FsIHZpZXdcblx0ICovXG5cdF9hZGRBcHBTdGF0ZUluSGFzaChhcHBTdGF0ZUtleTogc3RyaW5nLCBzdGF0ZUlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMub0FwcENvbXBvbmVudCxcblx0XHRcdG5hdmlnYXRpb25TZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldE5hdmlnYXRpb25TZXJ2aWNlKCksXG5cdFx0XHRyb3V0ZXJQcm94eSA9IGFwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpLFxuXHRcdFx0aGFzaCA9IHJvdXRlclByb3h5LmdldEhhc2goKSxcblx0XHRcdGlzU3RpY2t5TW9kZSA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChhcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCkpLFxuXHRcdFx0bmV3SGFzaCA9IG5hdmlnYXRpb25TZXJ2aWNlLnJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHJvdXRlclByb3h5LmdldEhhc2goKSwgYXBwU3RhdGVLZXkpO1xuXG5cdFx0aWYgKG5ld0hhc2ggJiYgdGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0gPT09IDAgJiYgbmV3SGFzaCAhPT0gaGFzaCkge1xuXHRcdFx0cm91dGVyUHJveHkubmF2VG9IYXNoKG5ld0hhc2gsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICFpc1N0aWNreU1vZGUpO1xuXHRcdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IHRydWU7XG5cdFx0fVxuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IG5hdlRvSGFzaFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgQXBwc3RhdGUgS2V5LlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVEYXRhIEFwcHN0YXRlXG5cdCAqIEBwYXJhbSBzdGF0ZUlkZW50aWZpZXIgU3RhdGUgaWRlbnRpZmllci4gSWQgb2YgdGhlIGxvY2FsIHZpZXdcblx0ICogQHJldHVybnMgQXBwc3RhdGUgS2V5XG5cdCAqL1xuXHRhc3luYyBfY3JlYXRlQXBwU3RhdGVLZXkoYXBwU3RhdGVEYXRhOiBJbm5lckFwcERhdGEsIHN0YXRlSWRlbnRpZmllcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQsXG5cdFx0XHRuYXZpZ2F0aW9uU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXROYXZpZ2F0aW9uU2VydmljZSgpO1xuXG5cdFx0aWYgKHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdKSB7XG5cdFx0XHQvLyBhbnkgb3RoZXIgdmFsdWVcblx0XHRcdHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdKys7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIDAgb3IgdW5kZWZpbmVkXG5cdFx0XHR0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSA9IDE7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYXBwU3RhdGVLZXkgPSBhd2FpdCBuYXZpZ2F0aW9uU2VydmljZS5zdG9yZUlubmVyQXBwU3RhdGVBc3luYyhhcHBTdGF0ZURhdGEsIHRydWUsIHRydWUpO1xuXG5cdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0tLTtcblxuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IEFwcHN0YXRlIHN0b3JlZFwiKTtcblx0XHRyZXR1cm4gYXBwU3RhdGVLZXk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhcHBzdGF0ZSBpbmZvLlxuXHQgKiBAcGFyYW0gaW5uZXJBcHBTdGF0ZVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycyBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGdlbmVyYXRlZCBrZXlcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMudmlld0lkIElkIG9mIHRoZSB2aWV3IGZvciB3aGljaCB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgYXBwIHN0YXRlLiBUaGlzIGlzIHRvIGNyZWF0ZSBvciB1cGRhdGUgdmlldyBzcGVjaWZpYyBhcHBzdGF0ZS5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0aGUgc3RvcmVkIGRhdGEgb3IgYXBwc3RhdGUga2V5XG5cdCAqL1xuXHRhc3luYyBfZ2V0QXBwU3RhdGVJbmZvKGlubmVyQXBwU3RhdGU6IElubmVyQXBwRGF0YSB8IHVuZGVmaW5lZCwgY3JlYXRlQXBwUGFyYW1ldGVycz86IENyZWF0ZUFwcFBhcmFtZXRlcnMpOiBQcm9taXNlPEFwcERhdGFJbmZvPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5vQXBwQ29tcG9uZW50O1xuXHRcdGNvbnN0IHsgcmVwbGFjZUhhc2ggPSB0cnVlLCB2aWV3SWQ6IHN0YXRlSWRlbnRpZmllciA9IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfSA9IGNyZWF0ZUFwcFBhcmFtZXRlcnMgPz8ge307XG5cblx0XHRsZXQgYXBwU3RhdGVLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXHRcdGxldCBhcHBTdGF0ZURhdGEgPSB7IGFwcFN0YXRlOiB0aGlzLl9tQ3VycmVudEFwcFN0YXRlIH07XG5cblx0XHRjb25zdCBjdXJyZW50U3RhdGVUb1VwZGF0ZSA9IHRoaXMuX2dldElubmVyQXBwU3RhdGVGb3JWaWV3KHRoaXMuX21DdXJyZW50QXBwU3RhdGUsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0aWYgKGlubmVyQXBwU3RhdGUgJiYgIWRlZXBFcXVhbChjdXJyZW50U3RhdGVUb1VwZGF0ZSwgaW5uZXJBcHBTdGF0ZSkpIHtcblx0XHRcdC8vXG5cdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0geyAuLi50aGlzLl9tQ3VycmVudEFwcFN0YXRlLCAuLi4oaW5uZXJBcHBTdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcblx0XHRcdGFwcFN0YXRlRGF0YSA9IHsgYXBwU3RhdGU6IHRoaXMuX21DdXJyZW50QXBwU3RhdGUgfTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGFwcFN0YXRlS2V5ID0gYXdhaXQgdGhpcy5fY3JlYXRlQXBwU3RhdGVLZXkoYXBwU3RhdGVEYXRhLCBzdGF0ZUlkZW50aWZpZXIpO1xuXHRcdFx0XHRpZiAocmVwbGFjZUhhc2ggPT09IHRydWUpIHtcblx0XHRcdFx0XHR0aGlzLl9hZGRBcHBTdGF0ZUluSGFzaChhcHBTdGF0ZUtleSwgc3RhdGVJZGVudGlmaWVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAob0Vycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgcm91dGVyUHJveHkgPSBhcHBDb21wb25lbnQuZ2V0Um91dGVyUHJveHkoKSxcblx0XHRcdFx0aGFzaCA9IHJvdXRlclByb3h5LmdldEhhc2goKTtcblx0XHRcdGFwcFN0YXRlS2V5ID0gcm91dGVyUHJveHkuZmluZEFwcFN0YXRlSW5IYXNoKGhhc2gpIGFzIHN0cmluZztcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGFwcFN0YXRlRGF0YSxcblx0XHRcdGFwcFN0YXRlS2V5XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIG9yIHVwZGF0ZXMgdGhlIGFwcHN0YXRlLlxuXHQgKiBSZXBsYWNlcyB0aGUgaGFzaCB3aXRoIHRoZSBuZXcgYXBwc3RhdGUgYmFzZWQgb24gcmVwbGFjZUhhc2guXG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzIFBhcmFtZXRlcnMgZm9yIGNyZWF0aW5nIG5ldyBhcHBzdGF0ZVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycy5yZXBsYWNlSGFzaCBCb29sZWFuIHdoaWNoIGRldGVybWluZXMgdG8gcmVwbGFjZSB0aGUgaGFzaCB3aXRoIHRoZSBuZXcgZ2VuZXJhdGVkIGtleVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycy5za2lwTWVyZ2UgQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHNraXAgdGhlIGtleSB1c2VyIHNoaW5lIHRocm91Z2hcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMudmlld0lkIElkIG9mIHRoZSB2aWV3IGZvciB3aGljaCB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgYXBwIHN0YXRlLiBUaGlzIGlzIHRvIGNyZWF0ZSBvciB1cGRhdGUgdmlldyBzcGVjaWZpYyBhcHBzdGF0ZVxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgcmVzb2x2aW5nIHRoZSBzdG9yZWQgZGF0YSBvciBhcHBzdGF0ZSBrZXlcblx0ICovXG5cdGFzeW5jIGNyZWF0ZUFwcFN0YXRlKGNyZWF0ZUFwcFBhcmFtZXRlcnM/OiBDcmVhdGVBcHBQYXJhbWV0ZXJzKTogUHJvbWlzZTx2b2lkIHwgQXBwRGF0YUluZm8+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdFx0aWYgKCFhcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5BcHBTdGF0ZSB8fCBCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHsgc2tpcE1lcmdlID0gZmFsc2UsIHZpZXdJZDogc3RhdGVJZGVudGlmaWVyID0gUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSB9ID0gY3JlYXRlQXBwUGFyYW1ldGVycyA/PyB7fSxcblx0XHRcdHJvb3RDb250cm9sbGVyID0gYXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXG5cdFx0aWYgKCFyb290Q29udHJvbGxlci52aWV3U3RhdGUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUgZm9yIGNvbnRyb2xsZXI6ICR7cm9vdENvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9YCk7XG5cdFx0fVxuXG5cdFx0Ly8gSW4gY2FzZSwgb24gbG9hZCBvZiBGQ0wgYXBwIHdlIGhhdmUgbXVsdGlwbGUgdmlld3MoTFIsIE9QLCBzdWItT1AuLi4pIGFuZCB1cmwgaGFzIGlBcHBTdGF0ZSgxKS5cblx0XHQvLyBUaGUgTFIgdmlldyBsb2FkcyB3aXRoIGFwcGxpZWQgaUFwcFN0YXRlKDEpIGFuZCBjYWxscyBjcmVhdGVBcHBTdGF0ZShleGFtcGxlOiBvblNlYXJjaCBldmVudCBpbiBMUikgYmVmb3JlIE9QIGlzIGxvYWRlZC5cblx0XHQvLyBUaGlzIGNyZWF0ZXMgaUFwcFN0YXRlKDIpIGJlZm9yZSBpQXBwU3RhdGUoMSkgaXMgYXBwbGllZCB0byBPUC5cblx0XHQvLyBTbywgd2UgdHJ5IHRvIHdhaXQgdGlsbCB0aGUgcm91dGluZyBpcyBjb21wbGV0ZS5cblx0XHRhd2FpdCByb290Q29udHJvbGxlci5yb3V0aW5nSXNDb21wbGV0ZSgpO1xuXG5cdFx0Ly8gR2V0IGFwcFN0YXRlIHRvIHVwZGF0ZVxuXHRcdGxldCBpbm5lckFwcFN0YXRlID0gKGF3YWl0IHJvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5yZXRyaWV2ZVZpZXdTdGF0ZSgpKSBhcyBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQ7XG5cdFx0aW5uZXJBcHBTdGF0ZSA9IHRoaXMuX2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGUsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0aWYgKHNraXBNZXJnZSkge1xuXHRcdFx0aW5uZXJBcHBTdGF0ZSA9IHsgLi4uaW5uZXJBcHBTdGF0ZSwgLi4ueyBza2lwTWVyZ2UgfSB9O1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl9nZXRBcHBTdGF0ZUluZm8oaW5uZXJBcHBTdGF0ZSwgY3JlYXRlQXBwUGFyYW1ldGVycyk7XG5cdH1cblxuXHRfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMob0FwcERhdGE6IEFwcERhdGEsIHNOYXZUeXBlOiBzdHJpbmcpOiBOYXZpZ2F0aW9uUGFyYW1ldGVyIHtcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb0FwcERhdGEsIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnREZWZhdWx0czogb0FwcERhdGEub0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50OiBvQXBwRGF0YS5vU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHJlcXVpcmVzU3RhbmRhcmRWYXJpYW50OiAhb0FwcERhdGEuYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSxcblx0XHRcdG5hdmlnYXRpb25UeXBlOiBzTmF2VHlwZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIFJUQSAoUnVudGltZSBBZGFwdGF0aW9uKSB2ZXJzaW9uIGFjdGl2YXRpb24gc3RhdHVzIGZvciBhIHNwZWNpZmljIElELlxuXHQgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgUlRBIHZlcnNpb24gd2FzIGFjdGl2YXRlZC5cblx0ICovXG5cdHN0YXRpYyBzZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkKGlkOiBzdHJpbmcsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy52ZXJzaW9uQWN0aXZhdGlvblN0YXR1c1tpZF0gPSB2YWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIFJUQSAoUnVudGltZSBBZGFwdGF0aW9uKSB2ZXJzaW9uIGFjdGl2YXRpb24gc3RhdHVzIGZvciBhIHNwZWNpZmljIElELlxuXHQgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyLlxuXHQgKiBAcmV0dXJucyBUaGUgYWN0aXZhdGlvbiBzdGF0dXMgb3IgdW5kZWZpbmVkIGlmIG5vdCBzZXQuXG5cdCAqL1xuXHRzdGF0aWMgZ2V0UlRBVmVyc2lvbldhc0FjdGl2YXRlZChpZDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMudmVyc2lvbkFjdGl2YXRpb25TdGF0dXNbaWRdO1xuXHR9XG5cblx0X2NoZWNrSWZMYXN0U2VlblJlY29yZCh2aWV3PzogVmlldyk6IGJvb2xlYW4ge1xuXHRcdC8vZ2V0dGluZyB0aGUgaW50ZXJuYWwgbW9kZWwgY29udGV4dCBpbiBvcmRlciB0byBmZXRjaCB0aGUgdGVjaG5pY2Fsa2V5cyBvZiBsYXN0IHNlZW4gcmVjb3JkIGFuZCBjbG9zZSBjb2x1bW4gZmxhZyBzZXQgaW4gdGhlIGludGVybmFscm91dGluZyBmb3IgcmV0YWluaW5nIHNldHRpbmdzIGluIHBlcnNpc3RlbmNlIG1vZGVcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHZpZXcgJiYgKHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0aWYgKGludGVybmFsTW9kZWxDb250ZXh0ICYmIGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiZmNsQ29sdW1uQ2xvc2VkXCIpID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCB0ZWNobmljYWxLZXlzT2JqZWN0ID0gaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJ0ZWNobmljYWxLZXlzT2ZMYXN0U2VlblJlY29yZFwiKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0Y29uc3QgcGF0aCA9IChiaW5kaW5nQ29udGV4dCAmJiBiaW5kaW5nQ29udGV4dC5nZXRQYXRoKCkpIHx8IFwiXCI7XG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBiaW5kaW5nQ29udGV4dD8uZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFQYXRoID0gbWV0YU1vZGVsPy5nZXRNZXRhUGF0aChwYXRoKTtcblx0XHRcdGNvbnN0IHRlY2huaWNhbEtleXMgPSBtZXRhTW9kZWw/LmdldE9iamVjdChgJHttZXRhUGF0aH0vJFR5cGUvJEtleWApO1xuXHRcdFx0aWYgKHRlY2huaWNhbEtleXMpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBlbGVtZW50IG9mIHRlY2huaWNhbEtleXMpIHtcblx0XHRcdFx0XHRjb25zdCBrZXlWYWx1ZSA9IGJpbmRpbmdDb250ZXh0LmdldE9iamVjdCgpW2VsZW1lbnRdO1xuXHRcdFx0XHRcdGlmIChrZXlWYWx1ZSAhPT0gdGVjaG5pY2FsS2V5c09iamVjdFtlbGVtZW50XSkge1xuXHRcdFx0XHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJmY2xDb2x1bW5DbG9zZWRcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvL3RoZSByZWNvcmQgb3BlbmVkIGlzIG5vdCB0aGUgbGFzdCBzZWVuIG9uZSA6IG5vIG5lZWQgdG8gcGVyc2lzdCB0aGUgY2hhbmdlcywgcmVzZXQgdG8gZGVmYXVsdCBpbnN0ZWFkXG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdF9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGE6IEFwcERhdGEsIHZpZXdJZD86IHN0cmluZywgbmF2VHlwZT86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkIHtcblx0XHRsZXQga2V5ID0gXCJcIixcblx0XHRcdGkgPSAwO1xuXHRcdGNvbnN0IGFwcFN0YXRlRGF0YSA9IG5hdlR5cGUgPT09IE5hdlR5cGUuaHlicmlkID8gb0FwcERhdGEuaUFwcFN0YXRlIDogb0FwcERhdGE7XG5cblx0XHRpZiAoYXBwU3RhdGVEYXRhPy5hcHBTdGF0ZSkge1xuXHRcdFx0Zm9yIChpOyBpIDwgT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAoT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKVtpXSA9PT0gdmlld0lkKSB7XG5cdFx0XHRcdFx0a2V5ID0gT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKVtpXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoYXBwU3RhdGVEYXRhPy5hcHBTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0W09iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSlbaV1dOiBhcHBTdGF0ZURhdGEuYXBwU3RhdGVba2V5XSB8fCB7fVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQXBwbGllcyBhbiBhcHBzdGF0ZSBieSBmZXRjaGluZyBhcHBkYXRhIGFuZCBwYXNzaW5nIGl0IHRvIF9hcHBseUFwcHN0YXRlVG9QYWdlLlxuXHQgKiBAcGFyYW0gdmlldyBUaGUgdmlldyBmb3Igd2hpY2ggdGhlIGFwcCBzdGF0ZSBtdXN0IGJlIGFwcGxpZWQuIElmIG5vIHZpZXcgaXMgcHJvdmlkZWQsIHRoZW4gYXBwIHN0YXRlIG9mIGFsbCB0aGUgdmlld3MgaXMgYXBwbGllZC5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIGZvciBhc3luYyBoYW5kbGluZ1xuXHQgKi9cblx0YXN5bmMgYXBwbHlBcHBTdGF0ZSh2aWV3PzogVmlldyk6IFByb21pc2U8dm9pZCB8IHt9PiB7XG5cdFx0aWYgKEFwcFN0YXRlSGFuZGxlci5nZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkKHRoaXMub0FwcENvbXBvbmVudC5nZXRJZCgpKSkge1xuXHRcdFx0QXBwU3RhdGVIYW5kbGVyLnNldFJUQVZlcnNpb25XYXNBY3RpdmF0ZWQodGhpcy5vQXBwQ29tcG9uZW50LmdldElkKCksIGZhbHNlKTtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdFx0Y29uc3Qgdmlld0lkID0gdmlldz8uZ2V0SWQoKTtcblx0XHRpZiAoIXRoaXMub0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkFwcFN0YXRlIHx8IEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcywgdmlld0lkKSkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNoZWNrSWZMYXN0U2VlblJlY29yZCA9IHRoaXMuX2NoZWNrSWZMYXN0U2VlblJlY29yZCh2aWV3KTtcblx0XHRpZiAoY2hlY2tJZkxhc3RTZWVuUmVjb3JkID09PSB0cnVlKSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXHRcdC8vIGxvY2sgdGhlIGFwcGx5IHN0YXRlIGZvciB0aGUgY3VycmVudCB2aWV3XG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMsIHZpZXdJZCk7XG5cdFx0Ly8gbG9jayB0aGUgQXBwIFN0YXRlIGhhbmRsZXIsIHVzZWQgdG8gYXZvaWQgYSBjcmVhdGlvbiBvZiBhcHAgc3RhdGUgZHVyaW5nIGFwcGx5XG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMpO1xuXHRcdC8vIERvbmUgZm9yIGJ1c3kgaW5kaWNhdG9yXG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpKTtcblx0XHRjb25zdCBvTmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKTtcblx0XHQvLyBUT0RPIG9OYXZpZ2F0aW9uU2VydmljZS5wYXJzZU5hdmlnYXRpb24oKSBzaG91bGQgcmV0dXJuIEVTNiBwcm9taXNlIGluc3RlYWQgalF1ZXJ5LnByb21pc2Vcblx0XHRyZXR1cm4gdG9FUzZQcm9taXNlPHVua25vd25bXT4ob05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpKVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChhRXJyb3JEYXRhOiB1bmtub3duW10pIHtcblx0XHRcdFx0aWYgKCFhRXJyb3JEYXRhKSB7XG5cdFx0XHRcdFx0YUVycm9yRGF0YSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiQVBQU1RBVEU6IFBhcnNlIE5hdmlnYXRpb24gZmFpbGVkXCIsIGFFcnJvckRhdGFbMF0gYXMgc3RyaW5nKTtcblx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHQvKiBhcHAgZGF0YSAqL1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0YUVycm9yRGF0YVsxXSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzJdXG5cdFx0XHRcdF07XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYXN5bmMgKGFSZXN1bHRzOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogUGFyc2UgTmF2aWdhdGlvbiBkb25lXCIpO1xuXG5cdFx0XHRcdC8vIGFSZXN1bHRzWzFdID0+IG9TdGFydHVwUGFyYW1ldGVycyAobm90IGV2YWx1YXRlZClcblx0XHRcdFx0Y29uc3Qgb0FwcERhdGEgPSAoYVJlc3VsdHNbMF0gfHwge30pIGFzIEFwcERhdGEsXG5cdFx0XHRcdFx0c05hdlR5cGUgPSAoYVJlc3VsdHNbMl0gYXMgc3RyaW5nKSB8fCBOYXZUeXBlLmluaXRpYWwsXG5cdFx0XHRcdFx0b1Jvb3RDb250cm9sbGVyID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHQvLyBhcHBseSB0aGUgYXBwc3RhdGUgZGVwZW5kaW5nIHVwb24gdGhlIHZpZXcgKExSL09QKVxuXHRcdFx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSB0aGlzLl9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGEsIHZpZXdJZCwgc05hdlR5cGUpO1xuXHRcdFx0XHQvLyBmZXRjaCB0aGUgc2tpcE1lcmdlIGZsYWcgZnJvbSBhcHBTdGF0ZSBmb3Igc2F2ZSBhcyB0aWxlXG5cdFx0XHRcdGNvbnN0IHNraXBNZXJnZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IG9BcHBEYXRhPy5hcHBTdGF0ZT8uW1NLSVBfTUVSR0VfS0VZXTtcblx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9XG5cdFx0XHRcdFx0c05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlIHx8IHNOYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IHsgLi4udGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgLi4uYXBwU3RhdGVEYXRhIH0gOiB7fTtcblx0XHRcdFx0bGV0IHNob3VsZEFwcGx5U3RhdGUgPSB0cnVlO1xuXG5cdFx0XHRcdGlmICghb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGV4dGVuc2lvbiByZXF1aXJlZCBmb3IgY29udHJvbGxlciAke29Sb290Q29udHJvbGxlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAob1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5faXNTdGF0ZUVtcHR5Rm9ySUFwcFN0YXRlTmF2VHlwZShvQXBwRGF0YSwgc05hdlR5cGUpKSB7XG5cdFx0XHRcdFx0aWYgKCFvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlLl9nZXRJbml0aWFsU3RhdGVBcHBsaWVkKCkpIHtcblx0XHRcdFx0XHRcdG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuX3NldEluaXRpYWxTdGF0ZUFwcGxpZWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2hvdWxkQXBwbHlTdGF0ZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHN0YXRlVG9BcHBseSA9IHZpZXdJZCAmJiBhcHBTdGF0ZURhdGE/Llt2aWV3SWRdID8gYXBwU3RhdGVEYXRhIDogdGhpcy5fbUN1cnJlbnRBcHBTdGF0ZTtcblx0XHRcdFx0Y29uc3QgYXBwbHlWaWV3U3RhdGUgPSBhd2FpdCBvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlLmFwcGx5Vmlld1N0YXRlKFxuXHRcdFx0XHRcdHN0YXRlVG9BcHBseSxcblx0XHRcdFx0XHR0aGlzLl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyhvQXBwRGF0YSwgc05hdlR5cGUpLFxuXHRcdFx0XHRcdHNraXBNZXJnZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoIXNob3VsZEFwcGx5U3RhdGUpIHtcblx0XHRcdFx0XHRyZXR1cm4ge307XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFwcGx5Vmlld1N0YXRlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiYXBwU3RhdGUgY291bGQgbm90IGJlIGFwcGxpZWRcIiwgb0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHRcdHRocm93IG9FcnJvcjtcblx0XHRcdH0pXG5cdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdC8vIHVubG9jayBhcHBseSBzdGF0ZSBmb3IgdGhlIGN1cnJlbnQgdmlld1xuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzLCB2aWV3SWQpO1xuXHRcdFx0XHQvLyB1bmxvY2sgdGhlIGFwcCBzdGF0ZSBoYW5kbGVyLCBzbyB0aGF0IGFwcCBzdGF0ZSBjcmVhdGlvbiBjYW4gaGFwcGVuIG5vdy5cblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcyk7XG5cdFx0XHRcdC8vIHVubG9jayB0aGUgUm9vdENvbnRyb2wgdG8gcmVtb3ZlIHRoZSBidXN5IGluZGljYXRvci5cblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogVG8gY2hlY2sgaXMgcm91dGUgaXMgY2hhbmdlZCBieSBjaGFuZ2UgaW4gdGhlIGlBUFBTdGF0ZS5cblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSByb3V0ZSBoYXMgY2huYWdlZFxuXHQgKi9cblx0Y2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5iTm9Sb3V0ZUNoYW5nZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXNldCB0aGUgcm91dGUgY2hhbmdlZCBieSBpQVBQU3RhdGUuXG5cdCAqL1xuXHRyZXNldFJvdXRlQ2hhbmdlZEJ5SUFwcCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5iTm9Sb3V0ZUNoYW5nZSkge1xuXHRcdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJlc2V0IGFsbCBhY3RpdmF0aW9uIHN0YXR1c2VzIGluIEFwcFN0YXRlSGFuZGxlci52ZXJzaW9uQWN0aXZhdGlvblN0YXR1cyB0byBmYWxzZVxuXHRzdGF0aWMgcmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cygpOiB2b2lkIHtcblx0XHRmb3IgKGNvbnN0IGlkIGluIHRoaXMudmVyc2lvbkFjdGl2YXRpb25TdGF0dXMpIHtcblx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy52ZXJzaW9uQWN0aXZhdGlvblN0YXR1cywgaWQpKSB7XG5cdFx0XHRcdHRoaXMudmVyc2lvbkFjdGl2YXRpb25TdGF0dXNbaWRdID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBBcHBTdGF0ZUhhbmRsZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0VBZ0JBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDRCxPQUFPO0VBYy9CLE1BQU1FLGNBQWMsR0FBRyxXQUFXO0VBb0JsQyxNQUFNQyx5QkFBeUIsR0FBRywyQkFBMkI7RUFBQyxJQUd4REMsZUFBZSxJQUFBQyxJQUFBLEdBRHBCQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsRUFBQUQsSUFBQSxDQUFBRSxNQUFBLElBQUFDLGdCQUFBLDBCQUFBQyxXQUFBO0lBYzdDLFNBQUFMLGdCQUFZTSxhQUEyQixFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUN4Q0EsS0FBQSxHQUFBRixXQUFBLENBQUFHLElBQUEsS0FBTSxDQUFDO01BQUNELEtBQUEsQ0FQREUsaUJBQWlCLEdBQWMsQ0FBQyxDQUFDO01BUXhDRixLQUFBLENBQUtELGFBQWEsR0FBR0EsYUFBYTtNQUNsQ0MsS0FBQSxDQUFLRyxHQUFHLEdBQUcsR0FBR0osYUFBYSxDQUFDSyxLQUFLLENBQUMsQ0FBQyxrQkFBa0I7TUFDckRKLEtBQUEsQ0FBS0sseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO01BQ25DTCxLQUFBLENBQUtNLGNBQWMsR0FBRyxLQUFLO01BQzNCQyxHQUFHLENBQUNDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQztNQUFDLE9BQUFSLEtBQUE7SUFDckQ7SUFBQ1MsY0FBQSxDQUFBaEIsZUFBQSxFQUFBSyxXQUFBO0lBQUEsSUFBQVksTUFBQSxHQUFBakIsZUFBQSxDQUFBa0IsU0FBQTtJQUFBRCxNQUFBLENBRUROLEtBQUssR0FBTCxTQUFBQSxLQUFLQSxDQUFBLEVBQVc7TUFDZixPQUFPLElBQUksQ0FBQ0QsR0FBRztJQUNoQjs7SUFFQTtB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
|
|
360
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIlNLSVBfTUVSR0VfS0VZIiwiUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSIsIkFwcFN0YXRlSGFuZGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9jbGFzcyIsIl9BcHBTdGF0ZUhhbmRsZXIiLCJfQmFzZU9iamVjdCIsIm9BcHBDb21wb25lbnQiLCJfdGhpcyIsImNhbGwiLCJfbUN1cnJlbnRBcHBTdGF0ZSIsInNJZCIsImdldElkIiwic2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCIsImJOb1JvdXRlQ2hhbmdlIiwiTG9nIiwiaW5mbyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiX2dldElubmVyQXBwU3RhdGVGb3JWaWV3IiwiaW5uZXJBcHBTdGF0ZSIsInN0YXRlSWRlbnRpZmllciIsIl9hZGRBcHBTdGF0ZUluSGFzaCIsImFwcFN0YXRlS2V5IiwiYXBwQ29tcG9uZW50IiwibmF2aWdhdGlvblNlcnZpY2UiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsInJvdXRlclByb3h5IiwiZ2V0Um91dGVyUHJveHkiLCJoYXNoIiwiZ2V0SGFzaCIsImlzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZ2V0TWV0YU1vZGVsIiwibmV3SGFzaCIsInJlcGxhY2VJbm5lckFwcFN0YXRlS2V5IiwibmF2VG9IYXNoIiwidW5kZWZpbmVkIiwiX2NyZWF0ZUFwcFN0YXRlS2V5IiwiYXBwU3RhdGVEYXRhIiwic3RvcmVJbm5lckFwcFN0YXRlQXN5bmMiLCJfZ2V0QXBwU3RhdGVJbmZvIiwiY3JlYXRlQXBwUGFyYW1ldGVycyIsInJlcGxhY2VIYXNoIiwidmlld0lkIiwiYXBwU3RhdGUiLCJjdXJyZW50U3RhdGVUb1VwZGF0ZSIsImRlZXBFcXVhbCIsIm9FcnJvciIsImVycm9yIiwiZmluZEFwcFN0YXRlSW5IYXNoIiwiY3JlYXRlQXBwU3RhdGUiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkFwcFN0YXRlIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwic2tpcE1lcmdlIiwicm9vdENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJ2aWV3U3RhdGUiLCJFcnJvciIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsInJvdXRpbmdJc0NvbXBsZXRlIiwicmV0cmlldmVWaWV3U3RhdGUiLCJfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvQXBwRGF0YSIsInNOYXZUeXBlIiwiT2JqZWN0IiwiYXNzaWduIiwic2VsZWN0aW9uVmFyaWFudERlZmF1bHRzIiwib0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50Iiwib1NlbGVjdGlvblZhcmlhbnQiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsImJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHkiLCJuYXZpZ2F0aW9uVHlwZSIsInNldFJUQVZlcnNpb25XYXNBY3RpdmF0ZWQiLCJpZCIsInZhbHVlIiwidmVyc2lvbkFjdGl2YXRpb25TdGF0dXMiLCJnZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkIiwiX2NoZWNrSWZMYXN0U2VlblJlY29yZCIsInZpZXciLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJ0ZWNobmljYWxLZXlzT2JqZWN0IiwiYmluZGluZ0NvbnRleHQiLCJwYXRoIiwiZ2V0UGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsInRlY2huaWNhbEtleXMiLCJnZXRPYmplY3QiLCJlbGVtZW50Iiwia2V5VmFsdWUiLCJzZXRQcm9wZXJ0eSIsIl9nZXRBcHBTdGF0ZURhdGEiLCJuYXZUeXBlIiwia2V5IiwiaSIsImh5YnJpZCIsImlBcHBTdGF0ZSIsImtleXMiLCJsZW5ndGgiLCJhcHBseUFwcFN0YXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0lmTGFzdFNlZW5SZWNvcmQiLCJsb2NrIiwib05hdmlnYXRpb25TZXJ2aWNlIiwidG9FUzZQcm9taXNlIiwicGFyc2VOYXZpZ2F0aW9uIiwiY2F0Y2giLCJhRXJyb3JEYXRhIiwid2FybmluZyIsInRoZW4iLCJhUmVzdWx0cyIsImluaXRpYWwiLCJvUm9vdENvbnRyb2xsZXIiLCJzaG91bGRBcHBseVN0YXRlIiwiX2lzU3RhdGVFbXB0eUZvcklBcHBTdGF0ZU5hdlR5cGUiLCJfZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsIl9zZXRJbml0aWFsU3RhdGVBcHBsaWVkIiwiYXBwbHlWaWV3U3RhdGUiLCJmaW5hbGx5IiwidW5sb2NrIiwiY2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCIsInJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwIiwicmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cyIsImhhc093blByb3BlcnR5IiwiQmFzZU9iamVjdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblBhcmFtZXRlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHRvRVM2UHJvbWlzZSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Ub0VTNlByb21pc2VcIjtcbmltcG9ydCB0eXBlIHsgSW5uZXJBcHBEYXRhIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL05hdmlnYXRpb25IYW5kbGVyXCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IGxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQnVzeUxvY2tlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCIuL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcblxuY29uc3QgTmF2VHlwZSA9IGxpYnJhcnkuTmF2VHlwZTtcbnR5cGUgQXBwU3RhdGUgPSB7XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG59O1xuZXhwb3J0IHR5cGUgQXBwRGF0YSA9IHtcblx0b0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQ7XG5cdG9TZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50O1xuXHRiTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5OiBib29sZWFuO1xuXHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdGlBcHBTdGF0ZT86IHtcblx0XHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdH07XG59O1xuY29uc3QgU0tJUF9NRVJHRV9LRVkgPSBcInNraXBNZXJnZVwiO1xuZXhwb3J0IHR5cGUgSUFwcFN0YXRlID0ge1xuXHRhcHBTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEYXRhSW5mbyA9IHtcblx0YXBwU3RhdGVEYXRhOiB7IGFwcFN0YXRlOiBvYmplY3QgfCB1bmRlZmluZWQgfTtcblx0YXBwU3RhdGVLZXk6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVBcHBQYXJhbWV0ZXJzID0ge1xuXHRyZXBsYWNlSGFzaD86IGJvb2xlYW47XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdHZpZXdJZD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZlcnNpb25BY3RpdmF0ZWQgPSB7XG5cdHZlcnNpb25XYXNBY3RpdmF0ZWQ6IGJvb2xlYW47XG59O1xuXG5jb25zdCBSRVBMQUNFX0NPTVBMRVRFX0FQUFNUQVRFID0gXCJSRVBMQUNFX0NPTVBMRVRFX0FQUFNUQVRFXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkFwcFN0YXRlSGFuZGxlclwiKVxuY2xhc3MgQXBwU3RhdGVIYW5kbGVyIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdHB1YmxpYyBzSWQ6IHN0cmluZztcblxuXHRwdWJsaWMgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50O1xuXG5cdHB1YmxpYyBiTm9Sb3V0ZUNoYW5nZTogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9tQ3VycmVudEFwcFN0YXRlPzogQXBwU3RhdGUgPSB7fTtcblxuXHRzaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuXG5cdHN0YXRpYyB2ZXJzaW9uQWN0aXZhdGlvblN0YXR1czogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuXHRjb25zdHJ1Y3RvcihvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMub0FwcENvbXBvbmVudCA9IG9BcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zSWQgPSBgJHtvQXBwQ29tcG9uZW50LmdldElkKCl9L0FwcFN0YXRlSGFuZGxlcmA7XG5cdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0ID0ge307XG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cblx0Z2V0SWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zSWQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHZpZXcgc3BlY2lmaWMgYXBwc3RhdGUuXG5cdCAqIEBwYXJhbSBpbm5lckFwcFN0YXRlIE92ZXJhbGwgYXBwc3RhdGVcblx0ICogQHBhcmFtIHN0YXRlSWRlbnRpZmllciBTdGF0ZSBpZGVudGlmaWVyLiBJZCBvZiB0aGUgbG9jYWwgdmlld1xuXHQgKiBAcmV0dXJucyBJbm5lciBhcHBzdGF0ZVxuXHQgKi9cblx0X2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGU6IElubmVyQXBwRGF0YSB8IHVuZGVmaW5lZCwgc3RhdGVJZGVudGlmaWVyOiBzdHJpbmcpOiBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQge1xuXHRcdGlmIChzdGF0ZUlkZW50aWZpZXIgPT09IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfHwgIWlubmVyQXBwU3RhdGUpIHtcblx0XHRcdC8vIG92ZXJhbGwgYXBwIHN0YXRlIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQuXG5cdFx0XHRyZXR1cm4gaW5uZXJBcHBTdGF0ZTtcblx0XHR9XG5cblx0XHQvLyB3ZSB0YWtlIHRoZSBzdWJzZXQgb2YgdGhlIGFwcCBzdGF0ZSB3cnQgdG8gdGhlIGxvY2FsIHZpZXcgaWQuXG5cdFx0cmV0dXJuIHtcblx0XHRcdFtzdGF0ZUlkZW50aWZpZXJdOiBpbm5lckFwcFN0YXRlW3N0YXRlSWRlbnRpZmllciBhcyBrZXlvZiB0eXBlb2YgaW5uZXJBcHBTdGF0ZV0gfHwge31cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhcHBzdGF0ZSBpbiBoYXNoLlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVLZXkgQXBwc3RhdGUga2V5XG5cdCAqIEBwYXJhbSBzdGF0ZUlkZW50aWZpZXIgU3RhdGUgaWRlbnRpZmllci4gSWQgb2YgdGhlIGxvY2FsIHZpZXdcblx0ICovXG5cdF9hZGRBcHBTdGF0ZUluSGFzaChhcHBTdGF0ZUtleTogc3RyaW5nLCBzdGF0ZUlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMub0FwcENvbXBvbmVudCxcblx0XHRcdG5hdmlnYXRpb25TZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldE5hdmlnYXRpb25TZXJ2aWNlKCksXG5cdFx0XHRyb3V0ZXJQcm94eSA9IGFwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpLFxuXHRcdFx0aGFzaCA9IHJvdXRlclByb3h5LmdldEhhc2goKSxcblx0XHRcdGlzU3RpY2t5TW9kZSA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChhcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCkpLFxuXHRcdFx0bmV3SGFzaCA9IG5hdmlnYXRpb25TZXJ2aWNlLnJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHJvdXRlclByb3h5LmdldEhhc2goKSwgYXBwU3RhdGVLZXkpO1xuXG5cdFx0aWYgKG5ld0hhc2ggJiYgdGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0gPT09IDAgJiYgbmV3SGFzaCAhPT0gaGFzaCkge1xuXHRcdFx0cm91dGVyUHJveHkubmF2VG9IYXNoKG5ld0hhc2gsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICFpc1N0aWNreU1vZGUpO1xuXHRcdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IHRydWU7XG5cdFx0fVxuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IG5hdlRvSGFzaFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgQXBwc3RhdGUgS2V5LlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVEYXRhIEFwcHN0YXRlXG5cdCAqIEBwYXJhbSBzdGF0ZUlkZW50aWZpZXIgU3RhdGUgaWRlbnRpZmllci4gSWQgb2YgdGhlIGxvY2FsIHZpZXdcblx0ICogQHJldHVybnMgQXBwc3RhdGUgS2V5XG5cdCAqL1xuXHRhc3luYyBfY3JlYXRlQXBwU3RhdGVLZXkoYXBwU3RhdGVEYXRhOiBJbm5lckFwcERhdGEsIHN0YXRlSWRlbnRpZmllcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQsXG5cdFx0XHRuYXZpZ2F0aW9uU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXROYXZpZ2F0aW9uU2VydmljZSgpO1xuXG5cdFx0aWYgKHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdKSB7XG5cdFx0XHQvLyBhbnkgb3RoZXIgdmFsdWVcblx0XHRcdHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdKys7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIDAgb3IgdW5kZWZpbmVkXG5cdFx0XHR0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSA9IDE7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYXBwU3RhdGVLZXkgPSBhd2FpdCBuYXZpZ2F0aW9uU2VydmljZS5zdG9yZUlubmVyQXBwU3RhdGVBc3luYyhhcHBTdGF0ZURhdGEsIHRydWUsIHRydWUpO1xuXG5cdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0tLTtcblxuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IEFwcHN0YXRlIHN0b3JlZFwiKTtcblx0XHRyZXR1cm4gYXBwU3RhdGVLZXk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhcHBzdGF0ZSBpbmZvLlxuXHQgKiBAcGFyYW0gaW5uZXJBcHBTdGF0ZVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycyBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGdlbmVyYXRlZCBrZXlcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMudmlld0lkIElkIG9mIHRoZSB2aWV3IGZvciB3aGljaCB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgYXBwIHN0YXRlLiBUaGlzIGlzIHRvIGNyZWF0ZSBvciB1cGRhdGUgdmlldyBzcGVjaWZpYyBhcHBzdGF0ZS5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0aGUgc3RvcmVkIGRhdGEgb3IgYXBwc3RhdGUga2V5XG5cdCAqL1xuXHRhc3luYyBfZ2V0QXBwU3RhdGVJbmZvKGlubmVyQXBwU3RhdGU6IElubmVyQXBwRGF0YSB8IHVuZGVmaW5lZCwgY3JlYXRlQXBwUGFyYW1ldGVycz86IENyZWF0ZUFwcFBhcmFtZXRlcnMpOiBQcm9taXNlPEFwcERhdGFJbmZvPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5vQXBwQ29tcG9uZW50O1xuXHRcdGNvbnN0IHsgcmVwbGFjZUhhc2ggPSB0cnVlLCB2aWV3SWQ6IHN0YXRlSWRlbnRpZmllciA9IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfSA9IGNyZWF0ZUFwcFBhcmFtZXRlcnMgPz8ge307XG5cblx0XHRsZXQgYXBwU3RhdGVLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXHRcdGxldCBhcHBTdGF0ZURhdGEgPSB7IGFwcFN0YXRlOiB0aGlzLl9tQ3VycmVudEFwcFN0YXRlIH07XG5cblx0XHRjb25zdCBjdXJyZW50U3RhdGVUb1VwZGF0ZSA9IHRoaXMuX2dldElubmVyQXBwU3RhdGVGb3JWaWV3KHRoaXMuX21DdXJyZW50QXBwU3RhdGUsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0aWYgKGlubmVyQXBwU3RhdGUgJiYgIWRlZXBFcXVhbChjdXJyZW50U3RhdGVUb1VwZGF0ZSwgaW5uZXJBcHBTdGF0ZSkpIHtcblx0XHRcdC8vXG5cdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0geyAuLi50aGlzLl9tQ3VycmVudEFwcFN0YXRlLCAuLi4oaW5uZXJBcHBTdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcblx0XHRcdGFwcFN0YXRlRGF0YSA9IHsgYXBwU3RhdGU6IHRoaXMuX21DdXJyZW50QXBwU3RhdGUgfTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGFwcFN0YXRlS2V5ID0gYXdhaXQgdGhpcy5fY3JlYXRlQXBwU3RhdGVLZXkoYXBwU3RhdGVEYXRhLCBzdGF0ZUlkZW50aWZpZXIpO1xuXHRcdFx0XHRpZiAocmVwbGFjZUhhc2ggPT09IHRydWUpIHtcblx0XHRcdFx0XHR0aGlzLl9hZGRBcHBTdGF0ZUluSGFzaChhcHBTdGF0ZUtleSwgc3RhdGVJZGVudGlmaWVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAob0Vycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgcm91dGVyUHJveHkgPSBhcHBDb21wb25lbnQuZ2V0Um91dGVyUHJveHkoKSxcblx0XHRcdFx0aGFzaCA9IHJvdXRlclByb3h5LmdldEhhc2goKTtcblx0XHRcdGFwcFN0YXRlS2V5ID0gcm91dGVyUHJveHkuZmluZEFwcFN0YXRlSW5IYXNoKGhhc2gpIGFzIHN0cmluZztcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGFwcFN0YXRlRGF0YSxcblx0XHRcdGFwcFN0YXRlS2V5XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIG9yIHVwZGF0ZXMgdGhlIGFwcHN0YXRlLlxuXHQgKiBSZXBsYWNlcyB0aGUgaGFzaCB3aXRoIHRoZSBuZXcgYXBwc3RhdGUgYmFzZWQgb24gcmVwbGFjZUhhc2guXG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzIFBhcmFtZXRlcnMgZm9yIGNyZWF0aW5nIG5ldyBhcHBzdGF0ZVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycy5yZXBsYWNlSGFzaCBCb29sZWFuIHdoaWNoIGRldGVybWluZXMgdG8gcmVwbGFjZSB0aGUgaGFzaCB3aXRoIHRoZSBuZXcgZ2VuZXJhdGVkIGtleVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycy5za2lwTWVyZ2UgQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHNraXAgdGhlIGtleSB1c2VyIHNoaW5lIHRocm91Z2hcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMudmlld0lkIElkIG9mIHRoZSB2aWV3IGZvciB3aGljaCB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgYXBwIHN0YXRlLiBUaGlzIGlzIHRvIGNyZWF0ZSBvciB1cGRhdGUgdmlldyBzcGVjaWZpYyBhcHBzdGF0ZVxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgcmVzb2x2aW5nIHRoZSBzdG9yZWQgZGF0YSBvciBhcHBzdGF0ZSBrZXlcblx0ICovXG5cdGFzeW5jIGNyZWF0ZUFwcFN0YXRlKGNyZWF0ZUFwcFBhcmFtZXRlcnM/OiBDcmVhdGVBcHBQYXJhbWV0ZXJzKTogUHJvbWlzZTx2b2lkIHwgQXBwRGF0YUluZm8+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdFx0aWYgKCFhcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5BcHBTdGF0ZSB8fCBCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHsgc2tpcE1lcmdlID0gZmFsc2UsIHZpZXdJZDogc3RhdGVJZGVudGlmaWVyID0gUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSB9ID0gY3JlYXRlQXBwUGFyYW1ldGVycyA/PyB7fSxcblx0XHRcdHJvb3RDb250cm9sbGVyID0gYXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXG5cdFx0aWYgKCFyb290Q29udHJvbGxlci52aWV3U3RhdGUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUgZm9yIGNvbnRyb2xsZXI6ICR7cm9vdENvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9YCk7XG5cdFx0fVxuXG5cdFx0Ly8gSW4gY2FzZSwgb24gbG9hZCBvZiBGQ0wgYXBwIHdlIGhhdmUgbXVsdGlwbGUgdmlld3MoTFIsIE9QLCBzdWItT1AuLi4pIGFuZCB1cmwgaGFzIGlBcHBTdGF0ZSgxKS5cblx0XHQvLyBUaGUgTFIgdmlldyBsb2FkcyB3aXRoIGFwcGxpZWQgaUFwcFN0YXRlKDEpIGFuZCBjYWxscyBjcmVhdGVBcHBTdGF0ZShleGFtcGxlOiBvblNlYXJjaCBldmVudCBpbiBMUikgYmVmb3JlIE9QIGlzIGxvYWRlZC5cblx0XHQvLyBUaGlzIGNyZWF0ZXMgaUFwcFN0YXRlKDIpIGJlZm9yZSBpQXBwU3RhdGUoMSkgaXMgYXBwbGllZCB0byBPUC5cblx0XHQvLyBTbywgd2UgdHJ5IHRvIHdhaXQgdGlsbCB0aGUgcm91dGluZyBpcyBjb21wbGV0ZS5cblx0XHRhd2FpdCByb290Q29udHJvbGxlci5yb3V0aW5nSXNDb21wbGV0ZSgpO1xuXG5cdFx0Ly8gR2V0IGFwcFN0YXRlIHRvIHVwZGF0ZVxuXHRcdGxldCBpbm5lckFwcFN0YXRlID0gKGF3YWl0IHJvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5yZXRyaWV2ZVZpZXdTdGF0ZSgpKSBhcyBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQ7XG5cdFx0aW5uZXJBcHBTdGF0ZSA9IHRoaXMuX2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGUsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0aWYgKHNraXBNZXJnZSkge1xuXHRcdFx0aW5uZXJBcHBTdGF0ZSA9IHsgLi4uaW5uZXJBcHBTdGF0ZSwgLi4ueyBza2lwTWVyZ2UgfSB9O1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl9nZXRBcHBTdGF0ZUluZm8oaW5uZXJBcHBTdGF0ZSwgY3JlYXRlQXBwUGFyYW1ldGVycyk7XG5cdH1cblxuXHRfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMob0FwcERhdGE6IEFwcERhdGEsIHNOYXZUeXBlOiBzdHJpbmcpOiBOYXZpZ2F0aW9uUGFyYW1ldGVyIHtcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb0FwcERhdGEsIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnREZWZhdWx0czogb0FwcERhdGEub0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50OiBvQXBwRGF0YS5vU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHJlcXVpcmVzU3RhbmRhcmRWYXJpYW50OiAhb0FwcERhdGEuYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSxcblx0XHRcdG5hdmlnYXRpb25UeXBlOiBzTmF2VHlwZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIFJUQSAoUnVudGltZSBBZGFwdGF0aW9uKSB2ZXJzaW9uIGFjdGl2YXRpb24gc3RhdHVzIGZvciBhIHNwZWNpZmljIElELlxuXHQgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgUlRBIHZlcnNpb24gd2FzIGFjdGl2YXRlZC5cblx0ICovXG5cdHN0YXRpYyBzZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkKGlkOiBzdHJpbmcsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy52ZXJzaW9uQWN0aXZhdGlvblN0YXR1c1tpZF0gPSB2YWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIFJUQSAoUnVudGltZSBBZGFwdGF0aW9uKSB2ZXJzaW9uIGFjdGl2YXRpb24gc3RhdHVzIGZvciBhIHNwZWNpZmljIElELlxuXHQgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyLlxuXHQgKiBAcmV0dXJucyBUaGUgYWN0aXZhdGlvbiBzdGF0dXMgb3IgdW5kZWZpbmVkIGlmIG5vdCBzZXQuXG5cdCAqL1xuXHRzdGF0aWMgZ2V0UlRBVmVyc2lvbldhc0FjdGl2YXRlZChpZDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMudmVyc2lvbkFjdGl2YXRpb25TdGF0dXNbaWRdO1xuXHR9XG5cblx0X2NoZWNrSWZMYXN0U2VlblJlY29yZCh2aWV3PzogVmlldyk6IGJvb2xlYW4ge1xuXHRcdC8vZ2V0dGluZyB0aGUgaW50ZXJuYWwgbW9kZWwgY29udGV4dCBpbiBvcmRlciB0byBmZXRjaCB0aGUgdGVjaG5pY2Fsa2V5cyBvZiBsYXN0IHNlZW4gcmVjb3JkIGFuZCBjbG9zZSBjb2x1bW4gZmxhZyBzZXQgaW4gdGhlIGludGVybmFscm91dGluZyBmb3IgcmV0YWluaW5nIHNldHRpbmdzIGluIHBlcnNpc3RlbmNlIG1vZGVcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHZpZXcgJiYgKHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0aWYgKGludGVybmFsTW9kZWxDb250ZXh0ICYmIGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiZmNsQ29sdW1uQ2xvc2VkXCIpID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCB0ZWNobmljYWxLZXlzT2JqZWN0ID0gaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJ0ZWNobmljYWxLZXlzT2ZMYXN0U2VlblJlY29yZFwiKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0Y29uc3QgcGF0aCA9IChiaW5kaW5nQ29udGV4dCAmJiBiaW5kaW5nQ29udGV4dC5nZXRQYXRoKCkpIHx8IFwiXCI7XG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBiaW5kaW5nQ29udGV4dD8uZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFQYXRoID0gbWV0YU1vZGVsPy5nZXRNZXRhUGF0aChwYXRoKTtcblx0XHRcdGNvbnN0IHRlY2huaWNhbEtleXMgPSBtZXRhTW9kZWw/LmdldE9iamVjdChgJHttZXRhUGF0aH0vJFR5cGUvJEtleWApO1xuXHRcdFx0aWYgKHRlY2huaWNhbEtleXMpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBlbGVtZW50IG9mIHRlY2huaWNhbEtleXMpIHtcblx0XHRcdFx0XHRjb25zdCBrZXlWYWx1ZSA9IGJpbmRpbmdDb250ZXh0LmdldE9iamVjdCgpW2VsZW1lbnRdO1xuXHRcdFx0XHRcdGlmIChrZXlWYWx1ZSAhPT0gdGVjaG5pY2FsS2V5c09iamVjdFtlbGVtZW50XSkge1xuXHRcdFx0XHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJmY2xDb2x1bW5DbG9zZWRcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvL3RoZSByZWNvcmQgb3BlbmVkIGlzIG5vdCB0aGUgbGFzdCBzZWVuIG9uZSA6IG5vIG5lZWQgdG8gcGVyc2lzdCB0aGUgY2hhbmdlcywgcmVzZXQgdG8gZGVmYXVsdCBpbnN0ZWFkXG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdF9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGE6IEFwcERhdGEsIHZpZXdJZD86IHN0cmluZywgbmF2VHlwZT86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkIHtcblx0XHRsZXQga2V5ID0gXCJcIixcblx0XHRcdGkgPSAwO1xuXHRcdGNvbnN0IGFwcFN0YXRlRGF0YSA9IG5hdlR5cGUgPT09IE5hdlR5cGUuaHlicmlkID8gb0FwcERhdGEuaUFwcFN0YXRlIDogb0FwcERhdGE7XG5cblx0XHRpZiAoYXBwU3RhdGVEYXRhPy5hcHBTdGF0ZSkge1xuXHRcdFx0Zm9yIChpOyBpIDwgT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAoT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKVtpXSA9PT0gdmlld0lkKSB7XG5cdFx0XHRcdFx0a2V5ID0gT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKVtpXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoYXBwU3RhdGVEYXRhPy5hcHBTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIGtleVxuXHRcdFx0XHQ/IHtcblx0XHRcdFx0XHRcdFtPYmplY3Qua2V5cyhhcHBTdGF0ZURhdGEuYXBwU3RhdGUpW2ldXTogYXBwU3RhdGVEYXRhLmFwcFN0YXRlW2tleV0gfHwge31cblx0XHRcdFx0ICB9XG5cdFx0XHRcdDoge307XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgYW4gYXBwc3RhdGUgYnkgZmV0Y2hpbmcgYXBwZGF0YSBhbmQgcGFzc2luZyBpdCB0byBfYXBwbHlBcHBzdGF0ZVRvUGFnZS5cblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgZm9yIHdoaWNoIHRoZSBhcHAgc3RhdGUgbXVzdCBiZSBhcHBsaWVkLiBJZiBubyB2aWV3IGlzIHByb3ZpZGVkLCB0aGVuIGFwcCBzdGF0ZSBvZiBhbGwgdGhlIHZpZXdzIGlzIGFwcGxpZWQuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSBmb3IgYXN5bmMgaGFuZGxpbmdcblx0ICovXG5cdGFzeW5jIGFwcGx5QXBwU3RhdGUodmlldz86IFZpZXcpOiBQcm9taXNlPHZvaWQgfCB7fT4ge1xuXHRcdGlmIChBcHBTdGF0ZUhhbmRsZXIuZ2V0UlRBVmVyc2lvbldhc0FjdGl2YXRlZCh0aGlzLm9BcHBDb21wb25lbnQuZ2V0SWQoKSkpIHtcblx0XHRcdEFwcFN0YXRlSGFuZGxlci5zZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkKHRoaXMub0FwcENvbXBvbmVudC5nZXRJZCgpLCBmYWxzZSk7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXHRcdGNvbnN0IHZpZXdJZCA9IHZpZXc/LmdldElkKCk7XG5cdFx0aWYgKCF0aGlzLm9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5BcHBTdGF0ZSB8fCBCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMsIHZpZXdJZCkpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cblx0XHRjb25zdCBjaGVja0lmTGFzdFNlZW5SZWNvcmQgPSB0aGlzLl9jaGVja0lmTGFzdFNlZW5SZWNvcmQodmlldyk7XG5cdFx0aWYgKGNoZWNrSWZMYXN0U2VlblJlY29yZCA9PT0gdHJ1ZSkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblx0XHQvLyBsb2NrIHRoZSBhcHBseSBzdGF0ZSBmb3IgdGhlIGN1cnJlbnQgdmlld1xuXHRcdEJ1c3lMb2NrZXIubG9jayh0aGlzLCB2aWV3SWQpO1xuXHRcdC8vIGxvY2sgdGhlIEFwcCBTdGF0ZSBoYW5kbGVyLCB1c2VkIHRvIGF2b2lkIGEgY3JlYXRpb24gb2YgYXBwIHN0YXRlIGR1cmluZyBhcHBseVxuXHRcdEJ1c3lMb2NrZXIubG9jayh0aGlzKTtcblx0XHQvLyBEb25lIGZvciBidXN5IGluZGljYXRvclxuXHRcdEJ1c3lMb2NrZXIubG9jayh0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSk7XG5cdFx0Y29uc3Qgb05hdmlnYXRpb25TZXJ2aWNlID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldE5hdmlnYXRpb25TZXJ2aWNlKCk7XG5cdFx0Ly8gVE9ETyBvTmF2aWdhdGlvblNlcnZpY2UucGFyc2VOYXZpZ2F0aW9uKCkgc2hvdWxkIHJldHVybiBFUzYgcHJvbWlzZSBpbnN0ZWFkIGpRdWVyeS5wcm9taXNlXG5cdFx0cmV0dXJuIHRvRVM2UHJvbWlzZTx1bmtub3duW10+KG9OYXZpZ2F0aW9uU2VydmljZS5wYXJzZU5hdmlnYXRpb24oKSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoYUVycm9yRGF0YTogdW5rbm93bltdKSB7XG5cdFx0XHRcdGlmICghYUVycm9yRGF0YSkge1xuXHRcdFx0XHRcdGFFcnJvckRhdGEgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRMb2cud2FybmluZyhcIkFQUFNUQVRFOiBQYXJzZSBOYXZpZ2F0aW9uIGZhaWxlZFwiLCBhRXJyb3JEYXRhWzBdIGFzIHN0cmluZyk7XG5cdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0LyogYXBwIGRhdGEgKi9cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGFFcnJvckRhdGFbMV0sXG5cdFx0XHRcdFx0YUVycm9yRGF0YVsyXVxuXHRcdFx0XHRdO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKGFzeW5jIChhUmVzdWx0czogdW5rbm93bltdKSA9PiB7XG5cdFx0XHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IFBhcnNlIE5hdmlnYXRpb24gZG9uZVwiKTtcblxuXHRcdFx0XHQvLyBhUmVzdWx0c1sxXSA9PiBvU3RhcnR1cFBhcmFtZXRlcnMgKG5vdCBldmFsdWF0ZWQpXG5cdFx0XHRcdGNvbnN0IG9BcHBEYXRhID0gKGFSZXN1bHRzWzBdIHx8IHt9KSBhcyBBcHBEYXRhLFxuXHRcdFx0XHRcdHNOYXZUeXBlID0gKGFSZXN1bHRzWzJdIGFzIHN0cmluZykgfHwgTmF2VHlwZS5pbml0aWFsLFxuXHRcdFx0XHRcdG9Sb290Q29udHJvbGxlciA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblx0XHRcdFx0Ly8gYXBwbHkgdGhlIGFwcHN0YXRlIGRlcGVuZGluZyB1cG9uIHRoZSB2aWV3IChMUi9PUClcblx0XHRcdFx0Y29uc3QgYXBwU3RhdGVEYXRhID0gdGhpcy5fZ2V0QXBwU3RhdGVEYXRhKG9BcHBEYXRhLCB2aWV3SWQsIHNOYXZUeXBlKTtcblx0XHRcdFx0Ly8gZmV0Y2ggdGhlIHNraXBNZXJnZSBmbGFnIGZyb20gYXBwU3RhdGUgZm9yIHNhdmUgYXMgdGlsZVxuXHRcdFx0XHRjb25zdCBza2lwTWVyZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBvQXBwRGF0YT8uYXBwU3RhdGU/LltTS0lQX01FUkdFX0tFWV07XG5cdFx0XHRcdHRoaXMuX21DdXJyZW50QXBwU3RhdGUgPVxuXHRcdFx0XHRcdHNOYXZUeXBlID09PSBOYXZUeXBlLmlBcHBTdGF0ZSB8fCBzTmF2VHlwZSA9PT0gTmF2VHlwZS5oeWJyaWQgPyB7IC4uLnRoaXMuX21DdXJyZW50QXBwU3RhdGUsIC4uLmFwcFN0YXRlRGF0YSB9IDoge307XG5cdFx0XHRcdGxldCBzaG91bGRBcHBseVN0YXRlID0gdHJ1ZTtcblxuXHRcdFx0XHRpZiAoIW9Sb290Q29udHJvbGxlci52aWV3U3RhdGUpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYHZpZXdTdGF0ZSBleHRlbnNpb24gcmVxdWlyZWQgZm9yIGNvbnRyb2xsZXIgJHtvUm9vdENvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9YCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuX2lzU3RhdGVFbXB0eUZvcklBcHBTdGF0ZU5hdlR5cGUob0FwcERhdGEsIHNOYXZUeXBlKSkge1xuXHRcdFx0XHRcdGlmICghb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5fZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCgpKSB7XG5cdFx0XHRcdFx0XHRvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlLl9zZXRJbml0aWFsU3RhdGVBcHBsaWVkKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNob3VsZEFwcGx5U3RhdGUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBhcHBseVZpZXdTdGF0ZSA9IGF3YWl0IG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuYXBwbHlWaWV3U3RhdGUoXG5cdFx0XHRcdFx0dmlld0lkID8gYXBwU3RhdGVEYXRhIDogdGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSxcblx0XHRcdFx0XHR0aGlzLl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyhvQXBwRGF0YSwgc05hdlR5cGUpLFxuXHRcdFx0XHRcdHNraXBNZXJnZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoIXNob3VsZEFwcGx5U3RhdGUpIHtcblx0XHRcdFx0XHRyZXR1cm4ge307XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFwcGx5Vmlld1N0YXRlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiYXBwU3RhdGUgY291bGQgbm90IGJlIGFwcGxpZWRcIiwgb0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHRcdHRocm93IG9FcnJvcjtcblx0XHRcdH0pXG5cdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdC8vIHVubG9jayBhcHBseSBzdGF0ZSBmb3IgdGhlIGN1cnJlbnQgdmlld1xuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzLCB2aWV3SWQpO1xuXHRcdFx0XHQvLyB1bmxvY2sgdGhlIGFwcCBzdGF0ZSBoYW5kbGVyLCBzbyB0aGF0IGFwcCBzdGF0ZSBjcmVhdGlvbiBjYW4gaGFwcGVuIG5vdy5cblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcyk7XG5cdFx0XHRcdC8vIHVubG9jayB0aGUgUm9vdENvbnRyb2wgdG8gcmVtb3ZlIHRoZSBidXN5IGluZGljYXRvci5cblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogVG8gY2hlY2sgaXMgcm91dGUgaXMgY2hhbmdlZCBieSBjaGFuZ2UgaW4gdGhlIGlBUFBTdGF0ZS5cblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSByb3V0ZSBoYXMgY2huYWdlZFxuXHQgKi9cblx0Y2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5iTm9Sb3V0ZUNoYW5nZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXNldCB0aGUgcm91dGUgY2hhbmdlZCBieSBpQVBQU3RhdGUuXG5cdCAqL1xuXHRyZXNldFJvdXRlQ2hhbmdlZEJ5SUFwcCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5iTm9Sb3V0ZUNoYW5nZSkge1xuXHRcdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJlc2V0IGFsbCBhY3RpdmF0aW9uIHN0YXR1c2VzIGluIEFwcFN0YXRlSGFuZGxlci52ZXJzaW9uQWN0aXZhdGlvblN0YXR1cyB0byBmYWxzZVxuXHRzdGF0aWMgcmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cygpOiB2b2lkIHtcblx0XHRmb3IgKGNvbnN0IGlkIGluIHRoaXMudmVyc2lvbkFjdGl2YXRpb25TdGF0dXMpIHtcblx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy52ZXJzaW9uQWN0aXZhdGlvblN0YXR1cywgaWQpKSB7XG5cdFx0XHRcdHRoaXMudmVyc2lvbkFjdGl2YXRpb25TdGF0dXNbaWRdID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBBcHBTdGF0ZUhhbmRsZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0VBZ0JBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDRCxPQUFPO0VBYy9CLE1BQU1FLGNBQWMsR0FBRyxXQUFXO0VBb0JsQyxNQUFNQyx5QkFBeUIsR0FBRywyQkFBMkI7RUFBQyxJQUd4REMsZUFBZSxJQUFBQyxJQUFBLEdBRHBCQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsRUFBQUQsSUFBQSxDQUFBRSxNQUFBLElBQUFDLGdCQUFBLDBCQUFBQyxXQUFBO0lBYzdDLFNBQUFMLGdCQUFZTSxhQUEyQixFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUN4Q0EsS0FBQSxHQUFBRixXQUFBLENBQUFHLElBQUEsS0FBTSxDQUFDO01BQUNELEtBQUEsQ0FQREUsaUJBQWlCLEdBQWMsQ0FBQyxDQUFDO01BUXhDRixLQUFBLENBQUtELGFBQWEsR0FBR0EsYUFBYTtNQUNsQ0MsS0FBQSxDQUFLRyxHQUFHLEdBQUcsR0FBR0osYUFBYSxDQUFDSyxLQUFLLENBQUMsQ0FBQyxrQkFBa0I7TUFDckRKLEtBQUEsQ0FBS0sseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO01BQ25DTCxLQUFBLENBQUtNLGNBQWMsR0FBRyxLQUFLO01BQzNCQyxHQUFHLENBQUNDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQztNQUFDLE9BQUFSLEtBQUE7SUFDckQ7SUFBQ1MsY0FBQSxDQUFBaEIsZUFBQSxFQUFBSyxXQUFBO0lBQUEsSUFBQVksTUFBQSxHQUFBakIsZUFBQSxDQUFBa0IsU0FBQTtJQUFBRCxNQUFBLENBRUROLEtBQUssR0FBTCxTQUFBQSxLQUFLQSxDQUFBLEVBQVc7TUFDZixPQUFPLElBQUksQ0FBQ0QsR0FBRztJQUNoQjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBTyxNQUFBLENBTUFFLHdC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
|
|
@@ -282,9 +282,11 @@ class AppStateHandler extends BaseObject {
|
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
if (appStateData?.appState) {
|
|
285
|
-
return
|
|
286
|
-
|
|
287
|
-
|
|
285
|
+
return key
|
|
286
|
+
? {
|
|
287
|
+
[Object.keys(appStateData.appState)[i]]: appStateData.appState[key] || {}
|
|
288
|
+
}
|
|
289
|
+
: {};
|
|
288
290
|
}
|
|
289
291
|
}
|
|
290
292
|
|
|
@@ -353,9 +355,8 @@ class AppStateHandler extends BaseObject {
|
|
|
353
355
|
}
|
|
354
356
|
shouldApplyState = false;
|
|
355
357
|
}
|
|
356
|
-
const stateToApply = viewId && appStateData?.[viewId] ? appStateData : this._mCurrentAppState;
|
|
357
358
|
const applyViewState = await oRootController.viewState.applyViewState(
|
|
358
|
-
|
|
359
|
+
viewId ? appStateData : this._mCurrentAppState,
|
|
359
360
|
this._createNavigationParameters(oAppData, sNavType),
|
|
360
361
|
skipMerge
|
|
361
362
|
);
|