@sapui5/sap.fe.core 1.136.1 → 1.136.2
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/AppStateHandler.js +9 -2
- package/src/sap/fe/core/AppStateHandler.ts +8 -2
- package/src/sap/fe/core/controllerextensions/EditFlow.js +30 -23
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +33 -31
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +27 -41
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +27 -41
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +16 -2
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +15 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +4 -4
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +22 -15
- package/src/sap/fe/core/controllerextensions/SideEffects.js +3 -2
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +1 -0
- package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.js +9 -5
- package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.tsx +8 -3
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +30 -3
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +26 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +18 -13
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +33 -14
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +5 -3
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +5 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +5 -3
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +10 -2
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +15 -5
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +21 -6
- package/src/sap/fe/core/controls/inlineEditFlow/InlineEditExitDialog.js +144 -0
- package/src/sap/fe/core/controls/inlineEditFlow/{BeforeNavigationDialog.tsx → InlineEditExitDialog.tsx} +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action.js +17 -12
- package/src/sap/fe/core/converters/controls/Common/Action.ts +19 -11
- package/src/sap/fe/core/converters/controls/Common/Table.js +14 -2
- package/src/sap/fe/core/converters/controls/Common/Table.ts +13 -1
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +11 -10
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +13 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +11 -6
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +17 -10
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -3
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +26 -1
- package/src/sap/fe/core/designtime/messagebundle_en_US_saprigi.properties +7 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js +9 -9
- package/src/sap/fe/core/helpers/DeleteHelper.ts +8 -9
- package/src/sap/fe/core/helpers/ModelHelper.js +53 -5
- package/src/sap/fe/core/helpers/ModelHelper.ts +53 -3
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/messagebundle_ar.properties +3 -2
- package/src/sap/fe/core/messagebundle_bg.properties +2 -1
- package/src/sap/fe/core/messagebundle_ca.properties +2 -1
- package/src/sap/fe/core/messagebundle_cnr.properties +2 -1
- package/src/sap/fe/core/messagebundle_cs.properties +4 -3
- package/src/sap/fe/core/messagebundle_cy.properties +2 -1
- package/src/sap/fe/core/messagebundle_da.properties +2 -1
- package/src/sap/fe/core/messagebundle_de.properties +8 -7
- package/src/sap/fe/core/messagebundle_el.properties +4 -3
- package/src/sap/fe/core/messagebundle_en.properties +2 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +2 -1
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +2 -1
- package/src/sap/fe/core/messagebundle_es.properties +5 -4
- package/src/sap/fe/core/messagebundle_es_MX.properties +2 -1
- package/src/sap/fe/core/messagebundle_et.properties +2 -1
- package/src/sap/fe/core/messagebundle_fi.properties +2 -1
- package/src/sap/fe/core/messagebundle_fr.properties +2 -1
- package/src/sap/fe/core/messagebundle_fr_CA.properties +2 -1
- package/src/sap/fe/core/messagebundle_hi.properties +2 -1
- package/src/sap/fe/core/messagebundle_hr.properties +2 -1
- package/src/sap/fe/core/messagebundle_hu.properties +2 -1
- package/src/sap/fe/core/messagebundle_id.properties +2 -1
- package/src/sap/fe/core/messagebundle_it.properties +2 -1
- package/src/sap/fe/core/messagebundle_iw.properties +2 -1
- package/src/sap/fe/core/messagebundle_ja.properties +3 -2
- package/src/sap/fe/core/messagebundle_kk.properties +2 -1
- package/src/sap/fe/core/messagebundle_ko.properties +2 -1
- package/src/sap/fe/core/messagebundle_lt.properties +2 -1
- package/src/sap/fe/core/messagebundle_lv.properties +2 -1
- package/src/sap/fe/core/messagebundle_mk.properties +2 -1
- package/src/sap/fe/core/messagebundle_ms.properties +2 -1
- package/src/sap/fe/core/messagebundle_nl.properties +2 -1
- package/src/sap/fe/core/messagebundle_no.properties +3 -2
- package/src/sap/fe/core/messagebundle_pl.properties +2 -1
- package/src/sap/fe/core/messagebundle_pt.properties +2 -1
- package/src/sap/fe/core/messagebundle_pt_PT.properties +2 -1
- package/src/sap/fe/core/messagebundle_ro.properties +2 -1
- package/src/sap/fe/core/messagebundle_ru.properties +2 -1
- package/src/sap/fe/core/messagebundle_sh.properties +2 -1
- package/src/sap/fe/core/messagebundle_sk.properties +2 -1
- package/src/sap/fe/core/messagebundle_sl.properties +2 -1
- package/src/sap/fe/core/messagebundle_sr.properties +2 -1
- package/src/sap/fe/core/messagebundle_sv.properties +2 -1
- package/src/sap/fe/core/messagebundle_th.properties +2 -1
- package/src/sap/fe/core/messagebundle_tr.properties +2 -1
- package/src/sap/fe/core/messagebundle_uk.properties +2 -1
- package/src/sap/fe/core/messagebundle_vi.properties +2 -1
- package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -1
- package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -1
- package/src/sap/fe/core/rootView/Fcl.controller.js +8 -3
- package/src/sap/fe/core/rootView/Fcl.controller.ts +14 -7
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +8 -2
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +7 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +75 -90
- package/src/sap/fe/core/templating/EntitySetHelper.ts +92 -118
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +0 -68
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +0 -52
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +0 -144
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/editFlow/draft", "sap/m/CheckBox", "sap/m/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/editFlow/draft", "sap/m/CheckBox", "sap/m/Text", "sap/m/MessageToast", "sap/ui/core/message/Message", "sap/ui/core/message/MessageType", "sap/ui/core/Messaging"], function (Log, draft, CheckBox, Text, MessageToast, Message, MessageType, Messaging) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var DeleteOptionTypes = /*#__PURE__*/function (DeleteOptionTypes) {
|
|
@@ -62,16 +62,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/editFlow/draft"
|
|
|
62
62
|
// if at least one of the options is not selected, then the delete button needs to be enabled.
|
|
63
63
|
internalModelContext.setProperty("deleteEnabled", options.some(option => !option.selected));
|
|
64
64
|
}
|
|
65
|
-
if (parameters.silentMode !== true) {
|
|
66
|
-
if (contexts.length === 1) {
|
|
67
|
-
MessageToast.show(resourceModel.getText("C_TRANSACTION_HELPER_DELETE_TOAST_SINGULAR", undefined, entitySetName));
|
|
68
|
-
} else {
|
|
69
|
-
MessageToast.show(resourceModel.getText("C_TRANSACTION_HELPER_DELETE_TOAST_PLURAL", undefined, entitySetName));
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
65
|
|
|
73
66
|
// The MultiValueField does not need resetting of focus like the table, with the resetting we get console errors we avoid trough this check
|
|
74
67
|
if (parameters.parentControl !== undefined && parameters.parentControl.getMetadata().getName() !== "sap.ui.mdc.MultiValueField") {
|
|
68
|
+
if (parameters.silentMode !== true) {
|
|
69
|
+
if (contexts.length === 1) {
|
|
70
|
+
MessageToast.show(resourceModel.getText("C_TRANSACTION_HELPER_DELETE_TOAST_SINGULAR", undefined, entitySetName));
|
|
71
|
+
} else {
|
|
72
|
+
MessageToast.show(resourceModel.getText("C_TRANSACTION_HELPER_DELETE_TOAST_PLURAL", undefined, entitySetName));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
75
|
deleteHelper.setFocusAfterDelete(parameters.parentControl, contexts.length, lastDeletedRowIndex);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -706,4 +706,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/editFlow/draft"
|
|
|
706
706
|
};
|
|
707
707
|
return deleteHelper;
|
|
708
708
|
}, false);
|
|
709
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWxldGVPcHRpb25UeXBlcyIsIkRlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sIiwiZ2V0VXBkYXRlZFNlbGVjdGlvbnMiLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsInR5cGUiLCJzZWxlY3RlZENvbnRleHRzIiwiY29udGV4dHNUb1JlbW92ZSIsInJldFNlbGVjdGVkQ29udGV4dHMiLCJmb3JFYWNoIiwiY29udGV4dCIsImlkeCIsImluZGV4T2YiLCJzcGxpY2UiLCJzZXRQcm9wZXJ0eSIsImNsZWFyU2VsZWN0ZWRDb250ZXh0c0Zvck9wdGlvbiIsIm9wdGlvbiIsImdldFByb3BlcnR5IiwiZGVsZXRhYmxlQ29udGV4dHMiLCJkcmFmdFNpYmxpbmdQYWlycyIsImRyYWZ0c1dpdGhEZWxldGFibGVBY3RpdmUiLCJkcmFmdHMiLCJtYXAiLCJjb250ZXh0UGFpciIsImRyYWZ0IiwibGVuZ3RoIiwiYWZ0ZXJEZWxldGVQcm9jZXNzIiwicGFyYW1ldGVycyIsIm9wdGlvbnMiLCJjb250ZXh0cyIsInJlc291cmNlTW9kZWwiLCJsYXN0RGVsZXRlZFJvd0luZGV4IiwiZW50aXR5U2V0TmFtZSIsInVuZGVmaW5lZCIsInNlbGVjdGVkIiwic29tZSIsInNpbGVudE1vZGUiLCJNZXNzYWdlVG9hc3QiLCJzaG93IiwiZ2V0VGV4dCIsInBhcmVudENvbnRyb2wiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJkZWxldGVIZWxwZXIiLCJzZXRGb2N1c0FmdGVyRGVsZXRlIiwidGFibGUiLCJkZWxldGVkUm93c0NvdW50IiwidGFibGVSb3dzQ291bnQiLCJnZXRSb3dCaW5kaW5nIiwiZ2V0Q291bnQiLCJvcmlnaW5hbFRhYmxlUm93c0NvdW50IiwibmV4dEZvY3VzUm93SW5kZXgiLCJmb2N1c1JvdyIsImZvY3VzIiwiZ2V0TG9ja2VkQ29udGV4dFVzZXIiLCJsb2NrZWRDb250ZXh0IiwiZHJhZnRBZG1pbkRhdGEiLCJnZXRPYmplY3QiLCJnZXRMb2NrZWRPYmplY3RzVGV4dCIsIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyIsImxvY2tlZENvbnRleHRzIiwicmV0VHh0IiwibG9ja2VkVXNlciIsImdldE5vbkRlbGV0YWJsZUFjdGl2ZXNPZkRyYWZ0c1RleHQiLCJudW1iZXJPZkRyYWZ0cyIsInRvdGFsRGVsZXRhYmxlIiwiZ2V0VW5TYXZlZENvbnRleHRVc2VyIiwidW5TYXZlZENvbnRleHQiLCJzTGFzdENoYW5nZWRCeVVzZXIiLCJnZXRVbnNhdmVkQ29udGV4dHNUZXh0IiwidW5TYXZlZENvbnRleHRzIiwiaW5mb1R4dCIsIm9wdGlvblR4dCIsIm9wdGlvbldpdGhvdXRUeHQiLCJsYXN0Q2hhbmdlZEJ5VXNlciIsImdldE5vbkRlbGV0YWJsZVRleHQiLCJtUGFyYW1ldGVycyIsInRvdGFsTnVtRGVsZXRhYmxlQ29udGV4dHMiLCJkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlIiwibm9uRGVsZXRhYmxlQ29udGV4dHMiLCJUZXh0IiwidGV4dCIsImdldENvbmZpcm1lZERlbGV0YWJsZUNvbnRleHQiLCJyZWR1Y2UiLCJyZXN1bHQiLCJkcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZSIsImNvbmNhdCIsImdldERyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlIiwidXBkYXRlRHJhZnRPcHRpb25zRm9yRGVsZXRhYmxlVGV4dHMiLCJ2Q29udGV4dHMiLCJpdGVtcyIsImxvY2tlZENvbnRleHRzVHh0IiwiZGVsZXRhYmxlRHJhZnRJbmZvIiwicHVzaCIsInNpYmxpbmdJbmZvIiwidGFyZ2V0Q29udGV4dCIsIm5vbkRlbGV0YWJsZUV4aXN0cyIsIm5vbkRlbGV0YWJsZVRleHRDdHJsIiwidW5zYXZlZENoYW5nZXNUeHRzIiwiY29udHJvbCIsIkNIRUNLQk9YIiwibm9uRGVsZXRhYmxlQWN0aXZlc09mRHJhZnRzVGV4dCIsIlRFWFQiLCJ1cGRhdGVDb250ZW50Rm9yRGVsZXRlRGlhbG9nIiwic2V0VGV4dCIsIkNoZWNrQm94Iiwic2VsZWN0Iiwib0V2ZW50IiwiY2hlY2tCb3giLCJnZXRTb3VyY2UiLCJnZXRTZWxlY3RlZCIsIl9nZXRPcmlnaW5hbFNlbGVjdGVkUmVjb3JkIiwiY29udGV4dFRvRGVsZXRlIiwicmV0IiwiZmluZCIsImRyYWZ0U2libGluZ1BhaXIiLCJnZXRPcHRpb25zRm9yRGVsZXRhYmxlVGV4dHMiLCJkaXJlY3REZWxldGFibGVDb250ZXh0cyIsImRlc2NyaXB0aW9uIiwib1RhYmxlIiwic0tleSIsImdldFBhcmVudCIsImdldElkZW50aWZpZXJDb2x1bW4iLCJ0eHQiLCJkZXNjcmlwdGlvblBhdGgiLCJwYXRoIiwib0xpbmVDb250ZXh0RGF0YSIsInNLZXlWYWx1ZSIsInNEZXNjcmlwdGlvbiIsImRlbGV0YWJsZU9wdGlvblR4dCIsInVuc2hpZnQiLCJhbGxEZWxldGFibGVUeHQiLCJkZWxldGVEcmFmdHNCZWZvcmVBY3RpdmVzQW5kR2V0RXJyb3JzIiwibWVzc2FnZUhhbmRsZXIiLCJhcHBDb21wb25lbnQiLCJlbmFibGVTdHJpY3RIYW5kbGluZyIsImRyYWZ0RXJyb3JzIiwiUHJvbWlzZSIsImFsbFNldHRsZWQiLCJkZWxldGVEcmFmdCIsImUiLCJMb2ciLCJlcnJvciIsImdldFBhdGgiLCJyZW1vdmVEZXNjZW5kYW50Q29udGV4dHMiLCJ0ZW1wQ29udGV4dHMiLCJwYXJlbnRDb250ZXh0IiwicGFyZW50SW5kZXgiLCJjaGlsZEluZGV4IiwiY2hpbGRDb250ZXh0IiwiaXNBbmNlc3Rvck9mIiwiZmlsdGVyIiwiZGVsZXRlQ29uZmlybUhhbmRsZXIiLCJkcmFmdEVuYWJsZWQiLCJiaW5kaW5nVHlwZSIsIm1lc3NhZ2VIYW5kbGluZ0tleSIsInJlZ2lzdGVyVG9Ib2xkTWVzc2FnZXMiLCJnZXRJbmRleCIsImJlZm9yZURlbGV0ZUNhbGxCYWNrIiwiY29udGV4dHNUb0RlbGV0ZSIsImFsbCIsImRyYWZ0V2l0aERlbGV0YWJsZUFjdGl2ZSIsInJlc2V0Q2hhbmdlcyIsImdldE1vZGVsIiwiZGVsZXRlIiwiZ2V0Q2Fub25pY2FsUGF0aCIsIkVycm9yIiwicmVtb3ZlSG9sZEtleSIsIm9FcnJvciIsImFkZEdlbmVyaWNEZWxldGVGYWlsdXJlTWVzc2FnZSIsInNob3dNZXNzYWdlcyIsInVuSG9sZEtleSIsIk1lc3NhZ2luZyIsImFkZE1lc3NhZ2VzIiwiTWVzc2FnZSIsIm1lc3NhZ2UiLCJNZXNzYWdlVHlwZSIsInRhcmdldCIsInBlcnNpc3RlbnQiLCJjb2RlIiwidGVjaG5pY2FsRGV0YWlscyIsImZlIiwiY2hhbmdlU2V0UHJlVGV4dEZvclNpbmdsZUVycm9yIiwidXBkYXRlSW5mb0Zyb21TaWJsaW5nIiwiaW5mbyIsImRlbGV0YWJsZVBhdGgiLCJzdGF0aWNEZWxldGFibGUiLCJpc0FjdGl2ZSIsImhhc0FjdGl2ZSIsInNpYmxpbmdJbmZvcm1hdGlvbiIsImNvbXB1dGVTaWJsaW5nSW5mb3JtYXRpb24iLCJzaWJsaW5nRGVsZXRhYmxlIiwicmVxdWVzdFByb3BlcnR5IiwiaGFzRHJhZnQiLCJwcm9wZXJ0aWVzVG9GZXRjaCIsImxvY2tlZCIsInBhdGhNYXBwaW5nIiwiZGVsZXRhYmxlIiwiX2UiLCJnZXRDb250ZXh0SW5mb3MiLCJpc1RyYW5zaWVudCIsImlzSW5hY3RpdmUiLCJtZXRhQ29udGV4dCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFDb250ZXh0IiwiaXNEcmFmdFJvb3QiLCJpc0RyYWZ0Tm9kZSIsImlzSW5hY3RpdmVDb250ZXh0IiwiY29udGV4dERhdGEiLCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YSIsIkluUHJvY2Vzc0J5VXNlciIsIkhhc0RyYWZ0RW50aXR5IiwiSXNBY3RpdmVFbnRpdHkiLCJIYXNBY3RpdmVFbnRpdHkiLCJ1cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyIsImZvckNvbnRleHRNZW51IiwiYXJndW1lbnRzIiwiY29udGV4dEluZm9zIiwiYnVja2V0cyIsImtleSIsInZhbHVlIiwiY29udGV4dFBhdGgiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRlbGV0ZUhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFNpYmxpbmdJbmZvcm1hdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9kcmFmdFwiO1xuaW1wb3J0IGRyYWZ0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9kcmFmdFwiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZUhhbmRsZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoZWNrQm94JFNlbGVjdEV2ZW50IH0gZnJvbSBcInNhcC9tL0NoZWNrQm94XCI7XG5pbXBvcnQgQ2hlY2tCb3ggZnJvbSBcInNhcC9tL0NoZWNrQm94XCI7XG5pbXBvcnQgTWVzc2FnZVRvYXN0IGZyb20gXCJzYXAvbS9NZXNzYWdlVG9hc3RcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5cbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQVBJXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBNZXNzYWdpbmcgZnJvbSBcInNhcC91aS9jb3JlL01lc3NhZ2luZ1wiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCIuL01vZGVsSGVscGVyXCI7XG5cbmVudW0gRGVsZXRlT3B0aW9uVHlwZXMge1xuXHRkZWxldGFibGVDb250ZXh0cyA9IFwiZGVsZXRhYmxlQ29udGV4dHNcIixcblx0ZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZSA9IFwiZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZVwiLFxuXHR1blNhdmVkQ29udGV4dHMgPSBcInVuU2F2ZWRDb250ZXh0c1wiLFxuXHRkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlID0gXCJkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlXCIsXG5cdGRyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlID0gXCJkcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZVwiXG59XG5cbmVudW0gRGVsZXRlRGlhbG9nQ29udGVudENvbnRyb2wge1xuXHRDSEVDS0JPWCA9IFwiY2hlY2tCb3hcIixcblx0VEVYVCA9IFwidGV4dFwiXG59XG5cbmV4cG9ydCB0eXBlIERyYWZ0U2libGluZ1BhaXIgPSB7XG5cdGRyYWZ0OiBPRGF0YVY0Q29udGV4dDtcblx0c2libGluZ0luZm86IFNpYmxpbmdJbmZvcm1hdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIERlbGV0ZU9wdGlvbiA9IHtcblx0dHlwZTogRGVsZXRlT3B0aW9uVHlwZXM7XG5cdGNvbnRleHRzOiBPRGF0YVY0Q29udGV4dFtdO1xuXHRzZWxlY3RlZDogYm9vbGVhbjtcblx0dGV4dD86IHN0cmluZztcblx0Y29udHJvbD86IERlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sO1xufTtcblxuZXhwb3J0IHR5cGUgQ29udGV4dEluZm8gPSB7XG5cdGNvbnRleHQ6IE9EYXRhVjRDb250ZXh0O1xuXHRzaWJsaW5nSW5mbzogU2libGluZ0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkO1xuXHRpc0RyYWZ0Um9vdDogYm9vbGVhbjtcblx0aXNEcmFmdE5vZGU6IGJvb2xlYW47XG5cdGlzQWN0aXZlOiBib29sZWFuO1xuXHRoYXNBY3RpdmU6IGJvb2xlYW47XG5cdGhhc0RyYWZ0OiBib29sZWFuO1xuXHRsb2NrZWQ6IGJvb2xlYW47XG5cdGRlbGV0YWJsZTogYm9vbGVhbjtcblx0c2libGluZ0RlbGV0YWJsZTogYm9vbGVhbjtcblx0aXNJbmFjdGl2ZUNvbnRleHQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEcmFmdEFkbWluaXN0cmF0aXZlRGF0YVR5cGUgPSB7XG5cdERyYWZ0VVVJRDogc3RyaW5nO1xuXHRJblByb2Nlc3NCeVVzZXI/OiBzdHJpbmc7XG5cdEluUHJvY2Vzc0J5VXNlckRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXHRDcmVhdGVkQnlVc2VyRGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdENyZWF0ZWRCeVVzZXI/OiBzdHJpbmc7XG5cdExhc3RDaGFuZ2VkQnlVc2VyRGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdExhc3RDaGFuZ2VkQnlVc2VyPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVsZXRlUGFyYW1ldGVycyA9IHtcblx0aW50ZXJuYWxNb2RlbENvbnRleHQ/OiBJbnRlcm5hbE1vZGVsQ29udGV4dCB8IG51bGw7XG5cdG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cz86IG51bWJlcjtcblx0ZW50aXR5U2V0TmFtZT86IHN0cmluZztcblx0cGFyZW50Q29udHJvbD86IENvbnRyb2w7XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgeyBwYXRoOiBzdHJpbmcgfTtcblx0YmVmb3JlRGVsZXRlQ2FsbEJhY2s/OiBGdW5jdGlvbjtcblx0dW5TYXZlZENvbnRleHRzPzogT0RhdGFWNENvbnRleHRbXTtcblx0ZHJhZnRzV2l0aE5vbkRlbGV0YWJsZUFjdGl2ZT86IE9EYXRhVjRDb250ZXh0W107XG5cdGxvY2tlZENvbnRleHRzPzogT0RhdGFWNENvbnRleHRbXTtcblx0ZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZT86IERyYWZ0U2libGluZ1BhaXJbXTtcblx0c2lsZW50TW9kZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEZWxldGVUZXh0SW5mbyA9IHtcblx0aW5mb1R4dD86IHN0cmluZztcblx0b3B0aW9uVHh0Pzogc3RyaW5nO1xuXHRvcHRpb25XaXRob3V0VHh0PzogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIGdldFVwZGF0ZWRTZWxlY3Rpb25zKFxuXHRpbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdHR5cGU6IERlbGV0ZU9wdGlvblR5cGVzLFxuXHRzZWxlY3RlZENvbnRleHRzOiBPRGF0YVY0Q29udGV4dFtdLFxuXHRjb250ZXh0c1RvUmVtb3ZlOiBPRGF0YVY0Q29udGV4dFtdXG4pOiBPRGF0YVY0Q29udGV4dFtdIHtcblx0Y29uc3QgcmV0U2VsZWN0ZWRDb250ZXh0czogT0RhdGFWNENvbnRleHRbXSA9IFsuLi5zZWxlY3RlZENvbnRleHRzXTtcblx0Y29udGV4dHNUb1JlbW92ZS5mb3JFYWNoKChjb250ZXh0OiBPRGF0YVY0Q29udGV4dCkgPT4ge1xuXHRcdGNvbnN0IGlkeCA9IHJldFNlbGVjdGVkQ29udGV4dHMuaW5kZXhPZihjb250ZXh0KTtcblx0XHRpZiAoaWR4ICE9PSAtMSkge1xuXHRcdFx0cmV0U2VsZWN0ZWRDb250ZXh0cy5zcGxpY2UoaWR4LCAxKTtcblx0XHR9XG5cdH0pO1xuXHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eSh0eXBlLCBbXSk7XG5cblx0cmV0dXJuIHJldFNlbGVjdGVkQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGNsZWFyU2VsZWN0ZWRDb250ZXh0c0Zvck9wdGlvbihpbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsIG9wdGlvbjogRGVsZXRlT3B0aW9uKTogdm9pZCB7XG5cdGxldCBzZWxlY3RlZENvbnRleHRzID0gKGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwic2VsZWN0ZWRDb250ZXh0c1wiKSBhcyBPRGF0YVY0Q29udGV4dFtdKSB8fCBbXTtcblxuXHRpZiAob3B0aW9uLnR5cGUgPT09IERlbGV0ZU9wdGlvblR5cGVzLmRlbGV0YWJsZUNvbnRleHRzKSB7XG5cdFx0c2VsZWN0ZWRDb250ZXh0cyA9IGdldFVwZGF0ZWRTZWxlY3Rpb25zKFxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHREZWxldGVPcHRpb25UeXBlcy5kZWxldGFibGVDb250ZXh0cyxcblx0XHRcdHNlbGVjdGVkQ29udGV4dHMsXG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShEZWxldGVPcHRpb25UeXBlcy5kZWxldGFibGVDb250ZXh0cykgfHwgW11cblx0XHQpO1xuXG5cdFx0Y29uc3QgZHJhZnRTaWJsaW5nUGFpcnMgPSBpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShEZWxldGVPcHRpb25UeXBlcy5kcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlKSB8fCBbXTtcblx0XHRjb25zdCBkcmFmdHMgPSBkcmFmdFNpYmxpbmdQYWlycy5tYXAoKGNvbnRleHRQYWlyOiBEcmFmdFNpYmxpbmdQYWlyKSA9PiB7XG5cdFx0XHRyZXR1cm4gY29udGV4dFBhaXIuZHJhZnQ7XG5cdFx0fSk7XG5cdFx0c2VsZWN0ZWRDb250ZXh0cyA9IGdldFVwZGF0ZWRTZWxlY3Rpb25zKFxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHREZWxldGVPcHRpb25UeXBlcy5kcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlLFxuXHRcdFx0c2VsZWN0ZWRDb250ZXh0cyxcblx0XHRcdGRyYWZ0c1xuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgY29udGV4dHNUb1JlbW92ZSA9IGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KG9wdGlvbi50eXBlKSB8fCBbXTtcblx0XHRzZWxlY3RlZENvbnRleHRzID0gZ2V0VXBkYXRlZFNlbGVjdGlvbnMoaW50ZXJuYWxNb2RlbENvbnRleHQsIG9wdGlvbi50eXBlLCBzZWxlY3RlZENvbnRleHRzLCBjb250ZXh0c1RvUmVtb3ZlKTtcblx0fVxuXHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInNlbGVjdGVkQ29udGV4dHNcIiwgc2VsZWN0ZWRDb250ZXh0cyk7XG5cdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwibnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXCIsIHNlbGVjdGVkQ29udGV4dHMubGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gYWZ0ZXJEZWxldGVQcm9jZXNzKFxuXHRwYXJhbWV0ZXJzOiBEZWxldGVQYXJhbWV0ZXJzLFxuXHRvcHRpb25zOiBEZWxldGVPcHRpb25bXSxcblx0Y29udGV4dHM6IE9EYXRhVjRDb250ZXh0W10sXG5cdHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsXG5cdGxhc3REZWxldGVkUm93SW5kZXg6IG51bWJlclxuKTogdm9pZCB7XG5cdGNvbnN0IHsgaW50ZXJuYWxNb2RlbENvbnRleHQsIGVudGl0eVNldE5hbWUgfSA9IHBhcmFtZXRlcnM7XG5cdGlmIChpbnRlcm5hbE1vZGVsQ29udGV4dCkge1xuXHRcdGlmIChpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcImRlbGV0ZUVuYWJsZWRcIikgIT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRvcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4ge1xuXHRcdFx0XHQvLyBpZiBhbiBvcHRpb24gaXMgc2VsZWN0ZWQsIHRoZW4gaXQgaXMgZGVsZXRlZC4gU28sIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZW0gZnJvbSBzZWxlY3RlZCBjb250ZXh0cy5cblx0XHRcdFx0aWYgKG9wdGlvbi5zZWxlY3RlZCkge1xuXHRcdFx0XHRcdGNsZWFyU2VsZWN0ZWRDb250ZXh0c0Zvck9wdGlvbihpbnRlcm5hbE1vZGVsQ29udGV4dCwgb3B0aW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgb3B0aW9ucyBpcyBub3Qgc2VsZWN0ZWQsIHRoZW4gdGhlIGRlbGV0ZSBidXR0b24gbmVlZHMgdG8gYmUgZW5hYmxlZC5cblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcblx0XHRcdFwiZGVsZXRlRW5hYmxlZFwiLFxuXHRcdFx0b3B0aW9ucy5zb21lKChvcHRpb24pID0+ICFvcHRpb24uc2VsZWN0ZWQpXG5cdFx0KTtcblx0fVxuXG5cdGlmIChwYXJhbWV0ZXJzLnNpbGVudE1vZGUgIT09IHRydWUpIHtcblx0XHRpZiAoY29udGV4dHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9ERUxFVEVfVE9BU1RfU0lOR1VMQVJcIiwgdW5kZWZpbmVkLCBlbnRpdHlTZXROYW1lKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdE1lc3NhZ2VUb2FzdC5zaG93KHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0RFTEVURV9UT0FTVF9QTFVSQUxcIiwgdW5kZWZpbmVkLCBlbnRpdHlTZXROYW1lKSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gVGhlIE11bHRpVmFsdWVGaWVsZCBkb2VzIG5vdCBuZWVkIHJlc2V0dGluZyBvZiBmb2N1cyBsaWtlIHRoZSB0YWJsZSwgd2l0aCB0aGUgcmVzZXR0aW5nIHdlIGdldCBjb25zb2xlIGVycm9ycyB3ZSBhdm9pZCB0cm91Z2ggdGhpcyBjaGVja1xuXHRpZiAocGFyYW1ldGVycy5wYXJlbnRDb250cm9sICE9PSB1bmRlZmluZWQgJiYgcGFyYW1ldGVycy5wYXJlbnRDb250cm9sLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpICE9PSBcInNhcC51aS5tZGMuTXVsdGlWYWx1ZUZpZWxkXCIpIHtcblx0XHRkZWxldGVIZWxwZXIuc2V0Rm9jdXNBZnRlckRlbGV0ZShwYXJhbWV0ZXJzLnBhcmVudENvbnRyb2wgYXMgVGFibGUsIGNvbnRleHRzLmxlbmd0aCwgbGFzdERlbGV0ZWRSb3dJbmRleCk7XG5cdH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2V0Rm9jdXNBZnRlckRlbGV0ZSh0YWJsZTogVGFibGUsIGRlbGV0ZWRSb3dzQ291bnQ6IG51bWJlciwgbGFzdERlbGV0ZWRSb3dJbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IHRhYmxlUm93c0NvdW50ID0gdGFibGUuZ2V0Um93QmluZGluZz8uKCk/LmdldENvdW50KCk7XG5cdGNvbnN0IG9yaWdpbmFsVGFibGVSb3dzQ291bnQgPSAodGFibGVSb3dzQ291bnQgPz8gMCkgKyBkZWxldGVkUm93c0NvdW50O1xuXHRsZXQgbmV4dEZvY3VzUm93SW5kZXg7XG5cblx0aWYgKGxhc3REZWxldGVkUm93SW5kZXggIT09IC0xICYmIHRhYmxlUm93c0NvdW50ICE9PSB1bmRlZmluZWQgJiYgdGFibGVSb3dzQ291bnQgPiAwKSB7XG5cdFx0Ly9JZiB0aGUgbGFzdCByb3cgaXMgZGVsZXRlZCwgbW92ZSB0aGUgZm9jdXMgdG8gcHJldmlvdXMgcm93IHRvIGl0XG5cdFx0aWYgKGxhc3REZWxldGVkUm93SW5kZXggPT09IG9yaWdpbmFsVGFibGVSb3dzQ291bnQgLSAxKSB7XG5cdFx0XHRuZXh0Rm9jdXNSb3dJbmRleCA9IHRhYmxlUm93c0NvdW50IC0gMTtcblx0XHRcdC8vRm9yIHRoZSBub3JtYWwgc2NlbmFyaW8sIG1vdmUgdGhlIGZvY3VzIHRvIHRoZSBuZXh0IHJvd1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRuZXh0Rm9jdXNSb3dJbmRleCA9IGxhc3REZWxldGVkUm93SW5kZXggLSBkZWxldGVkUm93c0NvdW50ICsgMTtcblx0XHR9XG5cdFx0YXdhaXQgdGFibGUuZm9jdXNSb3cobmV4dEZvY3VzUm93SW5kZXgsIGZhbHNlKTtcblx0fSBlbHNlIHtcblx0XHQvLyBGb3IgemVybyByb3dzIG9yIGRlZmF1bHQgY2FzZSwgbW92ZSBmb2N1cyB0byB0YWJsZVxuXHRcdHRhYmxlLmZvY3VzKCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0TG9ja2VkQ29udGV4dFVzZXIobG9ja2VkQ29udGV4dDogT0RhdGFWNENvbnRleHQpOiBzdHJpbmcge1xuXHRjb25zdCBkcmFmdEFkbWluRGF0YSA9IGxvY2tlZENvbnRleHQuZ2V0T2JqZWN0KClbXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YVwiXSBhcyBEcmFmdEFkbWluaXN0cmF0aXZlRGF0YVR5cGU7XG5cdHJldHVybiAoZHJhZnRBZG1pbkRhdGEgJiYgZHJhZnRBZG1pbkRhdGFbXCJJblByb2Nlc3NCeVVzZXJcIl0pIHx8IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGdldExvY2tlZE9iamVjdHNUZXh0KHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsIG51bWJlck9mU2VsZWN0ZWRDb250ZXh0czogbnVtYmVyLCBsb2NrZWRDb250ZXh0czogT0RhdGFWNENvbnRleHRbXSk6IHN0cmluZyB7XG5cdGxldCByZXRUeHQgPSBcIlwiO1xuXG5cdGlmIChudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMgPT09IDEgJiYgbG9ja2VkQ29udGV4dHMubGVuZ3RoID09PSAxKSB7XG5cdFx0Ly9vbmx5IG9uZSB1bnNhdmVkIG9iamVjdFxuXHRcdGNvbnN0IGxvY2tlZFVzZXIgPSBnZXRMb2NrZWRDb250ZXh0VXNlcihsb2NrZWRDb250ZXh0c1swXSk7XG5cdFx0cmV0VHh0ID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9TSU5HTEVfT0JKRUNUX0xPQ0tFRFwiLCBbbG9ja2VkVXNlcl0pO1xuXHR9IGVsc2UgaWYgKGxvY2tlZENvbnRleHRzLmxlbmd0aCA9PSAxKSB7XG5cdFx0Y29uc3QgbG9ja2VkVXNlciA9IGdldExvY2tlZENvbnRleHRVc2VyKGxvY2tlZENvbnRleHRzWzBdKTtcblx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX09CSkVDVElORk9fQU5EX09ORV9PQkpFQ1RfTE9DS0VEXCIsIFtcblx0XHRcdG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyxcblx0XHRcdGxvY2tlZFVzZXJcblx0XHRdKTtcblx0fSBlbHNlIGlmIChsb2NrZWRDb250ZXh0cy5sZW5ndGggPiAxKSB7XG5cdFx0cmV0VHh0ID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9PQkpFQ1RJTkZPX0FORF9GRVdfT0JKRUNUU19MT0NLRURcIiwgW1xuXHRcdFx0bG9ja2VkQ29udGV4dHMubGVuZ3RoLFxuXHRcdFx0bnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXG5cdFx0XSk7XG5cdH1cblxuXHRyZXR1cm4gcmV0VHh0O1xufVxuXG5mdW5jdGlvbiBnZXROb25EZWxldGFibGVBY3RpdmVzT2ZEcmFmdHNUZXh0KHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsIG51bWJlck9mRHJhZnRzOiBudW1iZXIsIHRvdGFsRGVsZXRhYmxlOiBudW1iZXIpOiBzdHJpbmcge1xuXHRsZXQgcmV0VHh0ID0gXCJcIjtcblxuXHRpZiAodG90YWxEZWxldGFibGUgPT09IG51bWJlck9mRHJhZnRzKSB7XG5cdFx0aWYgKG51bWJlck9mRHJhZnRzID09PSAxKSB7XG5cdFx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9PTkxZX0RSQUZUX09GX05PTl9ERUxFVEFCTEVfQUNUSVZFXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9PTkxZX0RSQUZUU19PRl9OT05fREVMRVRBQkxFX0FDVElWRVwiKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAobnVtYmVyT2ZEcmFmdHMgPT09IDEpIHtcblx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9EUkFGVF9PRl9OT05fREVMRVRBQkxFX0FDVElWRVwiKTtcblx0fSBlbHNlIHtcblx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9EUkFGVFNfT0ZfTk9OX0RFTEVUQUJMRV9BQ1RJVkVcIik7XG5cdH1cblxuXHRyZXR1cm4gcmV0VHh0O1xufVxuXG5mdW5jdGlvbiBnZXRVblNhdmVkQ29udGV4dFVzZXIodW5TYXZlZENvbnRleHQ6IE9EYXRhVjRDb250ZXh0KTogc3RyaW5nIHtcblx0Y29uc3QgZHJhZnRBZG1pbkRhdGEgPSB1blNhdmVkQ29udGV4dC5nZXRPYmplY3QoKVtcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhXCJdIGFzIERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhVHlwZTtcblx0bGV0IHNMYXN0Q2hhbmdlZEJ5VXNlciA9IFwiXCI7XG5cdGlmIChkcmFmdEFkbWluRGF0YSkge1xuXHRcdHNMYXN0Q2hhbmdlZEJ5VXNlciA9IGRyYWZ0QWRtaW5EYXRhW1wiTGFzdENoYW5nZWRCeVVzZXJEZXNjcmlwdGlvblwiXSB8fCBkcmFmdEFkbWluRGF0YVtcIkxhc3RDaGFuZ2VkQnlVc2VyXCJdIHx8IFwiXCI7XG5cdH1cblxuXHRyZXR1cm4gc0xhc3RDaGFuZ2VkQnlVc2VyO1xufVxuXG5mdW5jdGlvbiBnZXRVbnNhdmVkQ29udGV4dHNUZXh0KFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsLFxuXHRudW1iZXJPZlNlbGVjdGVkQ29udGV4dHM6IG51bWJlcixcblx0dW5TYXZlZENvbnRleHRzOiBPRGF0YVY0Q29udGV4dFtdLFxuXHR0b3RhbERlbGV0YWJsZTogbnVtYmVyXG4pOiBEZWxldGVUZXh0SW5mbyB7XG5cdGxldCBpbmZvVHh0ID0gXCJcIixcblx0XHRvcHRpb25UeHQgPSBcIlwiLFxuXHRcdG9wdGlvbldpdGhvdXRUeHQgPSBmYWxzZTtcblx0aWYgKG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA9PT0gMSAmJiB1blNhdmVkQ29udGV4dHMubGVuZ3RoID09PSAxKSB7XG5cdFx0Ly9vbmx5IG9uZSB1bnNhdmVkIG9iamVjdCBhcmUgc2VsZWN0ZWRcblx0XHRjb25zdCBsYXN0Q2hhbmdlZEJ5VXNlciA9IGdldFVuU2F2ZWRDb250ZXh0VXNlcih1blNhdmVkQ29udGV4dHNbMF0pO1xuXHRcdGluZm9UeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX1VOU0FWRURfQ0hBTkdFU1wiLCBbbGFzdENoYW5nZWRCeVVzZXJdKTtcblx0XHRvcHRpb25XaXRob3V0VHh0ID0gdHJ1ZTtcblx0fSBlbHNlIGlmIChudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMgPT09IHVuU2F2ZWRDb250ZXh0cy5sZW5ndGgpIHtcblx0XHQvL29ubHkgbXVsdGlwbGUgdW5zYXZlZCBvYmplY3RzIGFyZSBzZWxlY3RlZFxuXHRcdGluZm9UeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX1VOU0FWRURfQ0hBTkdFU19NVUxUSVBMRV9PQkpFQ1RTXCIpO1xuXHRcdG9wdGlvbldpdGhvdXRUeHQgPSB0cnVlO1xuXHR9IGVsc2UgaWYgKHRvdGFsRGVsZXRhYmxlID09PSB1blNhdmVkQ29udGV4dHMubGVuZ3RoKSB7XG5cdFx0Ly8gbm9uLWRlbGV0YWJsZS9sb2NrZWQgZXhpc3RzLCBhbGwgZGVsZXRhYmxlIGFyZSB1bnNhdmVkIGJ5IG90aGVyc1xuXHRcdGlmICh1blNhdmVkQ29udGV4dHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRjb25zdCBsYXN0Q2hhbmdlZEJ5VXNlciA9IGdldFVuU2F2ZWRDb250ZXh0VXNlcih1blNhdmVkQ29udGV4dHNbMF0pO1xuXHRcdFx0aW5mb1R4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfVU5TQVZFRF9BTkRfRkVXX09CSkVDVFNfTE9DS0VEX1NJTkdVTEFSXCIsIFtcblx0XHRcdFx0bGFzdENoYW5nZWRCeVVzZXJcblx0XHRcdF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpbmZvVHh0ID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9VTlNBVkVEX0FORF9GRVdfT0JKRUNUU19MT0NLRURfUExVUkFMXCIpO1xuXHRcdH1cblx0XHRvcHRpb25XaXRob3V0VHh0ID0gdHJ1ZTtcblx0fSBlbHNlIGlmICh0b3RhbERlbGV0YWJsZSA+IHVuU2F2ZWRDb250ZXh0cy5sZW5ndGgpIHtcblx0XHQvLyBub24tZGVsZXRhYmxlL2xvY2tlZCBleGlzdHMsIGRlbGV0YWJsZSBpbmNsdWRlIHVuc2F2ZWQgYW5kIG90aGVyIHR5cGVzLlxuXHRcdGlmICh1blNhdmVkQ29udGV4dHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRjb25zdCBsYXN0Q2hhbmdlZEJ5VXNlciA9IGdldFVuU2F2ZWRDb250ZXh0VXNlcih1blNhdmVkQ29udGV4dHNbMF0pO1xuXHRcdFx0b3B0aW9uVHh0ID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9PQkpFQ1RJTkZPX0FORF9GRVdfT0JKRUNUU19VTlNBVkVEX1NJTkdVTEFSXCIsIFtcblx0XHRcdFx0bGFzdENoYW5nZWRCeVVzZXJcblx0XHRcdF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvcHRpb25UeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX09CSkVDVElORk9fQU5EX0ZFV19PQkpFQ1RTX1VOU0FWRURfUExVUkFMXCIpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IGluZm9UeHQsIG9wdGlvblR4dCwgb3B0aW9uV2l0aG91dFR4dCB9O1xufVxuXG5mdW5jdGlvbiBnZXROb25EZWxldGFibGVUZXh0KFxuXHRtUGFyYW1ldGVyczogRGVsZXRlUGFyYW1ldGVycyxcblx0dG90YWxOdW1EZWxldGFibGVDb250ZXh0czogbnVtYmVyLFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsXG4pOiBUZXh0IHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgeyBudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMsIGVudGl0eVNldE5hbWUsIGxvY2tlZENvbnRleHRzID0gW10sIGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUgPSBbXSB9ID0gbVBhcmFtZXRlcnM7XG5cdGNvbnN0IG5vbkRlbGV0YWJsZUNvbnRleHRzID1cblx0XHRudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMhIC0gKGxvY2tlZENvbnRleHRzLmxlbmd0aCArIHRvdGFsTnVtRGVsZXRhYmxlQ29udGV4dHMgLSBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlLmxlbmd0aCk7XG5cdGxldCByZXRUeHQgPSBcIlwiO1xuXG5cdGlmIChcblx0XHRub25EZWxldGFibGVDb250ZXh0cyA+IDAgJiZcblx0XHQodG90YWxOdW1EZWxldGFibGVDb250ZXh0cyA9PT0gMCB8fCBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlLmxlbmd0aCA9PT0gdG90YWxOdW1EZWxldGFibGVDb250ZXh0cylcblx0KSB7XG5cdFx0Ly8gMS4gTm9uZSBvZiB0aGUgY2NvbnRleHRzIGFyZSBkZWxldGFibGVcblx0XHQvLyAyLiBPbmx5IGRyYWZ0cyBvZiBub24gZGVsZXRhYmxlIGNvbnRleHRzIGV4aXN0LlxuXHRcdGlmIChsb2NrZWRDb250ZXh0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHQvLyBMb2NrZWQgY29udGV4dHMgZXhpc3Rcblx0XHRcdGlmIChub25EZWxldGFibGVDb250ZXh0cyA9PT0gMSkge1xuXHRcdFx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX0FMTF9SRU1BSU5JTkdfTk9OX0RFTEVUQUJMRV9TSU5HVUxBUlwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldFR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfQUxMX1JFTUFJTklOR19OT05fREVMRVRBQkxFX1BMVVJBTFwiKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKG5vbkRlbGV0YWJsZUNvbnRleHRzID09PSAxKSB7XG5cdFx0XHQvLyBPbmx5IHB1cmUgbm9uLWRlbGV0YWJsZSBjb250ZXh0cyBleGlzdCBzaW5nbGVcblx0XHRcdHJldFR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcblx0XHRcdFx0XCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX1NJTkdMRV9BTkRfT05FX09CSkVDVF9OT05fREVMRVRBQkxFXCIsXG5cdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0ZW50aXR5U2V0TmFtZVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gT25seSBwdXJlIG5vbi1kZWxldGFibGUgY29udGV4dHMgZXhpc3QgbXVsdGlwbGVcblx0XHRcdHJldFR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcblx0XHRcdFx0XCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX01VTFRJUExFX0FORF9BTExfT0JKRUNUX05PTl9ERUxFVEFCTEVcIixcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRlbnRpdHlTZXROYW1lXG5cdFx0XHQpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChub25EZWxldGFibGVDb250ZXh0cyA9PT0gMSkge1xuXHRcdC8vIGRlbGV0YWJsZSBhbmQgbm9uLWRlbGV0YWJsZSBleGlzdHMgdG9nZXRoZXIsIHNpbmdsZVxuXHRcdHJldFR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcblx0XHRcdFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9PQkpFQ1RJTkZPX0FORF9PTkVfT0JKRUNUX05PTl9ERUxFVEFCTEVcIixcblx0XHRcdFtudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNdLFxuXHRcdFx0ZW50aXR5U2V0TmFtZVxuXHRcdCk7XG5cdH0gZWxzZSBpZiAobm9uRGVsZXRhYmxlQ29udGV4dHMgPiAxKSB7XG5cdFx0Ly8gZGVsZXRhYmxlIGFuZCBub24tZGVsZXRhYmxlIGV4aXN0cyB0b2dldGhlciwgbXVsdGlwbGVcblx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXG5cdFx0XHRcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUSU5GT19BTkRfRkVXX09CSkVDVFNfTk9OX0RFTEVUQUJMRVwiLFxuXHRcdFx0W25vbkRlbGV0YWJsZUNvbnRleHRzLCBudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNdLFxuXHRcdFx0ZW50aXR5U2V0TmFtZVxuXHRcdCk7XG5cdH1cblxuXHRyZXR1cm4gcmV0VHh0ID8gbmV3IFRleHQoeyB0ZXh0OiByZXRUeHQgfSkgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldENvbmZpcm1lZERlbGV0YWJsZUNvbnRleHQoY29udGV4dHM6IE9EYXRhVjRDb250ZXh0W10sIG9wdGlvbnM6IERlbGV0ZU9wdGlvbltdKTogT0RhdGFWNENvbnRleHRbXSB7XG5cdHJldHVybiBvcHRpb25zLnJlZHVjZSgocmVzdWx0LCBvcHRpb24pID0+IHtcblx0XHRyZXR1cm4gb3B0aW9uLnNlbGVjdGVkICYmIG9wdGlvbi50eXBlICE9PSBEZWxldGVPcHRpb25UeXBlcy5kcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZSA/IHJlc3VsdC5jb25jYXQob3B0aW9uLmNvbnRleHRzKSA6IHJlc3VsdDtcblx0fSwgY29udGV4dHMpO1xufVxuXG5mdW5jdGlvbiBnZXREcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZShvcHRpb25zOiBEZWxldGVPcHRpb25bXSk6IE9EYXRhVjRDb250ZXh0W10ge1xuXHRjb25zdCBjb250ZXh0czogT0RhdGFWNENvbnRleHRbXSA9IFtdO1xuXHRyZXR1cm4gb3B0aW9ucy5yZWR1Y2UoKHJlc3VsdCwgb3B0aW9uKSA9PiB7XG5cdFx0cmV0dXJuIG9wdGlvbi5zZWxlY3RlZCAmJiBvcHRpb24udHlwZSA9PT0gRGVsZXRlT3B0aW9uVHlwZXMuZHJhZnRzVG9EZWxldGVCZWZvcmVBY3RpdmUgPyByZXN1bHQuY29uY2F0KG9wdGlvbi5jb250ZXh0cykgOiByZXN1bHQ7XG5cdH0sIGNvbnRleHRzKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlRHJhZnRPcHRpb25zRm9yRGVsZXRhYmxlVGV4dHMoXG5cdG1QYXJhbWV0ZXJzOiBEZWxldGVQYXJhbWV0ZXJzLFxuXHR2Q29udGV4dHM6IE9EYXRhVjRDb250ZXh0W10sXG5cdHRvdGFsRGVsZXRhYmxlOiBudW1iZXIsXG5cdHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsXG5cdGl0ZW1zOiBDb250cm9sW10sXG5cdG9wdGlvbnM6IERlbGV0ZU9wdGlvbltdXG4pOiB2b2lkIHtcblx0bGV0IHsgbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzLCBkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlLCB1blNhdmVkQ29udGV4dHMsIGxvY2tlZENvbnRleHRzLCBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlIH0gPVxuXHRcdG1QYXJhbWV0ZXJzO1xuXHRkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlID8/PSBbXTtcblx0dW5TYXZlZENvbnRleHRzID8/PSBbXTtcblx0bG9ja2VkQ29udGV4dHMgPz89IFtdO1xuXHRkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlID8/PSBbXTtcblx0bnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzID8/PSAwO1xuXHRsZXQgbG9ja2VkQ29udGV4dHNUeHQgPSBcIlwiO1xuXG5cdC8vIGRyYWZ0cyB3aXRoIGFjdGl2ZVxuXHRpZiAoZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZS5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3QgZHJhZnRzVG9EZWxldGVCZWZvcmVBY3RpdmU6IE9EYXRhVjRDb250ZXh0W10gPSBbXTtcblx0XHRkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlLmZvckVhY2goKGRlbGV0YWJsZURyYWZ0SW5mbzogRHJhZnRTaWJsaW5nUGFpcikgPT4ge1xuXHRcdFx0Ly8gSW4gZWl0aGVyIGNhc2VzLCBpZiBhbiBvd24gZHJhZnQgaXMgbG9ja2VkIG9yIG5vdCB0aGUgZHJhZnQgbmVlZHMgdG8gYmUgZGlzY2FyZGVkIGJlZm9yZSBkZWxldGluZyBhY3RpdmUgcmVjb3JkLlxuXHRcdFx0ZHJhZnRzVG9EZWxldGVCZWZvcmVBY3RpdmUucHVzaChkZWxldGFibGVEcmFmdEluZm8uZHJhZnQpO1xuXHRcdFx0dkNvbnRleHRzLnB1c2goZGVsZXRhYmxlRHJhZnRJbmZvLnNpYmxpbmdJbmZvLnRhcmdldENvbnRleHQpO1xuXHRcdH0pO1xuXHRcdGlmIChkcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRvcHRpb25zLnB1c2goe1xuXHRcdFx0XHR0eXBlOiBEZWxldGVPcHRpb25UeXBlcy5kcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZSxcblx0XHRcdFx0Y29udGV4dHM6IGRyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlLFxuXHRcdFx0XHRzZWxlY3RlZDogdHJ1ZVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gaXRlbXMgbG9ja2VkIG1zZ1xuXHRpZiAobG9ja2VkQ29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdGxvY2tlZENvbnRleHRzVHh0ID0gZGVsZXRlSGVscGVyLmdldExvY2tlZE9iamVjdHNUZXh0KHJlc291cmNlTW9kZWwsIG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cywgbG9ja2VkQ29udGV4dHMpIHx8IFwiXCI7XG5cdFx0aXRlbXMucHVzaChuZXcgVGV4dCh7IHRleHQ6IGxvY2tlZENvbnRleHRzVHh0IH0pKTtcblx0fVxuXG5cdC8vIG5vbiBkZWxldGFibGUgbXNnXG5cdGNvbnN0IG5vbkRlbGV0YWJsZUV4aXN0cyA9IG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyAhPSB0b3RhbERlbGV0YWJsZSAtIGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUubGVuZ3RoICsgbG9ja2VkQ29udGV4dHMubGVuZ3RoO1xuXHRjb25zdCBub25EZWxldGFibGVUZXh0Q3RybCA9IG5vbkRlbGV0YWJsZUV4aXN0cyAmJiBkZWxldGVIZWxwZXIuZ2V0Tm9uRGVsZXRhYmxlVGV4dChtUGFyYW1ldGVycywgdG90YWxEZWxldGFibGUsIHJlc291cmNlTW9kZWwpO1xuXHRpZiAobm9uRGVsZXRhYmxlVGV4dEN0cmwpIHtcblx0XHRpdGVtcy5wdXNoKG5vbkRlbGV0YWJsZVRleHRDdHJsKTtcblx0fVxuXG5cdC8vIG9wdGlvbjogdW5zYXZlZCBjaGFuZ2VzIGJ5IG90aGVyc1xuXHRpZiAodW5TYXZlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcblx0XHRjb25zdCB1bnNhdmVkQ2hhbmdlc1R4dHMgPVxuXHRcdFx0ZGVsZXRlSGVscGVyLmdldFVuc2F2ZWRDb250ZXh0c1RleHQocmVzb3VyY2VNb2RlbCwgbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzLCB1blNhdmVkQ29udGV4dHMsIHRvdGFsRGVsZXRhYmxlKSB8fCB7fTtcblx0XHRpZiAodW5zYXZlZENoYW5nZXNUeHRzLmluZm9UeHQpIHtcblx0XHRcdGl0ZW1zLnB1c2gobmV3IFRleHQoeyB0ZXh0OiB1bnNhdmVkQ2hhbmdlc1R4dHMuaW5mb1R4dCB9KSk7XG5cdFx0fVxuXHRcdGlmICh1bnNhdmVkQ2hhbmdlc1R4dHMub3B0aW9uVHh0IHx8IHVuc2F2ZWRDaGFuZ2VzVHh0cy5vcHRpb25XaXRob3V0VHh0KSB7XG5cdFx0XHRvcHRpb25zLnB1c2goe1xuXHRcdFx0XHR0eXBlOiBEZWxldGVPcHRpb25UeXBlcy51blNhdmVkQ29udGV4dHMsXG5cdFx0XHRcdGNvbnRleHRzOiB1blNhdmVkQ29udGV4dHMsXG5cdFx0XHRcdHRleHQ6IHVuc2F2ZWRDaGFuZ2VzVHh0cy5vcHRpb25UeHQsXG5cdFx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdFx0XHRjb250cm9sOiBEZWxldGVEaWFsb2dDb250ZW50Q29udHJvbC5DSEVDS0JPWFxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gb3B0aW9uOiBkcmFmdHMgd2l0aCBhY3RpdmUgbm90IGRlbGV0YWJsZVxuXHRpZiAoZHJhZnRzV2l0aE5vbkRlbGV0YWJsZUFjdGl2ZS5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3Qgbm9uRGVsZXRhYmxlQWN0aXZlc09mRHJhZnRzVGV4dCA9XG5cdFx0XHRkZWxldGVIZWxwZXIuZ2V0Tm9uRGVsZXRhYmxlQWN0aXZlc09mRHJhZnRzVGV4dChyZXNvdXJjZU1vZGVsLCBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlLmxlbmd0aCwgdG90YWxEZWxldGFibGUpIHx8IFwiXCI7XG5cdFx0aWYgKG5vbkRlbGV0YWJsZUFjdGl2ZXNPZkRyYWZ0c1RleHQpIHtcblx0XHRcdG9wdGlvbnMucHVzaCh7XG5cdFx0XHRcdHR5cGU6IERlbGV0ZU9wdGlvblR5cGVzLmRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUsXG5cdFx0XHRcdGNvbnRleHRzOiBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlLFxuXHRcdFx0XHR0ZXh0OiBub25EZWxldGFibGVBY3RpdmVzT2ZEcmFmdHNUZXh0LFxuXHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0Y29udHJvbDogdG90YWxEZWxldGFibGUgPiAwID8gRGVsZXRlRGlhbG9nQ29udGVudENvbnRyb2wuQ0hFQ0tCT1ggOiBEZWxldGVEaWFsb2dDb250ZW50Q29udHJvbC5URVhUXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQ29udGVudEZvckRlbGV0ZURpYWxvZyhvcHRpb25zOiBEZWxldGVPcHRpb25bXSwgaXRlbXM6IENvbnRyb2xbXSk6IHZvaWQge1xuXHRpZiAob3B0aW9ucy5sZW5ndGggPT09IDEpIHtcblx0XHQvLyBTaW5nbGUgb3B0aW9uIGRvZXNuJ3QgbmVlZCBjaGVja0JveFxuXHRcdGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNbMF07XG5cdFx0aWYgKG9wdGlvbi50ZXh0KSB7XG5cdFx0XHRjb25zdCB0ZXh0ID0gbmV3IFRleHQoKTtcblx0XHRcdHRleHQuc2V0VGV4dChvcHRpb24udGV4dCk7XG5cdFx0XHRpdGVtcy5wdXNoKHRleHQpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChvcHRpb25zLmxlbmd0aCA+IDEpIHtcblx0XHQvLyBNdWx0aXBsZSBPcHRpb25zXG5cblx0XHQvLyBUZXh0c1xuXHRcdG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBEZWxldGVPcHRpb24pID0+IHtcblx0XHRcdGlmIChvcHRpb24uY29udHJvbCA9PT0gXCJ0ZXh0XCIgJiYgb3B0aW9uLnRleHQpIHtcblx0XHRcdFx0Y29uc3QgdGV4dCA9IG5ldyBUZXh0KCk7XG5cdFx0XHRcdHRleHQuc2V0VGV4dChvcHRpb24udGV4dCk7XG5cdFx0XHRcdGl0ZW1zLnB1c2godGV4dCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Ly8gQ2hlY2tCb3hzXG5cdFx0b3B0aW9ucy5mb3JFYWNoKChvcHRpb246IERlbGV0ZU9wdGlvbikgPT4ge1xuXHRcdFx0aWYgKG9wdGlvbi5jb250cm9sID09PSBcImNoZWNrQm94XCIgJiYgb3B0aW9uLnRleHQpIHtcblx0XHRcdFx0aXRlbXMucHVzaChcblx0XHRcdFx0XHRuZXcgQ2hlY2tCb3goe1xuXHRcdFx0XHRcdFx0dGV4dDogb3B0aW9uLnRleHQsXG5cdFx0XHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdHNlbGVjdDogZnVuY3Rpb24gKG9FdmVudDogQ2hlY2tCb3gkU2VsZWN0RXZlbnQpOiB2b2lkIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgY2hlY2tCb3ggPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNlbGVjdGVkID0gY2hlY2tCb3guZ2V0U2VsZWN0ZWQoKTtcblx0XHRcdFx0XHRcdFx0b3B0aW9uLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuXG4vKipcbiAqIEdldCB0aGUgb3JpZ2luYWwgcmVjb3JkIHNlbGVjdGVkIG9uIHRoZSBVSS5cbiAqXG4gKiBJbiB0aGUgY2FzZSB0aGUgY29udGV4dCB0byBkZWxldGUgaXMgYW4gYWN0aXZlIHJlY29yZCBidXQgdGhlIHNlbGVjdGVkIGNvbnRleHQgaXMgYSBkcmFmdCByZWNvcmQuXG4gKiBAcGFyYW0gbVBhcmFtZXRlcnMgRGVsZXRlIHBhcmFtZXRlcnMgYW5kIGluZm9ybWF0aW9uIG9mIHNlbGVjdGVkIGNvbnRleHRzLlxuICogQHBhcmFtIGNvbnRleHRUb0RlbGV0ZSBPRGF0YVY0Q29udGV4dCB0byBjaGVjay5cbiAqIEByZXR1cm5zIE9EYXRhVjRDb250ZXh0IGZvciBkZWxldGUuXG4gKi9cbmZ1bmN0aW9uIF9nZXRPcmlnaW5hbFNlbGVjdGVkUmVjb3JkKG1QYXJhbWV0ZXJzOiBEZWxldGVQYXJhbWV0ZXJzLCBjb250ZXh0VG9EZWxldGU6IE9EYXRhVjRDb250ZXh0KTogT0RhdGFWNENvbnRleHQge1xuXHRjb25zdCB7IGRyYWZ0c1dpdGhEZWxldGFibGVBY3RpdmUgfSA9IG1QYXJhbWV0ZXJzO1xuXHRjb25zdCByZXQgPSBkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlPy5maW5kKChkcmFmdFNpYmxpbmdQYWlyKSA9PiBkcmFmdFNpYmxpbmdQYWlyLnNpYmxpbmdJbmZvLnRhcmdldENvbnRleHQgPT09IGNvbnRleHRUb0RlbGV0ZSk7XG5cdHJldHVybiByZXQ/LmRyYWZ0ID8gcmV0LmRyYWZ0IDogY29udGV4dFRvRGVsZXRlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgcG9zc2libGUgb3B0aW9ucyBmb3IgZGVsZXRpb24gb2YgdGhlIHNlbGVjdGVkIGNvbnRleHRzLlxuICogQHBhcmFtIG1QYXJhbWV0ZXJzIERlbGV0ZSBwYXJhbWV0ZXJzIGFuZCBpbmZvcm1hdGlvbiBvZiBzZWxlY3RlZCBjb250ZXh0cy5cbiAqIEBwYXJhbSBkaXJlY3REZWxldGFibGVDb250ZXh0cyBDb250ZXh0cyB0aGF0IGNhbiBiZSBkZWxldGFibGUgZGlyZWN0bHkuXG4gKiBAcGFyYW0gcmVzb3VyY2VNb2RlbCBSZXNvdXJjZSBtb2RlbC5cbiAqIEByZXR1cm5zIE9wdGlvbnMgdGhhdCBhcmUgcG9zc2libGUgZm9yIHNlbGVjdGVkIHJlY29yZHMuXG4gKi9cbmZ1bmN0aW9uIGdldE9wdGlvbnNGb3JEZWxldGFibGVUZXh0cyhcblx0bVBhcmFtZXRlcnM6IERlbGV0ZVBhcmFtZXRlcnMsXG5cdGRpcmVjdERlbGV0YWJsZUNvbnRleHRzOiBPRGF0YVY0Q29udGV4dFtdLFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsXG4pOiBEZWxldGVPcHRpb25bXSB7XG5cdGxldCB7IG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cywgbG9ja2VkQ29udGV4dHMsIGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUsIHVuU2F2ZWRDb250ZXh0cyB9ID0gbVBhcmFtZXRlcnM7XG5cdGNvbnN0IHsgZW50aXR5U2V0TmFtZSwgcGFyZW50Q29udHJvbCwgZGVzY3JpcHRpb24gfSA9IG1QYXJhbWV0ZXJzO1xuXHRkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlID8/PSBbXTtcblx0dW5TYXZlZENvbnRleHRzID8/PSBbXTtcblx0bG9ja2VkQ29udGV4dHMgPz89IFtdO1xuXHRkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlID8/PSBbXTtcblx0bnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzID8/PSAwO1xuXHRjb25zdCB0b3RhbERlbGV0YWJsZSA9IGRpcmVjdERlbGV0YWJsZUNvbnRleHRzLmxlbmd0aCArIGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUubGVuZ3RoICsgdW5TYXZlZENvbnRleHRzLmxlbmd0aDtcblx0Y29uc3Qgbm9uRGVsZXRhYmxlQ29udGV4dHMgPSBudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMgLSAobG9ja2VkQ29udGV4dHMubGVuZ3RoICsgdG90YWxEZWxldGFibGUgLSBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlLmxlbmd0aCk7XG5cdGNvbnN0IG9wdGlvbnM6IERlbGV0ZU9wdGlvbltdID0gW107XG5cblx0aWYgKG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA9PT0gMSAmJiBudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMgPT09IGRpcmVjdERlbGV0YWJsZUNvbnRleHRzLmxlbmd0aCkge1xuXHRcdC8vIHNpbmdsZSBkZWxldGFibGUgY29udGV4dFxuXHRcdGNvbnN0IG9UYWJsZSA9IHBhcmVudENvbnRyb2wgYXMgVGFibGU7XG5cdFx0Y29uc3Qgc0tleSA9IG9UYWJsZSAmJiAoKG9UYWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0SWRlbnRpZmllckNvbHVtbigpIGFzIHN0cmluZyk7XG5cdFx0bGV0IHR4dDtcblx0XHRpZiAoc0tleSkge1xuXHRcdFx0Y29uc3QgZGVzY3JpcHRpb25QYXRoID0gZGVzY3JpcHRpb24gJiYgKGRlc2NyaXB0aW9uIGFzIHsgcGF0aD86IHN0cmluZyB9KS5wYXRoO1xuXHRcdFx0Ly8gSW4gY2FzZSB0aGUgc2VsZWN0ZWQgcmVjb3JkIGlzIGRyYWZ0KGluIFVJKS4gVGhlIEFjdGl2ZSByZWNvcmQgbmVlZHMgdG8gYmUgZGVsZXRlZChkaXJlY3REZWxldGFibGVDb250ZXh0cyBoYXMgYWN0aXZlIHJlY29yZCksIGJ1dCBkYXRhIGlzIG5vdCByZXF1ZXN0ZWQgb3IgcGFydGlhbC4gV2UgZ2V0IGRhdGEgZnJvbSB0aGUgZHJhZnQuXG5cdFx0XHRjb25zdCBvTGluZUNvbnRleHREYXRhID0gX2dldE9yaWdpbmFsU2VsZWN0ZWRSZWNvcmQobVBhcmFtZXRlcnMsIGRpcmVjdERlbGV0YWJsZUNvbnRleHRzWzBdKS5nZXRPYmplY3QoKTtcblx0XHRcdGNvbnN0IHNLZXlWYWx1ZSA9IHNLZXkgPyBvTGluZUNvbnRleHREYXRhW3NLZXldIDogdW5kZWZpbmVkO1xuXHRcdFx0Y29uc3Qgc0Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25QYXRoICYmIG9MaW5lQ29udGV4dERhdGFbZGVzY3JpcHRpb25QYXRoXTtcblx0XHRcdGlmIChzS2V5VmFsdWUpIHtcblx0XHRcdFx0aWYgKHNEZXNjcmlwdGlvbiAmJiBkZXNjcmlwdGlvbiAmJiBzS2V5ICE9PSAoZGVzY3JpcHRpb24gYXMgeyBwYXRoPzogc3RyaW5nIH0pLnBhdGgpIHtcblx0XHRcdFx0XHR0eHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUSU5GT1wiLFxuXHRcdFx0XHRcdFx0W3NLZXlWYWx1ZSwgc0Rlc2NyaXB0aW9uXSxcblx0XHRcdFx0XHRcdGVudGl0eVNldE5hbWVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUVElUTEVfT05MWVwiLCBbc0tleVZhbHVlXSwgZW50aXR5U2V0TmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUVElUTEVfU0lOR1VMQVJcIiwgdW5kZWZpbmVkLCBlbnRpdHlTZXROYW1lKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dHh0ID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9PQkpFQ1RUSVRMRV9TSU5HVUxBUlwiLCB1bmRlZmluZWQsIGVudGl0eVNldE5hbWUpO1xuXHRcdH1cblx0XHRvcHRpb25zLnB1c2goe1xuXHRcdFx0dHlwZTogRGVsZXRlT3B0aW9uVHlwZXMuZGVsZXRhYmxlQ29udGV4dHMsXG5cdFx0XHRjb250ZXh0czogZGlyZWN0RGVsZXRhYmxlQ29udGV4dHMsXG5cdFx0XHR0ZXh0OiB0eHQsXG5cdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdGNvbnRyb2w6IERlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sLlRFWFRcblx0XHR9KTtcblx0fSBlbHNlIGlmIChcblx0XHR1blNhdmVkQ29udGV4dHMubGVuZ3RoICE9PSB0b3RhbERlbGV0YWJsZSAmJlxuXHRcdG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA+IDAgJiZcblx0XHQoZGlyZWN0RGVsZXRhYmxlQ29udGV4dHMubGVuZ3RoID4gMCB8fCAodW5TYXZlZENvbnRleHRzLmxlbmd0aCA+IDAgJiYgZHJhZnRzV2l0aE5vbkRlbGV0YWJsZUFjdGl2ZS5sZW5ndGggPiAwKSlcblx0KSB7XG5cdFx0aWYgKG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA+IGRpcmVjdERlbGV0YWJsZUNvbnRleHRzLmxlbmd0aCAmJiBub25EZWxldGFibGVDb250ZXh0cyArIGxvY2tlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vIG90aGVyIHR5cGVzIGV4aXN0cyB3aXRoIHB1cmUgZGVsZXRhYmxlIG9uZXNcblx0XHRcdGxldCBkZWxldGFibGVPcHRpb25UeHQgPSBcIlwiO1xuXHRcdFx0aWYgKHRvdGFsRGVsZXRhYmxlID09PSAxKSB7XG5cdFx0XHRcdGRlbGV0YWJsZU9wdGlvblR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcblx0XHRcdFx0XHRcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUVElUTEVfU0lOR1VMQVJfTk9OX0RFTEVUQUJMRVwiLFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHRlbnRpdHlTZXROYW1lXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWxldGFibGVPcHRpb25UeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXG5cdFx0XHRcdFx0XCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX09CSkVDVFRJVExFX1BMVVJBTF9OT05fREVMRVRBQkxFXCIsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdGVudGl0eVNldE5hbWVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdG9wdGlvbnMudW5zaGlmdCh7XG5cdFx0XHRcdHR5cGU6IERlbGV0ZU9wdGlvblR5cGVzLmRlbGV0YWJsZUNvbnRleHRzLFxuXHRcdFx0XHRjb250ZXh0czogZGlyZWN0RGVsZXRhYmxlQ29udGV4dHMsXG5cdFx0XHRcdHRleHQ6IGRlbGV0YWJsZU9wdGlvblR4dCxcblx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdGNvbnRyb2w6IERlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sLlRFWFRcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBvbmx5IGRlbGV0YWJsZVxuXHRcdFx0Y29uc3QgYWxsRGVsZXRhYmxlVHh0ID1cblx0XHRcdFx0dG90YWxEZWxldGFibGUgPT09IDFcblx0XHRcdFx0XHQ/IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUVElUTEVfU0lOR1VMQVJcIiwgdW5kZWZpbmVkLCBlbnRpdHlTZXROYW1lKVxuXHRcdFx0XHRcdDogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9PQkpFQ1RUSVRMRV9QTFVSQUxcIiwgdW5kZWZpbmVkLCBlbnRpdHlTZXROYW1lKTtcblx0XHRcdG9wdGlvbnMucHVzaCh7XG5cdFx0XHRcdHR5cGU6IERlbGV0ZU9wdGlvblR5cGVzLmRlbGV0YWJsZUNvbnRleHRzLFxuXHRcdFx0XHRjb250ZXh0czogZGlyZWN0RGVsZXRhYmxlQ29udGV4dHMsXG5cdFx0XHRcdHRleHQ6IGFsbERlbGV0YWJsZVR4dCxcblx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdGNvbnRyb2w6IERlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sLlRFWFRcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvcHRpb25zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVEcmFmdHNCZWZvcmVBY3RpdmVzQW5kR2V0RXJyb3JzKFxuXHRkcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZTogT0RhdGFWNENvbnRleHRbXSxcblx0bWVzc2FnZUhhbmRsZXI6IE1lc3NhZ2VIYW5kbGVyLFxuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0ZW5hYmxlU3RyaWN0SGFuZGxpbmc6IGJvb2xlYW5cbik6IFByb21pc2U8dW5rbm93bltdPiB7XG5cdGNvbnN0IGRyYWZ0RXJyb3JzOiB1bmtub3duW10gPSBbXTtcblx0YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuXHRcdGRyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlLm1hcChhc3luYyBmdW5jdGlvbiAoY29udGV4dDogT0RhdGFWNENvbnRleHQpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHJldHVybiBhd2FpdCBkcmFmdC5kZWxldGVEcmFmdChjb250ZXh0LCBtZXNzYWdlSGFuZGxlciwgYXBwQ29tcG9uZW50LCBlbmFibGVTdHJpY3RIYW5kbGluZyk7XG5cdFx0XHR9IGNhdGNoIChlOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgRkUgOiBjb3JlIDogRGVsZXRlSGVscGVyIDogRXJyb3Igd2hpbGUgZGlzY2FyZGluZyBkcmFmdCB3aXRoIHBhdGggOiAke2NvbnRleHQuZ2V0UGF0aCgpfWApO1xuXHRcdFx0XHRkcmFmdEVycm9ycy5wdXNoKGUpO1xuXHRcdFx0fVxuXHRcdH0pXG5cdCk7XG5cdHJldHVybiBkcmFmdEVycm9ycztcbn1cblxuLyoqXG4gKiBJbiBjYXNlIG9mIGEgdHJlZSB0YWJsZSwgd2Ugc2hhbGwgbm90IGRlbGV0ZSBhIGNvbnRleHQgaWYgb25lIGlmIGl0cyBhbmNlc3RvcnMgaXMgYWxzbyB0byBiZSBkZWxldGVkLlxuICogVGhpcyBmdW5jdGlvbnMgZmlsdGVycyBvdXQgc3VjaCBjb250ZXh0cy5cbiAqIEBwYXJhbSBjb250ZXh0c1xuICogQHJldHVybnMgVGhlIGZpbHRlcmVkIGNvbnRleHRzXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZURlc2NlbmRhbnRDb250ZXh0cyhjb250ZXh0czogT0RhdGFWNENvbnRleHRbXSk6IE9EYXRhVjRDb250ZXh0W10ge1xuXHRjb25zdCB0ZW1wQ29udGV4dHM6IChPRGF0YVY0Q29udGV4dCB8IHVuZGVmaW5lZClbXSA9IFsuLi5jb250ZXh0c107XG5cdC8vIEZpbHRlciBvdXQgY29udGV4dHMgd2hvc2UgYW5jZXN0b3IgaXMgYWxzbyBkZWxldGVkLCBhcyB0aGV5IHdpbGwgYmUgZGVsZXRlZCB3aXRoIHRoZWlyIGFuY2VzdG9yXG5cdHRlbXBDb250ZXh0cy5mb3JFYWNoKChwYXJlbnRDb250ZXh0LCBwYXJlbnRJbmRleCkgPT4ge1xuXHRcdGlmIChwYXJlbnRDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBjaGlsZEluZGV4ID0gcGFyZW50SW5kZXggKyAxOyBjaGlsZEluZGV4IDwgdGVtcENvbnRleHRzLmxlbmd0aDsgY2hpbGRJbmRleCsrKSB7XG5cdFx0XHRjb25zdCBjaGlsZENvbnRleHQgPSB0ZW1wQ29udGV4dHNbY2hpbGRJbmRleF07XG5cdFx0XHRpZiAoY2hpbGRDb250ZXh0ICYmIHBhcmVudENvbnRleHQuaXNBbmNlc3Rvck9mKGNoaWxkQ29udGV4dCkpIHtcblx0XHRcdFx0dGVtcENvbnRleHRzW2NoaWxkSW5kZXhdID0gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIHRlbXBDb250ZXh0cy5maWx0ZXIoKGNvbnRleHQpID0+IGNvbnRleHQgIT09IHVuZGVmaW5lZCkgYXMgT0RhdGFWNENvbnRleHRbXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZGVsZXRlQ29uZmlybUhhbmRsZXIoXG5cdG9wdGlvbnM6IERlbGV0ZU9wdGlvbltdLFxuXHRtUGFyYW1ldGVyczogRGVsZXRlUGFyYW1ldGVycyxcblx0bWVzc2FnZUhhbmRsZXI6IE1lc3NhZ2VIYW5kbGVyLFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsLFxuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0ZHJhZnRFbmFibGVkOiBib29sZWFuLFxuXHRiaW5kaW5nVHlwZT86IFwiVHJlZVwiIHwgXCJBbmFseXRpY2FsXCJcbik6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBtZXNzYWdlSGFuZGxpbmdLZXkgPSBtZXNzYWdlSGFuZGxlci5yZWdpc3RlclRvSG9sZE1lc3NhZ2VzKCk7XG5cdGxldCBjb250ZXh0czogT0RhdGFWNENvbnRleHRbXSA9IFtdO1xuXHR0cnkge1xuXHRcdGNvbnRleHRzID0gZGVsZXRlSGVscGVyLmdldENvbmZpcm1lZERlbGV0YWJsZUNvbnRleHQoW10sIG9wdGlvbnMpO1xuXHRcdGNvbnN0IGxhc3REZWxldGVkUm93SW5kZXggPSBjb250ZXh0c1tjb250ZXh0cy5sZW5ndGggLSAxXS5nZXRJbmRleCgpID8/IC0xO1xuXHRcdGNvbnN0IGRyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlID0gZ2V0RHJhZnRzVG9EZWxldGVCZWZvcmVBY3RpdmUob3B0aW9ucyk7XG5cblx0XHRjb25zdCB7IGJlZm9yZURlbGV0ZUNhbGxCYWNrIH0gPSBtUGFyYW1ldGVycztcblx0XHRpZiAoYmVmb3JlRGVsZXRlQ2FsbEJhY2spIHtcblx0XHRcdGF3YWl0IGJlZm9yZURlbGV0ZUNhbGxCYWNrKHsgY29udGV4dHM6IGNvbnRleHRzIH0pO1xuXHRcdH1cblxuXHRcdGlmIChjb250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IGVuYWJsZVN0cmljdEhhbmRsaW5nID0gY29udGV4dHMubGVuZ3RoID09PSAxID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdFx0Y29uc3QgZHJhZnRFcnJvcnM6IHVua25vd25bXSA9IGF3YWl0IGRlbGV0ZURyYWZ0c0JlZm9yZUFjdGl2ZXNBbmRHZXRFcnJvcnMoXG5cdFx0XHRcdGRyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlLFxuXHRcdFx0XHRtZXNzYWdlSGFuZGxlcixcblx0XHRcdFx0YXBwQ29tcG9uZW50LFxuXHRcdFx0XHRlbmFibGVTdHJpY3RIYW5kbGluZ1xuXHRcdFx0KTtcblxuXHRcdFx0bGV0IGNvbnRleHRzVG9EZWxldGUgPSBjb250ZXh0cztcblx0XHRcdGlmIChiaW5kaW5nVHlwZSA9PT0gXCJUcmVlXCIpIHtcblx0XHRcdFx0Y29udGV4dHNUb0RlbGV0ZSA9IHJlbW92ZURlc2NlbmRhbnRDb250ZXh0cyhjb250ZXh0cyk7XG5cdFx0XHR9XG5cblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKFxuXHRcdFx0XHRjb250ZXh0c1RvRGVsZXRlLm1hcChhc3luYyBmdW5jdGlvbiAoY29udGV4dDogT0RhdGFWNENvbnRleHQpIHtcblx0XHRcdFx0XHQvLyBJZiB0aGUgY29udGV4dCB0byBkZWxldGUgaXMgYSBkcmFmdCAoaS5lLiBhY3V0YWxseSB3ZSBqdXN0IHduYXQgdG8gZGlzY2FyZCksIHdlIHNob3VsZCB1c2UgZHJhZnQuZGVsZXRlRHJhZnQgaW4gb3JkZXIgdG8gdXNlIGEgZGlzY2FyZCBhY3Rpb24gaWYgZGVmaW5lZFxuXHRcdFx0XHRcdC8vIEhvd2V2ZXIsIGRyYWZ0LmRlbGV0ZURyYWZ0IHVzZXMgZ2V0UHJvcGVydHksIHdoaWNoIHJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBjb250ZXh0IGlzIG5vdCByZWFkIGZyb20gdGhlIGJhY2tlbmQuXG5cdFx0XHRcdFx0Ly8gVGhpcyBjYW4gYmUgdGhlIGNhc2UsIGlmIHdlIGhhdmUgcmV0cmlldmVkIHRoaXMgY29udGV4dCB2aWEgdGhlIHNpYmxpbmcgKGUuZy4gd2hlbiBhIGRyYWZ0IGV4aXN0ZWQgYW5kIHdlIHdhbnQgdG8gZGVsZXRlIGJvdGggLSBpbiB0aGF0IGNhc2Vcblx0XHRcdFx0XHQvLyB3ZSBoYXZlIGFscmVhZHkgZGlzY2FyZGVkIHRoZSBkcmFmdCBhYm92ZSwgYW5kIG5vdyBuZWVkIHRvIGRlbGV0ZSB0aGUgYWN0aXZlIG9uZSkuIFRvIGlkZW50aWZ5IHRoaXMgc2l0dWF0aW9uLCB3ZSBtdXN0IG5vdCB1c2UgZ2V0UHJvcGVydHlcblx0XHRcdFx0XHQvLyAoYXMgdGhlIGNvbnRleHQgaXMgbm90IHJlYWQpLCBidXQgY2hlY2sgdGhlIHNhbWUgaW4gdGhlIG1QYXJhbWV0ZXJzLlxuXHRcdFx0XHRcdC8vIEluIHRoaXMgY2FzZSwgd2UgY2FuIGp1c3QgZGVsZXRlIHRoZSBjb250ZXh0LiBCdXQgd2Ugc2hvdWxkIG5vdCB1c2UgY29udGV4dC5kZWxldGUgKGFsc28gdXBkYXRpbmcgYmluZGluZ3MsIHdoaWNoIGZhaWxzIGluIHRoZSBkZXNjcmliZWQgc2l0dWF0aW9uKSxcblx0XHRcdFx0XHQvLyBidXQgbW9kZWwuZGVsZXRlIChvbmx5IHNlbmRpbmcgdGhlIGRlbGV0ZSkuIEluIG90aGVyIGNhc2VzIChlLmcuIG5vbi1kcmFmdCksIHRoaXMgaXMgYWxzbyBzdWZmaWNpZW50LCBhcyB3ZSBhbnl3YXkgdGFrZSBjYXJlIG9mIHNldHRpbmdcblx0XHRcdFx0XHQvLyBjb3JyZWN0IGJpZG5pbmdzIHdpdGggdGhlIG5hdmlnYXRpb24gdHJpZ2dlcmVkIGJ5IHRoZSBkZWxldGlvbi5cblx0XHRcdFx0XHQvLyBJbiBjYXNlIG9uIGFuYWx5dGljYWwgdGFibGUsIHdlIGFsc28gZG9uJ3Qgd2FudCB0byBjYWxsIGNvbnRleHQuZGVsZXRlLCBhcyBpdCB3aWxsIGZhaWwuXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0IWRyYWZ0RW5hYmxlZCB8fFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnMuZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZT8uZmluZChcblx0XHRcdFx0XHRcdFx0KGRyYWZ0V2l0aERlbGV0YWJsZUFjdGl2ZSkgPT4gZHJhZnRXaXRoRGVsZXRhYmxlQWN0aXZlLnNpYmxpbmdJbmZvLnRhcmdldENvbnRleHQgPT09IGNvbnRleHRcblx0XHRcdFx0XHRcdCkgfHxcblx0XHRcdFx0XHRcdGJpbmRpbmdUeXBlID09PSBcIkFuYWx5dGljYWxcIlxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0Y29udGV4dC5yZXNldENoYW5nZXMoKTtcblx0XHRcdFx0XHRcdHJldHVybiBjb250ZXh0LmdldE1vZGVsKCkuZGVsZXRlKGNvbnRleHQuZ2V0Q2Fub25pY2FsUGF0aCgpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRyYWZ0LmRlbGV0ZURyYWZ0KGNvbnRleHQsIG1lc3NhZ2VIYW5kbGVyLCBhcHBDb21wb25lbnQsIGVuYWJsZVN0cmljdEhhbmRsaW5nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdFx0ZGVsZXRlSGVscGVyLmFmdGVyRGVsZXRlUHJvY2VzcyhtUGFyYW1ldGVycywgb3B0aW9ucywgY29udGV4dHMsIHJlc291cmNlTW9kZWwsIGxhc3REZWxldGVkUm93SW5kZXgpO1xuXHRcdFx0aWYgKGRyYWZ0RXJyb3JzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGhyb3cgRXJyb3IoYEZFIDogY29yZSA6IERlbGV0ZUhlbHBlciA6IEVycm9ycyBvbiBkcmFmdCBkZWxldGUgOiAke2RyYWZ0RXJyb3JzfWApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRtZXNzYWdlSGFuZGxlci5yZW1vdmVIb2xkS2V5KG1lc3NhZ2VIYW5kbGluZ0tleSk7XG5cdH0gY2F0Y2ggKG9FcnJvcikge1xuXHRcdGlmIChjb250ZXh0cy5sZW5ndGggPiAxKSB7XG5cdFx0XHRkZWxldGVIZWxwZXIuYWRkR2VuZXJpY0RlbGV0ZUZhaWx1cmVNZXNzYWdlKHJlc291cmNlTW9kZWwpO1xuXHRcdH1cblx0XHRhd2FpdCBtZXNzYWdlSGFuZGxlci5zaG93TWVzc2FnZXMoeyB1bkhvbGRLZXk6IG1lc3NhZ2VIYW5kbGluZ0tleSB9KTtcblx0XHQvLyByZS10aHJvdyBlcnJvciB0byBlbmZvcmNlIHJlamVjdGluZyB0aGUgZ2VuZXJhbCBwcm9taXNlXG5cdFx0dGhyb3cgb0Vycm9yO1xuXHR9XG59XG5cbi8qKlxuICogQWRkaW5nIGEgZ2VuZXJpYyBkZWxldGUgZmFpbHVyZSBtZXNzYWdlIHRvIG1lc3NhZ2UgbW9kZWwgZm9yIHJlYWRhYmlsaXR5LlxuICogQHBhcmFtIHJlc291cmNlTW9kZWwgUmVzb3VyY2UgbW9kZWwgZm9yIG1lc3NhZ2UgdGV4dFxuICovXG5mdW5jdGlvbiBhZGRHZW5lcmljRGVsZXRlRmFpbHVyZU1lc3NhZ2UocmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbCk6IHZvaWQge1xuXHRNZXNzYWdpbmcuYWRkTWVzc2FnZXMoXG5cdFx0bmV3IE1lc3NhZ2Uoe1xuXHRcdFx0bWVzc2FnZTogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19DT01NT05fREVMRVRFX0NIQU5HRVNFVF9GQUlMVVJFX01VTFRJUExFX0VSUk9SU19URVhUXCIpLFxuXHRcdFx0dHlwZTogTWVzc2FnZVR5cGUuRXJyb3IsXG5cdFx0XHR0YXJnZXQ6IHVuZGVmaW5lZCxcblx0XHRcdHBlcnNpc3RlbnQ6IHRydWUsXG5cdFx0XHRjb2RlOiBcIkZFX0NVU1RPTV9NRVNTQUdFX0NIQU5HRVNFVF9BTExfRkFJTEVEXCIsXG5cdFx0XHRkZXNjcmlwdGlvbjogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19DT01NT05fREVMRVRFX0NIQU5HRVNFVF9GQUlMVVJFX01VTFRJUExFX0VSUk9SU19ERVRBSUxTX1RFWFRcIiksXG5cdFx0XHR0ZWNobmljYWxEZXRhaWxzOiB7XG5cdFx0XHRcdGZlOiB7XG5cdFx0XHRcdFx0Y2hhbmdlU2V0UHJlVGV4dEZvclNpbmdsZUVycm9yOiByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX0NPTU1PTl9ERUxFVEVfQ0hBTkdFU0VUX0ZBSUxVUkVfU0lOR0xFX0VSUk9SX1RFWFRcIilcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pXG5cdCk7XG59XG5cbi8qKlxuICogVXBkYXRlcyBhIENvbnRleHRJbmZvIHVzaW5nIGl0cyBzaWJsaW5nIGNvbnRleHQsIGlmIG5lZWRlZC5cbiAqIFJlcXVlc3RzIHRoZSBzaWJsaW5nIGNvbnRleHQgYW5kIHVwZGF0ZXMgdGhlIHNpYmxpbmdEZWxldGFibGUgcHJvcGVydHkuXG4gKiBBbHNvIG1hbmFnZXMgdGhlIGNhc2Ugd2hlcmUgdGhlIG1haW4gY29udGV4dCBpcyBhY3RpdmUgYnV0IGhhcyBhIGRyYWZ0IHNpYmxpbmcgKC0tPiBzd2FwIGJldHdlZW4gbWFpbiBhbmQgc2libGluZyBjb250ZXh0KS5cbiAqIEBwYXJhbSBpbmZvXG4gKiBAcGFyYW0gZGVsZXRhYmxlUGF0aFxuICogQHBhcmFtIHN0YXRpY0RlbGV0YWJsZVxuICovXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVJbmZvRnJvbVNpYmxpbmcoaW5mbzogQ29udGV4dEluZm8sIGRlbGV0YWJsZVBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCwgc3RhdGljRGVsZXRhYmxlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG5cdHRyeSB7XG5cdFx0aWYgKCFpbmZvLmlzQWN0aXZlICYmIGluZm8uaGFzQWN0aXZlKSB7XG5cdFx0XHQvLyBDYXNlIDE6IHRoZSBjb250ZXh0IGlzIGEgZHJhZnQsIHdlIG5lZWQgdG8gZ2V0IGl0cyBhY3RpdmUgc2libGluZ1xuXHRcdFx0Y29uc3Qgc2libGluZ0luZm9ybWF0aW9uID0gYXdhaXQgZHJhZnQuY29tcHV0ZVNpYmxpbmdJbmZvcm1hdGlvbihpbmZvLmNvbnRleHQsIGluZm8uY29udGV4dCk7XG5cdFx0XHRpbmZvLnNpYmxpbmdJbmZvID0gc2libGluZ0luZm9ybWF0aW9uO1xuXHRcdFx0aW5mby5zaWJsaW5nRGVsZXRhYmxlID0gZGVsZXRhYmxlUGF0aFxuXHRcdFx0XHQ/IGF3YWl0IHNpYmxpbmdJbmZvcm1hdGlvbj8udGFyZ2V0Q29udGV4dD8ucmVxdWVzdFByb3BlcnR5KGRlbGV0YWJsZVBhdGgpXG5cdFx0XHRcdDogc3RhdGljRGVsZXRhYmxlO1xuXHRcdH0gZWxzZSBpZiAoaW5mby5pc0FjdGl2ZSAmJiBpbmZvLmhhc0RyYWZ0KSB7XG5cdFx0XHQvLyBDYXNlIDI6IHRoZSBjb250ZXh0IGlzIGFjdGl2ZSwgd2UgbmVlZCB0byBnZXQgaXRzIGRyYWZ0IHNpYmxpbmdcblx0XHRcdGNvbnN0IHNpYmxpbmdJbmZvcm1hdGlvbiA9IGF3YWl0IGRyYWZ0LmNvbXB1dGVTaWJsaW5nSW5mb3JtYXRpb24oaW5mby5jb250ZXh0LCBpbmZvLmNvbnRleHQpO1xuXHRcdFx0aWYgKHNpYmxpbmdJbmZvcm1hdGlvbj8udGFyZ2V0Q29udGV4dCkge1xuXHRcdFx0XHQvLyBXZSB3ZXJlIGFibGUgdG8gcmV0cmlldmUgdGhlIGRyYWZ0IHNpYmxpbmcgZnJvbSB0aGUgYWN0aXZlIGluc3RhbmNlIC0tPiBmYWxsYmFjayB0byBjYXNlIDFcblx0XHRcdFx0Ly8gYnkgZXhjaGFuZ2luZyB0aGUgY29udGV4dCB3aXRoIHRoZSBzaWJsaW5nIGNvbnRleHQgaW4gdGhlIGluZm8gb2JqZWN0LlxuXHRcdFx0XHRjb25zdCBwcm9wZXJ0aWVzVG9GZXRjaCA9IFtcIklzQWN0aXZlRW50aXR5XCIsIFwiSGFzQWN0aXZlRW50aXR5XCJdO1xuXHRcdFx0XHRpZiAoZGVsZXRhYmxlUGF0aCkge1xuXHRcdFx0XHRcdHByb3BlcnRpZXNUb0ZldGNoLnB1c2goZGVsZXRhYmxlUGF0aCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YXdhaXQgc2libGluZ0luZm9ybWF0aW9uLnRhcmdldENvbnRleHQucmVxdWVzdFByb3BlcnR5KHByb3BlcnRpZXNUb0ZldGNoKTtcblx0XHRcdFx0aW5mby5sb2NrZWQgPSBmYWxzZTtcblx0XHRcdFx0aW5mby5oYXNEcmFmdCA9IGZhbHNlO1xuXHRcdFx0XHRpbmZvLmlzQWN0aXZlID0gZmFsc2U7XG5cdFx0XHRcdGluZm8uaGFzQWN0aXZlID0gdHJ1ZTtcblx0XHRcdFx0Ly8gRXhjaGFuZ2UgY29udGV4dCB3aXRoIHNpYmxpbmcgY29udGV4dFxuXHRcdFx0XHRpbmZvLnNpYmxpbmdJbmZvID0geyB0YXJnZXRDb250ZXh0OiBpbmZvLmNvbnRleHQsIHBhdGhNYXBwaW5nOiBbXSB9O1xuXHRcdFx0XHRpbmZvLmNvbnRleHQgPSBzaWJsaW5nSW5mb3JtYXRpb24udGFyZ2V0Q29udGV4dDtcblx0XHRcdFx0Ly8gRXhjaGFuZ2UgZGVsZXRhYmxlIHdpdGggc2libGluZyBkZWxldGFibGVcblx0XHRcdFx0aW5mby5zaWJsaW5nRGVsZXRhYmxlID0gaW5mby5kZWxldGFibGU7XG5cdFx0XHRcdGluZm8uZGVsZXRhYmxlID0gZGVsZXRhYmxlUGF0aCA/IHNpYmxpbmdJbmZvcm1hdGlvbi50YXJnZXRDb250ZXh0LmdldFByb3BlcnR5KGRlbGV0YWJsZVBhdGgpIDogc3RhdGljRGVsZXRhYmxlO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBjYXRjaCAoX2UpIHtcblx0XHQvLyBEbyBub3RoaW5nXG5cdH1cbn1cblxuLyoqXG4gKiBDb2xsZWN0IGNvbnRleHQgaW5mb3JtYXRpb24gKGlzRHJhZnRSb290LCBpc0RyYWZ0Tm9kZSwgSGFzRHJhZnRFbnRpdHksIElzQWN0aXZlRW50aXR5LCBIYXNBY3RpdmVFbnRpdHksIGlzTG9ja2VkLCBpc0luYWN0aXZlKS5cbiAqIEBwYXJhbSBjb250ZXh0IENvbnRleHQgdG8gZXZhbHVhdGUuXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dCBpbmZvIHByb21pc2UuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldENvbnRleHRJbmZvcyhjb250ZXh0OiBPRGF0YVY0Q29udGV4dCk6IFByb21pc2U8Q29udGV4dEluZm8+IHtcblx0Y29uc3QgaXNUcmFuc2llbnQgPSAhIWNvbnRleHQ/LmdldE9iamVjdCgpW1wiQCR1aTUuY29udGV4dC5pc1RyYW5zaWVudFwiXTtcblx0Y29uc3QgaXNJbmFjdGl2ZSA9IGNvbnRleHQ/LmlzSW5hY3RpdmUoKTtcblx0Y29uc3QgbWV0YUNvbnRleHQgPVxuXHRcdGlzSW5hY3RpdmUgfHwgKCFpc0luYWN0aXZlICYmIGlzVHJhbnNpZW50KVxuXHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdDogY29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE1ldGFDb250ZXh0KGNvbnRleHQuZ2V0Q2Fub25pY2FsUGF0aCgpKTtcblx0Y29uc3QgZGVsZXRhYmxlUGF0aCA9IG1ldGFDb250ZXh0Py5nZXRQcm9wZXJ0eShcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkRlbGV0ZVJlc3RyaWN0aW9ucy9EZWxldGFibGUvJFBhdGhcIik7XG5cdGNvbnN0IHN0YXRpY0RlbGV0YWJsZSA9ICFkZWxldGFibGVQYXRoICYmIG1ldGFDb250ZXh0Py5nZXRQcm9wZXJ0eShcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkRlbGV0ZVJlc3RyaWN0aW9ucy9EZWxldGFibGVcIikgIT09IGZhbHNlO1xuXHRjb25zdCBkZWxldGFibGUgPSBkZWxldGFibGVQYXRoID8gY29udGV4dC5nZXRQcm9wZXJ0eShkZWxldGFibGVQYXRoKSA6IHN0YXRpY0RlbGV0YWJsZTtcblxuXHRjb25zdCBpbmZvOiBDb250ZXh0SW5mbyA9IHtcblx0XHRjb250ZXh0OiBjb250ZXh0LFxuXHRcdGlzRHJhZnRSb290OiAhIW1ldGFDb250ZXh0Py5nZXRQcm9wZXJ0eShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCIpLFxuXHRcdGlzRHJhZnROb2RlOiAhIW1ldGFDb250ZXh0Py5nZXRQcm9wZXJ0eShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnROb2RlXCIpLFxuXHRcdGlzQWN0aXZlOiB0cnVlLFxuXHRcdGhhc0FjdGl2ZTogZmFsc2UsXG5cdFx0aGFzRHJhZnQ6IGZhbHNlLFxuXHRcdGxvY2tlZDogZmFsc2UsXG5cdFx0Ly8gZm9yIGFuIGVtcHR5Um93IChpbmFjdGl2ZSBjb250ZXh0KSBpdCdzIGFsd2F5cyBkZWxldGFibGUgYXMgbG9uZyBhcyB0aGUgY29udGV4dCBrZXB0IGluYWN0aXZlLi5cblx0XHRkZWxldGFibGU6IGRlbGV0YWJsZSxcblx0XHRzaWJsaW5nSW5mbzogdW5kZWZpbmVkLFxuXHRcdHNpYmxpbmdEZWxldGFibGU6IGZhbHNlLFxuXHRcdGlzSW5hY3RpdmVDb250ZXh0OiAhIWNvbnRleHQuaXNJbmFjdGl2ZSgpXG5cdH07XG5cdGlmICghY29udGV4dC5pc0luYWN0aXZlKCkgJiYgaW5mby5pc0RyYWZ0Um9vdCkge1xuXHRcdGNvbnN0IGNvbnRleHREYXRhID0gY29udGV4dC5nZXRPYmplY3QoKTtcblx0XHRpbmZvLmxvY2tlZCA9ICEhY29udGV4dERhdGEuRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGE/LkluUHJvY2Vzc0J5VXNlcjtcblx0XHRpbmZvLmhhc0RyYWZ0ID0gY29udGV4dERhdGEuSGFzRHJhZnRFbnRpdHk7XG5cdFx0aW5mby5pc0FjdGl2ZSA9IGNvbnRleHREYXRhLklzQWN0aXZlRW50aXR5O1xuXHRcdGluZm8uaGFzQWN0aXZlID0gY29udGV4dERhdGEuSGFzQWN0aXZlRW50aXR5O1xuXHRcdGF3YWl0IHVwZGF0ZUluZm9Gcm9tU2libGluZyhpbmZvLCBkZWxldGFibGVQYXRoLCBzdGF0aWNEZWxldGFibGUpO1xuXHR9XG5cdHJldHVybiBpbmZvO1xufVxuXG4vLyBUYWJsZSBSdW50aW1lIEhlbHBlcnM6XG5cbi8qIHJlZnJlc2hlcyBkYXRhIGluIGludGVybmFsIG1vZGVsIHJlbGV2YW50IGZvciBlbmFibGVtZW50IG9mIGRlbGV0ZSBidXR0b24gYWNjb3JkaW5nIHRvIHNlbGVjdGVkIGNvbnRleHRzXG5yZWxldmFudCBkYXRhIGFyZTogZGVsZXRhYmxlQ29udGV4dHMsIGRyYWZ0c1dpdGhEZWxldGFibGVBY3RpdmUsIGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUsIHVuU2F2ZWRDb250ZXh0cywgZGVsZXRlRW5hYmxlZFxubm90IHJlbGV2YW50OiBsb2NrZWRDb250ZXh0c1xuKi9cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzKFxuXHRpbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdHNlbGVjdGVkQ29udGV4dHM6IE9EYXRhVjRDb250ZXh0W10sXG5cdGZvckNvbnRleHRNZW51ID0gZmFsc2Vcbik6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBjb250ZXh0SW5mb3MgPSBhd2FpdCBQcm9taXNlLmFsbChzZWxlY3RlZENvbnRleHRzLm1hcChnZXRDb250ZXh0SW5mb3MpKTtcblxuXHRjb25zdCBidWNrZXRzID0gW1xuXHRcdHtcblx0XHRcdGtleTogXCJkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlXCIsXG5cdFx0XHQvLyBvbmx5IGZvciBkcmFmdCByb290OiBJbiB0aGF0IGNhc2UsIHRoZSBkZWxldGUgcmVxdWVzdCBuZWVkcyB0byBiZSBzZW50IGZvciB0aGUgYWN0aXZlIChpLmUuIHRoZSBzaWJsaW5nKSxcblx0XHRcdC8vIHdoaWxlIGluIGRyYWZ0IG5vZGUsIHRoZSBkZWxldGUgcmVxdWVzdCBuZWVkcyB0byBiZSBzZW5kIGZvciB0aGUgZHJhZnQgaXRzZWxmXG5cdFx0XHR2YWx1ZTogY29udGV4dEluZm9zLmZpbHRlcihcblx0XHRcdFx0KGluZm8pID0+ICFpbmZvLmlzSW5hY3RpdmVDb250ZXh0ICYmIGluZm8uaXNEcmFmdFJvb3QgJiYgIWluZm8uaXNBY3RpdmUgJiYgaW5mby5oYXNBY3RpdmUgJiYgaW5mby5zaWJsaW5nRGVsZXRhYmxlXG5cdFx0XHQpXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IFwiZHJhZnRzV2l0aE5vbkRlbGV0YWJsZUFjdGl2ZVwiLFxuXHRcdFx0Ly8gb25seSBmb3IgZHJhZnQgcm9vdDogRm9yIGRyYWZ0IG5vZGUsIHdlIG9ubHkgcmVseSBvbiBpbmZvcm1hdGlvbiBpbiB0aGUgZHJhZnQgaXRzZWxmIChub3QgaXRzIGFjdGl2ZSBzaWJsaW5nKVxuXHRcdFx0Ly8gYXBwbGljYXRpb24gaGFzIHRvIHRha2UgY2FyZSB0byBzZXQgdGhpcyBjb3JyZWN0bHkgKGluIGNhc2UgYWN0aXZlIHNpYmxpbmcgbXVzdCBub3QgYmUgZGVsZXRhYmxlLCBhY3RpdmF0aW9uXG5cdFx0XHQvLyBvZiBkcmFmdCB3aXRoIGRlbGV0ZWQgbm9kZSB3b3VsZCBhbHNvIGRlbHRlIGFjdGl2ZSBzaWJsaW5nID0+IGRlbGV0aW9uIG9mIGRyYWZ0IG5vZGUgdG8gYmUgYXZvaWRlZClcblx0XHRcdHZhbHVlOiBjb250ZXh0SW5mb3MuZmlsdGVyKFxuXHRcdFx0XHQoaW5mbykgPT4gIWluZm8uaXNJbmFjdGl2ZUNvbnRleHQgJiYgaW5mby5pc0RyYWZ0Um9vdCAmJiAhaW5mby5pc0FjdGl2ZSAmJiBpbmZvLmhhc0FjdGl2ZSAmJiAhaW5mby5zaWJsaW5nRGVsZXRhYmxlXG5cdFx0XHQpXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IFwibG9ja2VkQ29udGV4dHNcIixcblx0XHRcdHZhbHVlOiBjb250ZXh0SW5mb3MuZmlsdGVyKFxuXHRcdFx0XHQoaW5mbykgPT4gIWluZm8uaXNJbmFjdGl2ZUNvbnRleHQgJiYgaW5mby5pc0RyYWZ0Um9vdCAmJiBpbmZvLmlzQWN0aXZlICYmIGluZm8uaGFzRHJhZnQgJiYgaW5mby5sb2NrZWRcblx0XHRcdClcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogXCJ1blNhdmVkQ29udGV4dHNcIixcblx0XHRcdHZhbHVlOiBjb250ZXh0SW5mb3MuZmlsdGVyKFxuXHRcdFx0XHQoaW5mbykgPT4gIWluZm8uaXNJbmFjdGl2ZUNvbnRleHQgJiYgaW5mby5pc0RyYWZ0Um9vdCAmJiBpbmZvLmlzQWN0aXZlICYmIGluZm8uaGFzRHJhZnQgJiYgIWluZm8ubG9ja2VkXG5cdFx0XHQpXG5cdFx0fSxcblx0XHQvLyBub24tZHJhZnQvc3RpY2t5IGFuZCBkZWxldGFibGVcblx0XHQvLyBhY3RpdmUgZHJhZnQgcm9vdCB3aXRob3V0IGFueSBkcmFmdCBhbmQgZGVsZXRhYmxlXG5cdFx0Ly8gY3JlYXRlZCBkcmFmdCByb290IChyZWdhcmRsZXNzIG9mIGRlbGV0YWJsZSlcblx0XHQvLyBkcmFmdCBub2RlIG9ubHkgYWNjb3JkaW5nIHRvIGl0cyBhbm5vdGF0aW9uXG5cdFx0e1xuXHRcdFx0a2V5OiBcImRlbGV0YWJsZUNvbnRleHRzXCIsXG5cdFx0XHR2YWx1ZTogY29udGV4dEluZm9zLmZpbHRlcihcblx0XHRcdFx0KGluZm8pID0+XG5cdFx0XHRcdFx0aW5mby5pc0luYWN0aXZlQ29udGV4dCB8fFxuXHRcdFx0XHRcdCghaW5mby5pc0RyYWZ0Um9vdCAmJiAhaW5mby5pc0RyYWZ0Tm9kZSAmJiBpbmZvLmRlbGV0YWJsZSkgfHxcblx0XHRcdFx0XHQoaW5mby5pc0RyYWZ0Um9vdCAmJiBpbmZvLmlzQWN0aXZlICYmICFpbmZvLmhhc0RyYWZ0ICYmIGluZm8uZGVsZXRhYmxlKSB8fFxuXHRcdFx0XHRcdChpbmZvLmlzRHJhZnRSb290ICYmICFpbmZvLmlzQWN0aXZlICYmICFpbmZvLmhhc0FjdGl2ZSkgfHxcblx0XHRcdFx0XHQoaW5mby5pc0RyYWZ0Tm9kZSAmJiBpbmZvLmRlbGV0YWJsZSlcblx0XHRcdClcblx0XHR9XG5cdF07XG5cdGNvbnN0IGNvbnRleHRQYXRoID0gIWZvckNvbnRleHRNZW51ID8gXCJcIiA6IFwiY29udGV4dG1lbnUvXCI7XG5cdGZvciAoY29uc3QgeyBrZXksIHZhbHVlIH0gb2YgYnVja2V0cykge1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFxuXHRcdFx0Y29udGV4dFBhdGggKyBrZXksXG5cdFx0XHQvLyBDdXJyZW50bHksIGJ1Y2tldCBkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlIGhhcyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgKGNvbnRhaW5pbmcgYWxzbyBzaWJsaW5nIGluZm9ybWF0aW9uLCB3aGljaCBpcyB1c2VkXG5cdFx0XHQvLyBpbiBjYXNlIG9mIGRlbGV0aW9uKS4gUG9zc2libGUgaW1wcm92ZW1lbnQ6IFJlYWQgc2libGluZyBpbmZvcm1hdGlvbiBvbmx5IHdoZW4gbmVlZGVkLCBhbmQgYnVpbGQgYWxsIGJ1Y2tldHMgd2l0aCBzYW1lXG5cdFx0XHQvLyBzdHJ1Y3R1cmUuIEhvd2V2ZXIsIGluIHRoYXQgY2FzZSBzaWJsaW5nSW5mb3JtYXRpb24gbWlnaHQgbmVlZCB0byBiZSByZWFkIHR3aWNlIChpZiBhbHJlYWR5IG5lZWRlZCBmb3IgYnV0dG9uIGVuYWJsZW1lbnQpLFxuXHRcdFx0Ly8gdGh1cyBhIGJ1ZmZlciBwcm9iYWJseSB3b3VsZCBtYWtlIHNlbnNlLlxuXHRcdFx0dmFsdWUubWFwKChpbmZvKSA9PlxuXHRcdFx0XHRrZXkgPT09IFwiZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZVwiID8geyBkcmFmdDogaW5mby5jb250ZXh0LCBzaWJsaW5nSW5mbzogaW5mby5zaWJsaW5nSW5mbyB9IDogaW5mby5jb250ZXh0XG5cdFx0XHQpXG5cdFx0KTtcblx0fVxufVxuXG5jb25zdCBkZWxldGVIZWxwZXIgPSB7XG5cdGdldE5vbkRlbGV0YWJsZVRleHQsXG5cdGRlbGV0ZUNvbmZpcm1IYW5kbGVyLFxuXHRnZXRPcHRpb25zRm9yRGVsZXRhYmxlVGV4dHMsXG5cdHVwZGF0ZUNvbnRlbnRGb3JEZWxldGVEaWFsb2csXG5cdHVwZGF0ZURyYWZ0T3B0aW9uc0ZvckRlbGV0YWJsZVRleHRzLFxuXHRnZXRDb25maXJtZWREZWxldGFibGVDb250ZXh0LFxuXHRnZXRMb2NrZWRPYmplY3RzVGV4dCxcblx0Z2V0VW5zYXZlZENvbnRleHRzVGV4dCxcblx0Z2V0Tm9uRGVsZXRhYmxlQWN0aXZlc09mRHJhZnRzVGV4dCxcblx0YWZ0ZXJEZWxldGVQcm9jZXNzLFxuXHR1cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyxcblx0RGVsZXRlT3B0aW9uVHlwZXMsXG5cdERlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sLFxuXHRzZXRGb2N1c0FmdGVyRGVsZXRlLFxuXHRnZXRDb250ZXh0SW5mb3MsXG5cdGFkZEdlbmVyaWNEZWxldGVGYWlsdXJlTWVzc2FnZSxcblx0cmVtb3ZlRGVzY2VuZGFudENvbnRleHRzXG59O1xuXG5leHBvcnQgZGVmYXVsdCBkZWxldGVIZWxwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7TUFvQktBLGlCQUFpQiwwQkFBakJBLGlCQUFpQjtJQUFqQkEsaUJBQWlCO0lBQWpCQSxpQkFBaUI7SUFBakJBLGlCQUFpQjtJQUFqQkEsaUJBQWlCO0lBQWpCQSxpQkFBaUI7SUFBQSxPQUFqQkEsaUJBQWlCO0VBQUEsRUFBakJBLGlCQUFpQjtFQUFBLElBUWpCQywwQkFBMEIsMEJBQTFCQSwwQkFBMEI7SUFBMUJBLDBCQUEwQjtJQUExQkEsMEJBQTBCO0lBQUEsT0FBMUJBLDBCQUEwQjtFQUFBLEVBQTFCQSwwQkFBMEI7RUE4RC9CLFNBQVNDLG9CQUFvQkEsQ0FDNUJDLG9CQUEwQyxFQUMxQ0MsSUFBdUIsRUFDdkJDLGdCQUFrQyxFQUNsQ0MsZ0JBQWtDLEVBQ2Y7SUFDbkIsTUFBTUMsbUJBQXFDLEdBQUcsQ0FBQyxHQUFHRixnQkFBZ0IsQ0FBQztJQUNuRUMsZ0JBQWdCLENBQUNFLE9BQU8sQ0FBRUMsT0FBdUIsSUFBSztNQUNyRCxNQUFNQyxHQUFHLEdBQUdILG1CQUFtQixDQUFDSSxPQUFPLENBQUNG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
|
|
709
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWxldGVPcHRpb25UeXBlcyIsIkRlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sIiwiZ2V0VXBkYXRlZFNlbGVjdGlvbnMiLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsInR5cGUiLCJzZWxlY3RlZENvbnRleHRzIiwiY29udGV4dHNUb1JlbW92ZSIsInJldFNlbGVjdGVkQ29udGV4dHMiLCJmb3JFYWNoIiwiY29udGV4dCIsImlkeCIsImluZGV4T2YiLCJzcGxpY2UiLCJzZXRQcm9wZXJ0eSIsImNsZWFyU2VsZWN0ZWRDb250ZXh0c0Zvck9wdGlvbiIsIm9wdGlvbiIsImdldFByb3BlcnR5IiwiZGVsZXRhYmxlQ29udGV4dHMiLCJkcmFmdFNpYmxpbmdQYWlycyIsImRyYWZ0c1dpdGhEZWxldGFibGVBY3RpdmUiLCJkcmFmdHMiLCJtYXAiLCJjb250ZXh0UGFpciIsImRyYWZ0IiwibGVuZ3RoIiwiYWZ0ZXJEZWxldGVQcm9jZXNzIiwicGFyYW1ldGVycyIsIm9wdGlvbnMiLCJjb250ZXh0cyIsInJlc291cmNlTW9kZWwiLCJsYXN0RGVsZXRlZFJvd0luZGV4IiwiZW50aXR5U2V0TmFtZSIsInVuZGVmaW5lZCIsInNlbGVjdGVkIiwic29tZSIsInBhcmVudENvbnRyb2wiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJzaWxlbnRNb2RlIiwiTWVzc2FnZVRvYXN0Iiwic2hvdyIsImdldFRleHQiLCJkZWxldGVIZWxwZXIiLCJzZXRGb2N1c0FmdGVyRGVsZXRlIiwidGFibGUiLCJkZWxldGVkUm93c0NvdW50IiwidGFibGVSb3dzQ291bnQiLCJnZXRSb3dCaW5kaW5nIiwiZ2V0Q291bnQiLCJvcmlnaW5hbFRhYmxlUm93c0NvdW50IiwibmV4dEZvY3VzUm93SW5kZXgiLCJmb2N1c1JvdyIsImZvY3VzIiwiZ2V0TG9ja2VkQ29udGV4dFVzZXIiLCJsb2NrZWRDb250ZXh0IiwiZHJhZnRBZG1pbkRhdGEiLCJnZXRPYmplY3QiLCJnZXRMb2NrZWRPYmplY3RzVGV4dCIsIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyIsImxvY2tlZENvbnRleHRzIiwicmV0VHh0IiwibG9ja2VkVXNlciIsImdldE5vbkRlbGV0YWJsZUFjdGl2ZXNPZkRyYWZ0c1RleHQiLCJudW1iZXJPZkRyYWZ0cyIsInRvdGFsRGVsZXRhYmxlIiwiZ2V0VW5TYXZlZENvbnRleHRVc2VyIiwidW5TYXZlZENvbnRleHQiLCJzTGFzdENoYW5nZWRCeVVzZXIiLCJnZXRVbnNhdmVkQ29udGV4dHNUZXh0IiwidW5TYXZlZENvbnRleHRzIiwiaW5mb1R4dCIsIm9wdGlvblR4dCIsIm9wdGlvbldpdGhvdXRUeHQiLCJsYXN0Q2hhbmdlZEJ5VXNlciIsImdldE5vbkRlbGV0YWJsZVRleHQiLCJtUGFyYW1ldGVycyIsInRvdGFsTnVtRGVsZXRhYmxlQ29udGV4dHMiLCJkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlIiwibm9uRGVsZXRhYmxlQ29udGV4dHMiLCJUZXh0IiwidGV4dCIsImdldENvbmZpcm1lZERlbGV0YWJsZUNvbnRleHQiLCJyZWR1Y2UiLCJyZXN1bHQiLCJkcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZSIsImNvbmNhdCIsImdldERyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlIiwidXBkYXRlRHJhZnRPcHRpb25zRm9yRGVsZXRhYmxlVGV4dHMiLCJ2Q29udGV4dHMiLCJpdGVtcyIsImxvY2tlZENvbnRleHRzVHh0IiwiZGVsZXRhYmxlRHJhZnRJbmZvIiwicHVzaCIsInNpYmxpbmdJbmZvIiwidGFyZ2V0Q29udGV4dCIsIm5vbkRlbGV0YWJsZUV4aXN0cyIsIm5vbkRlbGV0YWJsZVRleHRDdHJsIiwidW5zYXZlZENoYW5nZXNUeHRzIiwiY29udHJvbCIsIkNIRUNLQk9YIiwibm9uRGVsZXRhYmxlQWN0aXZlc09mRHJhZnRzVGV4dCIsIlRFWFQiLCJ1cGRhdGVDb250ZW50Rm9yRGVsZXRlRGlhbG9nIiwic2V0VGV4dCIsIkNoZWNrQm94Iiwic2VsZWN0Iiwib0V2ZW50IiwiY2hlY2tCb3giLCJnZXRTb3VyY2UiLCJnZXRTZWxlY3RlZCIsIl9nZXRPcmlnaW5hbFNlbGVjdGVkUmVjb3JkIiwiY29udGV4dFRvRGVsZXRlIiwicmV0IiwiZmluZCIsImRyYWZ0U2libGluZ1BhaXIiLCJnZXRPcHRpb25zRm9yRGVsZXRhYmxlVGV4dHMiLCJkaXJlY3REZWxldGFibGVDb250ZXh0cyIsImRlc2NyaXB0aW9uIiwib1RhYmxlIiwic0tleSIsImdldFBhcmVudCIsImdldElkZW50aWZpZXJDb2x1bW4iLCJ0eHQiLCJkZXNjcmlwdGlvblBhdGgiLCJwYXRoIiwib0xpbmVDb250ZXh0RGF0YSIsInNLZXlWYWx1ZSIsInNEZXNjcmlwdGlvbiIsImRlbGV0YWJsZU9wdGlvblR4dCIsInVuc2hpZnQiLCJhbGxEZWxldGFibGVUeHQiLCJkZWxldGVEcmFmdHNCZWZvcmVBY3RpdmVzQW5kR2V0RXJyb3JzIiwibWVzc2FnZUhhbmRsZXIiLCJhcHBDb21wb25lbnQiLCJlbmFibGVTdHJpY3RIYW5kbGluZyIsImRyYWZ0RXJyb3JzIiwiUHJvbWlzZSIsImFsbFNldHRsZWQiLCJkZWxldGVEcmFmdCIsImUiLCJMb2ciLCJlcnJvciIsImdldFBhdGgiLCJyZW1vdmVEZXNjZW5kYW50Q29udGV4dHMiLCJ0ZW1wQ29udGV4dHMiLCJwYXJlbnRDb250ZXh0IiwicGFyZW50SW5kZXgiLCJjaGlsZEluZGV4IiwiY2hpbGRDb250ZXh0IiwiaXNBbmNlc3Rvck9mIiwiZmlsdGVyIiwiZGVsZXRlQ29uZmlybUhhbmRsZXIiLCJkcmFmdEVuYWJsZWQiLCJiaW5kaW5nVHlwZSIsIm1lc3NhZ2VIYW5kbGluZ0tleSIsInJlZ2lzdGVyVG9Ib2xkTWVzc2FnZXMiLCJnZXRJbmRleCIsImJlZm9yZURlbGV0ZUNhbGxCYWNrIiwiY29udGV4dHNUb0RlbGV0ZSIsImFsbCIsImRyYWZ0V2l0aERlbGV0YWJsZUFjdGl2ZSIsInJlc2V0Q2hhbmdlcyIsImdldE1vZGVsIiwiZGVsZXRlIiwiZ2V0Q2Fub25pY2FsUGF0aCIsIkVycm9yIiwicmVtb3ZlSG9sZEtleSIsIm9FcnJvciIsImFkZEdlbmVyaWNEZWxldGVGYWlsdXJlTWVzc2FnZSIsInNob3dNZXNzYWdlcyIsInVuSG9sZEtleSIsIk1lc3NhZ2luZyIsImFkZE1lc3NhZ2VzIiwiTWVzc2FnZSIsIm1lc3NhZ2UiLCJNZXNzYWdlVHlwZSIsInRhcmdldCIsInBlcnNpc3RlbnQiLCJjb2RlIiwidGVjaG5pY2FsRGV0YWlscyIsImZlIiwiY2hhbmdlU2V0UHJlVGV4dEZvclNpbmdsZUVycm9yIiwidXBkYXRlSW5mb0Zyb21TaWJsaW5nIiwiaW5mbyIsImRlbGV0YWJsZVBhdGgiLCJzdGF0aWNEZWxldGFibGUiLCJpc0FjdGl2ZSIsImhhc0FjdGl2ZSIsInNpYmxpbmdJbmZvcm1hdGlvbiIsImNvbXB1dGVTaWJsaW5nSW5mb3JtYXRpb24iLCJzaWJsaW5nRGVsZXRhYmxlIiwicmVxdWVzdFByb3BlcnR5IiwiaGFzRHJhZnQiLCJwcm9wZXJ0aWVzVG9GZXRjaCIsImxvY2tlZCIsInBhdGhNYXBwaW5nIiwiZGVsZXRhYmxlIiwiX2UiLCJnZXRDb250ZXh0SW5mb3MiLCJpc1RyYW5zaWVudCIsImlzSW5hY3RpdmUiLCJtZXRhQ29udGV4dCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFDb250ZXh0IiwiaXNEcmFmdFJvb3QiLCJpc0RyYWZ0Tm9kZSIsImlzSW5hY3RpdmVDb250ZXh0IiwiY29udGV4dERhdGEiLCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YSIsIkluUHJvY2Vzc0J5VXNlciIsIkhhc0RyYWZ0RW50aXR5IiwiSXNBY3RpdmVFbnRpdHkiLCJIYXNBY3RpdmVFbnRpdHkiLCJ1cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyIsImZvckNvbnRleHRNZW51IiwiYXJndW1lbnRzIiwiY29udGV4dEluZm9zIiwiYnVja2V0cyIsImtleSIsInZhbHVlIiwiY29udGV4dFBhdGgiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRlbGV0ZUhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFNpYmxpbmdJbmZvcm1hdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9kcmFmdFwiO1xuaW1wb3J0IGRyYWZ0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9kcmFmdFwiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZUhhbmRsZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoZWNrQm94JFNlbGVjdEV2ZW50IH0gZnJvbSBcInNhcC9tL0NoZWNrQm94XCI7XG5pbXBvcnQgQ2hlY2tCb3ggZnJvbSBcInNhcC9tL0NoZWNrQm94XCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuXG5pbXBvcnQgdHlwZSBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IE1lc3NhZ2VUb2FzdCBmcm9tIFwic2FwL20vTWVzc2FnZVRvYXN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBNZXNzYWdpbmcgZnJvbSBcInNhcC91aS9jb3JlL01lc3NhZ2luZ1wiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCIuL01vZGVsSGVscGVyXCI7XG5cbmVudW0gRGVsZXRlT3B0aW9uVHlwZXMge1xuXHRkZWxldGFibGVDb250ZXh0cyA9IFwiZGVsZXRhYmxlQ29udGV4dHNcIixcblx0ZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZSA9IFwiZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZVwiLFxuXHR1blNhdmVkQ29udGV4dHMgPSBcInVuU2F2ZWRDb250ZXh0c1wiLFxuXHRkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlID0gXCJkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlXCIsXG5cdGRyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlID0gXCJkcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZVwiXG59XG5cbmVudW0gRGVsZXRlRGlhbG9nQ29udGVudENvbnRyb2wge1xuXHRDSEVDS0JPWCA9IFwiY2hlY2tCb3hcIixcblx0VEVYVCA9IFwidGV4dFwiXG59XG5cbmV4cG9ydCB0eXBlIERyYWZ0U2libGluZ1BhaXIgPSB7XG5cdGRyYWZ0OiBPRGF0YVY0Q29udGV4dDtcblx0c2libGluZ0luZm86IFNpYmxpbmdJbmZvcm1hdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIERlbGV0ZU9wdGlvbiA9IHtcblx0dHlwZTogRGVsZXRlT3B0aW9uVHlwZXM7XG5cdGNvbnRleHRzOiBPRGF0YVY0Q29udGV4dFtdO1xuXHRzZWxlY3RlZDogYm9vbGVhbjtcblx0dGV4dD86IHN0cmluZztcblx0Y29udHJvbD86IERlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sO1xufTtcblxuZXhwb3J0IHR5cGUgQ29udGV4dEluZm8gPSB7XG5cdGNvbnRleHQ6IE9EYXRhVjRDb250ZXh0O1xuXHRzaWJsaW5nSW5mbzogU2libGluZ0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkO1xuXHRpc0RyYWZ0Um9vdDogYm9vbGVhbjtcblx0aXNEcmFmdE5vZGU6IGJvb2xlYW47XG5cdGlzQWN0aXZlOiBib29sZWFuO1xuXHRoYXNBY3RpdmU6IGJvb2xlYW47XG5cdGhhc0RyYWZ0OiBib29sZWFuO1xuXHRsb2NrZWQ6IGJvb2xlYW47XG5cdGRlbGV0YWJsZTogYm9vbGVhbjtcblx0c2libGluZ0RlbGV0YWJsZTogYm9vbGVhbjtcblx0aXNJbmFjdGl2ZUNvbnRleHQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEcmFmdEFkbWluaXN0cmF0aXZlRGF0YVR5cGUgPSB7XG5cdERyYWZ0VVVJRDogc3RyaW5nO1xuXHRJblByb2Nlc3NCeVVzZXI/OiBzdHJpbmc7XG5cdEluUHJvY2Vzc0J5VXNlckRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXHRDcmVhdGVkQnlVc2VyRGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdENyZWF0ZWRCeVVzZXI/OiBzdHJpbmc7XG5cdExhc3RDaGFuZ2VkQnlVc2VyRGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdExhc3RDaGFuZ2VkQnlVc2VyPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVsZXRlUGFyYW1ldGVycyA9IHtcblx0aW50ZXJuYWxNb2RlbENvbnRleHQ/OiBJbnRlcm5hbE1vZGVsQ29udGV4dCB8IG51bGw7XG5cdG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cz86IG51bWJlcjtcblx0ZW50aXR5U2V0TmFtZT86IHN0cmluZztcblx0cGFyZW50Q29udHJvbD86IENvbnRyb2w7XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgeyBwYXRoOiBzdHJpbmcgfTtcblx0YmVmb3JlRGVsZXRlQ2FsbEJhY2s/OiBGdW5jdGlvbjtcblx0dW5TYXZlZENvbnRleHRzPzogT0RhdGFWNENvbnRleHRbXTtcblx0ZHJhZnRzV2l0aE5vbkRlbGV0YWJsZUFjdGl2ZT86IE9EYXRhVjRDb250ZXh0W107XG5cdGxvY2tlZENvbnRleHRzPzogT0RhdGFWNENvbnRleHRbXTtcblx0ZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZT86IERyYWZ0U2libGluZ1BhaXJbXTtcblx0c2lsZW50TW9kZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEZWxldGVUZXh0SW5mbyA9IHtcblx0aW5mb1R4dD86IHN0cmluZztcblx0b3B0aW9uVHh0Pzogc3RyaW5nO1xuXHRvcHRpb25XaXRob3V0VHh0PzogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIGdldFVwZGF0ZWRTZWxlY3Rpb25zKFxuXHRpbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdHR5cGU6IERlbGV0ZU9wdGlvblR5cGVzLFxuXHRzZWxlY3RlZENvbnRleHRzOiBPRGF0YVY0Q29udGV4dFtdLFxuXHRjb250ZXh0c1RvUmVtb3ZlOiBPRGF0YVY0Q29udGV4dFtdXG4pOiBPRGF0YVY0Q29udGV4dFtdIHtcblx0Y29uc3QgcmV0U2VsZWN0ZWRDb250ZXh0czogT0RhdGFWNENvbnRleHRbXSA9IFsuLi5zZWxlY3RlZENvbnRleHRzXTtcblx0Y29udGV4dHNUb1JlbW92ZS5mb3JFYWNoKChjb250ZXh0OiBPRGF0YVY0Q29udGV4dCkgPT4ge1xuXHRcdGNvbnN0IGlkeCA9IHJldFNlbGVjdGVkQ29udGV4dHMuaW5kZXhPZihjb250ZXh0KTtcblx0XHRpZiAoaWR4ICE9PSAtMSkge1xuXHRcdFx0cmV0U2VsZWN0ZWRDb250ZXh0cy5zcGxpY2UoaWR4LCAxKTtcblx0XHR9XG5cdH0pO1xuXHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eSh0eXBlLCBbXSk7XG5cblx0cmV0dXJuIHJldFNlbGVjdGVkQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGNsZWFyU2VsZWN0ZWRDb250ZXh0c0Zvck9wdGlvbihpbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsIG9wdGlvbjogRGVsZXRlT3B0aW9uKTogdm9pZCB7XG5cdGxldCBzZWxlY3RlZENvbnRleHRzID0gKGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwic2VsZWN0ZWRDb250ZXh0c1wiKSBhcyBPRGF0YVY0Q29udGV4dFtdKSB8fCBbXTtcblxuXHRpZiAob3B0aW9uLnR5cGUgPT09IERlbGV0ZU9wdGlvblR5cGVzLmRlbGV0YWJsZUNvbnRleHRzKSB7XG5cdFx0c2VsZWN0ZWRDb250ZXh0cyA9IGdldFVwZGF0ZWRTZWxlY3Rpb25zKFxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHREZWxldGVPcHRpb25UeXBlcy5kZWxldGFibGVDb250ZXh0cyxcblx0XHRcdHNlbGVjdGVkQ29udGV4dHMsXG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShEZWxldGVPcHRpb25UeXBlcy5kZWxldGFibGVDb250ZXh0cykgfHwgW11cblx0XHQpO1xuXG5cdFx0Y29uc3QgZHJhZnRTaWJsaW5nUGFpcnMgPSBpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShEZWxldGVPcHRpb25UeXBlcy5kcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlKSB8fCBbXTtcblx0XHRjb25zdCBkcmFmdHMgPSBkcmFmdFNpYmxpbmdQYWlycy5tYXAoKGNvbnRleHRQYWlyOiBEcmFmdFNpYmxpbmdQYWlyKSA9PiB7XG5cdFx0XHRyZXR1cm4gY29udGV4dFBhaXIuZHJhZnQ7XG5cdFx0fSk7XG5cdFx0c2VsZWN0ZWRDb250ZXh0cyA9IGdldFVwZGF0ZWRTZWxlY3Rpb25zKFxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHREZWxldGVPcHRpb25UeXBlcy5kcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlLFxuXHRcdFx0c2VsZWN0ZWRDb250ZXh0cyxcblx0XHRcdGRyYWZ0c1xuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgY29udGV4dHNUb1JlbW92ZSA9IGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KG9wdGlvbi50eXBlKSB8fCBbXTtcblx0XHRzZWxlY3RlZENvbnRleHRzID0gZ2V0VXBkYXRlZFNlbGVjdGlvbnMoaW50ZXJuYWxNb2RlbENvbnRleHQsIG9wdGlvbi50eXBlLCBzZWxlY3RlZENvbnRleHRzLCBjb250ZXh0c1RvUmVtb3ZlKTtcblx0fVxuXHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInNlbGVjdGVkQ29udGV4dHNcIiwgc2VsZWN0ZWRDb250ZXh0cyk7XG5cdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwibnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXCIsIHNlbGVjdGVkQ29udGV4dHMubGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gYWZ0ZXJEZWxldGVQcm9jZXNzKFxuXHRwYXJhbWV0ZXJzOiBEZWxldGVQYXJhbWV0ZXJzLFxuXHRvcHRpb25zOiBEZWxldGVPcHRpb25bXSxcblx0Y29udGV4dHM6IE9EYXRhVjRDb250ZXh0W10sXG5cdHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsXG5cdGxhc3REZWxldGVkUm93SW5kZXg6IG51bWJlclxuKTogdm9pZCB7XG5cdGNvbnN0IHsgaW50ZXJuYWxNb2RlbENvbnRleHQsIGVudGl0eVNldE5hbWUgfSA9IHBhcmFtZXRlcnM7XG5cdGlmIChpbnRlcm5hbE1vZGVsQ29udGV4dCkge1xuXHRcdGlmIChpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcImRlbGV0ZUVuYWJsZWRcIikgIT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRvcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4ge1xuXHRcdFx0XHQvLyBpZiBhbiBvcHRpb24gaXMgc2VsZWN0ZWQsIHRoZW4gaXQgaXMgZGVsZXRlZC4gU28sIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZW0gZnJvbSBzZWxlY3RlZCBjb250ZXh0cy5cblx0XHRcdFx0aWYgKG9wdGlvbi5zZWxlY3RlZCkge1xuXHRcdFx0XHRcdGNsZWFyU2VsZWN0ZWRDb250ZXh0c0Zvck9wdGlvbihpbnRlcm5hbE1vZGVsQ29udGV4dCwgb3B0aW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgb3B0aW9ucyBpcyBub3Qgc2VsZWN0ZWQsIHRoZW4gdGhlIGRlbGV0ZSBidXR0b24gbmVlZHMgdG8gYmUgZW5hYmxlZC5cblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcblx0XHRcdFwiZGVsZXRlRW5hYmxlZFwiLFxuXHRcdFx0b3B0aW9ucy5zb21lKChvcHRpb24pID0+ICFvcHRpb24uc2VsZWN0ZWQpXG5cdFx0KTtcblx0fVxuXG5cdC8vIFRoZSBNdWx0aVZhbHVlRmllbGQgZG9lcyBub3QgbmVlZCByZXNldHRpbmcgb2YgZm9jdXMgbGlrZSB0aGUgdGFibGUsIHdpdGggdGhlIHJlc2V0dGluZyB3ZSBnZXQgY29uc29sZSBlcnJvcnMgd2UgYXZvaWQgdHJvdWdoIHRoaXMgY2hlY2tcblx0aWYgKHBhcmFtZXRlcnMucGFyZW50Q29udHJvbCAhPT0gdW5kZWZpbmVkICYmIHBhcmFtZXRlcnMucGFyZW50Q29udHJvbC5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKSAhPT0gXCJzYXAudWkubWRjLk11bHRpVmFsdWVGaWVsZFwiKSB7XG5cdFx0aWYgKHBhcmFtZXRlcnMuc2lsZW50TW9kZSAhPT0gdHJ1ZSkge1xuXHRcdFx0aWYgKGNvbnRleHRzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9ERUxFVEVfVE9BU1RfU0lOR1VMQVJcIiwgdW5kZWZpbmVkLCBlbnRpdHlTZXROYW1lKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9ERUxFVEVfVE9BU1RfUExVUkFMXCIsIHVuZGVmaW5lZCwgZW50aXR5U2V0TmFtZSkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRkZWxldGVIZWxwZXIuc2V0Rm9jdXNBZnRlckRlbGV0ZShwYXJhbWV0ZXJzLnBhcmVudENvbnRyb2wgYXMgVGFibGUsIGNvbnRleHRzLmxlbmd0aCwgbGFzdERlbGV0ZWRSb3dJbmRleCk7XG5cdH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2V0Rm9jdXNBZnRlckRlbGV0ZSh0YWJsZTogVGFibGUsIGRlbGV0ZWRSb3dzQ291bnQ6IG51bWJlciwgbGFzdERlbGV0ZWRSb3dJbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IHRhYmxlUm93c0NvdW50ID0gdGFibGUuZ2V0Um93QmluZGluZz8uKCk/LmdldENvdW50KCk7XG5cdGNvbnN0IG9yaWdpbmFsVGFibGVSb3dzQ291bnQgPSAodGFibGVSb3dzQ291bnQgPz8gMCkgKyBkZWxldGVkUm93c0NvdW50O1xuXHRsZXQgbmV4dEZvY3VzUm93SW5kZXg7XG5cblx0aWYgKGxhc3REZWxldGVkUm93SW5kZXggIT09IC0xICYmIHRhYmxlUm93c0NvdW50ICE9PSB1bmRlZmluZWQgJiYgdGFibGVSb3dzQ291bnQgPiAwKSB7XG5cdFx0Ly9JZiB0aGUgbGFzdCByb3cgaXMgZGVsZXRlZCwgbW92ZSB0aGUgZm9jdXMgdG8gcHJldmlvdXMgcm93IHRvIGl0XG5cdFx0aWYgKGxhc3REZWxldGVkUm93SW5kZXggPT09IG9yaWdpbmFsVGFibGVSb3dzQ291bnQgLSAxKSB7XG5cdFx0XHRuZXh0Rm9jdXNSb3dJbmRleCA9IHRhYmxlUm93c0NvdW50IC0gMTtcblx0XHRcdC8vRm9yIHRoZSBub3JtYWwgc2NlbmFyaW8sIG1vdmUgdGhlIGZvY3VzIHRvIHRoZSBuZXh0IHJvd1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRuZXh0Rm9jdXNSb3dJbmRleCA9IGxhc3REZWxldGVkUm93SW5kZXggLSBkZWxldGVkUm93c0NvdW50ICsgMTtcblx0XHR9XG5cdFx0YXdhaXQgdGFibGUuZm9jdXNSb3cobmV4dEZvY3VzUm93SW5kZXgsIGZhbHNlKTtcblx0fSBlbHNlIHtcblx0XHQvLyBGb3IgemVybyByb3dzIG9yIGRlZmF1bHQgY2FzZSwgbW92ZSBmb2N1cyB0byB0YWJsZVxuXHRcdHRhYmxlLmZvY3VzKCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0TG9ja2VkQ29udGV4dFVzZXIobG9ja2VkQ29udGV4dDogT0RhdGFWNENvbnRleHQpOiBzdHJpbmcge1xuXHRjb25zdCBkcmFmdEFkbWluRGF0YSA9IGxvY2tlZENvbnRleHQuZ2V0T2JqZWN0KClbXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YVwiXSBhcyBEcmFmdEFkbWluaXN0cmF0aXZlRGF0YVR5cGU7XG5cdHJldHVybiAoZHJhZnRBZG1pbkRhdGEgJiYgZHJhZnRBZG1pbkRhdGFbXCJJblByb2Nlc3NCeVVzZXJcIl0pIHx8IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGdldExvY2tlZE9iamVjdHNUZXh0KHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsIG51bWJlck9mU2VsZWN0ZWRDb250ZXh0czogbnVtYmVyLCBsb2NrZWRDb250ZXh0czogT0RhdGFWNENvbnRleHRbXSk6IHN0cmluZyB7XG5cdGxldCByZXRUeHQgPSBcIlwiO1xuXG5cdGlmIChudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMgPT09IDEgJiYgbG9ja2VkQ29udGV4dHMubGVuZ3RoID09PSAxKSB7XG5cdFx0Ly9vbmx5IG9uZSB1bnNhdmVkIG9iamVjdFxuXHRcdGNvbnN0IGxvY2tlZFVzZXIgPSBnZXRMb2NrZWRDb250ZXh0VXNlcihsb2NrZWRDb250ZXh0c1swXSk7XG5cdFx0cmV0VHh0ID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9TSU5HTEVfT0JKRUNUX0xPQ0tFRFwiLCBbbG9ja2VkVXNlcl0pO1xuXHR9IGVsc2UgaWYgKGxvY2tlZENvbnRleHRzLmxlbmd0aCA9PSAxKSB7XG5cdFx0Y29uc3QgbG9ja2VkVXNlciA9IGdldExvY2tlZENvbnRleHRVc2VyKGxvY2tlZENvbnRleHRzWzBdKTtcblx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX09CSkVDVElORk9fQU5EX09ORV9PQkpFQ1RfTE9DS0VEXCIsIFtcblx0XHRcdG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyxcblx0XHRcdGxvY2tlZFVzZXJcblx0XHRdKTtcblx0fSBlbHNlIGlmIChsb2NrZWRDb250ZXh0cy5sZW5ndGggPiAxKSB7XG5cdFx0cmV0VHh0ID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9PQkpFQ1RJTkZPX0FORF9GRVdfT0JKRUNUU19MT0NLRURcIiwgW1xuXHRcdFx0bG9ja2VkQ29udGV4dHMubGVuZ3RoLFxuXHRcdFx0bnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXG5cdFx0XSk7XG5cdH1cblxuXHRyZXR1cm4gcmV0VHh0O1xufVxuXG5mdW5jdGlvbiBnZXROb25EZWxldGFibGVBY3RpdmVzT2ZEcmFmdHNUZXh0KHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsIG51bWJlck9mRHJhZnRzOiBudW1iZXIsIHRvdGFsRGVsZXRhYmxlOiBudW1iZXIpOiBzdHJpbmcge1xuXHRsZXQgcmV0VHh0ID0gXCJcIjtcblxuXHRpZiAodG90YWxEZWxldGFibGUgPT09IG51bWJlck9mRHJhZnRzKSB7XG5cdFx0aWYgKG51bWJlck9mRHJhZnRzID09PSAxKSB7XG5cdFx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9PTkxZX0RSQUZUX09GX05PTl9ERUxFVEFCTEVfQUNUSVZFXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9PTkxZX0RSQUZUU19PRl9OT05fREVMRVRBQkxFX0FDVElWRVwiKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAobnVtYmVyT2ZEcmFmdHMgPT09IDEpIHtcblx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9EUkFGVF9PRl9OT05fREVMRVRBQkxFX0FDVElWRVwiKTtcblx0fSBlbHNlIHtcblx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9EUkFGVFNfT0ZfTk9OX0RFTEVUQUJMRV9BQ1RJVkVcIik7XG5cdH1cblxuXHRyZXR1cm4gcmV0VHh0O1xufVxuXG5mdW5jdGlvbiBnZXRVblNhdmVkQ29udGV4dFVzZXIodW5TYXZlZENvbnRleHQ6IE9EYXRhVjRDb250ZXh0KTogc3RyaW5nIHtcblx0Y29uc3QgZHJhZnRBZG1pbkRhdGEgPSB1blNhdmVkQ29udGV4dC5nZXRPYmplY3QoKVtcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhXCJdIGFzIERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhVHlwZTtcblx0bGV0IHNMYXN0Q2hhbmdlZEJ5VXNlciA9IFwiXCI7XG5cdGlmIChkcmFmdEFkbWluRGF0YSkge1xuXHRcdHNMYXN0Q2hhbmdlZEJ5VXNlciA9IGRyYWZ0QWRtaW5EYXRhW1wiTGFzdENoYW5nZWRCeVVzZXJEZXNjcmlwdGlvblwiXSB8fCBkcmFmdEFkbWluRGF0YVtcIkxhc3RDaGFuZ2VkQnlVc2VyXCJdIHx8IFwiXCI7XG5cdH1cblxuXHRyZXR1cm4gc0xhc3RDaGFuZ2VkQnlVc2VyO1xufVxuXG5mdW5jdGlvbiBnZXRVbnNhdmVkQ29udGV4dHNUZXh0KFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsLFxuXHRudW1iZXJPZlNlbGVjdGVkQ29udGV4dHM6IG51bWJlcixcblx0dW5TYXZlZENvbnRleHRzOiBPRGF0YVY0Q29udGV4dFtdLFxuXHR0b3RhbERlbGV0YWJsZTogbnVtYmVyXG4pOiBEZWxldGVUZXh0SW5mbyB7XG5cdGxldCBpbmZvVHh0ID0gXCJcIixcblx0XHRvcHRpb25UeHQgPSBcIlwiLFxuXHRcdG9wdGlvbldpdGhvdXRUeHQgPSBmYWxzZTtcblx0aWYgKG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA9PT0gMSAmJiB1blNhdmVkQ29udGV4dHMubGVuZ3RoID09PSAxKSB7XG5cdFx0Ly9vbmx5IG9uZSB1bnNhdmVkIG9iamVjdCBhcmUgc2VsZWN0ZWRcblx0XHRjb25zdCBsYXN0Q2hhbmdlZEJ5VXNlciA9IGdldFVuU2F2ZWRDb250ZXh0VXNlcih1blNhdmVkQ29udGV4dHNbMF0pO1xuXHRcdGluZm9UeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX1VOU0FWRURfQ0hBTkdFU1wiLCBbbGFzdENoYW5nZWRCeVVzZXJdKTtcblx0XHRvcHRpb25XaXRob3V0VHh0ID0gdHJ1ZTtcblx0fSBlbHNlIGlmIChudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMgPT09IHVuU2F2ZWRDb250ZXh0cy5sZW5ndGgpIHtcblx0XHQvL29ubHkgbXVsdGlwbGUgdW5zYXZlZCBvYmplY3RzIGFyZSBzZWxlY3RlZFxuXHRcdGluZm9UeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX1VOU0FWRURfQ0hBTkdFU19NVUxUSVBMRV9PQkpFQ1RTXCIpO1xuXHRcdG9wdGlvbldpdGhvdXRUeHQgPSB0cnVlO1xuXHR9IGVsc2UgaWYgKHRvdGFsRGVsZXRhYmxlID09PSB1blNhdmVkQ29udGV4dHMubGVuZ3RoKSB7XG5cdFx0Ly8gbm9uLWRlbGV0YWJsZS9sb2NrZWQgZXhpc3RzLCBhbGwgZGVsZXRhYmxlIGFyZSB1bnNhdmVkIGJ5IG90aGVyc1xuXHRcdGlmICh1blNhdmVkQ29udGV4dHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRjb25zdCBsYXN0Q2hhbmdlZEJ5VXNlciA9IGdldFVuU2F2ZWRDb250ZXh0VXNlcih1blNhdmVkQ29udGV4dHNbMF0pO1xuXHRcdFx0aW5mb1R4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfVU5TQVZFRF9BTkRfRkVXX09CSkVDVFNfTE9DS0VEX1NJTkdVTEFSXCIsIFtcblx0XHRcdFx0bGFzdENoYW5nZWRCeVVzZXJcblx0XHRcdF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpbmZvVHh0ID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9VTlNBVkVEX0FORF9GRVdfT0JKRUNUU19MT0NLRURfUExVUkFMXCIpO1xuXHRcdH1cblx0XHRvcHRpb25XaXRob3V0VHh0ID0gdHJ1ZTtcblx0fSBlbHNlIGlmICh0b3RhbERlbGV0YWJsZSA+IHVuU2F2ZWRDb250ZXh0cy5sZW5ndGgpIHtcblx0XHQvLyBub24tZGVsZXRhYmxlL2xvY2tlZCBleGlzdHMsIGRlbGV0YWJsZSBpbmNsdWRlIHVuc2F2ZWQgYW5kIG90aGVyIHR5cGVzLlxuXHRcdGlmICh1blNhdmVkQ29udGV4dHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRjb25zdCBsYXN0Q2hhbmdlZEJ5VXNlciA9IGdldFVuU2F2ZWRDb250ZXh0VXNlcih1blNhdmVkQ29udGV4dHNbMF0pO1xuXHRcdFx0b3B0aW9uVHh0ID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9PQkpFQ1RJTkZPX0FORF9GRVdfT0JKRUNUU19VTlNBVkVEX1NJTkdVTEFSXCIsIFtcblx0XHRcdFx0bGFzdENoYW5nZWRCeVVzZXJcblx0XHRcdF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvcHRpb25UeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX09CSkVDVElORk9fQU5EX0ZFV19PQkpFQ1RTX1VOU0FWRURfUExVUkFMXCIpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IGluZm9UeHQsIG9wdGlvblR4dCwgb3B0aW9uV2l0aG91dFR4dCB9O1xufVxuXG5mdW5jdGlvbiBnZXROb25EZWxldGFibGVUZXh0KFxuXHRtUGFyYW1ldGVyczogRGVsZXRlUGFyYW1ldGVycyxcblx0dG90YWxOdW1EZWxldGFibGVDb250ZXh0czogbnVtYmVyLFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsXG4pOiBUZXh0IHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgeyBudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMsIGVudGl0eVNldE5hbWUsIGxvY2tlZENvbnRleHRzID0gW10sIGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUgPSBbXSB9ID0gbVBhcmFtZXRlcnM7XG5cdGNvbnN0IG5vbkRlbGV0YWJsZUNvbnRleHRzID1cblx0XHRudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMhIC0gKGxvY2tlZENvbnRleHRzLmxlbmd0aCArIHRvdGFsTnVtRGVsZXRhYmxlQ29udGV4dHMgLSBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlLmxlbmd0aCk7XG5cdGxldCByZXRUeHQgPSBcIlwiO1xuXG5cdGlmIChcblx0XHRub25EZWxldGFibGVDb250ZXh0cyA+IDAgJiZcblx0XHQodG90YWxOdW1EZWxldGFibGVDb250ZXh0cyA9PT0gMCB8fCBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlLmxlbmd0aCA9PT0gdG90YWxOdW1EZWxldGFibGVDb250ZXh0cylcblx0KSB7XG5cdFx0Ly8gMS4gTm9uZSBvZiB0aGUgY2NvbnRleHRzIGFyZSBkZWxldGFibGVcblx0XHQvLyAyLiBPbmx5IGRyYWZ0cyBvZiBub24gZGVsZXRhYmxlIGNvbnRleHRzIGV4aXN0LlxuXHRcdGlmIChsb2NrZWRDb250ZXh0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHQvLyBMb2NrZWQgY29udGV4dHMgZXhpc3Rcblx0XHRcdGlmIChub25EZWxldGFibGVDb250ZXh0cyA9PT0gMSkge1xuXHRcdFx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX0FMTF9SRU1BSU5JTkdfTk9OX0RFTEVUQUJMRV9TSU5HVUxBUlwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldFR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfQUxMX1JFTUFJTklOR19OT05fREVMRVRBQkxFX1BMVVJBTFwiKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKG5vbkRlbGV0YWJsZUNvbnRleHRzID09PSAxKSB7XG5cdFx0XHQvLyBPbmx5IHB1cmUgbm9uLWRlbGV0YWJsZSBjb250ZXh0cyBleGlzdCBzaW5nbGVcblx0XHRcdHJldFR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcblx0XHRcdFx0XCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX1NJTkdMRV9BTkRfT05FX09CSkVDVF9OT05fREVMRVRBQkxFXCIsXG5cdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0ZW50aXR5U2V0TmFtZVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gT25seSBwdXJlIG5vbi1kZWxldGFibGUgY29udGV4dHMgZXhpc3QgbXVsdGlwbGVcblx0XHRcdHJldFR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcblx0XHRcdFx0XCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX01VTFRJUExFX0FORF9BTExfT0JKRUNUX05PTl9ERUxFVEFCTEVcIixcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRlbnRpdHlTZXROYW1lXG5cdFx0XHQpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChub25EZWxldGFibGVDb250ZXh0cyA9PT0gMSkge1xuXHRcdC8vIGRlbGV0YWJsZSBhbmQgbm9uLWRlbGV0YWJsZSBleGlzdHMgdG9nZXRoZXIsIHNpbmdsZVxuXHRcdHJldFR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcblx0XHRcdFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9PQkpFQ1RJTkZPX0FORF9PTkVfT0JKRUNUX05PTl9ERUxFVEFCTEVcIixcblx0XHRcdFtudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNdLFxuXHRcdFx0ZW50aXR5U2V0TmFtZVxuXHRcdCk7XG5cdH0gZWxzZSBpZiAobm9uRGVsZXRhYmxlQ29udGV4dHMgPiAxKSB7XG5cdFx0Ly8gZGVsZXRhYmxlIGFuZCBub24tZGVsZXRhYmxlIGV4aXN0cyB0b2dldGhlciwgbXVsdGlwbGVcblx0XHRyZXRUeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXG5cdFx0XHRcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUSU5GT19BTkRfRkVXX09CSkVDVFNfTk9OX0RFTEVUQUJMRVwiLFxuXHRcdFx0W25vbkRlbGV0YWJsZUNvbnRleHRzLCBudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNdLFxuXHRcdFx0ZW50aXR5U2V0TmFtZVxuXHRcdCk7XG5cdH1cblxuXHRyZXR1cm4gcmV0VHh0ID8gbmV3IFRleHQoeyB0ZXh0OiByZXRUeHQgfSkgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldENvbmZpcm1lZERlbGV0YWJsZUNvbnRleHQoY29udGV4dHM6IE9EYXRhVjRDb250ZXh0W10sIG9wdGlvbnM6IERlbGV0ZU9wdGlvbltdKTogT0RhdGFWNENvbnRleHRbXSB7XG5cdHJldHVybiBvcHRpb25zLnJlZHVjZSgocmVzdWx0LCBvcHRpb24pID0+IHtcblx0XHRyZXR1cm4gb3B0aW9uLnNlbGVjdGVkICYmIG9wdGlvbi50eXBlICE9PSBEZWxldGVPcHRpb25UeXBlcy5kcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZSA/IHJlc3VsdC5jb25jYXQob3B0aW9uLmNvbnRleHRzKSA6IHJlc3VsdDtcblx0fSwgY29udGV4dHMpO1xufVxuXG5mdW5jdGlvbiBnZXREcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZShvcHRpb25zOiBEZWxldGVPcHRpb25bXSk6IE9EYXRhVjRDb250ZXh0W10ge1xuXHRjb25zdCBjb250ZXh0czogT0RhdGFWNENvbnRleHRbXSA9IFtdO1xuXHRyZXR1cm4gb3B0aW9ucy5yZWR1Y2UoKHJlc3VsdCwgb3B0aW9uKSA9PiB7XG5cdFx0cmV0dXJuIG9wdGlvbi5zZWxlY3RlZCAmJiBvcHRpb24udHlwZSA9PT0gRGVsZXRlT3B0aW9uVHlwZXMuZHJhZnRzVG9EZWxldGVCZWZvcmVBY3RpdmUgPyByZXN1bHQuY29uY2F0KG9wdGlvbi5jb250ZXh0cykgOiByZXN1bHQ7XG5cdH0sIGNvbnRleHRzKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlRHJhZnRPcHRpb25zRm9yRGVsZXRhYmxlVGV4dHMoXG5cdG1QYXJhbWV0ZXJzOiBEZWxldGVQYXJhbWV0ZXJzLFxuXHR2Q29udGV4dHM6IE9EYXRhVjRDb250ZXh0W10sXG5cdHRvdGFsRGVsZXRhYmxlOiBudW1iZXIsXG5cdHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsXG5cdGl0ZW1zOiBDb250cm9sW10sXG5cdG9wdGlvbnM6IERlbGV0ZU9wdGlvbltdXG4pOiB2b2lkIHtcblx0bGV0IHsgbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzLCBkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlLCB1blNhdmVkQ29udGV4dHMsIGxvY2tlZENvbnRleHRzLCBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlIH0gPVxuXHRcdG1QYXJhbWV0ZXJzO1xuXHRkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlID8/PSBbXTtcblx0dW5TYXZlZENvbnRleHRzID8/PSBbXTtcblx0bG9ja2VkQ29udGV4dHMgPz89IFtdO1xuXHRkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlID8/PSBbXTtcblx0bnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzID8/PSAwO1xuXHRsZXQgbG9ja2VkQ29udGV4dHNUeHQgPSBcIlwiO1xuXG5cdC8vIGRyYWZ0cyB3aXRoIGFjdGl2ZVxuXHRpZiAoZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZS5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3QgZHJhZnRzVG9EZWxldGVCZWZvcmVBY3RpdmU6IE9EYXRhVjRDb250ZXh0W10gPSBbXTtcblx0XHRkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlLmZvckVhY2goKGRlbGV0YWJsZURyYWZ0SW5mbzogRHJhZnRTaWJsaW5nUGFpcikgPT4ge1xuXHRcdFx0Ly8gSW4gZWl0aGVyIGNhc2VzLCBpZiBhbiBvd24gZHJhZnQgaXMgbG9ja2VkIG9yIG5vdCB0aGUgZHJhZnQgbmVlZHMgdG8gYmUgZGlzY2FyZGVkIGJlZm9yZSBkZWxldGluZyBhY3RpdmUgcmVjb3JkLlxuXHRcdFx0ZHJhZnRzVG9EZWxldGVCZWZvcmVBY3RpdmUucHVzaChkZWxldGFibGVEcmFmdEluZm8uZHJhZnQpO1xuXHRcdFx0dkNvbnRleHRzLnB1c2goZGVsZXRhYmxlRHJhZnRJbmZvLnNpYmxpbmdJbmZvLnRhcmdldENvbnRleHQpO1xuXHRcdH0pO1xuXHRcdGlmIChkcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRvcHRpb25zLnB1c2goe1xuXHRcdFx0XHR0eXBlOiBEZWxldGVPcHRpb25UeXBlcy5kcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZSxcblx0XHRcdFx0Y29udGV4dHM6IGRyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlLFxuXHRcdFx0XHRzZWxlY3RlZDogdHJ1ZVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gaXRlbXMgbG9ja2VkIG1zZ1xuXHRpZiAobG9ja2VkQ29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdGxvY2tlZENvbnRleHRzVHh0ID0gZGVsZXRlSGVscGVyLmdldExvY2tlZE9iamVjdHNUZXh0KHJlc291cmNlTW9kZWwsIG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cywgbG9ja2VkQ29udGV4dHMpIHx8IFwiXCI7XG5cdFx0aXRlbXMucHVzaChuZXcgVGV4dCh7IHRleHQ6IGxvY2tlZENvbnRleHRzVHh0IH0pKTtcblx0fVxuXG5cdC8vIG5vbiBkZWxldGFibGUgbXNnXG5cdGNvbnN0IG5vbkRlbGV0YWJsZUV4aXN0cyA9IG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyAhPSB0b3RhbERlbGV0YWJsZSAtIGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUubGVuZ3RoICsgbG9ja2VkQ29udGV4dHMubGVuZ3RoO1xuXHRjb25zdCBub25EZWxldGFibGVUZXh0Q3RybCA9IG5vbkRlbGV0YWJsZUV4aXN0cyAmJiBkZWxldGVIZWxwZXIuZ2V0Tm9uRGVsZXRhYmxlVGV4dChtUGFyYW1ldGVycywgdG90YWxEZWxldGFibGUsIHJlc291cmNlTW9kZWwpO1xuXHRpZiAobm9uRGVsZXRhYmxlVGV4dEN0cmwpIHtcblx0XHRpdGVtcy5wdXNoKG5vbkRlbGV0YWJsZVRleHRDdHJsKTtcblx0fVxuXG5cdC8vIG9wdGlvbjogdW5zYXZlZCBjaGFuZ2VzIGJ5IG90aGVyc1xuXHRpZiAodW5TYXZlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcblx0XHRjb25zdCB1bnNhdmVkQ2hhbmdlc1R4dHMgPVxuXHRcdFx0ZGVsZXRlSGVscGVyLmdldFVuc2F2ZWRDb250ZXh0c1RleHQocmVzb3VyY2VNb2RlbCwgbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzLCB1blNhdmVkQ29udGV4dHMsIHRvdGFsRGVsZXRhYmxlKSB8fCB7fTtcblx0XHRpZiAodW5zYXZlZENoYW5nZXNUeHRzLmluZm9UeHQpIHtcblx0XHRcdGl0ZW1zLnB1c2gobmV3IFRleHQoeyB0ZXh0OiB1bnNhdmVkQ2hhbmdlc1R4dHMuaW5mb1R4dCB9KSk7XG5cdFx0fVxuXHRcdGlmICh1bnNhdmVkQ2hhbmdlc1R4dHMub3B0aW9uVHh0IHx8IHVuc2F2ZWRDaGFuZ2VzVHh0cy5vcHRpb25XaXRob3V0VHh0KSB7XG5cdFx0XHRvcHRpb25zLnB1c2goe1xuXHRcdFx0XHR0eXBlOiBEZWxldGVPcHRpb25UeXBlcy51blNhdmVkQ29udGV4dHMsXG5cdFx0XHRcdGNvbnRleHRzOiB1blNhdmVkQ29udGV4dHMsXG5cdFx0XHRcdHRleHQ6IHVuc2F2ZWRDaGFuZ2VzVHh0cy5vcHRpb25UeHQsXG5cdFx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdFx0XHRjb250cm9sOiBEZWxldGVEaWFsb2dDb250ZW50Q29udHJvbC5DSEVDS0JPWFxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gb3B0aW9uOiBkcmFmdHMgd2l0aCBhY3RpdmUgbm90IGRlbGV0YWJsZVxuXHRpZiAoZHJhZnRzV2l0aE5vbkRlbGV0YWJsZUFjdGl2ZS5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3Qgbm9uRGVsZXRhYmxlQWN0aXZlc09mRHJhZnRzVGV4dCA9XG5cdFx0XHRkZWxldGVIZWxwZXIuZ2V0Tm9uRGVsZXRhYmxlQWN0aXZlc09mRHJhZnRzVGV4dChyZXNvdXJjZU1vZGVsLCBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlLmxlbmd0aCwgdG90YWxEZWxldGFibGUpIHx8IFwiXCI7XG5cdFx0aWYgKG5vbkRlbGV0YWJsZUFjdGl2ZXNPZkRyYWZ0c1RleHQpIHtcblx0XHRcdG9wdGlvbnMucHVzaCh7XG5cdFx0XHRcdHR5cGU6IERlbGV0ZU9wdGlvblR5cGVzLmRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUsXG5cdFx0XHRcdGNvbnRleHRzOiBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlLFxuXHRcdFx0XHR0ZXh0OiBub25EZWxldGFibGVBY3RpdmVzT2ZEcmFmdHNUZXh0LFxuXHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0Y29udHJvbDogdG90YWxEZWxldGFibGUgPiAwID8gRGVsZXRlRGlhbG9nQ29udGVudENvbnRyb2wuQ0hFQ0tCT1ggOiBEZWxldGVEaWFsb2dDb250ZW50Q29udHJvbC5URVhUXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQ29udGVudEZvckRlbGV0ZURpYWxvZyhvcHRpb25zOiBEZWxldGVPcHRpb25bXSwgaXRlbXM6IENvbnRyb2xbXSk6IHZvaWQge1xuXHRpZiAob3B0aW9ucy5sZW5ndGggPT09IDEpIHtcblx0XHQvLyBTaW5nbGUgb3B0aW9uIGRvZXNuJ3QgbmVlZCBjaGVja0JveFxuXHRcdGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNbMF07XG5cdFx0aWYgKG9wdGlvbi50ZXh0KSB7XG5cdFx0XHRjb25zdCB0ZXh0ID0gbmV3IFRleHQoKTtcblx0XHRcdHRleHQuc2V0VGV4dChvcHRpb24udGV4dCk7XG5cdFx0XHRpdGVtcy5wdXNoKHRleHQpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChvcHRpb25zLmxlbmd0aCA+IDEpIHtcblx0XHQvLyBNdWx0aXBsZSBPcHRpb25zXG5cblx0XHQvLyBUZXh0c1xuXHRcdG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBEZWxldGVPcHRpb24pID0+IHtcblx0XHRcdGlmIChvcHRpb24uY29udHJvbCA9PT0gXCJ0ZXh0XCIgJiYgb3B0aW9uLnRleHQpIHtcblx0XHRcdFx0Y29uc3QgdGV4dCA9IG5ldyBUZXh0KCk7XG5cdFx0XHRcdHRleHQuc2V0VGV4dChvcHRpb24udGV4dCk7XG5cdFx0XHRcdGl0ZW1zLnB1c2godGV4dCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Ly8gQ2hlY2tCb3hzXG5cdFx0b3B0aW9ucy5mb3JFYWNoKChvcHRpb246IERlbGV0ZU9wdGlvbikgPT4ge1xuXHRcdFx0aWYgKG9wdGlvbi5jb250cm9sID09PSBcImNoZWNrQm94XCIgJiYgb3B0aW9uLnRleHQpIHtcblx0XHRcdFx0aXRlbXMucHVzaChcblx0XHRcdFx0XHRuZXcgQ2hlY2tCb3goe1xuXHRcdFx0XHRcdFx0dGV4dDogb3B0aW9uLnRleHQsXG5cdFx0XHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdHNlbGVjdDogZnVuY3Rpb24gKG9FdmVudDogQ2hlY2tCb3gkU2VsZWN0RXZlbnQpOiB2b2lkIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgY2hlY2tCb3ggPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNlbGVjdGVkID0gY2hlY2tCb3guZ2V0U2VsZWN0ZWQoKTtcblx0XHRcdFx0XHRcdFx0b3B0aW9uLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuXG4vKipcbiAqIEdldCB0aGUgb3JpZ2luYWwgcmVjb3JkIHNlbGVjdGVkIG9uIHRoZSBVSS5cbiAqXG4gKiBJbiB0aGUgY2FzZSB0aGUgY29udGV4dCB0byBkZWxldGUgaXMgYW4gYWN0aXZlIHJlY29yZCBidXQgdGhlIHNlbGVjdGVkIGNvbnRleHQgaXMgYSBkcmFmdCByZWNvcmQuXG4gKiBAcGFyYW0gbVBhcmFtZXRlcnMgRGVsZXRlIHBhcmFtZXRlcnMgYW5kIGluZm9ybWF0aW9uIG9mIHNlbGVjdGVkIGNvbnRleHRzLlxuICogQHBhcmFtIGNvbnRleHRUb0RlbGV0ZSBPRGF0YVY0Q29udGV4dCB0byBjaGVjay5cbiAqIEByZXR1cm5zIE9EYXRhVjRDb250ZXh0IGZvciBkZWxldGUuXG4gKi9cbmZ1bmN0aW9uIF9nZXRPcmlnaW5hbFNlbGVjdGVkUmVjb3JkKG1QYXJhbWV0ZXJzOiBEZWxldGVQYXJhbWV0ZXJzLCBjb250ZXh0VG9EZWxldGU6IE9EYXRhVjRDb250ZXh0KTogT0RhdGFWNENvbnRleHQge1xuXHRjb25zdCB7IGRyYWZ0c1dpdGhEZWxldGFibGVBY3RpdmUgfSA9IG1QYXJhbWV0ZXJzO1xuXHRjb25zdCByZXQgPSBkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlPy5maW5kKChkcmFmdFNpYmxpbmdQYWlyKSA9PiBkcmFmdFNpYmxpbmdQYWlyLnNpYmxpbmdJbmZvLnRhcmdldENvbnRleHQgPT09IGNvbnRleHRUb0RlbGV0ZSk7XG5cdHJldHVybiByZXQ/LmRyYWZ0ID8gcmV0LmRyYWZ0IDogY29udGV4dFRvRGVsZXRlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgcG9zc2libGUgb3B0aW9ucyBmb3IgZGVsZXRpb24gb2YgdGhlIHNlbGVjdGVkIGNvbnRleHRzLlxuICogQHBhcmFtIG1QYXJhbWV0ZXJzIERlbGV0ZSBwYXJhbWV0ZXJzIGFuZCBpbmZvcm1hdGlvbiBvZiBzZWxlY3RlZCBjb250ZXh0cy5cbiAqIEBwYXJhbSBkaXJlY3REZWxldGFibGVDb250ZXh0cyBDb250ZXh0cyB0aGF0IGNhbiBiZSBkZWxldGFibGUgZGlyZWN0bHkuXG4gKiBAcGFyYW0gcmVzb3VyY2VNb2RlbCBSZXNvdXJjZSBtb2RlbC5cbiAqIEByZXR1cm5zIE9wdGlvbnMgdGhhdCBhcmUgcG9zc2libGUgZm9yIHNlbGVjdGVkIHJlY29yZHMuXG4gKi9cbmZ1bmN0aW9uIGdldE9wdGlvbnNGb3JEZWxldGFibGVUZXh0cyhcblx0bVBhcmFtZXRlcnM6IERlbGV0ZVBhcmFtZXRlcnMsXG5cdGRpcmVjdERlbGV0YWJsZUNvbnRleHRzOiBPRGF0YVY0Q29udGV4dFtdLFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsXG4pOiBEZWxldGVPcHRpb25bXSB7XG5cdGxldCB7IG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cywgbG9ja2VkQ29udGV4dHMsIGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUsIHVuU2F2ZWRDb250ZXh0cyB9ID0gbVBhcmFtZXRlcnM7XG5cdGNvbnN0IHsgZW50aXR5U2V0TmFtZSwgcGFyZW50Q29udHJvbCwgZGVzY3JpcHRpb24gfSA9IG1QYXJhbWV0ZXJzO1xuXHRkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlID8/PSBbXTtcblx0dW5TYXZlZENvbnRleHRzID8/PSBbXTtcblx0bG9ja2VkQ29udGV4dHMgPz89IFtdO1xuXHRkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlID8/PSBbXTtcblx0bnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzID8/PSAwO1xuXHRjb25zdCB0b3RhbERlbGV0YWJsZSA9IGRpcmVjdERlbGV0YWJsZUNvbnRleHRzLmxlbmd0aCArIGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUubGVuZ3RoICsgdW5TYXZlZENvbnRleHRzLmxlbmd0aDtcblx0Y29uc3Qgbm9uRGVsZXRhYmxlQ29udGV4dHMgPSBudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMgLSAobG9ja2VkQ29udGV4dHMubGVuZ3RoICsgdG90YWxEZWxldGFibGUgLSBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlLmxlbmd0aCk7XG5cdGNvbnN0IG9wdGlvbnM6IERlbGV0ZU9wdGlvbltdID0gW107XG5cblx0aWYgKG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA9PT0gMSAmJiBudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMgPT09IGRpcmVjdERlbGV0YWJsZUNvbnRleHRzLmxlbmd0aCkge1xuXHRcdC8vIHNpbmdsZSBkZWxldGFibGUgY29udGV4dFxuXHRcdGNvbnN0IG9UYWJsZSA9IHBhcmVudENvbnRyb2wgYXMgVGFibGU7XG5cdFx0Y29uc3Qgc0tleSA9IG9UYWJsZSAmJiAoKG9UYWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0SWRlbnRpZmllckNvbHVtbigpIGFzIHN0cmluZyk7XG5cdFx0bGV0IHR4dDtcblx0XHRpZiAoc0tleSkge1xuXHRcdFx0Y29uc3QgZGVzY3JpcHRpb25QYXRoID0gZGVzY3JpcHRpb24gJiYgKGRlc2NyaXB0aW9uIGFzIHsgcGF0aD86IHN0cmluZyB9KS5wYXRoO1xuXHRcdFx0Ly8gSW4gY2FzZSB0aGUgc2VsZWN0ZWQgcmVjb3JkIGlzIGRyYWZ0KGluIFVJKS4gVGhlIEFjdGl2ZSByZWNvcmQgbmVlZHMgdG8gYmUgZGVsZXRlZChkaXJlY3REZWxldGFibGVDb250ZXh0cyBoYXMgYWN0aXZlIHJlY29yZCksIGJ1dCBkYXRhIGlzIG5vdCByZXF1ZXN0ZWQgb3IgcGFydGlhbC4gV2UgZ2V0IGRhdGEgZnJvbSB0aGUgZHJhZnQuXG5cdFx0XHRjb25zdCBvTGluZUNvbnRleHREYXRhID0gX2dldE9yaWdpbmFsU2VsZWN0ZWRSZWNvcmQobVBhcmFtZXRlcnMsIGRpcmVjdERlbGV0YWJsZUNvbnRleHRzWzBdKS5nZXRPYmplY3QoKTtcblx0XHRcdGNvbnN0IHNLZXlWYWx1ZSA9IHNLZXkgPyBvTGluZUNvbnRleHREYXRhW3NLZXldIDogdW5kZWZpbmVkO1xuXHRcdFx0Y29uc3Qgc0Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25QYXRoICYmIG9MaW5lQ29udGV4dERhdGFbZGVzY3JpcHRpb25QYXRoXTtcblx0XHRcdGlmIChzS2V5VmFsdWUpIHtcblx0XHRcdFx0aWYgKHNEZXNjcmlwdGlvbiAmJiBkZXNjcmlwdGlvbiAmJiBzS2V5ICE9PSAoZGVzY3JpcHRpb24gYXMgeyBwYXRoPzogc3RyaW5nIH0pLnBhdGgpIHtcblx0XHRcdFx0XHR0eHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUSU5GT1wiLFxuXHRcdFx0XHRcdFx0W3NLZXlWYWx1ZSwgc0Rlc2NyaXB0aW9uXSxcblx0XHRcdFx0XHRcdGVudGl0eVNldE5hbWVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUVElUTEVfT05MWVwiLCBbc0tleVZhbHVlXSwgZW50aXR5U2V0TmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUVElUTEVfU0lOR1VMQVJcIiwgdW5kZWZpbmVkLCBlbnRpdHlTZXROYW1lKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dHh0ID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9PQkpFQ1RUSVRMRV9TSU5HVUxBUlwiLCB1bmRlZmluZWQsIGVudGl0eVNldE5hbWUpO1xuXHRcdH1cblx0XHRvcHRpb25zLnB1c2goe1xuXHRcdFx0dHlwZTogRGVsZXRlT3B0aW9uVHlwZXMuZGVsZXRhYmxlQ29udGV4dHMsXG5cdFx0XHRjb250ZXh0czogZGlyZWN0RGVsZXRhYmxlQ29udGV4dHMsXG5cdFx0XHR0ZXh0OiB0eHQsXG5cdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdGNvbnRyb2w6IERlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sLlRFWFRcblx0XHR9KTtcblx0fSBlbHNlIGlmIChcblx0XHR1blNhdmVkQ29udGV4dHMubGVuZ3RoICE9PSB0b3RhbERlbGV0YWJsZSAmJlxuXHRcdG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA+IDAgJiZcblx0XHQoZGlyZWN0RGVsZXRhYmxlQ29udGV4dHMubGVuZ3RoID4gMCB8fCAodW5TYXZlZENvbnRleHRzLmxlbmd0aCA+IDAgJiYgZHJhZnRzV2l0aE5vbkRlbGV0YWJsZUFjdGl2ZS5sZW5ndGggPiAwKSlcblx0KSB7XG5cdFx0aWYgKG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA+IGRpcmVjdERlbGV0YWJsZUNvbnRleHRzLmxlbmd0aCAmJiBub25EZWxldGFibGVDb250ZXh0cyArIGxvY2tlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vIG90aGVyIHR5cGVzIGV4aXN0cyB3aXRoIHB1cmUgZGVsZXRhYmxlIG9uZXNcblx0XHRcdGxldCBkZWxldGFibGVPcHRpb25UeHQgPSBcIlwiO1xuXHRcdFx0aWYgKHRvdGFsRGVsZXRhYmxlID09PSAxKSB7XG5cdFx0XHRcdGRlbGV0YWJsZU9wdGlvblR4dCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcblx0XHRcdFx0XHRcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUVElUTEVfU0lOR1VMQVJfTk9OX0RFTEVUQUJMRVwiLFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHRlbnRpdHlTZXROYW1lXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWxldGFibGVPcHRpb25UeHQgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXG5cdFx0XHRcdFx0XCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9DT05GSVJNX0RFTEVURV9XSVRIX09CSkVDVFRJVExFX1BMVVJBTF9OT05fREVMRVRBQkxFXCIsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdGVudGl0eVNldE5hbWVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdG9wdGlvbnMudW5zaGlmdCh7XG5cdFx0XHRcdHR5cGU6IERlbGV0ZU9wdGlvblR5cGVzLmRlbGV0YWJsZUNvbnRleHRzLFxuXHRcdFx0XHRjb250ZXh0czogZGlyZWN0RGVsZXRhYmxlQ29udGV4dHMsXG5cdFx0XHRcdHRleHQ6IGRlbGV0YWJsZU9wdGlvblR4dCxcblx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdGNvbnRyb2w6IERlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sLlRFWFRcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBvbmx5IGRlbGV0YWJsZVxuXHRcdFx0Y29uc3QgYWxsRGVsZXRhYmxlVHh0ID1cblx0XHRcdFx0dG90YWxEZWxldGFibGUgPT09IDFcblx0XHRcdFx0XHQ/IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX0NPTkZJUk1fREVMRVRFX1dJVEhfT0JKRUNUVElUTEVfU0lOR1VMQVJcIiwgdW5kZWZpbmVkLCBlbnRpdHlTZXROYW1lKVxuXHRcdFx0XHRcdDogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19UUkFOU0FDVElPTl9IRUxQRVJfQ09ORklSTV9ERUxFVEVfV0lUSF9PQkpFQ1RUSVRMRV9QTFVSQUxcIiwgdW5kZWZpbmVkLCBlbnRpdHlTZXROYW1lKTtcblx0XHRcdG9wdGlvbnMucHVzaCh7XG5cdFx0XHRcdHR5cGU6IERlbGV0ZU9wdGlvblR5cGVzLmRlbGV0YWJsZUNvbnRleHRzLFxuXHRcdFx0XHRjb250ZXh0czogZGlyZWN0RGVsZXRhYmxlQ29udGV4dHMsXG5cdFx0XHRcdHRleHQ6IGFsbERlbGV0YWJsZVR4dCxcblx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdGNvbnRyb2w6IERlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sLlRFWFRcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvcHRpb25zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVEcmFmdHNCZWZvcmVBY3RpdmVzQW5kR2V0RXJyb3JzKFxuXHRkcmFmdHNUb0RlbGV0ZUJlZm9yZUFjdGl2ZTogT0RhdGFWNENvbnRleHRbXSxcblx0bWVzc2FnZUhhbmRsZXI6IE1lc3NhZ2VIYW5kbGVyLFxuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0ZW5hYmxlU3RyaWN0SGFuZGxpbmc6IGJvb2xlYW5cbik6IFByb21pc2U8dW5rbm93bltdPiB7XG5cdGNvbnN0IGRyYWZ0RXJyb3JzOiB1bmtub3duW10gPSBbXTtcblx0YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuXHRcdGRyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlLm1hcChhc3luYyBmdW5jdGlvbiAoY29udGV4dDogT0RhdGFWNENvbnRleHQpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHJldHVybiBhd2FpdCBkcmFmdC5kZWxldGVEcmFmdChjb250ZXh0LCBtZXNzYWdlSGFuZGxlciwgYXBwQ29tcG9uZW50LCBlbmFibGVTdHJpY3RIYW5kbGluZyk7XG5cdFx0XHR9IGNhdGNoIChlOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgRkUgOiBjb3JlIDogRGVsZXRlSGVscGVyIDogRXJyb3Igd2hpbGUgZGlzY2FyZGluZyBkcmFmdCB3aXRoIHBhdGggOiAke2NvbnRleHQuZ2V0UGF0aCgpfWApO1xuXHRcdFx0XHRkcmFmdEVycm9ycy5wdXNoKGUpO1xuXHRcdFx0fVxuXHRcdH0pXG5cdCk7XG5cdHJldHVybiBkcmFmdEVycm9ycztcbn1cblxuLyoqXG4gKiBJbiBjYXNlIG9mIGEgdHJlZSB0YWJsZSwgd2Ugc2hhbGwgbm90IGRlbGV0ZSBhIGNvbnRleHQgaWYgb25lIGlmIGl0cyBhbmNlc3RvcnMgaXMgYWxzbyB0byBiZSBkZWxldGVkLlxuICogVGhpcyBmdW5jdGlvbnMgZmlsdGVycyBvdXQgc3VjaCBjb250ZXh0cy5cbiAqIEBwYXJhbSBjb250ZXh0c1xuICogQHJldHVybnMgVGhlIGZpbHRlcmVkIGNvbnRleHRzXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZURlc2NlbmRhbnRDb250ZXh0cyhjb250ZXh0czogT0RhdGFWNENvbnRleHRbXSk6IE9EYXRhVjRDb250ZXh0W10ge1xuXHRjb25zdCB0ZW1wQ29udGV4dHM6IChPRGF0YVY0Q29udGV4dCB8IHVuZGVmaW5lZClbXSA9IFsuLi5jb250ZXh0c107XG5cdC8vIEZpbHRlciBvdXQgY29udGV4dHMgd2hvc2UgYW5jZXN0b3IgaXMgYWxzbyBkZWxldGVkLCBhcyB0aGV5IHdpbGwgYmUgZGVsZXRlZCB3aXRoIHRoZWlyIGFuY2VzdG9yXG5cdHRlbXBDb250ZXh0cy5mb3JFYWNoKChwYXJlbnRDb250ZXh0LCBwYXJlbnRJbmRleCkgPT4ge1xuXHRcdGlmIChwYXJlbnRDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBjaGlsZEluZGV4ID0gcGFyZW50SW5kZXggKyAxOyBjaGlsZEluZGV4IDwgdGVtcENvbnRleHRzLmxlbmd0aDsgY2hpbGRJbmRleCsrKSB7XG5cdFx0XHRjb25zdCBjaGlsZENvbnRleHQgPSB0ZW1wQ29udGV4dHNbY2hpbGRJbmRleF07XG5cdFx0XHRpZiAoY2hpbGRDb250ZXh0ICYmIHBhcmVudENvbnRleHQuaXNBbmNlc3Rvck9mKGNoaWxkQ29udGV4dCkpIHtcblx0XHRcdFx0dGVtcENvbnRleHRzW2NoaWxkSW5kZXhdID0gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIHRlbXBDb250ZXh0cy5maWx0ZXIoKGNvbnRleHQpID0+IGNvbnRleHQgIT09IHVuZGVmaW5lZCkgYXMgT0RhdGFWNENvbnRleHRbXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZGVsZXRlQ29uZmlybUhhbmRsZXIoXG5cdG9wdGlvbnM6IERlbGV0ZU9wdGlvbltdLFxuXHRtUGFyYW1ldGVyczogRGVsZXRlUGFyYW1ldGVycyxcblx0bWVzc2FnZUhhbmRsZXI6IE1lc3NhZ2VIYW5kbGVyLFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsLFxuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0ZHJhZnRFbmFibGVkOiBib29sZWFuLFxuXHRiaW5kaW5nVHlwZT86IFwiVHJlZVwiIHwgXCJBbmFseXRpY2FsXCJcbik6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBtZXNzYWdlSGFuZGxpbmdLZXkgPSBtZXNzYWdlSGFuZGxlci5yZWdpc3RlclRvSG9sZE1lc3NhZ2VzKCk7XG5cdGxldCBjb250ZXh0czogT0RhdGFWNENvbnRleHRbXSA9IFtdO1xuXHR0cnkge1xuXHRcdGNvbnRleHRzID0gZGVsZXRlSGVscGVyLmdldENvbmZpcm1lZERlbGV0YWJsZUNvbnRleHQoW10sIG9wdGlvbnMpO1xuXHRcdGNvbnN0IGxhc3REZWxldGVkUm93SW5kZXggPSBjb250ZXh0c1tjb250ZXh0cy5sZW5ndGggLSAxXS5nZXRJbmRleCgpID8/IC0xO1xuXHRcdGNvbnN0IGRyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlID0gZ2V0RHJhZnRzVG9EZWxldGVCZWZvcmVBY3RpdmUob3B0aW9ucyk7XG5cblx0XHRjb25zdCB7IGJlZm9yZURlbGV0ZUNhbGxCYWNrIH0gPSBtUGFyYW1ldGVycztcblx0XHRpZiAoYmVmb3JlRGVsZXRlQ2FsbEJhY2spIHtcblx0XHRcdGF3YWl0IGJlZm9yZURlbGV0ZUNhbGxCYWNrKHsgY29udGV4dHM6IGNvbnRleHRzIH0pO1xuXHRcdH1cblxuXHRcdGlmIChjb250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IGVuYWJsZVN0cmljdEhhbmRsaW5nID0gY29udGV4dHMubGVuZ3RoID09PSAxID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdFx0Y29uc3QgZHJhZnRFcnJvcnM6IHVua25vd25bXSA9IGF3YWl0IGRlbGV0ZURyYWZ0c0JlZm9yZUFjdGl2ZXNBbmRHZXRFcnJvcnMoXG5cdFx0XHRcdGRyYWZ0c1RvRGVsZXRlQmVmb3JlQWN0aXZlLFxuXHRcdFx0XHRtZXNzYWdlSGFuZGxlcixcblx0XHRcdFx0YXBwQ29tcG9uZW50LFxuXHRcdFx0XHRlbmFibGVTdHJpY3RIYW5kbGluZ1xuXHRcdFx0KTtcblxuXHRcdFx0bGV0IGNvbnRleHRzVG9EZWxldGUgPSBjb250ZXh0cztcblx0XHRcdGlmIChiaW5kaW5nVHlwZSA9PT0gXCJUcmVlXCIpIHtcblx0XHRcdFx0Y29udGV4dHNUb0RlbGV0ZSA9IHJlbW92ZURlc2NlbmRhbnRDb250ZXh0cyhjb250ZXh0cyk7XG5cdFx0XHR9XG5cblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKFxuXHRcdFx0XHRjb250ZXh0c1RvRGVsZXRlLm1hcChhc3luYyBmdW5jdGlvbiAoY29udGV4dDogT0RhdGFWNENvbnRleHQpIHtcblx0XHRcdFx0XHQvLyBJZiB0aGUgY29udGV4dCB0byBkZWxldGUgaXMgYSBkcmFmdCAoaS5lLiBhY3V0YWxseSB3ZSBqdXN0IHduYXQgdG8gZGlzY2FyZCksIHdlIHNob3VsZCB1c2UgZHJhZnQuZGVsZXRlRHJhZnQgaW4gb3JkZXIgdG8gdXNlIGEgZGlzY2FyZCBhY3Rpb24gaWYgZGVmaW5lZFxuXHRcdFx0XHRcdC8vIEhvd2V2ZXIsIGRyYWZ0LmRlbGV0ZURyYWZ0IHVzZXMgZ2V0UHJvcGVydHksIHdoaWNoIHJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBjb250ZXh0IGlzIG5vdCByZWFkIGZyb20gdGhlIGJhY2tlbmQuXG5cdFx0XHRcdFx0Ly8gVGhpcyBjYW4gYmUgdGhlIGNhc2UsIGlmIHdlIGhhdmUgcmV0cmlldmVkIHRoaXMgY29udGV4dCB2aWEgdGhlIHNpYmxpbmcgKGUuZy4gd2hlbiBhIGRyYWZ0IGV4aXN0ZWQgYW5kIHdlIHdhbnQgdG8gZGVsZXRlIGJvdGggLSBpbiB0aGF0IGNhc2Vcblx0XHRcdFx0XHQvLyB3ZSBoYXZlIGFscmVhZHkgZGlzY2FyZGVkIHRoZSBkcmFmdCBhYm92ZSwgYW5kIG5vdyBuZWVkIHRvIGRlbGV0ZSB0aGUgYWN0aXZlIG9uZSkuIFRvIGlkZW50aWZ5IHRoaXMgc2l0dWF0aW9uLCB3ZSBtdXN0IG5vdCB1c2UgZ2V0UHJvcGVydHlcblx0XHRcdFx0XHQvLyAoYXMgdGhlIGNvbnRleHQgaXMgbm90IHJlYWQpLCBidXQgY2hlY2sgdGhlIHNhbWUgaW4gdGhlIG1QYXJhbWV0ZXJzLlxuXHRcdFx0XHRcdC8vIEluIHRoaXMgY2FzZSwgd2UgY2FuIGp1c3QgZGVsZXRlIHRoZSBjb250ZXh0LiBCdXQgd2Ugc2hvdWxkIG5vdCB1c2UgY29udGV4dC5kZWxldGUgKGFsc28gdXBkYXRpbmcgYmluZGluZ3MsIHdoaWNoIGZhaWxzIGluIHRoZSBkZXNjcmliZWQgc2l0dWF0aW9uKSxcblx0XHRcdFx0XHQvLyBidXQgbW9kZWwuZGVsZXRlIChvbmx5IHNlbmRpbmcgdGhlIGRlbGV0ZSkuIEluIG90aGVyIGNhc2VzIChlLmcuIG5vbi1kcmFmdCksIHRoaXMgaXMgYWxzbyBzdWZmaWNpZW50LCBhcyB3ZSBhbnl3YXkgdGFrZSBjYXJlIG9mIHNldHRpbmdcblx0XHRcdFx0XHQvLyBjb3JyZWN0IGJpZG5pbmdzIHdpdGggdGhlIG5hdmlnYXRpb24gdHJpZ2dlcmVkIGJ5IHRoZSBkZWxldGlvbi5cblx0XHRcdFx0XHQvLyBJbiBjYXNlIG9uIGFuYWx5dGljYWwgdGFibGUsIHdlIGFsc28gZG9uJ3Qgd2FudCB0byBjYWxsIGNvbnRleHQuZGVsZXRlLCBhcyBpdCB3aWxsIGZhaWwuXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0IWRyYWZ0RW5hYmxlZCB8fFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnMuZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZT8uZmluZChcblx0XHRcdFx0XHRcdFx0KGRyYWZ0V2l0aERlbGV0YWJsZUFjdGl2ZSkgPT4gZHJhZnRXaXRoRGVsZXRhYmxlQWN0aXZlLnNpYmxpbmdJbmZvLnRhcmdldENvbnRleHQgPT09IGNvbnRleHRcblx0XHRcdFx0XHRcdCkgfHxcblx0XHRcdFx0XHRcdGJpbmRpbmdUeXBlID09PSBcIkFuYWx5dGljYWxcIlxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0Y29udGV4dC5yZXNldENoYW5nZXMoKTtcblx0XHRcdFx0XHRcdHJldHVybiBjb250ZXh0LmdldE1vZGVsKCkuZGVsZXRlKGNvbnRleHQuZ2V0Q2Fub25pY2FsUGF0aCgpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRyYWZ0LmRlbGV0ZURyYWZ0KGNvbnRleHQsIG1lc3NhZ2VIYW5kbGVyLCBhcHBDb21wb25lbnQsIGVuYWJsZVN0cmljdEhhbmRsaW5nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdFx0ZGVsZXRlSGVscGVyLmFmdGVyRGVsZXRlUHJvY2VzcyhtUGFyYW1ldGVycywgb3B0aW9ucywgY29udGV4dHMsIHJlc291cmNlTW9kZWwsIGxhc3REZWxldGVkUm93SW5kZXgpO1xuXHRcdFx0aWYgKGRyYWZ0RXJyb3JzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGhyb3cgRXJyb3IoYEZFIDogY29yZSA6IERlbGV0ZUhlbHBlciA6IEVycm9ycyBvbiBkcmFmdCBkZWxldGUgOiAke2RyYWZ0RXJyb3JzfWApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRtZXNzYWdlSGFuZGxlci5yZW1vdmVIb2xkS2V5KG1lc3NhZ2VIYW5kbGluZ0tleSk7XG5cdH0gY2F0Y2ggKG9FcnJvcikge1xuXHRcdGlmIChjb250ZXh0cy5sZW5ndGggPiAxKSB7XG5cdFx0XHRkZWxldGVIZWxwZXIuYWRkR2VuZXJpY0RlbGV0ZUZhaWx1cmVNZXNzYWdlKHJlc291cmNlTW9kZWwpO1xuXHRcdH1cblx0XHRhd2FpdCBtZXNzYWdlSGFuZGxlci5zaG93TWVzc2FnZXMoeyB1bkhvbGRLZXk6IG1lc3NhZ2VIYW5kbGluZ0tleSB9KTtcblx0XHQvLyByZS10aHJvdyBlcnJvciB0byBlbmZvcmNlIHJlamVjdGluZyB0aGUgZ2VuZXJhbCBwcm9taXNlXG5cdFx0dGhyb3cgb0Vycm9yO1xuXHR9XG59XG5cbi8qKlxuICogQWRkaW5nIGEgZ2VuZXJpYyBkZWxldGUgZmFpbHVyZSBtZXNzYWdlIHRvIG1lc3NhZ2UgbW9kZWwgZm9yIHJlYWRhYmlsaXR5LlxuICogQHBhcmFtIHJlc291cmNlTW9kZWwgUmVzb3VyY2UgbW9kZWwgZm9yIG1lc3NhZ2UgdGV4dFxuICovXG5mdW5jdGlvbiBhZGRHZW5lcmljRGVsZXRlRmFpbHVyZU1lc3NhZ2UocmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbCk6IHZvaWQge1xuXHRNZXNzYWdpbmcuYWRkTWVzc2FnZXMoXG5cdFx0bmV3IE1lc3NhZ2Uoe1xuXHRcdFx0bWVzc2FnZTogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19DT01NT05fREVMRVRFX0NIQU5HRVNFVF9GQUlMVVJFX01VTFRJUExFX0VSUk9SU19URVhUXCIpLFxuXHRcdFx0dHlwZTogTWVzc2FnZVR5cGUuRXJyb3IsXG5cdFx0XHR0YXJnZXQ6IHVuZGVmaW5lZCxcblx0XHRcdHBlcnNpc3RlbnQ6IHRydWUsXG5cdFx0XHRjb2RlOiBcIkZFX0NVU1RPTV9NRVNTQUdFX0NIQU5HRVNFVF9BTExfRkFJTEVEXCIsXG5cdFx0XHRkZXNjcmlwdGlvbjogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19DT01NT05fREVMRVRFX0NIQU5HRVNFVF9GQUlMVVJFX01VTFRJUExFX0VSUk9SU19ERVRBSUxTX1RFWFRcIiksXG5cdFx0XHR0ZWNobmljYWxEZXRhaWxzOiB7XG5cdFx0XHRcdGZlOiB7XG5cdFx0XHRcdFx0Y2hhbmdlU2V0UHJlVGV4dEZvclNpbmdsZUVycm9yOiByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX0NPTU1PTl9ERUxFVEVfQ0hBTkdFU0VUX0ZBSUxVUkVfU0lOR0xFX0VSUk9SX1RFWFRcIilcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pXG5cdCk7XG59XG5cbi8qKlxuICogVXBkYXRlcyBhIENvbnRleHRJbmZvIHVzaW5nIGl0cyBzaWJsaW5nIGNvbnRleHQsIGlmIG5lZWRlZC5cbiAqIFJlcXVlc3RzIHRoZSBzaWJsaW5nIGNvbnRleHQgYW5kIHVwZGF0ZXMgdGhlIHNpYmxpbmdEZWxldGFibGUgcHJvcGVydHkuXG4gKiBBbHNvIG1hbmFnZXMgdGhlIGNhc2Ugd2hlcmUgdGhlIG1haW4gY29udGV4dCBpcyBhY3RpdmUgYnV0IGhhcyBhIGRyYWZ0IHNpYmxpbmcgKC0tPiBzd2FwIGJldHdlZW4gbWFpbiBhbmQgc2libGluZyBjb250ZXh0KS5cbiAqIEBwYXJhbSBpbmZvXG4gKiBAcGFyYW0gZGVsZXRhYmxlUGF0aFxuICogQHBhcmFtIHN0YXRpY0RlbGV0YWJsZVxuICovXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVJbmZvRnJvbVNpYmxpbmcoaW5mbzogQ29udGV4dEluZm8sIGRlbGV0YWJsZVBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCwgc3RhdGljRGVsZXRhYmxlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG5cdHRyeSB7XG5cdFx0aWYgKCFpbmZvLmlzQWN0aXZlICYmIGluZm8uaGFzQWN0aXZlKSB7XG5cdFx0XHQvLyBDYXNlIDE6IHRoZSBjb250ZXh0IGlzIGEgZHJhZnQsIHdlIG5lZWQgdG8gZ2V0IGl0cyBhY3RpdmUgc2libGluZ1xuXHRcdFx0Y29uc3Qgc2libGluZ0luZm9ybWF0aW9uID0gYXdhaXQgZHJhZnQuY29tcHV0ZVNpYmxpbmdJbmZvcm1hdGlvbihpbmZvLmNvbnRleHQsIGluZm8uY29udGV4dCk7XG5cdFx0XHRpbmZvLnNpYmxpbmdJbmZvID0gc2libGluZ0luZm9ybWF0aW9uO1xuXHRcdFx0aW5mby5zaWJsaW5nRGVsZXRhYmxlID0gZGVsZXRhYmxlUGF0aFxuXHRcdFx0XHQ/IGF3YWl0IHNpYmxpbmdJbmZvcm1hdGlvbj8udGFyZ2V0Q29udGV4dD8ucmVxdWVzdFByb3BlcnR5KGRlbGV0YWJsZVBhdGgpXG5cdFx0XHRcdDogc3RhdGljRGVsZXRhYmxlO1xuXHRcdH0gZWxzZSBpZiAoaW5mby5pc0FjdGl2ZSAmJiBpbmZvLmhhc0RyYWZ0KSB7XG5cdFx0XHQvLyBDYXNlIDI6IHRoZSBjb250ZXh0IGlzIGFjdGl2ZSwgd2UgbmVlZCB0byBnZXQgaXRzIGRyYWZ0IHNpYmxpbmdcblx0XHRcdGNvbnN0IHNpYmxpbmdJbmZvcm1hdGlvbiA9IGF3YWl0IGRyYWZ0LmNvbXB1dGVTaWJsaW5nSW5mb3JtYXRpb24oaW5mby5jb250ZXh0LCBpbmZvLmNvbnRleHQpO1xuXHRcdFx0aWYgKHNpYmxpbmdJbmZvcm1hdGlvbj8udGFyZ2V0Q29udGV4dCkge1xuXHRcdFx0XHQvLyBXZSB3ZXJlIGFibGUgdG8gcmV0cmlldmUgdGhlIGRyYWZ0IHNpYmxpbmcgZnJvbSB0aGUgYWN0aXZlIGluc3RhbmNlIC0tPiBmYWxsYmFjayB0byBjYXNlIDFcblx0XHRcdFx0Ly8gYnkgZXhjaGFuZ2luZyB0aGUgY29udGV4dCB3aXRoIHRoZSBzaWJsaW5nIGNvbnRleHQgaW4gdGhlIGluZm8gb2JqZWN0LlxuXHRcdFx0XHRjb25zdCBwcm9wZXJ0aWVzVG9GZXRjaCA9IFtcIklzQWN0aXZlRW50aXR5XCIsIFwiSGFzQWN0aXZlRW50aXR5XCJdO1xuXHRcdFx0XHRpZiAoZGVsZXRhYmxlUGF0aCkge1xuXHRcdFx0XHRcdHByb3BlcnRpZXNUb0ZldGNoLnB1c2goZGVsZXRhYmxlUGF0aCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YXdhaXQgc2libGluZ0luZm9ybWF0aW9uLnRhcmdldENvbnRleHQucmVxdWVzdFByb3BlcnR5KHByb3BlcnRpZXNUb0ZldGNoKTtcblx0XHRcdFx0aW5mby5sb2NrZWQgPSBmYWxzZTtcblx0XHRcdFx0aW5mby5oYXNEcmFmdCA9IGZhbHNlO1xuXHRcdFx0XHRpbmZvLmlzQWN0aXZlID0gZmFsc2U7XG5cdFx0XHRcdGluZm8uaGFzQWN0aXZlID0gdHJ1ZTtcblx0XHRcdFx0Ly8gRXhjaGFuZ2UgY29udGV4dCB3aXRoIHNpYmxpbmcgY29udGV4dFxuXHRcdFx0XHRpbmZvLnNpYmxpbmdJbmZvID0geyB0YXJnZXRDb250ZXh0OiBpbmZvLmNvbnRleHQsIHBhdGhNYXBwaW5nOiBbXSB9O1xuXHRcdFx0XHRpbmZvLmNvbnRleHQgPSBzaWJsaW5nSW5mb3JtYXRpb24udGFyZ2V0Q29udGV4dDtcblx0XHRcdFx0Ly8gRXhjaGFuZ2UgZGVsZXRhYmxlIHdpdGggc2libGluZyBkZWxldGFibGVcblx0XHRcdFx0aW5mby5zaWJsaW5nRGVsZXRhYmxlID0gaW5mby5kZWxldGFibGU7XG5cdFx0XHRcdGluZm8uZGVsZXRhYmxlID0gZGVsZXRhYmxlUGF0aCA/IHNpYmxpbmdJbmZvcm1hdGlvbi50YXJnZXRDb250ZXh0LmdldFByb3BlcnR5KGRlbGV0YWJsZVBhdGgpIDogc3RhdGljRGVsZXRhYmxlO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBjYXRjaCAoX2UpIHtcblx0XHQvLyBEbyBub3RoaW5nXG5cdH1cbn1cblxuLyoqXG4gKiBDb2xsZWN0IGNvbnRleHQgaW5mb3JtYXRpb24gKGlzRHJhZnRSb290LCBpc0RyYWZ0Tm9kZSwgSGFzRHJhZnRFbnRpdHksIElzQWN0aXZlRW50aXR5LCBIYXNBY3RpdmVFbnRpdHksIGlzTG9ja2VkLCBpc0luYWN0aXZlKS5cbiAqIEBwYXJhbSBjb250ZXh0IENvbnRleHQgdG8gZXZhbHVhdGUuXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dCBpbmZvIHByb21pc2UuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldENvbnRleHRJbmZvcyhjb250ZXh0OiBPRGF0YVY0Q29udGV4dCk6IFByb21pc2U8Q29udGV4dEluZm8+IHtcblx0Y29uc3QgaXNUcmFuc2llbnQgPSAhIWNvbnRleHQ/LmdldE9iamVjdCgpW1wiQCR1aTUuY29udGV4dC5pc1RyYW5zaWVudFwiXTtcblx0Y29uc3QgaXNJbmFjdGl2ZSA9IGNvbnRleHQ/LmlzSW5hY3RpdmUoKTtcblx0Y29uc3QgbWV0YUNvbnRleHQgPVxuXHRcdGlzSW5hY3RpdmUgfHwgKCFpc0luYWN0aXZlICYmIGlzVHJhbnNpZW50KVxuXHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdDogY29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE1ldGFDb250ZXh0KGNvbnRleHQuZ2V0Q2Fub25pY2FsUGF0aCgpKTtcblx0Y29uc3QgZGVsZXRhYmxlUGF0aCA9IG1ldGFDb250ZXh0Py5nZXRQcm9wZXJ0eShcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkRlbGV0ZVJlc3RyaWN0aW9ucy9EZWxldGFibGUvJFBhdGhcIik7XG5cdGNvbnN0IHN0YXRpY0RlbGV0YWJsZSA9ICFkZWxldGFibGVQYXRoICYmIG1ldGFDb250ZXh0Py5nZXRQcm9wZXJ0eShcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkRlbGV0ZVJlc3RyaWN0aW9ucy9EZWxldGFibGVcIikgIT09IGZhbHNlO1xuXHRjb25zdCBkZWxldGFibGUgPSBkZWxldGFibGVQYXRoID8gY29udGV4dC5nZXRQcm9wZXJ0eShkZWxldGFibGVQYXRoKSA6IHN0YXRpY0RlbGV0YWJsZTtcblxuXHRjb25zdCBpbmZvOiBDb250ZXh0SW5mbyA9IHtcblx0XHRjb250ZXh0OiBjb250ZXh0LFxuXHRcdGlzRHJhZnRSb290OiAhIW1ldGFDb250ZXh0Py5nZXRQcm9wZXJ0eShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCIpLFxuXHRcdGlzRHJhZnROb2RlOiAhIW1ldGFDb250ZXh0Py5nZXRQcm9wZXJ0eShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnROb2RlXCIpLFxuXHRcdGlzQWN0aXZlOiB0cnVlLFxuXHRcdGhhc0FjdGl2ZTogZmFsc2UsXG5cdFx0aGFzRHJhZnQ6IGZhbHNlLFxuXHRcdGxvY2tlZDogZmFsc2UsXG5cdFx0Ly8gZm9yIGFuIGVtcHR5Um93IChpbmFjdGl2ZSBjb250ZXh0KSBpdCdzIGFsd2F5cyBkZWxldGFibGUgYXMgbG9uZyBhcyB0aGUgY29udGV4dCBrZXB0IGluYWN0aXZlLi5cblx0XHRkZWxldGFibGU6IGRlbGV0YWJsZSxcblx0XHRzaWJsaW5nSW5mbzogdW5kZWZpbmVkLFxuXHRcdHNpYmxpbmdEZWxldGFibGU6IGZhbHNlLFxuXHRcdGlzSW5hY3RpdmVDb250ZXh0OiAhIWNvbnRleHQuaXNJbmFjdGl2ZSgpXG5cdH07XG5cdGlmICghY29udGV4dC5pc0luYWN0aXZlKCkgJiYgaW5mby5pc0RyYWZ0Um9vdCkge1xuXHRcdGNvbnN0IGNvbnRleHREYXRhID0gY29udGV4dC5nZXRPYmplY3QoKTtcblx0XHRpbmZvLmxvY2tlZCA9ICEhY29udGV4dERhdGEuRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGE/LkluUHJvY2Vzc0J5VXNlcjtcblx0XHRpbmZvLmhhc0RyYWZ0ID0gY29udGV4dERhdGEuSGFzRHJhZnRFbnRpdHk7XG5cdFx0aW5mby5pc0FjdGl2ZSA9IGNvbnRleHREYXRhLklzQWN0aXZlRW50aXR5O1xuXHRcdGluZm8uaGFzQWN0aXZlID0gY29udGV4dERhdGEuSGFzQWN0aXZlRW50aXR5O1xuXHRcdGF3YWl0IHVwZGF0ZUluZm9Gcm9tU2libGluZyhpbmZvLCBkZWxldGFibGVQYXRoLCBzdGF0aWNEZWxldGFibGUpO1xuXHR9XG5cdHJldHVybiBpbmZvO1xufVxuXG4vLyBUYWJsZSBSdW50aW1lIEhlbHBlcnM6XG5cbi8qIHJlZnJlc2hlcyBkYXRhIGluIGludGVybmFsIG1vZGVsIHJlbGV2YW50IGZvciBlbmFibGVtZW50IG9mIGRlbGV0ZSBidXR0b24gYWNjb3JkaW5nIHRvIHNlbGVjdGVkIGNvbnRleHRzXG5yZWxldmFudCBkYXRhIGFyZTogZGVsZXRhYmxlQ29udGV4dHMsIGRyYWZ0c1dpdGhEZWxldGFibGVBY3RpdmUsIGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUsIHVuU2F2ZWRDb250ZXh0cywgZGVsZXRlRW5hYmxlZFxubm90IHJlbGV2YW50OiBsb2NrZWRDb250ZXh0c1xuKi9cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzKFxuXHRpbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdHNlbGVjdGVkQ29udGV4dHM6IE9EYXRhVjRDb250ZXh0W10sXG5cdGZvckNvbnRleHRNZW51ID0gZmFsc2Vcbik6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBjb250ZXh0SW5mb3MgPSBhd2FpdCBQcm9taXNlLmFsbChzZWxlY3RlZENvbnRleHRzLm1hcChnZXRDb250ZXh0SW5mb3MpKTtcblxuXHRjb25zdCBidWNrZXRzID0gW1xuXHRcdHtcblx0XHRcdGtleTogXCJkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlXCIsXG5cdFx0XHQvLyBvbmx5IGZvciBkcmFmdCByb290OiBJbiB0aGF0IGNhc2UsIHRoZSBkZWxldGUgcmVxdWVzdCBuZWVkcyB0byBiZSBzZW50IGZvciB0aGUgYWN0aXZlIChpLmUuIHRoZSBzaWJsaW5nKSxcblx0XHRcdC8vIHdoaWxlIGluIGRyYWZ0IG5vZGUsIHRoZSBkZWxldGUgcmVxdWVzdCBuZWVkcyB0byBiZSBzZW5kIGZvciB0aGUgZHJhZnQgaXRzZWxmXG5cdFx0XHR2YWx1ZTogY29udGV4dEluZm9zLmZpbHRlcihcblx0XHRcdFx0KGluZm8pID0+ICFpbmZvLmlzSW5hY3RpdmVDb250ZXh0ICYmIGluZm8uaXNEcmFmdFJvb3QgJiYgIWluZm8uaXNBY3RpdmUgJiYgaW5mby5oYXNBY3RpdmUgJiYgaW5mby5zaWJsaW5nRGVsZXRhYmxlXG5cdFx0XHQpXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IFwiZHJhZnRzV2l0aE5vbkRlbGV0YWJsZUFjdGl2ZVwiLFxuXHRcdFx0Ly8gb25seSBmb3IgZHJhZnQgcm9vdDogRm9yIGRyYWZ0IG5vZGUsIHdlIG9ubHkgcmVseSBvbiBpbmZvcm1hdGlvbiBpbiB0aGUgZHJhZnQgaXRzZWxmIChub3QgaXRzIGFjdGl2ZSBzaWJsaW5nKVxuXHRcdFx0Ly8gYXBwbGljYXRpb24gaGFzIHRvIHRha2UgY2FyZSB0byBzZXQgdGhpcyBjb3JyZWN0bHkgKGluIGNhc2UgYWN0aXZlIHNpYmxpbmcgbXVzdCBub3QgYmUgZGVsZXRhYmxlLCBhY3RpdmF0aW9uXG5cdFx0XHQvLyBvZiBkcmFmdCB3aXRoIGRlbGV0ZWQgbm9kZSB3b3VsZCBhbHNvIGRlbHRlIGFjdGl2ZSBzaWJsaW5nID0+IGRlbGV0aW9uIG9mIGRyYWZ0IG5vZGUgdG8gYmUgYXZvaWRlZClcblx0XHRcdHZhbHVlOiBjb250ZXh0SW5mb3MuZmlsdGVyKFxuXHRcdFx0XHQoaW5mbykgPT4gIWluZm8uaXNJbmFjdGl2ZUNvbnRleHQgJiYgaW5mby5pc0RyYWZ0Um9vdCAmJiAhaW5mby5pc0FjdGl2ZSAmJiBpbmZvLmhhc0FjdGl2ZSAmJiAhaW5mby5zaWJsaW5nRGVsZXRhYmxlXG5cdFx0XHQpXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IFwibG9ja2VkQ29udGV4dHNcIixcblx0XHRcdHZhbHVlOiBjb250ZXh0SW5mb3MuZmlsdGVyKFxuXHRcdFx0XHQoaW5mbykgPT4gIWluZm8uaXNJbmFjdGl2ZUNvbnRleHQgJiYgaW5mby5pc0RyYWZ0Um9vdCAmJiBpbmZvLmlzQWN0aXZlICYmIGluZm8uaGFzRHJhZnQgJiYgaW5mby5sb2NrZWRcblx0XHRcdClcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogXCJ1blNhdmVkQ29udGV4dHNcIixcblx0XHRcdHZhbHVlOiBjb250ZXh0SW5mb3MuZmlsdGVyKFxuXHRcdFx0XHQoaW5mbykgPT4gIWluZm8uaXNJbmFjdGl2ZUNvbnRleHQgJiYgaW5mby5pc0RyYWZ0Um9vdCAmJiBpbmZvLmlzQWN0aXZlICYmIGluZm8uaGFzRHJhZnQgJiYgIWluZm8ubG9ja2VkXG5cdFx0XHQpXG5cdFx0fSxcblx0XHQvLyBub24tZHJhZnQvc3RpY2t5IGFuZCBkZWxldGFibGVcblx0XHQvLyBhY3RpdmUgZHJhZnQgcm9vdCB3aXRob3V0IGFueSBkcmFmdCBhbmQgZGVsZXRhYmxlXG5cdFx0Ly8gY3JlYXRlZCBkcmFmdCByb290IChyZWdhcmRsZXNzIG9mIGRlbGV0YWJsZSlcblx0XHQvLyBkcmFmdCBub2RlIG9ubHkgYWNjb3JkaW5nIHRvIGl0cyBhbm5vdGF0aW9uXG5cdFx0e1xuXHRcdFx0a2V5OiBcImRlbGV0YWJsZUNvbnRleHRzXCIsXG5cdFx0XHR2YWx1ZTogY29udGV4dEluZm9zLmZpbHRlcihcblx0XHRcdFx0KGluZm8pID0+XG5cdFx0XHRcdFx0aW5mby5pc0luYWN0aXZlQ29udGV4dCB8fFxuXHRcdFx0XHRcdCghaW5mby5pc0RyYWZ0Um9vdCAmJiAhaW5mby5pc0RyYWZ0Tm9kZSAmJiBpbmZvLmRlbGV0YWJsZSkgfHxcblx0XHRcdFx0XHQoaW5mby5pc0RyYWZ0Um9vdCAmJiBpbmZvLmlzQWN0aXZlICYmICFpbmZvLmhhc0RyYWZ0ICYmIGluZm8uZGVsZXRhYmxlKSB8fFxuXHRcdFx0XHRcdChpbmZvLmlzRHJhZnRSb290ICYmICFpbmZvLmlzQWN0aXZlICYmICFpbmZvLmhhc0FjdGl2ZSkgfHxcblx0XHRcdFx0XHQoaW5mby5pc0RyYWZ0Tm9kZSAmJiBpbmZvLmRlbGV0YWJsZSlcblx0XHRcdClcblx0XHR9XG5cdF07XG5cdGNvbnN0IGNvbnRleHRQYXRoID0gIWZvckNvbnRleHRNZW51ID8gXCJcIiA6IFwiY29udGV4dG1lbnUvXCI7XG5cdGZvciAoY29uc3QgeyBrZXksIHZhbHVlIH0gb2YgYnVja2V0cykge1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFxuXHRcdFx0Y29udGV4dFBhdGggKyBrZXksXG5cdFx0XHQvLyBDdXJyZW50bHksIGJ1Y2tldCBkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlIGhhcyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgKGNvbnRhaW5pbmcgYWxzbyBzaWJsaW5nIGluZm9ybWF0aW9uLCB3aGljaCBpcyB1c2VkXG5cdFx0XHQvLyBpbiBjYXNlIG9mIGRlbGV0aW9uKS4gUG9zc2libGUgaW1wcm92ZW1lbnQ6IFJlYWQgc2libGluZyBpbmZvcm1hdGlvbiBvbmx5IHdoZW4gbmVlZGVkLCBhbmQgYnVpbGQgYWxsIGJ1Y2tldHMgd2l0aCBzYW1lXG5cdFx0XHQvLyBzdHJ1Y3R1cmUuIEhvd2V2ZXIsIGluIHRoYXQgY2FzZSBzaWJsaW5nSW5mb3JtYXRpb24gbWlnaHQgbmVlZCB0byBiZSByZWFkIHR3aWNlIChpZiBhbHJlYWR5IG5lZWRlZCBmb3IgYnV0dG9uIGVuYWJsZW1lbnQpLFxuXHRcdFx0Ly8gdGh1cyBhIGJ1ZmZlciBwcm9iYWJseSB3b3VsZCBtYWtlIHNlbnNlLlxuXHRcdFx0dmFsdWUubWFwKChpbmZvKSA9PlxuXHRcdFx0XHRrZXkgPT09IFwiZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZVwiID8geyBkcmFmdDogaW5mby5jb250ZXh0LCBzaWJsaW5nSW5mbzogaW5mby5zaWJsaW5nSW5mbyB9IDogaW5mby5jb250ZXh0XG5cdFx0XHQpXG5cdFx0KTtcblx0fVxufVxuXG5jb25zdCBkZWxldGVIZWxwZXIgPSB7XG5cdGdldE5vbkRlbGV0YWJsZVRleHQsXG5cdGRlbGV0ZUNvbmZpcm1IYW5kbGVyLFxuXHRnZXRPcHRpb25zRm9yRGVsZXRhYmxlVGV4dHMsXG5cdHVwZGF0ZUNvbnRlbnRGb3JEZWxldGVEaWFsb2csXG5cdHVwZGF0ZURyYWZ0T3B0aW9uc0ZvckRlbGV0YWJsZVRleHRzLFxuXHRnZXRDb25maXJtZWREZWxldGFibGVDb250ZXh0LFxuXHRnZXRMb2NrZWRPYmplY3RzVGV4dCxcblx0Z2V0VW5zYXZlZENvbnRleHRzVGV4dCxcblx0Z2V0Tm9uRGVsZXRhYmxlQWN0aXZlc09mRHJhZnRzVGV4dCxcblx0YWZ0ZXJEZWxldGVQcm9jZXNzLFxuXHR1cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyxcblx0RGVsZXRlT3B0aW9uVHlwZXMsXG5cdERlbGV0ZURpYWxvZ0NvbnRlbnRDb250cm9sLFxuXHRzZXRGb2N1c0FmdGVyRGVsZXRlLFxuXHRnZXRDb250ZXh0SW5mb3MsXG5cdGFkZEdlbmVyaWNEZWxldGVGYWlsdXJlTWVzc2FnZSxcblx0cmVtb3ZlRGVzY2VuZGFudENvbnRleHRzXG59O1xuXG5leHBvcnQgZGVmYXVsdCBkZWxldGVIZWxwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7TUFvQktBLGlCQUFpQiwwQkFBakJBLGlCQUFpQjtJQUFqQkEsaUJBQWlCO0lBQWpCQSxpQkFBaUI7SUFBakJBLGlCQUFpQjtJQUFqQkEsaUJBQWlCO0lBQWpCQSxpQkFBaUI7SUFBQSxPQUFqQkEsaUJBQWlCO0VBQUEsRUFBakJBLGlCQUFpQjtFQUFBLElBUWpCQywwQkFBMEIsMEJBQTFCQSwwQkFBMEI7SUFBMUJBLDBCQUEwQjtJQUExQkEsMEJBQTBCO0lBQUEsT0FBMUJBLDBCQUEwQjtFQUFBLEVBQTFCQSwwQkFBMEI7RUE4RC9CLFNBQVNDLG9CQUFvQkEsQ0FDNUJDLG9CQUEwQyxFQUMxQ0MsSUFBdUIsRUFDdkJDLGdCQUFrQyxFQUNsQ0MsZ0JBQWtDLEVBQ2Y7SUFDbkIsTUFBTUMsbUJBQXFDLEdBQUcsQ0FBQyxHQUFHRixnQkFBZ0IsQ0FBQztJQUNuRUMsZ0JBQWdCLENBQUNFLE9BQU8sQ0FBRUMsT0FBdUIsSUFBSztNQUNyRCxNQUFNQyxHQUFHLEdBQUdILG1CQUFtQixDQUFD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
|
|
@@ -5,11 +5,11 @@ import draft from "sap/fe/core/controllerextensions/editFlow/draft";
|
|
|
5
5
|
import type MessageHandler from "sap/fe/core/controllerextensions/MessageHandler";
|
|
6
6
|
import type { CheckBox$SelectEvent } from "sap/m/CheckBox";
|
|
7
7
|
import CheckBox from "sap/m/CheckBox";
|
|
8
|
-
import MessageToast from "sap/m/MessageToast";
|
|
9
8
|
import Text from "sap/m/Text";
|
|
10
9
|
|
|
11
10
|
import type ResourceModel from "sap/fe/core/ResourceModel";
|
|
12
11
|
import type TableAPI from "sap/fe/macros/table/TableAPI";
|
|
12
|
+
import MessageToast from "sap/m/MessageToast";
|
|
13
13
|
import type Control from "sap/ui/core/Control";
|
|
14
14
|
import Message from "sap/ui/core/message/Message";
|
|
15
15
|
import MessageType from "sap/ui/core/message/MessageType";
|
|
@@ -159,16 +159,15 @@ function afterDeleteProcess(
|
|
|
159
159
|
);
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
if (parameters.silentMode !== true) {
|
|
163
|
-
if (contexts.length === 1) {
|
|
164
|
-
MessageToast.show(resourceModel.getText("C_TRANSACTION_HELPER_DELETE_TOAST_SINGULAR", undefined, entitySetName));
|
|
165
|
-
} else {
|
|
166
|
-
MessageToast.show(resourceModel.getText("C_TRANSACTION_HELPER_DELETE_TOAST_PLURAL", undefined, entitySetName));
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
162
|
// The MultiValueField does not need resetting of focus like the table, with the resetting we get console errors we avoid trough this check
|
|
171
163
|
if (parameters.parentControl !== undefined && parameters.parentControl.getMetadata().getName() !== "sap.ui.mdc.MultiValueField") {
|
|
164
|
+
if (parameters.silentMode !== true) {
|
|
165
|
+
if (contexts.length === 1) {
|
|
166
|
+
MessageToast.show(resourceModel.getText("C_TRANSACTION_HELPER_DELETE_TOAST_SINGULAR", undefined, entitySetName));
|
|
167
|
+
} else {
|
|
168
|
+
MessageToast.show(resourceModel.getText("C_TRANSACTION_HELPER_DELETE_TOAST_PLURAL", undefined, entitySetName));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
172
171
|
deleteHelper.setFocusAfterDelete(parameters.parentControl as Table, contexts.length, lastDeletedRowIndex);
|
|
173
172
|
}
|
|
174
173
|
}
|