@sapui5/sap.fe.macros 1.142.1 → 1.142.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.
Files changed (29) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/controls/FileWrapper.js +4 -3
  4. package/src/sap/fe/macros/controls/FileWrapper.ts +3 -2
  5. package/src/sap/fe/macros/controls/Section.js +3 -2
  6. package/src/sap/fe/macros/controls/Section.ts +1 -1
  7. package/src/sap/fe/macros/field/FieldTemplating.js +1 -1
  8. package/src/sap/fe/macros/field/FieldTemplating.ts +1 -1
  9. package/src/sap/fe/macros/internal/field/DisplayStyle.js +3 -2
  10. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +1 -0
  11. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +23 -3
  12. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +24 -2
  13. package/src/sap/fe/macros/library.js +1 -1
  14. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +5 -1
  15. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +4 -0
  16. package/src/sap/fe/macros/table/MdcTableTemplate.js +5 -4
  17. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +4 -3
  18. package/src/sap/fe/macros/table/TableAPI.js +17 -4
  19. package/src/sap/fe/macros/table/TableAPI.ts +15 -0
  20. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +10 -1
  21. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +10 -0
  22. package/src/sap/fe/macros/table/TableRuntime.js +6 -4
  23. package/src/sap/fe/macros/table/TableRuntime.ts +16 -3
  24. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -4
  25. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -2
  26. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +10 -4
  27. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +9 -3
  28. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +25 -9
  29. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +33 -17
@@ -5,7 +5,7 @@
5
5
  sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/CommonUtils", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor", "sap/fe/core/controllerextensions/BusyLocker", "sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog", "sap/fe/core/controllerextensions/routing/NavigationReason", "sap/fe/core/controls/Any", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/Table", "sap/fe/core/converters/controls/Common/table/StandardActions", "sap/fe/core/helpers/DeleteHelper", "sap/fe/core/helpers/FPMHelper", "sap/fe/core/helpers/PasteHelper", "sap/fe/core/helpers/PromiseKeeper", "sap/fe/core/helpers/ResourceModelHelper", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/UIFormatters", "sap/fe/macros/MacroAPI", "sap/fe/macros/field/FieldTemplating", "sap/fe/macros/filter/FilterUtils", "sap/fe/macros/table/MdcTableTemplate", "sap/fe/macros/table/TableCreationOptions", "sap/fe/macros/table/TableHelper", "sap/fe/macros/table/TableRuntime", "sap/fe/macros/table/Utils", "sap/fe/macros/table/adapter/TablePVToState", "sap/fe/macros/table/massEdit/MassEditDialogHelper", "sap/fe/navigation/PresentationVariant", "sap/m/FlexItemData", "sap/m/IllustratedMessage", "sap/m/IllustratedMessageType", "sap/m/MessageBox", "sap/m/MessageToast", "sap/m/Text", "sap/ui/base/ManagedObjectMetadata", "sap/ui/core/Element", "sap/ui/core/Fragment", "sap/ui/core/Lib", "sap/ui/core/Messaging", "sap/ui/core/library", "sap/ui/core/message/Message", "sap/ui/core/util/XMLPreprocessor", "sap/ui/mdc/p13n/StateUtil", "../mdc/adapter/StateHelper", "./TableDefinition", "./TableEventHandlerProvider", "./mixin/ColumnManagement", "./mixin/ContextMenuHandler", "./mixin/EmptyRowsHandler", "./mixin/TableAPIStateHandler", "./mixin/TableExport", "./mixin/TableHierarchy", "./mixin/TableOptimisticBatch", "./mixin/TableSharing"], function (Log, deepClone, BindingToolkit, ClassSupport, jsx, CommonUtils, BuildingBlockTemplateProcessor, BusyLocker, NotApplicableContextDialog, NavigationReason, Any, ManifestSettings, MetaModelConverter, Table, StandardActions, DeleteHelper, FPMHelper, PasteHelper, PromiseKeeper, ResourceModelHelper, StableIdHelper, DataModelPathHelper, UIFormatters, MacroAPI, FieldTemplating, FilterUtils, MdcTableTemplate, TableCreationOptions, TableHelper, TableRuntime, TableUtils, TablePVToState, MassEditDialogHelper, PresentationVariantClass, FlexItemData, IllustratedMessage, IllustratedMessageType, MessageBox, MessageToast, Text, ManagedObjectMetadata, UI5Element, Fragment, Library, Messaging, library, Message, XMLPreprocessor, StateUtil, StateHelper, TableDefinition, TableEventHandlerProvider, ColumnManagement, ContextMenuHandler, EmptyRowsHandler, TableAPIStateHandler, TableExport, TableHierarchy, TableOptimisticBatch, TableSharing) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _dec62, _dec63, _dec64, _dec65, _dec66, _dec67, _dec68, _dec69, _dec70, _dec71, _dec72, _dec73, _dec74, _dec75, _dec76, _dec77, _dec78, _dec79, _dec80, _dec81, _dec82, _dec83, _dec84, _dec85, _dec86, _dec87, _dec88, _dec89, _dec90, _dec91, _dec92, _dec93, _dec94, _dec95, _dec96, _dec97, _dec98, _dec99, _dec100, _dec101, _dec102, _dec103, _dec104, _dec105, _dec106, _dec107, _dec108, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _descriptor59, _descriptor60, _descriptor61, _descriptor62, _descriptor63, _descriptor64, _descriptor65, _descriptor66, _descriptor67, _descriptor68, _descriptor69, _descriptor70;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _dec62, _dec63, _dec64, _dec65, _dec66, _dec67, _dec68, _dec69, _dec70, _dec71, _dec72, _dec73, _dec74, _dec75, _dec76, _dec77, _dec78, _dec79, _dec80, _dec81, _dec82, _dec83, _dec84, _dec85, _dec86, _dec87, _dec88, _dec89, _dec90, _dec91, _dec92, _dec93, _dec94, _dec95, _dec96, _dec97, _dec98, _dec99, _dec100, _dec101, _dec102, _dec103, _dec104, _dec105, _dec106, _dec107, _dec108, _dec109, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _descriptor59, _descriptor60, _descriptor61, _descriptor62, _descriptor63, _descriptor64, _descriptor65, _descriptor66, _descriptor67, _descriptor68, _descriptor69, _descriptor70;
9
9
  var createTableDefinition = TableDefinition.createTableDefinition;
10
10
  var TitleLevel = library.TitleLevel;
11
11
  var convertPVToState = TablePVToState.convertPVToState;
@@ -203,7 +203,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
203
203
  type: "sap.fe.macros.table.QuickVariantSelection"
204
204
  }), _dec71 = aggregation({
205
205
  type: "sap.fe.macros.table.MassEdit"
206
- }), _dec72 = event(), _dec73 = event(), _dec74 = event(), _dec75 = event(), _dec76 = event(), _dec77 = event(), _dec78 = event(), _dec79 = event(), _dec80 = xmlEventHandler(), _dec81 = xmlEventHandler(), _dec82 = xmlEventHandler(), _dec83 = xmlEventHandler(), _dec84 = xmlEventHandler(), _dec85 = xmlEventHandler(), _dec86 = xmlEventHandler(), _dec87 = xmlEventHandler(), _dec88 = xmlEventHandler(), _dec89 = xmlEventHandler(), _dec90 = xmlEventHandler(), _dec91 = xmlEventHandler(), _dec92 = xmlEventHandler(), _dec93 = xmlEventHandler(), _dec94 = xmlEventHandler(), _dec95 = xmlEventHandler(), _dec96 = xmlEventHandler(), _dec97 = xmlEventHandler(), _dec98 = xmlEventHandler(), _dec99 = xmlEventHandler(), _dec100 = xmlEventHandler(), _dec101 = xmlEventHandler(), _dec102 = xmlEventHandler(), _dec103 = xmlEventHandler(), _dec104 = xmlEventHandler(), _dec105 = xmlEventHandler(), _dec106 = xmlEventHandler(), _dec107 = xmlEventHandler(), _dec108 = xmlEventHandler(), _dec(_class = _dec2(_class = _dec3(_class = _dec4(_class = _dec5(_class = _dec6(_class = _dec7(_class = _dec8(_class = _dec9(_class = (_class2 = /*#__PURE__*/function (_MacroAPI) {
206
+ }), _dec72 = event(), _dec73 = event(), _dec74 = event(), _dec75 = event(), _dec76 = event(), _dec77 = event(), _dec78 = event(), _dec79 = event(), _dec80 = xmlEventHandler(), _dec81 = xmlEventHandler(), _dec82 = xmlEventHandler(), _dec83 = xmlEventHandler(), _dec84 = xmlEventHandler(), _dec85 = xmlEventHandler(), _dec86 = xmlEventHandler(), _dec87 = xmlEventHandler(), _dec88 = xmlEventHandler(), _dec89 = xmlEventHandler(), _dec90 = xmlEventHandler(), _dec91 = xmlEventHandler(), _dec92 = xmlEventHandler(), _dec93 = xmlEventHandler(), _dec94 = xmlEventHandler(), _dec95 = xmlEventHandler(), _dec96 = xmlEventHandler(), _dec97 = xmlEventHandler(), _dec98 = xmlEventHandler(), _dec99 = xmlEventHandler(), _dec100 = xmlEventHandler(), _dec101 = xmlEventHandler(), _dec102 = xmlEventHandler(), _dec103 = xmlEventHandler(), _dec104 = xmlEventHandler(), _dec105 = xmlEventHandler(), _dec106 = xmlEventHandler(), _dec107 = xmlEventHandler(), _dec108 = xmlEventHandler(), _dec109 = xmlEventHandler(), _dec(_class = _dec2(_class = _dec3(_class = _dec4(_class = _dec5(_class = _dec6(_class = _dec7(_class = _dec8(_class = _dec9(_class = (_class2 = /*#__PURE__*/function (_MacroAPI) {
207
207
  function TableAPI(mSettings) {
208
208
  var _this;
209
209
  for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
@@ -1102,6 +1102,19 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
1102
1102
  }
1103
1103
  }
1104
1104
 
1105
+ /**
1106
+ * Handles the Paste enablement event.
1107
+ * @param evt The UI5 event.
1108
+ */;
1109
+ _proto.pasteEnablementHandler = function pasteEnablementHandler(evt) {
1110
+ const cellsSelection = evt.getSource().getSelection();
1111
+ if (cellsSelection.columns.length === 0 && cellsSelection.rows.length === 0) {
1112
+ this.content.getBindingContext("internal")?.setProperty("cellSelectorHasSelection", false);
1113
+ return;
1114
+ }
1115
+ this.content.getBindingContext("internal")?.setProperty("cellSelectorHasSelection", true);
1116
+ }
1117
+
1105
1118
  /**
1106
1119
  * Handles the Cut operation.
1107
1120
  * @param evt The UI5 event.
@@ -2399,7 +2412,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/base/BindingTo
2399
2412
  enumerable: true,
2400
2413
  writable: true,
2401
2414
  initializer: null
2402
- }), _applyDecoratedDescriptor(_class2.prototype, "onFieldLiveChange", [_dec80], Object.getOwnPropertyDescriptor(_class2.prototype, "onFieldLiveChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onTableRowPress", [_dec81], Object.getOwnPropertyDescriptor(_class2.prototype, "onTableRowPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSegmentedButtonPressed", [_dec82], Object.getOwnPropertyDescriptor(_class2.prototype, "onSegmentedButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSelected", [_dec83], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSelected"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSaved", [_dec84], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSaved"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRowPressed", [_dec85], Object.getOwnPropertyDescriptor(_class2.prototype, "onRowPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onNoop", [_dec86], Object.getOwnPropertyDescriptor(_class2.prototype, "onNoop"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onShareToCollaborationManagerPress", [_dec87], Object.getOwnPropertyDescriptor(_class2.prototype, "onShareToCollaborationManagerPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onOpenInNewTabPress", [_dec88], Object.getOwnPropertyDescriptor(_class2.prototype, "onOpenInNewTabPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchCompleted", [_dec89], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchCompleted"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchSent", [_dec90], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchSent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataReceived", [_dec91], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataReceived"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataRequested", [_dec92], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataRequested"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPaste", [_dec93], Object.getOwnPropertyDescriptor(_class2.prototype, "onPaste"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCut", [_dec94], Object.getOwnPropertyDescriptor(_class2.prototype, "onCut"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCopy", [_dec95], Object.getOwnPropertyDescriptor(_class2.prototype, "onCopy"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeExport", [_dec96], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeExport"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDataStateChange", [_dec97], Object.getOwnPropertyDescriptor(_class2.prototype, "onDataStateChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAddCardToInsightsPressed", [_dec98], Object.getOwnPropertyDescriptor(_class2.prototype, "onAddCardToInsightsPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMassEditButtonPressed", [_dec99], Object.getOwnPropertyDescriptor(_class2.prototype, "onMassEditButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSelectionChanged", [_dec100], Object.getOwnPropertyDescriptor(_class2.prototype, "onSelectionChanged"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onActionPress", [_dec101], Object.getOwnPropertyDescriptor(_class2.prototype, "onActionPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onContextMenuPress", [_dec102], Object.getOwnPropertyDescriptor(_class2.prototype, "onContextMenuPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "handleCreateActivate", [_dec103], Object.getOwnPropertyDescriptor(_class2.prototype, "handleCreateActivate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragEnterDocument", [_dec104], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragEnterDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragStartDocument", [_dec105], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragStartDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDropDocument", [_dec106], Object.getOwnPropertyDescriptor(_class2.prototype, "onDropDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCollapseExpandNode", [_dec107], Object.getOwnPropertyDescriptor(_class2.prototype, "onCollapseExpandNode"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMoveUpDown", [_dec108], Object.getOwnPropertyDescriptor(_class2.prototype, "onMoveUpDown"), _class2.prototype), _class2)) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class);
2415
+ }), _applyDecoratedDescriptor(_class2.prototype, "onFieldLiveChange", [_dec80], Object.getOwnPropertyDescriptor(_class2.prototype, "onFieldLiveChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onTableRowPress", [_dec81], Object.getOwnPropertyDescriptor(_class2.prototype, "onTableRowPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSegmentedButtonPressed", [_dec82], Object.getOwnPropertyDescriptor(_class2.prototype, "onSegmentedButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSelected", [_dec83], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSelected"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onVariantSaved", [_dec84], Object.getOwnPropertyDescriptor(_class2.prototype, "onVariantSaved"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRowPressed", [_dec85], Object.getOwnPropertyDescriptor(_class2.prototype, "onRowPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onNoop", [_dec86], Object.getOwnPropertyDescriptor(_class2.prototype, "onNoop"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onShareToCollaborationManagerPress", [_dec87], Object.getOwnPropertyDescriptor(_class2.prototype, "onShareToCollaborationManagerPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onOpenInNewTabPress", [_dec88], Object.getOwnPropertyDescriptor(_class2.prototype, "onOpenInNewTabPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchCompleted", [_dec89], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchCompleted"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalPatchSent", [_dec90], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalPatchSent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataReceived", [_dec91], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataReceived"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataRequested", [_dec92], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataRequested"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPaste", [_dec93], Object.getOwnPropertyDescriptor(_class2.prototype, "onPaste"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "pasteEnablementHandler", [_dec94], Object.getOwnPropertyDescriptor(_class2.prototype, "pasteEnablementHandler"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCut", [_dec95], Object.getOwnPropertyDescriptor(_class2.prototype, "onCut"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCopy", [_dec96], Object.getOwnPropertyDescriptor(_class2.prototype, "onCopy"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeExport", [_dec97], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeExport"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDataStateChange", [_dec98], Object.getOwnPropertyDescriptor(_class2.prototype, "onDataStateChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAddCardToInsightsPressed", [_dec99], Object.getOwnPropertyDescriptor(_class2.prototype, "onAddCardToInsightsPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMassEditButtonPressed", [_dec100], Object.getOwnPropertyDescriptor(_class2.prototype, "onMassEditButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSelectionChanged", [_dec101], Object.getOwnPropertyDescriptor(_class2.prototype, "onSelectionChanged"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onActionPress", [_dec102], Object.getOwnPropertyDescriptor(_class2.prototype, "onActionPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onContextMenuPress", [_dec103], Object.getOwnPropertyDescriptor(_class2.prototype, "onContextMenuPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "handleCreateActivate", [_dec104], Object.getOwnPropertyDescriptor(_class2.prototype, "handleCreateActivate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragEnterDocument", [_dec105], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragEnterDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDragStartDocument", [_dec106], Object.getOwnPropertyDescriptor(_class2.prototype, "onDragStartDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDropDocument", [_dec107], Object.getOwnPropertyDescriptor(_class2.prototype, "onDropDocument"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onCollapseExpandNode", [_dec108], Object.getOwnPropertyDescriptor(_class2.prototype, "onCollapseExpandNode"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMoveUpDown", [_dec109], Object.getOwnPropertyDescriptor(_class2.prototype, "onMoveUpDown"), _class2.prototype), _class2)) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class) || _class);
2403
2416
  return TableAPI;
2404
2417
  }, false);
2405
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUYWJsZUFQSSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJtaXhpbiIsIlRhYmxlQVBJU3RhdGVIYW5kbGVyIiwiX2RlYzMiLCJUYWJsZUV4cG9ydCIsIl9kZWM0IiwiVGFibGVPcHRpbWlzdGljQmF0Y2giLCJfZGVjNSIsIlRhYmxlSGllcmFyY2h5IiwiX2RlYzYiLCJFbXB0eVJvd3NIYW5kbGVyIiwiX2RlYzciLCJDb250ZXh0TWVudUhhbmRsZXIiLCJfZGVjOCIsIlRhYmxlU2hhcmluZyIsIl9kZWM5IiwiQ29sdW1uTWFuYWdlbWVudCIsIl9kZWMxMCIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMxMSIsIl9kZWMxMiIsInByb3BlcnR5IiwidHlwZSIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwicmVxdWlyZWQiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzI0IiwiX2RlYzI1IiwiX2RlYzI2IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiX2RlYzMyIiwiX2RlYzMzIiwiX2RlYzM0IiwiX2RlYzM1IiwiYWdncmVnYXRpb24iLCJhbHRUeXBlcyIsIm11bHRpcGxlIiwiX2RlYzM2IiwiX2RlYzM3IiwiX2RlYzM4IiwiX2RlYzM5IiwiX2RlYzQwIiwiZGVmYXVsdFZhbHVlIiwiX2RlYzQxIiwiX2RlYzQyIiwiX2RlYzQzIiwiX2RlYzQ0IiwiX2RlYzQ1IiwiX2RlYzQ2IiwiX2RlYzQ3IiwiX2RlYzQ4IiwiX2RlYzQ5IiwiX2RlYzUwIiwiX2RlYzUxIiwiVGl0bGVMZXZlbCIsIkF1dG8iLCJfZGVjNTIiLCJfZGVjNTMiLCJfZGVjNTQiLCJfZGVjNTUiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJpc0JpbmRpbmdJbmZvIiwiX2RlYzYwIiwiX2RlYzYxIiwiX2RlYzYyIiwiX2RlYzYzIiwiX2RlYzY0IiwiX2RlYzY1IiwiX2RlYzY2IiwiX2RlYzY3IiwiZGVmYXVsdENsYXNzIiwiVGFibGVDcmVhdGlvbk9wdGlvbnMiLCJfZGVjNjgiLCJmb3J3YXJkaW5nIiwiZ2V0dGVyIiwiX2RlYzY5IiwiX2RlYzcwIiwiX2RlYzcxIiwiX2RlYzcyIiwiZXZlbnQiLCJfZGVjNzMiLCJfZGVjNzQiLCJfZGVjNzUiLCJfZGVjNzYiLCJfZGVjNzciLCJfZGVjNzgiLCJfZGVjNzkiLCJfZGVjODAiLCJ4bWxFdmVudEhhbmRsZXIiLCJfZGVjODEiLCJfZGVjODIiLCJfZGVjODMiLCJfZGVjODQiLCJfZGVjODUiLCJfZGVjODYiLCJfZGVjODciLCJfZGVjODgiLCJfZGVjODkiLCJfZGVjOTAiLCJfZGVjOTEiLCJfZGVjOTIiLCJfZGVjOTMiLCJfZGVjOTQiLCJfZGVjOTUiLCJfZGVjOTYiLCJfZGVjOTciLCJfZGVjOTgiLCJfZGVjOTkiLCJfZGVjMTAwIiwiX2RlYzEwMSIsIl9kZWMxMDIiLCJfZGVjMTAzIiwiX2RlYzEwNCIsIl9kZWMxMDUiLCJfZGVjMTA2IiwiX2RlYzEwNyIsIl9kZWMxMDgiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX01hY3JvQVBJIiwibVNldHRpbmdzIiwiX3RoaXMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwib3RoZXJzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsInByb3BlcnR5RWRpdE1vZGVDYWNoZSIsImluaXRpYWxDb250cm9sU3RhdGUiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9kZXNjcmlwdG9yMjMiLCJfZGVzY3JpcHRvcjI0IiwiX2Rlc2NyaXB0b3IyNSIsIl9kZXNjcmlwdG9yMjYiLCJfZGVzY3JpcHRvcjI3IiwiX2Rlc2NyaXB0b3IyOCIsIl9kZXNjcmlwdG9yMjkiLCJfZGVzY3JpcHRvcjMwIiwiX2Rlc2NyaXB0b3IzMSIsIl9kZXNjcmlwdG9yMzIiLCJfZGVzY3JpcHRvcjMzIiwiX2Rlc2NyaXB0b3IzNCIsIl9kZXNjcmlwdG9yMzUiLCJfZGVzY3JpcHRvcjM2IiwiX2Rlc2NyaXB0b3IzNyIsIl9kZXNjcmlwdG9yMzgiLCJfZGVzY3JpcHRvcjM5IiwiX2Rlc2NyaXB0b3I0MCIsIl9kZXNjcmlwdG9yNDEiLCJfZGVzY3JpcHRvcjQyIiwiX2Rlc2NyaXB0b3I0MyIsIl9kZXNjcmlwdG9yNDQiLCJfZGVzY3JpcHRvcjQ1IiwiX2Rlc2NyaXB0b3I0NiIsIl9kZXNjcmlwdG9yNDciLCJfZGVzY3JpcHRvcjQ4IiwiX2Rlc2NyaXB0b3I0OSIsIl9kZXNjcmlwdG9yNTAiLCJfZGVzY3JpcHRvcjUxIiwiX2Rlc2NyaXB0b3I1MiIsIl9kZXNjcmlwdG9yNTMiLCJfZGVzY3JpcHRvcjU0IiwiX2Rlc2NyaXB0b3I1NSIsIl9kZXNjcmlwdG9yNTYiLCJfZGVzY3JpcHRvcjU3IiwiX2Rlc2NyaXB0b3I1OCIsIl9kZXNjcmlwdG9yNTkiLCJfZGVzY3JpcHRvcjYwIiwiX2Rlc2NyaXB0b3I2MSIsIl9kZXNjcmlwdG9yNjIiLCJfZGVzY3JpcHRvcjYzIiwiX2Rlc2NyaXB0b3I2NCIsIl9kZXNjcmlwdG9yNjUiLCJfZGVzY3JpcHRvcjY2IiwiX2Rlc2NyaXB0b3I2NyIsIl9kZXNjcmlwdG9yNjgiLCJfZGVzY3JpcHRvcjY5IiwiaWdub3JlQ29udGV4dENoYW5nZUV2ZW50IiwibG9jayIsInN0b3JlZEV2ZW50cyIsIm92ZXJyaWRlUm93UHJlc3MiLCJfZGVzY3JpcHRvcjcwIiwiZW5oYW5jZWRQcm9wZXJ0eUluZm9zIiwicHJvcGVydHlJbmZvcyIsIm9yaWdpbmFsVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uIiwic2V0TGF5b3V0RGF0YSIsIkZsZXhJdGVtRGF0YSIsIm1heFdpZHRoIiwiYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyIiwiYXR0YWNoTWFuaWZlc3RFdmVudHMiLCJoYXNMaXN0ZW5lcnMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFJvd0JpbmRpbmciLCJwYXJhbWV0ZXJzIiwibWRjVGFibGUiLCJjb250ZW50IiwiZGF0YU1vZGVsIiwiZ2V0TW9kZWwiLCJiaW5kTGlzdCIsImdldFJvd0NvbGxlY3Rpb25QYXRoIiwidW5kZWZpbmVkIiwiU3RhdGVVdGlsIiwiZGV0YWNoU3RhdGVDaGFuZ2UiLCJzdGF0ZUNoYW5nZUhhbmRsZXIiLCJhdHRhY2hTdGF0ZUNoYW5nZSIsIm9FdmVudCIsImNvbnRyb2wiLCJnZXRQYXJhbWV0ZXIiLCJpc0EiLCJ0YWJsZUFQSSIsImdldFBhcmVudCIsImhhbmRsZVN0YXRlQ2hhbmdlIiwiYXR0YWNoSWZOb0xpc3RlbmVycyIsImV2ZW50TmFtZSIsIm1ldGhvZENvbmZpZyIsImF0dGFjaEV2ZW50IiwidWk1RXZlbnQiLCJGUE1IZWxwZXIiLCJsb2FkTW9kdWxlQW5kQ2FsbE1ldGhvZCIsIm1vZHVsZU5hbWUiLCJtZXRob2ROYW1lIiwiY2F0Y2giLCJlcnJvciIsIkxvZyIsImdldEN1c3RvbUZ1bmN0aW9uSW5mbyIsImJlZm9yZVJlYmluZFRhYmxlIiwicm93UHJlc3MiLCJzZWxlY3Rpb25DaGFuZ2UiLCJzZXRVcE5vRGF0YUluZm9ybWF0aW9uIiwidGFibGUiLCJnZXROb0RhdGEiLCJvd25lciIsIl9nZXRPd25lciIsImRlc2NyaXB0aW9uIiwidGl0bGUiLCJyZXNvdXJjZU1vZGVsIiwiZ2V0UmVzb3VyY2VNb2RlbCIsInN1ZmZpeCIsIm1ldGFQYXRoIiwic3RhcnRzV2l0aCIsInN1YnN0cmluZyIsImdldFRleHQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldE5vRGF0YU1lc3NhZ2VNb2RlIiwic2V0QWdncmVnYXRpb24iLCJUZXh0IiwidGV4dCIsImlsbHVzdHJhdGVkTWVzc2FnZSIsIklsbHVzdHJhdGVkTWVzc2FnZSIsImlsbHVzdHJhdGlvblR5cGUiLCJJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIiwiQmVmb3JlU2VhcmNoIiwiaWxsdXN0cmF0aW9uU2l6ZSIsImVuYWJsZURlZmF1bHRUaXRsZUFuZERlc2NyaXB0aW9uIiwiZ2V0U2VjdGlvbkNvbnRlbnRSb2xlIiwic2VuZERhdGFUb0NvbnN1bWVyIiwiY29uc3VtZXJEYXRhIiwic2V0SGVhZGVyIiwic2V0SGVhZGVyU3R5bGUiLCJoZWFkZXJTdHlsZSIsInNldEhlYWRlckxldmVsIiwidGl0bGVMZXZlbCIsImluaXQiLCJnZXRJZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQiLCJzZXRJZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQiLCJ2YWx1ZSIsInNldEJ1c3kiLCJzZXRBdHRhY2hFdmVudHMiLCJldmVudEhhbmRsZXJzIiwiX2dldEFQSUV4dGVuc2lvbiIsInNvdXJjZSIsImluc3RhbmNlTWFwIiwiZ2V0IiwiZmluZCIsImFwaSIsImdldEJpbmRpbmciLCJnZXRTZWxlY3RlZENvbnRleHRzIiwiaXNDb250ZXh0TWVudUFjdGl2ZSIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJnZXRBbGxDdXJyZW50Q29udGV4dHMiLCJjbGVhclNlbGVjdGlvbiIsImFkZE1lc3NhZ2UiLCJnZXRDb250ZW50IiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0NvbnRleHRDaGFuZ2UiLCJkZXRhY2hFdmVudCIsInJvd0JpbmRpbmciLCJyZXNvbHZlZFBhdGgiLCJnZXRSZXNvbHZlZFBhdGgiLCJjcmVhdGVNZXNzYWdlIiwicGF0aCIsIm1lc3NhZ2UiLCJNZXNzYWdlIiwidGFyZ2V0IiwicHJvY2Vzc29yIiwicGVyc2lzdGVudCIsIl9nZXRNZXNzYWdlTWFuYWdlciIsImFkZE1lc3NhZ2VzIiwiZ2V0SWQiLCJjaGVja0lmUmVjb21tZW5kYXRpb25SZWxldmFudCIsIl9vRXZlbnQiLCJpc1RhYmxlUmVhZE9ubHkiLCJpc0VkaXRhYmxlIiwiQ29tbW9uVXRpbHMiLCJnZXRJc0VkaXRhYmxlIiwidmlldyIsImdldFRhcmdldFZpZXciLCJ2aWV3RGF0YSIsImdldFZpZXdEYXRhIiwiY29udmVydGVyVHlwZSIsInJlbW92ZU1lc3NhZ2UiLCJpZCIsIm1zZ01hbmFnZXIiLCJtZXNzYWdlcyIsImdldE1lc3NhZ2VNb2RlbCIsImdldERhdGEiLCJyZXN1bHQiLCJlIiwicmVtb3ZlTWVzc2FnZXMiLCJyZWZyZXNoIiwidGFibGVSb3dCaW5kaW5nIiwiaXNSZWxhdGl2ZSIsImdldFRhYmxlRGVmaW5pdGlvbiIsImFwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsImhlYWRlckNvbnRleHQiLCJnZXRIZWFkZXJDb250ZXh0IiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJnZXRHcm91cElkIiwiZ2V0UXVpY2tGaWx0ZXIiLCJnZXRQcmVzZW50YXRpb25WYXJpYW50IiwidGFibGVTdGF0ZSIsInJldHJpZXZlRXh0ZXJuYWxTdGF0ZSIsInNvcnRPcmRlciIsInNvcnRlcnMiLCJtYXAiLCJzb3J0ZXIiLCJQcm9wZXJ0eSIsIm5hbWUiLCJyZXBsYWNlIiwiRGVzY2VuZGluZyIsImRlc2NlbmRpbmciLCJncm91cExldmVscyIsImdyb3VwIiwidGFibGVWaXoiLCJDb250ZW50IiwiaXRlbXMiLCJpdGVtIiwiVmFsdWUiLCJUeXBlIiwiYWdncmVnYXRpb25zIiwiaGFzQWdncmVnYXRpb25zIiwia2V5IiwibmV3S2V5IiwiaW5pdGlhbEV4cGFuc2lvbkxldmVsIiwiZ2V0UGF5bG9hZCIsInRhYmxlUFYiLCJQcmVzZW50YXRpb25WYXJpYW50Q2xhc3MiLCJzZXRUYWJsZVZpc3VhbGl6YXRpb24iLCJwcm9wZXJ0aWVzIiwiR3JvdXBCeSIsIlNvcnRPcmRlciIsIkFnZ3JlZ2F0aW9ucyIsInNldFByb3BlcnRpZXMiLCJFcnJvciIsIlN0cmluZyIsInNldFByZXNlbnRhdGlvblZhcmlhbnQiLCJjdXJyZW50U3RhdGVQViIsImdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MiLCJwcm9wZXJ0eUluZm9OYW1lcyIsInByb3BJbmZvIiwibmV3VGFibGVTdGF0ZSIsImNvbnZlcnRQVlRvU3RhdGUiLCJ0YWJsZVByb3BlcnRpZXMiLCJnZXRQcm9wZXJ0aWVzIiwidGFibGVQYXlsb2FkIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiZ2V0Q3VycmVudFZhcmlhbnRLZXkiLCJnZXRWYXJpYW50Iiwic2V0Q3VycmVudFZhcmlhbnRLZXkiLCJ2YXJpYW50TWFuYWdlbWVudCIsIk1lc3NhZ2luZyIsIl9nZXRSb3dCaW5kaW5nIiwib1RhYmxlIiwiZ2V0Q291bnRzIiwiVGFibGVVdGlscyIsImdldExpc3RCaW5kaW5nRm9yQ291bnQiLCJiYXRjaEdyb3VwSWQiLCJkYXRhIiwiYWRkaXRpb25hbEZpbHRlcnMiLCJnZXRIaWRkZW5GaWx0ZXJzIiwidGhlbiIsImlWYWx1ZSIsImdldENvdW50Rm9ybWF0dGVkIiwib25MaXN0QmluZGluZ0NoYW5nZSIsImZpcmVFdmVudCIsImdldFBhcmFtZXRlcnMiLCJzZXRGYXN0Q3JlYXRpb25Sb3dFbmFibGVtZW50IiwicmVmcmVzaFNlbGVjdGVkQ291bnQiLCJUYWJsZVJ1bnRpbWUiLCJzZXRDb250ZXh0c0FzeW5jIiwib25GaWVsZExpdmVDaGFuZ2UiLCJfb25GaWVsZExpdmVDaGFuZ2UiLCJvblF1aWNrRmlsdGVyU2VsZWN0aW9uQ2hhbmdlIiwiZmlsdGVyQmFySUQiLCJnZXRGaWx0ZXIiLCJmaWx0ZXJCYXIiLCJVSTVFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRTdXNwZW5kU2VsZWN0aW9uIiwicmViaW5kIiwiZ2V0Q29udHJvbGxlciIsImdldEV4dGVuc2lvbkFQSSIsInVwZGF0ZUFwcFN0YXRlIiwib25UYWJsZU5hdmlnYXRlIiwib0NvbnRyb2xsZXIiLCJvQ29udGV4dCIsIm1QYXJhbWV0ZXJzIiwiaXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZSIsImZ1bGxTY3JlZW5EaWFsb2ciLCJjbG9zZSIsIm5hdmlnYXRpb25QYXJhbWV0ZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwicmVhc29uIiwiTmF2aWdhdGlvblJlYXNvbiIsIlJvd1ByZXNzIiwiX3JvdXRpbmciLCJuYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQiLCJvblRhYmxlUm93UHJlc3MiLCJwcmVzc0V2ZW50IiwicHJvY2VlZCIsInJvd05hdmlnYXRpb25JbmZvIiwiYW5ub3RhdGlvbiIsInJvdyIsIm5hdmlnYXRpb25JbmZvIiwiY29udHJvbGxlciIsImdldFBhZ2VDb250cm9sbGVyIiwiYmluZGluZ0NvbnRleHQiLCJhdm9pZFBhcmFsbGVsQ2FsbHMiLCJfaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwib25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kIiwibmF2aWdhdGlvblRhcmdldCIsImVkaXRhYmxlIiwiY2hlY2tFZGl0YWJsZSIsImNhbGxFeHRlbnNpb24iLCJ0YXJnZXRQYXRoIiwicmVjcmVhdGVDb250ZXh0IiwiZWRpdEZsb3ciLCJzeW5jVGFzayIsIm9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCIsIm9uVmFyaWFudFNlbGVjdGVkIiwib3JpZ2luYWxTb3VyY2UiLCJnZXRTb3VyY2UiLCJvblZhcmlhbnRTYXZlZCIsIm9uUm93UHJlc3NlZCIsIm9uTm9vcCIsImNvbnRleHQiLCJlbXB0eVJvdyIsImlzSW5hY3RpdmUiLCJpc1RyYW5zaWVudCIsImFuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkIiwiZW5hYmxlQW5hbHl0aWNzIiwib25TaGFyZVRvQ29sbGFib3JhdGlvbk1hbmFnZXJQcmVzcyIsImNvbnRleHRzIiwibWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zIiwiX29uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MiLCJvbk9wZW5Jbk5ld1RhYlByZXNzIiwiYWxsQ29udGV4dHMiLCJuYXZpZ2FibGVDb250ZXh0cyIsInByb21pc2VUb1dhaXQiLCJQcm9taXNlS2VlcGVyIiwidGV4dEtleSIsIk1lc3NhZ2VCb3giLCJjb25maXJtIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJvbkNsb3NlIiwic2hvdWxkUHJvY2VlZCIsInByb21pc2UiLCJmb3JFYWNoIiwid2FybmluZyIsIm9uSW50ZXJuYWxQYXRjaENvbXBsZXRlZCIsImV2dCIsImludGVybmFsTW9kZWxDb250ZXh0Iiwic2VsZWN0ZWRDb250ZXh0cyIsIkRlbGV0ZUhlbHBlciIsInVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzIiwibWVzc2FnZUhhbmRsZXIiLCJzaG93TWVzc2FnZURpYWxvZyIsInJlbGVhc2VIb2xkQnlDb250cm9sIiwib25JbnRlcm5hbFBhdGNoU2VudCIsImVkaXRGbG93RXh0ZW5zaW9uIiwiaG9sZE1lc3NhZ2VzRm9yQ29udHJvbCIsImhhbmRsZVBhdGNoU2VudCIsImlubGluZUVkaXRGbG93IiwiaXNJbmxpbmVFZGl0UG9zc2libGUiLCJoYW5kbGVJbmxpbmVFZGl0UGF0Y2hTZW50Iiwib25JbnRlcm5hbERhdGFSZWNlaXZlZCIsImlzUmVjb21tZW5kYXRpb25SZWxldmFudCIsImNvbnRleHRJZGVudGlmaWVyIiwiZ2V0SWRlbnRpZmllckNvbHVtbiIsInJlc3BvbnNlQ29udGV4dHNBcnJheSIsIm5ld0NvbnRleHRzIiwicHVzaCIsInJlY29tbWVuZGF0aW9ucyIsImZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnMiLCJzZXREb3dubG9hZFVybCIsIm9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkIiwic2V0UHJvcGVydHkiLCJmaWx0ZXJzIiwicXVpY2tGaWx0ZXJzIiwic2hvd0NvdW50cyIsInNldENvdW50c0FzTG9hZGluZyIsInJlZnJlc2hVblNlbGVjdGVkQ291bnRzIiwic2V0QnVzeUxvY2siLCJsb2NrZWQiLCJidXN5SWQiLCJidXN5UGF0aCIsImdldEJ1c3lQYXRoIiwiQnVzeUxvY2tlciIsInVubG9jayIsImlzTG9jYWwiLCJvblBhc3RlIiwiZm9yQ29udGV4dE1lbnUiLCJzZXRDb250ZXh0TWVudUFjdGl2ZSIsInJhd1Bhc3RlZERhdGEiLCJtZW51IiwiaW50ZXJuYWxDb250ZXh0IiwiZW5hYmxlUGFzdGUiLCJhY3Rpb24iLCJzcmNDb250ZXh0cyIsInNyY0NvbnRleHQiLCJuZXdQYXJlbnRDb250ZXh0IiwiZ2V0UGF0aCIsImFsbCIsIm1vdmUiLCJwYXJlbnQiLCJjb3B5IiwicmVxdWVzdFNpZGVFZmZlY3RzRm9yQ29weUFjdGlvbiIsInJlcXVlc3RTaWRlRWZmZWN0c0ZvckNoYW5nZU5leHRTaWJsaW5nQWN0aW9uIiwiTWVzc2FnZVRvYXN0Iiwic2hvdyIsImdldEVuYWJsZVBhc3RlIiwiY2VsbFNlbGVjdGlvbiIsImdldENlbGxTZWxlY3RvciIsImdldFNlbGVjdGlvbiIsImNvbHVtbnMiLCJQYXN0ZUhlbHBlciIsInBhc3RlUmFuZ2VEYXRhIiwicGFzdGVEYXRhIiwib25DdXQiLCJfb25Db3B5Q3V0Iiwib25Db3B5Iiwib25CZWZvcmVFeHBvcnQiLCJleHBvcnRFdmVudCIsIl9vbkJlZm9yZUV4cG9ydCIsImRhdGFTdGF0ZUluZGljYXRvckZpbHRlciIsInNUYWJsZUNvbnRleHRCaW5kaW5nUGF0aCIsInNUYWJsZVJvd0JpbmRpbmciLCJnZXRUYXJnZXRzIiwib25EYXRhU3RhdGVDaGFuZ2UiLCJkYXRhU3RhdGVJbmRpY2F0b3IiLCJmaWx0ZXJlZE1lc3NhZ2VzIiwiaGlkZGVuTWFuZGF0b3J5UHJvcGVydGllcyIsIm1zZyIsInRlY2huaWNhbERldGFpbHMiLCJnZXRUZWNobmljYWxEZXRhaWxzIiwiZW1wdHlSb3dNZXNzYWdlIiwibWlzc2luZ0NvbHVtbiIsImZpbHRlciIsImhpZGRlblByb3BlcnR5IiwibWVzc2FnZVN0cmlwRXJyb3IiLCJqb2luIiwic2hvd01lc3NhZ2UiLCJpbnRlcm5hbE1vZGVsIiwicmVzdW1lQmluZGluZyIsImJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZCIsImdldERhdGFJbml0aWFsaXplZCIsInJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzIiwib0ZpbHRlckNvbnRyb2wiLCJGaWx0ZXJVdGlscyIsImdldE5vdEFwcGxpY2FibGVGaWx0ZXJzIiwic3VzcGVuZEJpbmRpbmciLCJpbnZhbGlkYXRlQ29udGVudCIsImZhc3RDcmVhdGlvblJvdyIsImdldENyZWF0aW9uUm93IiwidGFibGVCaW5kaW5nIiwiZ2V0Q29udGV4dCIsIlRhYmxlSGVscGVyIiwiZW5hYmxlRmFzdENyZWF0aW9uUm93Iiwib25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQiLCJfb25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQiLCJvbk1hc3NFZGl0QnV0dG9uUHJlc3NlZCIsIm1hc3NFZGl0SGVscGVyIiwiTWFzc0VkaXREaWFsb2dIZWxwZXIiLCJvbkNvbnRleHRNZW51Iiwic2V0TWFzc0VkaXREaWFsb2dIZWxwZXIiLCJvcGVuIiwib25TZWxlY3Rpb25DaGFuZ2VkIiwidWk1ZXZlbnQiLCJzZXRDb250ZXh0cyIsInNlbGVjdGVkQ29udGV4dCIsIm9uQWN0aW9uUHJlc3MiLCJwYWdlQ29udHJvbGxlciIsImFjdGlvbk5hbWUiLCJtb2RlbCIsImxhYmVsRXhwcmVzc2lvbiIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwibGFiZWwiLCJpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbiIsIm1vZGVsTmFtZSIsImV4ZWN1dGVBY3Rpb24iLCJub3RBcHBsaWNhYmxlQ29udGV4dHMiLCJjb252ZXJ0ZWRNZXRhZGF0YSIsImNvbnZlcnRUeXBlcyIsImdldE1ldGFNb2RlbCIsImVudGl0eVR5cGUiLCJyZXNvbHZlUGF0aCIsImVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWUiLCJteVVuYXBwbGljYWJsZUNvbnRleHREaWFsb2ciLCJOb3RBcHBsaWNhYmxlQ29udGV4dERpYWxvZyIsImVudGl0eVNldCIsImVudGl0eVNldE5hbWUiLCJhcHBsaWNhYmxlQ29udGV4dHMiLCJpbnZva2VBY3Rpb24iLCJpbmZvIiwib25Db250ZXh0TWVudVByZXNzIiwiX29uQ29udGV4dE1lbnVQcmVzcyIsIm1hc3NFZGl0RGlhbG9nSGVscGVyIiwiZ2V0TWFzc0VkaXREaWFsb2dIZWxwZXIiLCJ1cGRhdGVGaWx0ZXJCYXIiLCJmaWx0ZXJCYXJSZWZJZCIsImdldEZpbHRlckJhciIsIl9zZXRGaWx0ZXJCYXIiLCJkZXRhY2hGaWx0ZXJCYXIiLCJzZXRGaWx0ZXIiLCJnZXRGaWx0ZXJCYXJDb250cm9sIiwiYnlJZCIsImxhc3RJbmRleE9mIiwiaGFuZGxlQ3JlYXRlQWN0aXZhdGUiLCJhY3RpdmF0ZUV2ZW50IiwiX2hhbmRsZUNyZWF0ZUFjdGl2YXRlIiwib25EcmFnRW50ZXJEb2N1bWVudCIsIl9vbkRyYWdFbnRlckRvY3VtZW50Iiwib25EcmFnU3RhcnREb2N1bWVudCIsIl9vbkRyYWdTdGFydERvY3VtZW50Iiwib25Ecm9wRG9jdW1lbnQiLCJfb25Ecm9wRG9jdW1lbnQiLCJvbkNvbGxhcHNlRXhwYW5kTm9kZSIsImV4cGFuZCIsImdldE1ldGFkYXRhIiwiX29uQ29sbGFwc2VFeHBhbmROb2RlIiwib25Nb3ZlVXBEb3duIiwibW92ZVVwIiwiX29uTW92ZVVwRG93biIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJTdGF0ZUhlbHBlciIsInNldFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50IiwicHJlZmlsbERlc2NyaXB0aW9ucyIsInNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2wiLCJfY3JlYXRlQ29udGVudFYyTW9kZSIsInByZXByb2Nlc3NvckNvbnRleHQiLCJtZXRhTW9kZWwiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImNvbnRleHRQYXRoIiwiZGVlcENsb25lIiwidXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkiLCJpZ25vcmVkRmllbGRzIiwiY29sbGVjdGlvbkVudGl0eSIsImNvbGxlY3Rpb24iLCJjb250ZXh0T2JqZWN0UGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImhhbmRsZXJQcm92aWRlciIsIlRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIiLCJmcmFnbWVudCIsIlhNTFByZXByb2Nlc3NvciIsInByb2Nlc3MiLCJwYXJzZVhNTFN0cmluZyIsInhtbCIsImpzeCIsInJlbmRlckFzWE1MIiwiTWRjVGFibGVUZW1wbGF0ZSIsImdldE1EQ1RhYmxlVGVtcGxhdGUiLCJnZXRDb252ZXJ0ZWRNZXRhZGF0YSIsIm1vZGVscyIsImZpcnN0RWxlbWVudENoaWxkIiwiZGVzdHJveSIsIkZyYWdtZW50IiwibG9hZCIsImRlZmluaXRpb24iLCJnZXRSb290Q29udHJvbGxlciIsImNvbnRhaW5pbmdWaWV3IiwiZ2V0Um9vdENvbnRyb2wiLCJwcm9wZXJ0eUtleSIsInByb3BlcnR5VmFsdWUiLCJiU3VwcHJlc3NJbnZhbGlkYXRlIiwiX2FwcGx5aW5nU2V0dGluZ3MiLCJpbmNsdWRlcyIsImdldERhdGFNb2RlbEFuZENvbnZlcnRlZFRhcmdldE9iamVjdCIsInByb3BlcnR5TmFtZSIsImVudGl0eVBhdGgiLCJ0YXJnZXRNZXRhUGF0aCIsInByb3BlcnR5SW5mbyIsImFubm90YXRpb25QYXRoIiwidGFyZ2V0T2JqZWN0IiwiY29udmVydGVkdGFyZ2V0T2JqZWN0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiY29udmVydE1ldGFNb2RlbENvbnRleHQiLCJkYXRhTW9kZWxQYXRoIiwiRmllbGRUZW1wbGF0aW5nIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclZhbHVlIiwiY3JlYXRlQW55Q29udHJvbCIsIk1vZGVBc0V4cHJlc3Npb24iLCJyb3dDb250ZXh0IiwiYW55T2JqZWN0IiwiQW55IiwiYW55Iiwic2V0TW9kZWwiLCJnZXRQcm9wZXJ0eUVkaXRNb2RlIiwicHJvcGVydHlGb3JGaWVsZENvbnRyb2wiLCJlZGl0TW9kZUFzRXhwcmVzc2lvbiIsImNvbXBpbGVFeHByZXNzaW9uIiwiVUlGb3JtYXR0ZXJzIiwiZ2V0RWRpdE1vZGUiLCJzZXRCaW5kaW5nQ29udGV4dCIsImFkZERlcGVuZGVudCIsImVkaXRNb2RlIiwiZ2V0QW55Iiwic2hvd0NvbHVtbnMiLCJjb2x1bW5LZXlzIiwiY29sdW1uS2V5IiwibW9kaWZ5RHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW4iLCJoaWRlQ29sdW1ucyIsInNldElnbm9yZWRGaWVsZHMiLCJnZXRJZ25vcmVkRmllbGRzIiwiZ2V0Q29udHJvbFN0YXRlIiwiY29udHJvbFN0YXRlIiwiZnVsbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwiZ2V0U3RhdGVLZXkiLCJvQ29udHJvbCIsImdldExvY2FsSWQiLCJkeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbnMiLCJ1cGRhdGVDb2x1bW5zVmlzaWJpbGl0eVN0YXRpYyIsImdldE1EQ1RhYmxlIiwiYXN5bmNDYWxsIiwibG9ja05hbWUiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJzZXRGdWxsU2NyZWVuRGlhbG9nIiwiZGlhbG9nIiwic2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyIsImdldFByb3BlcnR5SW5mb3MiLCJlbmhhbmNlZFByb3BlcnR5SW5mbyIsInZpc2libGUiLCJleHBvcnRTZXR0aW5ncyIsImNsaXBib2FyZFNldHRpbmdzIiwidmlzdWFsU2V0dGluZ3MiLCJ0b29sdGlwIiwiaXNLZXkiLCJleHRlbnNpb24iLCJ0ZWNobmljYWxseUdyb3VwYWJsZSIsInRlY2huaWNhbGx5QWdncmVnYXRhYmxlIiwiY3VzdG9tQWdncmVnYXRlIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJfcmVmIiwiXyIsIm1heENvbmRpdGlvbnMiLCJmb3JtYXRPcHRpb25zIiwiY29uc3RyYWludHMiLCJncm91cExhYmVsIiwiY2FzZVNlbnNpdGl2ZSIsImZpbHRlcmFibGUiLCJzb3J0YWJsZSIsImdyb3VwYWJsZSIsImRhdGFUeXBlIiwiYWdncmVnYXRhYmxlIiwidW5pdCIsIl9yZWYyIiwic2V0Q2FjaGVkUHJvcGVydHlJbmZvcyIsImdldENhY2hlZFByb3BlcnR5SW5mb3MiLCJjb2xsZWN0aW9uQ29udGV4dCIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiZ2V0VGFibGVUZW1wbGF0ZUJpbmRpbmdJbmZvIiwicm93QmluZGluZ0luZm8iLCJzdXNwZW5kZWQiLCIkY291bnQiLCJlbmFibGUkc2VsZWN0Iiwic2VsZWN0Iiwia2V5cyIsInJlcXVlc3RBdExlYXN0IiwiJHNlbGVjdCIsImVuYWJsZSQkZ2V0S2VlcEFsaXZlQ29udGV4dCIsIiQkZ2V0S2VlcEFsaXZlQ29udGV4dCIsIiQkY2xlYXJTZWxlY3Rpb25PbkZpbHRlciIsIiQkZ3JvdXBJZCIsIiQkdXBkYXRlR3JvdXBJZCIsIiQkb3duUmVxdWVzdCIsIiQkcGF0Y2hXaXRob3V0U2lkZUVmZmVjdHMiLCJwYXRjaENvbXBsZXRlZCIsImJpbmQiLCJkYXRhUmVjZWl2ZWQiLCJkYXRhUmVxdWVzdGVkIiwiY2hhbmdlIiwiY3JlYXRlQWN0aXZhdGUiLCJjcmVhdGVTZW50IiwiaGFuZGxlQ3JlYXRlU2VudCIsInBhdGNoU2VudCIsImV2ZW50cyIsImFkZFNldHRpbmciLCJnZXRTZXR0aW5nc0Zvck1hbmlmZXN0IiwidGFibGVTZXR0aW5ncyIsImVuYWJsZUV4cG9ydCIsImV4cG9ydFJlcXVlc3RTaXplIiwiZXhwb3J0RmlsZU5hbWUiLCJleHBvcnRTaGVldE5hbWUiLCJmcm96ZW5Db2x1bW5Db3VudCIsImRpc2FibGVDb2x1bW5GcmVlemUiLCJ3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlciIsInJvd0NvdW50TW9kZSIsInJvd0NvdW50IiwiZW5hYmxlRnVsbFNjcmVlbiIsImRpc2FibGVDb3B5VG9DbGlwYm9hcmQiLCJzY3JvbGxUaHJlc2hvbGQiLCJ0aHJlc2hvbGQiLCJwb3BpbkxheW91dCIsInNlbGVjdGlvbk1vZGUiLCJlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMiLCJlbmFibGVTZWxlY3RBbGwiLCJzZWxlY3Rpb25MaW1pdCIsImNvbmRlbnNlZFRhYmxlTGF5b3V0IiwiY3JlYXRpb25Nb2RlIiwiY3JlYXRpb25GaWVsZHMiLCJjcmVhdGVBdEVuZCIsImlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUiLCJvdXRib3VuZCIsIm1hc3NFZGl0IiwiZW5hYmxlTWFzc0VkaXQiLCJjdXN0b21Db250ZW50IiwidmlzaWJsZUZpZWxkcyIsIm9wZXJhdGlvbkdyb3VwaW5nTW9kZSIsImFuYWx5dGljYWxDb25maWd1cmF0aW9uIiwiYWdncmVnYXRpb25PbkxlYWZMZXZlbCIsInF1aWNrVmFyaWFudFNlbGVjdGlvbiIsInBhdGhzIiwiZmluZFNsb3RBY3Rpb25Gcm9tS2V5IiwiYWN0aW9ucyIsImEiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiY3JlYXRlQ29udGVudCIsImdldEZ1bGxNZXRhUGF0aCIsImVuZHNXaXRoIiwiZm9yY2VDcmVhdGlvbiIsImdldE93bmVyQ29udGV4dFBhdGgiLCJmdWxsTWV0YVBhdGgiLCJtZXRhUGF0aENvbnRleHQiLCJjcmVhdGVUYWJsZURlZmluaXRpb24iLCJ1cGRhdGVQcm9wZXJ0aWVzRnJvbVRhYmxlRGVmaW5pdGlvbiIsImNyZWF0ZSIsIm1vZGUiLCJhcHBlbmQiLCJjb252ZXJ0ZWRUeXBlcyIsInRhcmdldFR5cGUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJjcmVhdGVNRENUYWJsZSIsInNldHVwT3B0aW1pc3RpY0JhdGNoIiwic2V0TWV0YVBhdGgiLCJNYW5hZ2VkT2JqZWN0TWV0YWRhdGEiLCJpc0dlbmVyYXRlZElkIiwiY29udGVudElkIiwidXNlQmFzaWNTZWFyY2giLCJnZW5lcmF0ZSIsInJlYWRPbmx5IiwiZGlzcGxheU1vZGUiLCJlbXB0eVJvd3NFbmFibGVkIiwiZW5hYmxlZCIsIkNyZWF0aW9uTW9kZSIsIklubGluZUNyZWF0aW9uUm93cyIsIlN0YW5kYXJkQWN0aW9uS2V5cyIsIkNyZWF0ZSIsIm1vZGVGb3JOb0RhdGFNZXNzYWdlIiwic3BsaXQiLCJnZXRDb3VudCIsIk1hY3JvQVBJIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUYWJsZUFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCwgRW50aXR5VHlwZSwgTmF2aWdhdGlvblByb3BlcnR5LCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHREYXRhRmllbGRUeXBlcyxcblx0RGF0YVBvaW50VHlwZVR5cGVzLFxuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBkZWVwQ2xvbmUgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcENsb25lXCI7XG5pbXBvcnQge1xuXHRjb21waWxlRXhwcmVzc2lvbixcblx0aXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24sXG5cdHJlc29sdmVCaW5kaW5nU3RyaW5nLFxuXHR0eXBlIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uXG59IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YsIFhNTEV2ZW50SG9sZGVyIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgaW1wbGVtZW50SW50ZXJmYWNlLCBtaXhpbiwgcHJvcGVydHksIHhtbEV2ZW50SGFuZGxlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBqc3ggZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgSVJvd0JpbmRpbmdJbnRlcmZhY2UgZnJvbSBcInNhcC9mZS9jb3JlL0lSb3dCaW5kaW5nSW50ZXJmYWNlXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCB7IHBhcnNlWE1MU3RyaW5nLCB4bWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCdXN5TG9ja2VyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgTm90QXBwbGljYWJsZUNvbnRleHREaWFsb2cgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2VkaXRGbG93L05vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nXCI7XG5pbXBvcnQgTmF2aWdhdGlvblJlYXNvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvcm91dGluZy9OYXZpZ2F0aW9uUmVhc29uXCI7XG5pbXBvcnQgQW55IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9BbnlcIjtcbmltcG9ydCB7IENyZWF0aW9uTW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGNvbnZlcnRUeXBlcywgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQge1xuXHRnZXRDdXN0b21GdW5jdGlvbkluZm8sXG5cdHR5cGUgQ3JlYXRlQmVoYXZpb3IsXG5cdHR5cGUgRXh0ZXJuYWxNZXRob2RDb25maWcsXG5cdHR5cGUgVGFibGVUeXBlLFxuXHR0eXBlIFRhYmxlVmlzdWFsaXphdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IFN0YW5kYXJkQWN0aW9uS2V5cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9TdGFuZGFyZEFjdGlvbnNcIjtcbmltcG9ydCBEZWxldGVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRGVsZXRlSGVscGVyXCI7XG5pbXBvcnQgRlBNSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0ZQTUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgUGFzdGVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUGFzdGVIZWxwZXJcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCB7IGdldFJlc291cmNlTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBSb3V0aW5nTmF2aWdhdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvUm91dGluZ1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQge1xuXHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLFxuXHRnZXRUYXJnZXRPYmplY3RQYXRoLFxuXHR0eXBlIERhdGFNb2RlbE9iamVjdFBhdGhcbn0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgdHlwZSBEaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQgKiBhcyBVSUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciwgU2VyaWFsaXplZENvbGxlY3Rpb25CaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbGxlY3Rpb25CaW5kaW5nSW5mb1wiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL01hY3JvQVBJXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBJU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL3NlY3Rpb24vSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiO1xuaW1wb3J0IHR5cGUgeyBDb25zdW1lckRhdGEgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIjtcbmltcG9ydCAqIGFzIEZpZWxkVGVtcGxhdGluZyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckJCVjQgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCB0eXBlIHsgQ29udHJvbFN0YXRlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW5zaWdodHMvQ29tbW9uSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgdHlwZSBCYXNpY1NlYXJjaCBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9CYXNpY1NlYXJjaFwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0NvbHVtblwiO1xuaW1wb3J0ICogYXMgTWRjVGFibGVUZW1wbGF0ZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9NZGNUYWJsZVRlbXBsYXRlXCI7XG5pbXBvcnQgdHlwZSBPdmVyZmxvd0dyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL092ZXJmbG93R3JvdXBzXCI7XG5pbXBvcnQgdHlwZSBRdWlja0ZpbHRlclNlbGVjdG9yIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1F1aWNrRmlsdGVyU2VsZWN0b3JcIjtcbmltcG9ydCBUYWJsZUNyZWF0aW9uT3B0aW9ucyBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUNyZWF0aW9uT3B0aW9uc1wiO1xuaW1wb3J0IFRhYmxlSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlSGVscGVyXCI7XG5pbXBvcnQgVGFibGVSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlUnVudGltZVwiO1xuaW1wb3J0IFRhYmxlVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVXRpbHNcIjtcbmltcG9ydCB7IGNvbnZlcnRQVlRvU3RhdGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9hZGFwdGVyL1RhYmxlUFZUb1N0YXRlXCI7XG5pbXBvcnQgTWFzc0VkaXREaWFsb2dIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvbWFzc0VkaXQvTWFzc0VkaXREaWFsb2dIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUHZQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1ByZXNlbnRhdGlvblZhcmlhbnRcIjtcbmltcG9ydCBQcmVzZW50YXRpb25WYXJpYW50Q2xhc3MgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1ByZXNlbnRhdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIERpYWxvZyBmcm9tIFwic2FwL20vRGlhbG9nXCI7XG5pbXBvcnQgRmxleEl0ZW1EYXRhIGZyb20gXCJzYXAvbS9GbGV4SXRlbURhdGFcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2UgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZVR5cGUgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVR5cGVcIjtcbmltcG9ydCB0eXBlIE1lbnUgZnJvbSBcInNhcC9tL01lbnVcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgTWVzc2FnZVRvYXN0IGZyb20gXCJzYXAvbS9NZXNzYWdlVG9hc3RcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgdHlwZSB7IERhdGFTdGF0ZUluZGljYXRvciREYXRhU3RhdGVDaGFuZ2VFdmVudCB9IGZyb20gXCJzYXAvbS9wbHVnaW5zL0RhdGFTdGF0ZUluZGljYXRvclwiO1xuaW1wb3J0IHR5cGUgeyBQYXN0ZVByb3ZpZGVyJFBhc3RlRXZlbnQgfSBmcm9tIFwic2FwL20vcGx1Z2lucy9QYXN0ZVByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgRXZlbnQsIGRlZmF1bHQgYXMgVUk1RXZlbnQgfSBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0TWV0YWRhdGEgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RNZXRhZGF0YVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgRnJhZ21lbnQgZnJvbSBcInNhcC91aS9jb3JlL0ZyYWdtZW50XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgTWVzc2FnaW5nIGZyb20gXCJzYXAvdWkvY29yZS9NZXNzYWdpbmdcIjtcbmltcG9ydCB0eXBlIERyYWdEcm9wSW5mbyBmcm9tIFwic2FwL3VpL2NvcmUvZG5kL0RyYWdEcm9wSW5mb1wiO1xuaW1wb3J0IHsgVGl0bGVMZXZlbCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlVHlwZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlVHlwZVwiO1xuaW1wb3J0IFhNTFByZXByb2Nlc3NvciBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9YTUxQcmVwcm9jZXNzb3JcIjtcbmltcG9ydCB0eXBlIHtcblx0ZGVmYXVsdCBhcyBNRENUYWJsZSxcblx0TURDVGFibGVQcm9wZXJ0eUluZm8gYXMgUHJvcGVydHlJbmZvLFxuXHRkZWZhdWx0IGFzIFRhYmxlLFxuXHRUYWJsZSRCZWZvcmVFeHBvcnRFdmVudCxcblx0VGFibGUkQmVmb3JlT3BlbkNvbnRleHRNZW51RXZlbnQsXG5cdFRhYmxlJFNlbGVjdGlvbkNoYW5nZUV2ZW50XG59IGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBUeXBlQ29uZmlnIGZyb20gXCJzYXAvdWkvbWRjL1R5cGVDb25maWdcIjtcbmltcG9ydCB0eXBlIHsgR3JvdXBMZXZlbHMsIEl0ZW1zLCBTb3J0ZXJzIH0gZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB7IHR5cGUgUm93QWN0aW9uSXRlbSRQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvdGFibGUvUm93QWN0aW9uSXRlbVwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IE9EYXRhQ29udGV4dEJpbmRpbmckUGF0Y2hTZW50RXZlbnQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhQ29udGV4dEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IFN0YXRlSGVscGVyIGZyb20gXCIuLi9tZGMvYWRhcHRlci9TdGF0ZUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uR3JvdXBPdmVycmlkZSBmcm9tIFwiLi9BY3Rpb25Hcm91cE92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25PdmVycmlkZSBmcm9tIFwiLi9BY3Rpb25PdmVycmlkZVwiO1xuaW1wb3J0IHR5cGUgQW5hbHl0aWNhbENvbmZpZ3VyYXRpb24gZnJvbSBcIi4vQW5hbHl0aWNhbENvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB0eXBlIENvbHVtbk92ZXJyaWRlIGZyb20gXCIuL0NvbHVtbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBNYXNzRWRpdCBmcm9tIFwiLi9NYXNzRWRpdFwiO1xuaW1wb3J0IHR5cGUgUXVpY2tWYXJpYW50U2VsZWN0aW9uIGZyb20gXCIuL1F1aWNrVmFyaWFudFNlbGVjdGlvblwiO1xuaW1wb3J0IHsgY3JlYXRlVGFibGVEZWZpbml0aW9uIH0gZnJvbSBcIi4vVGFibGVEZWZpbml0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5pbXBvcnQgQ29sdW1uTWFuYWdlbWVudCBmcm9tIFwiLi9taXhpbi9Db2x1bW5NYW5hZ2VtZW50XCI7XG5pbXBvcnQgQ29udGV4dE1lbnVIYW5kbGVyIGZyb20gXCIuL21peGluL0NvbnRleHRNZW51SGFuZGxlclwiO1xuaW1wb3J0IEVtcHR5Um93c0hhbmRsZXIgZnJvbSBcIi4vbWl4aW4vRW1wdHlSb3dzSGFuZGxlclwiO1xuaW1wb3J0IFRhYmxlQVBJU3RhdGVIYW5kbGVyIGZyb20gXCIuL21peGluL1RhYmxlQVBJU3RhdGVIYW5kbGVyXCI7XG5pbXBvcnQgVGFibGVFeHBvcnQgZnJvbSBcIi4vbWl4aW4vVGFibGVFeHBvcnRcIjtcbmltcG9ydCBUYWJsZUhpZXJhcmNoeSBmcm9tIFwiLi9taXhpbi9UYWJsZUhpZXJhcmNoeVwiO1xuaW1wb3J0IFRhYmxlT3B0aW1pc3RpY0JhdGNoIGZyb20gXCIuL21peGluL1RhYmxlT3B0aW1pc3RpY0JhdGNoXCI7XG5pbXBvcnQgVGFibGVTaGFyaW5nIGZyb20gXCIuL21peGluL1RhYmxlU2hhcmluZ1wiO1xuXG5leHBvcnQgdHlwZSBFbmhhbmNlZEZFUHJvcGVydHlJbmZvID0gUHJvcGVydHlJbmZvICYge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdHJlbGF0aXZlUGF0aDogc3RyaW5nO1xuXHRkZXNjcmlwdGlvblByb3BlcnR5Pzogc3RyaW5nO1xuXHRtb2RlPzogRGlzcGxheU1vZGU7XG5cdHZhbHVlUHJvcGVydHk/OiBzdHJpbmc7XG5cdHR5cGVDb25maWc/OiBUeXBlQ29uZmlnO1xuXHRleHBvcnREYXRhUG9pbnRUYXJnZXRWYWx1ZT86IHN0cmluZztcblx0YWRkaXRpb25hbExhYmVscz86IHN0cmluZ1tdO1xuXHR0eXBlPzogc3RyaW5nO1xuXHR0ZXh0QXJyYW5nZW1lbnQ/OiB7XG5cdFx0dGV4dFByb3BlcnR5OiBzdHJpbmc7XG5cdFx0bW9kZTogRGlzcGxheU1vZGU7XG5cdH07XG59O1xuXG50eXBlIERhdGFNb2RlbENvbnZlcnNpb24gPSB7XG5cdGRhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcyB8IFByb3BlcnR5Pjtcblx0Y29udmVydGVkdGFyZ2V0T2JqZWN0OiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzO1xufTtcblxuZXhwb3J0IHR5cGUgVGFibGVDb2x1bW5Qcm9wZXJ0aWVzID0ge1xuXHRrZXk6IHN0cmluZztcblx0dmlzaWJpbGl0eTogYm9vbGVhbjtcbn1bXTtcblxuZXhwb3J0IHR5cGUgRHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW4gPSB7IGNvbHVtbktleTogc3RyaW5nOyB2aXNpYmxlOiBib29sZWFuIH07XG5cbmV4cG9ydCB0eXBlIFRhYmxlU3RhdGUgPSB7XG5cdGlubmVyVGFibGU/OiB7XG5cdFx0aW5pdGlhbFN0YXRlPzoge1xuXHRcdFx0aXRlbXM/OiB7IG5hbWU6IHN0cmluZyB9W107XG5cdFx0XHRzdXBwbGVtZW50YXJ5Q29uZmlnPzogb2JqZWN0O1xuXHRcdH07XG5cdFx0ZnVsbFN0YXRlPzoge1xuXHRcdFx0aXRlbXM/OiB7IG5hbWU6IHN0cmluZyB9W107XG5cdFx0XHRmaWx0ZXI/OiBvYmplY3Q7XG5cdFx0fTtcblx0fTtcblx0cXVpY2tGaWx0ZXI/OiB7XG5cdFx0c2VsZWN0ZWRLZXk/OiBzdHJpbmc7XG5cdH07XG5cdHZhcmlhbnRNYW5hZ2VtZW50Pzoge1xuXHRcdHZhcmlhbnRJZD86IHN0cmluZyB8IG51bGw7XG5cdH07XG5cdHN1cHBsZW1lbnRhcnlDb25maWc/OiBvYmplY3Q7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9jayB7XG5cdHNldEJ1c3lMb2NrKGxvY2tlZDogYm9vbGVhbik6IHZvaWQ7XG5cdGVuYWJsZU9wdGltaXN0aWNCYXRjaE1vZGUoKTogdm9pZDtcblx0bWV0YVBhdGg6IHN0cmluZztcblx0Y29udGV4dFBhdGg/OiBzdHJpbmc7XG5cdGVtcHR5Um93c0VuYWJsZWQ6IGJvb2xlYW47XG5cdGdldENvbnRlbnQoKTogVGFibGU7XG5cdGdldFRhYmxlRGVmaW5pdGlvbigpOiBUYWJsZVZpc3VhbGl6YXRpb247XG5cdGdldFNlbGVjdGVkQ29udGV4dHMoKTogQ29udGV4dFtdO1xuXHRpc1RhYmxlUm93TmF2aWdhdGlvblBvc3NpYmxlKGNvbnRleHQ6IENvbnRleHQpOiBib29sZWFuO1xuXHRjcmVhdGVBbnlDb250cm9sKE1vZGVBc0V4cHJlc3Npb246IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCByb3dDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkKTogdHlwZW9mIEFueTtcblx0Z2V0RGF0YU1vZGVsQW5kQ29udmVydGVkVGFyZ2V0T2JqZWN0KHByb3BlcnR5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogRGF0YU1vZGVsQ29udmVyc2lvbiB8IHVuZGVmaW5lZDtcbn1cblxuaW50ZXJmYWNlIFRhYmxlQVBJXG5cdGV4dGVuZHMgVGFibGVBUElTdGF0ZUhhbmRsZXIsXG5cdFx0VGFibGVFeHBvcnQsXG5cdFx0VGFibGVPcHRpbWlzdGljQmF0Y2gsXG5cdFx0VGFibGVIaWVyYXJjaHksXG5cdFx0RW1wdHlSb3dzSGFuZGxlcixcblx0XHRDb250ZXh0TWVudUhhbmRsZXIsXG5cdFx0VGFibGVTaGFyaW5nLFxuXHRcdENvbHVtbk1hbmFnZW1lbnQge1xuXHQvLyBhZ2dyZWdhdGlvblxuXHRnZXRDb250ZW50KCk6IE1EQ1RhYmxlO1xuXHQvLyBhc3NvY2lhdGlvblxuXHRnZXRGaWx0ZXJCYXIoKTogc3RyaW5nO1xuXHQvLyBwcm9wZXJ0eVxuXHRnZXREYXRhSW5pdGlhbGl6ZWQoKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayB1c2VkIHRvIGNyZWF0ZSBhIHRhYmxlIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIDxicj5cbiAqIFVzdWFsbHksIGEgTGluZUl0ZW0sIFByZXNlbnRhdGlvblZhcmlhbnQgb3IgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBhbm5vdGF0aW9uIGlzIGV4cGVjdGVkLCBidXQgdGhlIFRhYmxlIGJ1aWxkaW5nIGJsb2NrIGNhbiBhbHNvIGJlIHVzZWQgdG8gZGlzcGxheSBhbiBFbnRpdHlTZXQuXG4gKiA8YnI+XG4gKiBJZiBhIFByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgaGF2ZSBVSS5MaW5lSXRlbSBhcyB0aGUgZmlyc3QgcHJvcGVydHkgb2YgdGhlIFZpc3VhbGl6YXRpb25zLlxuICogPGJyPlxuICogSWYgYSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGlzIHNwZWNpZmllZCwgdGhlbiBpdCBtdXN0IGNvbnRhaW4gYSB2YWxpZCBQcmVzZW50YXRpb25WYXJpYW50IHRoYXQgYWxzbyBoYXMgYSBVSS5MaW5lSXRlbSBhcyB0aGUgZmlyc3QgcHJvcGVydHkgb2YgdGhlIFZpc3VhbGl6YXRpb25zLlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpUYWJsZSBpZD1cIk15VGFibGVcIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBwcml2YXRlXG4gKi9cblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy50YWJsZS5UYWJsZUFQSVwiLCB7IHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCJdIH0pXG5AbWl4aW4oVGFibGVBUElTdGF0ZUhhbmRsZXIpXG5AbWl4aW4oVGFibGVFeHBvcnQpXG5AbWl4aW4oVGFibGVPcHRpbWlzdGljQmF0Y2gpXG5AbWl4aW4oVGFibGVIaWVyYXJjaHkpXG5AbWl4aW4oRW1wdHlSb3dzSGFuZGxlcilcbkBtaXhpbihDb250ZXh0TWVudUhhbmRsZXIpXG5AbWl4aW4oVGFibGVTaGFyaW5nKVxuQG1peGluKENvbHVtbk1hbmFnZW1lbnQpXG5jbGFzcyBUYWJsZUFQSSBleHRlbmRzIE1hY3JvQVBJIGltcGxlbWVudHMgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciwgSVJvd0JpbmRpbmdJbnRlcmZhY2UsIElUYWJsZUJsb2NrIHtcblx0Y29udGVudCE6IFRhYmxlO1xuXG5cdG1hc3NFZGl0RGlhbG9nSGVscGVyOiBNYXNzRWRpdERpYWxvZ0hlbHBlciB8IHVuZGVmaW5lZDtcblxuXHRvcmlnaW5hbFRhYmxlRGVmaW5pdGlvbiE6IFRhYmxlVmlzdWFsaXphdGlvbjtcblxuXHRwcm9wZXJ0eUVkaXRNb2RlQ2FjaGU6IFJlY29yZDxzdHJpbmcsIHR5cGVvZiBBbnk+ID0ge307XG5cblx0aW5pdGlhbENvbnRyb2xTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRjb25zdHJ1Y3RvcihtU2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8VGFibGVBUEk+ICYgeyBpZD86IHN0cmluZyB9LCAuLi5vdGhlcnM6ICRDb250cm9sU2V0dGluZ3NbXSkge1xuXHRcdHN1cGVyKG1TZXR0aW5ncywgLi4ub3RoZXJzKTtcblx0XHR0aGlzLm9yaWdpbmFsVGFibGVEZWZpbml0aW9uID0gdGhpcy50YWJsZURlZmluaXRpb247XG5cdFx0dGhpcy5zZXRMYXlvdXREYXRhKG5ldyBGbGV4SXRlbURhdGEoeyBtYXhXaWR0aDogXCIxMDAlXCIgfSkpO1xuXHRcdHRoaXMuYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyKCk7XG5cdFx0dGhpcy5hdHRhY2hNYW5pZmVzdEV2ZW50cygpO1xuXHRcdHRoaXMub3ZlcnJpZGVSb3dQcmVzcyA9IHRoaXMuaGFzTGlzdGVuZXJzKFwicm93UHJlc3NcIik7XG5cdH1cblxuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLmZlLmNvcmUuSVJvd0JpbmRpbmdJbnRlcmZhY2VcIilcblx0X19pbXBsZW1lbnRzX19zYXBfZmVfY29yZV9JUm93QmluZGluZ0ludGVyZmFjZSA9IHRydWU7XG5cblx0Z2V0Um93QmluZGluZyhwYXJhbWV0ZXJzPzogb2JqZWN0KTogT0RhdGFMaXN0QmluZGluZyB7XG5cdFx0Y29uc3QgbWRjVGFibGUgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0Y29uc3QgZGF0YU1vZGVsID0gbWRjVGFibGUuZ2V0TW9kZWwoKTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0bWRjVGFibGUuZ2V0Um93QmluZGluZygpID8/XG5cdFx0XHQoZGF0YU1vZGVsPy5iaW5kTGlzdCh0aGlzLmdldFJvd0NvbGxlY3Rpb25QYXRoKCksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHBhcmFtZXRlcnMpIGFzIE9EYXRhTGlzdEJpbmRpbmcpXG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgYXR0YWNoU3RhdGVDaGFuZ2VIYW5kbGVyKCk6IHZvaWQge1xuXHRcdFN0YXRlVXRpbC5kZXRhY2hTdGF0ZUNoYW5nZSh0aGlzLnN0YXRlQ2hhbmdlSGFuZGxlcik7XG5cdFx0U3RhdGVVdGlsLmF0dGFjaFN0YXRlQ2hhbmdlKHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0fVxuXG5cdHN0YXRlQ2hhbmdlSGFuZGxlcihvRXZlbnQ6IEV2ZW50PHsgY29udHJvbDogQ29udHJvbCB9Pik6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2wgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udHJvbFwiKTtcblx0XHRpZiAoY29udHJvbC5pc0E8VGFibGU+KFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0Y29uc3QgdGFibGVBUEkgPSBjb250cm9sLmdldFBhcmVudCgpIGFzIHVua25vd24gYXMgeyBoYW5kbGVTdGF0ZUNoYW5nZT86IEZ1bmN0aW9uIH07XG5cdFx0XHRpZiAodGFibGVBUEk/LmhhbmRsZVN0YXRlQ2hhbmdlKSB7XG5cdFx0XHRcdHRhYmxlQVBJLmhhbmRsZVN0YXRlQ2hhbmdlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEF0dGFjaCB0aGUgZXZlbnQgaGFuZGxlcnMgY29taW5nIGZyb20gdGhlIG1hbmlmZXN0IGZvciAncm93UHJlc3MnLCAnc2VsZWN0aW9uQ2hhbmdlJyBhbmQgJ2JlZm9yZVJlYmluZFRhYmxlJy5cblx0ICogV2UgaWdub3JlIHRoZSBtYW5pZmVzdCBoYW5kbGVycyBpZiB0aGUgdGFibGUgYWxyZWFkeSBoYXMgZXZlbnQgaGFuZGxlcnMgKG92ZXJyaWRlKS5cblx0ICovXG5cdHByaXZhdGUgYXR0YWNoTWFuaWZlc3RFdmVudHMoKTogdm9pZCB7XG5cdFx0Y29uc3QgYXR0YWNoSWZOb0xpc3RlbmVycyA9IChldmVudE5hbWU6IHN0cmluZywgbWV0aG9kQ29uZmlnOiBFeHRlcm5hbE1ldGhvZENvbmZpZyB8IHVuZGVmaW5lZCk6IHZvaWQgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLmhhc0xpc3RlbmVycyhldmVudE5hbWUpICYmIG1ldGhvZENvbmZpZyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRoaXMuYXR0YWNoRXZlbnQoZXZlbnROYW1lLCAodWk1RXZlbnQ6IFVJNUV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0RlBNSGVscGVyLmxvYWRNb2R1bGVBbmRDYWxsTWV0aG9kKG1ldGhvZENvbmZpZy5tb2R1bGVOYW1lLCBtZXRob2RDb25maWcubWV0aG9kTmFtZSwgdWk1RXZlbnQsIHVpNUV2ZW50KS5jYXRjaChcblx0XHRcdFx0XHRcdChlcnJvcikgPT4ge1xuXHRcdFx0XHRcdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFx0XHRcdFx0YEZhaWxlZCB0byBjYWxsICR7ZXZlbnROYW1lfSBldmVudCBoYW5kbGVyICR7bWV0aG9kQ29uZmlnLm1vZHVsZU5hbWV9ICR7bWV0aG9kQ29uZmlnLm1ldGhvZE5hbWV9YCxcblx0XHRcdFx0XHRcdFx0XHRlcnJvclxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRhdHRhY2hJZk5vTGlzdGVuZXJzKFxuXHRcdFx0XCJiZWZvcmVSZWJpbmRUYWJsZVwiLFxuXHRcdFx0Z2V0Q3VzdG9tRnVuY3Rpb25JbmZvKHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sPy5iZWZvcmVSZWJpbmRUYWJsZSwgdGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2wpXG5cdFx0KTtcblx0XHRhdHRhY2hJZk5vTGlzdGVuZXJzKFwicm93UHJlc3NcIiwgZ2V0Q3VzdG9tRnVuY3Rpb25JbmZvKHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sPy5yb3dQcmVzcywgdGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2wpKTtcblx0XHRhdHRhY2hJZk5vTGlzdGVuZXJzKFxuXHRcdFx0XCJzZWxlY3Rpb25DaGFuZ2VcIixcblx0XHRcdGdldEN1c3RvbUZ1bmN0aW9uSW5mbyh0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbD8uc2VsZWN0aW9uQ2hhbmdlLCB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgYW4gaWxsdXN0cmF0ZWQgbWVzc2FnZSBkdXJpbmcgdGhlIGluaXRpYWxpc2F0aW9uIG9mIHRoZSB0YWJsZSBBUEkuXG5cdCAqIFVzZWZ1bCBpZiB3ZSBoYXZlIGEgYnVpbGRpbmcgYmxvY2sgaW4gYSBsaXN0IHJlcG9ydCB3aXRob3V0IGluaXRpYWwgbG9hZC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdHByaXZhdGUgc2V0VXBOb0RhdGFJbmZvcm1hdGlvbigpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRpZiAoIXRhYmxlIHx8IHRhYmxlLmdldE5vRGF0YSgpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRsZXQgZGVzY3JpcHRpb247XG5cdFx0bGV0IHRpdGxlO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGdldFJlc291cmNlTW9kZWwob3duZXIpO1xuXHRcdFx0aWYgKHJlc291cmNlTW9kZWwpIHtcblx0XHRcdFx0bGV0IHN1ZmZpeDtcblx0XHRcdFx0Y29uc3QgbWV0YVBhdGggPSB0aGlzLm1ldGFQYXRoO1xuXHRcdFx0XHRpZiAobWV0YVBhdGgpIHtcblx0XHRcdFx0XHRzdWZmaXggPSBtZXRhUGF0aC5zdGFydHNXaXRoKFwiL1wiKSA/IG1ldGFQYXRoLnN1YnN0cmluZygxKSA6IG1ldGFQYXRoO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRpdGxlID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9JTExVU1RSQVRFRF9NRVNTQUdFX1RJVExFX0JFRk9SRVNFQVJDSFwiLCB1bmRlZmluZWQsIHN1ZmZpeCk7XG5cdFx0XHRcdGRlc2NyaXB0aW9uID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9UQUJMRV9BTkRfQ0hBUlRfTk9fREFUQV9URVhUXCIsIHVuZGVmaW5lZCwgc3VmZml4KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLnRlbXBsYXRlc1wiKSE7XG5cdFx0XHR0aXRsZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX0lMTFVTVFJBVEVEX01FU1NBR0VfVElUTEVfQkVGT1JFU0VBUkNIXCIpO1xuXHRcdFx0ZGVzY3JpcHRpb24gPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9UQUJMRV9BTkRfQ0hBUlRfTk9fREFUQV9URVhUXCIpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmdldE5vRGF0YU1lc3NhZ2VNb2RlKCkgPT09IFwidGV4dFwiKSB7XG5cdFx0XHR0aGlzLnNldEFnZ3JlZ2F0aW9uKFwibm9EYXRhXCIsIG5ldyBUZXh0KHsgdGV4dDogZGVzY3JpcHRpb24gfSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBpbGx1c3RyYXRlZE1lc3NhZ2UgPSBuZXcgSWxsdXN0cmF0ZWRNZXNzYWdlKHtcblx0XHRcdFx0dGl0bGU6IHRpdGxlLFxuXHRcdFx0XHRkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG5cdFx0XHRcdGlsbHVzdHJhdGlvblR5cGU6IElsbHVzdHJhdGVkTWVzc2FnZVR5cGUuQmVmb3JlU2VhcmNoLFxuXHRcdFx0XHRpbGx1c3RyYXRpb25TaXplOiB0aGlzLmdldE5vRGF0YU1lc3NhZ2VNb2RlKCksXG5cdFx0XHRcdGVuYWJsZURlZmF1bHRUaXRsZUFuZERlc2NyaXB0aW9uOiBmYWxzZVxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuc2V0QWdncmVnYXRpb24oXCJub0RhdGFcIiwgaWxsdXN0cmF0ZWRNZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5zZWN0aW9uLklTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIilcblx0X19pbXBsZW1lbnRzX19zYXBfZmVfbWFjcm9zX2NvbnRyb2xzX3NlY3Rpb25fSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciA9IHRydWU7XG5cblx0Z2V0U2VjdGlvbkNvbnRlbnRSb2xlKCk6IFwicHJvdmlkZXJcIiB8IFwiY29uc3VtZXJcIiB7XG5cdFx0cmV0dXJuIFwiY29uc3VtZXJcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2VuZERhdGFUb0NvbnN1bWVyIG1ldGhvZCB3aGljaCBpcyBhIHBhcnQgb2YgdGhlIElTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3Jcblx0ICpcblx0ICogV2lsbCBiZSBjYWxsZWQgZnJvbSB0aGUgc2FwLmZlLm1hY3Jvcy5jb250cm9scy5TZWN0aW9uIGNvbnRyb2wgd2hlbiB0aGVyZSBpcyBhIFRhYmxlIGJ1aWxkaW5nIGJsb2NrIHJlbmRlcmVkIHdpdGhpbiBhIHNlY3Rpb25cblx0ICogYWxvbmcgd2l0aCB0aGUgY29uc3VtZXJEYXRhIGkuZS4gc2VjdGlvbidzIGRhdGEgc3VjaCBhcyB0aXRsZSBhbmQgdGl0bGUgbGV2ZWwgd2hpY2ggaXMgdGhlbiBhcHBsaWVkIHRvIHRoZSB0YWJsZSB1c2luZyB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3cgYWNjb3JkaW5nbHkuXG5cdCAqXG5cdCAqL1xuXG5cdHNlbmREYXRhVG9Db25zdW1lcihjb25zdW1lckRhdGE6IENvbnN1bWVyRGF0YSk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxUYWJsZT4oXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlcihjb25zdW1lckRhdGEudGl0bGUpO1xuXHRcdFx0dGhpcy5jb250ZW50Py5zZXRIZWFkZXJTdHlsZShjb25zdW1lckRhdGEuaGVhZGVyU3R5bGUgYXMgVGl0bGVMZXZlbCk7XG5cdFx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlckxldmVsKGNvbnN1bWVyRGF0YS50aXRsZUxldmVsIGFzIFRpdGxlTGV2ZWwpO1xuXHRcdH1cblx0fVxuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvbnM6IFtcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudFwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XCJcblx0XHRdLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdG1ldGFQYXRoITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdXG5cdH0pXG5cdGNvbnRleHRQYXRoITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0dGFibGVEZWZpbml0aW9uITogVGFibGVWaXN1YWxpemF0aW9uO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0Y29udGVudElkITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlbmFibGVGdWxsU2NyZWVuPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlbmFibGVFeHBvcnQ/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZXhwb3J0RmlsZU5hbWU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRleHBvcnRTaGVldE5hbWU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRmcm96ZW5Db2x1bW5Db3VudD86IG51bWJlcjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRkaXNhYmxlQ29sdW1uRnJlZXplPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJBdXRvXCIsIFwiRml4ZWRcIl0gfSlcblx0cm93Q291bnRNb2RlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIgfSlcblx0cm93Q291bnQ/OiBudW1iZXI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZW5hYmxlUGFzdGU/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZGlzYWJsZUNvcHlUb0NsaXBib2FyZD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRzY3JvbGxUaHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHR0aHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiQmxvY2tcIiwgXCJHcmlkTGFyZ2VcIiwgXCJHcmlkU21hbGxcIl0gfSlcblx0cG9waW5MYXlvdXQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aXNTZWFyY2hhYmxlPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJHcmlkVGFibGVcIiwgXCJSZXNwb25zaXZlVGFibGVcIiwgXCJBbmFseXRpY2FsVGFibGVcIl0gfSlcblx0dHlwZT86IFRhYmxlVHlwZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR1c2VDb25kZW5zZWRMYXlvdXQ/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIk5vbmVcIiwgXCJTaW5nbGVcIiwgXCJNdWx0aVwiLCBcIkF1dG9cIiwgXCJGb3JjZU11bHRpXCIsIFwiRm9yY2VTaW5nbGVcIl0gfSlcblx0c2VsZWN0aW9uTW9kZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRjb25kZW5zZWRUYWJsZUxheW91dD86IGJvb2xlYW47XG5cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbk92ZXJyaWRlXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cE92ZXJyaWRlXCJdLFxuXHRcdG11bHRpcGxlOiB0cnVlXG5cdH0pXG5cdGFjdGlvbnM/OiAoQWN0aW9uIHwgQWN0aW9uR3JvdXAgfCBBY3Rpb25PdmVycmlkZSB8IEFjdGlvbkdyb3VwT3ZlcnJpZGUpW107XG5cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuT3ZlcmZsb3dHcm91cFwiLFxuXHRcdG11bHRpcGxlOiB0cnVlXG5cdH0pXG5cdGFjdGlvbk92ZXJmbG93R3JvdXBzPzogT3ZlcmZsb3dHcm91cFtdO1xuXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkNvbHVtblwiLFxuXHRcdGFsdFR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLkNvbHVtbk92ZXJyaWRlXCJdLFxuXHRcdG11bHRpcGxlOiB0cnVlXG5cdH0pXG5cdGNvbHVtbnM/OiAoQ29sdW1uIHwgQ29sdW1uT3ZlcnJpZGUpW107XG5cblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdyZWFkLW9ubHknIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICpcblx0ICogSWYgeW91IGRvIG5vdCBzZXQgYW55IGV4cHJlc3Npb24sIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0YXRlLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cmVhZE9ubHkhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgRmlsdGVyQmFyIGJ1aWxkaW5nIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFibGUuXG5cdCAqL1xuXHQvL0Bhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCIgfSlcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWx0ZXJCYXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyBpZiB0aGUgY29sdW1uIHdpZHRoIGlzIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogSW5kaWNhdGVzIGlmIHRoZSBjb2x1bW4gaGVhZGVyIHNob3VsZCBiZSBhIHBhcnQgb2YgdGhlIHdpZHRoIGNhbGN1bGF0aW9uLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBzaXplIG9mIHRoZSBJbGx1c3RyYXRlZE1lc3NhZ2UgaW4gdGhlIHRhYmxlLCBvciByZW1vdmVzIGl0IGNvbXBsZXRlbHkuXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9gLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRG90YCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdGAgb3IgYHRleHRgLlxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGFsbG93ZWRWYWx1ZXM6IFtcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9cIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTWVkaXVtXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUV4dHJhU21hbGxcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1MYXJnZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU21hbGxcIixcblx0XHRcdFwidGV4dFwiXG5cdFx0XVxuXHR9KVxuXHRtb2RlRm9yTm9EYXRhTWVzc2FnZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRkYXRhSW5pdGlhbGl6ZWQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGJpbmRpbmdTdXNwZW5kZWQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdG91dERhdGVkQmluZGluZyE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0aXNBbHAhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpZ25vcmVkRmllbGRzPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0pXG5cdGZpZWxkTW9kZSE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRpdGxlTGV2ZWxcIiwgZGVmYXVsdFZhbHVlOiBUaXRsZUxldmVsLkF1dG8gfSlcblx0aGVhZGVyTGV2ZWwhOiBUaXRsZUxldmVsO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiIH0pXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImludFwiIH0pXG5cdGV4cG9ydFJlcXVlc3RTaXplPzogbnVtYmVyO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluaXRpYWxMb2FkPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hpY2ggb3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlIHBlcnNvbmFsaXphdGlvbiBkaWFsb2cuXG5cdCAqXG5cdCAqIElmIGl0IGlzIHNldCB0byBgdHJ1ZWAsIGFsbCBwb3NzaWJsZSBvcHRpb25zIGZvciB0aGlzIGtpbmQgb2YgdGFibGUgYXJlIGVuYWJsZWQuPGJyLz5cblx0ICogSWYgaXQgaXMgc2V0IHRvIGBmYWxzZWAsIHBlcnNvbmFsaXphdGlvbiBpcyBkaXNhYmxlZC48YnIvPlxuXHQgKjxici8+XG5cdCAqIFlvdSBjYW4gYWxzbyBwcm92aWRlIGEgbW9yZSBncmFudWxhciBjb250cm9sIGZvciB0aGUgcGVyc29uYWxpemF0aW9uIGJ5IHByb3ZpZGluZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggdGhlIG9wdGlvbnMgeW91IHdhbnQgdG8gYmUgYXZhaWxhYmxlLjxici8+XG5cdCAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTo8YnIvPlxuXHQgKiAgLSBTb3J0PGJyLz5cblx0ICogIC0gQ29sdW1uPGJyLz5cblx0ICogIC0gRmlsdGVyPGJyLz5cblx0ICogIC0gR3JvdXA8YnIvPlxuXHQgKjxici8+XG5cdCAqIFRoZSBHcm91cCBvcHRpb24gaXMgb25seSBhcHBsaWNhYmxlIHRvIGFuYWx5dGljYWwgdGFibGVzIGFuZCByZXNwb25zaXZlIHRhYmxlcy48YnIvPlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRwZXJzb25hbGl6YXRpb24/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIHRleHQgdGhhdCBpcyBzaG93biBpbiB0aGUgdGFibGUuXG5cdCAqXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGhlYWRlcj86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR1c2VCYXNpY1NlYXJjaD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyBpZiB0aGUgZW1wdHkgcm93cyBhcmUgZW5hYmxlZC4gVGhpcyBhbGxvd3MgdG8gaGF2ZSBkeW5hbWljIGVuYWJsZW1lbnQgb2YgdGhlIGVtcHR5IHJvd3MgdXNpbmcgdGhlIHNldHRlciBmdW5jdGlvbi5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGVtcHR5Um93c0VuYWJsZWQhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgaGVhZGVyIHRleHQgc2hvdWxkIGJlIHNob3duIG9yIG5vdC5cblx0ICpcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc0JpbmRpbmdJbmZvOiB0cnVlIH0pXG5cdGhlYWRlclZpc2libGU/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJcIiB9KVxuXHR0YWJUaXRsZSE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpbk11bHRpVmlldz86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZGlzcGxheVNlZ21lbnRlZEJ1dHRvbj86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlbmFibGVTZWxlY3RBbGw/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIgfSlcblx0c2VsZWN0aW9uTGltaXQ/OiBudW1iZXI7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQ3JlYXRpb25PcHRpb25zXCIsIGRlZmF1bHRDbGFzczogVGFibGVDcmVhdGlvbk9wdGlvbnMgfSlcblx0Y3JlYXRpb25Nb2RlPzogVGFibGVDcmVhdGlvbk9wdGlvbnM7XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0aW9uIHRvIGZvcndhcmQgdGhlIElsbHVzdHJhdGVkTWVzc2FnZSBjb250cm9sIHRvIHRoZSBtZGMgY29udHJvbC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5tLklsbHVzdHJhdGVkTWVzc2FnZVwiLFxuXHRcdGFsdFR5cGVzOiBbXCJzYXAubS5UZXh0XCJdLFxuXHRcdGZvcndhcmRpbmc6IHtcblx0XHRcdGdldHRlcjogXCJnZXRNRENUYWJsZVwiLFxuXHRcdFx0YWdncmVnYXRpb246IFwibm9EYXRhXCJcblx0XHR9XG5cdH0pXG5cdG5vRGF0YT86IElsbHVzdHJhdGVkTWVzc2FnZTtcblxuXHQvKipcblx0ICogQSBzZXQgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHRvIGNvbnRyb2wgdGhlIGFnZ3JlZ2F0aW9uIGJlaGF2aW9yXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFuYWx5dGljYWxDb25maWd1cmF0aW9uXCJcblx0fSlcblx0YW5hbHl0aWNhbENvbmZpZ3VyYXRpb24/OiBBbmFseXRpY2FsQ29uZmlndXJhdGlvbjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBvZiB0aGUgdGFibGUuXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5RdWlja1ZhcmlhbnRTZWxlY3Rpb25cIlxuXHR9KVxuXHRxdWlja1ZhcmlhbnRTZWxlY3Rpb24/OiBRdWlja1ZhcmlhbnRTZWxlY3Rpb247XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBtYXNzIGVkaXQgb2YgdGhlIHRhYmxlLlxuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuTWFzc0VkaXRcIlxuXHR9KVxuXHRtYXNzRWRpdD86IE1hc3NFZGl0O1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdGFibGUgaXMgYWJvdXQgdG8gYmUgcmVib3VuZC4gVGhpcyBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYmluZGluZyBpbmZvLlxuXHQgKlxuXHQgKiBUaGUgZXZlbnQgY29udGFpbnMgYSBwYXJhbWV0ZXIsIGBjb2xsZWN0aW9uQmluZGluZ0luZm9gLCB3aGljaCBpcyBhbiBpbnN0YW5jZSBvZiBgQ29sbGVjdGlvbkJpbmRpbmdJbmZvQVBJYC5cblx0ICogVGhpcyBhbGxvd3MgeW91IHRvIG1hbmlwdWxhdGUgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKlxuXHQgKiBZb3UgY2FuIHVzZSB0aGlzIGV2ZW50IHRvIGF0dGFjaCBldmVudCBoYW5kbGVycyB0byB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYWRkIG9yIHJlYWQ6IEZpbHRlcnMsIFNvcnRlcnMuXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gcmVhZCB0aGUgYmluZGluZyBpbmZvLlxuXHQgKiBZb3UgY2FuIHVzZSB0aGlzIGV2ZW50IHRvIGFkZDogU2VsZWN0cy5cblx0ICovXG5cdEBldmVudCgpXG5cdGJlZm9yZVJlYmluZFRhYmxlPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYSByb3c7IHRoZSBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCByb3cgaXMgY2hvc2VuLlxuXHQgKlxuXHQgKiBZb3UgY2FuIHNldCB0aGlzIGluIG9yZGVyIHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiBtYW51YWxseS5cblx0ICovXG5cdEBldmVudCgpXG5cdHJvd1ByZXNzPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHN3aXRjaGVkIGJldHdlZW4gdmlldyBpbiBhbiBBTFAuXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzcz86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBzYXZlZCB0aGUgdmFyaWFudC5cblx0ICovXG5cdEBldmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RlZCBhIHZhcmlhbnQuXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHR2YXJpYW50U2VsZWN0ZWQ/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIFRhYmxlIGxpc3QgYmluZGluZyBjaGFuZ2VzLlxuXHQgKi9cblx0QGV2ZW50KClcblx0bGlzdEJpbmRpbmdDaGFuZ2U/OiBGdW5jdGlvbjtcblxuXHRAZXZlbnQoKVxuXHRpbnRlcm5hbERhdGFSZXF1ZXN0ZWQhOiBGdW5jdGlvbjtcblxuXHRjb250ZXh0T2JqZWN0UGF0aCE6IERhdGFNb2RlbE9iamVjdFBhdGg8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD47XG5cblx0cHJpdmF0ZSBpZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQgPSBmYWxzZTtcblxuXHRwcml2YXRlIGxvY2s6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG5cblx0c3RvcmVkRXZlbnRzOiBFdmVudEhhbmRsZXJbXSA9IFtdO1xuXG5cdG92ZXJyaWRlUm93UHJlc3MgPSBmYWxzZTtcblxuXHRpbml0KCk6IHZvaWQge1xuXHRcdHJldHVybiBzdXBlci5pbml0KHRydWUpO1xuXHR9XG5cblx0Z2V0SWdub3JlQ29udGV4dENoYW5nZUV2ZW50KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmlnbm9yZUNvbnRleHRDaGFuZ2VFdmVudDtcblx0fVxuXG5cdHNldElnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuaWdub3JlQ29udGV4dENoYW5nZUV2ZW50ID0gdmFsdWU7XG5cdH1cblxuXHRzZXRCdXN5KHZhbHVlOiBib29sZWFuKTogdGhpcyB7XG5cdFx0c3VwZXIuc2V0QnVzeSh2YWx1ZSk7XG5cdFx0dGhpcy5jb250ZW50Py5zZXRCdXN5KHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBldmVudCBoYW5kbGVycyB0byB0aGUgVGFibGVBUEkuXG5cdCAqIEBwYXJhbSBldmVudEhhbmRsZXJzXG5cdCAqL1xuXHRzZXRBdHRhY2hFdmVudHMoZXZlbnRIYW5kbGVyczogRXZlbnRIYW5kbGVyW10pOiB2b2lkIHtcblx0XHR0aGlzLnN0b3JlZEV2ZW50cyA9IGV2ZW50SGFuZGxlcnM7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcmVsZXZhbnQgdGFibGVBUEkgZm9yIGEgVUk1IGV2ZW50LlxuXHQgKiBBbiBldmVudCBjYW4gYmUgdHJpZ2dlcmVkIGVpdGhlciBieSB0aGUgaW5uZXIgY29udHJvbCAodGhlIHRhYmxlKSBvciB0aGUgT0RhdGEgbGlzdEJpbmRpbmdcblx0ICogVGhlIGZpcnN0IGluaXRpYXRvciBpcyB0aGUgdXN1YWwgb25lIHNvIGl0J3MgbWFuYWdlZCBieSB0aGUgTWFjcm9BUEkgd2hlcmVhc1xuXHQgKiB0aGUgc2Vjb25kIG9uZSBpcyBzcGVjaWZpYyB0byB0aGlzIEFQSSBhbmQgaGFzIHRvIG1hbmFnZWQgYnkgdGhlIFRhYmxlQVBJLlxuXHQgKiBAcGFyYW0gc291cmNlIFRoZSBVSTUgZXZlbnQgc291cmNlXG5cdCAqIEByZXR1cm5zIFRoZSBUYWJsZUFQSSBvciBmYWxzZSBpZiBub3QgZm91bmRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHN0YXRpYyBfZ2V0QVBJRXh0ZW5zaW9uKHNvdXJjZTogTWFuYWdlZE9iamVjdCk6IFRhYmxlQVBJIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgdGFibGVBUEk6IFRhYmxlQVBJIHwgdW5kZWZpbmVkO1xuXHRcdGlmIChzb3VyY2UuaXNBPE9EYXRhTGlzdEJpbmRpbmc+KFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdHRhYmxlQVBJID0gKCh0aGlzIGFzIHVua25vd24gYXMgWE1MRXZlbnRIb2xkZXIpLmluc3RhbmNlTWFwPy5nZXQodGhpcykgYXMgVGFibGVBUElbXSk/LmZpbmQoXG5cdFx0XHRcdChhcGkpID0+IGFwaS5jb250ZW50Py5nZXRSb3dCaW5kaW5nPy4oKSA9PT0gc291cmNlIHx8IGFwaS5jb250ZW50Py5nZXRCaW5kaW5nKFwiaXRlbXNcIikgPT09IHNvdXJjZVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHRhYmxlQVBJO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgY29udGV4dHMgZnJvbSB0aGUgdGFibGUgdGhhdCBoYXZlIGJlZW4gc2VsZWN0ZWQgYnkgdGhlIHVzZXIuXG5cdCAqIEByZXR1cm5zIENvbnRleHRzIG9mIHRoZSByb3dzIHNlbGVjdGVkIGJ5IHRoZSB1c2VyXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldFNlbGVjdGVkQ29udGV4dHMoKTogQ29udGV4dFtdIHtcblx0XHQvLyBXaGVuIGEgY29udGV4dCBtZW51IGl0ZW0gaGFzIGJlZW4gcHJlc3NlZCwgdGhlIHNlbGVjdGVkQ29udGV4dHMgY29ycmVzcG9uZCB0byB0aGUgaXRlbXMgb24gd2hpY2hcblx0XHQvLyB0aGUgY29ycmVzcG9uZGluZyBhY3Rpb24gc2hhbGwgYmUgYXBwbGllZC5cblx0XHRyZXR1cm4gdGhpcy5pc0NvbnRleHRNZW51QWN0aXZlKClcblx0XHRcdD8gdGhpcy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L3NlbGVjdGVkQ29udGV4dHNcIikgPz8gW11cblx0XHRcdDogdGhpcy5jb250ZW50LmdldFNlbGVjdGVkQ29udGV4dHMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGFsbCBjb250ZXh0cyB0aGF0IGFyZSBsb2FkZWQgaW4gdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBTZWUgYWxzbyB0aGUge0BsaW5rIHNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nI2dldEFsbEN1cnJlbnRDb250ZXh0c30gbWV0aG9kLlxuXHQgKiBAcmV0dXJucyBBbGwgY29udGV4dHMgb2YgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLCBvciB1bmRlZmluZWQgaWYgdGhlIHRhYmxlIGRhdGEgaXMgbm90IHlldCBsb2FkZWQuXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuMTQyLjBcblx0ICovXG5cdGdldEFsbEN1cnJlbnRDb250ZXh0cygpOiBDb250ZXh0W10gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ/LmdldFJvd0JpbmRpbmcoKT8uZ2V0QWxsQ3VycmVudENvbnRleHRzKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXJzIHRoZSBzZWxlY3Rpb24uXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuMTQyLjBcblx0ICovXG5cdGNsZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xuXHRcdHRoaXMuY29udGVudD8uY2xlYXJTZWxlY3Rpb24oKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgbWVzc2FnZSB0byB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIFRoZSBtZXNzYWdlIGFwcGxpZXMgdG8gdGhlIHdob2xlIHRhYmxlIGFuZCBub3QgdG8gYW4gaW5kaXZpZHVhbCB0YWJsZSByb3cuXG5cdCAqIEBwYXJhbSBbcGFyYW1ldGVyc10gVGhlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIHRoZSBtZXNzYWdlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLnR5cGUgTWVzc2FnZSB0eXBlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm1lc3NhZ2UgTWVzc2FnZSB0ZXh0XG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLmRlc2NyaXB0aW9uIE1lc3NhZ2UgZGVzY3JpcHRpb25cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMucGVyc2lzdGVudCBUcnVlIGlmIHRoZSBtZXNzYWdlIGlzIHBlcnNpc3RlbnRcblx0ICogQHJldHVybnMgUHJvbWlzZTxzdHJpbmc+IFRoZSBJRCBvZiB0aGUgbWVzc2FnZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBhZGRNZXNzYWdlKHBhcmFtZXRlcnM6IHsgdHlwZT86IE1lc3NhZ2VUeXBlOyBtZXNzYWdlPzogc3RyaW5nOyBkZXNjcmlwdGlvbj86IHN0cmluZzsgcGVyc2lzdGVudD86IGJvb2xlYW4gfSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRpZiAoIXRhYmxlLmdldEJpbmRpbmdDb250ZXh0KCkgJiYgIXRhYmxlLmdldFJvd0JpbmRpbmcoKSkge1xuXHRcdFx0YXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0Y29uc3QgY2hlY2tDb250ZXh0Q2hhbmdlID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuXHRcdFx0XHRcdGlmICh0YWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpKSB7XG5cdFx0XHRcdFx0XHR0YWJsZS5kZXRhY2hFdmVudChcIm1vZGVsQ29udGV4dENoYW5nZVwiLCBjaGVja0NvbnRleHRDaGFuZ2UpO1xuXHRcdFx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdFx0dGFibGUuYXR0YWNoRXZlbnQoXCJtb2RlbENvbnRleHRDaGFuZ2VcIiwgY2hlY2tDb250ZXh0Q2hhbmdlKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRjb25zdCByb3dCaW5kaW5nID0gdGFibGUuZ2V0Um93QmluZGluZygpO1xuXHRcdGNvbnN0IHJlc29sdmVkUGF0aCA9IHJvd0JpbmRpbmcuZ2V0UmVzb2x2ZWRQYXRoKCkgYXMgc3RyaW5nO1xuXHRcdHJldHVybiB0aGlzLmNyZWF0ZU1lc3NhZ2UodGFibGUsIHJlc29sdmVkUGF0aCwgcGFyYW1ldGVycyk7XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZU1lc3NhZ2UoXG5cdFx0dGFibGU6IE1EQ1RhYmxlLFxuXHRcdHBhdGg6IHN0cmluZyxcblx0XHRwYXJhbWV0ZXJzOiB7IHR5cGU/OiBNZXNzYWdlVHlwZTsgbWVzc2FnZT86IHN0cmluZzsgZGVzY3JpcHRpb24/OiBzdHJpbmc7IHBlcnNpc3RlbnQ/OiBib29sZWFuIH1cblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBtZXNzYWdlID0gbmV3IE1lc3NhZ2Uoe1xuXHRcdFx0dGFyZ2V0OiBwYXRoLFxuXHRcdFx0dHlwZTogcGFyYW1ldGVycy50eXBlLFxuXHRcdFx0bWVzc2FnZTogcGFyYW1ldGVycy5tZXNzYWdlLFxuXHRcdFx0cHJvY2Vzc29yOiB0YWJsZS5nZXRNb2RlbCgpLFxuXHRcdFx0ZGVzY3JpcHRpb246IHBhcmFtZXRlcnMuZGVzY3JpcHRpb24sXG5cdFx0XHRwZXJzaXN0ZW50OiBwYXJhbWV0ZXJzLnBlcnNpc3RlbnRcblx0XHR9KTtcblx0XHR0aGlzLl9nZXRNZXNzYWdlTWFuYWdlcigpLmFkZE1lc3NhZ2VzKG1lc3NhZ2UpO1xuXHRcdHJldHVybiBtZXNzYWdlLmdldElkKCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIGlmIHRoZSB0YWJsZSBzaG91bGQgcmVxdWVzdCByZWNvbW1lbmRhdGlvbnMgZnVuY3Rpb24uXG5cdCAqIFRoZSB0YWJsZSBpbiB2aWV3IHNob3VsZCBvbmx5IHJlcXVlc3QgcmVjb21tZW5kYXRpb25zIGlmXG5cdCAqIDEuIFRoZSBQYWdlIGlzIGluIEVkaXQgbW9kZVxuXHQgKiAyLiBUYWJsZSBpcyBub3QgcmVhZCBvbmx5XG5cdCAqIDMuIEl0IGhhcyBhbm5vdGF0aW9uIGZvciBDb21tb24uUmVjb21tZW5kZWRWYWx1ZXNGdW5jdGlvblxuXHQgKiA0LiBWaWV3IGlzIG5vdCBMaXN0UmVwb3J0LCBmb3IgT1AvU3ViT1AgYW5kIGZvcndhcmQgdmlld3MgcmVjb21tZW5kYXRpb25zIHNob3VsZCBiZSByZXF1ZXN0ZWQuXG5cdCAqIEBwYXJhbSBfb0V2ZW50XG5cdCAqIEByZXR1cm5zIFRydWUgaWYgcmVjb21tZW5kYXRpb25zIG5lZWRzIHRvIGJlIHJlcXVlc3RlZFxuXHQgKi9cblx0Y2hlY2tJZlJlY29tbWVuZGF0aW9uUmVsZXZhbnQoX29FdmVudDogVUk1RXZlbnQpOiBib29sZWFuIHtcblx0XHRjb25zdCBpc1RhYmxlUmVhZE9ubHkgPSB0aGlzLmdldFByb3BlcnR5KFwicmVhZE9ubHlcIik7XG5cdFx0Y29uc3QgaXNFZGl0YWJsZSA9IENvbW1vblV0aWxzLmdldElzRWRpdGFibGUodGhpcyk7XG5cdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcyk7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCk7XG5cdFx0Ly8gcmVxdWVzdCBmb3IgYWN0aW9uIG9ubHkgaWYgd2UgYXJlIGluIE9QL1N1Yk9QIGFuZCBpbiBFZGl0IG1vZGUsIGFsc28gdGFibGUgaXMgbm90IHJlYWRPbmx5XG5cdFx0aWYgKCFpc1RhYmxlUmVhZE9ubHkgJiYgaXNFZGl0YWJsZSAmJiB2aWV3RGF0YS5jb252ZXJ0ZXJUeXBlICE9PSBcIkxpc3RSZXBvcnRcIikge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGEgbWVzc2FnZSBmcm9tIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgbWVzc2FnZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZW1vdmVNZXNzYWdlKGlkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBtc2dNYW5hZ2VyID0gdGhpcy5fZ2V0TWVzc2FnZU1hbmFnZXIoKTtcblx0XHRjb25zdCBtZXNzYWdlcyA9IG1zZ01hbmFnZXIuZ2V0TWVzc2FnZU1vZGVsKCkuZ2V0RGF0YSgpO1xuXHRcdGNvbnN0IHJlc3VsdCA9IG1lc3NhZ2VzLmZpbmQoKGU6IE1lc3NhZ2UpID0+IGUuZ2V0SWQoKSA9PT0gaWQpO1xuXHRcdGlmIChyZXN1bHQpIHtcblx0XHRcdG1zZ01hbmFnZXIucmVtb3ZlTWVzc2FnZXMocmVzdWx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVxdWVzdHMgYSByZWZyZXNoIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cmVmcmVzaCgpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZVJvd0JpbmRpbmcgPSB0aGlzLmNvbnRlbnQuZ2V0Um93QmluZGluZygpO1xuXHRcdGlmICh0YWJsZVJvd0JpbmRpbmcgJiYgKHRhYmxlUm93QmluZGluZy5pc1JlbGF0aXZlKCkgfHwgdGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb250cm9sLnR5cGUgPT09IFwiVHJlZVRhYmxlXCIpKSB7XG5cdFx0XHQvLyBGb3IgdHJlZSB0YWJsZXMsIHRoZSByZWZyZXNoIGlzIGFsd2F5cyBkb25lIHVzaW5nIHNpZGUgZWZmZWN0cyB0byBwcmVzZXJ2ZSBleHBhbnNpb24gc3RhdGVzXG5cdFx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5jb250ZW50KTtcblx0XHRcdGNvbnN0IGhlYWRlckNvbnRleHQgPSB0YWJsZVJvd0JpbmRpbmcuZ2V0SGVhZGVyQ29udGV4dCgpO1xuXG5cdFx0XHRpZiAoaGVhZGVyQ29udGV4dCkge1xuXHRcdFx0XHRhcHBDb21wb25lbnRcblx0XHRcdFx0XHQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKClcblx0XHRcdFx0XHQucmVxdWVzdFNpZGVFZmZlY3RzKFt7ICROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBcIlwiIH1dLCBoZWFkZXJDb250ZXh0LCB0YWJsZVJvd0JpbmRpbmcuZ2V0R3JvdXBJZCgpKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGFibGVSb3dCaW5kaW5nPy5yZWZyZXNoKCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0UXVpY2tGaWx0ZXIoKTogUXVpY2tGaWx0ZXJTZWxlY3RvciB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudD8uZ2V0UXVpY2tGaWx0ZXIoKSBhcyBRdWlja0ZpbHRlclNlbGVjdG9yIHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgcHJlc2VudGF0aW9uIHZhcmlhbnQgdGhhdCBpcyBjdXJyZW50bHkgYXBwbGllZCBvbiB0aGUgdGFibGUuXG5cdCAqIEByZXR1cm5zIFRoZSBwcmVzZW50YXRpb24gdmFyaWFudCBhcHBsaWVkIHRvIHRoZSB0YWJsZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBnZXRQcmVzZW50YXRpb25WYXJpYW50KCk6IFByb21pc2U8UHJlc2VudGF0aW9uVmFyaWFudENsYXNzPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdFx0Y29uc3QgdGFibGVTdGF0ZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUodGFibGUpO1xuXG5cdFx0XHQvL1dlIHJlbW92ZSBcIlByb3BlcnR5OjpcIiBhcyBpdCBpcyBwcmVmaXhlZCB0byB0aG9zZSBjb2x1bW5zIHRoYXQgaGF2ZSBhc3NvY2lhdGVkIHByb3BlcnR5SW5mb3MuXG5cdFx0XHQvL1RoZSBQcmVzZW50YXRpb24gVmFyaWFudCBmb3JtYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIChpdCBpcyBvbmx5IHJlcXVpcmVkIGJ5IHRoZSBUYWJsZSBhbmQgQXBwU3RhdGUpLlxuXHRcdFx0Y29uc3Qgc29ydE9yZGVyID0gdGFibGVTdGF0ZS5zb3J0ZXJzPy5tYXAoKHNvcnRlcjogU29ydGVycykgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFByb3BlcnR5OiBzb3J0ZXIubmFtZS5yZXBsYWNlKFwiUHJvcGVydHk6OlwiLCBcIlwiKSxcblx0XHRcdFx0XHREZXNjZW5kaW5nOiBzb3J0ZXIuZGVzY2VuZGluZyA/PyBmYWxzZVxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBncm91cExldmVscyA9IHRhYmxlU3RhdGUuZ3JvdXBMZXZlbHM/Lm1hcCgoZ3JvdXA6IEdyb3VwTGV2ZWxzKSA9PiB7XG5cdFx0XHRcdHJldHVybiBncm91cC5uYW1lLnJlcGxhY2UoXCJQcm9wZXJ0eTo6XCIsIFwiXCIpO1xuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCB0YWJsZVZpeiA9IHtcblx0XHRcdFx0Q29udGVudDogdGFibGVTdGF0ZS5pdGVtcz8ubWFwKChpdGVtOiBJdGVtcykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRWYWx1ZTogaXRlbS5uYW1lXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdFR5cGU6IFwiTGluZUl0ZW1cIlxuXHRcdFx0fTtcblx0XHRcdGNvbnN0IGFnZ3JlZ2F0aW9uczogUmVjb3JkPHN0cmluZywgeyBhZ2dyZWdhdGVkPzogYm9vbGVhbiB9PiA9IHt9O1xuXHRcdFx0bGV0IGhhc0FnZ3JlZ2F0aW9ucyA9IGZhbHNlO1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgaW4gdGFibGVTdGF0ZS5hZ2dyZWdhdGlvbnMpIHtcblx0XHRcdFx0Y29uc3QgbmV3S2V5ID0ga2V5LnJlcGxhY2UoXCJQcm9wZXJ0eTo6XCIsIFwiXCIpO1xuXHRcdFx0XHRhZ2dyZWdhdGlvbnNbbmV3S2V5XSA9IHRhYmxlU3RhdGUuYWdncmVnYXRpb25zW2tleV07XG5cdFx0XHRcdGhhc0FnZ3JlZ2F0aW9ucyA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbml0aWFsRXhwYW5zaW9uTGV2ZWwgPSAodGFibGUuZ2V0UGF5bG9hZCgpIGFzIHsgaW5pdGlhbEV4cGFuc2lvbkxldmVsPzogbnVtYmVyOyBoaWVyYXJjaHlRdWFsaWZpZXI/OiBzdHJpbmcgfSlcblx0XHRcdFx0Py5pbml0aWFsRXhwYW5zaW9uTGV2ZWw7XG5cdFx0XHRjb25zdCB0YWJsZVBWID0gbmV3IFByZXNlbnRhdGlvblZhcmlhbnRDbGFzcygpO1xuXHRcdFx0dGFibGVQVi5zZXRUYWJsZVZpc3VhbGl6YXRpb24odGFibGVWaXopO1xuXHRcdFx0Y29uc3QgcHJvcGVydGllczogUHZQcm9wZXJ0aWVzID0ge1xuXHRcdFx0XHRHcm91cEJ5OiBncm91cExldmVscyB8fCBbXSxcblx0XHRcdFx0U29ydE9yZGVyOiBzb3J0T3JkZXIgfHwgW11cblx0XHRcdH07XG5cdFx0XHRpZiAoaGFzQWdncmVnYXRpb25zKSB7XG5cdFx0XHRcdHByb3BlcnRpZXMuQWdncmVnYXRpb25zID0gYWdncmVnYXRpb25zO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGluaXRpYWxFeHBhbnNpb25MZXZlbCkge1xuXHRcdFx0XHRwcm9wZXJ0aWVzLmluaXRpYWxFeHBhbnNpb25MZXZlbCA9IGluaXRpYWxFeHBhbnNpb25MZXZlbDtcblx0XHRcdH1cblx0XHRcdHRhYmxlUFYuc2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTtcblx0XHRcdHJldHVybiB0YWJsZVBWO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRjb25zdCBpZCA9IHRoaXMuZ2V0SWQoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG5cdFx0XHRMb2cuZXJyb3IoYFRhYmxlIEJ1aWxkaW5nIEJsb2NrICgke2lkfSkgLSBnZXQgcHJlc2VudGF0aW9uIHZhcmlhbnQgZmFpbGVkIDogJHttZXNzYWdlfWApO1xuXHRcdFx0dGhyb3cgRXJyb3IoZXJyb3IgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0IGEgbmV3IHByZXNlbnRhdGlvbiB2YXJpYW50IHRvIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHRhYmxlUFYgVGhlIG5ldyBwcmVzZW50YXRpb24gdmFyaWFudCB0aGF0IGlzIHRvIGJlIHNldCBvbiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHNldFByZXNlbnRhdGlvblZhcmlhbnQodGFibGVQVjogUHJlc2VudGF0aW9uVmFyaWFudENsYXNzKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXG5cdFx0XHRjb25zdCBjdXJyZW50U3RhdGVQViA9IGF3YWl0IHRoaXMuZ2V0UHJlc2VudGF0aW9uVmFyaWFudCgpO1xuXHRcdFx0Y29uc3QgcHJvcGVydHlJbmZvcyA9IHRoaXMuZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpO1xuXHRcdFx0Y29uc3QgcHJvcGVydHlJbmZvTmFtZXMgPSBwcm9wZXJ0eUluZm9zLm1hcCgocHJvcEluZm8pID0+IHByb3BJbmZvLmtleSk7XG5cdFx0XHRjb25zdCBuZXdUYWJsZVN0YXRlID0gY29udmVydFBWVG9TdGF0ZSh0YWJsZVBWLCBjdXJyZW50U3RhdGVQViwgcHJvcGVydHlJbmZvTmFtZXMpO1xuXHRcdFx0Y29uc3QgdGFibGVQcm9wZXJ0aWVzID0gdGFibGVQVi5nZXRQcm9wZXJ0aWVzKCk7XG5cdFx0XHRpZiAodGFibGVQcm9wZXJ0aWVzPy5pbml0aWFsRXhwYW5zaW9uTGV2ZWwgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRjb25zdCB0YWJsZVBheWxvYWQgPSB0YWJsZS5nZXRQYXlsb2FkKCkgYXMgeyBpbml0aWFsRXhwYW5zaW9uTGV2ZWw/OiBudW1iZXI7IGhpZXJhcmNoeVF1YWxpZmllcj86IHN0cmluZyB9O1xuXHRcdFx0XHR0YWJsZVBheWxvYWQuaW5pdGlhbEV4cGFuc2lvbkxldmVsID0gdGFibGVQcm9wZXJ0aWVzLmluaXRpYWxFeHBhbnNpb25MZXZlbDtcblx0XHRcdH1cblx0XHRcdGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUodGFibGUsIG5ld1RhYmxlU3RhdGUpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRjb25zdCBpZCA9IHRoaXMuZ2V0SWQoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG5cdFx0XHRMb2cuZXJyb3IoYFRhYmxlIEJ1aWxkaW5nIEJsb2NrICgke2lkfSkgLSBzZXQgcHJlc2VudGF0aW9uIHZhcmlhbnQgZmFpbGVkIDogJHttZXNzYWdlfWApO1xuXHRcdFx0dGhyb3cgRXJyb3IobWVzc2FnZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgdmFyaWFudCBtYW5hZ2VtZW50IGFwcGxpZWQgdG8gdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBLZXkgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB2YXJpYW50LiBJbiBjYXNlIHRoZSBtb2RlbCBpcyBub3QgeWV0IHNldCwgYG51bGxgIHdpbGwgYmUgcmV0dXJuZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldEN1cnJlbnRWYXJpYW50S2V5KCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpPy5nZXRDdXJyZW50VmFyaWFudEtleSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCBhIHZhcmlhbnQgbWFuYWdlbWVudCB0byB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSBrZXkgS2V5IG9mIHRoZSB2YXJpYW50IHRoYXQgc2hvdWxkIGJlIHNlbGVjdGVkLiBJZiB0aGUgcGFzc2VkIGtleSBkb2Vzbid0IGlkZW50aWZ5IGEgdmFyaWFudCwgaXQgd2lsbCBiZSBpZ25vcmVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRzZXRDdXJyZW50VmFyaWFudEtleShrZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50ID0gdGhpcy5jb250ZW50LmdldFZhcmlhbnQoKTtcblx0XHR2YXJpYW50TWFuYWdlbWVudC5zZXRDdXJyZW50VmFyaWFudEtleShrZXkpO1xuXHR9XG5cblx0X2dldE1lc3NhZ2VNYW5hZ2VyKCk6IE1lc3NhZ2luZyB7XG5cdFx0cmV0dXJuIE1lc3NhZ2luZztcblx0fVxuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGluIHRoZSB0YWJsZSBjaGFuZ2VzLlxuXHQgKi9cblx0QGV2ZW50KClcblx0c2VsZWN0aW9uQ2hhbmdlPzogRnVuY3Rpb247XG5cblx0X2dldFJvd0JpbmRpbmcoKTogT0RhdGFMaXN0QmluZGluZyB7XG5cdFx0Y29uc3Qgb1RhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIG9UYWJsZS5nZXRSb3dCaW5kaW5nKCk7XG5cdH1cblxuXHRhc3luYyBnZXRDb3VudHMoKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRjb25zdCBvVGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRyZXR1cm4gVGFibGVVdGlscy5nZXRMaXN0QmluZGluZ0ZvckNvdW50KG9UYWJsZSwgb1RhYmxlLmdldEJpbmRpbmdDb250ZXh0KCksIHtcblx0XHRcdGJhdGNoR3JvdXBJZDogIXRoaXMuZ2V0UHJvcGVydHkoXCJiaW5kaW5nU3VzcGVuZGVkXCIpID8gb1RhYmxlLmRhdGEoXCJiYXRjaEdyb3VwSWRcIikgOiBcIiRhdXRvXCIsXG5cdFx0XHRhZGRpdGlvbmFsRmlsdGVyczogVGFibGVVdGlscy5nZXRIaWRkZW5GaWx0ZXJzKG9UYWJsZSlcblx0XHR9KVxuXHRcdFx0LnRoZW4oKGlWYWx1ZTogbnVtYmVyKSA9PiB7XG5cdFx0XHRcdHJldHVybiBUYWJsZVV0aWxzLmdldENvdW50Rm9ybWF0dGVkKGlWYWx1ZSk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKCgpID0+IHtcblx0XHRcdFx0cmV0dXJuIFwiMFwiO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgY29udGV4dCBjaGFuZ2Ugb24gdGhlIHRhYmxlLlxuXHQgKiBBbiBldmVudCBpcyBmaXJlZCB0byBwcm9wYWdhdGUgdGhlIE9kYXRhTGlzdEJpbmRpbmcgZXZlbnQgYW5kIHRoZSBlbmFibGVtZW50XG5cdCAqIG9mIHRoZSBjcmVhdGlvbiByb3cgaXMgY2FsY3VsYXRlZC5cblx0ICogQHBhcmFtIHVpNUV2ZW50IFRoZSBVSTUgZXZlbnRcblx0ICovXG5cdG9uTGlzdEJpbmRpbmdDaGFuZ2UodWk1RXZlbnQ6IFVJNUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJsaXN0QmluZGluZ0NoYW5nZVwiLCB1aTVFdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHRcdHRoaXMuc2V0RmFzdENyZWF0aW9uUm93RW5hYmxlbWVudCgpO1xuXHRcdHRoaXMuZ2V0UXVpY2tGaWx0ZXIoKT8ucmVmcmVzaFNlbGVjdGVkQ291bnQoKTtcblx0XHRUYWJsZVJ1bnRpbWUuc2V0Q29udGV4dHNBc3luYyh0aGlzLmNvbnRlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBvbkZpZWxkTGl2ZUNoYW5nZSBldmVudC5cblx0ICogQHBhcmFtIHVpNUV2ZW50IFRoZSBldmVudCBvYmplY3QgcGFzc2VkIGJ5IHRoZSBvbkZpZWxkTGl2ZUNoYW5nZSBldmVudFxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uRmllbGRMaXZlQ2hhbmdlKHVpNUV2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0dGhpcy5fb25GaWVsZExpdmVDaGFuZ2UodWk1RXZlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIGNoYW5nZSBvbiBhIHF1aWNrRmlsdGVyXG5cdCAqIFRoZSB0YWJsZSBpcyByZWJvdW5kIGlmIHRoZSBGaWx0ZXJCYXIgaXMgbm90IHN1c3BlbmRlZCBhbmQgdXBkYXRlIHRoZSBBcHBTdGF0ZS5cblx0ICpcblx0ICovXG5cdG9uUXVpY2tGaWx0ZXJTZWxlY3Rpb25DaGFuZ2UoKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0Ly8gUmViaW5kIHRoZSB0YWJsZSB0byByZWZsZWN0IHRoZSBjaGFuZ2UgaW4gcXVpY2sgZmlsdGVyIGtleS5cblx0XHQvLyBXZSBkb24ndCByZWJpbmQgdGhlIHRhYmxlIGlmIHRoZSBmaWx0ZXJCYXIgZm9yIHRoZSB0YWJsZSBpcyBzdXNwZW5kZWRcblx0XHQvLyBhcyByZWJpbmQgd2lsbCBiZSBkb25lIHdoZW4gdGhlIGZpbHRlckJhciBpcyByZXN1bWVkXG5cdFx0Y29uc3QgZmlsdGVyQmFySUQgPSB0YWJsZS5nZXRGaWx0ZXIoKTtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSAoZmlsdGVyQmFySUQgJiYgVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChmaWx0ZXJCYXJJRCkpIGFzIEZpbHRlckJhciB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIWZpbHRlckJhcj8uZ2V0U3VzcGVuZFNlbGVjdGlvbj8uKCkpIHtcblx0XHRcdHRhYmxlLnJlYmluZCgpO1xuXHRcdH1cblx0XHQoQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKT8uZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyIHwgdW5kZWZpbmVkKT8uZ2V0RXh0ZW5zaW9uQVBJKCkudXBkYXRlQXBwU3RhdGUoKTtcblx0fVxuXG5cdG9uVGFibGVOYXZpZ2F0ZShvQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIG9Db250ZXh0OiBDb250ZXh0LCBtUGFyYW1ldGVyczogb2JqZWN0KTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuaXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZShvQ29udGV4dCkpIHtcblx0XHRcdGlmICh0aGlzLmZ1bGxTY3JlZW5EaWFsb2cpIHtcblx0XHRcdFx0Ly8gRXhpdCBmdWxsc2NyZWVuIG1vZGUgYmVmb3JlIG5hdmlnYXRpb25cblx0XHRcdFx0dGhpcy5mdWxsU2NyZWVuRGlhbG9nLmNsb3NlKCk7IC8vIFRoZSBmdWxsc2NyZWVuZGlhbG9nIHdpbGwgc2V0IHRoaXMuZnVsbFNjcmVlbkRpYWxvZyB0byB1bmRlZmluZWQgd2hlbiBjbG9zaW5nXG5cdFx0XHR9XG5cdFx0XHRjb25zdCBuYXZpZ2F0aW9uUGFyYW1ldGVycyA9IE9iamVjdC5hc3NpZ24oe30sIG1QYXJhbWV0ZXJzLCB7IHJlYXNvbjogTmF2aWdhdGlvblJlYXNvbi5Sb3dQcmVzcyB9KTtcblx0XHRcdG9Db250cm9sbGVyLl9yb3V0aW5nLm5hdmlnYXRlRm9yd2FyZFRvQ29udGV4dChvQ29udGV4dCwgbmF2aWdhdGlvblBhcmFtZXRlcnMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgZm9yIHRoZSByb3cgcHJlc3MgZXZlbnQgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gcHJlc3NFdmVudFxuXHQgKiBAcmV0dXJucyBQcm9taXNlPGJvb2xlYW4+XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25UYWJsZVJvd1ByZXNzKHByZXNzRXZlbnQ6IFJvd0FjdGlvbkl0ZW0kUHJlc3NFdmVudCk6IFByb21pc2U8Ym9vbGVhbiB8IHZvaWQ+IHtcblx0XHRjb25zdCBwcm9jZWVkID0gYXN5bmMgKCk6IFByb21pc2U8Ym9vbGVhbiB8IHZvaWQ+ID0+IHtcblx0XHRcdGNvbnN0IHJvd05hdmlnYXRpb25JbmZvID0gdGhpcy50YWJsZURlZmluaXRpb24/LmFubm90YXRpb24ucm93Py5uYXZpZ2F0aW9uSW5mbztcblx0XHRcdGlmICh0aGlzLm92ZXJyaWRlUm93UHJlc3MgPT09IHRydWUpIHtcblx0XHRcdFx0Ly8gVGhlcmUncyBhbiBldmVudCBoYW5kbGVyIGZvciB0aGUgcm93UHJlc3MgZXZlbnQgLS0+IHdlIGp1c3QgZmlyZSB0aGUgZXZlbnQgYW5kIGRvIG5vdCBuYXZpZ2F0ZVxuXHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInJvd1ByZXNzXCIsIHByZXNzRXZlbnQuZ2V0UGFyYW1ldGVycygpKTtcblx0XHRcdH0gZWxzZSBpZiAocm93TmF2aWdhdGlvbkluZm8gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpO1xuXHRcdFx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHByZXNzRXZlbnQuZ2V0UGFyYW1ldGVyKFwiYmluZGluZ0NvbnRleHRcIikgYXMgQ29udGV4dDtcblx0XHRcdFx0aWYgKHJvd05hdmlnYXRpb25JbmZvLnR5cGUgPT09IFwiT3V0Ym91bmRcIikge1xuXHRcdFx0XHRcdC8vIE91dGJvdW5kIG5hdmlnYXRpb25cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5hdm9pZFBhcmFsbGVsQ2FsbHMoXG5cdFx0XHRcdFx0XHRhc3luYyAoKSA9PlxuXHRcdFx0XHRcdFx0XHRjb250cm9sbGVyLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ub25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kKFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRyb2xsZXIsXG5cdFx0XHRcdFx0XHRcdFx0cm93TmF2aWdhdGlvbkluZm8ubmF2aWdhdGlvblRhcmdldCxcblx0XHRcdFx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0XHRcIlwiXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcIm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZFwiXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBJbnRlcm5hbCBuYXZpZ2F0aW9uXG5cdFx0XHRcdFx0Y29uc3QgZWRpdGFibGUgPSByb3dOYXZpZ2F0aW9uSW5mby5jaGVja0VkaXRhYmxlID8gIWJpbmRpbmdDb250ZXh0LmdldFByb3BlcnR5KFwiSXNBY3RpdmVFbnRpdHlcIikgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdFx0XHRcdGNhbGxFeHRlbnNpb246IHRydWUsXG5cdFx0XHRcdFx0XHR0YXJnZXRQYXRoOiByb3dOYXZpZ2F0aW9uSW5mby50YXJnZXRQYXRoLFxuXHRcdFx0XHRcdFx0ZWRpdGFibGUsXG5cdFx0XHRcdFx0XHRyZWNyZWF0ZUNvbnRleHQ6IHJvd05hdmlnYXRpb25JbmZvLnJlY3JlYXRlQ29udGV4dFxuXHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5vblRhYmxlTmF2aWdhdGUoY29udHJvbGxlciwgYmluZGluZ0NvbnRleHQsIHBhcmFtZXRlcnMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpO1xuXHRcdGF3YWl0IGNvbnRyb2xsZXIuZWRpdEZsb3cuc3luY1Rhc2socHJvY2VlZCk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiB0aGUgc2VnbWVudGVkIGJ1dHRvbiBpcyBwcmVzc2VkIChpbiBBTFApLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25TZWdtZW50ZWRCdXR0b25QcmVzc2VkKG9FdmVudDogVUk1RXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLmZpcmVFdmVudChcInNlZ21lbnRlZEJ1dHRvblByZXNzXCIsIG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpcmVzIHRoZSBjb3JyZXNwb25kaW5nIGV2ZW50IHdoZW4gYSBuZXcgdmFyaWFudCBpcyBzZWxlY3RlZC5cblx0ICogQHBhcmFtIG9FdmVudFxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uVmFyaWFudFNlbGVjdGVkKG9FdmVudDogVUk1RXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBwYXJhbWV0ZXJzID0ge1xuXHRcdFx0Li4ub0V2ZW50LmdldFBhcmFtZXRlcnMoKSxcblx0XHRcdG9yaWdpbmFsU291cmNlOiBvRXZlbnQuZ2V0U291cmNlKClcblx0XHR9O1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwidmFyaWFudFNlbGVjdGVkXCIsIHBhcmFtZXRlcnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpcmVzIHRoZSBjb3JyZXNwb25kaW5nIGV2ZW50IHdoZW4gYSB2YXJpYW50IGlzIHNhdmVkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25WYXJpYW50U2F2ZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwidmFyaWFudFNhdmVkXCIsIG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpcmVzIHRoZSBjb3JyZXNwb25kaW5nIGV2ZW50IHdoZW4gYSByb3cgaXMgcHJlc3NlZC5cblx0ICogQHBhcmFtIG9FdmVudFxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uUm93UHJlc3NlZChvRXZlbnQ6IFVJNUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJyb3dQcmVzc1wiLCBvRXZlbnQuZ2V0UGFyYW1ldGVycygpKTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbk5vb3AoKTogdm9pZCB7XG5cdFx0Ly8gRG8gbm90aGluZywgdGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB0aGUgdGFibGUgYWN0aW9uIGFyZSBmaXJlZCBpbiByZXNwb25zaXZlIHRhYmxlXG5cdH1cblxuXHRpc1RhYmxlUm93TmF2aWdhdGlvblBvc3NpYmxlKGNvbnRleHQ6IENvbnRleHQpOiBib29sZWFuIHtcblx0XHQvLyBwcmV2ZW50IG5hdmlnYXRpb24gdG8gYW4gZW1wdHkgcm93XG5cdFx0Y29uc3QgZW1wdHlSb3cgPSBjb250ZXh0LmlzSW5hY3RpdmUoKSA9PSB0cnVlICYmIGNvbnRleHQuaXNUcmFuc2llbnQoKSA9PT0gdHJ1ZTtcblx0XHQvLyBPciBpbiB0aGUgY2FzZSBvZiBhbiBhbmFseXRpY2FsIHRhYmxlLCBpZiB3ZSdyZSB0cnlpbmcgdG8gbmF2aWdhdGUgdG8gYSBjb250ZXh0IGNvcnJlc3BvbmRpbmcgdG8gYSB2aXN1YWwgZ3JvdXAgb3IgZ3JhbmQgdG90YWxcblx0XHQvLyAtLT4gQ2FuY2VsIG5hdmlnYXRpb25cblx0XHRjb25zdCBhbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCA9XG5cdFx0XHR0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmVuYWJsZUFuYWx5dGljcyA9PT0gdHJ1ZSAmJlxuXHRcdFx0Y29udGV4dC5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuQ29udGV4dFwiKSAmJlxuXHRcdFx0dHlwZW9mIGNvbnRleHQuZ2V0UHJvcGVydHkoXCJAJHVpNS5ub2RlLmlzRXhwYW5kZWRcIikgPT09IFwiYm9vbGVhblwiO1xuXHRcdHJldHVybiAhKGVtcHR5Um93IHx8IGFuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkKTtcblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblNoYXJlVG9Db2xsYWJvcmF0aW9uTWFuYWdlclByZXNzKFxuXHRcdG9FdmVudDogVUk1RXZlbnQsXG5cdFx0Y29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsXG5cdFx0Y29udGV4dHM6IENvbnRleHRbXSxcblx0XHRtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXM6IG51bWJlclxuXHQpOiB2b2lkIHwgYm9vbGVhbiB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHJldHVybiB0aGlzLl9vblNoYXJlVG9Db2xsYWJvcmF0aW9uTWFuYWdlclByZXNzKGNvbnRyb2xsZXIsIGNvbnRleHRzLCBtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXMpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uT3BlbkluTmV3VGFiUHJlc3MoXG5cdFx0b0V2ZW50OiBVSTVFdmVudCxcblx0XHRjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcixcblx0XHRhbGxDb250ZXh0czogQ29udGV4dFtdLFxuXHRcdG5hdmlnYWJsZUNvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0cGFyYW1ldGVyczogUm91dGluZ05hdmlnYXRpb25QYXJhbWV0ZXJzLFxuXHRcdG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtczogbnVtYmVyXG5cdCk6IFByb21pc2U8dm9pZCB8IGJvb2xlYW4+IHtcblx0XHRpZiAobmF2aWdhYmxlQ29udGV4dHMubGVuZ3RoIDw9IG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtcykge1xuXHRcdFx0Y29uc3QgcHJvbWlzZVRvV2FpdCA9IG5ldyBQcm9taXNlS2VlcGVyPGJvb2xlYW4+KCk7XG5cdFx0XHRpZiAobmF2aWdhYmxlQ29udGV4dHMubGVuZ3RoIDwgYWxsQ29udGV4dHMubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IHRleHRLZXkgPVxuXHRcdFx0XHRcdG5hdmlnYWJsZUNvbnRleHRzLmxlbmd0aCA9PT0gMVxuXHRcdFx0XHRcdFx0PyBcIlRfVEFCTEVfTkFWSUdBVElPTl9OT1RfQUxMX0lURU1TX05BVklHQUJMRV9TSU5HVUxBUlwiXG5cdFx0XHRcdFx0XHQ6IFwiVF9UQUJMRV9OQVZJR0FUSU9OX05PVF9BTExfSVRFTVNfTkFWSUdBQkxFX1BMVVJBTFwiO1xuXHRcdFx0XHRNZXNzYWdlQm94LmNvbmZpcm0oXG5cdFx0XHRcdFx0dGhpcy5nZXRUcmFuc2xhdGVkVGV4dCh0ZXh0S2V5LCBbYWxsQ29udGV4dHMubGVuZ3RoLCBuYXZpZ2FibGVDb250ZXh0cy5sZW5ndGgsIG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtc10pLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG9uQ2xvc2U6IChyZXN1bHQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0ID09PSBcIkNBTkNFTFwiKSB7XG5cdFx0XHRcdFx0XHRcdFx0cHJvbWlzZVRvV2FpdC5yZXNvbHZlKGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRwcm9taXNlVG9XYWl0LnJlc29sdmUodHJ1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHJvbWlzZVRvV2FpdC5yZXNvbHZlKHRydWUpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc2hvdWxkUHJvY2VlZCA9IGF3YWl0IHByb21pc2VUb1dhaXQucHJvbWlzZTtcblx0XHRcdGlmIChzaG91bGRQcm9jZWVkKSB7XG5cdFx0XHRcdG5hdmlnYWJsZUNvbnRleHRzLmZvckVhY2goYXN5bmMgKGNvbnRleHQ6IENvbnRleHQpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5pc1RhYmxlUm93TmF2aWdhdGlvblBvc3NpYmxlKGNvbnRleHQpKSB7XG5cdFx0XHRcdFx0XHRwYXJhbWV0ZXJzLmVkaXRhYmxlID0gIWNvbnRleHQuZ2V0UHJvcGVydHkoXCJJc0FjdGl2ZUVudGl0eVwiKTtcblx0XHRcdFx0XHRcdGF3YWl0IGNvbnRyb2xsZXIuX3JvdXRpbmcubmF2aWdhdGVGb3J3YXJkVG9Db250ZXh0KGNvbnRleHQsIHBhcmFtZXRlcnMpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0TWVzc2FnZUJveC53YXJuaW5nKFxuXHRcdFx0XHRMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSEuZ2V0VGV4dChcIlRfVEFCTEVfTkFWSUdBVElPTl9UT09fTUFOWV9JVEVNU19TRUxFQ1RFRFwiLCBbXG5cdFx0XHRcdFx0bWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zXG5cdFx0XHRcdF0pXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsUGF0Y2hDb21wbGV0ZWQoZXZ0OiBFdmVudDx7IGVycm9yOiB7IHN0YXR1cz86IG51bWJlcjsgY2F1c2U/OiB7IHN0YXR1cz86IG51bWJlciB9OyBtZXNzYWdlPzogc3RyaW5nIH0gfT4pOiB2b2lkIHtcblx0XHQvLyBCQ1A6IDIzODAwMjMwOTBcblx0XHQvLyBXZSBoYW5kbGUgZW5hYmxlbWVudCBvZiBEZWxldGUgZm9yIHRoZSB0YWJsZSBoZXJlLlxuXHRcdC8vIEVkaXRGbG93LnRzI2hhbmRsZVBhdGNoU2VudCBpcyBoYW5kbGluZyB0aGUgYWN0aW9uIGVuYWJsZW1lbnQuXG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Y29uc3Qgc2VsZWN0ZWRDb250ZXh0cyA9IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZXh0cygpO1xuXHRcdERlbGV0ZUhlbHBlci51cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyhpbnRlcm5hbE1vZGVsQ29udGV4dCwgc2VsZWN0ZWRDb250ZXh0cyk7XG5cdFx0aWYgKGV2dC5nZXRQYXJhbWV0ZXIoXCJlcnJvclwiKSkge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnNob3dNZXNzYWdlRGlhbG9nKHsgY29udHJvbDogdGhpcyB9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnJlbGVhc2VIb2xkQnlDb250cm9sKHRoaXMpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsUGF0Y2hTZW50KGV2dDogT0RhdGFDb250ZXh0QmluZGluZyRQYXRjaFNlbnRFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0Y29uc3QgZWRpdEZsb3dFeHRlbnNpb24gPSBjb250cm9sbGVyLmVkaXRGbG93O1xuXHRcdGNvbnRyb2xsZXIubWVzc2FnZUhhbmRsZXIuaG9sZE1lc3NhZ2VzRm9yQ29udHJvbCh0aGlzKTtcblx0XHRpZiAodGhpcy50YWJsZURlZmluaXRpb24uaGFuZGxlUGF0Y2hTZW50KSB7XG5cdFx0XHRlZGl0Rmxvd0V4dGVuc2lvbi5oYW5kbGVQYXRjaFNlbnQuY2FsbCh0aGlzLCBldnQpO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbGxlci5pbmxpbmVFZGl0Rmxvdy5pc0lubGluZUVkaXRQb3NzaWJsZSgpKSB7XG5cdFx0XHRjb250cm9sbGVyLmlubGluZUVkaXRGbG93LmhhbmRsZUlubGluZUVkaXRQYXRjaFNlbnQuY2FsbCh0aGlzLCBldnQpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsRGF0YVJlY2VpdmVkKG9FdmVudDogVUk1RXZlbnQ8eyBlcnJvcjogc3RyaW5nIH0sIE9EYXRhTGlzdEJpbmRpbmc+KTogdm9pZCB7XG5cdFx0Y29uc3QgaXNSZWNvbW1lbmRhdGlvblJlbGV2YW50ID0gdGhpcy5jaGVja0lmUmVjb21tZW5kYXRpb25SZWxldmFudChvRXZlbnQpO1xuXHRcdGlmIChpc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQpIHtcblx0XHRcdGNvbnN0IGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy5nZXRJZGVudGlmaWVyQ29sdW1uKGlzUmVjb21tZW5kYXRpb25SZWxldmFudCkgYXMgc3RyaW5nW107XG5cdFx0XHRjb25zdCByZXNwb25zZUNvbnRleHRzQXJyYXkgPSBvRXZlbnQuZ2V0U291cmNlKCkuZ2V0QWxsQ3VycmVudENvbnRleHRzKCk7XG5cdFx0XHRjb25zdCBuZXdDb250ZXh0czogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXSA9IFtdO1xuXHRcdFx0cmVzcG9uc2VDb250ZXh0c0FycmF5LmZvckVhY2goKGNvbnRleHQpID0+IHtcblx0XHRcdFx0bmV3Q29udGV4dHMucHVzaCh7XG5cdFx0XHRcdFx0Y29udGV4dCxcblx0XHRcdFx0XHRjb250ZXh0SWRlbnRpZmllclxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLnJlY29tbWVuZGF0aW9ucy5mZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zKG5ld0NvbnRleHRzLCB0cnVlKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLmhvbGRNZXNzYWdlc0ZvckNvbnRyb2wodGhpcyk7XG5cdFx0aWYgKG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJlcnJvclwiKSkge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnNob3dNZXNzYWdlRGlhbG9nKHsgY29udHJvbDogdGhpcyB9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnJlbGVhc2VIb2xkQnlDb250cm9sKHRoaXMpO1xuXHRcdFx0dGhpcy5zZXREb3dubG9hZFVybCgpO1xuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkludGVybmFsRGF0YVJlcXVlc3RlZChvRXZlbnQ6IFVJNUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImRhdGFJbml0aWFsaXplZFwiLCB0cnVlKTtcblx0XHR0aGlzLmZpcmVFdmVudChcImludGVybmFsRGF0YVJlcXVlc3RlZFwiLCBvRXZlbnQuZ2V0UGFyYW1ldGVycygpKTtcblx0XHRpZiAodGhpcy5nZXRRdWlja0ZpbHRlcigpICE9PSB1bmRlZmluZWQgJiYgdGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb250cm9sLmZpbHRlcnM/LnF1aWNrRmlsdGVycz8uc2hvd0NvdW50cyA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcy5nZXRRdWlja0ZpbHRlcigpPy5zZXRDb3VudHNBc0xvYWRpbmcoKTtcblx0XHRcdHRoaXMuZ2V0UXVpY2tGaWx0ZXIoKT8ucmVmcmVzaFVuU2VsZWN0ZWRDb3VudHMoKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLmhvbGRNZXNzYWdlc0ZvckNvbnRyb2wodGhpcyk7XG5cdH1cblxuXHRzZXRCdXN5TG9jayhsb2NrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5jb250ZW50KTtcblx0XHRjb25zdCBidXN5SWQgPSB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpPy5hbm5vdGF0aW9uLmlkO1xuXHRcdGNvbnN0IGJ1c3lQYXRoID0gdGhpcy5nZXRCdXN5UGF0aChidXN5SWQhKTtcblx0XHRpZiAobG9ja2VkKSB7XG5cdFx0XHRCdXN5TG9ja2VyLmxvY2soYXBwQ29tcG9uZW50LCBidXN5UGF0aCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKGFwcENvbXBvbmVudCwgYnVzeVBhdGgpO1xuXHRcdH1cblx0fVxuXG5cdGdldEJ1c3lQYXRoKHBhdGg6IHN0cmluZywgaXNMb2NhbCA9IHRydWUpOiBzdHJpbmcge1xuXHRcdHJldHVybiBpc0xvY2FsID8gYC9idXN5TG9jYWwvJHtwYXRofWAgOiBcIi9idXN5XCI7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgUGFzdGUgb3BlcmF0aW9uLlxuXHQgKiBAcGFyYW0gZXZ0IFRoZSBldmVudFxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBUaGUgcGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSBmb3JDb250ZXh0TWVudVxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uUGFzdGUoZXZ0OiBQYXN0ZVByb3ZpZGVyJFBhc3RlRXZlbnQsIGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBmb3JDb250ZXh0TWVudSA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKGZvckNvbnRleHRNZW51KSB7XG5cdFx0XHR0aGlzLnNldENvbnRleHRNZW51QWN0aXZlKHRydWUpO1xuXHRcdH1cblx0XHRjb25zdCByYXdQYXN0ZWREYXRhID0gZXZ0LmdldFBhcmFtZXRlcihcImRhdGFcIiksXG5cdFx0XHRzb3VyY2UgPSBldnQuZ2V0U291cmNlKCk7XG5cdFx0bGV0IHRhYmxlOiBUYWJsZTtcblx0XHRpZiAoIWZvckNvbnRleHRNZW51KSB7XG5cdFx0XHQvLyB0YWJsZSB0b29sYmFyXG5cdFx0XHR0YWJsZSA9IChzb3VyY2UuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSA/IHNvdXJjZSA6IChzb3VyY2UgYXMgQ29udHJvbCkuZ2V0UGFyZW50KCkpIGFzIFRhYmxlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBjb250ZXh0IG1lbnVcblx0XHRcdGNvbnN0IG1lbnUgPSAoc291cmNlLmlzQShcInNhcC5tLk1lbnVcIikgPyBzb3VyY2UgOiAoc291cmNlIGFzIENvbnRyb2wpLmdldFBhcmVudCgpKSBhcyBNZW51O1xuXHRcdFx0dGFibGUgPSBtZW51LmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKSBhcyBUYWJsZTtcblx0XHR9XG5cdFx0Y29uc3QgaW50ZXJuYWxDb250ZXh0ID0gdGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdC8vIElmIHBhc3RlIGlzIGRpc2FibGVkIG9yIGlmIHdlJ3JlIG5vdCBpbiBlZGl0IG1vZGUgaW4gYW4gT2JqZWN0UGFnZSwgd2UgY2FuJ3QgcGFzdGUgYW55dGhpbmdcblx0XHRpZiAoIXRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZW5hYmxlUGFzdGUgfHwgKHRhYmxlLmdldFJvd0JpbmRpbmcoKS5pc1JlbGF0aXZlKCkgJiYgIUNvbW1vblV0aWxzLmdldElzRWRpdGFibGUodGhpcykpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly9UaGlzIGNvZGUgaXMgZXhlY3V0ZWQgb25seSBpbiBjYXNlIG9mIFRyZWVUYWJsZVxuXHRcdGNvbnN0IGFjdGlvbiA9IGludGVybmFsQ29udGV4dC5nZXRQcm9wZXJ0eShcIm5vZGVVcGRhdGVzSW5mby9sYXN0QWN0aW9uXCIpO1xuXHRcdGNvbnN0IHNyY0NvbnRleHRzID0gaW50ZXJuYWxDb250ZXh0LmdldFByb3BlcnR5KFwibm9kZVVwZGF0ZXNJbmZvL3Bhc3RhYmxlQ29udGV4dHNcIik7XG5cblx0XHRpZiAodGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50eXBlID09PSBcIlRyZWVUYWJsZVwiKSB7XG5cdFx0XHRsZXQgc3JjQ29udGV4dCA9IHNyY0NvbnRleHRzWzBdO1xuXHRcdFx0Y29uc3QgbmV3UGFyZW50Q29udGV4dCA9ICFmb3JDb250ZXh0TWVudVxuXHRcdFx0XHQ/ICh0YWJsZS5nZXRTZWxlY3RlZENvbnRleHRzKClbMF0gYXMgQ29udGV4dClcblx0XHRcdFx0OiAoaW50ZXJuYWxDb250ZXh0Py5nZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L3NlbGVjdGVkQ29udGV4dHNcIilbMF0gYXMgQ29udGV4dCk7XG5cdFx0XHQvLyBJZiB0aGUgdGFyZ2V0Q29udGV4dCBoYXMgYmVlbiBkaXNhc3NvY2lhdGVkIGZyb20gdGhlIHRhYmxlIGR1ZSB0byBleHBhbmQgYW5kIGNvbGxhcHNlIGFjdGlvbnMsIHdlIGF0dGVtcHQgdG8gcmV0cmlldmUgaXQgdXNpbmcgaXRzIHBhdGguXG5cdFx0XHRzcmNDb250ZXh0ID0gdGFibGVcblx0XHRcdFx0LmdldFJvd0JpbmRpbmcoKVxuXHRcdFx0XHQuZ2V0QWxsQ3VycmVudENvbnRleHRzKClcblx0XHRcdFx0LmZpbmQoKGNvbnRleHQpID0+IGNvbnRleHQuZ2V0UGF0aCgpID09PSBzcmNDb250ZXh0Py5nZXRQYXRoKCkpO1xuXG5cdFx0XHRpZiAoIXNyY0NvbnRleHQpIHtcblx0XHRcdFx0TG9nLmVycm9yKGBUaGUgJHthY3Rpb259IG9wZXJhdGlvbiBpcyB1bnN1Y2Nlc3NmdWwgYmVjYXVzZSB0aGUgcmVsZXZhbnQgY29udGV4dCBpcyBubyBsb25nZXIgYXZhaWxhYmxlYCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHRoaXMuc2V0QnVzeUxvY2sodHJ1ZSk7XG5cdFx0XHRcdGF3YWl0IFByb21pc2UuYWxsKFtcblx0XHRcdFx0XHRzcmNDb250ZXh0Lm1vdmUoeyBwYXJlbnQ6IG5ld1BhcmVudENvbnRleHQgPz8gbnVsbCwgY29weTogYWN0aW9uID09PSBcIkNvcHlcIiB9KSxcblx0XHRcdFx0XHRhY3Rpb24gPT09IFwiQ29weVwiXG5cdFx0XHRcdFx0XHQ/IHRoaXMucmVxdWVzdFNpZGVFZmZlY3RzRm9yQ29weUFjdGlvbihzcmNDb250ZXh0KVxuXHRcdFx0XHRcdFx0OiB0aGlzLnJlcXVlc3RTaWRlRWZmZWN0c0ZvckNoYW5nZU5leHRTaWJsaW5nQWN0aW9uKHNyY0NvbnRleHQpXG5cdFx0XHRcdF0pO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIk1fVEFCTEVEUk9QX0ZBSUxFRFwiLCBbXCJcIl0pKTtcblx0XHRcdFx0TG9nLmVycm9yKGBUaGUgJHthY3Rpb259IG9wZXJhdGlvbiBpcyB1bnN1Y2Nlc3NmdWwuIGAgKyAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgPz8gXCJcIik7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnNldEJ1c3lMb2NrKGZhbHNlKTtcblx0XHRcdGludGVybmFsQ29udGV4dC5zZXRQcm9wZXJ0eShgbm9kZVVwZGF0ZXNJbmZvL3Bhc3RhYmxlQ29udGV4dHNgLCBbXSk7XG5cdFx0XHRpbnRlcm5hbENvbnRleHQuc2V0UHJvcGVydHkoYG5vZGVVcGRhdGVzSW5mby9wYXN0ZUVuYWJsZW1lbnRgLCBmYWxzZSk7XG5cdFx0XHRpbnRlcm5hbENvbnRleHQuc2V0UHJvcGVydHkoYGNvbnRleHRtZW51L25vZGVVcGRhdGVzSW5mby9wYXN0ZUVuYWJsZW1lbnRgLCBmYWxzZSk7XG5cdFx0XHRpbnRlcm5hbENvbnRleHQuc2V0UHJvcGVydHkoYG5vZGVVcGRhdGVzSW5mby9sYXN0QWN0aW9uYCwgdW5kZWZpbmVkKTtcblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGZvciB0YWJsZXMgZXhjZXB0ZWQgVHJlZVRhYmxlXG5cdFx0aWYgKHRhYmxlLmdldEVuYWJsZVBhc3RlKCkgPT09IHRydWUgJiYgIWZvckNvbnRleHRNZW51KSB7XG5cdFx0XHRjb25zdCBjZWxsU2VsZWN0aW9uID0gdGFibGUuZ2V0Q2VsbFNlbGVjdG9yKCk/LmdldFNlbGVjdGlvbigpO1xuXHRcdFx0aWYgKGNlbGxTZWxlY3Rpb24/LmNvbHVtbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRQYXN0ZUhlbHBlci5wYXN0ZVJhbmdlRGF0YShyYXdQYXN0ZWREYXRhID8/IFtdLCBjZWxsU2VsZWN0aW9uLCB0YWJsZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRQYXN0ZUhlbHBlci5wYXN0ZURhdGEocmF3UGFzdGVkRGF0YSA/PyBbXSwgdGFibGUsIGNvbnRyb2xsZXIpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKSE7XG5cdFx0XHRNZXNzYWdlQm94LmVycm9yKHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX09QX0NPTlRST0xMRVJfU0FQRkVfUEFTVEVfRElTQUJMRURfTUVTU0FHRVwiKSwge1xuXHRcdFx0XHR0aXRsZTogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgQ3V0IG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIGV2dCBUaGUgVUk1IGV2ZW50LlxuXHQgKiBAcGFyYW0gZm9yQ29udGV4dE1lbnVcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkN1dChldnQ6IFVJNUV2ZW50PHt9LCBVSTVFbGVtZW50PiwgZm9yQ29udGV4dE1lbnUgPSBmYWxzZSk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRpZiAoZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdHRoaXMuX29uQ29weUN1dChldnQsIGZvckNvbnRleHRNZW51LCBcIkN1dFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDb3B5IG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIGV2dCBUaGUgVUk1IGV2ZW50LlxuXHQgKiBAcGFyYW0gZm9yQ29udGV4dE1lbnVcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkNvcHkoZXZ0OiBVSTVFdmVudDx7fSwgVUk1RWxlbWVudD4sIGZvckNvbnRleHRNZW51ID0gZmFsc2UpOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0aWYgKGZvckNvbnRleHRNZW51KSB7XG5cdFx0XHR0aGlzLnNldENvbnRleHRNZW51QWN0aXZlKHRydWUpO1xuXHRcdH1cblx0XHR0aGlzLl9vbkNvcHlDdXQoZXZ0LCBmb3JDb250ZXh0TWVudSwgXCJDb3B5XCIpO1xuXHR9XG5cblx0Ly8gVGhpcyBldmVudCB3aWxsIGFsbG93IHVzIHRvIGludGVyY2VwdCB0aGUgZXhwb3J0IGJlZm9yZSBpcyB0cmlnZ2VyZWQgdG8gY292ZXIgc3BlY2lmaWMgY2FzZXNcblx0Ly8gdGhhdCBjb3VsZG4ndCBiZSBhZGRyZXNzZWQgb24gdGhlIHByb3BlcnR5SW5mb3MgZm9yIGVhY2ggY29sdW1uLlxuXHQvLyBlLmcuIEZpeGVkIFRhcmdldCBWYWx1ZSBmb3IgdGhlIGRhdGFwb2ludHNcblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uQmVmb3JlRXhwb3J0KGV4cG9ydEV2ZW50OiBUYWJsZSRCZWZvcmVFeHBvcnRFdmVudCk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkJlZm9yZUV4cG9ydChleHBvcnRFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgTURDIERhdGFTdGF0ZUluZGljYXRvciBwbHVnaW4gdG8gZGlzcGxheSBtZXNzYWdlU3RyaXAgb24gYSB0YWJsZS5cblx0ICogQHBhcmFtIG1lc3NhZ2Vcblx0ICogQHBhcmFtIGNvbnRyb2xcblx0ICogQHJldHVybnMgV2hldGhlciB0byByZW5kZXIgdGhlIG1lc3NhZ2VTdHJpcCB2aXNpYmxlXG5cdCAqL1xuXHRkYXRhU3RhdGVJbmRpY2F0b3JGaWx0ZXIobWVzc2FnZTogTWVzc2FnZSwgY29udHJvbDogQ29udHJvbCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG1kY1RhYmxlID0gY29udHJvbCBhcyBNRENUYWJsZTtcblx0XHRjb25zdCBzVGFibGVDb250ZXh0QmluZGluZ1BhdGggPSBtZGNUYWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCk7XG5cdFx0Y29uc3Qgc1RhYmxlUm93QmluZGluZyA9IChzVGFibGVDb250ZXh0QmluZGluZ1BhdGggPyBgJHtzVGFibGVDb250ZXh0QmluZGluZ1BhdGh9L2AgOiBcIlwiKSArIG1kY1RhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRQYXRoKCk7XG5cdFx0cmV0dXJuIHNUYWJsZVJvd0JpbmRpbmcgPT09IG1lc3NhZ2UuZ2V0VGFyZ2V0cygpWzBdID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZXZlbnQgaGFuZGxlcyB0aGUgRGF0YVN0YXRlIG9mIHRoZSBEYXRhU3RhdGVJbmRpY2F0b3IgcGx1Z2luIGZyb20gTURDIG9uIGEgdGFibGUuXG5cdCAqIEl0J3MgZmlyZWQgd2hlbiBuZXcgZXJyb3IgbWVzc2FnZXMgYXJlIHNlbnQgZnJvbSB0aGUgYmFja2VuZCB0byB1cGRhdGUgcm93IGhpZ2hsaWdodGluZy5cblx0ICogQHBhcmFtIGV2dCBFdmVudCBvYmplY3Rcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkRhdGFTdGF0ZUNoYW5nZShldnQ6IERhdGFTdGF0ZUluZGljYXRvciREYXRhU3RhdGVDaGFuZ2VFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGRhdGFTdGF0ZUluZGljYXRvciA9IGV2dC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBmaWx0ZXJlZE1lc3NhZ2VzID0gZXZ0LmdldFBhcmFtZXRlcihcImZpbHRlcmVkTWVzc2FnZXNcIikgYXMgTWVzc2FnZVtdO1xuXHRcdGlmIChmaWx0ZXJlZE1lc3NhZ2VzKSB7XG5cdFx0XHRjb25zdCBoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzID0gZmlsdGVyZWRNZXNzYWdlc1xuXHRcdFx0XHQubWFwKChtc2cpID0+IHtcblx0XHRcdFx0XHRjb25zdCB0ZWNobmljYWxEZXRhaWxzID0gKG1zZy5nZXRUZWNobmljYWxEZXRhaWxzKCkgfHwge30pIGFzIHtcblx0XHRcdFx0XHRcdHRhYmxlSWQ/OiBzdHJpbmc7XG5cdFx0XHRcdFx0XHRlbXB0eVJvd01lc3NhZ2U/OiBib29sZWFuO1xuXHRcdFx0XHRcdFx0bWlzc2luZ0NvbHVtbj86IHN0cmluZztcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdHJldHVybiB0ZWNobmljYWxEZXRhaWxzLmVtcHR5Um93TWVzc2FnZSA9PT0gdHJ1ZSAmJiB0ZWNobmljYWxEZXRhaWxzLm1pc3NpbmdDb2x1bW47XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5maWx0ZXIoKGhpZGRlblByb3BlcnR5KSA9PiAhIWhpZGRlblByb3BlcnR5KTtcblx0XHRcdGlmIChoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBtZXNzYWdlU3RyaXBFcnJvciA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFxuXHRcdFx0XHRcdGhpZGRlbk1hbmRhdG9yeVByb3BlcnRpZXMubGVuZ3RoID09PSAxXG5cdFx0XHRcdFx0XHQ/IFwiTV9NRVNTQUdFU1RSSVBfRU1QVFlST1dfTUFOREFUT1JZX0hJRERFTlwiXG5cdFx0XHRcdFx0XHQ6IFwiTV9NRVNTQUdFU1RSSVBfRU1QVFlST1dfTUFOREFUT1JZX0hJRERFTl9QTFVSQUxcIixcblx0XHRcdFx0XHRbaGlkZGVuTWFuZGF0b3J5UHJvcGVydGllcy5qb2luKFwiLCBcIildXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGRhdGFTdGF0ZUluZGljYXRvci5zaG93TWVzc2FnZShtZXNzYWdlU3RyaXBFcnJvciwgXCJFcnJvclwiKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSBkYXRhU3RhdGVJbmRpY2F0b3IuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiZmlsdGVyZWRNZXNzYWdlc1wiLCBmaWx0ZXJlZE1lc3NhZ2VzLCBkYXRhU3RhdGVJbmRpY2F0b3IuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBDb250ZXh0KTtcblx0XHR9XG5cdH1cblxuXHRyZXN1bWVCaW5kaW5nKGJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJiaW5kaW5nU3VzcGVuZGVkXCIsIGZhbHNlKTtcblx0XHRpZiAoKGJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZCAmJiAhdGhpcy5nZXREYXRhSW5pdGlhbGl6ZWQoKSkgfHwgdGhpcy5nZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiKSkge1xuXHRcdFx0dGhpcy5zZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiLCBmYWxzZSk7XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8ucmViaW5kKCk7XG5cdFx0fVxuXHR9XG5cblx0cmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMob0ZpbHRlckNvbnRyb2w6IENvbnRyb2wpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3Qgb1RhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIEZpbHRlclV0aWxzLmdldE5vdEFwcGxpY2FibGVGaWx0ZXJzKG9GaWx0ZXJDb250cm9sIGFzIEZpbHRlckJhciwgb1RhYmxlKTtcblx0fVxuXG5cdHN1c3BlbmRCaW5kaW5nKCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJiaW5kaW5nU3VzcGVuZGVkXCIsIHRydWUpO1xuXHR9XG5cblx0aW52YWxpZGF0ZUNvbnRlbnQoKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImRhdGFJbml0aWFsaXplZFwiLCBmYWxzZSk7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiLCBmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgZW5hYmxlbWVudCBvZiB0aGUgY3JlYXRpb24gcm93LlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c2V0RmFzdENyZWF0aW9uUm93RW5hYmxlbWVudCgpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRjb25zdCBmYXN0Q3JlYXRpb25Sb3cgPSB0YWJsZS5nZXRDcmVhdGlvblJvdygpO1xuXG5cdFx0aWYgKGZhc3RDcmVhdGlvblJvdyAmJiAhZmFzdENyZWF0aW9uUm93LmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRcdGNvbnN0IHRhYmxlQmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdGFibGVCaW5kaW5nLmdldENvbnRleHQoKTtcblxuXHRcdFx0aWYgKGJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRcdFRhYmxlSGVscGVyLmVuYWJsZUZhc3RDcmVhdGlvblJvdyhcblx0XHRcdFx0XHRmYXN0Q3JlYXRpb25Sb3csXG5cdFx0XHRcdFx0dGFibGVCaW5kaW5nLmdldFBhdGgoKSxcblx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dCxcblx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdFx0XHRcdFByb21pc2UucmVzb2x2ZSgpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgdGhlIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0cmV0dXJuIHRoaXMuX29uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkKCk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25NYXNzRWRpdEJ1dHRvblByZXNzZWQodWk1RXZlbnQ6IFVJNUV2ZW50LCBmb3JDb250ZXh0TWVudTogYm9vbGVhbik6IHZvaWQge1xuXHRcdGlmIChmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgbWFzc0VkaXRIZWxwZXIgPSBuZXcgTWFzc0VkaXREaWFsb2dIZWxwZXIoe1xuXHRcdFx0dGFibGU6IHRoaXMuY29udGVudCxcblx0XHRcdG9uQ29udGV4dE1lbnU6IGZvckNvbnRleHRNZW51LFxuXHRcdFx0b25DbG9zZTogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLnNldE1hc3NFZGl0RGlhbG9nSGVscGVyKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5zZXRNYXNzRWRpdERpYWxvZ0hlbHBlcihtYXNzRWRpdEhlbHBlcik7XG5cdFx0bWFzc0VkaXRIZWxwZXIub3BlbigpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uU2VsZWN0aW9uQ2hhbmdlZCh1aTVldmVudDogVGFibGUkU2VsZWN0aW9uQ2hhbmdlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCBUYWJsZVJ1bnRpbWUuc2V0Q29udGV4dHModWk1ZXZlbnQpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwic2VsZWN0aW9uQ2hhbmdlXCIsIHsgLi4udWk1ZXZlbnQuZ2V0UGFyYW1ldGVycygpLCBzZWxlY3RlZENvbnRleHQ6IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZXh0cygpIH0pO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uQWN0aW9uUHJlc3MoXG5cdFx0b0V2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4sXG5cdFx0cGFnZUNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdGFjdGlvbk5hbWU6IHN0cmluZyxcblx0XHRwYXJhbWV0ZXJzOiB7XG5cdFx0XHRtb2RlbDogT0RhdGFNb2RlbDtcblx0XHRcdG5vdEFwcGxpY2FibGVDb250ZXh0czogQ29udGV4dFtdO1xuXHRcdFx0bGFiZWw6IHN0cmluZztcblx0XHRcdGNvbnRleHRzOiBDb250ZXh0W107XG5cdFx0XHRhcHBsaWNhYmxlQ29udGV4dHM6IENvbnRleHRbXTtcblx0XHRcdGVudGl0eVNldE5hbWU6IHN0cmluZztcblx0XHRcdGRpc2FibGVTdHJpY3RIYW5kbGluZz86IGJvb2xlYW47XG5cdFx0fVxuXHQpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRwYXJhbWV0ZXJzLm1vZGVsID0gb0V2ZW50LmdldFNvdXJjZSgpLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbDtcblx0XHRjb25zdCBsYWJlbEV4cHJlc3Npb24gPSByZXNvbHZlQmluZGluZ1N0cmluZyhwYXJhbWV0ZXJzLmxhYmVsLCBcInN0cmluZ1wiKTtcblx0XHRpZiAoaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24obGFiZWxFeHByZXNzaW9uKSAmJiAobGFiZWxFeHByZXNzaW9uLm1vZGVsTmFtZSA9PT0gXCJpMThuXCIgfHwgbGFiZWxFeHByZXNzaW9uLm1vZGVsTmFtZSA9PT0gXCJAaTE4blwiKSkge1xuXHRcdFx0Ly9yZXNvbHZlQmluZGluZ1N0cmluZyhwYXJhbWV0ZXJzLmxhYmVsLCBcInN0cmluZ1wiKVxuXHRcdFx0cGFyYW1ldGVycy5sYWJlbCA9XG5cdFx0XHRcdChvRXZlbnQuZ2V0U291cmNlKCkuZ2V0TW9kZWwobGFiZWxFeHByZXNzaW9uLm1vZGVsTmFtZSkgYXMgUmVzb3VyY2VNb2RlbCkuZ2V0UHJvcGVydHkobGFiZWxFeHByZXNzaW9uLnBhdGgpID8/XG5cdFx0XHRcdHBhcmFtZXRlcnMubGFiZWw7XG5cdFx0fVxuXHRcdGxldCBleGVjdXRlQWN0aW9uID0gdHJ1ZTtcblx0XHRpZiAocGFyYW1ldGVycy5ub3RBcHBsaWNhYmxlQ29udGV4dHMgJiYgcGFyYW1ldGVycy5ub3RBcHBsaWNhYmxlQ29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gSWYgd2UgaGF2ZSBub24gYXBwbGljYWJsZSBjb250ZXh0cywgd2UgbmVlZCB0byBvcGVuIGEgZGlhbG9nIHRvIGFzayB0aGUgdXNlciBpZiBoZSB3YW50cyB0byBjb250aW51ZVxuXHRcdFx0Y29uc3QgY29udmVydGVkTWV0YWRhdGEgPSBjb252ZXJ0VHlwZXMocGFyYW1ldGVycy5tb2RlbC5nZXRNZXRhTW9kZWwoKSk7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGg8RW50aXR5VHlwZT4odGhpcy5lbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lKS50YXJnZXQhO1xuXHRcdFx0Y29uc3QgbXlVbmFwcGxpY2FibGVDb250ZXh0RGlhbG9nID0gbmV3IE5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nKHtcblx0XHRcdFx0ZW50aXR5VHlwZTogZW50aXR5VHlwZSxcblx0XHRcdFx0bm90QXBwbGljYWJsZUNvbnRleHRzOiBwYXJhbWV0ZXJzLm5vdEFwcGxpY2FibGVDb250ZXh0cyxcblx0XHRcdFx0dGl0bGU6IHBhcmFtZXRlcnMubGFiZWwsXG5cdFx0XHRcdHJlc291cmNlTW9kZWw6IGdldFJlc291cmNlTW9kZWwodGhpcyksXG5cdFx0XHRcdGVudGl0eVNldDogcGFyYW1ldGVycy5lbnRpdHlTZXROYW1lLFxuXHRcdFx0XHRhY3Rpb25OYW1lOiBhY3Rpb25OYW1lLFxuXHRcdFx0XHRhcHBsaWNhYmxlQ29udGV4dHM6IHBhcmFtZXRlcnMuYXBwbGljYWJsZUNvbnRleHRzXG5cdFx0XHR9KTtcblx0XHRcdHBhcmFtZXRlcnMuY29udGV4dHMgPSBwYXJhbWV0ZXJzLmFwcGxpY2FibGVDb250ZXh0cztcblx0XHRcdGV4ZWN1dGVBY3Rpb24gPSBhd2FpdCBteVVuYXBwbGljYWJsZUNvbnRleHREaWFsb2cub3Blbih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKGV4ZWN1dGVBY3Rpb24pIHtcblx0XHRcdC8vIERpcmVjdCBleGVjdXRpb24gb2YgdGhlIGFjdGlvblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmV0dXJuIGF3YWl0IHBhZ2VDb250cm9sbGVyLmVkaXRGbG93Lmludm9rZUFjdGlvbihhY3Rpb25OYW1lLCBwYXJhbWV0ZXJzKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLmluZm8oZSBhcyBzdHJpbmcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkNvbnRleHRNZW51UHJlc3Mob0V2ZW50OiBUYWJsZSRCZWZvcmVPcGVuQ29udGV4dE1lbnVFdmVudCk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkNvbnRleHRNZW51UHJlc3Mob0V2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHBvc2UgdGhlIGludGVybmFsIHRhYmxlIGRlZmluaXRpb24gZm9yIGV4dGVybmFsIHVzYWdlIGluIHRoZSBkZWxlZ2F0ZS5cblx0ICogQHJldHVybnMgVGhlIHRhYmxlRGVmaW5pdGlvblxuXHQgKi9cblx0Z2V0VGFibGVEZWZpbml0aW9uKCk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMudGFibGVEZWZpbml0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIG1hc3MgZWRpdCByZWxhdGVkIHRvIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIG1hc3NFZGl0RGlhbG9nSGVscGVyXG5cdCAqL1xuXHRzZXRNYXNzRWRpdERpYWxvZ0hlbHBlcihtYXNzRWRpdERpYWxvZ0hlbHBlcj86IE1hc3NFZGl0RGlhbG9nSGVscGVyKTogdm9pZCB7XG5cdFx0dGhpcy5tYXNzRWRpdERpYWxvZ0hlbHBlciA9IG1hc3NFZGl0RGlhbG9nSGVscGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4cG9zZSB0aGUgbWFzcyBlZGl0IHJlbGF0ZWQgdG8gdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgbWFzcyBlZGl0IHJlbGF0ZWQgdG8gdGhlIHRhYmxlLCBpZiBhbnlcblx0ICovXG5cdGdldE1hc3NFZGl0RGlhbG9nSGVscGVyKCk6IE1hc3NFZGl0RGlhbG9nSGVscGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5tYXNzRWRpdERpYWxvZ0hlbHBlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBjb25uZWN0IHRoZSBmaWx0ZXIgdG8gdGhlIHRhYmxlQVBJIGlmIHJlcXVpcmVkXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLlRhYmxlQVBJXG5cdCAqL1xuXG5cdHVwZGF0ZUZpbHRlckJhcigpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IGZpbHRlckJhclJlZklkID0gdGhpcy5nZXRGaWx0ZXJCYXIoKTtcblx0XHRpZiAodGFibGUgJiYgZmlsdGVyQmFyUmVmSWQgJiYgdGFibGUuZ2V0RmlsdGVyPy4oKSAhPT0gZmlsdGVyQmFyUmVmSWQpIHtcblx0XHRcdHRoaXMuX3NldEZpbHRlckJhcihmaWx0ZXJCYXJSZWZJZCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgdGhlIHRhYmxlIGZyb20gdGhlIGxpc3RlbmVycyBvZiB0aGUgZmlsdGVyQmFyLlxuXHQgKi9cblx0ZGV0YWNoRmlsdGVyQmFyKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdHRhYmxlPy5zZXRGaWx0ZXIoXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmlsdGVyIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBmaWx0ZXJCYXJSZWZJZCBJZCBvZiB0aGUgZmlsdGVyIGJhclxuXHQgKiBAcmV0dXJucyBUaGUgZmlsdGVyIGNvbnRyb2xcblx0ICogQHByaXZhdGVcblx0ICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuVGFibGVBUElcblx0ICovXG5cdGdldEZpbHRlckJhckNvbnRyb2woZmlsdGVyQmFyUmVmSWQ6IHN0cmluZyk6IFVJNUVsZW1lbnQgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmJ5SWQoZmlsdGVyQmFyUmVmSWQpIHx8IC8vIExvY2FsIGlkIHdydCBWaWV3KEZQTSBleHBsb3JlciBleGFtcGxlKVxuXHRcdFx0VUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChmaWx0ZXJCYXJSZWZJZCkgfHwgLy8gQWJzb2x1dGUgSWQodGhpcyB3YXMgbm90IHN1cHBvcnRlZCBpbiBvbGRlciB2ZXJzaW9ucylcblx0XHRcdFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5nZXRJZCgpLnN1YnN0cmluZygwLCB0aGlzLmdldElkKCkubGFzdEluZGV4T2YoXCItLVwiKSArIDIpfSR7ZmlsdGVyQmFyUmVmSWR9YClcblx0XHQpOyAvLyBMb2NhbCBpZCB3cnQgRnJhZ21lbnRJZCh3aGVuIGFuIFhNTENvbXBvc2l0ZSBvciBGcmFnbWVudCBpcyBpbmRlcGVuZGVudGx5IHByb2Nlc3NlZCkgaW5zdGVhZCBvZiBWaWV3SWRcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBmaWx0ZXIgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGZpbHRlckJhci5cblx0ICogQHBhcmFtIGZpbHRlckJhclJlZklkIElkIG9mIHRoZSBmaWx0ZXIgYmFyXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLlRhYmxlQVBJXG5cdCAqL1xuXHRfc2V0RmlsdGVyQmFyKGZpbHRlckJhclJlZklkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IGZpbHRlckJhciA9IHRoaXMuZ2V0RmlsdGVyQmFyQ29udHJvbChmaWx0ZXJCYXJSZWZJZCk7XG5cblx0XHRpZiAoZmlsdGVyQmFyKSB7XG5cdFx0XHRpZiAoZmlsdGVyQmFyLmlzQTxGaWx0ZXJCYXJBUEk+KFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCIpKSB7XG5cdFx0XHRcdHRhYmxlLnNldEZpbHRlcihgJHtmaWx0ZXJCYXIuZ2V0SWQoKX0tY29udGVudGApO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0ZmlsdGVyQmFyLmlzQTxGaWx0ZXJCYXJCQlY0PihcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckJhclwiKSAmJlxuXHRcdFx0XHRmaWx0ZXJCYXI/LmNvbnRlbnQ/LmlzQShcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckJhckFQSVwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRhYmxlLnNldEZpbHRlcihgJHtmaWx0ZXJCYXIuY29udGVudC5nZXRJZCgpfS1jb250ZW50YCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRmaWx0ZXJCYXIuaXNBPEZpbHRlckJhcj4oXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSB8fFxuXHRcdFx0XHRmaWx0ZXJCYXIuaXNBPHR5cGVvZiBCYXNpY1NlYXJjaD4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkJhc2ljU2VhcmNoXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGFibGUuc2V0RmlsdGVyKGZpbHRlckJhci5nZXRJZCgpKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgQ3JlYXRlQWN0aXZhdGUgZXZlbnQgZnJvbSB0aGUgT0RhdGFMaXN0QmluZGluZy5cblx0ICogQHBhcmFtIGFjdGl2YXRlRXZlbnQgVGhlIGV2ZW50IHNlbnQgYnkgdGhlIGJpbmRpbmdcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBoYW5kbGVDcmVhdGVBY3RpdmF0ZShhY3RpdmF0ZUV2ZW50OiBVSTVFdmVudDx7IGNvbnRleHQ6IENvbnRleHQgfSwgT0RhdGFMaXN0QmluZGluZz4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0YXdhaXQgdGhpcy5faGFuZGxlQ3JlYXRlQWN0aXZhdGUoYWN0aXZhdGVFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGRyYWdnZWQgZWxlbWVudCBlbnRlcnMgYSB0YWJsZSByb3cuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBVSTUgZXZlbnQgY29taW5nIGZyb20gdGhlIE1EQyBkcmFnIGFuZCBkcm9wIGNvbmZpZ1xuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uRHJhZ0VudGVyRG9jdW1lbnQoXG5cdFx0dWk1RXZlbnQ6IFVJNUV2ZW50PHsgYmluZGluZ0NvbnRleHQ6IENvbnRleHQ7IGRyYWdTb3VyY2U6IENvbnRleHQ7IGRyb3BQb3NpdGlvbjogXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IFwiT25cIiB9LCBEcmFnRHJvcEluZm8+XG5cdCk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkRyYWdFbnRlckRvY3VtZW50KHVpNUV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTdGFydHMgdGhlIGRyYWcgb2YgdGhlIGRvY3VtZW50LlxuXHQgKiBAcGFyYW0gdWk1RXZlbnQgVUk1IGV2ZW50IGNvbWluZyBmcm9tIHRoZSBNREMgZHJhZyBhbmQgZHJvcCBjb25maWdcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkRyYWdTdGFydERvY3VtZW50KHVpNUV2ZW50OiBVSTVFdmVudDx7IGJpbmRpbmdDb250ZXh0OiBDb250ZXh0IH0sIENvbnRyb2w+KTogdm9pZCB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHRoaXMuX29uRHJhZ1N0YXJ0RG9jdW1lbnQodWk1RXZlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERyb3BzIHRoZSBkb2N1bWVudC5cblx0ICogQHBhcmFtIHVpNUV2ZW50IFVJNSBldmVudCBjb21pbmcgZnJvbSB0aGUgTURDIGRyYWcgYW5kIGRyb3AgY29uZmlnXG5cdCAqIEByZXR1cm5zIFRoZSBQcm9taXNlXG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25Ecm9wRG9jdW1lbnQoXG5cdFx0dWk1RXZlbnQ6IFVJNUV2ZW50PHtcblx0XHRcdGJpbmRpbmdDb250ZXh0OiBDb250ZXh0O1xuXHRcdFx0ZHJhZ1NvdXJjZTogQ29udGV4dDtcblx0XHRcdGRyb3BQb3NpdGlvbjogc3RyaW5nO1xuXHRcdH0+XG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRhd2FpdCB0aGlzLl9vbkRyb3BEb2N1bWVudCh1aTVFdmVudCk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25Db2xsYXBzZUV4cGFuZE5vZGUodWk1RXZlbnQ6IFVJNUV2ZW50LCBleHBhbmQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0aWYgKHVpNUV2ZW50LmdldFNvdXJjZSgpLmdldE1ldGFkYXRhKCkuaXNBKFwic2FwLm0uTWVudUl0ZW1cIikpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdGF3YWl0IHRoaXMuX29uQ29sbGFwc2VFeHBhbmROb2RlKHVpNUV2ZW50LCBleHBhbmQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEludGVybmFsIG1ldGhvZCB0byBtb3ZlIGEgcm93IHVwIG9yIGRvd24gaW4gYSBUcmVlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdWk1RXZlbnRcblx0ICogQHBhcmFtIG1vdmVVcCBUcnVlIGZvciBtb3ZlIHVwLCBmYWxzZSBmb3IgbW92ZSBkb3duXG5cdCAqIEBwYXJhbSBmb3JDb250ZXh0TWVudVxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uTW92ZVVwRG93bih1aTVFdmVudDogVUk1RXZlbnQsIG1vdmVVcDogYm9vbGVhbiwgZm9yQ29udGV4dE1lbnUgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRpZiAoZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdGF3YWl0IHRoaXMuX29uTW92ZVVwRG93bih1aTVFdmVudCwgbW92ZVVwLCBmb3JDb250ZXh0TWVudSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzZWxlY3Rpb24gdmFyaWFudCBmcm9tIHRoZSB0YWJsZS4gVGhpcyBmdW5jdGlvbiBjb25zaWRlcnMgb25seSB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgYXBwbGllZCBhdCB0aGUgY29udHJvbCBsZXZlbC5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdpdGgge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnR9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGdldFNlbGVjdGlvblZhcmlhbnQoKTogUHJvbWlzZTxTZWxlY3Rpb25WYXJpYW50PiB7XG5cdFx0cmV0dXJuIFN0YXRlSGVscGVyLmdldFNlbGVjdGlvblZhcmlhbnQodGhpcy5nZXRDb250ZW50KCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnR9IHRvIHRoZSB0YWJsZS4gTm90ZTogc2V0U2VsZWN0aW9uVmFyaWFudCB3aWxsIGNsZWFyIGV4aXN0aW5nIGZpbHRlcnMgYW5kIHRoZW4gYXBwbHkgdGhlIFNlbGVjdGlvblZhcmlhbnQgdmFsdWVzLlxuXHQgKiBAcGFyYW0gc2VsZWN0aW9uVmFyaWFudCBUaGUge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnR9IHRvIGFwcGx5IHRvIHRoZSB0YWJsZVxuXHQgKiBAcGFyYW0gcHJlZmlsbERlc2NyaXB0aW9ucyBPcHRpb25hbC4gSWYgdHJ1ZSwgd2Ugd2lsbCB1c2UgdGhlIGFzc29jaWF0ZWQgdGV4dCBwcm9wZXJ0eSB2YWx1ZXMgKGlmIHRoZXkncmUgYXZhaWxhYmxlIGluIHRoZSBTZWxlY3Rpb25WYXJpYW50KSB0byBkaXNwbGF5IHRoZSBmaWx0ZXIgdmFsdWUgZGVzY3JpcHRpb25zLCBpbnN0ZWFkIG9mIGxvYWRpbmcgdGhlbSBmcm9tIHRoZSBiYWNrZW5kXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSBmb3IgYXN5bmNocm9ub3VzIGhhbmRsaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHNldFNlbGVjdGlvblZhcmlhbnQoc2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudCwgcHJlZmlsbERlc2NyaXB0aW9ucyA9IGZhbHNlKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0cmV0dXJuIFN0YXRlSGVscGVyLnNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2wodGhpcy5nZXRDb250ZW50KCksIHNlbGVjdGlvblZhcmlhbnQsIHByZWZpbGxEZXNjcmlwdGlvbnMpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBfY3JlYXRlQ29udGVudFYyTW9kZSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0Y29uc3QgcHJlcHJvY2Vzc29yQ29udGV4dCA9IG93bmVyPy5wcmVwcm9jZXNzb3JDb250ZXh0O1xuXHRcdGlmIChvd25lciAmJiBwcmVwcm9jZXNzb3JDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBvd25lci5nZXRBcHBDb21wb25lbnQoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMubWV0YVBhdGgpITtcblx0XHRcdGNvbnN0IGNvbnRleHRQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMuY29udGV4dFBhdGgpITtcblxuXHRcdFx0dGhpcy50YWJsZURlZmluaXRpb24gPSBkZWVwQ2xvbmUodGhpcy5vcmlnaW5hbFRhYmxlRGVmaW5pdGlvbik7XG5cdFx0XHR0aGlzLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KHRoaXMuaWdub3JlZEZpZWxkcywgdGhpcy50YWJsZURlZmluaXRpb24pO1xuXHRcdFx0dGhpcy5wcm9wZXJ0eUluZm9zID0gW107IC8vIEFzIHdlIGhhdmUgYSBuZXcgdGFibGUgZGVmaW5pdGlvbiwgd2UgY2xlYW4gdGhlIGNhY2hlZCBwcm9wZXJ0eUluZm9zIHRvIHJlY3JlYXRlIHRoZW1cblxuXHRcdFx0Y29uc3QgY29udmVydGVkTWV0YWRhdGEgPSBjb252ZXJ0VHlwZXMobWV0YU1vZGVsKTtcblx0XHRcdGNvbnN0IGNvbGxlY3Rpb25FbnRpdHkgPSBjb252ZXJ0ZWRNZXRhZGF0YS5yZXNvbHZlUGF0aCh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pLnRhcmdldCBhc1xuXHRcdFx0XHR8IEVudGl0eVNldFxuXHRcdFx0XHR8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHRcdHRoaXMuY29udGV4dE9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdG1ldGFQYXRoLFxuXHRcdFx0XHRjb250ZXh0UGF0aFxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IGhhbmRsZXJQcm92aWRlciA9IG5ldyBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyKHRoaXMsIHsgY29sbGVjdGlvbkVudGl0eSwgbWV0YU1vZGVsIH0pO1xuXG5cdFx0XHRjb25zdCBmcmFnbWVudCA9IGF3YWl0IFhNTFByZXByb2Nlc3Nvci5wcm9jZXNzKFxuXHRcdFx0XHRwYXJzZVhNTFN0cmluZyhcblx0XHRcdFx0XHR4bWxgPHJvb3Rcblx0XHRcdHhtbG5zPVwic2FwLm1cIlxuXHRcdFx0eG1sbnM6bWRjPVwic2FwLnVpLm1kY1wiXG5cdFx0XHR4bWxuczpwbHVnaW5zPVwic2FwLm0ucGx1Z2luc1wiXG5cdFx0XHR4bWxuczptZGNUYWJsZT1cInNhcC51aS5tZGMudGFibGVcIlxuXHRcdFx0eG1sbnM6bWFjcm9UYWJsZT1cInNhcC5mZS5tYWNyb3MudGFibGVcIlxuXHRcdFx0eG1sbnM6bWRjYXQ9XCJzYXAudWkubWRjLmFjdGlvbnRvb2xiYXJcIlxuXHRcdFx0eG1sbnM6Y29yZT1cInNhcC51aS5jb3JlXCJcblx0XHRcdHhtbG5zOmNvbnRyb2w9XCJzYXAuZmUuY29yZS5jb250cm9sc1wiXG5cdFx0XHR4bWxuczpkdD1cInNhcC51aS5kdFwiXG5cdFx0XHR4bWxuczpmbD1cInNhcC51aS5mbFwiXG5cdFx0XHR4bWxuczp2YXJpYW50PVwic2FwLnVpLmZsLnZhcmlhbnRzXCJcblx0XHRcdHhtbG5zOnAxM249XCJzYXAudWkubWRjLnAxM25cIlxuXHRcdFx0eG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIj4ke2pzeC5yZW5kZXJBc1hNTCgoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBNZGNUYWJsZVRlbXBsYXRlLmdldE1EQ1RhYmxlVGVtcGxhdGUodGhpcywge1xuXHRcdFx0XHRcdGNvbnZlcnRlZE1ldGFkYXRhOiBwcmVwcm9jZXNzb3JDb250ZXh0LmdldENvbnZlcnRlZE1ldGFkYXRhKCksXG5cdFx0XHRcdFx0bWV0YU1vZGVsLFxuXHRcdFx0XHRcdGhhbmRsZXJQcm92aWRlcixcblx0XHRcdFx0XHRhcHBDb21wb25lbnQ6IG93bmVyLmdldEFwcENvbXBvbmVudCgpLFxuXHRcdFx0XHRcdG1ldGFQYXRoXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSl9PC9yb290PmAsXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpWzBdLFxuXHRcdFx0XHR7IG1vZGVsczoge30gfSxcblx0XHRcdFx0cHJlcHJvY2Vzc29yQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGlmIChmcmFnbWVudC5maXJzdEVsZW1lbnRDaGlsZCkge1xuXHRcdFx0XHQvLyBSZW1vdmUgdGhlIG9sZCBNREMgdGFibGUgZnJvbSB0aGUgbGlzdCBvZiBGaWx0ZXJCYXIgbGlzdGVuZXJzXG5cdFx0XHRcdHRoaXMuZGV0YWNoRmlsdGVyQmFyKCk7XG5cblx0XHRcdFx0dGhpcy5jb250ZW50Py5kZXN0cm95KCk7XG5cdFx0XHRcdGNvbnN0IGNvbnRlbnQgPSAoYXdhaXQgRnJhZ21lbnQubG9hZCh7XG5cdFx0XHRcdFx0ZGVmaW5pdGlvbjogZnJhZ21lbnQuZmlyc3RFbGVtZW50Q2hpbGQsXG5cdFx0XHRcdFx0Y29udHJvbGxlcjogb3duZXIuZ2V0Um9vdENvbnRyb2xsZXIoKSxcblx0XHRcdFx0XHRjb250YWluaW5nVmlldzogb3duZXIuZ2V0Um9vdENvbnRyb2woKVxuXHRcdFx0XHR9KSkgYXMgVGFibGU7XG5cdFx0XHRcdHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XG5cblx0XHRcdFx0dGhpcy51cGRhdGVGaWx0ZXJCYXIoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRzZXRQcm9wZXJ0eShwcm9wZXJ0eUtleTogc3RyaW5nLCBwcm9wZXJ0eVZhbHVlOiB1bmtub3duLCBiU3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiBwcm9wZXJ0eVZhbHVlICE9PSB1bmRlZmluZWQgJiYgW1wiaWdub3JlZEZpZWxkc1wiLCBcIm1ldGFQYXRoXCJdLmluY2x1ZGVzKHByb3BlcnR5S2V5KSkge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkocHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWUsIHRydWUpO1xuXHRcdFx0dGhpcy5fY3JlYXRlQ29udGVudFYyTW9kZSgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5zZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZSwgYlN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZGF0YSBtb2RlbCBhbmQgY29udmVydGVkIHRhcmdldCBvYmplY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHByb3BlcnR5IG5hbWUuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LlxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIGRhdGEgbW9kZWwgcGF0aCBhbmQgY29udmVydGVkIHRhcmdldCBvYmplY3QuXG5cdCAqL1xuXG5cdGdldERhdGFNb2RlbEFuZENvbnZlcnRlZFRhcmdldE9iamVjdChwcm9wZXJ0eU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IERhdGFNb2RlbENvbnZlcnNpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdGFibGUuZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCk7XG5cdFx0aWYgKCFtZXRhTW9kZWwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgZW50aXR5UGF0aCA9IHRhYmxlLmRhdGEoXCJtZXRhUGF0aFwiKTtcblx0XHRjb25zdCB0YXJnZXRNZXRhUGF0aCA9IHRoaXMuZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpLmZpbmQoKHByb3BlcnR5SW5mbykgPT4gcHJvcGVydHlJbmZvLm5hbWUgPT09IHByb3BlcnR5TmFtZSlcblx0XHRcdD8uYW5ub3RhdGlvblBhdGg7XG5cdFx0Y29uc3QgdGFyZ2V0T2JqZWN0ID0gbWV0YU1vZGVsLmdldENvbnRleHQodGFyZ2V0TWV0YVBhdGghKTtcblx0XHRjb25zdCBlbnRpdHlTZXQgPSBtZXRhTW9kZWwuZ2V0Q29udGV4dChlbnRpdHlQYXRoKTtcblx0XHRjb25zdCBjb252ZXJ0ZWR0YXJnZXRPYmplY3QgPSBNZXRhTW9kZWxDb252ZXJ0ZXIuY29udmVydE1ldGFNb2RlbENvbnRleHQodGFyZ2V0T2JqZWN0KSBhc1xuXHRcdFx0fCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzXG5cdFx0XHR8IERhdGFQb2ludFR5cGVUeXBlcztcblx0XHRsZXQgZGF0YU1vZGVsUGF0aCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcyB8IFByb3BlcnR5Pihcblx0XHRcdHRhcmdldE9iamVjdCxcblx0XHRcdGVudGl0eVNldFxuXHRcdCk7XG5cdFx0ZGF0YU1vZGVsUGF0aCA9XG5cdFx0XHRGaWVsZFRlbXBsYXRpbmcuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclZhbHVlKFxuXHRcdFx0XHRkYXRhTW9kZWxQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcz5cblx0XHRcdCkgfHwgZGF0YU1vZGVsUGF0aDtcblx0XHRyZXR1cm4geyBkYXRhTW9kZWxQYXRoOiBkYXRhTW9kZWxQYXRoLCBjb252ZXJ0ZWR0YXJnZXRPYmplY3Q6IGNvbnZlcnRlZHRhcmdldE9iamVjdCB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgYmluZGluZyBjb250ZXh0IGZvciB0aGUgZ2l2ZW4gTW9kZUFzRXhwcmVzc2lvbi5cblx0ICogQHBhcmFtIE1vZGVBc0V4cHJlc3Npb25cblx0ICogQHBhcmFtIHJvd0NvbnRleHRcblx0ICogQHJldHVybnNcblx0ICovXG5cblx0Y3JlYXRlQW55Q29udHJvbChNb2RlQXNFeHByZXNzaW9uOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgcm93Q29udGV4dDogQ29udGV4dCB8IHVuZGVmaW5lZCk6IHR5cGVvZiBBbnkge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0Y29uc3QgYW55T2JqZWN0ID0gbmV3IEFueSh7IGFueTogTW9kZUFzRXhwcmVzc2lvbiB9KTtcblx0XHRhbnlPYmplY3Quc2V0TW9kZWwocm93Q29udGV4dD8uZ2V0TW9kZWwoKSk7XG5cdFx0YW55T2JqZWN0LnNldE1vZGVsKHRhYmxlLmdldE1vZGVsKFwidWlcIiksIFwidWlcIik7XG5cdFx0cmV0dXJuIGFueU9iamVjdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGVkaXQgbW9kZSBvZiBhIFByb3BlcnR5LlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0gcm93Q29udGV4dCBUaGUgY29udGV4dCBvZiB0aGUgcm93IGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5XG5cdCAqIEByZXR1cm5zIFRoZSBlZGl0IG1vZGUgb2YgdGhlIGZpZWxkXG5cdCAqL1xuXG5cdGdldFByb3BlcnR5RWRpdE1vZGUocHJvcGVydHlOYW1lOiBzdHJpbmcsIHJvd0NvbnRleHQ6IENvbnRleHQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGxldCBhbnlPYmplY3Q6IHR5cGVvZiBBbnkgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKCF0aGlzLnByb3BlcnR5RWRpdE1vZGVDYWNoZVtwcm9wZXJ0eU5hbWVdKSB7XG5cdFx0XHRjb25zdCBkYXRhTW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxBbmRDb252ZXJ0ZWRUYXJnZXRPYmplY3QocHJvcGVydHlOYW1lKT8uZGF0YU1vZGVsUGF0aDtcblx0XHRcdGNvbnN0IGNvbnZlcnRlZHRhcmdldE9iamVjdCA9IHRoaXMuZ2V0RGF0YU1vZGVsQW5kQ29udmVydGVkVGFyZ2V0T2JqZWN0KHByb3BlcnR5TmFtZSk/LmNvbnZlcnRlZHRhcmdldE9iamVjdDtcblx0XHRcdGlmIChkYXRhTW9kZWxQYXRoICYmIGNvbnZlcnRlZHRhcmdldE9iamVjdCkge1xuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eUZvckZpZWxkQ29udHJvbCA9IChkYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3QgYXMgdW5rbm93biBhcyBEYXRhRmllbGRUeXBlcyk/LlZhbHVlXG5cdFx0XHRcdFx0PyAoZGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0IGFzIHVua25vd24gYXMgRGF0YUZpZWxkVHlwZXMpLlZhbHVlXG5cdFx0XHRcdFx0OiBkYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3Q7XG5cdFx0XHRcdGNvbnN0IGVkaXRNb2RlQXNFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0VUlGb3JtYXR0ZXJzLmdldEVkaXRNb2RlKHByb3BlcnR5Rm9yRmllbGRDb250cm9sLCBkYXRhTW9kZWxQYXRoLCBmYWxzZSwgdHJ1ZSwgY29udmVydGVkdGFyZ2V0T2JqZWN0KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRhbnlPYmplY3QgPSB0aGlzLmNyZWF0ZUFueUNvbnRyb2woZWRpdE1vZGVBc0V4cHJlc3Npb24sIHJvd0NvbnRleHQpO1xuXHRcdFx0XHR0aGlzLnByb3BlcnR5RWRpdE1vZGVDYWNoZVtwcm9wZXJ0eU5hbWVdID0gYW55T2JqZWN0O1xuXHRcdFx0XHRhbnlPYmplY3Quc2V0QmluZGluZ0NvbnRleHQobnVsbCk7IC8vIHdlIG5lZWQgdG8gc2V0IHRoZSBiaW5kaW5nIGNvbnRleHQgdG8gbnVsbCBvdGhlcndpc2UgdGhlIGZvbGxvd2luZyBhZGREZXBlbmRlbnQgd2lsbCBzZXQgaXQgdG8gdGhlIGNvbnRleHQgb2YgdGhlIHRhYmxlXG5cdFx0XHRcdHRoaXMuYWRkRGVwZW5kZW50KGFueU9iamVjdCk7IC8vIHRvIGRlc3Ryb3kgaXQgd2hlbiB0aGUgdGFibGVBUEkgaXMgZGVzdHJveWVkXG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFueU9iamVjdCA9IHRoaXMucHJvcGVydHlFZGl0TW9kZUNhY2hlW3Byb3BlcnR5TmFtZV07XG5cdFx0fVxuXHRcdGFueU9iamVjdD8uc2V0QmluZGluZ0NvbnRleHQocm93Q29udGV4dCk7XG5cdFx0Y29uc3QgZWRpdE1vZGUgPSBhbnlPYmplY3Q/LmdldEFueSgpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRhbnlPYmplY3Q/LnNldEJpbmRpbmdDb250ZXh0KG51bGwpO1xuXHRcdHJldHVybiBlZGl0TW9kZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTaG93IHRoZSBjb2x1bW5zIHdpdGggdGhlIGdpdmVuIGNvbHVtbiBrZXlzIGJ5IHNldHRpbmcgdGhlaXIgYXZhaWxhYmlsaXR5IHRvIERlZmF1bHQuXG5cdCAqIEBwYXJhbSBjb2x1bW5LZXlzIFRoZSBrZXlzIGZvciB0aGUgY29sdW1ucyB0byBzaG93XG5cdCAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cblx0ICogQHB1YmxpY1xuXHQgKiBAdWk1LWV4cGVyaW1lbnRhbC1zaW5jZSAxLjEyNC4wXG5cdCAqIEBzaW5jZSAxLjEyNC4wXG5cdCAqL1xuXHRhc3luYyBzaG93Q29sdW1ucyhjb2x1bW5LZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGZvciAoY29uc3QgY29sdW1uS2V5IG9mIGNvbHVtbktleXMpIHtcblx0XHRcdHRoaXMubW9kaWZ5RHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW4oY29sdW1uS2V5LCB0cnVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZUNvbnRlbnRWMk1vZGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIaWRlIHRoZSBjb2x1bW5zIHdpdGggdGhlIGdpdmVuIGNvbHVtbiBrZXlzIGJ5IHNldHRpbmcgdGhlaXIgYXZhaWxhYmlsaXR5IHRvIERlZmF1bHQuXG5cdCAqIEBwYXJhbSBjb2x1bW5LZXlzIFRoZSBrZXlzIGZvciB0aGUgY29sdW1ucyB0byBoaWRlXG5cdCAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cblx0ICogQHB1YmxpY1xuXHQgKiBAdWk1LWV4cGVyaW1lbnRhbC1zaW5jZSAxLjEyNC4wXG5cdCAqIEBzaW5jZSAxLjEyNC4wXG5cdCAqL1xuXHRhc3luYyBoaWRlQ29sdW1ucyhjb2x1bW5LZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGZvciAoY29uc3QgY29sdW1uS2V5IG9mIGNvbHVtbktleXMpIHtcblx0XHRcdHRoaXMubW9kaWZ5RHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW4oY29sdW1uS2V5LCBmYWxzZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9jcmVhdGVDb250ZW50VjJNb2RlKCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgZmllbGRzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIGlnbm9yZWRGaWVsZHMgVGhlIGZpZWxkcyB0byBpZ25vcmVcblx0ICogQHJldHVybnMgUmVmZXJlbmNlIHRvIHRoaXMgaW4gb3JkZXIgdG8gYWxsb3cgbWV0aG9kIGNoYWluaW5nXG5cdCAqIEB1aTUtZXhwZXJpbWVudGFsLXNpbmNlIDEuMTI0LjBcblx0ICogQHNpbmNlIDEuMTI0LjBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2V0SWdub3JlZEZpZWxkcyhpZ25vcmVkRmllbGRzOiBzdHJpbmcpOiB0aGlzIHtcblx0XHRyZXR1cm4gdGhpcy5zZXRQcm9wZXJ0eShcImlnbm9yZWRGaWVsZHNcIiwgaWdub3JlZEZpZWxkcyk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBmaWVsZHMgdGhhdCBzaG91bGQgYmUgaWdub3JlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIGlnbm9yZWRGaWVsZHMgcHJvcGVydHlcblx0ICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xMjQuMFxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRJZ25vcmVkRmllbGRzKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0UHJvcGVydHkoXCJpZ25vcmVkRmllbGRzXCIpID8/IHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaWdub3JlZEZpZWxkcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRyb2wgc3RhdGUgYmFzZWQgb24gdGhlIGdpdmVuIGNvbnRyb2wgc3RhdGUga2V5LlxuXHQgKiBAcGFyYW0gY29udHJvbFN0YXRlIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcmV0dXJucyAtIFRoZSBmdWxsIHN0YXRlIG9mIHRoZSBjb250cm9sIGFsb25nIHdpdGggdGhlIGluaXRpYWwgc3RhdGUgaWYgYXZhaWxhYmxlLlxuXHQgKi9cblx0Z2V0Q29udHJvbFN0YXRlKGNvbnRyb2xTdGF0ZTogQ29udHJvbFN0YXRlKTogQ29udHJvbFN0YXRlIHtcblx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHRoaXMuaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHRpZiAoY29udHJvbFN0YXRlKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRmdWxsU3RhdGU6IGNvbnRyb2xTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdGluaXRpYWxTdGF0ZTogaW5pdGlhbENvbnRyb2xTdGF0ZSBhcyBvYmplY3Rcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiBjb250cm9sU3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUga2V5IHRvIGJlIHVzZWQgZm9yIGdpdmVuIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBvQ29udHJvbCBUaGUgY29udHJvbCB0byBnZXQgc3RhdGUga2V5IGZvclxuXHQgKiBAcmV0dXJucyBUaGUga2V5IHRvIGJlIHVzZWQgZm9yIHN0b3JpbmcgdGhlIGNvbnRyb2xzIHN0YXRlXG5cdCAqL1xuXHRnZXRTdGF0ZUtleShvQ29udHJvbDogTWFuYWdlZE9iamVjdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcy5jb250ZW50KT8uZ2V0TG9jYWxJZChvQ29udHJvbC5nZXRJZCgpKSB8fCBvQ29udHJvbC5nZXRJZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIHRhYmxlIGRlZmluaXRpb24gd2l0aCBpZ25vcmVkRmllbGRzIGFuZCBkeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbnMuXG5cdCAqIEBwYXJhbSBpZ25vcmVkRmllbGRzXG5cdCAqIEBwYXJhbSBkeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbnNcblx0ICogQHBhcmFtIHRhYmxlRGVmaW5pdGlvblxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cGRhdGVDb2x1bW5zVmlzaWJpbGl0eShcblx0XHRpZ25vcmVkRmllbGRzOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0ZHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5zOiBEeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbltdLFxuXHRcdHRhYmxlRGVmaW5pdGlvbjogVGFibGVWaXN1YWxpemF0aW9uXG5cdCk6IHZvaWQge1xuXHRcdENvbHVtbk1hbmFnZW1lbnQudXBkYXRlQ29sdW1uc1Zpc2liaWxpdHlTdGF0aWMoaWdub3JlZEZpZWxkcywgZHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5zLCB0YWJsZURlZmluaXRpb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIE1EQyB0YWJsZS5cblx0ICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSBmb3J3YXJkaW5nIGFnZ3JlZ2F0aW9uIHRvIGdldCB0aGUgdGFyZ2V0IG9mIHRoZSBhZ2dyZWdhdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMgVGhlIG1kYyB0YWJsZVxuXHQgKi9cblx0Z2V0TURDVGFibGUoKTogTURDVGFibGUge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGVkIGJ5IHRoZSBNREMgc3RhdGUgdXRpbCB3aGVuIHRoZSBzdGF0ZSBmb3IgdGhpcyBjb250cm9sJ3MgY2hpbGQgaGFzIGNoYW5nZWQuXG5cdCAqL1xuXHRoYW5kbGVTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbHMgdGhlIGFzeW5jQ2FsbCBmdW5jdGlvbiBvbmx5IGlmIHRoZSBsb2NrTmFtZSBpcyBub3QgYWxyZWFkeSBsb2NrZWQuXG5cdCAqIEBwYXJhbSBhc3luY0NhbGxcblx0ICogQHBhcmFtIGxvY2tOYW1lXG5cdCAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cblx0ICovXG5cdGFzeW5jIGF2b2lkUGFyYWxsZWxDYWxscyhhc3luY0NhbGw6IEZ1bmN0aW9uLCBsb2NrTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKHRoaXMubG9ja1tsb2NrTmFtZV0pIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5sb2NrW2xvY2tOYW1lXSA9IHRydWU7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IGFzeW5jQ2FsbCgpO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0dGhpcy5sb2NrW2xvY2tOYW1lXSA9IGZhbHNlO1xuXHRcdH1cblx0XHR0aGlzLmxvY2tbbG9ja05hbWVdID0gZmFsc2U7XG5cdH1cblxuXHRkZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHQvLyBXZSByZWxlYXNlIGhvbGQgb24gbWVzc2FnZUhhbmRsZXIgYnkgdGhlIGNvbnRyb2wgaWYgdGhlcmUgaXMgb25lLlxuXHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8ubWVzc2FnZUhhbmRsZXI/LnJlbGVhc2VIb2xkQnlDb250cm9sKHRoaXMpO1xuXHRcdHN1cGVyLmRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdHByaXZhdGUgZnVsbFNjcmVlbkRpYWxvZz86IERpYWxvZzsgLy8gVGhlIGRpYWxvZyB1c2VkIHRvIGRpc3BsYXkgdGhlIHRhYmxlIGluIGZ1bGwgc2NyZWVuIG1vZGVcblxuXHRzZXRGdWxsU2NyZWVuRGlhbG9nKGRpYWxvZzogRGlhbG9nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0dGhpcy5mdWxsU2NyZWVuRGlhbG9nID0gZGlhbG9nO1xuXHR9XG5cblx0cHJpdmF0ZSBlbmhhbmNlZFByb3BlcnR5SW5mb3M6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9bXSA9IFtdO1xuXG5cdHByaXZhdGUgcHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10gPSBbXTtcblxuXHQvKipcblx0ICogU2V0cyB0aGUgZmV0Y2hlZCBwcm9wZXJ0eUluZm9zIGZyb20gdGhlIHRhYmxlIGRlbGVnYXRlIGNvbnRhaW5pbmcgaW50ZXJuYWwgcHJvcGVydGllcy5cblx0ICogQHBhcmFtIGVuaGFuY2VkUHJvcGVydHlJbmZvc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyhlbmhhbmNlZFByb3BlcnR5SW5mb3M6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9bXSk6IHZvaWQge1xuXHRcdHRoaXMuZW5oYW5jZWRQcm9wZXJ0eUluZm9zID0gZW5oYW5jZWRQcm9wZXJ0eUluZm9zO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZldGNoZWQgcHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZSBjb250YWluaW5nIGludGVybmFsIHByb3BlcnRpZXMuXG5cdCAqIEByZXR1cm5zIFRoZSBQcm9wZXJ0eUluZm8gZW5oYW5jZWQgd2l0aCB0aGUgUHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpOiBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW10ge1xuXHRcdHJldHVybiB0aGlzLmVuaGFuY2VkUHJvcGVydHlJbmZvcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBNREMgZXhwZWN0ZWQgcHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZSBjb250YWluaW5nIGludGVybmFsIGFkZGl0aW9uYWwgcHJvcGVydGllcy5cblx0ICogQHJldHVybnMgVGhlIFByb3BlcnR5SW5mb1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0UHJvcGVydHlJbmZvcygpOiBQcm9wZXJ0eUluZm9bXSB7XG5cdFx0Y29uc3QgcHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10gPSBbXTtcblx0XHRmb3IgKGNvbnN0IGVuaGFuY2VkUHJvcGVydHlJbmZvIG9mIHRoaXMuZW5oYW5jZWRQcm9wZXJ0eUluZm9zIGFzIFByb3BlcnR5SW5mb1tdKSB7XG5cdFx0XHRsZXQgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8gPSB7XG5cdFx0XHRcdGtleTogZW5oYW5jZWRQcm9wZXJ0eUluZm8ua2V5LFxuXHRcdFx0XHRsYWJlbDogZW5oYW5jZWRQcm9wZXJ0eUluZm8ubGFiZWwsXG5cdFx0XHRcdHZpc2libGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnZpc2libGUsXG5cdFx0XHRcdGV4cG9ydFNldHRpbmdzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0Y2xpcGJvYXJkU2V0dGluZ3M6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNsaXBib2FyZFNldHRpbmdzLFxuXHRcdFx0XHR2aXN1YWxTZXR0aW5nczogZW5oYW5jZWRQcm9wZXJ0eUluZm8udmlzdWFsU2V0dGluZ3MsXG5cdFx0XHRcdHRvb2x0aXA6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnRvb2x0aXAsXG5cdFx0XHRcdGlzS2V5OiBlbmhhbmNlZFByb3BlcnR5SW5mby5pc0tleVxuXHRcdFx0fTtcblxuXHRcdFx0aWYgKGVuaGFuY2VkUHJvcGVydHlJbmZvLnByb3BlcnR5SW5mb3MpIHtcblx0XHRcdFx0cHJvcGVydHlJbmZvID0ge1xuXHRcdFx0XHRcdC4uLnByb3BlcnR5SW5mbyxcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9zOiBlbmhhbmNlZFByb3BlcnR5SW5mby5wcm9wZXJ0eUluZm9zXG5cdFx0XHRcdH07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsZXQgZXh0ZW5zaW9uOiBQcm9wZXJ0eUluZm9bXCJleHRlbnNpb25cIl07XG5cdFx0XHRcdGlmIChlbmhhbmNlZFByb3BlcnR5SW5mby5leHRlbnNpb24pIHtcblx0XHRcdFx0XHRleHRlbnNpb24gPSB7XG5cdFx0XHRcdFx0XHR0ZWNobmljYWxseUdyb3VwYWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uLnRlY2huaWNhbGx5R3JvdXBhYmxlLFxuXHRcdFx0XHRcdFx0dGVjaG5pY2FsbHlBZ2dyZWdhdGFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmV4dGVuc2lvbi50ZWNobmljYWxseUFnZ3JlZ2F0YWJsZSxcblx0XHRcdFx0XHRcdGN1c3RvbUFnZ3JlZ2F0ZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uLmN1c3RvbUFnZ3JlZ2F0ZSxcblx0XHRcdFx0XHRcdGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5leHRlbnNpb24uYWRkaXRpb25hbFByb3BlcnRpZXNcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGV4dGVuc2lvbiA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhleHRlbnNpb24pLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHByb3BlcnR5SW5mbyA9IHtcblx0XHRcdFx0XHQuLi5wcm9wZXJ0eUluZm8sXG5cdFx0XHRcdFx0cGF0aDogZW5oYW5jZWRQcm9wZXJ0eUluZm8ucGF0aCxcblx0XHRcdFx0XHRtYXhDb25kaXRpb25zOiBlbmhhbmNlZFByb3BlcnR5SW5mby5tYXhDb25kaXRpb25zLFxuXHRcdFx0XHRcdGZvcm1hdE9wdGlvbnM6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRcdFx0Y29uc3RyYWludHM6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNvbnN0cmFpbnRzLFxuXHRcdFx0XHRcdGdyb3VwOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cCxcblx0XHRcdFx0XHRncm91cExhYmVsOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cExhYmVsLFxuXHRcdFx0XHRcdGNhc2VTZW5zaXRpdmU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNhc2VTZW5zaXRpdmUsXG5cdFx0XHRcdFx0ZmlsdGVyYWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZmlsdGVyYWJsZSxcblx0XHRcdFx0XHRzb3J0YWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uc29ydGFibGUsXG5cdFx0XHRcdFx0Z3JvdXBhYmxlOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cGFibGUsXG5cdFx0XHRcdFx0ZGF0YVR5cGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmRhdGFUeXBlLFxuXHRcdFx0XHRcdGFnZ3JlZ2F0YWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uYWdncmVnYXRhYmxlLFxuXHRcdFx0XHRcdHVuaXQ6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnVuaXQsXG5cdFx0XHRcdFx0dGV4dDogZW5oYW5jZWRQcm9wZXJ0eUluZm8udGV4dCxcblx0XHRcdFx0XHRleHRlbnNpb25cblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHByb3BlcnR5SW5mb3MucHVzaChcblx0XHRcdFx0T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHByb3BlcnR5SW5mbykuZmlsdGVyKChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSkgYXMgUHJvcGVydHlJbmZvXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gcHJvcGVydHlJbmZvcztcblx0fVxuXG5cdHNldENhY2hlZFByb3BlcnR5SW5mb3MocHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10pOiB2b2lkIHtcblx0XHR0aGlzLnByb3BlcnR5SW5mb3MgPSBwcm9wZXJ0eUluZm9zO1xuXHR9XG5cblx0Z2V0Q2FjaGVkUHJvcGVydHlJbmZvcygpOiBQcm9wZXJ0eUluZm9bXSB7XG5cdFx0cmV0dXJuIHRoaXMucHJvcGVydHlJbmZvcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwYXRoIGZvciB0aGUgdGFibGUgY29sbGVjdGlvbi5cblx0ICogQHJldHVybnMgVGhlIHBhdGhcblx0ICovXG5cdGdldFJvd0NvbGxlY3Rpb25QYXRoKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSE7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gY29udHJvbGxlci5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25Db250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbik7XG5cdFx0Y29uc3QgY29udGV4dFBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy5jb250ZXh0UGF0aCkhO1xuXHRcdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMoY29sbGVjdGlvbkNvbnRleHQhLCBjb250ZXh0UGF0aCk7XG5cdFx0cmV0dXJuIGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsUGF0aCkgfHwgZ2V0VGFyZ2V0T2JqZWN0UGF0aChkYXRhTW9kZWxQYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBiaW5kaW5nIGluZm8gdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBsaXN0IGJpbmRpbmcgZm9yIHRoZSBNREMgdGFibGUuXG5cdCAqIEByZXR1cm5zIFRoZSB0YWJsZSBiaW5kaW5nIGluZm9cblx0ICovXG5cdGdldFRhYmxlVGVtcGxhdGVCaW5kaW5nSW5mbygpOiBTZXJpYWxpemVkQ29sbGVjdGlvbkJpbmRpbmdJbmZvIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpITtcblx0XHRjb25zdCBwYXRoID0gdGhpcy5nZXRSb3dDb2xsZWN0aW9uUGF0aCgpO1xuXHRcdGNvbnN0IHJvd0JpbmRpbmdJbmZvOiBTZXJpYWxpemVkQ29sbGVjdGlvbkJpbmRpbmdJbmZvID0ge1xuXHRcdFx0c3VzcGVuZGVkOiBmYWxzZSxcblx0XHRcdHBhdGgsXG5cdFx0XHRwYXJhbWV0ZXJzOiB7XG5cdFx0XHRcdCRjb3VudDogdHJ1ZVxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRpZiAodGhpcy50YWJsZURlZmluaXRpb24uZW5hYmxlJHNlbGVjdCkge1xuXHRcdFx0Ly8gRG9uJ3QgYWRkICRzZWxlY3QgcGFyYW1ldGVyIGluIGNhc2Ugb2YgYW4gYW5hbHl0aWNhbCBxdWVyeSwgdGhpcyBpc24ndCBzdXBwb3J0ZWQgYnkgdGhlIG1vZGVsXG5cdFx0XHRjb25zdCBzZWxlY3QgPSBPYmplY3Qua2V5cyh0aGlzLnRhYmxlRGVmaW5pdGlvbi5yZXF1ZXN0QXRMZWFzdCkuam9pbihcIixcIik7XG5cdFx0XHRpZiAoc2VsZWN0KSB7XG5cdFx0XHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiRzZWxlY3QgPSBzZWxlY3Q7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMudGFibGVEZWZpbml0aW9uLmVuYWJsZSQkZ2V0S2VlcEFsaXZlQ29udGV4dCkge1xuXHRcdFx0Ly8gd2UgbGF0ZXIgZW5zdXJlIGluIHRoZSBkZWxlZ2F0ZSBvbmx5IG9uZSBsaXN0IGJpbmRpbmcgZm9yIGEgZ2l2ZW4gdGFyZ2V0Q29sbGVjdGlvblBhdGggaGFzIHRoZSBmbGFnICQkZ2V0S2VlcEFsaXZlQ29udGV4dFxuXHRcdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCRnZXRLZWVwQWxpdmVDb250ZXh0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBDbGVhcnMgdGhlIHNlbGVjdGlvbiBhZnRlciBhIHNlYXJjaC9maWx0ZXJcblx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kJGNsZWFyU2VsZWN0aW9uT25GaWx0ZXIgPSB0cnVlO1xuXG5cdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCRncm91cElkID0gXCIkYXV0by5Xb3JrZXJzXCI7XG5cdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCR1cGRhdGVHcm91cElkID0gXCIkYXV0b1wiO1xuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkb3duUmVxdWVzdCA9IHRydWU7XG5cdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCRwYXRjaFdpdGhvdXRTaWRlRWZmZWN0cyA9IHRydWU7XG5cblx0XHQvLyBFdmVudCBoYW5kbGVyc1xuXHRcdGNvbnN0IGVkaXRGbG93RXh0ZW5zaW9uID0gY29udHJvbGxlci5lZGl0Rmxvdztcblx0XHRjb25zdCBldmVudEhhbmRsZXJzOiBSZWNvcmQ8c3RyaW5nLCBGdW5jdGlvbj4gPSB7fTtcblx0XHRldmVudEhhbmRsZXJzLnBhdGNoQ29tcGxldGVkID0gdGhpcy5vbkludGVybmFsUGF0Y2hDb21wbGV0ZWQuYmluZCh0aGlzKTtcblx0XHRldmVudEhhbmRsZXJzLmRhdGFSZWNlaXZlZCA9IHRoaXMub25JbnRlcm5hbERhdGFSZWNlaXZlZC5iaW5kKHRoaXMpO1xuXHRcdGV2ZW50SGFuZGxlcnMuZGF0YVJlcXVlc3RlZCA9IHRoaXMub25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQuYmluZCh0aGlzKTtcblx0XHRldmVudEhhbmRsZXJzLmNoYW5nZSA9IHRoaXMub25MaXN0QmluZGluZ0NoYW5nZS5iaW5kKHRoaXMpO1xuXHRcdGV2ZW50SGFuZGxlcnMuY3JlYXRlQWN0aXZhdGUgPSB0aGlzLmhhbmRsZUNyZWF0ZUFjdGl2YXRlLmJpbmQodGhpcyk7XG5cdFx0ZXZlbnRIYW5kbGVycy5jcmVhdGVTZW50ID0gZWRpdEZsb3dFeHRlbnNpb24uaGFuZGxlQ3JlYXRlU2VudC5iaW5kKGVkaXRGbG93RXh0ZW5zaW9uKTtcblx0XHRldmVudEhhbmRsZXJzLnBhdGNoU2VudCA9IHRoaXMub25JbnRlcm5hbFBhdGNoU2VudC5iaW5kKHRoaXMpO1xuXG5cdFx0cm93QmluZGluZ0luZm8uZXZlbnRzID0gZXZlbnRIYW5kbGVycztcblxuXHRcdHJldHVybiByb3dCaW5kaW5nSW5mbztcblx0fVxuXG5cdHByb3RlY3RlZCBzdGF0aWMgYWRkU2V0dGluZyh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0W2tleV0gPSB2YWx1ZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIG1hbmlmZXN0LWZyaWVuZGx5IHNldHRpbmdzIGZyb20gdGFibGVBUEkgcHJvcGVydGllcy5cblx0ICogQHJldHVybnMgU2V0dGluZ3Ncblx0ICovXG5cdGdldFNldHRpbmdzRm9yTWFuaWZlc3QoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuXHRcdGNvbnN0IHRhYmxlU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZUV4cG9ydFwiLCB0aGlzLmVuYWJsZUV4cG9ydCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFJlcXVlc3RTaXplXCIsIHRoaXMuZXhwb3J0UmVxdWVzdFNpemUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRGaWxlTmFtZVwiLCB0aGlzLmV4cG9ydEZpbGVOYW1lKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZXhwb3J0U2hlZXROYW1lXCIsIHRoaXMuZXhwb3J0U2hlZXROYW1lKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZnJvemVuQ29sdW1uQ291bnRcIiwgdGhpcy5mcm96ZW5Db2x1bW5Db3VudCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb2x1bW5GcmVlemVcIiwgdGhpcy5kaXNhYmxlQ29sdW1uRnJlZXplKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJcIiwgdGhpcy53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcik7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50TW9kZVwiLCB0aGlzLnJvd0NvdW50TW9kZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50XCIsIHRoaXMucm93Q291bnQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVGdWxsU2NyZWVuXCIsIHRoaXMuZW5hYmxlRnVsbFNjcmVlbik7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RlXCIsIHRoaXMuZW5hYmxlUGFzdGUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJkaXNhYmxlQ29weVRvQ2xpcGJvYXJkXCIsIHRoaXMuZGlzYWJsZUNvcHlUb0NsaXBib2FyZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNjcm9sbFRocmVzaG9sZFwiLCB0aGlzLnNjcm9sbFRocmVzaG9sZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInRocmVzaG9sZFwiLCB0aGlzLnRocmVzaG9sZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInBvcGluTGF5b3V0XCIsIHRoaXMucG9waW5MYXlvdXQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25Nb2RlXCIsIHRoaXMuc2VsZWN0aW9uTW9kZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInR5cGVcIiwgdGhpcy50eXBlKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzXCIsIHRoaXMuZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0QWxsXCIsIHRoaXMuZW5hYmxlU2VsZWN0QWxsKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiaWdub3JlZEZpZWxkc1wiLCB0aGlzLmlnbm9yZWRGaWVsZHMpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25MaW1pdFwiLCB0aGlzLnNlbGVjdGlvbkxpbWl0KTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiY29uZGVuc2VkVGFibGVMYXlvdXRcIiwgdGhpcy5jb25kZW5zZWRUYWJsZUxheW91dCk7XG5cblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUpIHtcblx0XHRcdGNvbnN0IGNyZWF0aW9uTW9kZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm5hbWVcIiwgdGhpcy5jcmVhdGlvbk1vZGUubmFtZSk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJjcmVhdGlvbkZpZWxkc1wiLCB0aGlzLmNyZWF0aW9uTW9kZS5jcmVhdGlvbkZpZWxkcyk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJjcmVhdGVBdEVuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5jcmVhdGVBdEVuZCk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwib3V0Ym91bmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUub3V0Ym91bmQpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGNyZWF0aW9uTW9kZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0YWJsZVNldHRpbmdzW1wiY3JlYXRpb25Nb2RlXCJdID0gY3JlYXRpb25Nb2RlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLm1hc3NFZGl0KSB7XG5cdFx0XHRjb25zdCBlbmFibGVNYXNzRWRpdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiY3VzdG9tRnJhZ21lbnRcIiwgdGhpcy5tYXNzRWRpdC5jdXN0b21Db250ZW50KTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiZnJvbUlubGluZVwiLCB0cnVlKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwidmlzaWJsZUZpZWxkc1wiLCB0aGlzLm1hc3NFZGl0LnZpc2libGVGaWVsZHM/LmpvaW4oXCIsXCIpKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiaWdub3JlZEZpZWxkc1wiLCB0aGlzLm1hc3NFZGl0Lmlnbm9yZWRGaWVsZHM/LmpvaW4oXCIsXCIpKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwib3BlcmF0aW9uR3JvdXBpbmdNb2RlXCIsIHRoaXMubWFzc0VkaXQub3BlcmF0aW9uR3JvdXBpbmdNb2RlKTtcblx0XHRcdHRhYmxlU2V0dGluZ3NbXCJlbmFibGVNYXNzRWRpdFwiXSA9IGVuYWJsZU1hc3NFZGl0O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uPy5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24sIFwiYWdncmVnYXRpb25PbkxlYWZMZXZlbFwiLCB0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGFuYWx5dGljYWxDb25maWd1cmF0aW9uKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJhbmFseXRpY2FsQ29uZmlndXJhdGlvblwiXSA9IGFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbj8ucGF0aHM/Lmxlbmd0aCkge1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInF1aWNrVmFyaWFudFNlbGVjdGlvblwiLCB7XG5cdFx0XHRcdHBhdGhzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5wYXRocy5tYXAoKHBhdGgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4geyBhbm5vdGF0aW9uUGF0aDogcGF0aCB9O1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0c2hvd0NvdW50czogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24uc2hvd0NvdW50c1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRhYmxlU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogRmluZCBhbiBhY3Rpb24gZnJvbSBpdHMga2V5LlxuXHQgKiBAcGFyYW0ga2V5XG5cdCAqIEByZXR1cm5zIFRoZSBhY3Rpb24gaWYgaXQgY2FuIGJlIGZvdW5kIChvciB1bmRlZmluZWQpXG5cdCAqL1xuXHRmaW5kU2xvdEFjdGlvbkZyb21LZXkoa2V5OiBzdHJpbmcpOiBBY3Rpb24gfCB1bmRlZmluZWQge1xuXHRcdGxldCByZXN1bHQ6IEFjdGlvbiB8IHVuZGVmaW5lZDtcblxuXHRcdGZvciAoY29uc3QgYWN0aW9uIG9mIHRoaXMuYWN0aW9ucyA/PyBbXSkge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRhY3Rpb24uaXNBPEFjdGlvbkdyb3VwPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIikgfHxcblx0XHRcdFx0YWN0aW9uLmlzQTxBY3Rpb25Hcm91cE92ZXJyaWRlPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBPdmVycmlkZVwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJlc3VsdCA/Pz0gYWN0aW9uLmFjdGlvbnMuZmluZCgoYSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBhLmlzQTxBY3Rpb24+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIikgJiYgYS5rZXkgPT09IGtleTtcblx0XHRcdFx0fSkgYXMgQWN0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uaXNBPEFjdGlvbj4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiKSAmJiBhY3Rpb24ua2V5ID09PSBrZXkpIHtcblx0XHRcdFx0cmVzdWx0ID0gYWN0aW9uO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHR0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0fVxuXG5cdGdldEZ1bGxNZXRhUGF0aCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLm1ldGFQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5tZXRhUGF0aDtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGV4dFBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRyZXR1cm4gYCR7dGhpcy5jb250ZXh0UGF0aH0ke3RoaXMubWV0YVBhdGh9YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGAke3RoaXMuY29udGV4dFBhdGh9LyR7dGhpcy5tZXRhUGF0aH1gO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlQ29udGVudChmb3JjZUNyZWF0aW9uID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKCFvd25lcikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuY29udGV4dFBhdGggPz89IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpIGFzIHN0cmluZztcblx0XHRjb25zdCBmdWxsTWV0YVBhdGggPSB0aGlzLmdldEZ1bGxNZXRhUGF0aCgpO1xuXHRcdGlmICghdGhpcy5jb250ZW50IHx8IGZvcmNlQ3JlYXRpb24pIHtcblx0XHRcdHRoaXMuZGV0YWNoRmlsdGVyQmFyKCk7XG5cdFx0XHR0aGlzLmNvbnRlbnQ/LmRlc3Ryb3koKTtcblxuXHRcdFx0Y29uc3QgbWV0YU1vZGVsID0gb3duZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCBtZXRhUGF0aENvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoZnVsbE1ldGFQYXRoKSE7XG5cblx0XHRcdHRoaXMudGFibGVEZWZpbml0aW9uID0gY3JlYXRlVGFibGVEZWZpbml0aW9uKHRoaXMpO1xuXHRcdFx0Ly8gU2V0IERlZmF1bHQgdmFsdWVzIGZvciBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRhYmxlIGRlZmluaXRpb25cblx0XHRcdHRoaXMudGhyZXNob2xkID8/PSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLnRocmVzaG9sZCA/PyB0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnRocmVzaG9sZDtcblx0XHRcdHRoaXMudXBkYXRlUHJvcGVydGllc0Zyb21UYWJsZURlZmluaXRpb24oKTtcblxuXHRcdFx0Ly8gZGVmYXVsdCBjcmVhdGlvbiBtb2RlXG5cdFx0XHR0aGlzLmNyZWF0aW9uTW9kZSA/Pz0gbmV3IFRhYmxlQ3JlYXRpb25PcHRpb25zKHtcblx0XHRcdFx0bmFtZTogdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUubW9kZSBhcyBUYWJsZUNyZWF0aW9uT3B0aW9uc1tcIm5hbWVcIl0sXG5cdFx0XHRcdGNyZWF0ZUF0RW5kOiAodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUgYXMgQ3JlYXRlQmVoYXZpb3IpLmFwcGVuZFxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMudXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkodGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5pZ25vcmVkRmllbGRzLCB0aGlzLnRhYmxlRGVmaW5pdGlvbik7XG5cblx0XHRcdGNvbnN0IGNvbGxlY3Rpb25FbnRpdHkgPSB0aGlzLmNvbnRleHRPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzLnJlc29sdmVQYXRoKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbilcblx0XHRcdFx0LnRhcmdldCBhcyBFbnRpdHlTZXQgfCBOYXZpZ2F0aW9uUHJvcGVydHk7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gKGNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSA/PyAoY29sbGVjdGlvbkVudGl0eSBhcyBOYXZpZ2F0aW9uUHJvcGVydHkpPy50YXJnZXRUeXBlO1xuXHRcdFx0dGhpcy5lbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lID0gZW50aXR5VHlwZT8uZnVsbHlRdWFsaWZpZWROYW1lO1xuXG5cdFx0XHRjb25zdCBoYW5kbGVyUHJvdmlkZXIgPSBuZXcgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlcih0aGlzLCB7IG1ldGFNb2RlbCwgY29sbGVjdGlvbkVudGl0eSB9LCB0aGlzKTtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlTURDVGFibGUoe1xuXHRcdFx0XHRhcHBDb21wb25lbnQ6IG93bmVyLmdldEFwcENvbXBvbmVudCgpLFxuXHRcdFx0XHRtZXRhUGF0aDogbWV0YVBhdGhDb250ZXh0LFxuXHRcdFx0XHRjb252ZXJ0ZWRNZXRhZGF0YTogTWV0YU1vZGVsQ29udmVydGVyLmNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLFxuXHRcdFx0XHRoYW5kbGVyUHJvdmlkZXIsXG5cdFx0XHRcdG1ldGFNb2RlbFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHRoaXMudXBkYXRlRmlsdGVyQmFyKCk7XG5cdFx0dGhpcy5zZXR1cE9wdGltaXN0aWNCYXRjaCgpO1xuXHRcdHRoaXMuc2V0VXBOb0RhdGFJbmZvcm1hdGlvbigpO1xuXHRcdHRoaXMuZ2V0UXVpY2tGaWx0ZXIoKT8uc2V0TWV0YVBhdGgoZnVsbE1ldGFQYXRoKTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlTURDVGFibGUocGFyYW1ldGVyczogTWRjVGFibGVUZW1wbGF0ZS5UYWJsZVRlbXBsYXRpbmdQYXJhbWV0ZXJzKTogTURDVGFibGUge1xuXHRcdHJldHVybiBNZGNUYWJsZVRlbXBsYXRlLmdldE1EQ1RhYmxlVGVtcGxhdGUodGhpcywgcGFyYW1ldGVycyk7XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVByb3BlcnRpZXNGcm9tVGFibGVEZWZpbml0aW9uKCk6IHZvaWQge1xuXHRcdC8vIElEIGZvciB0aGUgaW50ZXJuYWwgTURDIHRhYmxlXG5cdFx0aWYgKE1hbmFnZWRPYmplY3RNZXRhZGF0YS5pc0dlbmVyYXRlZElkKHRoaXMuZ2V0SWQoKSkpIHtcblx0XHRcdHRoaXMuY29udGVudElkID8/PSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gYCR7dGhpcy5nZXRJZCgpfS1jb250ZW50YDtcblx0XHR9XG5cblx0XHQvLyBCYXNpYyBzZWFyY2ggZmllbGQgaWYgbm8gZmlsdGVyIGJhciBpcyBwcm92aWRlZFxuXHRcdGlmICh0aGlzLnVzZUJhc2ljU2VhcmNoID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIElmIG5vIGZpbHRlcmJhciBpcyBwcm92aWRlZCwgdXNlIHRoZSBiYXNpYyBzZWFyY2ggZmllbGRcblx0XHRcdGlmICghdGhpcy5maWx0ZXJCYXIpIHtcblx0XHRcdFx0dGhpcy5maWx0ZXJCYXIgPSBnZW5lcmF0ZShbdGhpcy5jb250ZW50SWQsIFwiU3RhbmRhcmRBY3Rpb25cIiwgXCJCYXNpY1NlYXJjaFwiXSk7XG5cdFx0XHRcdHRoaXMudXNlQmFzaWNTZWFyY2ggPSB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy51c2VCYXNpY1NlYXJjaCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlYWQtb25seSBtb2RlXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5yZWFkT25seSA9PT0gdW5kZWZpbmVkICYmXG5cdFx0XHQodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5kaXNwbGF5TW9kZSA9PT0gdHJ1ZSB8fCB0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnJlYWRPbmx5ID09PSB0cnVlKVxuXHRcdCkge1xuXHRcdFx0dGhpcy5yZWFkT25seSA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gRW5hYmxlIGVtcHR5IHJvd3Ncblx0XHRpZiAodGhpcy5lbXB0eVJvd3NFbmFibGVkID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZWQgPVxuXHRcdFx0XHR0aGlzLmNyZWF0aW9uTW9kZT8ubmFtZSA9PT0gQ3JlYXRpb25Nb2RlLklubGluZUNyZWF0aW9uUm93c1xuXHRcdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdGlmIChlbmFibGVkICE9PSB1bmRlZmluZWQgJiYgZW5hYmxlZCAhPT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJlbXB0eVJvd3NFbmFibGVkXCIsIGVuYWJsZWQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGdldE5vRGF0YU1lc3NhZ2VNb2RlKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbW9kZSA9IHRoaXMubW9kZUZvck5vRGF0YU1lc3NhZ2UgPz8gdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5tb2RlRm9yTm9EYXRhTWVzc2FnZSA/PyBcImlsbHVzdHJhdGVkTWVzc2FnZS1BdXRvXCI7XG5cdFx0cmV0dXJuIG1vZGUgPT09IFwidGV4dFwiID8gXCJ0ZXh0XCIgOiBtb2RlLnNwbGl0KFwiLVwiKVsxXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGNvdW50IG9mIHRoZSByb3cgYmluZGluZyBvZiB0aGUgdGFibGUuXG5cdCAqIEByZXR1cm5zIFRoZSBjb3VudCBvZiB0aGUgcm93IGJpbmRpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0Q291bnQoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb3dCaW5kaW5nKCk/LmdldENvdW50KCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGFibGVBUEk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE4TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBZEEsSUF5Qk1BLFFBQVEsSUFBQUMsSUFBQSxHQVRiQyxjQUFjLENBQUMsOEJBQThCLEVBQUU7SUFBRUMsV0FBVyxFQUFFLENBQUMsd0JBQXdCO0VBQUUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FDM0ZDLEtBQUssQ0FBQ0Msb0JBQW9CLENBQUMsRUFBQUMsS0FBQSxHQUMzQkYsS0FBSyxDQUFDRyxXQUFXLENBQUMsRUFBQUMsS0FBQSxHQUNsQkosS0FBSyxDQUFDSyxvQkFBb0IsQ0FBQyxFQUFBQyxLQUFBLEdBQzNCTixLQUFLLENBQUNPLGNBQWMsQ0FBQyxFQUFBQyxLQUFBLEdBQ3JCUixLQUFLLENBQUNTLGdCQUFnQixDQUFDLEVBQUFDLEtBQUEsR0FDdkJWLEtBQUssQ0FBQ1csa0JBQWtCLENBQUMsRUFBQUMsS0FBQSxHQUN6QlosS0FBSyxDQUFDYSxZQUFZLENBQUMsRUFBQUMsS0FBQSxHQUNuQmQsS0FBSyxDQUFDZSxnQkFBZ0IsQ0FBQyxFQUFBQyxNQUFBLEdBcUJ0QkMsa0JBQWtCLENBQUMsa0NBQWtDLENBQUMsRUFBQUMsTUFBQSxHQXVHdERELGtCQUFrQixDQUFDLDBEQUEwRCxDQUFDLEVBQUFFLE1BQUEsR0F1QjlFQyxRQUFRLENBQUM7SUFDVEMsSUFBSSxF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
2418
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUYWJsZUFQSSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJtaXhpbiIsIlRhYmxlQVBJU3RhdGVIYW5kbGVyIiwiX2RlYzMiLCJUYWJsZUV4cG9ydCIsIl9kZWM0IiwiVGFibGVPcHRpbWlzdGljQmF0Y2giLCJfZGVjNSIsIlRhYmxlSGllcmFyY2h5IiwiX2RlYzYiLCJFbXB0eVJvd3NIYW5kbGVyIiwiX2RlYzciLCJDb250ZXh0TWVudUhhbmRsZXIiLCJfZGVjOCIsIlRhYmxlU2hhcmluZyIsIl9kZWM5IiwiQ29sdW1uTWFuYWdlbWVudCIsIl9kZWMxMCIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMxMSIsIl9kZWMxMiIsInByb3BlcnR5IiwidHlwZSIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwicmVxdWlyZWQiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzI0IiwiX2RlYzI1IiwiX2RlYzI2IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiX2RlYzMyIiwiX2RlYzMzIiwiX2RlYzM0IiwiX2RlYzM1IiwiYWdncmVnYXRpb24iLCJhbHRUeXBlcyIsIm11bHRpcGxlIiwiX2RlYzM2IiwiX2RlYzM3IiwiX2RlYzM4IiwiX2RlYzM5IiwiX2RlYzQwIiwiZGVmYXVsdFZhbHVlIiwiX2RlYzQxIiwiX2RlYzQyIiwiX2RlYzQzIiwiX2RlYzQ0IiwiX2RlYzQ1IiwiX2RlYzQ2IiwiX2RlYzQ3IiwiX2RlYzQ4IiwiX2RlYzQ5IiwiX2RlYzUwIiwiX2RlYzUxIiwiVGl0bGVMZXZlbCIsIkF1dG8iLCJfZGVjNTIiLCJfZGVjNTMiLCJfZGVjNTQiLCJfZGVjNTUiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJpc0JpbmRpbmdJbmZvIiwiX2RlYzYwIiwiX2RlYzYxIiwiX2RlYzYyIiwiX2RlYzYzIiwiX2RlYzY0IiwiX2RlYzY1IiwiX2RlYzY2IiwiX2RlYzY3IiwiZGVmYXVsdENsYXNzIiwiVGFibGVDcmVhdGlvbk9wdGlvbnMiLCJfZGVjNjgiLCJmb3J3YXJkaW5nIiwiZ2V0dGVyIiwiX2RlYzY5IiwiX2RlYzcwIiwiX2RlYzcxIiwiX2RlYzcyIiwiZXZlbnQiLCJfZGVjNzMiLCJfZGVjNzQiLCJfZGVjNzUiLCJfZGVjNzYiLCJfZGVjNzciLCJfZGVjNzgiLCJfZGVjNzkiLCJfZGVjODAiLCJ4bWxFdmVudEhhbmRsZXIiLCJfZGVjODEiLCJfZGVjODIiLCJfZGVjODMiLCJfZGVjODQiLCJfZGVjODUiLCJfZGVjODYiLCJfZGVjODciLCJfZGVjODgiLCJfZGVjODkiLCJfZGVjOTAiLCJfZGVjOTEiLCJfZGVjOTIiLCJfZGVjOTMiLCJfZGVjOTQiLCJfZGVjOTUiLCJfZGVjOTYiLCJfZGVjOTciLCJfZGVjOTgiLCJfZGVjOTkiLCJfZGVjMTAwIiwiX2RlYzEwMSIsIl9kZWMxMDIiLCJfZGVjMTAzIiwiX2RlYzEwNCIsIl9kZWMxMDUiLCJfZGVjMTA2IiwiX2RlYzEwNyIsIl9kZWMxMDgiLCJfZGVjMTA5IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9NYWNyb0FQSSIsIm1TZXR0aW5ncyIsIl90aGlzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsIm90aGVycyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJwcm9wZXJ0eUVkaXRNb2RlQ2FjaGUiLCJpbml0aWFsQ29udHJvbFN0YXRlIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2Rlc2NyaXB0b3IyMSIsIl9kZXNjcmlwdG9yMjIiLCJfZGVzY3JpcHRvcjIzIiwiX2Rlc2NyaXB0b3IyNCIsIl9kZXNjcmlwdG9yMjUiLCJfZGVzY3JpcHRvcjI2IiwiX2Rlc2NyaXB0b3IyNyIsIl9kZXNjcmlwdG9yMjgiLCJfZGVzY3JpcHRvcjI5IiwiX2Rlc2NyaXB0b3IzMCIsIl9kZXNjcmlwdG9yMzEiLCJfZGVzY3JpcHRvcjMyIiwiX2Rlc2NyaXB0b3IzMyIsIl9kZXNjcmlwdG9yMzQiLCJfZGVzY3JpcHRvcjM1IiwiX2Rlc2NyaXB0b3IzNiIsIl9kZXNjcmlwdG9yMzciLCJfZGVzY3JpcHRvcjM4IiwiX2Rlc2NyaXB0b3IzOSIsIl9kZXNjcmlwdG9yNDAiLCJfZGVzY3JpcHRvcjQxIiwiX2Rlc2NyaXB0b3I0MiIsIl9kZXNjcmlwdG9yNDMiLCJfZGVzY3JpcHRvcjQ0IiwiX2Rlc2NyaXB0b3I0NSIsIl9kZXNjcmlwdG9yNDYiLCJfZGVzY3JpcHRvcjQ3IiwiX2Rlc2NyaXB0b3I0OCIsIl9kZXNjcmlwdG9yNDkiLCJfZGVzY3JpcHRvcjUwIiwiX2Rlc2NyaXB0b3I1MSIsIl9kZXNjcmlwdG9yNTIiLCJfZGVzY3JpcHRvcjUzIiwiX2Rlc2NyaXB0b3I1NCIsIl9kZXNjcmlwdG9yNTUiLCJfZGVzY3JpcHRvcjU2IiwiX2Rlc2NyaXB0b3I1NyIsIl9kZXNjcmlwdG9yNTgiLCJfZGVzY3JpcHRvcjU5IiwiX2Rlc2NyaXB0b3I2MCIsIl9kZXNjcmlwdG9yNjEiLCJfZGVzY3JpcHRvcjYyIiwiX2Rlc2NyaXB0b3I2MyIsIl9kZXNjcmlwdG9yNjQiLCJfZGVzY3JpcHRvcjY1IiwiX2Rlc2NyaXB0b3I2NiIsIl9kZXNjcmlwdG9yNjciLCJfZGVzY3JpcHRvcjY4IiwiX2Rlc2NyaXB0b3I2OSIsImlnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCIsImxvY2siLCJzdG9yZWRFdmVudHMiLCJvdmVycmlkZVJvd1ByZXNzIiwiX2Rlc2NyaXB0b3I3MCIsImVuaGFuY2VkUHJvcGVydHlJbmZvcyIsInByb3BlcnR5SW5mb3MiLCJvcmlnaW5hbFRhYmxlRGVmaW5pdGlvbiIsInRhYmxlRGVmaW5pdGlvbiIsInNldExheW91dERhdGEiLCJGbGV4SXRlbURhdGEiLCJtYXhXaWR0aCIsImF0dGFjaFN0YXRlQ2hhbmdlSGFuZGxlciIsImF0dGFjaE1hbmlmZXN0RXZlbnRzIiwiaGFzTGlzdGVuZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRSb3dCaW5kaW5nIiwicGFyYW1ldGVycyIsIm1kY1RhYmxlIiwiY29udGVudCIsImRhdGFNb2RlbCIsImdldE1vZGVsIiwiYmluZExpc3QiLCJnZXRSb3dDb2xsZWN0aW9uUGF0aCIsInVuZGVmaW5lZCIsIlN0YXRlVXRpbCIsImRldGFjaFN0YXRlQ2hhbmdlIiwic3RhdGVDaGFuZ2VIYW5kbGVyIiwiYXR0YWNoU3RhdGVDaGFuZ2UiLCJvRXZlbnQiLCJjb250cm9sIiwiZ2V0UGFyYW1ldGVyIiwiaXNBIiwidGFibGVBUEkiLCJnZXRQYXJlbnQiLCJoYW5kbGVTdGF0ZUNoYW5nZSIsImF0dGFjaElmTm9MaXN0ZW5lcnMiLCJldmVudE5hbWUiLCJtZXRob2RDb25maWciLCJhdHRhY2hFdmVudCIsInVpNUV2ZW50IiwiRlBNSGVscGVyIiwibG9hZE1vZHVsZUFuZENhbGxNZXRob2QiLCJtb2R1bGVOYW1lIiwibWV0aG9kTmFtZSIsImNhdGNoIiwiZXJyb3IiLCJMb2ciLCJnZXRDdXN0b21GdW5jdGlvbkluZm8iLCJiZWZvcmVSZWJpbmRUYWJsZSIsInJvd1ByZXNzIiwic2VsZWN0aW9uQ2hhbmdlIiwic2V0VXBOb0RhdGFJbmZvcm1hdGlvbiIsInRhYmxlIiwiZ2V0Tm9EYXRhIiwib3duZXIiLCJfZ2V0T3duZXIiLCJkZXNjcmlwdGlvbiIsInRpdGxlIiwicmVzb3VyY2VNb2RlbCIsImdldFJlc291cmNlTW9kZWwiLCJzdWZmaXgiLCJtZXRhUGF0aCIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJnZXRUZXh0IiwicmVzb3VyY2VCdW5kbGUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJnZXROb0RhdGFNZXNzYWdlTW9kZSIsInNldEFnZ3JlZ2F0aW9uIiwiVGV4dCIsInRleHQiLCJpbGx1c3RyYXRlZE1lc3NhZ2UiLCJJbGx1c3RyYXRlZE1lc3NhZ2UiLCJpbGx1c3RyYXRpb25UeXBlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSIsIkJlZm9yZVNlYXJjaCIsImlsbHVzdHJhdGlvblNpemUiLCJlbmFibGVEZWZhdWx0VGl0bGVBbmREZXNjcmlwdGlvbiIsImdldFNlY3Rpb25Db250ZW50Um9sZSIsInNlbmREYXRhVG9Db25zdW1lciIsImNvbnN1bWVyRGF0YSIsInNldEhlYWRlciIsInNldEhlYWRlclN0eWxlIiwiaGVhZGVyU3R5bGUiLCJzZXRIZWFkZXJMZXZlbCIsInRpdGxlTGV2ZWwiLCJpbml0IiwiZ2V0SWdub3JlQ29udGV4dENoYW5nZUV2ZW50Iiwic2V0SWdub3JlQ29udGV4dENoYW5nZUV2ZW50IiwidmFsdWUiLCJzZXRCdXN5Iiwic2V0QXR0YWNoRXZlbnRzIiwiZXZlbnRIYW5kbGVycyIsIl9nZXRBUElFeHRlbnNpb24iLCJzb3VyY2UiLCJpbnN0YW5jZU1hcCIsImdldCIsImZpbmQiLCJhcGkiLCJnZXRCaW5kaW5nIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsImlzQ29udGV4dE1lbnVBY3RpdmUiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFByb3BlcnR5IiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiY2xlYXJTZWxlY3Rpb24iLCJhZGRNZXNzYWdlIiwiZ2V0Q29udGVudCIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2hlY2tDb250ZXh0Q2hhbmdlIiwiZGV0YWNoRXZlbnQiLCJyb3dCaW5kaW5nIiwicmVzb2x2ZWRQYXRoIiwiZ2V0UmVzb2x2ZWRQYXRoIiwiY3JlYXRlTWVzc2FnZSIsInBhdGgiLCJtZXNzYWdlIiwiTWVzc2FnZSIsInRhcmdldCIsInByb2Nlc3NvciIsInBlcnNpc3RlbnQiLCJfZ2V0TWVzc2FnZU1hbmFnZXIiLCJhZGRNZXNzYWdlcyIsImdldElkIiwiY2hlY2tJZlJlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJfb0V2ZW50IiwiaXNUYWJsZVJlYWRPbmx5IiwiaXNFZGl0YWJsZSIsIkNvbW1vblV0aWxzIiwiZ2V0SXNFZGl0YWJsZSIsInZpZXciLCJnZXRUYXJnZXRWaWV3Iiwidmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsImNvbnZlcnRlclR5cGUiLCJyZW1vdmVNZXNzYWdlIiwiaWQiLCJtc2dNYW5hZ2VyIiwibWVzc2FnZXMiLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwicmVzdWx0IiwiZSIsInJlbW92ZU1lc3NhZ2VzIiwicmVmcmVzaCIsInRhYmxlUm93QmluZGluZyIsImlzUmVsYXRpdmUiLCJnZXRUYWJsZURlZmluaXRpb24iLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJoZWFkZXJDb250ZXh0IiwiZ2V0SGVhZGVyQ29udGV4dCIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsInJlcXVlc3RTaWRlRWZmZWN0cyIsIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiZ2V0R3JvdXBJZCIsImdldFF1aWNrRmlsdGVyIiwiZ2V0UHJlc2VudGF0aW9uVmFyaWFudCIsInRhYmxlU3RhdGUiLCJyZXRyaWV2ZUV4dGVybmFsU3RhdGUiLCJzb3J0T3JkZXIiLCJzb3J0ZXJzIiwibWFwIiwic29ydGVyIiwiUHJvcGVydHkiLCJuYW1lIiwicmVwbGFjZSIsIkRlc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwiZ3JvdXBMZXZlbHMiLCJncm91cCIsInRhYmxlVml6IiwiQ29udGVudCIsIml0ZW1zIiwiaXRlbSIsIlZhbHVlIiwiVHlwZSIsImFnZ3JlZ2F0aW9ucyIsImhhc0FnZ3JlZ2F0aW9ucyIsImtleSIsIm5ld0tleSIsImluaXRpYWxFeHBhbnNpb25MZXZlbCIsImdldFBheWxvYWQiLCJ0YWJsZVBWIiwiUHJlc2VudGF0aW9uVmFyaWFudENsYXNzIiwic2V0VGFibGVWaXN1YWxpemF0aW9uIiwicHJvcGVydGllcyIsIkdyb3VwQnkiLCJTb3J0T3JkZXIiLCJBZ2dyZWdhdGlvbnMiLCJzZXRQcm9wZXJ0aWVzIiwiRXJyb3IiLCJTdHJpbmciLCJzZXRQcmVzZW50YXRpb25WYXJpYW50IiwiY3VycmVudFN0YXRlUFYiLCJnZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zIiwicHJvcGVydHlJbmZvTmFtZXMiLCJwcm9wSW5mbyIsIm5ld1RhYmxlU3RhdGUiLCJjb252ZXJ0UFZUb1N0YXRlIiwidGFibGVQcm9wZXJ0aWVzIiwiZ2V0UHJvcGVydGllcyIsInRhYmxlUGF5bG9hZCIsImFwcGx5RXh0ZXJuYWxTdGF0ZSIsImdldEN1cnJlbnRWYXJpYW50S2V5IiwiZ2V0VmFyaWFudCIsInNldEN1cnJlbnRWYXJpYW50S2V5IiwidmFyaWFudE1hbmFnZW1lbnQiLCJNZXNzYWdpbmciLCJfZ2V0Um93QmluZGluZyIsIm9UYWJsZSIsImdldENvdW50cyIsIlRhYmxlVXRpbHMiLCJnZXRMaXN0QmluZGluZ0ZvckNvdW50IiwiYmF0Y2hHcm91cElkIiwiZGF0YSIsImFkZGl0aW9uYWxGaWx0ZXJzIiwiZ2V0SGlkZGVuRmlsdGVycyIsInRoZW4iLCJpVmFsdWUiLCJnZXRDb3VudEZvcm1hdHRlZCIsIm9uTGlzdEJpbmRpbmdDaGFuZ2UiLCJmaXJlRXZlbnQiLCJnZXRQYXJhbWV0ZXJzIiwic2V0RmFzdENyZWF0aW9uUm93RW5hYmxlbWVudCIsInJlZnJlc2hTZWxlY3RlZENvdW50IiwiVGFibGVSdW50aW1lIiwic2V0Q29udGV4dHNBc3luYyIsIm9uRmllbGRMaXZlQ2hhbmdlIiwiX29uRmllbGRMaXZlQ2hhbmdlIiwib25RdWlja0ZpbHRlclNlbGVjdGlvbkNoYW5nZSIsImZpbHRlckJhcklEIiwiZ2V0RmlsdGVyIiwiZmlsdGVyQmFyIiwiVUk1RWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0U3VzcGVuZFNlbGVjdGlvbiIsInJlYmluZCIsImdldENvbnRyb2xsZXIiLCJnZXRFeHRlbnNpb25BUEkiLCJ1cGRhdGVBcHBTdGF0ZSIsIm9uVGFibGVOYXZpZ2F0ZSIsIm9Db250cm9sbGVyIiwib0NvbnRleHQiLCJtUGFyYW1ldGVycyIsImlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUiLCJmdWxsU2NyZWVuRGlhbG9nIiwiY2xvc2UiLCJuYXZpZ2F0aW9uUGFyYW1ldGVycyIsIk9iamVjdCIsImFzc2lnbiIsInJlYXNvbiIsIk5hdmlnYXRpb25SZWFzb24iLCJSb3dQcmVzcyIsIl9yb3V0aW5nIiwibmF2aWdhdGVGb3J3YXJkVG9Db250ZXh0Iiwib25UYWJsZVJvd1ByZXNzIiwicHJlc3NFdmVudCIsInByb2NlZWQiLCJyb3dOYXZpZ2F0aW9uSW5mbyIsImFubm90YXRpb24iLCJyb3ciLCJuYXZpZ2F0aW9uSW5mbyIsImNvbnRyb2xsZXIiLCJnZXRQYWdlQ29udHJvbGxlciIsImJpbmRpbmdDb250ZXh0IiwiYXZvaWRQYXJhbGxlbENhbGxzIiwiX2ludGVudEJhc2VkTmF2aWdhdGlvbiIsIm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZCIsIm5hdmlnYXRpb25UYXJnZXQiLCJlZGl0YWJsZSIsImNoZWNrRWRpdGFibGUiLCJjYWxsRXh0ZW5zaW9uIiwidGFyZ2V0UGF0aCIsInJlY3JlYXRlQ29udGV4dCIsImVkaXRGbG93Iiwic3luY1Rhc2siLCJvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQiLCJvblZhcmlhbnRTZWxlY3RlZCIsIm9yaWdpbmFsU291cmNlIiwiZ2V0U291cmNlIiwib25WYXJpYW50U2F2ZWQiLCJvblJvd1ByZXNzZWQiLCJvbk5vb3AiLCJjb250ZXh0IiwiZW1wdHlSb3ciLCJpc0luYWN0aXZlIiwiaXNUcmFuc2llbnQiLCJhbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCIsImVuYWJsZUFuYWx5dGljcyIsIm9uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MiLCJjb250ZXh0cyIsIm1heE51bWJlcm9mU2VsZWN0ZWRJdGVtcyIsIl9vblNoYXJlVG9Db2xsYWJvcmF0aW9uTWFuYWdlclByZXNzIiwib25PcGVuSW5OZXdUYWJQcmVzcyIsImFsbENvbnRleHRzIiwibmF2aWdhYmxlQ29udGV4dHMiLCJwcm9taXNlVG9XYWl0IiwiUHJvbWlzZUtlZXBlciIsInRleHRLZXkiLCJNZXNzYWdlQm94IiwiY29uZmlybSIsImdldFRyYW5zbGF0ZWRUZXh0Iiwib25DbG9zZSIsInNob3VsZFByb2NlZWQiLCJwcm9taXNlIiwiZm9yRWFjaCIsIndhcm5pbmciLCJvbkludGVybmFsUGF0Y2hDb21wbGV0ZWQiLCJldnQiLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsInNlbGVjdGVkQ29udGV4dHMiLCJEZWxldGVIZWxwZXIiLCJ1cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyIsIm1lc3NhZ2VIYW5kbGVyIiwic2hvd01lc3NhZ2VEaWFsb2ciLCJyZWxlYXNlSG9sZEJ5Q29udHJvbCIsIm9uSW50ZXJuYWxQYXRjaFNlbnQiLCJlZGl0Rmxvd0V4dGVuc2lvbiIsImhvbGRNZXNzYWdlc0ZvckNvbnRyb2wiLCJoYW5kbGVQYXRjaFNlbnQiLCJpbmxpbmVFZGl0RmxvdyIsImlzSW5saW5lRWRpdFBvc3NpYmxlIiwiaGFuZGxlSW5saW5lRWRpdFBhdGNoU2VudCIsIm9uSW50ZXJuYWxEYXRhUmVjZWl2ZWQiLCJpc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJjb250ZXh0SWRlbnRpZmllciIsImdldElkZW50aWZpZXJDb2x1bW4iLCJyZXNwb25zZUNvbnRleHRzQXJyYXkiLCJuZXdDb250ZXh0cyIsInB1c2giLCJyZWNvbW1lbmRhdGlvbnMiLCJmZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zIiwic2V0RG93bmxvYWRVcmwiLCJvbkludGVybmFsRGF0YVJlcXVlc3RlZCIsInNldFByb3BlcnR5IiwiZmlsdGVycyIsInF1aWNrRmlsdGVycyIsInNob3dDb3VudHMiLCJzZXRDb3VudHNBc0xvYWRpbmciLCJyZWZyZXNoVW5TZWxlY3RlZENvdW50cyIsInNldEJ1c3lMb2NrIiwibG9ja2VkIiwiYnVzeUlkIiwiYnVzeVBhdGgiLCJnZXRCdXN5UGF0aCIsIkJ1c3lMb2NrZXIiLCJ1bmxvY2siLCJpc0xvY2FsIiwib25QYXN0ZSIsImZvckNvbnRleHRNZW51Iiwic2V0Q29udGV4dE1lbnVBY3RpdmUiLCJyYXdQYXN0ZWREYXRhIiwibWVudSIsImludGVybmFsQ29udGV4dCIsImVuYWJsZVBhc3RlIiwiYWN0aW9uIiwic3JjQ29udGV4dHMiLCJzcmNDb250ZXh0IiwibmV3UGFyZW50Q29udGV4dCIsImdldFBhdGgiLCJhbGwiLCJtb3ZlIiwicGFyZW50IiwiY29weSIsInJlcXVlc3RTaWRlRWZmZWN0c0ZvckNvcHlBY3Rpb24iLCJyZXF1ZXN0U2lkZUVmZmVjdHNGb3JDaGFuZ2VOZXh0U2libGluZ0FjdGlvbiIsIk1lc3NhZ2VUb2FzdCIsInNob3ciLCJnZXRFbmFibGVQYXN0ZSIsImNlbGxTZWxlY3Rpb24iLCJnZXRDZWxsU2VsZWN0b3IiLCJnZXRTZWxlY3Rpb24iLCJjb2x1bW5zIiwiUGFzdGVIZWxwZXIiLCJwYXN0ZVJhbmdlRGF0YSIsInBhc3RlRGF0YSIsInBhc3RlRW5hYmxlbWVudEhhbmRsZXIiLCJjZWxsc1NlbGVjdGlvbiIsInJvd3MiLCJvbkN1dCIsIl9vbkNvcHlDdXQiLCJvbkNvcHkiLCJvbkJlZm9yZUV4cG9ydCIsImV4cG9ydEV2ZW50IiwiX29uQmVmb3JlRXhwb3J0IiwiZGF0YVN0YXRlSW5kaWNhdG9yRmlsdGVyIiwic1RhYmxlQ29udGV4dEJpbmRpbmdQYXRoIiwic1RhYmxlUm93QmluZGluZyIsImdldFRhcmdldHMiLCJvbkRhdGFTdGF0ZUNoYW5nZSIsImRhdGFTdGF0ZUluZGljYXRvciIsImZpbHRlcmVkTWVzc2FnZXMiLCJoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzIiwibXNnIiwidGVjaG5pY2FsRGV0YWlscyIsImdldFRlY2huaWNhbERldGFpbHMiLCJlbXB0eVJvd01lc3NhZ2UiLCJtaXNzaW5nQ29sdW1uIiwiZmlsdGVyIiwiaGlkZGVuUHJvcGVydHkiLCJtZXNzYWdlU3RyaXBFcnJvciIsImpvaW4iLCJzaG93TWVzc2FnZSIsImludGVybmFsTW9kZWwiLCJyZXN1bWVCaW5kaW5nIiwiYlJlcXVlc3RJZk5vdEluaXRpYWxpemVkIiwiZ2V0RGF0YUluaXRpYWxpemVkIiwicmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMiLCJvRmlsdGVyQ29udHJvbCIsIkZpbHRlclV0aWxzIiwiZ2V0Tm90QXBwbGljYWJsZUZpbHRlcnMiLCJzdXNwZW5kQmluZGluZyIsImludmFsaWRhdGVDb250ZW50IiwiZmFzdENyZWF0aW9uUm93IiwiZ2V0Q3JlYXRpb25Sb3ciLCJ0YWJsZUJpbmRpbmciLCJnZXRDb250ZXh0IiwiVGFibGVIZWxwZXIiLCJlbmFibGVGYXN0Q3JlYXRpb25Sb3ciLCJvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCIsIl9vbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCIsIm9uTWFzc0VkaXRCdXR0b25QcmVzc2VkIiwibWFzc0VkaXRIZWxwZXIiLCJNYXNzRWRpdERpYWxvZ0hlbHBlciIsIm9uQ29udGV4dE1lbnUiLCJzZXRNYXNzRWRpdERpYWxvZ0hlbHBlciIsIm9wZW4iLCJvblNlbGVjdGlvbkNoYW5nZWQiLCJ1aTVldmVudCIsInNldENvbnRleHRzIiwic2VsZWN0ZWRDb250ZXh0Iiwib25BY3Rpb25QcmVzcyIsInBhZ2VDb250cm9sbGVyIiwiYWN0aW9uTmFtZSIsIm1vZGVsIiwibGFiZWxFeHByZXNzaW9uIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJsYWJlbCIsImlzUGF0aEluTW9kZWxFeHByZXNzaW9uIiwibW9kZWxOYW1lIiwiZXhlY3V0ZUFjdGlvbiIsIm5vdEFwcGxpY2FibGVDb250ZXh0cyIsImNvbnZlcnRlZE1ldGFkYXRhIiwiY29udmVydFR5cGVzIiwiZ2V0TWV0YU1vZGVsIiwiZW50aXR5VHlwZSIsInJlc29sdmVQYXRoIiwiZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSIsIm15VW5hcHBsaWNhYmxlQ29udGV4dERpYWxvZyIsIk5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nIiwiZW50aXR5U2V0IiwiZW50aXR5U2V0TmFtZSIsImFwcGxpY2FibGVDb250ZXh0cyIsImludm9rZUFjdGlvbiIsImluZm8iLCJvbkNvbnRleHRNZW51UHJlc3MiLCJfb25Db250ZXh0TWVudVByZXNzIiwibWFzc0VkaXREaWFsb2dIZWxwZXIiLCJnZXRNYXNzRWRpdERpYWxvZ0hlbHBlciIsInVwZGF0ZUZpbHRlckJhciIsImZpbHRlckJhclJlZklkIiwiZ2V0RmlsdGVyQmFyIiwiX3NldEZpbHRlckJhciIsImRldGFjaEZpbHRlckJhciIsInNldEZpbHRlciIsImdldEZpbHRlckJhckNvbnRyb2wiLCJieUlkIiwibGFzdEluZGV4T2YiLCJoYW5kbGVDcmVhdGVBY3RpdmF0ZSIsImFjdGl2YXRlRXZlbnQiLCJfaGFuZGxlQ3JlYXRlQWN0aXZhdGUiLCJvbkRyYWdFbnRlckRvY3VtZW50IiwiX29uRHJhZ0VudGVyRG9jdW1lbnQiLCJvbkRyYWdTdGFydERvY3VtZW50IiwiX29uRHJhZ1N0YXJ0RG9jdW1lbnQiLCJvbkRyb3BEb2N1bWVudCIsIl9vbkRyb3BEb2N1bWVudCIsIm9uQ29sbGFwc2VFeHBhbmROb2RlIiwiZXhwYW5kIiwiZ2V0TWV0YWRhdGEiLCJfb25Db2xsYXBzZUV4cGFuZE5vZGUiLCJvbk1vdmVVcERvd24iLCJtb3ZlVXAiLCJfb25Nb3ZlVXBEb3duIiwiZ2V0U2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlSGVscGVyIiwic2V0U2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnQiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwic2V0U2VsZWN0aW9uVmFyaWFudFRvTWRjQ29udHJvbCIsIl9jcmVhdGVDb250ZW50VjJNb2RlIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsIm1ldGFNb2RlbCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiY29udGV4dFBhdGgiLCJkZWVwQ2xvbmUiLCJ1cGRhdGVDb2x1bW5zVmlzaWJpbGl0eSIsImlnbm9yZWRGaWVsZHMiLCJjb2xsZWN0aW9uRW50aXR5IiwiY29sbGVjdGlvbiIsImNvbnRleHRPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaGFuZGxlclByb3ZpZGVyIiwiVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciIsImZyYWdtZW50IiwiWE1MUHJlcHJvY2Vzc29yIiwicHJvY2VzcyIsInBhcnNlWE1MU3RyaW5nIiwieG1sIiwianN4IiwicmVuZGVyQXNYTUwiLCJNZGNUYWJsZVRlbXBsYXRlIiwiZ2V0TURDVGFibGVUZW1wbGF0ZSIsImdldENvbnZlcnRlZE1ldGFkYXRhIiwibW9kZWxzIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJkZXN0cm95IiwiRnJhZ21lbnQiLCJsb2FkIiwiZGVmaW5pdGlvbiIsImdldFJvb3RDb250cm9sbGVyIiwiY29udGFpbmluZ1ZpZXciLCJnZXRSb290Q29udHJvbCIsInByb3BlcnR5S2V5IiwicHJvcGVydHlWYWx1ZSIsImJTdXBwcmVzc0ludmFsaWRhdGUiLCJfYXBwbHlpbmdTZXR0aW5ncyIsImluY2x1ZGVzIiwiZ2V0RGF0YU1vZGVsQW5kQ29udmVydGVkVGFyZ2V0T2JqZWN0IiwicHJvcGVydHlOYW1lIiwiZW50aXR5UGF0aCIsInRhcmdldE1ldGFQYXRoIiwicHJvcGVydHlJbmZvIiwiYW5ub3RhdGlvblBhdGgiLCJ0YXJnZXRPYmplY3QiLCJjb252ZXJ0ZWR0YXJnZXRPYmplY3QiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsImRhdGFNb2RlbFBhdGgiLCJGaWVsZFRlbXBsYXRpbmciLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yVmFsdWUiLCJjcmVhdGVBbnlDb250cm9sIiwiTW9kZUFzRXhwcmVzc2lvbiIsInJvd0NvbnRleHQiLCJhbnlPYmplY3QiLCJBbnkiLCJhbnkiLCJzZXRNb2RlbCIsImdldFByb3BlcnR5RWRpdE1vZGUiLCJwcm9wZXJ0eUZvckZpZWxkQ29udHJvbCIsImVkaXRNb2RlQXNFeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJVSUZvcm1hdHRlcnMiLCJnZXRFZGl0TW9kZSIsInNldEJpbmRpbmdDb250ZXh0IiwiYWRkRGVwZW5kZW50IiwiZWRpdE1vZGUiLCJnZXRBbnkiLCJzaG93Q29sdW1ucyIsImNvbHVtbktleXMiLCJjb2x1bW5LZXkiLCJtb2RpZnlEeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbiIsImhpZGVDb2x1bW5zIiwic2V0SWdub3JlZEZpZWxkcyIsImdldElnbm9yZWRGaWVsZHMiLCJnZXRDb250cm9sU3RhdGUiLCJjb250cm9sU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJnZXRTdGF0ZUtleSIsIm9Db250cm9sIiwiZ2V0TG9jYWxJZCIsImR5bmFtaWNWaXNpYmlsaXR5Rm9yQ29sdW1ucyIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5U3RhdGljIiwiZ2V0TURDVGFibGUiLCJhc3luY0NhbGwiLCJsb2NrTmFtZSIsInN1cHByZXNzSW52YWxpZGF0ZSIsInNldEZ1bGxTY3JlZW5EaWFsb2ciLCJkaWFsb2ciLCJzZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zIiwiZ2V0UHJvcGVydHlJbmZvcyIsImVuaGFuY2VkUHJvcGVydHlJbmZvIiwidmlzaWJsZSIsImV4cG9ydFNldHRpbmdzIiwiY2xpcGJvYXJkU2V0dGluZ3MiLCJ2aXN1YWxTZXR0aW5ncyIsInRvb2x0aXAiLCJpc0tleSIsImV4dGVuc2lvbiIsInRlY2huaWNhbGx5R3JvdXBhYmxlIiwidGVjaG5pY2FsbHlBZ2dyZWdhdGFibGUiLCJjdXN0b21BZ2dyZWdhdGUiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsIl9yZWYiLCJfIiwibWF4Q29uZGl0aW9ucyIsImZvcm1hdE9wdGlvbnMiLCJjb25zdHJhaW50cyIsImdyb3VwTGFiZWwiLCJjYXNlU2Vuc2l0aXZlIiwiZmlsdGVyYWJsZSIsInNvcnRhYmxlIiwiZ3JvdXBhYmxlIiwiZGF0YVR5cGUiLCJhZ2dyZWdhdGFibGUiLCJ1bml0IiwiX3JlZjIiLCJzZXRDYWNoZWRQcm9wZXJ0eUluZm9zIiwiZ2V0Q2FjaGVkUHJvcGVydHlJbmZvcyIsImNvbGxlY3Rpb25Db250ZXh0IiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsImdldFRhcmdldE9iamVjdFBhdGgiLCJnZXRUYWJsZVRlbXBsYXRlQmluZGluZ0luZm8iLCJyb3dCaW5kaW5nSW5mbyIsInN1c3BlbmRlZCIsIiRjb3VudCIsImVuYWJsZSRzZWxlY3QiLCJzZWxlY3QiLCJrZXlzIiwicmVxdWVzdEF0TGVhc3QiLCIkc2VsZWN0IiwiZW5hYmxlJCRnZXRLZWVwQWxpdmVDb250ZXh0IiwiJCRnZXRLZWVwQWxpdmVDb250ZXh0IiwiJCRjbGVhclNlbGVjdGlvbk9uRmlsdGVyIiwiJCRncm91cElkIiwiJCR1cGRhdGVHcm91cElkIiwiJCRvd25SZXF1ZXN0IiwiJCRwYXRjaFdpdGhvdXRTaWRlRWZmZWN0cyIsInBhdGNoQ29tcGxldGVkIiwiYmluZCIsImRhdGFSZWNlaXZlZCIsImRhdGFSZXF1ZXN0ZWQiLCJjaGFuZ2UiLCJjcmVhdGVBY3RpdmF0ZSIsImNyZWF0ZVNlbnQiLCJoYW5kbGVDcmVhdGVTZW50IiwicGF0Y2hTZW50IiwiZXZlbnRzIiwiYWRkU2V0dGluZyIsImdldFNldHRpbmdzRm9yTWFuaWZlc3QiLCJ0YWJsZVNldHRpbmdzIiwiZW5hYmxlRXhwb3J0IiwiZXhwb3J0UmVxdWVzdFNpemUiLCJleHBvcnRGaWxlTmFtZSIsImV4cG9ydFNoZWV0TmFtZSIsImZyb3plbkNvbHVtbkNvdW50IiwiZGlzYWJsZUNvbHVtbkZyZWV6ZSIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwicm93Q291bnRNb2RlIiwicm93Q291bnQiLCJlbmFibGVGdWxsU2NyZWVuIiwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZCIsInNjcm9sbFRocmVzaG9sZCIsInRocmVzaG9sZCIsInBvcGluTGF5b3V0Iiwic2VsZWN0aW9uTW9kZSIsImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyIsImVuYWJsZVNlbGVjdEFsbCIsInNlbGVjdGlvbkxpbWl0IiwiY29uZGVuc2VkVGFibGVMYXlvdXQiLCJjcmVhdGlvbk1vZGUiLCJjcmVhdGlvbkZpZWxkcyIsImNyZWF0ZUF0RW5kIiwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSIsIm91dGJvdW5kIiwibWFzc0VkaXQiLCJlbmFibGVNYXNzRWRpdCIsImN1c3RvbUNvbnRlbnQiLCJ2aXNpYmxlRmllbGRzIiwib3BlcmF0aW9uR3JvdXBpbmdNb2RlIiwiYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24iLCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsIiwicXVpY2tWYXJpYW50U2VsZWN0aW9uIiwicGF0aHMiLCJmaW5kU2xvdEFjdGlvbkZyb21LZXkiLCJhY3Rpb25zIiwiYSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJjcmVhdGVDb250ZW50IiwiZ2V0RnVsbE1ldGFQYXRoIiwiZW5kc1dpdGgiLCJmb3JjZUNyZWF0aW9uIiwiZ2V0T3duZXJDb250ZXh0UGF0aCIsImZ1bGxNZXRhUGF0aCIsIm1ldGFQYXRoQ29udGV4dCIsImNyZWF0ZVRhYmxlRGVmaW5pdGlvbiIsInVwZGF0ZVByb3BlcnRpZXNGcm9tVGFibGVEZWZpbml0aW9uIiwiY3JlYXRlIiwibW9kZSIsImFwcGVuZCIsImNvbnZlcnRlZFR5cGVzIiwidGFyZ2V0VHlwZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImNyZWF0ZU1EQ1RhYmxlIiwic2V0dXBPcHRpbWlzdGljQmF0Y2giLCJzZXRNZXRhUGF0aCIsIk1hbmFnZWRPYmplY3RNZXRhZGF0YSIsImlzR2VuZXJhdGVkSWQiLCJjb250ZW50SWQiLCJ1c2VCYXNpY1NlYXJjaCIsImdlbmVyYXRlIiwicmVhZE9ubHkiLCJkaXNwbGF5TW9kZSIsImVtcHR5Um93c0VuYWJsZWQiLCJlbmFibGVkIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwiU3RhbmRhcmRBY3Rpb25LZXlzIiwiQ3JlYXRlIiwibW9kZUZvck5vRGF0YU1lc3NhZ2UiLCJzcGxpdCIsImdldENvdW50IiwiTWFjcm9BUEkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlQVBJLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0LCBFbnRpdHlUeXBlLCBOYXZpZ2F0aW9uUHJvcGVydHksIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdERhdGFGaWVsZFR5cGVzLFxuXHREYXRhUG9pbnRUeXBlVHlwZXMsXG5cdExpbmVJdGVtLFxuXHRQcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCB7XG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbixcblx0cmVzb2x2ZUJpbmRpbmdTdHJpbmcsXG5cdHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiwgWE1MRXZlbnRIb2xkZXIgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIG1peGluLCBwcm9wZXJ0eSwgeG1sRXZlbnRIYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBJUm93QmluZGluZ0ludGVyZmFjZSBmcm9tIFwic2FwL2ZlL2NvcmUvSVJvd0JpbmRpbmdJbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IHR5cGUgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHsgcGFyc2VYTUxTdHJpbmcsIHhtbCB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0J1c3lMb2NrZXJcIjtcbmltcG9ydCBOb3RBcHBsaWNhYmxlQ29udGV4dERpYWxvZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvZWRpdEZsb3cvTm90QXBwbGljYWJsZUNvbnRleHREaWFsb2dcIjtcbmltcG9ydCBOYXZpZ2F0aW9uUmVhc29uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9yb3V0aW5nL05hdmlnYXRpb25SZWFzb25cIjtcbmltcG9ydCBBbnkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0FueVwiO1xuaW1wb3J0IHsgQ3JlYXRpb25Nb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgY29udmVydFR5cGVzLCBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7XG5cdGdldEN1c3RvbUZ1bmN0aW9uSW5mbyxcblx0dHlwZSBDcmVhdGVCZWhhdmlvcixcblx0dHlwZSBFeHRlcm5hbE1ldGhvZENvbmZpZyxcblx0dHlwZSBUYWJsZVR5cGUsXG5cdHR5cGUgVGFibGVWaXN1YWxpemF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9UYWJsZVwiO1xuaW1wb3J0IHsgU3RhbmRhcmRBY3Rpb25LZXlzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL3RhYmxlL1N0YW5kYXJkQWN0aW9uc1wiO1xuaW1wb3J0IERlbGV0ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9EZWxldGVIZWxwZXJcIjtcbmltcG9ydCBGUE1IZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQYXN0ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9QYXN0ZUhlbHBlclwiO1xuaW1wb3J0IFByb21pc2VLZWVwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUHJvbWlzZUtlZXBlclwiO1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm8gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFJvdXRpbmdOYXZpZ2F0aW9uUGFyYW1ldGVycyB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB7XG5cdGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgsXG5cdGdldFRhcmdldE9iamVjdFBhdGgsXG5cdHR5cGUgRGF0YU1vZGVsT2JqZWN0UGF0aFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyB0eXBlIERpc3BsYXlNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGlzcGxheU1vZGVGb3JtYXR0ZXJcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyLCBTZXJpYWxpemVkQ29sbGVjdGlvbkJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29sbGVjdGlvbkJpbmRpbmdJbmZvXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIElTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvc2VjdGlvbi9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IENvbnN1bWVyRGF0YSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL3NlY3Rpb24vSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiO1xuaW1wb3J0ICogYXMgRmllbGRUZW1wbGF0aW5nIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkVGVtcGxhdGluZ1wiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQkJWNCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXJBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhckFQSVwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sU3RhdGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnNpZ2h0cy9Db21tb25JbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uR3JvdXAgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQWN0aW9uR3JvdXBcIjtcbmltcG9ydCB0eXBlIEJhc2ljU2VhcmNoIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0Jhc2ljU2VhcmNoXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgKiBhcyBNZGNUYWJsZVRlbXBsYXRlIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCB0eXBlIE92ZXJmbG93R3JvdXAgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvT3ZlcmZsb3dHcm91cHNcIjtcbmltcG9ydCB0eXBlIFF1aWNrRmlsdGVyU2VsZWN0b3IgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvUXVpY2tGaWx0ZXJTZWxlY3RvclwiO1xuaW1wb3J0IFRhYmxlQ3JlYXRpb25PcHRpb25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQ3JlYXRpb25PcHRpb25zXCI7XG5pbXBvcnQgVGFibGVIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVIZWxwZXJcIjtcbmltcG9ydCBUYWJsZVJ1bnRpbWUgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVSdW50aW1lXCI7XG5pbXBvcnQgVGFibGVVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9VdGlsc1wiO1xuaW1wb3J0IHsgY29udmVydFBWVG9TdGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL2FkYXB0ZXIvVGFibGVQVlRvU3RhdGVcIjtcbmltcG9ydCBNYXNzRWRpdERpYWxvZ0hlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9tYXNzRWRpdC9NYXNzRWRpdERpYWxvZ0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBQdlByb3BlcnRpZXMgfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vUHJlc2VudGF0aW9uVmFyaWFudFwiO1xuaW1wb3J0IFByZXNlbnRhdGlvblZhcmlhbnRDbGFzcyBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vUHJlc2VudGF0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCBGbGV4SXRlbURhdGEgZnJvbSBcInNhcC9tL0ZsZXhJdGVtRGF0YVwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgTWVudSBmcm9tIFwic2FwL20vTWVudVwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBNZXNzYWdlVG9hc3QgZnJvbSBcInNhcC9tL01lc3NhZ2VUb2FzdFwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCB0eXBlIENlbGxTZWxlY3RvciBmcm9tIFwic2FwL20vcGx1Z2lucy9DZWxsU2VsZWN0b3JcIjtcbmltcG9ydCB0eXBlIHsgRGF0YVN0YXRlSW5kaWNhdG9yJERhdGFTdGF0ZUNoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC9tL3BsdWdpbnMvRGF0YVN0YXRlSW5kaWNhdG9yXCI7XG5pbXBvcnQgdHlwZSB7IFBhc3RlUHJvdmlkZXIkUGFzdGVFdmVudCB9IGZyb20gXCJzYXAvbS9wbHVnaW5zL1Bhc3RlUHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBFdmVudCwgZGVmYXVsdCBhcyBVSTVFdmVudCB9IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IE1hbmFnZWRPYmplY3RNZXRhZGF0YSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdE1ldGFkYXRhXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBGcmFnbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRnJhZ21lbnRcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBNZXNzYWdpbmcgZnJvbSBcInNhcC91aS9jb3JlL01lc3NhZ2luZ1wiO1xuaW1wb3J0IHR5cGUgRHJhZ0Ryb3BJbmZvIGZyb20gXCJzYXAvdWkvY29yZS9kbmQvRHJhZ0Ryb3BJbmZvXCI7XG5pbXBvcnQgeyBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgWE1MUHJlcHJvY2Vzc29yIGZyb20gXCJzYXAvdWkvY29yZS91dGlsL1hNTFByZXByb2Nlc3NvclwiO1xuaW1wb3J0IHR5cGUge1xuXHRkZWZhdWx0IGFzIE1EQ1RhYmxlLFxuXHRNRENUYWJsZVByb3BlcnR5SW5mbyBhcyBQcm9wZXJ0eUluZm8sXG5cdGRlZmF1bHQgYXMgVGFibGUsXG5cdFRhYmxlJEJlZm9yZUV4cG9ydEV2ZW50LFxuXHRUYWJsZSRCZWZvcmVPcGVuQ29udGV4dE1lbnVFdmVudCxcblx0VGFibGUkU2VsZWN0aW9uQ2hhbmdlRXZlbnRcbn0gZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIFR5cGVDb25maWcgZnJvbSBcInNhcC91aS9tZGMvVHlwZUNvbmZpZ1wiO1xuaW1wb3J0IHR5cGUgeyBHcm91cExldmVscywgSXRlbXMsIFNvcnRlcnMgfSBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHsgdHlwZSBSb3dBY3Rpb25JdGVtJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Sb3dBY3Rpb25JdGVtXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgT0RhdGFDb250ZXh0QmluZGluZyRQYXRjaFNlbnRFdmVudCB9IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFDb250ZXh0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgU3RhdGVIZWxwZXIgZnJvbSBcIi4uL21kYy9hZGFwdGVyL1N0YXRlSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgeyBjcmVhdGVUYWJsZURlZmluaXRpb24gfSBmcm9tIFwiLi9UYWJsZURlZmluaXRpb25cIjtcbmltcG9ydCBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyIGZyb20gXCIuL1RhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXJcIjtcbmltcG9ydCBDb2x1bW5NYW5hZ2VtZW50IGZyb20gXCIuL21peGluL0NvbHVtbk1hbmFnZW1lbnRcIjtcbmltcG9ydCBDb250ZXh0TWVudUhhbmRsZXIgZnJvbSBcIi4vbWl4aW4vQ29udGV4dE1lbnVIYW5kbGVyXCI7XG5pbXBvcnQgRW1wdHlSb3dzSGFuZGxlciBmcm9tIFwiLi9taXhpbi9FbXB0eVJvd3NIYW5kbGVyXCI7XG5pbXBvcnQgVGFibGVBUElTdGF0ZUhhbmRsZXIgZnJvbSBcIi4vbWl4aW4vVGFibGVBUElTdGF0ZUhhbmRsZXJcIjtcbmltcG9ydCBUYWJsZUV4cG9ydCBmcm9tIFwiLi9taXhpbi9UYWJsZUV4cG9ydFwiO1xuaW1wb3J0IFRhYmxlSGllcmFyY2h5IGZyb20gXCIuL21peGluL1RhYmxlSGllcmFyY2h5XCI7XG5pbXBvcnQgVGFibGVPcHRpbWlzdGljQmF0Y2ggZnJvbSBcIi4vbWl4aW4vVGFibGVPcHRpbWlzdGljQmF0Y2hcIjtcbmltcG9ydCBUYWJsZVNoYXJpbmcgZnJvbSBcIi4vbWl4aW4vVGFibGVTaGFyaW5nXCI7XG5cbmV4cG9ydCB0eXBlIEVuaGFuY2VkRkVQcm9wZXJ0eUluZm8gPSBQcm9wZXJ0eUluZm8gJiB7XG5cdG5hbWU6IHN0cmluZztcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0cmVsYXRpdmVQYXRoOiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uUHJvcGVydHk/OiBzdHJpbmc7XG5cdG1vZGU/OiBEaXNwbGF5TW9kZTtcblx0dmFsdWVQcm9wZXJ0eT86IHN0cmluZztcblx0dHlwZUNvbmZpZz86IFR5cGVDb25maWc7XG5cdGV4cG9ydERhdGFQb2ludFRhcmdldFZhbHVlPzogc3RyaW5nO1xuXHRhZGRpdGlvbmFsTGFiZWxzPzogc3RyaW5nW107XG5cdHR5cGU/OiBzdHJpbmc7XG5cdHRleHRBcnJhbmdlbWVudD86IHtcblx0XHR0ZXh0UHJvcGVydHk6IHN0cmluZztcblx0XHRtb2RlOiBEaXNwbGF5TW9kZTtcblx0fTtcbn07XG5cbnR5cGUgRGF0YU1vZGVsQ29udmVyc2lvbiA9IHtcblx0ZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzIHwgUHJvcGVydHk+O1xuXHRjb252ZXJ0ZWR0YXJnZXRPYmplY3Q6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXM7XG59O1xuXG5leHBvcnQgdHlwZSBUYWJsZUNvbHVtblByb3BlcnRpZXMgPSB7XG5cdGtleTogc3RyaW5nO1xuXHR2aXNpYmlsaXR5OiBib29sZWFuO1xufVtdO1xuXG5leHBvcnQgdHlwZSBEeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbiA9IHsgY29sdW1uS2V5OiBzdHJpbmc7IHZpc2libGU6IGJvb2xlYW4gfTtcblxuZXhwb3J0IHR5cGUgVGFibGVTdGF0ZSA9IHtcblx0aW5uZXJUYWJsZT86IHtcblx0XHRpbml0aWFsU3RhdGU/OiB7XG5cdFx0XHRpdGVtcz86IHsgbmFtZTogc3RyaW5nIH1bXTtcblx0XHRcdHN1cHBsZW1lbnRhcnlDb25maWc/OiBvYmplY3Q7XG5cdFx0fTtcblx0XHRmdWxsU3RhdGU/OiB7XG5cdFx0XHRpdGVtcz86IHsgbmFtZTogc3RyaW5nIH1bXTtcblx0XHRcdGZpbHRlcj86IG9iamVjdDtcblx0XHR9O1xuXHR9O1xuXHRxdWlja0ZpbHRlcj86IHtcblx0XHRzZWxlY3RlZEtleT86IHN0cmluZztcblx0fTtcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiB7XG5cdFx0dmFyaWFudElkPzogc3RyaW5nIHwgbnVsbDtcblx0fTtcblx0c3VwcGxlbWVudGFyeUNvbmZpZz86IG9iamVjdDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrIHtcblx0c2V0QnVzeUxvY2sobG9ja2VkOiBib29sZWFuKTogdm9pZDtcblx0ZW5hYmxlT3B0aW1pc3RpY0JhdGNoTW9kZSgpOiB2b2lkO1xuXHRtZXRhUGF0aDogc3RyaW5nO1xuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblx0ZW1wdHlSb3dzRW5hYmxlZDogYm9vbGVhbjtcblx0Z2V0Q29udGVudCgpOiBUYWJsZTtcblx0Z2V0VGFibGVEZWZpbml0aW9uKCk6IFRhYmxlVmlzdWFsaXphdGlvbjtcblx0Z2V0U2VsZWN0ZWRDb250ZXh0cygpOiBDb250ZXh0W107XG5cdGlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUoY29udGV4dDogQ29udGV4dCk6IGJvb2xlYW47XG5cdGNyZWF0ZUFueUNvbnRyb2woTW9kZUFzRXhwcmVzc2lvbjogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIHJvd0NvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQpOiB0eXBlb2YgQW55O1xuXHRnZXREYXRhTW9kZWxBbmRDb252ZXJ0ZWRUYXJnZXRPYmplY3QocHJvcGVydHlOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBEYXRhTW9kZWxDb252ZXJzaW9uIHwgdW5kZWZpbmVkO1xufVxuXG5pbnRlcmZhY2UgVGFibGVBUElcblx0ZXh0ZW5kcyBUYWJsZUFQSVN0YXRlSGFuZGxlcixcblx0XHRUYWJsZUV4cG9ydCxcblx0XHRUYWJsZU9wdGltaXN0aWNCYXRjaCxcblx0XHRUYWJsZUhpZXJhcmNoeSxcblx0XHRFbXB0eVJvd3NIYW5kbGVyLFxuXHRcdENvbnRleHRNZW51SGFuZGxlcixcblx0XHRUYWJsZVNoYXJpbmcsXG5cdFx0Q29sdW1uTWFuYWdlbWVudCB7XG5cdC8vIGFnZ3JlZ2F0aW9uXG5cdGdldENvbnRlbnQoKTogTURDVGFibGU7XG5cdC8vIGFzc29jaWF0aW9uXG5cdGdldEZpbHRlckJhcigpOiBzdHJpbmc7XG5cdC8vIHByb3BlcnR5XG5cdGdldERhdGFJbml0aWFsaXplZCgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgdGFibGUgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBMaW5lSXRlbSwgUHJlc2VudGF0aW9uVmFyaWFudCBvciBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGFubm90YXRpb24gaXMgZXhwZWN0ZWQsIGJ1dCB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2sgY2FuIGFsc28gYmUgdXNlZCB0byBkaXNwbGF5IGFuIEVudGl0eVNldC5cbiAqIDxicj5cbiAqIElmIGEgUHJlc2VudGF0aW9uVmFyaWFudCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBoYXZlIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKiA8YnI+XG4gKiBJZiBhIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgY29udGFpbiBhIHZhbGlkIFByZXNlbnRhdGlvblZhcmlhbnQgdGhhdCBhbHNvIGhhcyBhIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOlRhYmxlIGlkPVwiTXlUYWJsZVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIgLyZndDtcbiAqIDwvcHJlPlxuICogQHByaXZhdGVcbiAqL1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXCIsIHsgcmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIl0gfSlcbkBtaXhpbihUYWJsZUFQSVN0YXRlSGFuZGxlcilcbkBtaXhpbihUYWJsZUV4cG9ydClcbkBtaXhpbihUYWJsZU9wdGltaXN0aWNCYXRjaClcbkBtaXhpbihUYWJsZUhpZXJhcmNoeSlcbkBtaXhpbihFbXB0eVJvd3NIYW5kbGVyKVxuQG1peGluKENvbnRleHRNZW51SGFuZGxlcilcbkBtaXhpbihUYWJsZVNoYXJpbmcpXG5AbWl4aW4oQ29sdW1uTWFuYWdlbWVudClcbmNsYXNzIFRhYmxlQVBJIGV4dGVuZHMgTWFjcm9BUEkgaW1wbGVtZW50cyBJU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yLCBJUm93QmluZGluZ0ludGVyZmFjZSwgSVRhYmxlQmxvY2sge1xuXHRjb250ZW50ITogVGFibGU7XG5cblx0bWFzc0VkaXREaWFsb2dIZWxwZXI6IE1hc3NFZGl0RGlhbG9nSGVscGVyIHwgdW5kZWZpbmVkO1xuXG5cdG9yaWdpbmFsVGFibGVEZWZpbml0aW9uITogVGFibGVWaXN1YWxpemF0aW9uO1xuXG5cdHByb3BlcnR5RWRpdE1vZGVDYWNoZTogUmVjb3JkPHN0cmluZywgdHlwZW9mIEFueT4gPSB7fTtcblxuXHRpbml0aWFsQ29udHJvbFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG5cdGNvbnN0cnVjdG9yKG1TZXR0aW5ncz86IFByb3BlcnRpZXNPZjxUYWJsZUFQST4gJiB7IGlkPzogc3RyaW5nIH0sIC4uLm90aGVyczogJENvbnRyb2xTZXR0aW5nc1tdKSB7XG5cdFx0c3VwZXIobVNldHRpbmdzLCAuLi5vdGhlcnMpO1xuXHRcdHRoaXMub3JpZ2luYWxUYWJsZURlZmluaXRpb24gPSB0aGlzLnRhYmxlRGVmaW5pdGlvbjtcblx0XHR0aGlzLnNldExheW91dERhdGEobmV3IEZsZXhJdGVtRGF0YSh7IG1heFdpZHRoOiBcIjEwMCVcIiB9KSk7XG5cdFx0dGhpcy5hdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIoKTtcblx0XHR0aGlzLmF0dGFjaE1hbmlmZXN0RXZlbnRzKCk7XG5cdFx0dGhpcy5vdmVycmlkZVJvd1ByZXNzID0gdGhpcy5oYXNMaXN0ZW5lcnMoXCJyb3dQcmVzc1wiKTtcblx0fVxuXG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAuZmUuY29yZS5JUm93QmluZGluZ0ludGVyZmFjZVwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF9mZV9jb3JlX0lSb3dCaW5kaW5nSW50ZXJmYWNlID0gdHJ1ZTtcblxuXHRnZXRSb3dCaW5kaW5nKHBhcmFtZXRlcnM/OiBvYmplY3QpOiBPRGF0YUxpc3RCaW5kaW5nIHtcblx0XHRjb25zdCBtZGNUYWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRjb25zdCBkYXRhTW9kZWwgPSBtZGNUYWJsZS5nZXRNb2RlbCgpO1xuXHRcdHJldHVybiAoXG5cdFx0XHRtZGNUYWJsZS5nZXRSb3dCaW5kaW5nKCkgPz9cblx0XHRcdChkYXRhTW9kZWw/LmJpbmRMaXN0KHRoaXMuZ2V0Um93Q29sbGVjdGlvblBhdGgoKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgcGFyYW1ldGVycykgYXMgT0RhdGFMaXN0QmluZGluZylcblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBhdHRhY2hTdGF0ZUNoYW5nZUhhbmRsZXIoKTogdm9pZCB7XG5cdFx0U3RhdGVVdGlsLmRldGFjaFN0YXRlQ2hhbmdlKHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0XHRTdGF0ZVV0aWwuYXR0YWNoU3RhdGVDaGFuZ2UodGhpcy5zdGF0ZUNoYW5nZUhhbmRsZXIpO1xuXHR9XG5cblx0c3RhdGVDaGFuZ2VIYW5kbGVyKG9FdmVudDogRXZlbnQ8eyBjb250cm9sOiBDb250cm9sIH0+KTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb250cm9sXCIpO1xuXHRcdGlmIChjb250cm9sLmlzQTxUYWJsZT4oXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHRjb25zdCB0YWJsZUFQSSA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyB7IGhhbmRsZVN0YXRlQ2hhbmdlPzogRnVuY3Rpb24gfTtcblx0XHRcdGlmICh0YWJsZUFQST8uaGFuZGxlU3RhdGVDaGFuZ2UpIHtcblx0XHRcdFx0dGFibGVBUEkuaGFuZGxlU3RhdGVDaGFuZ2UoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQXR0YWNoIHRoZSBldmVudCBoYW5kbGVycyBjb21pbmcgZnJvbSB0aGUgbWFuaWZlc3QgZm9yICdyb3dQcmVzcycsICdzZWxlY3Rpb25DaGFuZ2UnIGFuZCAnYmVmb3JlUmViaW5kVGFibGUnLlxuXHQgKiBXZSBpZ25vcmUgdGhlIG1hbmlmZXN0IGhhbmRsZXJzIGlmIHRoZSB0YWJsZSBhbHJlYWR5IGhhcyBldmVudCBoYW5kbGVycyAob3ZlcnJpZGUpLlxuXHQgKi9cblx0cHJpdmF0ZSBhdHRhY2hNYW5pZmVzdEV2ZW50cygpOiB2b2lkIHtcblx0XHRjb25zdCBhdHRhY2hJZk5vTGlzdGVuZXJzID0gKGV2ZW50TmFtZTogc3RyaW5nLCBtZXRob2RDb25maWc6IEV4dGVybmFsTWV0aG9kQ29uZmlnIHwgdW5kZWZpbmVkKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAoIXRoaXMuaGFzTGlzdGVuZXJzKGV2ZW50TmFtZSkgJiYgbWV0aG9kQ29uZmlnICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0dGhpcy5hdHRhY2hFdmVudChldmVudE5hbWUsICh1aTVFdmVudDogVUk1RXZlbnQpID0+IHtcblx0XHRcdFx0XHRGUE1IZWxwZXIubG9hZE1vZHVsZUFuZENhbGxNZXRob2QobWV0aG9kQ29uZmlnLm1vZHVsZU5hbWUsIG1ldGhvZENvbmZpZy5tZXRob2ROYW1lLCB1aTVFdmVudCwgdWk1RXZlbnQpLmNhdGNoKFxuXHRcdFx0XHRcdFx0KGVycm9yKSA9PiB7XG5cdFx0XHRcdFx0XHRcdExvZy5lcnJvcihcblx0XHRcdFx0XHRcdFx0XHRgRmFpbGVkIHRvIGNhbGwgJHtldmVudE5hbWV9IGV2ZW50IGhhbmRsZXIgJHttZXRob2RDb25maWcubW9kdWxlTmFtZX0gJHttZXRob2RDb25maWcubWV0aG9kTmFtZX1gLFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGF0dGFjaElmTm9MaXN0ZW5lcnMoXG5cdFx0XHRcImJlZm9yZVJlYmluZFRhYmxlXCIsXG5cdFx0XHRnZXRDdXN0b21GdW5jdGlvbkluZm8odGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LmJlZm9yZVJlYmluZFRhYmxlLCB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbClcblx0XHQpO1xuXHRcdGF0dGFjaElmTm9MaXN0ZW5lcnMoXCJyb3dQcmVzc1wiLCBnZXRDdXN0b21GdW5jdGlvbkluZm8odGhpcy50YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LnJvd1ByZXNzLCB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uY29udHJvbCkpO1xuXHRcdGF0dGFjaElmTm9MaXN0ZW5lcnMoXG5cdFx0XHRcInNlbGVjdGlvbkNoYW5nZVwiLFxuXHRcdFx0Z2V0Q3VzdG9tRnVuY3Rpb25JbmZvKHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sPy5zZWxlY3Rpb25DaGFuZ2UsIHRoaXMudGFibGVEZWZpbml0aW9uPy5jb250cm9sKVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhbiBpbGx1c3RyYXRlZCBtZXNzYWdlIGR1cmluZyB0aGUgaW5pdGlhbGlzYXRpb24gb2YgdGhlIHRhYmxlIEFQSS5cblx0ICogVXNlZnVsIGlmIHdlIGhhdmUgYSBidWlsZGluZyBibG9jayBpbiBhIGxpc3QgcmVwb3J0IHdpdGhvdXQgaW5pdGlhbCBsb2FkLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJpdmF0ZSBzZXRVcE5vRGF0YUluZm9ybWF0aW9uKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdGlmICghdGFibGUgfHwgdGFibGUuZ2V0Tm9EYXRhKCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGxldCBkZXNjcmlwdGlvbjtcblx0XHRsZXQgdGl0bGU7XG5cdFx0aWYgKG93bmVyKSB7XG5cdFx0XHRjb25zdCByZXNvdXJjZU1vZGVsID0gZ2V0UmVzb3VyY2VNb2RlbChvd25lcik7XG5cdFx0XHRpZiAocmVzb3VyY2VNb2RlbCkge1xuXHRcdFx0XHRsZXQgc3VmZml4O1xuXHRcdFx0XHRjb25zdCBtZXRhUGF0aCA9IHRoaXMubWV0YVBhdGg7XG5cdFx0XHRcdGlmIChtZXRhUGF0aCkge1xuXHRcdFx0XHRcdHN1ZmZpeCA9IG1ldGFQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gbWV0YVBhdGguc3Vic3RyaW5nKDEpIDogbWV0YVBhdGg7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGl0bGUgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX0lMTFVTVFJBVEVEX01FU1NBR0VfVElUTEVfQkVGT1JFU0VBUkNIXCIsIHVuZGVmaW5lZCwgc3VmZml4KTtcblx0XHRcdFx0ZGVzY3JpcHRpb24gPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX1RBQkxFX0FORF9DSEFSVF9OT19EQVRBX1RFWFRcIiwgdW5kZWZpbmVkLCBzdWZmaXgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUudGVtcGxhdGVzXCIpITtcblx0XHRcdHRpdGxlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfSUxMVVNUUkFURURfTUVTU0FHRV9USVRMRV9CRUZPUkVTRUFSQ0hcIik7XG5cdFx0XHRkZXNjcmlwdGlvbiA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX1RBQkxFX0FORF9DSEFSVF9OT19EQVRBX1RFWFRcIik7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZ2V0Tm9EYXRhTWVzc2FnZU1vZGUoKSA9PT0gXCJ0ZXh0XCIpIHtcblx0XHRcdHRoaXMuc2V0QWdncmVnYXRpb24oXCJub0RhdGFcIiwgbmV3IFRleHQoeyB0ZXh0OiBkZXNjcmlwdGlvbiB9KSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGlsbHVzdHJhdGVkTWVzc2FnZSA9IG5ldyBJbGx1c3RyYXRlZE1lc3NhZ2Uoe1xuXHRcdFx0XHR0aXRsZTogdGl0bGUsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcblx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZTogSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5CZWZvcmVTZWFyY2gsXG5cdFx0XHRcdGlsbHVzdHJhdGlvblNpemU6IHRoaXMuZ2V0Tm9EYXRhTWVzc2FnZU1vZGUoKSxcblx0XHRcdFx0ZW5hYmxlRGVmYXVsdFRpdGxlQW5kRGVzY3JpcHRpb246IGZhbHNlXG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5zZXRBZ2dyZWdhdGlvbihcIm5vRGF0YVwiLCBpbGx1c3RyYXRlZE1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLnNlY3Rpb24uSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF9mZV9tYWNyb3NfY29udHJvbHNfc2VjdGlvbl9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yID0gdHJ1ZTtcblxuXHRnZXRTZWN0aW9uQ29udGVudFJvbGUoKTogXCJwcm92aWRlclwiIHwgXCJjb25zdW1lclwiIHtcblx0XHRyZXR1cm4gXCJjb25zdW1lclwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZW5kRGF0YVRvQ29uc3VtZXIgbWV0aG9kIHdoaWNoIGlzIGEgcGFydCBvZiB0aGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclxuXHQgKlxuXHQgKiBXaWxsIGJlIGNhbGxlZCBmcm9tIHRoZSBzYXAuZmUubWFjcm9zLmNvbnRyb2xzLlNlY3Rpb24gY29udHJvbCB3aGVuIHRoZXJlIGlzIGEgVGFibGUgYnVpbGRpbmcgYmxvY2sgcmVuZGVyZWQgd2l0aGluIGEgc2VjdGlvblxuXHQgKiBhbG9uZyB3aXRoIHRoZSBjb25zdW1lckRhdGEgaS5lLiBzZWN0aW9uJ3MgZGF0YSBzdWNoIGFzIHRpdGxlIGFuZCB0aXRsZSBsZXZlbCB3aGljaCBpcyB0aGVuIGFwcGxpZWQgdG8gdGhlIHRhYmxlIHVzaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBiZWxvdyBhY2NvcmRpbmdseS5cblx0ICpcblx0ICovXG5cblx0c2VuZERhdGFUb0NvbnN1bWVyKGNvbnN1bWVyRGF0YTogQ29uc3VtZXJEYXRhKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyKGNvbnN1bWVyRGF0YS50aXRsZSk7XG5cdFx0XHR0aGlzLmNvbnRlbnQ/LnNldEhlYWRlclN0eWxlKGNvbnN1bWVyRGF0YS5oZWFkZXJTdHlsZSBhcyBUaXRsZUxldmVsKTtcblx0XHRcdHRoaXMuY29udGVudD8uc2V0SGVhZGVyTGV2ZWwoY29uc3VtZXJEYXRhLnRpdGxlTGV2ZWwgYXMgVGl0bGVMZXZlbCk7XG5cdFx0fVxuXHR9XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1xuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50XCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcIlxuXHRcdF0sXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0bWV0YVBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl1cblx0fSlcblx0Y29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHR0YWJsZURlZmluaXRpb24hOiBUYWJsZVZpc3VhbGl6YXRpb247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZW50SWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRlbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZUZ1bGxTY3JlZW4/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZUV4cG9ydD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRleHBvcnRGaWxlTmFtZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGV4cG9ydFNoZWV0TmFtZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImludFwiIH0pXG5cdGZyb3plbkNvbHVtbkNvdW50PzogbnVtYmVyO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGRpc2FibGVDb2x1bW5GcmVlemU/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkF1dG9cIiwgXCJGaXhlZFwiXSB9KVxuXHRyb3dDb3VudE1vZGU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRyb3dDb3VudD86IG51bWJlcjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlbmFibGVQYXN0ZT86IGJvb2xlYW4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImludFwiIH0pXG5cdHNjcm9sbFRocmVzaG9sZD86IG51bWJlcjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImludFwiIH0pXG5cdHRocmVzaG9sZD86IG51bWJlcjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJCbG9ja1wiLCBcIkdyaWRMYXJnZVwiLCBcIkdyaWRTbWFsbFwiXSB9KVxuXHRwb3BpbkxheW91dD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpc1NlYXJjaGFibGU/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkdyaWRUYWJsZVwiLCBcIlJlc3BvbnNpdmVUYWJsZVwiLCBcIkFuYWx5dGljYWxUYWJsZVwiXSB9KVxuXHR0eXBlPzogVGFibGVUeXBlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHVzZUNvbmRlbnNlZExheW91dD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiTm9uZVwiLCBcIlNpbmdsZVwiLCBcIk11bHRpXCIsIFwiQXV0b1wiLCBcIkZvcmNlTXVsdGlcIiwgXCJGb3JjZVNpbmdsZVwiXSB9KVxuXHRzZWxlY3Rpb25Nb2RlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGNvbmRlbnNlZFRhYmxlTGF5b3V0PzogYm9vbGVhbjtcblxuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cFwiLCBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uT3ZlcnJpZGVcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbkdyb3VwT3ZlcnJpZGVcIl0sXG5cdFx0bXVsdGlwbGU6IHRydWVcblx0fSlcblx0YWN0aW9ucz86IChBY3Rpb24gfCBBY3Rpb25Hcm91cCB8IEFjdGlvbk92ZXJyaWRlIHwgQWN0aW9uR3JvdXBPdmVycmlkZSlbXTtcblxuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5PdmVyZmxvd0dyb3VwXCIsXG5cdFx0bXVsdGlwbGU6IHRydWVcblx0fSlcblx0YWN0aW9uT3ZlcmZsb3dHcm91cHM/OiBPdmVyZmxvd0dyb3VwW107XG5cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uT3ZlcnJpZGVcIl0sXG5cdFx0bXVsdGlwbGU6IHRydWVcblx0fSlcblx0Y29sdW1ucz86IChDb2x1bW4gfCBDb2x1bW5PdmVycmlkZSlbXTtcblxuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgJ3JlYWQtb25seScgc3RhdGUgb2YgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBJZiB5b3UgZG8gbm90IHNldCBhbnkgZXhwcmVzc2lvbiwgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc3RhdGUuXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRyZWFkT25seSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXIgYnVpbGRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZS5cblx0ICovXG5cdC8vQGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIiB9KVxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpbHRlckJhcj86IHN0cmluZztcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBjb2x1bW4gd2lkdGggaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9KVxuXHRlbmFibGVBdXRvQ29sdW1uV2lkdGghOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBoZWFkZXIgc2hvdWxkIGJlIGEgcGFydCBvZiB0aGUgd2lkdGggY2FsY3VsYXRpb24uXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcj86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIHNpemUgb2YgdGhlIElsbHVzdHJhdGVkTWVzc2FnZSBpbiB0aGUgdGFibGUsIG9yIHJlbW92ZXMgaXQgY29tcGxldGVseS5cblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRGlhbG9nYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TcG90YCBvciBgdGV4dGAuXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0YWxsb3dlZFZhbHVlczogW1xuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtRGlhbG9nXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1NZWRpdW1cIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLURvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtRXh0cmFTbWFsbFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU2NlbmVcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUxhcmdlXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1TcG90XCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1TbWFsbFwiLFxuXHRcdFx0XCJ0ZXh0XCJcblx0XHRdXG5cdH0pXG5cdG1vZGVGb3JOb0RhdGFNZXNzYWdlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGRhdGFJbml0aWFsaXplZCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0YmluZGluZ1N1c3BlbmRlZCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0b3V0RGF0ZWRCaW5kaW5nITogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRpc0FscCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHR2YXJpYW50TWFuYWdlbWVudD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGlnbm9yZWRGaWVsZHM/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpZCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IFwiXCIgfSlcblx0ZmllbGRNb2RlITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiLCBkZWZhdWx0VmFsdWU6IFRpdGxlTGV2ZWwuQXV0byB9KVxuXHRoZWFkZXJMZXZlbCE6IFRpdGxlTGV2ZWw7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5UaXRsZUxldmVsXCIgfSlcblx0aGVhZGVyU3R5bGU/OiBUaXRsZUxldmVsO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIgfSlcblx0ZXhwb3J0UmVxdWVzdFNpemU/OiBudW1iZXI7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aW5pdGlhbExvYWQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGljaCBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgdGFibGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZy5cblx0ICpcblx0ICogSWYgaXQgaXMgc2V0IHRvIGB0cnVlYCwgYWxsIHBvc3NpYmxlIG9wdGlvbnMgZm9yIHRoaXMga2luZCBvZiB0YWJsZSBhcmUgZW5hYmxlZC48YnIvPlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYGZhbHNlYCwgcGVyc29uYWxpemF0aW9uIGlzIGRpc2FibGVkLjxici8+XG5cdCAqPGJyLz5cblx0ICogWW91IGNhbiBhbHNvIHByb3ZpZGUgYSBtb3JlIGdyYW51bGFyIGNvbnRyb2wgZm9yIHRoZSBwZXJzb25hbGl6YXRpb24gYnkgcHJvdmlkaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aCB0aGUgb3B0aW9ucyB5b3Ugd2FudCB0byBiZSBhdmFpbGFibGUuPGJyLz5cblx0ICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOjxici8+XG5cdCAqICAtIFNvcnQ8YnIvPlxuXHQgKiAgLSBDb2x1bW48YnIvPlxuXHQgKiAgLSBGaWx0ZXI8YnIvPlxuXHQgKiAgLSBHcm91cDxici8+XG5cdCAqPGJyLz5cblx0ICogVGhlIEdyb3VwIG9wdGlvbiBpcyBvbmx5IGFwcGxpY2FibGUgdG8gYW5hbHl0aWNhbCB0YWJsZXMgYW5kIHJlc3BvbnNpdmUgdGFibGVzLjxici8+XG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHBlcnNvbmFsaXphdGlvbj86IHN0cmluZztcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBoZWFkZXIgdGV4dCB0aGF0IGlzIHNob3duIGluIHRoZSB0YWJsZS5cblx0ICpcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0aGVhZGVyPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHVzZUJhc2ljU2VhcmNoPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBlbXB0eSByb3dzIGFyZSBlbmFibGVkLiBUaGlzIGFsbG93cyB0byBoYXZlIGR5bmFtaWMgZW5hYmxlbWVudCBvZiB0aGUgZW1wdHkgcm93cyB1c2luZyB0aGUgc2V0dGVyIGZ1bmN0aW9uLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0ZW1wdHlSb3dzRW5hYmxlZCE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90LlxuXHQgKlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGlzQmluZGluZ0luZm86IHRydWUgfSlcblx0aGVhZGVyVmlzaWJsZT86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiBcIlwiIH0pXG5cdHRhYlRpdGxlITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluTXVsdGlWaWV3PzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRkaXNwbGF5U2VnbWVudGVkQnV0dG9uPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXM/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVuYWJsZVNlbGVjdEFsbD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJpbnRcIiB9KVxuXHRzZWxlY3Rpb25MaW1pdD86IG51bWJlcjtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVDcmVhdGlvbk9wdGlvbnNcIiwgZGVmYXVsdENsYXNzOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB9KVxuXHRjcmVhdGlvbk1vZGU/OiBUYWJsZUNyZWF0aW9uT3B0aW9ucztcblxuXHQvKipcblx0ICogQWdncmVnYXRpb24gdG8gZm9yd2FyZCB0aGUgSWxsdXN0cmF0ZWRNZXNzYWdlIGNvbnRyb2wgdG8gdGhlIG1kYyBjb250cm9sLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLm0uSWxsdXN0cmF0ZWRNZXNzYWdlXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5tLlRleHRcIl0sXG5cdFx0Zm9yd2FyZGluZzoge1xuXHRcdFx0Z2V0dGVyOiBcImdldE1EQ1RhYmxlXCIsXG5cdFx0XHRhZ2dyZWdhdGlvbjogXCJub0RhdGFcIlxuXHRcdH1cblx0fSlcblx0bm9EYXRhPzogSWxsdXN0cmF0ZWRNZXNzYWdlO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29udHJvbCB0aGUgYWdncmVnYXRpb24gYmVoYXZpb3Jcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQW5hbHl0aWNhbENvbmZpZ3VyYXRpb25cIlxuXHR9KVxuXHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbj86IEFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIG9mIHRoZSB0YWJsZS5cblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlF1aWNrVmFyaWFudFNlbGVjdGlvblwiXG5cdH0pXG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IFF1aWNrVmFyaWFudFNlbGVjdGlvbjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIG1hc3MgZWRpdCBvZiB0aGUgdGFibGUuXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5NYXNzRWRpdFwiXG5cdH0pXG5cdG1hc3NFZGl0PzogTWFzc0VkaXQ7XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB0YWJsZSBpcyBhYm91dCB0byBiZSByZWJvdW5kLiBUaGlzIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nIGluZm8uXG5cdCAqXG5cdCAqIFRoZSBldmVudCBjb250YWlucyBhIHBhcmFtZXRlciwgYGNvbGxlY3Rpb25CaW5kaW5nSW5mb2AsIHdoaWNoIGlzIGFuIGluc3RhbmNlIG9mIGBDb2xsZWN0aW9uQmluZGluZ0luZm9BUElgLlxuXHQgKiBUaGlzIGFsbG93cyB5b3UgdG8gbWFuaXB1bGF0ZSB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYXR0YWNoIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICpcblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhZGQgb3IgcmVhZDogRmlsdGVycywgU29ydGVycy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byByZWFkIHRoZSBiaW5kaW5nIGluZm8uXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYWRkOiBTZWxlY3RzLlxuXHQgKi9cblx0QGV2ZW50KClcblx0YmVmb3JlUmViaW5kVGFibGU/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhIHJvdzsgdGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHJvdyBpcyBjaG9zZW4uXG5cdCAqXG5cdCAqIFlvdSBjYW4gc2V0IHRoaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIG1hbnVhbGx5LlxuXHQgKi9cblx0QGV2ZW50KClcblx0cm93UHJlc3M/OiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc3dpdGNoZWQgYmV0d2VlbiB2aWV3IGluIGFuIEFMUC5cblx0ICovXG5cdEBldmVudCgpXG5cdHNlZ21lbnRlZEJ1dHRvblByZXNzPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNhdmVkIHRoZSB2YXJpYW50LlxuXHQgKi9cblx0QGV2ZW50KClcblx0dmFyaWFudFNhdmVkPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdGVkIGEgdmFyaWFudC5cblx0ICovXG5cdEBldmVudCgpXG5cdHZhcmlhbnRTZWxlY3RlZD86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgVGFibGUgbGlzdCBiaW5kaW5nIGNoYW5nZXMuXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRsaXN0QmluZGluZ0NoYW5nZT86IEZ1bmN0aW9uO1xuXG5cdEBldmVudCgpXG5cdGludGVybmFsRGF0YVJlcXVlc3RlZCE6IEZ1bmN0aW9uO1xuXG5cdGNvbnRleHRPYmplY3RQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50PjtcblxuXHRwcml2YXRlIGlnbm9yZUNvbnRleHRDaGFuZ2VFdmVudCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgbG9jazogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuXHRzdG9yZWRFdmVudHM6IEV2ZW50SGFuZGxlcltdID0gW107XG5cblx0b3ZlcnJpZGVSb3dQcmVzcyA9IGZhbHNlO1xuXG5cdGluaXQoKTogdm9pZCB7XG5cdFx0cmV0dXJuIHN1cGVyLmluaXQodHJ1ZSk7XG5cdH1cblxuXHRnZXRJZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuaWdub3JlQ29udGV4dENoYW5nZUV2ZW50O1xuXHR9XG5cblx0c2V0SWdub3JlQ29udGV4dENoYW5nZUV2ZW50KHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5pZ25vcmVDb250ZXh0Q2hhbmdlRXZlbnQgPSB2YWx1ZTtcblx0fVxuXG5cdHNldEJ1c3kodmFsdWU6IGJvb2xlYW4pOiB0aGlzIHtcblx0XHRzdXBlci5zZXRCdXN5KHZhbHVlKTtcblx0XHR0aGlzLmNvbnRlbnQ/LnNldEJ1c3kodmFsdWUpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSBUYWJsZUFQSS5cblx0ICogQHBhcmFtIGV2ZW50SGFuZGxlcnNcblx0ICovXG5cdHNldEF0dGFjaEV2ZW50cyhldmVudEhhbmRsZXJzOiBFdmVudEhhbmRsZXJbXSk6IHZvaWQge1xuXHRcdHRoaXMuc3RvcmVkRXZlbnRzID0gZXZlbnRIYW5kbGVycztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSByZWxldmFudCB0YWJsZUFQSSBmb3IgYSBVSTUgZXZlbnQuXG5cdCAqIEFuIGV2ZW50IGNhbiBiZSB0cmlnZ2VyZWQgZWl0aGVyIGJ5IHRoZSBpbm5lciBjb250cm9sICh0aGUgdGFibGUpIG9yIHRoZSBPRGF0YSBsaXN0QmluZGluZ1xuXHQgKiBUaGUgZmlyc3QgaW5pdGlhdG9yIGlzIHRoZSB1c3VhbCBvbmUgc28gaXQncyBtYW5hZ2VkIGJ5IHRoZSBNYWNyb0FQSSB3aGVyZWFzXG5cdCAqIHRoZSBzZWNvbmQgb25lIGlzIHNwZWNpZmljIHRvIHRoaXMgQVBJIGFuZCBoYXMgdG8gbWFuYWdlZCBieSB0aGUgVGFibGVBUEkuXG5cdCAqIEBwYXJhbSBzb3VyY2UgVGhlIFVJNSBldmVudCBzb3VyY2Vcblx0ICogQHJldHVybnMgVGhlIFRhYmxlQVBJIG9yIGZhbHNlIGlmIG5vdCBmb3VuZFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c3RhdGljIF9nZXRBUElFeHRlbnNpb24oc291cmNlOiBNYW5hZ2VkT2JqZWN0KTogVGFibGVBUEkgfCB1bmRlZmluZWQge1xuXHRcdGxldCB0YWJsZUFQSTogVGFibGVBUEkgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHNvdXJjZS5pc0E8T0RhdGFMaXN0QmluZGluZz4oXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0dGFibGVBUEkgPSAoKHRoaXMgYXMgdW5rbm93biBhcyBYTUxFdmVudEhvbGRlcikuaW5zdGFuY2VNYXA/LmdldCh0aGlzKSBhcyBUYWJsZUFQSVtdKT8uZmluZChcblx0XHRcdFx0KGFwaSkgPT4gYXBpLmNvbnRlbnQ/LmdldFJvd0JpbmRpbmc/LigpID09PSBzb3VyY2UgfHwgYXBpLmNvbnRlbnQ/LmdldEJpbmRpbmcoXCJpdGVtc1wiKSA9PT0gc291cmNlXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGFibGVBUEk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyBjb250ZXh0cyBmcm9tIHRoZSB0YWJsZSB0aGF0IGhhdmUgYmVlbiBzZWxlY3RlZCBieSB0aGUgdXNlci5cblx0ICogQHJldHVybnMgQ29udGV4dHMgb2YgdGhlIHJvd3Mgc2VsZWN0ZWQgYnkgdGhlIHVzZXJcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0U2VsZWN0ZWRDb250ZXh0cygpOiBDb250ZXh0W10ge1xuXHRcdC8vIFdoZW4gYSBjb250ZXh0IG1lbnUgaXRlbSBoYXMgYmVlbiBwcmVzc2VkLCB0aGUgc2VsZWN0ZWRDb250ZXh0cyBjb3JyZXNwb25kIHRvIHRoZSBpdGVtcyBvbiB3aGljaFxuXHRcdC8vIHRoZSBjb3JyZXNwb25kaW5nIGFjdGlvbiBzaGFsbCBiZSBhcHBsaWVkLlxuXHRcdHJldHVybiB0aGlzLmlzQ29udGV4dE1lbnVBY3RpdmUoKVxuXHRcdFx0PyB0aGlzLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiY29udGV4dG1lbnUvc2VsZWN0ZWRDb250ZXh0c1wiKSA/PyBbXVxuXHRcdFx0OiB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRDb250ZXh0cygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYWxsIGNvbnRleHRzIHRoYXQgYXJlIGxvYWRlZCBpbiB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIFNlZSBhbHNvIHRoZSB7QGxpbmsgc2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmcjZ2V0QWxsQ3VycmVudENvbnRleHRzfSBtZXRob2QuXG5cdCAqIEByZXR1cm5zIEFsbCBjb250ZXh0cyBvZiB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcsIG9yIHVuZGVmaW5lZCBpZiB0aGUgdGFibGUgZGF0YSBpcyBub3QgeWV0IGxvYWRlZC5cblx0ICogQHB1YmxpY1xuXHQgKiBAc2luY2UgMS4xNDIuMFxuXHQgKi9cblx0Z2V0QWxsQ3VycmVudENvbnRleHRzKCk6IENvbnRleHRbXSB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudD8uZ2V0Um93QmluZGluZygpPy5nZXRBbGxDdXJyZW50Q29udGV4dHMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgdGhlIHNlbGVjdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKiBAc2luY2UgMS4xNDIuMFxuXHQgKi9cblx0Y2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG5cdFx0dGhpcy5jb250ZW50Py5jbGVhclNlbGVjdGlvbigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBtZXNzYWdlIHRvIHRoZSB0YWJsZS5cblx0ICpcblx0ICogVGhlIG1lc3NhZ2UgYXBwbGllcyB0byB0aGUgd2hvbGUgdGFibGUgYW5kIG5vdCB0byBhbiBpbmRpdmlkdWFsIHRhYmxlIHJvdy5cblx0ICogQHBhcmFtIFtwYXJhbWV0ZXJzXSBUaGUgcGFyYW1ldGVycyB0byBjcmVhdGUgdGhlIG1lc3NhZ2Vcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMudHlwZSBNZXNzYWdlIHR5cGVcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMubWVzc2FnZSBNZXNzYWdlIHRleHRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMuZGVzY3JpcHRpb24gTWVzc2FnZSBkZXNjcmlwdGlvblxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5wZXJzaXN0ZW50IFRydWUgaWYgdGhlIG1lc3NhZ2UgaXMgcGVyc2lzdGVudFxuXHQgKiBAcmV0dXJucyBQcm9taXNlPHN0cmluZz4gVGhlIElEIG9mIHRoZSBtZXNzYWdlXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGFkZE1lc3NhZ2UocGFyYW1ldGVyczogeyB0eXBlPzogTWVzc2FnZVR5cGU7IG1lc3NhZ2U/OiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nOyBwZXJzaXN0ZW50PzogYm9vbGVhbiB9KTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGlmICghdGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSAmJiAhdGFibGUuZ2V0Um93QmluZGluZygpKSB7XG5cdFx0XHRhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBjaGVja0NvbnRleHRDaGFuZ2UgPSBmdW5jdGlvbiAoKTogdm9pZCB7XG5cdFx0XHRcdFx0aWYgKHRhYmxlLmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRcdFx0XHRcdHRhYmxlLmRldGFjaEV2ZW50KFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGNoZWNrQ29udGV4dENoYW5nZSk7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0XHR0YWJsZS5hdHRhY2hFdmVudChcIm1vZGVsQ29udGV4dENoYW5nZVwiLCBjaGVja0NvbnRleHRDaGFuZ2UpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0IHJvd0JpbmRpbmcgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCk7XG5cdFx0Y29uc3QgcmVzb2x2ZWRQYXRoID0gcm93QmluZGluZy5nZXRSZXNvbHZlZFBhdGgoKSBhcyBzdHJpbmc7XG5cdFx0cmV0dXJuIHRoaXMuY3JlYXRlTWVzc2FnZSh0YWJsZSwgcmVzb2x2ZWRQYXRoLCBwYXJhbWV0ZXJzKTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlTWVzc2FnZShcblx0XHR0YWJsZTogTURDVGFibGUsXG5cdFx0cGF0aDogc3RyaW5nLFxuXHRcdHBhcmFtZXRlcnM6IHsgdHlwZT86IE1lc3NhZ2VUeXBlOyBtZXNzYWdlPzogc3RyaW5nOyBkZXNjcmlwdGlvbj86IHN0cmluZzsgcGVyc2lzdGVudD86IGJvb2xlYW4gfVxuXHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG1lc3NhZ2UgPSBuZXcgTWVzc2FnZSh7XG5cdFx0XHR0YXJnZXQ6IHBhdGgsXG5cdFx0XHR0eXBlOiBwYXJhbWV0ZXJzLnR5cGUsXG5cdFx0XHRtZXNzYWdlOiBwYXJhbWV0ZXJzLm1lc3NhZ2UsXG5cdFx0XHRwcm9jZXNzb3I6IHRhYmxlLmdldE1vZGVsKCksXG5cdFx0XHRkZXNjcmlwdGlvbjogcGFyYW1ldGVycy5kZXNjcmlwdGlvbixcblx0XHRcdHBlcnNpc3RlbnQ6IHBhcmFtZXRlcnMucGVyc2lzdGVudFxuXHRcdH0pO1xuXHRcdHRoaXMuX2dldE1lc3NhZ2VNYW5hZ2VyKCkuYWRkTWVzc2FnZXMobWVzc2FnZSk7XG5cdFx0cmV0dXJuIG1lc3NhZ2UuZ2V0SWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgY2hlY2sgaWYgdGhlIHRhYmxlIHNob3VsZCByZXF1ZXN0IHJlY29tbWVuZGF0aW9ucyBmdW5jdGlvbi5cblx0ICogVGhlIHRhYmxlIGluIHZpZXcgc2hvdWxkIG9ubHkgcmVxdWVzdCByZWNvbW1lbmRhdGlvbnMgaWZcblx0ICogMS4gVGhlIFBhZ2UgaXMgaW4gRWRpdCBtb2RlXG5cdCAqIDIuIFRhYmxlIGlzIG5vdCByZWFkIG9ubHlcblx0ICogMy4gSXQgaGFzIGFubm90YXRpb24gZm9yIENvbW1vbi5SZWNvbW1lbmRlZFZhbHVlc0Z1bmN0aW9uXG5cdCAqIDQuIFZpZXcgaXMgbm90IExpc3RSZXBvcnQsIGZvciBPUC9TdWJPUCBhbmQgZm9yd2FyZCB2aWV3cyByZWNvbW1lbmRhdGlvbnMgc2hvdWxkIGJlIHJlcXVlc3RlZC5cblx0ICogQHBhcmFtIF9vRXZlbnRcblx0ICogQHJldHVybnMgVHJ1ZSBpZiByZWNvbW1lbmRhdGlvbnMgbmVlZHMgdG8gYmUgcmVxdWVzdGVkXG5cdCAqL1xuXHRjaGVja0lmUmVjb21tZW5kYXRpb25SZWxldmFudChfb0V2ZW50OiBVSTVFdmVudCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGlzVGFibGVSZWFkT25seSA9IHRoaXMuZ2V0UHJvcGVydHkoXCJyZWFkT25seVwiKTtcblx0XHRjb25zdCBpc0VkaXRhYmxlID0gQ29tbW9uVXRpbHMuZ2V0SXNFZGl0YWJsZSh0aGlzKTtcblx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKTtcblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKTtcblx0XHQvLyByZXF1ZXN0IGZvciBhY3Rpb24gb25seSBpZiB3ZSBhcmUgaW4gT1AvU3ViT1AgYW5kIGluIEVkaXQgbW9kZSwgYWxzbyB0YWJsZSBpcyBub3QgcmVhZE9ubHlcblx0XHRpZiAoIWlzVGFibGVSZWFkT25seSAmJiBpc0VkaXRhYmxlICYmIHZpZXdEYXRhLmNvbnZlcnRlclR5cGUgIT09IFwiTGlzdFJlcG9ydFwiKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSBtZXNzYWdlIGZyb20gdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBtZXNzYWdlXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlbW92ZU1lc3NhZ2UoaWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG1zZ01hbmFnZXIgPSB0aGlzLl9nZXRNZXNzYWdlTWFuYWdlcigpO1xuXHRcdGNvbnN0IG1lc3NhZ2VzID0gbXNnTWFuYWdlci5nZXRNZXNzYWdlTW9kZWwoKS5nZXREYXRhKCk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gbWVzc2FnZXMuZmluZCgoZTogTWVzc2FnZSkgPT4gZS5nZXRJZCgpID09PSBpZCk7XG5cdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0bXNnTWFuYWdlci5yZW1vdmVNZXNzYWdlcyhyZXN1bHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXF1ZXN0cyBhIHJlZnJlc2ggb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZWZyZXNoKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlUm93QmluZGluZyA9IHRoaXMuY29udGVudC5nZXRSb3dCaW5kaW5nKCk7XG5cdFx0aWYgKHRhYmxlUm93QmluZGluZyAmJiAodGFibGVSb3dCaW5kaW5nLmlzUmVsYXRpdmUoKSB8fCB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbnRyb2wudHlwZSA9PT0gXCJUcmVlVGFibGVcIikpIHtcblx0XHRcdC8vIEZvciB0cmVlIHRhYmxlcywgdGhlIHJlZnJlc2ggaXMgYWx3YXlzIGRvbmUgdXNpbmcgc2lkZSBlZmZlY3RzIHRvIHByZXNlcnZlIGV4cGFuc2lvbiBzdGF0ZXNcblx0XHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0Y29uc3QgaGVhZGVyQ29udGV4dCA9IHRhYmxlUm93QmluZGluZy5nZXRIZWFkZXJDb250ZXh0KCk7XG5cblx0XHRcdGlmIChoZWFkZXJDb250ZXh0KSB7XG5cdFx0XHRcdGFwcENvbXBvbmVudFxuXHRcdFx0XHRcdC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKVxuXHRcdFx0XHRcdC5yZXF1ZXN0U2lkZUVmZmVjdHMoW3sgJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IFwiXCIgfV0sIGhlYWRlckNvbnRleHQsIHRhYmxlUm93QmluZGluZy5nZXRHcm91cElkKCkpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0YWJsZVJvd0JpbmRpbmc/LnJlZnJlc2goKTtcblx0XHR9XG5cdH1cblxuXHRnZXRRdWlja0ZpbHRlcigpOiBRdWlja0ZpbHRlclNlbGVjdG9yIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50Py5nZXRRdWlja0ZpbHRlcigpIGFzIFF1aWNrRmlsdGVyU2VsZWN0b3IgfCB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBwcmVzZW50YXRpb24gdmFyaWFudCB0aGF0IGlzIGN1cnJlbnRseSBhcHBsaWVkIG9uIHRoZSB0YWJsZS5cblx0ICogQHJldHVybnMgVGhlIHByZXNlbnRhdGlvbiB2YXJpYW50IGFwcGxpZWQgdG8gdGhlIHRhYmxlXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGdldFByZXNlbnRhdGlvblZhcmlhbnQoKTogUHJvbWlzZTxQcmVzZW50YXRpb25WYXJpYW50Q2xhc3M+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgdGFibGUgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0XHRjb25zdCB0YWJsZVN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZSh0YWJsZSk7XG5cblx0XHRcdC8vV2UgcmVtb3ZlIFwiUHJvcGVydHk6OlwiIGFzIGl0IGlzIHByZWZpeGVkIHRvIHRob3NlIGNvbHVtbnMgdGhhdCBoYXZlIGFzc29jaWF0ZWQgcHJvcGVydHlJbmZvcy5cblx0XHRcdC8vVGhlIFByZXNlbnRhdGlvbiBWYXJpYW50IGZvcm1hdCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgKGl0IGlzIG9ubHkgcmVxdWlyZWQgYnkgdGhlIFRhYmxlIGFuZCBBcHBTdGF0ZSkuXG5cdFx0XHRjb25zdCBzb3J0T3JkZXIgPSB0YWJsZVN0YXRlLnNvcnRlcnM/Lm1hcCgoc29ydGVyOiBTb3J0ZXJzKSA9PiB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0UHJvcGVydHk6IHNvcnRlci5uYW1lLnJlcGxhY2UoXCJQcm9wZXJ0eTo6XCIsIFwiXCIpLFxuXHRcdFx0XHRcdERlc2NlbmRpbmc6IHNvcnRlci5kZXNjZW5kaW5nID8/IGZhbHNlXG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IGdyb3VwTGV2ZWxzID0gdGFibGVTdGF0ZS5ncm91cExldmVscz8ubWFwKChncm91cDogR3JvdXBMZXZlbHMpID0+IHtcblx0XHRcdFx0cmV0dXJuIGdyb3VwLm5hbWUucmVwbGFjZShcIlByb3BlcnR5OjpcIiwgXCJcIik7XG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IHRhYmxlVml6ID0ge1xuXHRcdFx0XHRDb250ZW50OiB0YWJsZVN0YXRlLml0ZW1zPy5tYXAoKGl0ZW06IEl0ZW1zKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFZhbHVlOiBpdGVtLm5hbWVcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0VHlwZTogXCJMaW5lSXRlbVwiXG5cdFx0XHR9O1xuXHRcdFx0Y29uc3QgYWdncmVnYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCB7IGFnZ3JlZ2F0ZWQ/OiBib29sZWFuIH0+ID0ge307XG5cdFx0XHRsZXQgaGFzQWdncmVnYXRpb25zID0gZmFsc2U7XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBpbiB0YWJsZVN0YXRlLmFnZ3JlZ2F0aW9ucykge1xuXHRcdFx0XHRjb25zdCBuZXdLZXkgPSBrZXkucmVwbGFjZShcIlByb3BlcnR5OjpcIiwgXCJcIik7XG5cdFx0XHRcdGFnZ3JlZ2F0aW9uc1tuZXdLZXldID0gdGFibGVTdGF0ZS5hZ2dyZWdhdGlvbnNba2V5XTtcblx0XHRcdFx0aGFzQWdncmVnYXRpb25zID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGluaXRpYWxFeHBhbnNpb25MZXZlbCA9ICh0YWJsZS5nZXRQYXlsb2FkKCkgYXMgeyBpbml0aWFsRXhwYW5zaW9uTGV2ZWw/OiBudW1iZXI7IGhpZXJhcmNoeVF1YWxpZmllcj86IHN0cmluZyB9KVxuXHRcdFx0XHQ/LmluaXRpYWxFeHBhbnNpb25MZXZlbDtcblx0XHRcdGNvbnN0IHRhYmxlUFYgPSBuZXcgUHJlc2VudGF0aW9uVmFyaWFudENsYXNzKCk7XG5cdFx0XHR0YWJsZVBWLnNldFRhYmxlVmlzdWFsaXphdGlvbih0YWJsZVZpeik7XG5cdFx0XHRjb25zdCBwcm9wZXJ0aWVzOiBQdlByb3BlcnRpZXMgPSB7XG5cdFx0XHRcdEdyb3VwQnk6IGdyb3VwTGV2ZWxzIHx8IFtdLFxuXHRcdFx0XHRTb3J0T3JkZXI6IHNvcnRPcmRlciB8fCBbXVxuXHRcdFx0fTtcblx0XHRcdGlmIChoYXNBZ2dyZWdhdGlvbnMpIHtcblx0XHRcdFx0cHJvcGVydGllcy5BZ2dyZWdhdGlvbnMgPSBhZ2dyZWdhdGlvbnM7XG5cdFx0XHR9XG5cdFx0XHRpZiAoaW5pdGlhbEV4cGFuc2lvbkxldmVsKSB7XG5cdFx0XHRcdHByb3BlcnRpZXMuaW5pdGlhbEV4cGFuc2lvbkxldmVsID0gaW5pdGlhbEV4cGFuc2lvbkxldmVsO1xuXHRcdFx0fVxuXHRcdFx0dGFibGVQVi5zZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuXHRcdFx0cmV0dXJuIHRhYmxlUFY7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGNvbnN0IGlkID0gdGhpcy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcblx0XHRcdExvZy5lcnJvcihgVGFibGUgQnVpbGRpbmcgQmxvY2sgKCR7aWR9KSAtIGdldCBwcmVzZW50YXRpb24gdmFyaWFudCBmYWlsZWQgOiAke21lc3NhZ2V9YCk7XG5cdFx0XHR0aHJvdyBFcnJvcihlcnJvciBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgYSBuZXcgcHJlc2VudGF0aW9uIHZhcmlhbnQgdG8gdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGVQViBUaGUgbmV3IHByZXNlbnRhdGlvbiB2YXJpYW50IHRoYXQgaXMgdG8gYmUgc2V0IG9uIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgc2V0UHJlc2VudGF0aW9uVmFyaWFudCh0YWJsZVBWOiBQcmVzZW50YXRpb25WYXJpYW50Q2xhc3MpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgdGFibGUgPSB0aGlzLmNvbnRlbnQ7XG5cblx0XHRcdGNvbnN0IGN1cnJlbnRTdGF0ZVBWID0gYXdhaXQgdGhpcy5nZXRQcmVzZW50YXRpb25WYXJpYW50KCk7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eUluZm9zID0gdGhpcy5nZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zKCk7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eUluZm9OYW1lcyA9IHByb3BlcnR5SW5mb3MubWFwKChwcm9wSW5mbykgPT4gcHJvcEluZm8ua2V5KTtcblx0XHRcdGNvbnN0IG5ld1RhYmxlU3RhdGUgPSBjb252ZXJ0UFZUb1N0YXRlKHRhYmxlUFYsIGN1cnJlbnRTdGF0ZVBWLCBwcm9wZXJ0eUluZm9OYW1lcyk7XG5cdFx0XHRjb25zdCB0YWJsZVByb3BlcnRpZXMgPSB0YWJsZVBWLmdldFByb3BlcnRpZXMoKTtcblx0XHRcdGlmICh0YWJsZVByb3BlcnRpZXM/LmluaXRpYWxFeHBhbnNpb25MZXZlbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGNvbnN0IHRhYmxlUGF5bG9hZCA9IHRhYmxlLmdldFBheWxvYWQoKSBhcyB7IGluaXRpYWxFeHBhbnNpb25MZXZlbD86IG51bWJlcjsgaGllcmFyY2h5UXVhbGlmaWVyPzogc3RyaW5nIH07XG5cdFx0XHRcdHRhYmxlUGF5bG9hZC5pbml0aWFsRXhwYW5zaW9uTGV2ZWwgPSB0YWJsZVByb3BlcnRpZXMuaW5pdGlhbEV4cGFuc2lvbkxldmVsO1xuXHRcdFx0fVxuXHRcdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZSh0YWJsZSwgbmV3VGFibGVTdGF0ZSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGNvbnN0IGlkID0gdGhpcy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcblx0XHRcdExvZy5lcnJvcihgVGFibGUgQnVpbGRpbmcgQmxvY2sgKCR7aWR9KSAtIHNldCBwcmVzZW50YXRpb24gdmFyaWFudCBmYWlsZWQgOiAke21lc3NhZ2V9YCk7XG5cdFx0XHR0aHJvdyBFcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSB2YXJpYW50IG1hbmFnZW1lbnQgYXBwbGllZCB0byB0aGUgdGFibGUuXG5cdCAqIEByZXR1cm5zIEtleSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHZhcmlhbnQuIEluIGNhc2UgdGhlIG1vZGVsIGlzIG5vdCB5ZXQgc2V0LCBgbnVsbGAgd2lsbCBiZSByZXR1cm5lZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0Q3VycmVudFZhcmlhbnRLZXkoKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudC5nZXRWYXJpYW50KCk/LmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IGEgdmFyaWFudCBtYW5hZ2VtZW50IHRvIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIGtleSBLZXkgb2YgdGhlIHZhcmlhbnQgdGhhdCBzaG91bGQgYmUgc2VsZWN0ZWQuIElmIHRoZSBwYXNzZWQga2V5IGRvZXNuJ3QgaWRlbnRpZnkgYSB2YXJpYW50LCBpdCB3aWxsIGJlIGlnbm9yZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNldEN1cnJlbnRWYXJpYW50S2V5KGtleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLmNvbnRlbnQuZ2V0VmFyaWFudCgpO1xuXHRcdHZhcmlhbnRNYW5hZ2VtZW50LnNldEN1cnJlbnRWYXJpYW50S2V5KGtleSk7XG5cdH1cblxuXHRfZ2V0TWVzc2FnZU1hbmFnZXIoKTogTWVzc2FnaW5nIHtcblx0XHRyZXR1cm4gTWVzc2FnaW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSBzZWxlY3Rpb24gaW4gdGhlIHRhYmxlIGNoYW5nZXMuXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRzZWxlY3Rpb25DaGFuZ2U/OiBGdW5jdGlvbjtcblxuXHRfZ2V0Um93QmluZGluZygpOiBPRGF0YUxpc3RCaW5kaW5nIHtcblx0XHRjb25zdCBvVGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRyZXR1cm4gb1RhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0fVxuXG5cdGFzeW5jIGdldENvdW50cygpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHJldHVybiBUYWJsZVV0aWxzLmdldExpc3RCaW5kaW5nRm9yQ291bnQob1RhYmxlLCBvVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSwge1xuXHRcdFx0YmF0Y2hHcm91cElkOiAhdGhpcy5nZXRQcm9wZXJ0eShcImJpbmRpbmdTdXNwZW5kZWRcIikgPyBvVGFibGUuZGF0YShcImJhdGNoR3JvdXBJZFwiKSA6IFwiJGF1dG9cIixcblx0XHRcdGFkZGl0aW9uYWxGaWx0ZXJzOiBUYWJsZVV0aWxzLmdldEhpZGRlbkZpbHRlcnMob1RhYmxlKVxuXHRcdH0pXG5cdFx0XHQudGhlbigoaVZhbHVlOiBudW1iZXIpID0+IHtcblx0XHRcdFx0cmV0dXJuIFRhYmxlVXRpbHMuZ2V0Q291bnRGb3JtYXR0ZWQoaVZhbHVlKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gXCIwXCI7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBjb250ZXh0IGNoYW5nZSBvbiB0aGUgdGFibGUuXG5cdCAqIEFuIGV2ZW50IGlzIGZpcmVkIHRvIHByb3BhZ2F0ZSB0aGUgT2RhdGFMaXN0QmluZGluZyBldmVudCBhbmQgdGhlIGVuYWJsZW1lbnRcblx0ICogb2YgdGhlIGNyZWF0aW9uIHJvdyBpcyBjYWxjdWxhdGVkLlxuXHQgKiBAcGFyYW0gdWk1RXZlbnQgVGhlIFVJNSBldmVudFxuXHQgKi9cblx0b25MaXN0QmluZGluZ0NoYW5nZSh1aTVFdmVudDogVUk1RXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLmZpcmVFdmVudChcImxpc3RCaW5kaW5nQ2hhbmdlXCIsIHVpNUV2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdFx0dGhpcy5zZXRGYXN0Q3JlYXRpb25Sb3dFbmFibGVtZW50KCk7XG5cdFx0dGhpcy5nZXRRdWlja0ZpbHRlcigpPy5yZWZyZXNoU2VsZWN0ZWRDb3VudCgpO1xuXHRcdFRhYmxlUnVudGltZS5zZXRDb250ZXh0c0FzeW5jKHRoaXMuY29udGVudCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uRmllbGRMaXZlQ2hhbmdlIGV2ZW50LlxuXHQgKiBAcGFyYW0gdWk1RXZlbnQgVGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgYnkgdGhlIG9uRmllbGRMaXZlQ2hhbmdlIGV2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25GaWVsZExpdmVDaGFuZ2UodWk1RXZlbnQ6IFVJNUV2ZW50PHt9LCBDb250cm9sPik6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkZpZWxkTGl2ZUNoYW5nZSh1aTVFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgY2hhbmdlIG9uIGEgcXVpY2tGaWx0ZXJcblx0ICogVGhlIHRhYmxlIGlzIHJlYm91bmQgaWYgdGhlIEZpbHRlckJhciBpcyBub3Qgc3VzcGVuZGVkIGFuZCB1cGRhdGUgdGhlIEFwcFN0YXRlLlxuXHQgKlxuXHQgKi9cblx0b25RdWlja0ZpbHRlclNlbGVjdGlvbkNoYW5nZSgpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHQvLyBSZWJpbmQgdGhlIHRhYmxlIHRvIHJlZmxlY3QgdGhlIGNoYW5nZSBpbiBxdWljayBmaWx0ZXIga2V5LlxuXHRcdC8vIFdlIGRvbid0IHJlYmluZCB0aGUgdGFibGUgaWYgdGhlIGZpbHRlckJhciBmb3IgdGhlIHRhYmxlIGlzIHN1c3BlbmRlZFxuXHRcdC8vIGFzIHJlYmluZCB3aWxsIGJlIGRvbmUgd2hlbiB0aGUgZmlsdGVyQmFyIGlzIHJlc3VtZWRcblx0XHRjb25zdCBmaWx0ZXJCYXJJRCA9IHRhYmxlLmdldEZpbHRlcigpO1xuXHRcdGNvbnN0IGZpbHRlckJhciA9IChmaWx0ZXJCYXJJRCAmJiBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKGZpbHRlckJhcklEKSkgYXMgRmlsdGVyQmFyIHwgdW5kZWZpbmVkO1xuXHRcdGlmICghZmlsdGVyQmFyPy5nZXRTdXNwZW5kU2VsZWN0aW9uPy4oKSkge1xuXHRcdFx0dGFibGUucmViaW5kKCk7XG5cdFx0fVxuXHRcdChDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpPy5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIgfCB1bmRlZmluZWQpPy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHR9XG5cblx0b25UYWJsZU5hdmlnYXRlKG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgb0NvbnRleHQ6IENvbnRleHQsIG1QYXJhbWV0ZXJzOiBvYmplY3QpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5pc1RhYmxlUm93TmF2aWdhdGlvblBvc3NpYmxlKG9Db250ZXh0KSkge1xuXHRcdFx0aWYgKHRoaXMuZnVsbFNjcmVlbkRpYWxvZykge1xuXHRcdFx0XHQvLyBFeGl0IGZ1bGxzY3JlZW4gbW9kZSBiZWZvcmUgbmF2aWdhdGlvblxuXHRcdFx0XHR0aGlzLmZ1bGxTY3JlZW5EaWFsb2cuY2xvc2UoKTsgLy8gVGhlIGZ1bGxzY3JlZW5kaWFsb2cgd2lsbCBzZXQgdGhpcy5mdWxsU2NyZWVuRGlhbG9nIHRvIHVuZGVmaW5lZCB3aGVuIGNsb3Npbmdcblx0XHRcdH1cblx0XHRcdGNvbnN0IG5hdmlnYXRpb25QYXJhbWV0ZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgbVBhcmFtZXRlcnMsIHsgcmVhc29uOiBOYXZpZ2F0aW9uUmVhc29uLlJvd1ByZXNzIH0pO1xuXHRcdFx0b0NvbnRyb2xsZXIuX3JvdXRpbmcubmF2aWdhdGVGb3J3YXJkVG9Db250ZXh0KG9Db250ZXh0LCBuYXZpZ2F0aW9uUGFyYW1ldGVycyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciBmb3IgdGhlIHJvdyBwcmVzcyBldmVudCBvZiB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSBwcmVzc0V2ZW50XG5cdCAqIEByZXR1cm5zIFByb21pc2U8Ym9vbGVhbj5cblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvblRhYmxlUm93UHJlc3MocHJlc3NFdmVudDogUm93QWN0aW9uSXRlbSRQcmVzc0V2ZW50KTogUHJvbWlzZTxib29sZWFuIHwgdm9pZD4ge1xuXHRcdGNvbnN0IHByb2NlZWQgPSBhc3luYyAoKTogUHJvbWlzZTxib29sZWFuIHwgdm9pZD4gPT4ge1xuXHRcdFx0Y29uc3Qgcm93TmF2aWdhdGlvbkluZm8gPSB0aGlzLnRhYmxlRGVmaW5pdGlvbj8uYW5ub3RhdGlvbi5yb3c/Lm5hdmlnYXRpb25JbmZvO1xuXHRcdFx0aWYgKHRoaXMub3ZlcnJpZGVSb3dQcmVzcyA9PT0gdHJ1ZSkge1xuXHRcdFx0XHQvLyBUaGVyZSdzIGFuIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSByb3dQcmVzcyBldmVudCAtLT4gd2UganVzdCBmaXJlIHRoZSBldmVudCBhbmQgZG8gbm90IG5hdmlnYXRlXG5cdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwicm93UHJlc3NcIiwgcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHRcdFx0fSBlbHNlIGlmIChyb3dOYXZpZ2F0aW9uSW5mbyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXIoXCJiaW5kaW5nQ29udGV4dFwiKSBhcyBDb250ZXh0O1xuXHRcdFx0XHRpZiAocm93TmF2aWdhdGlvbkluZm8udHlwZSA9PT0gXCJPdXRib3VuZFwiKSB7XG5cdFx0XHRcdFx0Ly8gT3V0Ym91bmQgbmF2aWdhdGlvblxuXHRcdFx0XHRcdHJldHVybiB0aGlzLmF2b2lkUGFyYWxsZWxDYWxscyhcblx0XHRcdFx0XHRcdGFzeW5jICgpID0+XG5cdFx0XHRcdFx0XHRcdGNvbnRyb2xsZXIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5vbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQoXG5cdFx0XHRcdFx0XHRcdFx0Y29udHJvbGxlcixcblx0XHRcdFx0XHRcdFx0XHRyb3dOYXZpZ2F0aW9uSW5mby5uYXZpZ2F0aW9uVGFyZ2V0LFxuXHRcdFx0XHRcdFx0XHRcdGJpbmRpbmdDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHRcdFwiXCJcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFwib25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kXCJcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIEludGVybmFsIG5hdmlnYXRpb25cblx0XHRcdFx0XHRjb25zdCBlZGl0YWJsZSA9IHJvd05hdmlnYXRpb25JbmZvLmNoZWNrRWRpdGFibGUgPyAhYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkoXCJJc0FjdGl2ZUVudGl0eVwiKSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRjb25zdCBwYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdFx0Y2FsbEV4dGVuc2lvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdHRhcmdldFBhdGg6IHJvd05hdmlnYXRpb25JbmZvLnRhcmdldFBhdGgsXG5cdFx0XHRcdFx0XHRlZGl0YWJsZSxcblx0XHRcdFx0XHRcdHJlY3JlYXRlQ29udGV4dDogcm93TmF2aWdhdGlvbkluZm8ucmVjcmVhdGVDb250ZXh0XG5cdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdHJldHVybiB0aGlzLm9uVGFibGVOYXZpZ2F0ZShjb250cm9sbGVyLCBiaW5kaW5nQ29udGV4dCwgcGFyYW1ldGVycyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0YXdhaXQgY29udHJvbGxlci5lZGl0Rmxvdy5zeW5jVGFzayhwcm9jZWVkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGaXJlcyB0aGUgY29ycmVzcG9uZGluZyBldmVudCB3aGVuIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGlzIHByZXNzZWQgKGluIEFMUCkuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwic2VnbWVudGVkQnV0dG9uUHJlc3NcIiwgb0V2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIG5ldyB2YXJpYW50IGlzIHNlbGVjdGVkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25WYXJpYW50U2VsZWN0ZWQob0V2ZW50OiBVSTVFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IHBhcmFtZXRlcnMgPSB7XG5cdFx0XHQuLi5vRXZlbnQuZ2V0UGFyYW1ldGVycygpLFxuXHRcdFx0b3JpZ2luYWxTb3VyY2U6IG9FdmVudC5nZXRTb3VyY2UoKVxuXHRcdH07XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJ2YXJpYW50U2VsZWN0ZWRcIiwgcGFyYW1ldGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIHZhcmlhbnQgaXMgc2F2ZWQuXG5cdCAqIEBwYXJhbSBvRXZlbnRcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvblZhcmlhbnRTYXZlZChvRXZlbnQ6IFVJNUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJ2YXJpYW50U2F2ZWRcIiwgb0V2ZW50LmdldFBhcmFtZXRlcnMoKSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgd2hlbiBhIHJvdyBpcyBwcmVzc2VkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25Sb3dQcmVzc2VkKG9FdmVudDogVUk1RXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLmZpcmVFdmVudChcInJvd1ByZXNzXCIsIG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uTm9vcCgpOiB2b2lkIHtcblx0XHQvLyBEbyBub3RoaW5nLCB0aGlzIGlzIHVzZWQgdG8gZW5zdXJlIHRoZSB0YWJsZSBhY3Rpb24gYXJlIGZpcmVkIGluIHJlc3BvbnNpdmUgdGFibGVcblx0fVxuXG5cdGlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUoY29udGV4dDogQ29udGV4dCk6IGJvb2xlYW4ge1xuXHRcdC8vIHByZXZlbnQgbmF2aWdhdGlvbiB0byBhbiBlbXB0eSByb3dcblx0XHRjb25zdCBlbXB0eVJvdyA9IGNvbnRleHQuaXNJbmFjdGl2ZSgpID09IHRydWUgJiYgY29udGV4dC5pc1RyYW5zaWVudCgpID09PSB0cnVlO1xuXHRcdC8vIE9yIGluIHRoZSBjYXNlIG9mIGFuIGFuYWx5dGljYWwgdGFibGUsIGlmIHdlJ3JlIHRyeWluZyB0byBuYXZpZ2F0ZSB0byBhIGNvbnRleHQgY29ycmVzcG9uZGluZyB0byBhIHZpc3VhbCBncm91cCBvciBncmFuZCB0b3RhbFxuXHRcdC8vIC0tPiBDYW5jZWwgbmF2aWdhdGlvblxuXHRcdGNvbnN0IGFuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkID1cblx0XHRcdHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuZW5hYmxlQW5hbHl0aWNzID09PSB0cnVlICYmXG5cdFx0XHRjb250ZXh0LmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XCIpICYmXG5cdFx0XHR0eXBlb2YgY29udGV4dC5nZXRQcm9wZXJ0eShcIkAkdWk1Lm5vZGUuaXNFeHBhbmRlZFwiKSA9PT0gXCJib29sZWFuXCI7XG5cdFx0cmV0dXJuICEoZW1wdHlSb3cgfHwgYW5hbHl0aWNhbEdyb3VwSGVhZGVyRXhwYW5kZWQpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MoXG5cdFx0b0V2ZW50OiBVSTVFdmVudCxcblx0XHRjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcixcblx0XHRjb250ZXh0czogQ29udGV4dFtdLFxuXHRcdG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtczogbnVtYmVyXG5cdCk6IHZvaWQgfCBib29sZWFuIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0cmV0dXJuIHRoaXMuX29uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MoY29udHJvbGxlciwgY29udGV4dHMsIG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtcyk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25PcGVuSW5OZXdUYWJQcmVzcyhcblx0XHRvRXZlbnQ6IFVJNUV2ZW50LFxuXHRcdGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdGFsbENvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0bmF2aWdhYmxlQ29udGV4dHM6IENvbnRleHRbXSxcblx0XHRwYXJhbWV0ZXJzOiBSb3V0aW5nTmF2aWdhdGlvblBhcmFtZXRlcnMsXG5cdFx0bWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zOiBudW1iZXJcblx0KTogUHJvbWlzZTx2b2lkIHwgYm9vbGVhbj4ge1xuXHRcdGlmIChuYXZpZ2FibGVDb250ZXh0cy5sZW5ndGggPD0gbWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zKSB7XG5cdFx0XHRjb25zdCBwcm9taXNlVG9XYWl0ID0gbmV3IFByb21pc2VLZWVwZXI8Ym9vbGVhbj4oKTtcblx0XHRcdGlmIChuYXZpZ2FibGVDb250ZXh0cy5sZW5ndGggPCBhbGxDb250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdFx0Y29uc3QgdGV4dEtleSA9XG5cdFx0XHRcdFx0bmF2aWdhYmxlQ29udGV4dHMubGVuZ3RoID09PSAxXG5cdFx0XHRcdFx0XHQ/IFwiVF9UQUJMRV9OQVZJR0FUSU9OX05PVF9BTExfSVRFTVNfTkFWSUdBQkxFX1NJTkdVTEFSXCJcblx0XHRcdFx0XHRcdDogXCJUX1RBQkxFX05BVklHQVRJT05fTk9UX0FMTF9JVEVNU19OQVZJR0FCTEVfUExVUkFMXCI7XG5cdFx0XHRcdE1lc3NhZ2VCb3guY29uZmlybShcblx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KHRleHRLZXksIFthbGxDb250ZXh0cy5sZW5ndGgsIG5hdmlnYWJsZUNvbnRleHRzLmxlbmd0aCwgbWF4TnVtYmVyb2ZTZWxlY3RlZEl0ZW1zXSksXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0b25DbG9zZTogKHJlc3VsdDogc3RyaW5nKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChyZXN1bHQgPT09IFwiQ0FOQ0VMXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRwcm9taXNlVG9XYWl0LnJlc29sdmUoZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHByb21pc2VUb1dhaXQucmVzb2x2ZSh0cnVlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwcm9taXNlVG9XYWl0LnJlc29sdmUodHJ1ZSk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzaG91bGRQcm9jZWVkID0gYXdhaXQgcHJvbWlzZVRvV2FpdC5wcm9taXNlO1xuXHRcdFx0aWYgKHNob3VsZFByb2NlZWQpIHtcblx0XHRcdFx0bmF2aWdhYmxlQ29udGV4dHMuZm9yRWFjaChhc3luYyAoY29udGV4dDogQ29udGV4dCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUoY29udGV4dCkpIHtcblx0XHRcdFx0XHRcdHBhcmFtZXRlcnMuZWRpdGFibGUgPSAhY29udGV4dC5nZXRQcm9wZXJ0eShcIklzQWN0aXZlRW50aXR5XCIpO1xuXHRcdFx0XHRcdFx0YXdhaXQgY29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQoY29udGV4dCwgcGFyYW1ldGVycyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94Lndhcm5pbmcoXG5cdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiVF9UQUJMRV9OQVZJR0FUSU9OX1RPT19NQU5ZX0lURU1TX1NFTEVDVEVEXCIsIFtcblx0XHRcdFx0XHRtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXNcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uSW50ZXJuYWxQYXRjaENvbXBsZXRlZChldnQ6IEV2ZW50PHsgZXJyb3I6IHsgc3RhdHVzPzogbnVtYmVyOyBjYXVzZT86IHsgc3RhdHVzPzogbnVtYmVyIH07IG1lc3NhZ2U/OiBzdHJpbmcgfSB9Pik6IHZvaWQge1xuXHRcdC8vIEJDUDogMjM4MDAyMzA5MFxuXHRcdC8vIFdlIGhhbmRsZSBlbmFibGVtZW50IG9mIERlbGV0ZSBmb3IgdGhlIHRhYmxlIGhlcmUuXG5cdFx0Ly8gRWRpdEZsb3cudHMjaGFuZGxlUGF0Y2hTZW50IGlzIGhhbmRsaW5nIHRoZSBhY3Rpb24gZW5hYmxlbWVudC5cblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBzZWxlY3RlZENvbnRleHRzID0gdGhpcy5nZXRTZWxlY3RlZENvbnRleHRzKCk7XG5cdFx0RGVsZXRlSGVscGVyLnVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzKGludGVybmFsTW9kZWxDb250ZXh0LCBzZWxlY3RlZENvbnRleHRzKTtcblx0XHRpZiAoZXZ0LmdldFBhcmFtZXRlcihcImVycm9yXCIpKSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuc2hvd01lc3NhZ2VEaWFsb2coeyBjb250cm9sOiB0aGlzIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIucmVsZWFzZUhvbGRCeUNvbnRyb2wodGhpcyk7XG5cdFx0fVxuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uSW50ZXJuYWxQYXRjaFNlbnQoZXZ0OiBPRGF0YUNvbnRleHRCaW5kaW5nJFBhdGNoU2VudEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKTtcblx0XHRjb25zdCBlZGl0Rmxvd0V4dGVuc2lvbiA9IGNvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0Y29udHJvbGxlci5tZXNzYWdlSGFuZGxlci5ob2xkTWVzc2FnZXNGb3JDb250cm9sKHRoaXMpO1xuXHRcdGlmICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5oYW5kbGVQYXRjaFNlbnQpIHtcblx0XHRcdGVkaXRGbG93RXh0ZW5zaW9uLmhhbmRsZVBhdGNoU2VudC5jYWxsKHRoaXMsIGV2dCk7XG5cdFx0fSBlbHNlIGlmIChjb250cm9sbGVyLmlubGluZUVkaXRGbG93LmlzSW5saW5lRWRpdFBvc3NpYmxlKCkpIHtcblx0XHRcdGNvbnRyb2xsZXIuaW5saW5lRWRpdEZsb3cuaGFuZGxlSW5saW5lRWRpdFBhdGNoU2VudC5jYWxsKHRoaXMsIGV2dCk7XG5cdFx0fVxuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uSW50ZXJuYWxEYXRhUmVjZWl2ZWQob0V2ZW50OiBVSTVFdmVudDx7IGVycm9yOiBzdHJpbmcgfSwgT0RhdGFMaXN0QmluZGluZz4pOiB2b2lkIHtcblx0XHRjb25zdCBpc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQgPSB0aGlzLmNoZWNrSWZSZWNvbW1lbmRhdGlvblJlbGV2YW50KG9FdmVudCk7XG5cdFx0aWYgKGlzUmVjb21tZW5kYXRpb25SZWxldmFudCkge1xuXHRcdFx0Y29uc3QgY29udGV4dElkZW50aWZpZXIgPSB0aGlzLmdldElkZW50aWZpZXJDb2x1bW4oaXNSZWNvbW1lbmRhdGlvblJlbGV2YW50KSBhcyBzdHJpbmdbXTtcblx0XHRcdGNvbnN0IHJlc3BvbnNlQ29udGV4dHNBcnJheSA9IG9FdmVudC5nZXRTb3VyY2UoKS5nZXRBbGxDdXJyZW50Q29udGV4dHMoKTtcblx0XHRcdGNvbnN0IG5ld0NvbnRleHRzOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdID0gW107XG5cdFx0XHRyZXNwb25zZUNvbnRleHRzQXJyYXkuZm9yRWFjaCgoY29udGV4dCkgPT4ge1xuXHRcdFx0XHRuZXdDb250ZXh0cy5wdXNoKHtcblx0XHRcdFx0XHRjb250ZXh0LFxuXHRcdFx0XHRcdGNvbnRleHRJZGVudGlmaWVyXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkucmVjb21tZW5kYXRpb25zLmZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnMobmV3Q29udGV4dHMsIHRydWUpO1xuXHRcdH1cblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuaG9sZE1lc3NhZ2VzRm9yQ29udHJvbCh0aGlzKTtcblx0XHRpZiAob0V2ZW50LmdldFBhcmFtZXRlcihcImVycm9yXCIpKSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuc2hvd01lc3NhZ2VEaWFsb2coeyBjb250cm9sOiB0aGlzIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIucmVsZWFzZUhvbGRCeUNvbnRyb2wodGhpcyk7XG5cdFx0XHR0aGlzLnNldERvd25sb2FkVXJsKCk7XG5cdFx0fVxuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkKG9FdmVudDogVUk1RXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiZGF0YUluaXRpYWxpemVkXCIsIHRydWUpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiaW50ZXJuYWxEYXRhUmVxdWVzdGVkXCIsIG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHRcdGlmICh0aGlzLmdldFF1aWNrRmlsdGVyKCkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbnRyb2wuZmlsdGVycz8ucXVpY2tGaWx0ZXJzPy5zaG93Q291bnRzID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzLmdldFF1aWNrRmlsdGVyKCk/LnNldENvdW50c0FzTG9hZGluZygpO1xuXHRcdFx0dGhpcy5nZXRRdWlja0ZpbHRlcigpPy5yZWZyZXNoVW5TZWxlY3RlZENvdW50cygpO1xuXHRcdH1cblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuaG9sZE1lc3NhZ2VzRm9yQ29udHJvbCh0aGlzKTtcblx0fVxuXG5cdHNldEJ1c3lMb2NrKGxvY2tlZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLmNvbnRlbnQpO1xuXHRcdGNvbnN0IGJ1c3lJZCA9IHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCk/LmFubm90YXRpb24uaWQ7XG5cdFx0Y29uc3QgYnVzeVBhdGggPSB0aGlzLmdldEJ1c3lQYXRoKGJ1c3lJZCEpO1xuXHRcdGlmIChsb2NrZWQpIHtcblx0XHRcdEJ1c3lMb2NrZXIubG9jayhhcHBDb21wb25lbnQsIGJ1c3lQYXRoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0QnVzeUxvY2tlci51bmxvY2soYXBwQ29tcG9uZW50LCBidXN5UGF0aCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0QnVzeVBhdGgocGF0aDogc3RyaW5nLCBpc0xvY2FsID0gdHJ1ZSk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGlzTG9jYWwgPyBgL2J1c3lMb2NhbC8ke3BhdGh9YCA6IFwiL2J1c3lcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBQYXN0ZSBvcGVyYXRpb24uXG5cdCAqIEBwYXJhbSBldnQgVGhlIGV2ZW50XG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFRoZSBwYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIGZvckNvbnRleHRNZW51XG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25QYXN0ZShldnQ6IFBhc3RlUHJvdmlkZXIkUGFzdGVFdmVudCwgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIGZvckNvbnRleHRNZW51ID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdGNvbnN0IHJhd1Bhc3RlZERhdGEgPSBldnQuZ2V0UGFyYW1ldGVyKFwiZGF0YVwiKSxcblx0XHRcdHNvdXJjZSA9IGV2dC5nZXRTb3VyY2UoKTtcblx0XHRsZXQgdGFibGU6IFRhYmxlO1xuXHRcdGlmICghZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdC8vIHRhYmxlIHRvb2xiYXJcblx0XHRcdHRhYmxlID0gKHNvdXJjZS5pc0EoXCJzYXAudWkubWRjLlRhYmxlXCIpID8gc291cmNlIDogKHNvdXJjZSBhcyBDb250cm9sKS5nZXRQYXJlbnQoKSkgYXMgVGFibGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGNvbnRleHQgbWVudVxuXHRcdFx0Y29uc3QgbWVudSA9IChzb3VyY2UuaXNBKFwic2FwLm0uTWVudVwiKSA/IHNvdXJjZSA6IChzb3VyY2UgYXMgQ29udHJvbCkuZ2V0UGFyZW50KCkpIGFzIE1lbnU7XG5cdFx0XHR0YWJsZSA9IG1lbnUuZ2V0UGFyZW50KCk/LmdldFBhcmVudCgpIGFzIFRhYmxlO1xuXHRcdH1cblx0XHRjb25zdCBpbnRlcm5hbENvbnRleHQgPSB0YWJsZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXG5cdFx0Ly8gSWYgcGFzdGUgaXMgZGlzYWJsZWQgb3IgaWYgd2UncmUgbm90IGluIGVkaXQgbW9kZSBpbiBhbiBPYmplY3RQYWdlLCB3ZSBjYW4ndCBwYXN0ZSBhbnl0aGluZ1xuXHRcdGlmICghdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5lbmFibGVQYXN0ZSB8fCAodGFibGUuZ2V0Um93QmluZGluZygpLmlzUmVsYXRpdmUoKSAmJiAhQ29tbW9uVXRpbHMuZ2V0SXNFZGl0YWJsZSh0aGlzKSkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvL1RoaXMgY29kZSBpcyBleGVjdXRlZCBvbmx5IGluIGNhc2Ugb2YgVHJlZVRhYmxlXG5cdFx0Y29uc3QgYWN0aW9uID0gaW50ZXJuYWxDb250ZXh0LmdldFByb3BlcnR5KFwibm9kZVVwZGF0ZXNJbmZvL2xhc3RBY3Rpb25cIik7XG5cdFx0Y29uc3Qgc3JjQ29udGV4dHMgPSBpbnRlcm5hbENvbnRleHQuZ2V0UHJvcGVydHkoXCJub2RlVXBkYXRlc0luZm8vcGFzdGFibGVDb250ZXh0c1wiKTtcblxuXHRcdGlmICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnR5cGUgPT09IFwiVHJlZVRhYmxlXCIpIHtcblx0XHRcdGxldCBzcmNDb250ZXh0ID0gc3JjQ29udGV4dHNbMF07XG5cdFx0XHRjb25zdCBuZXdQYXJlbnRDb250ZXh0ID0gIWZvckNvbnRleHRNZW51XG5cdFx0XHRcdD8gKHRhYmxlLmdldFNlbGVjdGVkQ29udGV4dHMoKVswXSBhcyBDb250ZXh0KVxuXHRcdFx0XHQ6IChpbnRlcm5hbENvbnRleHQ/LmdldFByb3BlcnR5KFwiY29udGV4dG1lbnUvc2VsZWN0ZWRDb250ZXh0c1wiKVswXSBhcyBDb250ZXh0KTtcblx0XHRcdC8vIElmIHRoZSB0YXJnZXRDb250ZXh0IGhhcyBiZWVuIGRpc2Fzc29jaWF0ZWQgZnJvbSB0aGUgdGFibGUgZHVlIHRvIGV4cGFuZCBhbmQgY29sbGFwc2UgYWN0aW9ucywgd2UgYXR0ZW1wdCB0byByZXRyaWV2ZSBpdCB1c2luZyBpdHMgcGF0aC5cblx0XHRcdHNyY0NvbnRleHQgPSB0YWJsZVxuXHRcdFx0XHQuZ2V0Um93QmluZGluZygpXG5cdFx0XHRcdC5nZXRBbGxDdXJyZW50Q29udGV4dHMoKVxuXHRcdFx0XHQuZmluZCgoY29udGV4dCkgPT4gY29udGV4dC5nZXRQYXRoKCkgPT09IHNyY0NvbnRleHQ/LmdldFBhdGgoKSk7XG5cblx0XHRcdGlmICghc3JjQ29udGV4dCkge1xuXHRcdFx0XHRMb2cuZXJyb3IoYFRoZSAke2FjdGlvbn0gb3BlcmF0aW9uIGlzIHVuc3VjY2Vzc2Z1bCBiZWNhdXNlIHRoZSByZWxldmFudCBjb250ZXh0IGlzIG5vIGxvbmdlciBhdmFpbGFibGVgKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dGhpcy5zZXRCdXN5TG9jayh0cnVlKTtcblx0XHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoW1xuXHRcdFx0XHRcdHNyY0NvbnRleHQubW92ZSh7IHBhcmVudDogbmV3UGFyZW50Q29udGV4dCA/PyBudWxsLCBjb3B5OiBhY3Rpb24gPT09IFwiQ29weVwiIH0pLFxuXHRcdFx0XHRcdGFjdGlvbiA9PT0gXCJDb3B5XCJcblx0XHRcdFx0XHRcdD8gdGhpcy5yZXF1ZXN0U2lkZUVmZmVjdHNGb3JDb3B5QWN0aW9uKHNyY0NvbnRleHQpXG5cdFx0XHRcdFx0XHQ6IHRoaXMucmVxdWVzdFNpZGVFZmZlY3RzRm9yQ2hhbmdlTmV4dFNpYmxpbmdBY3Rpb24oc3JjQ29udGV4dClcblx0XHRcdFx0XSk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyh0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiTV9UQUJMRURST1BfRkFJTEVEXCIsIFtcIlwiXSkpO1xuXHRcdFx0XHRMb2cuZXJyb3IoYFRoZSAke2FjdGlvbn0gb3BlcmF0aW9uIGlzIHVuc3VjY2Vzc2Z1bC4gYCArIChlcnJvciBhcyBFcnJvcikubWVzc2FnZSA/PyBcIlwiKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc2V0QnVzeUxvY2soZmFsc2UpO1xuXHRcdFx0aW50ZXJuYWxDb250ZXh0LnNldFByb3BlcnR5KGBub2RlVXBkYXRlc0luZm8vcGFzdGFibGVDb250ZXh0c2AsIFtdKTtcblx0XHRcdGludGVybmFsQ29udGV4dC5zZXRQcm9wZXJ0eShgbm9kZVVwZGF0ZXNJbmZvL3Bhc3RlRW5hYmxlbWVudGAsIGZhbHNlKTtcblx0XHRcdGludGVybmFsQ29udGV4dC5zZXRQcm9wZXJ0eShgY29udGV4dG1lbnUvbm9kZVVwZGF0ZXNJbmZvL3Bhc3RlRW5hYmxlbWVudGAsIGZhbHNlKTtcblx0XHRcdGludGVybmFsQ29udGV4dC5zZXRQcm9wZXJ0eShgbm9kZVVwZGF0ZXNJbmZvL2xhc3RBY3Rpb25gLCB1bmRlZmluZWQpO1xuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly9UaGlzIGNvZGUgaXMgZXhlY3V0ZWQgZm9yIHRhYmxlcyBleGNlcHRlZCBUcmVlVGFibGVcblx0XHRpZiAodGFibGUuZ2V0RW5hYmxlUGFzdGUoKSA9PT0gdHJ1ZSAmJiAhZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdGNvbnN0IGNlbGxTZWxlY3Rpb24gPSB0YWJsZS5nZXRDZWxsU2VsZWN0b3IoKT8uZ2V0U2VsZWN0aW9uKCk7XG5cdFx0XHRpZiAoY2VsbFNlbGVjdGlvbj8uY29sdW1ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFBhc3RlSGVscGVyLnBhc3RlUmFuZ2VEYXRhKHJhd1Bhc3RlZERhdGEgPz8gW10sIGNlbGxTZWxlY3Rpb24sIHRhYmxlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFBhc3RlSGVscGVyLnBhc3RlRGF0YShyYXdQYXN0ZWREYXRhID8/IFtdLCB0YWJsZSwgY29udHJvbGxlcik7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpITtcblx0XHRcdE1lc3NhZ2VCb3guZXJyb3IocmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfT1BfQ09OVFJPTExFUl9TQVBGRV9QQVNURV9ESVNBQkxFRF9NRVNTQUdFXCIpLCB7XG5cdFx0XHRcdHRpdGxlOiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfRVJST1JcIilcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBQYXN0ZSBlbmFibGVtZW50IGV2ZW50LlxuXHQgKiBAcGFyYW0gZXZ0IFRoZSBVSTUgZXZlbnQuXG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0cGFzdGVFbmFibGVtZW50SGFuZGxlcihldnQ6IFVJNUV2ZW50PHt9LCBDZWxsU2VsZWN0b3I+KTogdm9pZCB7XG5cdFx0Y29uc3QgY2VsbHNTZWxlY3Rpb24gPSBldnQuZ2V0U291cmNlKCkuZ2V0U2VsZWN0aW9uKCk7XG5cdFx0aWYgKGNlbGxzU2VsZWN0aW9uLmNvbHVtbnMubGVuZ3RoID09PSAwICYmIGNlbGxzU2VsZWN0aW9uLnJvd3MubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uc2V0UHJvcGVydHkoXCJjZWxsU2VsZWN0b3JIYXNTZWxlY3Rpb25cIiwgZmFsc2UpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmNvbnRlbnQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uc2V0UHJvcGVydHkoXCJjZWxsU2VsZWN0b3JIYXNTZWxlY3Rpb25cIiwgdHJ1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgQ3V0IG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIGV2dCBUaGUgVUk1IGV2ZW50LlxuXHQgKiBAcGFyYW0gZm9yQ29udGV4dE1lbnVcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkN1dChldnQ6IFVJNUV2ZW50PHt9LCBVSTVFbGVtZW50PiwgZm9yQ29udGV4dE1lbnUgPSBmYWxzZSk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRpZiAoZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdHRoaXMuX29uQ29weUN1dChldnQsIGZvckNvbnRleHRNZW51LCBcIkN1dFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDb3B5IG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIGV2dCBUaGUgVUk1IGV2ZW50LlxuXHQgKiBAcGFyYW0gZm9yQ29udGV4dE1lbnVcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkNvcHkoZXZ0OiBVSTVFdmVudDx7fSwgVUk1RWxlbWVudD4sIGZvckNvbnRleHRNZW51ID0gZmFsc2UpOiB2b2lkIHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0aWYgKGZvckNvbnRleHRNZW51KSB7XG5cdFx0XHR0aGlzLnNldENvbnRleHRNZW51QWN0aXZlKHRydWUpO1xuXHRcdH1cblx0XHR0aGlzLl9vbkNvcHlDdXQoZXZ0LCBmb3JDb250ZXh0TWVudSwgXCJDb3B5XCIpO1xuXHR9XG5cblx0Ly8gVGhpcyBldmVudCB3aWxsIGFsbG93IHVzIHRvIGludGVyY2VwdCB0aGUgZXhwb3J0IGJlZm9yZSBpcyB0cmlnZ2VyZWQgdG8gY292ZXIgc3BlY2lmaWMgY2FzZXNcblx0Ly8gdGhhdCBjb3VsZG4ndCBiZSBhZGRyZXNzZWQgb24gdGhlIHByb3BlcnR5SW5mb3MgZm9yIGVhY2ggY29sdW1uLlxuXHQvLyBlLmcuIEZpeGVkIFRhcmdldCBWYWx1ZSBmb3IgdGhlIGRhdGFwb2ludHNcblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uQmVmb3JlRXhwb3J0KGV4cG9ydEV2ZW50OiBUYWJsZSRCZWZvcmVFeHBvcnRFdmVudCk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkJlZm9yZUV4cG9ydChleHBvcnRFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgTURDIERhdGFTdGF0ZUluZGljYXRvciBwbHVnaW4gdG8gZGlzcGxheSBtZXNzYWdlU3RyaXAgb24gYSB0YWJsZS5cblx0ICogQHBhcmFtIG1lc3NhZ2Vcblx0ICogQHBhcmFtIGNvbnRyb2xcblx0ICogQHJldHVybnMgV2hldGhlciB0byByZW5kZXIgdGhlIG1lc3NhZ2VTdHJpcCB2aXNpYmxlXG5cdCAqL1xuXHRkYXRhU3RhdGVJbmRpY2F0b3JGaWx0ZXIobWVzc2FnZTogTWVzc2FnZSwgY29udHJvbDogQ29udHJvbCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG1kY1RhYmxlID0gY29udHJvbCBhcyBNRENUYWJsZTtcblx0XHRjb25zdCBzVGFibGVDb250ZXh0QmluZGluZ1BhdGggPSBtZGNUYWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCk7XG5cdFx0Y29uc3Qgc1RhYmxlUm93QmluZGluZyA9IChzVGFibGVDb250ZXh0QmluZGluZ1BhdGggPyBgJHtzVGFibGVDb250ZXh0QmluZGluZ1BhdGh9L2AgOiBcIlwiKSArIG1kY1RhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRQYXRoKCk7XG5cdFx0cmV0dXJuIHNUYWJsZVJvd0JpbmRpbmcgPT09IG1lc3NhZ2UuZ2V0VGFyZ2V0cygpWzBdID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZXZlbnQgaGFuZGxlcyB0aGUgRGF0YVN0YXRlIG9mIHRoZSBEYXRhU3RhdGVJbmRpY2F0b3IgcGx1Z2luIGZyb20gTURDIG9uIGEgdGFibGUuXG5cdCAqIEl0J3MgZmlyZWQgd2hlbiBuZXcgZXJyb3IgbWVzc2FnZXMgYXJlIHNlbnQgZnJvbSB0aGUgYmFja2VuZCB0byB1cGRhdGUgcm93IGhpZ2hsaWdodGluZy5cblx0ICogQHBhcmFtIGV2dCBFdmVudCBvYmplY3Rcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkRhdGFTdGF0ZUNoYW5nZShldnQ6IERhdGFTdGF0ZUluZGljYXRvciREYXRhU3RhdGVDaGFuZ2VFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGRhdGFTdGF0ZUluZGljYXRvciA9IGV2dC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBmaWx0ZXJlZE1lc3NhZ2VzID0gZXZ0LmdldFBhcmFtZXRlcihcImZpbHRlcmVkTWVzc2FnZXNcIikgYXMgTWVzc2FnZVtdO1xuXHRcdGlmIChmaWx0ZXJlZE1lc3NhZ2VzKSB7XG5cdFx0XHRjb25zdCBoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzID0gZmlsdGVyZWRNZXNzYWdlc1xuXHRcdFx0XHQubWFwKChtc2cpID0+IHtcblx0XHRcdFx0XHRjb25zdCB0ZWNobmljYWxEZXRhaWxzID0gKG1zZy5nZXRUZWNobmljYWxEZXRhaWxzKCkgfHwge30pIGFzIHtcblx0XHRcdFx0XHRcdHRhYmxlSWQ/OiBzdHJpbmc7XG5cdFx0XHRcdFx0XHRlbXB0eVJvd01lc3NhZ2U/OiBib29sZWFuO1xuXHRcdFx0XHRcdFx0bWlzc2luZ0NvbHVtbj86IHN0cmluZztcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdHJldHVybiB0ZWNobmljYWxEZXRhaWxzLmVtcHR5Um93TWVzc2FnZSA9PT0gdHJ1ZSAmJiB0ZWNobmljYWxEZXRhaWxzLm1pc3NpbmdDb2x1bW47XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5maWx0ZXIoKGhpZGRlblByb3BlcnR5KSA9PiAhIWhpZGRlblByb3BlcnR5KTtcblx0XHRcdGlmIChoaWRkZW5NYW5kYXRvcnlQcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBtZXNzYWdlU3RyaXBFcnJvciA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFxuXHRcdFx0XHRcdGhpZGRlbk1hbmRhdG9yeVByb3BlcnRpZXMubGVuZ3RoID09PSAxXG5cdFx0XHRcdFx0XHQ/IFwiTV9NRVNTQUdFU1RSSVBfRU1QVFlST1dfTUFOREFUT1JZX0hJRERFTlwiXG5cdFx0XHRcdFx0XHQ6IFwiTV9NRVNTQUdFU1RSSVBfRU1QVFlST1dfTUFOREFUT1JZX0hJRERFTl9QTFVSQUxcIixcblx0XHRcdFx0XHRbaGlkZGVuTWFuZGF0b3J5UHJvcGVydGllcy5qb2luKFwiLCBcIildXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGRhdGFTdGF0ZUluZGljYXRvci5zaG93TWVzc2FnZShtZXNzYWdlU3RyaXBFcnJvciwgXCJFcnJvclwiKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSBkYXRhU3RhdGVJbmRpY2F0b3IuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiZmlsdGVyZWRNZXNzYWdlc1wiLCBmaWx0ZXJlZE1lc3NhZ2VzLCBkYXRhU3RhdGVJbmRpY2F0b3IuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBDb250ZXh0KTtcblx0XHR9XG5cdH1cblxuXHRyZXN1bWVCaW5kaW5nKGJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJiaW5kaW5nU3VzcGVuZGVkXCIsIGZhbHNlKTtcblx0XHRpZiAoKGJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZCAmJiAhdGhpcy5nZXREYXRhSW5pdGlhbGl6ZWQoKSkgfHwgdGhpcy5nZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiKSkge1xuXHRcdFx0dGhpcy5zZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiLCBmYWxzZSk7XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8ucmViaW5kKCk7XG5cdFx0fVxuXHR9XG5cblx0cmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHMob0ZpbHRlckNvbnRyb2w6IENvbnRyb2wpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3Qgb1RhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0cmV0dXJuIEZpbHRlclV0aWxzLmdldE5vdEFwcGxpY2FibGVGaWx0ZXJzKG9GaWx0ZXJDb250cm9sIGFzIEZpbHRlckJhciwgb1RhYmxlKTtcblx0fVxuXG5cdHN1c3BlbmRCaW5kaW5nKCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJiaW5kaW5nU3VzcGVuZGVkXCIsIHRydWUpO1xuXHR9XG5cblx0aW52YWxpZGF0ZUNvbnRlbnQoKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImRhdGFJbml0aWFsaXplZFwiLCBmYWxzZSk7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcIm91dERhdGVkQmluZGluZ1wiLCBmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgZW5hYmxlbWVudCBvZiB0aGUgY3JlYXRpb24gcm93LlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c2V0RmFzdENyZWF0aW9uUm93RW5hYmxlbWVudCgpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRjb25zdCBmYXN0Q3JlYXRpb25Sb3cgPSB0YWJsZS5nZXRDcmVhdGlvblJvdygpO1xuXG5cdFx0aWYgKGZhc3RDcmVhdGlvblJvdyAmJiAhZmFzdENyZWF0aW9uUm93LmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRcdGNvbnN0IHRhYmxlQmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdGFibGVCaW5kaW5nLmdldENvbnRleHQoKTtcblxuXHRcdFx0aWYgKGJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRcdFRhYmxlSGVscGVyLmVuYWJsZUZhc3RDcmVhdGlvblJvdyhcblx0XHRcdFx0XHRmYXN0Q3JlYXRpb25Sb3csXG5cdFx0XHRcdFx0dGFibGVCaW5kaW5nLmdldFBhdGgoKSxcblx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dCxcblx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdFx0XHRcdFByb21pc2UucmVzb2x2ZSgpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgdGhlIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBvbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0cmV0dXJuIHRoaXMuX29uQWRkQ2FyZFRvSW5zaWdodHNQcmVzc2VkKCk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0b25NYXNzRWRpdEJ1dHRvblByZXNzZWQodWk1RXZlbnQ6IFVJNUV2ZW50LCBmb3JDb250ZXh0TWVudTogYm9vbGVhbik6IHZvaWQge1xuXHRcdGlmIChmb3JDb250ZXh0TWVudSkge1xuXHRcdFx0dGhpcy5zZXRDb250ZXh0TWVudUFjdGl2ZSh0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgbWFzc0VkaXRIZWxwZXIgPSBuZXcgTWFzc0VkaXREaWFsb2dIZWxwZXIoe1xuXHRcdFx0dGFibGU6IHRoaXMuY29udGVudCxcblx0XHRcdG9uQ29udGV4dE1lbnU6IGZvckNvbnRleHRNZW51LFxuXHRcdFx0b25DbG9zZTogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLnNldE1hc3NFZGl0RGlhbG9nSGVscGVyKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5zZXRNYXNzRWRpdERpYWxvZ0hlbHBlcihtYXNzRWRpdEhlbHBlcik7XG5cdFx0bWFzc0VkaXRIZWxwZXIub3BlbigpO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uU2VsZWN0aW9uQ2hhbmdlZCh1aTVldmVudDogVGFibGUkU2VsZWN0aW9uQ2hhbmdlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCBUYWJsZVJ1bnRpbWUuc2V0Q29udGV4dHModWk1ZXZlbnQpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwic2VsZWN0aW9uQ2hhbmdlXCIsIHsgLi4udWk1ZXZlbnQuZ2V0UGFyYW1ldGVycygpLCBzZWxlY3RlZENvbnRleHQ6IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZXh0cygpIH0pO1xuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uQWN0aW9uUHJlc3MoXG5cdFx0b0V2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4sXG5cdFx0cGFnZUNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdGFjdGlvbk5hbWU6IHN0cmluZyxcblx0XHRwYXJhbWV0ZXJzOiB7XG5cdFx0XHRtb2RlbDogT0RhdGFNb2RlbDtcblx0XHRcdG5vdEFwcGxpY2FibGVDb250ZXh0czogQ29udGV4dFtdO1xuXHRcdFx0bGFiZWw6IHN0cmluZztcblx0XHRcdGNvbnRleHRzOiBDb250ZXh0W107XG5cdFx0XHRhcHBsaWNhYmxlQ29udGV4dHM6IENvbnRleHRbXTtcblx0XHRcdGVudGl0eVNldE5hbWU6IHN0cmluZztcblx0XHRcdGRpc2FibGVTdHJpY3RIYW5kbGluZz86IGJvb2xlYW47XG5cdFx0fVxuXHQpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRwYXJhbWV0ZXJzLm1vZGVsID0gb0V2ZW50LmdldFNvdXJjZSgpLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbDtcblx0XHRjb25zdCBsYWJlbEV4cHJlc3Npb24gPSByZXNvbHZlQmluZGluZ1N0cmluZyhwYXJhbWV0ZXJzLmxhYmVsLCBcInN0cmluZ1wiKTtcblx0XHRpZiAoaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24obGFiZWxFeHByZXNzaW9uKSAmJiAobGFiZWxFeHByZXNzaW9uLm1vZGVsTmFtZSA9PT0gXCJpMThuXCIgfHwgbGFiZWxFeHByZXNzaW9uLm1vZGVsTmFtZSA9PT0gXCJAaTE4blwiKSkge1xuXHRcdFx0Ly9yZXNvbHZlQmluZGluZ1N0cmluZyhwYXJhbWV0ZXJzLmxhYmVsLCBcInN0cmluZ1wiKVxuXHRcdFx0cGFyYW1ldGVycy5sYWJlbCA9XG5cdFx0XHRcdChvRXZlbnQuZ2V0U291cmNlKCkuZ2V0TW9kZWwobGFiZWxFeHByZXNzaW9uLm1vZGVsTmFtZSkgYXMgUmVzb3VyY2VNb2RlbCkuZ2V0UHJvcGVydHkobGFiZWxFeHByZXNzaW9uLnBhdGgpID8/XG5cdFx0XHRcdHBhcmFtZXRlcnMubGFiZWw7XG5cdFx0fVxuXHRcdGxldCBleGVjdXRlQWN0aW9uID0gdHJ1ZTtcblx0XHRpZiAocGFyYW1ldGVycy5ub3RBcHBsaWNhYmxlQ29udGV4dHMgJiYgcGFyYW1ldGVycy5ub3RBcHBsaWNhYmxlQ29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gSWYgd2UgaGF2ZSBub24gYXBwbGljYWJsZSBjb250ZXh0cywgd2UgbmVlZCB0byBvcGVuIGEgZGlhbG9nIHRvIGFzayB0aGUgdXNlciBpZiBoZSB3YW50cyB0byBjb250aW51ZVxuXHRcdFx0Y29uc3QgY29udmVydGVkTWV0YWRhdGEgPSBjb252ZXJ0VHlwZXMocGFyYW1ldGVycy5tb2RlbC5nZXRNZXRhTW9kZWwoKSk7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGg8RW50aXR5VHlwZT4odGhpcy5lbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lKS50YXJnZXQhO1xuXHRcdFx0Y29uc3QgbXlVbmFwcGxpY2FibGVDb250ZXh0RGlhbG9nID0gbmV3IE5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nKHtcblx0XHRcdFx0ZW50aXR5VHlwZTogZW50aXR5VHlwZSxcblx0XHRcdFx0bm90QXBwbGljYWJsZUNvbnRleHRzOiBwYXJhbWV0ZXJzLm5vdEFwcGxpY2FibGVDb250ZXh0cyxcblx0XHRcdFx0dGl0bGU6IHBhcmFtZXRlcnMubGFiZWwsXG5cdFx0XHRcdHJlc291cmNlTW9kZWw6IGdldFJlc291cmNlTW9kZWwodGhpcyksXG5cdFx0XHRcdGVudGl0eVNldDogcGFyYW1ldGVycy5lbnRpdHlTZXROYW1lLFxuXHRcdFx0XHRhY3Rpb25OYW1lOiBhY3Rpb25OYW1lLFxuXHRcdFx0XHRhcHBsaWNhYmxlQ29udGV4dHM6IHBhcmFtZXRlcnMuYXBwbGljYWJsZUNvbnRleHRzXG5cdFx0XHR9KTtcblx0XHRcdHBhcmFtZXRlcnMuY29udGV4dHMgPSBwYXJhbWV0ZXJzLmFwcGxpY2FibGVDb250ZXh0cztcblx0XHRcdGV4ZWN1dGVBY3Rpb24gPSBhd2FpdCBteVVuYXBwbGljYWJsZUNvbnRleHREaWFsb2cub3Blbih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKGV4ZWN1dGVBY3Rpb24pIHtcblx0XHRcdC8vIERpcmVjdCBleGVjdXRpb24gb2YgdGhlIGFjdGlvblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmV0dXJuIGF3YWl0IHBhZ2VDb250cm9sbGVyLmVkaXRGbG93Lmludm9rZUFjdGlvbihhY3Rpb25OYW1lLCBwYXJhbWV0ZXJzKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLmluZm8oZSBhcyBzdHJpbmcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkNvbnRleHRNZW51UHJlc3Mob0V2ZW50OiBUYWJsZSRCZWZvcmVPcGVuQ29udGV4dE1lbnVFdmVudCk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkNvbnRleHRNZW51UHJlc3Mob0V2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHBvc2UgdGhlIGludGVybmFsIHRhYmxlIGRlZmluaXRpb24gZm9yIGV4dGVybmFsIHVzYWdlIGluIHRoZSBkZWxlZ2F0ZS5cblx0ICogQHJldHVybnMgVGhlIHRhYmxlRGVmaW5pdGlvblxuXHQgKi9cblx0Z2V0VGFibGVEZWZpbml0aW9uKCk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMudGFibGVEZWZpbml0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIG1hc3MgZWRpdCByZWxhdGVkIHRvIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIG1hc3NFZGl0RGlhbG9nSGVscGVyXG5cdCAqL1xuXHRzZXRNYXNzRWRpdERpYWxvZ0hlbHBlcihtYXNzRWRpdERpYWxvZ0hlbHBlcj86IE1hc3NFZGl0RGlhbG9nSGVscGVyKTogdm9pZCB7XG5cdFx0dGhpcy5tYXNzRWRpdERpYWxvZ0hlbHBlciA9IG1hc3NFZGl0RGlhbG9nSGVscGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4cG9zZSB0aGUgbWFzcyBlZGl0IHJlbGF0ZWQgdG8gdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgbWFzcyBlZGl0IHJlbGF0ZWQgdG8gdGhlIHRhYmxlLCBpZiBhbnlcblx0ICovXG5cdGdldE1hc3NFZGl0RGlhbG9nSGVscGVyKCk6IE1hc3NFZGl0RGlhbG9nSGVscGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5tYXNzRWRpdERpYWxvZ0hlbHBlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBjb25uZWN0IHRoZSBmaWx0ZXIgdG8gdGhlIHRhYmxlQVBJIGlmIHJlcXVpcmVkXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLlRhYmxlQVBJXG5cdCAqL1xuXG5cdHVwZGF0ZUZpbHRlckJhcigpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IGZpbHRlckJhclJlZklkID0gdGhpcy5nZXRGaWx0ZXJCYXIoKTtcblx0XHRpZiAodGFibGUgJiYgZmlsdGVyQmFyUmVmSWQgJiYgdGFibGUuZ2V0RmlsdGVyPy4oKSAhPT0gZmlsdGVyQmFyUmVmSWQpIHtcblx0XHRcdHRoaXMuX3NldEZpbHRlckJhcihmaWx0ZXJCYXJSZWZJZCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgdGhlIHRhYmxlIGZyb20gdGhlIGxpc3RlbmVycyBvZiB0aGUgZmlsdGVyQmFyLlxuXHQgKi9cblx0ZGV0YWNoRmlsdGVyQmFyKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5jb250ZW50O1xuXHRcdHRhYmxlPy5zZXRGaWx0ZXIoXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmlsdGVyIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBmaWx0ZXJCYXJSZWZJZCBJZCBvZiB0aGUgZmlsdGVyIGJhclxuXHQgKiBAcmV0dXJucyBUaGUgZmlsdGVyIGNvbnRyb2xcblx0ICogQHByaXZhdGVcblx0ICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuVGFibGVBUElcblx0ICovXG5cdGdldEZpbHRlckJhckNvbnRyb2woZmlsdGVyQmFyUmVmSWQ6IHN0cmluZyk6IFVJNUVsZW1lbnQgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmJ5SWQoZmlsdGVyQmFyUmVmSWQpIHx8IC8vIExvY2FsIGlkIHdydCBWaWV3KEZQTSBleHBsb3JlciBleGFtcGxlKVxuXHRcdFx0VUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChmaWx0ZXJCYXJSZWZJZCkgfHwgLy8gQWJzb2x1dGUgSWQodGhpcyB3YXMgbm90IHN1cHBvcnRlZCBpbiBvbGRlciB2ZXJzaW9ucylcblx0XHRcdFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5nZXRJZCgpLnN1YnN0cmluZygwLCB0aGlzLmdldElkKCkubGFzdEluZGV4T2YoXCItLVwiKSArIDIpfSR7ZmlsdGVyQmFyUmVmSWR9YClcblx0XHQpOyAvLyBMb2NhbCBpZCB3cnQgRnJhZ21lbnRJZCh3aGVuIGFuIFhNTENvbXBvc2l0ZSBvciBGcmFnbWVudCBpcyBpbmRlcGVuZGVudGx5IHByb2Nlc3NlZCkgaW5zdGVhZCBvZiBWaWV3SWRcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBmaWx0ZXIgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGZpbHRlckJhci5cblx0ICogQHBhcmFtIGZpbHRlckJhclJlZklkIElkIG9mIHRoZSBmaWx0ZXIgYmFyXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLlRhYmxlQVBJXG5cdCAqL1xuXHRfc2V0RmlsdGVyQmFyKGZpbHRlckJhclJlZklkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IGZpbHRlckJhciA9IHRoaXMuZ2V0RmlsdGVyQmFyQ29udHJvbChmaWx0ZXJCYXJSZWZJZCk7XG5cblx0XHRpZiAoZmlsdGVyQmFyKSB7XG5cdFx0XHRpZiAoZmlsdGVyQmFyLmlzQTxGaWx0ZXJCYXJBUEk+KFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCIpKSB7XG5cdFx0XHRcdHRhYmxlLnNldEZpbHRlcihgJHtmaWx0ZXJCYXIuZ2V0SWQoKX0tY29udGVudGApO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0ZmlsdGVyQmFyLmlzQTxGaWx0ZXJCYXJCQlY0PihcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckJhclwiKSAmJlxuXHRcdFx0XHRmaWx0ZXJCYXI/LmNvbnRlbnQ/LmlzQShcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckJhckFQSVwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRhYmxlLnNldEZpbHRlcihgJHtmaWx0ZXJCYXIuY29udGVudC5nZXRJZCgpfS1jb250ZW50YCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRmaWx0ZXJCYXIuaXNBPEZpbHRlckJhcj4oXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSB8fFxuXHRcdFx0XHRmaWx0ZXJCYXIuaXNBPHR5cGVvZiBCYXNpY1NlYXJjaD4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkJhc2ljU2VhcmNoXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGFibGUuc2V0RmlsdGVyKGZpbHRlckJhci5nZXRJZCgpKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgQ3JlYXRlQWN0aXZhdGUgZXZlbnQgZnJvbSB0aGUgT0RhdGFMaXN0QmluZGluZy5cblx0ICogQHBhcmFtIGFjdGl2YXRlRXZlbnQgVGhlIGV2ZW50IHNlbnQgYnkgdGhlIGJpbmRpbmdcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRhc3luYyBoYW5kbGVDcmVhdGVBY3RpdmF0ZShhY3RpdmF0ZUV2ZW50OiBVSTVFdmVudDx7IGNvbnRleHQ6IENvbnRleHQgfSwgT0RhdGFMaXN0QmluZGluZz4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0YXdhaXQgdGhpcy5faGFuZGxlQ3JlYXRlQWN0aXZhdGUoYWN0aXZhdGVFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGRyYWdnZWQgZWxlbWVudCBlbnRlcnMgYSB0YWJsZSByb3cuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBVSTUgZXZlbnQgY29taW5nIGZyb20gdGhlIE1EQyBkcmFnIGFuZCBkcm9wIGNvbmZpZ1xuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdG9uRHJhZ0VudGVyRG9jdW1lbnQoXG5cdFx0dWk1RXZlbnQ6IFVJNUV2ZW50PHsgYmluZGluZ0NvbnRleHQ6IENvbnRleHQ7IGRyYWdTb3VyY2U6IENvbnRleHQ7IGRyb3BQb3NpdGlvbjogXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IFwiT25cIiB9LCBEcmFnRHJvcEluZm8+XG5cdCk6IHZvaWQge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHR0aGlzLl9vbkRyYWdFbnRlckRvY3VtZW50KHVpNUV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTdGFydHMgdGhlIGRyYWcgb2YgdGhlIGRvY3VtZW50LlxuXHQgKiBAcGFyYW0gdWk1RXZlbnQgVUk1IGV2ZW50IGNvbWluZyBmcm9tIHRoZSBNREMgZHJhZyBhbmQgZHJvcCBjb25maWdcblx0ICovXG5cdEB4bWxFdmVudEhhbmRsZXIoKVxuXHRvbkRyYWdTdGFydERvY3VtZW50KHVpNUV2ZW50OiBVSTVFdmVudDx7IGJpbmRpbmdDb250ZXh0OiBDb250ZXh0IH0sIENvbnRyb2w+KTogdm9pZCB7XG5cdFx0Ly8gV2UgY2FuJ3QgZnVsbHkgbW92ZSBhbiB4bWxFdmVudEhhbmRsZXIgdG8gYSBtaXhpbi4uLlxuXHRcdHRoaXMuX29uRHJhZ1N0YXJ0RG9jdW1lbnQodWk1RXZlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERyb3BzIHRoZSBkb2N1bWVudC5cblx0ICogQHBhcmFtIHVpNUV2ZW50IFVJNSBldmVudCBjb21pbmcgZnJvbSB0aGUgTURDIGRyYWcgYW5kIGRyb3AgY29uZmlnXG5cdCAqIEByZXR1cm5zIFRoZSBQcm9taXNlXG5cdCAqL1xuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25Ecm9wRG9jdW1lbnQoXG5cdFx0dWk1RXZlbnQ6IFVJNUV2ZW50PHtcblx0XHRcdGJpbmRpbmdDb250ZXh0OiBDb250ZXh0O1xuXHRcdFx0ZHJhZ1NvdXJjZTogQ29udGV4dDtcblx0XHRcdGRyb3BQb3NpdGlvbjogc3RyaW5nO1xuXHRcdH0+XG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRhd2FpdCB0aGlzLl9vbkRyb3BEb2N1bWVudCh1aTVFdmVudCk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0YXN5bmMgb25Db2xsYXBzZUV4cGFuZE5vZGUodWk1RXZlbnQ6IFVJNUV2ZW50LCBleHBhbmQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBXZSBjYW4ndCBmdWxseSBtb3ZlIGFuIHhtbEV2ZW50SGFuZGxlciB0byBhIG1peGluLi4uXG5cdFx0aWYgKHVpNUV2ZW50LmdldFNvdXJjZSgpLmdldE1ldGFkYXRhKCkuaXNBKFwic2FwLm0uTWVudUl0ZW1cIikpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdGF3YWl0IHRoaXMuX29uQ29sbGFwc2VFeHBhbmROb2RlKHVpNUV2ZW50LCBleHBhbmQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEludGVybmFsIG1ldGhvZCB0byBtb3ZlIGEgcm93IHVwIG9yIGRvd24gaW4gYSBUcmVlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdWk1RXZlbnRcblx0ICogQHBhcmFtIG1vdmVVcCBUcnVlIGZvciBtb3ZlIHVwLCBmYWxzZSBmb3IgbW92ZSBkb3duXG5cdCAqIEBwYXJhbSBmb3JDb250ZXh0TWVudVxuXHQgKi9cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdGFzeW5jIG9uTW92ZVVwRG93bih1aTVFdmVudDogVUk1RXZlbnQsIG1vdmVVcDogYm9vbGVhbiwgZm9yQ29udGV4dE1lbnUgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIFdlIGNhbid0IGZ1bGx5IG1vdmUgYW4geG1sRXZlbnRIYW5kbGVyIHRvIGEgbWl4aW4uLi5cblx0XHRpZiAoZm9yQ29udGV4dE1lbnUpIHtcblx0XHRcdHRoaXMuc2V0Q29udGV4dE1lbnVBY3RpdmUodHJ1ZSk7XG5cdFx0fVxuXHRcdGF3YWl0IHRoaXMuX29uTW92ZVVwRG93bih1aTVFdmVudCwgbW92ZVVwLCBmb3JDb250ZXh0TWVudSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzZWxlY3Rpb24gdmFyaWFudCBmcm9tIHRoZSB0YWJsZS4gVGhpcyBmdW5jdGlvbiBjb25zaWRlcnMgb25seSB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgYXBwbGllZCBhdCB0aGUgY29udHJvbCBsZXZlbC5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdpdGgge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnR9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGdldFNlbGVjdGlvblZhcmlhbnQoKTogUHJvbWlzZTxTZWxlY3Rpb25WYXJpYW50PiB7XG5cdFx0cmV0dXJuIFN0YXRlSGVscGVyLmdldFNlbGVjdGlvblZhcmlhbnQodGhpcy5nZXRDb250ZW50KCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnR9IHRvIHRoZSB0YWJsZS4gTm90ZTogc2V0U2VsZWN0aW9uVmFyaWFudCB3aWxsIGNsZWFyIGV4aXN0aW5nIGZpbHRlcnMgYW5kIHRoZW4gYXBwbHkgdGhlIFNlbGVjdGlvblZhcmlhbnQgdmFsdWVzLlxuXHQgKiBAcGFyYW0gc2VsZWN0aW9uVmFyaWFudCBUaGUge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnR9IHRvIGFwcGx5IHRvIHRoZSB0YWJsZVxuXHQgKiBAcGFyYW0gcHJlZmlsbERlc2NyaXB0aW9ucyBPcHRpb25hbC4gSWYgdHJ1ZSwgd2Ugd2lsbCB1c2UgdGhlIGFzc29jaWF0ZWQgdGV4dCBwcm9wZXJ0eSB2YWx1ZXMgKGlmIHRoZXkncmUgYXZhaWxhYmxlIGluIHRoZSBTZWxlY3Rpb25WYXJpYW50KSB0byBkaXNwbGF5IHRoZSBmaWx0ZXIgdmFsdWUgZGVzY3JpcHRpb25zLCBpbnN0ZWFkIG9mIGxvYWRpbmcgdGhlbSBmcm9tIHRoZSBiYWNrZW5kXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSBmb3IgYXN5bmNocm9ub3VzIGhhbmRsaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHNldFNlbGVjdGlvblZhcmlhbnQoc2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudCwgcHJlZmlsbERlc2NyaXB0aW9ucyA9IGZhbHNlKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0cmV0dXJuIFN0YXRlSGVscGVyLnNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2wodGhpcy5nZXRDb250ZW50KCksIHNlbGVjdGlvblZhcmlhbnQsIHByZWZpbGxEZXNjcmlwdGlvbnMpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBfY3JlYXRlQ29udGVudFYyTW9kZSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0Y29uc3QgcHJlcHJvY2Vzc29yQ29udGV4dCA9IG93bmVyPy5wcmVwcm9jZXNzb3JDb250ZXh0O1xuXHRcdGlmIChvd25lciAmJiBwcmVwcm9jZXNzb3JDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBvd25lci5nZXRBcHBDb21wb25lbnQoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMubWV0YVBhdGgpITtcblx0XHRcdGNvbnN0IGNvbnRleHRQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMuY29udGV4dFBhdGgpITtcblxuXHRcdFx0dGhpcy50YWJsZURlZmluaXRpb24gPSBkZWVwQ2xvbmUodGhpcy5vcmlnaW5hbFRhYmxlRGVmaW5pdGlvbik7XG5cdFx0XHR0aGlzLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KHRoaXMuaWdub3JlZEZpZWxkcywgdGhpcy50YWJsZURlZmluaXRpb24pO1xuXHRcdFx0dGhpcy5wcm9wZXJ0eUluZm9zID0gW107IC8vIEFzIHdlIGhhdmUgYSBuZXcgdGFibGUgZGVmaW5pdGlvbiwgd2UgY2xlYW4gdGhlIGNhY2hlZCBwcm9wZXJ0eUluZm9zIHRvIHJlY3JlYXRlIHRoZW1cblxuXHRcdFx0Y29uc3QgY29udmVydGVkTWV0YWRhdGEgPSBjb252ZXJ0VHlwZXMobWV0YU1vZGVsKTtcblx0XHRcdGNvbnN0IGNvbGxlY3Rpb25FbnRpdHkgPSBjb252ZXJ0ZWRNZXRhZGF0YS5yZXNvbHZlUGF0aCh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pLnRhcmdldCBhc1xuXHRcdFx0XHR8IEVudGl0eVNldFxuXHRcdFx0XHR8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHRcdHRoaXMuY29udGV4dE9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdG1ldGFQYXRoLFxuXHRcdFx0XHRjb250ZXh0UGF0aFxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IGhhbmRsZXJQcm92aWRlciA9IG5ldyBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyKHRoaXMsIHsgY29sbGVjdGlvbkVudGl0eSwgbWV0YU1vZGVsIH0pO1xuXG5cdFx0XHRjb25zdCBmcmFnbWVudCA9IGF3YWl0IFhNTFByZXByb2Nlc3Nvci5wcm9jZXNzKFxuXHRcdFx0XHRwYXJzZVhNTFN0cmluZyhcblx0XHRcdFx0XHR4bWxgPHJvb3Rcblx0XHRcdHhtbG5zPVwic2FwLm1cIlxuXHRcdFx0eG1sbnM6bWRjPVwic2FwLnVpLm1kY1wiXG5cdFx0XHR4bWxuczpwbHVnaW5zPVwic2FwLm0ucGx1Z2luc1wiXG5cdFx0XHR4bWxuczptZGNUYWJsZT1cInNhcC51aS5tZGMudGFibGVcIlxuXHRcdFx0eG1sbnM6bWFjcm9UYWJsZT1cInNhcC5mZS5tYWNyb3MudGFibGVcIlxuXHRcdFx0eG1sbnM6bWRjYXQ9XCJzYXAudWkubWRjLmFjdGlvbnRvb2xiYXJcIlxuXHRcdFx0eG1sbnM6Y29yZT1cInNhcC51aS5jb3JlXCJcblx0XHRcdHhtbG5zOmNvbnRyb2w9XCJzYXAuZmUuY29yZS5jb250cm9sc1wiXG5cdFx0XHR4bWxuczpkdD1cInNhcC51aS5kdFwiXG5cdFx0XHR4bWxuczpmbD1cInNhcC51aS5mbFwiXG5cdFx0XHR4bWxuczp2YXJpYW50PVwic2FwLnVpLmZsLnZhcmlhbnRzXCJcblx0XHRcdHhtbG5zOnAxM249XCJzYXAudWkubWRjLnAxM25cIlxuXHRcdFx0eG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIj4ke2pzeC5yZW5kZXJBc1hNTCgoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBNZGNUYWJsZVRlbXBsYXRlLmdldE1EQ1RhYmxlVGVtcGxhdGUodGhpcywge1xuXHRcdFx0XHRcdGNvbnZlcnRlZE1ldGFkYXRhOiBwcmVwcm9jZXNzb3JDb250ZXh0LmdldENvbnZlcnRlZE1ldGFkYXRhKCksXG5cdFx0XHRcdFx0bWV0YU1vZGVsLFxuXHRcdFx0XHRcdGhhbmRsZXJQcm92aWRlcixcblx0XHRcdFx0XHRhcHBDb21wb25lbnQ6IG93bmVyLmdldEFwcENvbXBvbmVudCgpLFxuXHRcdFx0XHRcdG1ldGFQYXRoXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSl9PC9yb290PmAsXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpWzBdLFxuXHRcdFx0XHR7IG1vZGVsczoge30gfSxcblx0XHRcdFx0cHJlcHJvY2Vzc29yQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGlmIChmcmFnbWVudC5maXJzdEVsZW1lbnRDaGlsZCkge1xuXHRcdFx0XHQvLyBSZW1vdmUgdGhlIG9sZCBNREMgdGFibGUgZnJvbSB0aGUgbGlzdCBvZiBGaWx0ZXJCYXIgbGlzdGVuZXJzXG5cdFx0XHRcdHRoaXMuZGV0YWNoRmlsdGVyQmFyKCk7XG5cblx0XHRcdFx0dGhpcy5jb250ZW50Py5kZXN0cm95KCk7XG5cdFx0XHRcdGNvbnN0IGNvbnRlbnQgPSAoYXdhaXQgRnJhZ21lbnQubG9hZCh7XG5cdFx0XHRcdFx0ZGVmaW5pdGlvbjogZnJhZ21lbnQuZmlyc3RFbGVtZW50Q2hpbGQsXG5cdFx0XHRcdFx0Y29udHJvbGxlcjogb3duZXIuZ2V0Um9vdENvbnRyb2xsZXIoKSxcblx0XHRcdFx0XHRjb250YWluaW5nVmlldzogb3duZXIuZ2V0Um9vdENvbnRyb2woKVxuXHRcdFx0XHR9KSkgYXMgVGFibGU7XG5cdFx0XHRcdHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XG5cblx0XHRcdFx0dGhpcy51cGRhdGVGaWx0ZXJCYXIoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRzZXRQcm9wZXJ0eShwcm9wZXJ0eUtleTogc3RyaW5nLCBwcm9wZXJ0eVZhbHVlOiB1bmtub3duLCBiU3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiBwcm9wZXJ0eVZhbHVlICE9PSB1bmRlZmluZWQgJiYgW1wiaWdub3JlZEZpZWxkc1wiLCBcIm1ldGFQYXRoXCJdLmluY2x1ZGVzKHByb3BlcnR5S2V5KSkge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkocHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWUsIHRydWUpO1xuXHRcdFx0dGhpcy5fY3JlYXRlQ29udGVudFYyTW9kZSgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5zZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZSwgYlN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZGF0YSBtb2RlbCBhbmQgY29udmVydGVkIHRhcmdldCBvYmplY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHByb3BlcnR5IG5hbWUuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LlxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIGRhdGEgbW9kZWwgcGF0aCBhbmQgY29udmVydGVkIHRhcmdldCBvYmplY3QuXG5cdCAqL1xuXG5cdGdldERhdGFNb2RlbEFuZENvbnZlcnRlZFRhcmdldE9iamVjdChwcm9wZXJ0eU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IERhdGFNb2RlbENvbnZlcnNpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdGFibGUuZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCk7XG5cdFx0aWYgKCFtZXRhTW9kZWwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgZW50aXR5UGF0aCA9IHRhYmxlLmRhdGEoXCJtZXRhUGF0aFwiKTtcblx0XHRjb25zdCB0YXJnZXRNZXRhUGF0aCA9IHRoaXMuZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpLmZpbmQoKHByb3BlcnR5SW5mbykgPT4gcHJvcGVydHlJbmZvLm5hbWUgPT09IHByb3BlcnR5TmFtZSlcblx0XHRcdD8uYW5ub3RhdGlvblBhdGg7XG5cdFx0Y29uc3QgdGFyZ2V0T2JqZWN0ID0gbWV0YU1vZGVsLmdldENvbnRleHQodGFyZ2V0TWV0YVBhdGghKTtcblx0XHRjb25zdCBlbnRpdHlTZXQgPSBtZXRhTW9kZWwuZ2V0Q29udGV4dChlbnRpdHlQYXRoKTtcblx0XHRjb25zdCBjb252ZXJ0ZWR0YXJnZXRPYmplY3QgPSBNZXRhTW9kZWxDb252ZXJ0ZXIuY29udmVydE1ldGFNb2RlbENvbnRleHQodGFyZ2V0T2JqZWN0KSBhc1xuXHRcdFx0fCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzXG5cdFx0XHR8IERhdGFQb2ludFR5cGVUeXBlcztcblx0XHRsZXQgZGF0YU1vZGVsUGF0aCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcyB8IFByb3BlcnR5Pihcblx0XHRcdHRhcmdldE9iamVjdCxcblx0XHRcdGVudGl0eVNldFxuXHRcdCk7XG5cdFx0ZGF0YU1vZGVsUGF0aCA9XG5cdFx0XHRGaWVsZFRlbXBsYXRpbmcuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclZhbHVlKFxuXHRcdFx0XHRkYXRhTW9kZWxQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcz5cblx0XHRcdCkgfHwgZGF0YU1vZGVsUGF0aDtcblx0XHRyZXR1cm4geyBkYXRhTW9kZWxQYXRoOiBkYXRhTW9kZWxQYXRoLCBjb252ZXJ0ZWR0YXJnZXRPYmplY3Q6IGNvbnZlcnRlZHRhcmdldE9iamVjdCB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgYmluZGluZyBjb250ZXh0IGZvciB0aGUgZ2l2ZW4gTW9kZUFzRXhwcmVzc2lvbi5cblx0ICogQHBhcmFtIE1vZGVBc0V4cHJlc3Npb25cblx0ICogQHBhcmFtIHJvd0NvbnRleHRcblx0ICogQHJldHVybnNcblx0ICovXG5cblx0Y3JlYXRlQW55Q29udHJvbChNb2RlQXNFeHByZXNzaW9uOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgcm93Q29udGV4dDogQ29udGV4dCB8IHVuZGVmaW5lZCk6IHR5cGVvZiBBbnkge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0Y29uc3QgYW55T2JqZWN0ID0gbmV3IEFueSh7IGFueTogTW9kZUFzRXhwcmVzc2lvbiB9KTtcblx0XHRhbnlPYmplY3Quc2V0TW9kZWwocm93Q29udGV4dD8uZ2V0TW9kZWwoKSk7XG5cdFx0YW55T2JqZWN0LnNldE1vZGVsKHRhYmxlLmdldE1vZGVsKFwidWlcIiksIFwidWlcIik7XG5cdFx0cmV0dXJuIGFueU9iamVjdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGVkaXQgbW9kZSBvZiBhIFByb3BlcnR5LlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0gcm93Q29udGV4dCBUaGUgY29udGV4dCBvZiB0aGUgcm93IGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5XG5cdCAqIEByZXR1cm5zIFRoZSBlZGl0IG1vZGUgb2YgdGhlIGZpZWxkXG5cdCAqL1xuXG5cdGdldFByb3BlcnR5RWRpdE1vZGUocHJvcGVydHlOYW1lOiBzdHJpbmcsIHJvd0NvbnRleHQ6IENvbnRleHQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGxldCBhbnlPYmplY3Q6IHR5cGVvZiBBbnkgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKCF0aGlzLnByb3BlcnR5RWRpdE1vZGVDYWNoZVtwcm9wZXJ0eU5hbWVdKSB7XG5cdFx0XHRjb25zdCBkYXRhTW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxBbmRDb252ZXJ0ZWRUYXJnZXRPYmplY3QocHJvcGVydHlOYW1lKT8uZGF0YU1vZGVsUGF0aDtcblx0XHRcdGNvbnN0IGNvbnZlcnRlZHRhcmdldE9iamVjdCA9IHRoaXMuZ2V0RGF0YU1vZGVsQW5kQ29udmVydGVkVGFyZ2V0T2JqZWN0KHByb3BlcnR5TmFtZSk/LmNvbnZlcnRlZHRhcmdldE9iamVjdDtcblx0XHRcdGlmIChkYXRhTW9kZWxQYXRoICYmIGNvbnZlcnRlZHRhcmdldE9iamVjdCkge1xuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eUZvckZpZWxkQ29udHJvbCA9IChkYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3QgYXMgdW5rbm93biBhcyBEYXRhRmllbGRUeXBlcyk/LlZhbHVlXG5cdFx0XHRcdFx0PyAoZGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0IGFzIHVua25vd24gYXMgRGF0YUZpZWxkVHlwZXMpLlZhbHVlXG5cdFx0XHRcdFx0OiBkYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3Q7XG5cdFx0XHRcdGNvbnN0IGVkaXRNb2RlQXNFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0VUlGb3JtYXR0ZXJzLmdldEVkaXRNb2RlKHByb3BlcnR5Rm9yRmllbGRDb250cm9sLCBkYXRhTW9kZWxQYXRoLCBmYWxzZSwgdHJ1ZSwgY29udmVydGVkdGFyZ2V0T2JqZWN0KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRhbnlPYmplY3QgPSB0aGlzLmNyZWF0ZUFueUNvbnRyb2woZWRpdE1vZGVBc0V4cHJlc3Npb24sIHJvd0NvbnRleHQpO1xuXHRcdFx0XHR0aGlzLnByb3BlcnR5RWRpdE1vZGVDYWNoZVtwcm9wZXJ0eU5hbWVdID0gYW55T2JqZWN0O1xuXHRcdFx0XHRhbnlPYmplY3Quc2V0QmluZGluZ0NvbnRleHQobnVsbCk7IC8vIHdlIG5lZWQgdG8gc2V0IHRoZSBiaW5kaW5nIGNvbnRleHQgdG8gbnVsbCBvdGhlcndpc2UgdGhlIGZvbGxvd2luZyBhZGREZXBlbmRlbnQgd2lsbCBzZXQgaXQgdG8gdGhlIGNvbnRleHQgb2YgdGhlIHRhYmxlXG5cdFx0XHRcdHRoaXMuYWRkRGVwZW5kZW50KGFueU9iamVjdCk7IC8vIHRvIGRlc3Ryb3kgaXQgd2hlbiB0aGUgdGFibGVBUEkgaXMgZGVzdHJveWVkXG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFueU9iamVjdCA9IHRoaXMucHJvcGVydHlFZGl0TW9kZUNhY2hlW3Byb3BlcnR5TmFtZV07XG5cdFx0fVxuXHRcdGFueU9iamVjdD8uc2V0QmluZGluZ0NvbnRleHQocm93Q29udGV4dCk7XG5cdFx0Y29uc3QgZWRpdE1vZGUgPSBhbnlPYmplY3Q/LmdldEFueSgpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRhbnlPYmplY3Q/LnNldEJpbmRpbmdDb250ZXh0KG51bGwpO1xuXHRcdHJldHVybiBlZGl0TW9kZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTaG93IHRoZSBjb2x1bW5zIHdpdGggdGhlIGdpdmVuIGNvbHVtbiBrZXlzIGJ5IHNldHRpbmcgdGhlaXIgYXZhaWxhYmlsaXR5IHRvIERlZmF1bHQuXG5cdCAqIEBwYXJhbSBjb2x1bW5LZXlzIFRoZSBrZXlzIGZvciB0aGUgY29sdW1ucyB0byBzaG93XG5cdCAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cblx0ICogQHB1YmxpY1xuXHQgKiBAdWk1LWV4cGVyaW1lbnRhbC1zaW5jZSAxLjEyNC4wXG5cdCAqIEBzaW5jZSAxLjEyNC4wXG5cdCAqL1xuXHRhc3luYyBzaG93Q29sdW1ucyhjb2x1bW5LZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGZvciAoY29uc3QgY29sdW1uS2V5IG9mIGNvbHVtbktleXMpIHtcblx0XHRcdHRoaXMubW9kaWZ5RHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW4oY29sdW1uS2V5LCB0cnVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZUNvbnRlbnRWMk1vZGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIaWRlIHRoZSBjb2x1bW5zIHdpdGggdGhlIGdpdmVuIGNvbHVtbiBrZXlzIGJ5IHNldHRpbmcgdGhlaXIgYXZhaWxhYmlsaXR5IHRvIERlZmF1bHQuXG5cdCAqIEBwYXJhbSBjb2x1bW5LZXlzIFRoZSBrZXlzIGZvciB0aGUgY29sdW1ucyB0byBoaWRlXG5cdCAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cblx0ICogQHB1YmxpY1xuXHQgKiBAdWk1LWV4cGVyaW1lbnRhbC1zaW5jZSAxLjEyNC4wXG5cdCAqIEBzaW5jZSAxLjEyNC4wXG5cdCAqL1xuXHRhc3luYyBoaWRlQ29sdW1ucyhjb2x1bW5LZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGZvciAoY29uc3QgY29sdW1uS2V5IG9mIGNvbHVtbktleXMpIHtcblx0XHRcdHRoaXMubW9kaWZ5RHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW4oY29sdW1uS2V5LCBmYWxzZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9jcmVhdGVDb250ZW50VjJNb2RlKCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgZmllbGRzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIGlnbm9yZWRGaWVsZHMgVGhlIGZpZWxkcyB0byBpZ25vcmVcblx0ICogQHJldHVybnMgUmVmZXJlbmNlIHRvIHRoaXMgaW4gb3JkZXIgdG8gYWxsb3cgbWV0aG9kIGNoYWluaW5nXG5cdCAqIEB1aTUtZXhwZXJpbWVudGFsLXNpbmNlIDEuMTI0LjBcblx0ICogQHNpbmNlIDEuMTI0LjBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2V0SWdub3JlZEZpZWxkcyhpZ25vcmVkRmllbGRzOiBzdHJpbmcpOiB0aGlzIHtcblx0XHRyZXR1cm4gdGhpcy5zZXRQcm9wZXJ0eShcImlnbm9yZWRGaWVsZHNcIiwgaWdub3JlZEZpZWxkcyk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBmaWVsZHMgdGhhdCBzaG91bGQgYmUgaWdub3JlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIGlnbm9yZWRGaWVsZHMgcHJvcGVydHlcblx0ICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xMjQuMFxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRJZ25vcmVkRmllbGRzKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0UHJvcGVydHkoXCJpZ25vcmVkRmllbGRzXCIpID8/IHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaWdub3JlZEZpZWxkcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRyb2wgc3RhdGUgYmFzZWQgb24gdGhlIGdpdmVuIGNvbnRyb2wgc3RhdGUga2V5LlxuXHQgKiBAcGFyYW0gY29udHJvbFN0YXRlIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcmV0dXJucyAtIFRoZSBmdWxsIHN0YXRlIG9mIHRoZSBjb250cm9sIGFsb25nIHdpdGggdGhlIGluaXRpYWwgc3RhdGUgaWYgYXZhaWxhYmxlLlxuXHQgKi9cblx0Z2V0Q29udHJvbFN0YXRlKGNvbnRyb2xTdGF0ZTogQ29udHJvbFN0YXRlKTogQ29udHJvbFN0YXRlIHtcblx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHRoaXMuaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHRpZiAoY29udHJvbFN0YXRlKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRmdWxsU3RhdGU6IGNvbnRyb2xTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdGluaXRpYWxTdGF0ZTogaW5pdGlhbENvbnRyb2xTdGF0ZSBhcyBvYmplY3Rcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiBjb250cm9sU3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUga2V5IHRvIGJlIHVzZWQgZm9yIGdpdmVuIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBvQ29udHJvbCBUaGUgY29udHJvbCB0byBnZXQgc3RhdGUga2V5IGZvclxuXHQgKiBAcmV0dXJucyBUaGUga2V5IHRvIGJlIHVzZWQgZm9yIHN0b3JpbmcgdGhlIGNvbnRyb2xzIHN0YXRlXG5cdCAqL1xuXHRnZXRTdGF0ZUtleShvQ29udHJvbDogTWFuYWdlZE9iamVjdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcy5jb250ZW50KT8uZ2V0TG9jYWxJZChvQ29udHJvbC5nZXRJZCgpKSB8fCBvQ29udHJvbC5nZXRJZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIHRhYmxlIGRlZmluaXRpb24gd2l0aCBpZ25vcmVkRmllbGRzIGFuZCBkeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbnMuXG5cdCAqIEBwYXJhbSBpZ25vcmVkRmllbGRzXG5cdCAqIEBwYXJhbSBkeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbnNcblx0ICogQHBhcmFtIHRhYmxlRGVmaW5pdGlvblxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cGRhdGVDb2x1bW5zVmlzaWJpbGl0eShcblx0XHRpZ25vcmVkRmllbGRzOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0ZHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5zOiBEeW5hbWljVmlzaWJpbGl0eUZvckNvbHVtbltdLFxuXHRcdHRhYmxlRGVmaW5pdGlvbjogVGFibGVWaXN1YWxpemF0aW9uXG5cdCk6IHZvaWQge1xuXHRcdENvbHVtbk1hbmFnZW1lbnQudXBkYXRlQ29sdW1uc1Zpc2liaWxpdHlTdGF0aWMoaWdub3JlZEZpZWxkcywgZHluYW1pY1Zpc2liaWxpdHlGb3JDb2x1bW5zLCB0YWJsZURlZmluaXRpb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIE1EQyB0YWJsZS5cblx0ICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSBmb3J3YXJkaW5nIGFnZ3JlZ2F0aW9uIHRvIGdldCB0aGUgdGFyZ2V0IG9mIHRoZSBhZ2dyZWdhdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMgVGhlIG1kYyB0YWJsZVxuXHQgKi9cblx0Z2V0TURDVGFibGUoKTogTURDVGFibGUge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQ7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGVkIGJ5IHRoZSBNREMgc3RhdGUgdXRpbCB3aGVuIHRoZSBzdGF0ZSBmb3IgdGhpcyBjb250cm9sJ3MgY2hpbGQgaGFzIGNoYW5nZWQuXG5cdCAqL1xuXHRoYW5kbGVTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbHMgdGhlIGFzeW5jQ2FsbCBmdW5jdGlvbiBvbmx5IGlmIHRoZSBsb2NrTmFtZSBpcyBub3QgYWxyZWFkeSBsb2NrZWQuXG5cdCAqIEBwYXJhbSBhc3luY0NhbGxcblx0ICogQHBhcmFtIGxvY2tOYW1lXG5cdCAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cblx0ICovXG5cdGFzeW5jIGF2b2lkUGFyYWxsZWxDYWxscyhhc3luY0NhbGw6IEZ1bmN0aW9uLCBsb2NrTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKHRoaXMubG9ja1tsb2NrTmFtZV0pIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5sb2NrW2xvY2tOYW1lXSA9IHRydWU7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IGFzeW5jQ2FsbCgpO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0dGhpcy5sb2NrW2xvY2tOYW1lXSA9IGZhbHNlO1xuXHRcdH1cblx0XHR0aGlzLmxvY2tbbG9ja05hbWVdID0gZmFsc2U7XG5cdH1cblxuXHRkZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHQvLyBXZSByZWxlYXNlIGhvbGQgb24gbWVzc2FnZUhhbmRsZXIgYnkgdGhlIGNvbnRyb2wgaWYgdGhlcmUgaXMgb25lLlxuXHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8ubWVzc2FnZUhhbmRsZXI/LnJlbGVhc2VIb2xkQnlDb250cm9sKHRoaXMpO1xuXHRcdHN1cGVyLmRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdHByaXZhdGUgZnVsbFNjcmVlbkRpYWxvZz86IERpYWxvZzsgLy8gVGhlIGRpYWxvZyB1c2VkIHRvIGRpc3BsYXkgdGhlIHRhYmxlIGluIGZ1bGwgc2NyZWVuIG1vZGVcblxuXHRzZXRGdWxsU2NyZWVuRGlhbG9nKGRpYWxvZzogRGlhbG9nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0dGhpcy5mdWxsU2NyZWVuRGlhbG9nID0gZGlhbG9nO1xuXHR9XG5cblx0cHJpdmF0ZSBlbmhhbmNlZFByb3BlcnR5SW5mb3M6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9bXSA9IFtdO1xuXG5cdHByaXZhdGUgcHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10gPSBbXTtcblxuXHQvKipcblx0ICogU2V0cyB0aGUgZmV0Y2hlZCBwcm9wZXJ0eUluZm9zIGZyb20gdGhlIHRhYmxlIGRlbGVnYXRlIGNvbnRhaW5pbmcgaW50ZXJuYWwgcHJvcGVydGllcy5cblx0ICogQHBhcmFtIGVuaGFuY2VkUHJvcGVydHlJbmZvc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0c2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyhlbmhhbmNlZFByb3BlcnR5SW5mb3M6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9bXSk6IHZvaWQge1xuXHRcdHRoaXMuZW5oYW5jZWRQcm9wZXJ0eUluZm9zID0gZW5oYW5jZWRQcm9wZXJ0eUluZm9zO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZldGNoZWQgcHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZSBjb250YWluaW5nIGludGVybmFsIHByb3BlcnRpZXMuXG5cdCAqIEByZXR1cm5zIFRoZSBQcm9wZXJ0eUluZm8gZW5oYW5jZWQgd2l0aCB0aGUgUHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpOiBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW10ge1xuXHRcdHJldHVybiB0aGlzLmVuaGFuY2VkUHJvcGVydHlJbmZvcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBNREMgZXhwZWN0ZWQgcHJvcGVydHlJbmZvcyBmcm9tIHRoZSB0YWJsZSBkZWxlZ2F0ZSBjb250YWluaW5nIGludGVybmFsIGFkZGl0aW9uYWwgcHJvcGVydGllcy5cblx0ICogQHJldHVybnMgVGhlIFByb3BlcnR5SW5mb1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0UHJvcGVydHlJbmZvcygpOiBQcm9wZXJ0eUluZm9bXSB7XG5cdFx0Y29uc3QgcHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10gPSBbXTtcblx0XHRmb3IgKGNvbnN0IGVuaGFuY2VkUHJvcGVydHlJbmZvIG9mIHRoaXMuZW5oYW5jZWRQcm9wZXJ0eUluZm9zIGFzIFByb3BlcnR5SW5mb1tdKSB7XG5cdFx0XHRsZXQgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8gPSB7XG5cdFx0XHRcdGtleTogZW5oYW5jZWRQcm9wZXJ0eUluZm8ua2V5LFxuXHRcdFx0XHRsYWJlbDogZW5oYW5jZWRQcm9wZXJ0eUluZm8ubGFiZWwsXG5cdFx0XHRcdHZpc2libGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnZpc2libGUsXG5cdFx0XHRcdGV4cG9ydFNldHRpbmdzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0Y2xpcGJvYXJkU2V0dGluZ3M6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNsaXBib2FyZFNldHRpbmdzLFxuXHRcdFx0XHR2aXN1YWxTZXR0aW5nczogZW5oYW5jZWRQcm9wZXJ0eUluZm8udmlzdWFsU2V0dGluZ3MsXG5cdFx0XHRcdHRvb2x0aXA6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnRvb2x0aXAsXG5cdFx0XHRcdGlzS2V5OiBlbmhhbmNlZFByb3BlcnR5SW5mby5pc0tleVxuXHRcdFx0fTtcblxuXHRcdFx0aWYgKGVuaGFuY2VkUHJvcGVydHlJbmZvLnByb3BlcnR5SW5mb3MpIHtcblx0XHRcdFx0cHJvcGVydHlJbmZvID0ge1xuXHRcdFx0XHRcdC4uLnByb3BlcnR5SW5mbyxcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9zOiBlbmhhbmNlZFByb3BlcnR5SW5mby5wcm9wZXJ0eUluZm9zXG5cdFx0XHRcdH07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsZXQgZXh0ZW5zaW9uOiBQcm9wZXJ0eUluZm9bXCJleHRlbnNpb25cIl07XG5cdFx0XHRcdGlmIChlbmhhbmNlZFByb3BlcnR5SW5mby5leHRlbnNpb24pIHtcblx0XHRcdFx0XHRleHRlbnNpb24gPSB7XG5cdFx0XHRcdFx0XHR0ZWNobmljYWxseUdyb3VwYWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uLnRlY2huaWNhbGx5R3JvdXBhYmxlLFxuXHRcdFx0XHRcdFx0dGVjaG5pY2FsbHlBZ2dyZWdhdGFibGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmV4dGVuc2lvbi50ZWNobmljYWxseUFnZ3JlZ2F0YWJsZSxcblx0XHRcdFx0XHRcdGN1c3RvbUFnZ3JlZ2F0ZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZXh0ZW5zaW9uLmN1c3RvbUFnZ3JlZ2F0ZSxcblx0XHRcdFx0XHRcdGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBlbmhhbmNlZFByb3BlcnR5SW5mby5leHRlbnNpb24uYWRkaXRpb25hbFByb3BlcnRpZXNcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGV4dGVuc2lvbiA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhleHRlbnNpb24pLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHByb3BlcnR5SW5mbyA9IHtcblx0XHRcdFx0XHQuLi5wcm9wZXJ0eUluZm8sXG5cdFx0XHRcdFx0cGF0aDogZW5oYW5jZWRQcm9wZXJ0eUluZm8ucGF0aCxcblx0XHRcdFx0XHRtYXhDb25kaXRpb25zOiBlbmhhbmNlZFByb3BlcnR5SW5mby5tYXhDb25kaXRpb25zLFxuXHRcdFx0XHRcdGZvcm1hdE9wdGlvbnM6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRcdFx0Y29uc3RyYWludHM6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNvbnN0cmFpbnRzLFxuXHRcdFx0XHRcdGdyb3VwOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cCxcblx0XHRcdFx0XHRncm91cExhYmVsOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cExhYmVsLFxuXHRcdFx0XHRcdGNhc2VTZW5zaXRpdmU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmNhc2VTZW5zaXRpdmUsXG5cdFx0XHRcdFx0ZmlsdGVyYWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uZmlsdGVyYWJsZSxcblx0XHRcdFx0XHRzb3J0YWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uc29ydGFibGUsXG5cdFx0XHRcdFx0Z3JvdXBhYmxlOiBlbmhhbmNlZFByb3BlcnR5SW5mby5ncm91cGFibGUsXG5cdFx0XHRcdFx0ZGF0YVR5cGU6IGVuaGFuY2VkUHJvcGVydHlJbmZvLmRhdGFUeXBlLFxuXHRcdFx0XHRcdGFnZ3JlZ2F0YWJsZTogZW5oYW5jZWRQcm9wZXJ0eUluZm8uYWdncmVnYXRhYmxlLFxuXHRcdFx0XHRcdHVuaXQ6IGVuaGFuY2VkUHJvcGVydHlJbmZvLnVuaXQsXG5cdFx0XHRcdFx0dGV4dDogZW5oYW5jZWRQcm9wZXJ0eUluZm8udGV4dCxcblx0XHRcdFx0XHRleHRlbnNpb25cblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHByb3BlcnR5SW5mb3MucHVzaChcblx0XHRcdFx0T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHByb3BlcnR5SW5mbykuZmlsdGVyKChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSkgYXMgUHJvcGVydHlJbmZvXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gcHJvcGVydHlJbmZvcztcblx0fVxuXG5cdHNldENhY2hlZFByb3BlcnR5SW5mb3MocHJvcGVydHlJbmZvczogUHJvcGVydHlJbmZvW10pOiB2b2lkIHtcblx0XHR0aGlzLnByb3BlcnR5SW5mb3MgPSBwcm9wZXJ0eUluZm9zO1xuXHR9XG5cblx0Z2V0Q2FjaGVkUHJvcGVydHlJbmZvcygpOiBQcm9wZXJ0eUluZm9bXSB7XG5cdFx0cmV0dXJuIHRoaXMucHJvcGVydHlJbmZvcztcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwYXRoIGZvciB0aGUgdGFibGUgY29sbGVjdGlvbi5cblx0ICogQHJldHVybnMgVGhlIHBhdGhcblx0ICovXG5cdGdldFJvd0NvbGxlY3Rpb25QYXRoKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSE7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gY29udHJvbGxlci5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25Db250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbik7XG5cdFx0Y29uc3QgY29udGV4dFBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy5jb250ZXh0UGF0aCkhO1xuXHRcdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMoY29sbGVjdGlvbkNvbnRleHQhLCBjb250ZXh0UGF0aCk7XG5cdFx0cmV0dXJuIGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsUGF0aCkgfHwgZ2V0VGFyZ2V0T2JqZWN0UGF0aChkYXRhTW9kZWxQYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBiaW5kaW5nIGluZm8gdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBsaXN0IGJpbmRpbmcgZm9yIHRoZSBNREMgdGFibGUuXG5cdCAqIEByZXR1cm5zIFRoZSB0YWJsZSBiaW5kaW5nIGluZm9cblx0ICovXG5cdGdldFRhYmxlVGVtcGxhdGVCaW5kaW5nSW5mbygpOiBTZXJpYWxpemVkQ29sbGVjdGlvbkJpbmRpbmdJbmZvIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpITtcblx0XHRjb25zdCBwYXRoID0gdGhpcy5nZXRSb3dDb2xsZWN0aW9uUGF0aCgpO1xuXHRcdGNvbnN0IHJvd0JpbmRpbmdJbmZvOiBTZXJpYWxpemVkQ29sbGVjdGlvbkJpbmRpbmdJbmZvID0ge1xuXHRcdFx0c3VzcGVuZGVkOiBmYWxzZSxcblx0XHRcdHBhdGgsXG5cdFx0XHRwYXJhbWV0ZXJzOiB7XG5cdFx0XHRcdCRjb3VudDogdHJ1ZVxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRpZiAodGhpcy50YWJsZURlZmluaXRpb24uZW5hYmxlJHNlbGVjdCkge1xuXHRcdFx0Ly8gRG9uJ3QgYWRkICRzZWxlY3QgcGFyYW1ldGVyIGluIGNhc2Ugb2YgYW4gYW5hbHl0aWNhbCBxdWVyeSwgdGhpcyBpc24ndCBzdXBwb3J0ZWQgYnkgdGhlIG1vZGVsXG5cdFx0XHRjb25zdCBzZWxlY3QgPSBPYmplY3Qua2V5cyh0aGlzLnRhYmxlRGVmaW5pdGlvbi5yZXF1ZXN0QXRMZWFzdCkuam9pbihcIixcIik7XG5cdFx0XHRpZiAoc2VsZWN0KSB7XG5cdFx0XHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiRzZWxlY3QgPSBzZWxlY3Q7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMudGFibGVEZWZpbml0aW9uLmVuYWJsZSQkZ2V0S2VlcEFsaXZlQ29udGV4dCkge1xuXHRcdFx0Ly8gd2UgbGF0ZXIgZW5zdXJlIGluIHRoZSBkZWxlZ2F0ZSBvbmx5IG9uZSBsaXN0IGJpbmRpbmcgZm9yIGEgZ2l2ZW4gdGFyZ2V0Q29sbGVjdGlvblBhdGggaGFzIHRoZSBmbGFnICQkZ2V0S2VlcEFsaXZlQ29udGV4dFxuXHRcdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCRnZXRLZWVwQWxpdmVDb250ZXh0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBDbGVhcnMgdGhlIHNlbGVjdGlvbiBhZnRlciBhIHNlYXJjaC9maWx0ZXJcblx0XHRyb3dCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIS4kJGNsZWFyU2VsZWN0aW9uT25GaWx0ZXIgPSB0cnVlO1xuXG5cdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCRncm91cElkID0gXCIkYXV0by5Xb3JrZXJzXCI7XG5cdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCR1cGRhdGVHcm91cElkID0gXCIkYXV0b1wiO1xuXHRcdHJvd0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMhLiQkb3duUmVxdWVzdCA9IHRydWU7XG5cdFx0cm93QmluZGluZ0luZm8ucGFyYW1ldGVycyEuJCRwYXRjaFdpdGhvdXRTaWRlRWZmZWN0cyA9IHRydWU7XG5cblx0XHQvLyBFdmVudCBoYW5kbGVyc1xuXHRcdGNvbnN0IGVkaXRGbG93RXh0ZW5zaW9uID0gY29udHJvbGxlci5lZGl0Rmxvdztcblx0XHRjb25zdCBldmVudEhhbmRsZXJzOiBSZWNvcmQ8c3RyaW5nLCBGdW5jdGlvbj4gPSB7fTtcblx0XHRldmVudEhhbmRsZXJzLnBhdGNoQ29tcGxldGVkID0gdGhpcy5vbkludGVybmFsUGF0Y2hDb21wbGV0ZWQuYmluZCh0aGlzKTtcblx0XHRldmVudEhhbmRsZXJzLmRhdGFSZWNlaXZlZCA9IHRoaXMub25JbnRlcm5hbERhdGFSZWNlaXZlZC5iaW5kKHRoaXMpO1xuXHRcdGV2ZW50SGFuZGxlcnMuZGF0YVJlcXVlc3RlZCA9IHRoaXMub25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQuYmluZCh0aGlzKTtcblx0XHRldmVudEhhbmRsZXJzLmNoYW5nZSA9IHRoaXMub25MaXN0QmluZGluZ0NoYW5nZS5iaW5kKHRoaXMpO1xuXHRcdGV2ZW50SGFuZGxlcnMuY3JlYXRlQWN0aXZhdGUgPSB0aGlzLmhhbmRsZUNyZWF0ZUFjdGl2YXRlLmJpbmQodGhpcyk7XG5cdFx0ZXZlbnRIYW5kbGVycy5jcmVhdGVTZW50ID0gZWRpdEZsb3dFeHRlbnNpb24uaGFuZGxlQ3JlYXRlU2VudC5iaW5kKGVkaXRGbG93RXh0ZW5zaW9uKTtcblx0XHRldmVudEhhbmRsZXJzLnBhdGNoU2VudCA9IHRoaXMub25JbnRlcm5hbFBhdGNoU2VudC5iaW5kKHRoaXMpO1xuXG5cdFx0cm93QmluZGluZ0luZm8uZXZlbnRzID0gZXZlbnRIYW5kbGVycztcblxuXHRcdHJldHVybiByb3dCaW5kaW5nSW5mbztcblx0fVxuXG5cdHByb3RlY3RlZCBzdGF0aWMgYWRkU2V0dGluZyh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0W2tleV0gPSB2YWx1ZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIG1hbmlmZXN0LWZyaWVuZGx5IHNldHRpbmdzIGZyb20gdGFibGVBUEkgcHJvcGVydGllcy5cblx0ICogQHJldHVybnMgU2V0dGluZ3Ncblx0ICovXG5cdGdldFNldHRpbmdzRm9yTWFuaWZlc3QoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuXHRcdGNvbnN0IHRhYmxlU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZUV4cG9ydFwiLCB0aGlzLmVuYWJsZUV4cG9ydCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFJlcXVlc3RTaXplXCIsIHRoaXMuZXhwb3J0UmVxdWVzdFNpemUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRGaWxlTmFtZVwiLCB0aGlzLmV4cG9ydEZpbGVOYW1lKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZXhwb3J0U2hlZXROYW1lXCIsIHRoaXMuZXhwb3J0U2hlZXROYW1lKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZnJvemVuQ29sdW1uQ291bnRcIiwgdGhpcy5mcm96ZW5Db2x1bW5Db3VudCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb2x1bW5GcmVlemVcIiwgdGhpcy5kaXNhYmxlQ29sdW1uRnJlZXplKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJcIiwgdGhpcy53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcik7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50TW9kZVwiLCB0aGlzLnJvd0NvdW50TW9kZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50XCIsIHRoaXMucm93Q291bnQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVGdWxsU2NyZWVuXCIsIHRoaXMuZW5hYmxlRnVsbFNjcmVlbik7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RlXCIsIHRoaXMuZW5hYmxlUGFzdGUpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJkaXNhYmxlQ29weVRvQ2xpcGJvYXJkXCIsIHRoaXMuZGlzYWJsZUNvcHlUb0NsaXBib2FyZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNjcm9sbFRocmVzaG9sZFwiLCB0aGlzLnNjcm9sbFRocmVzaG9sZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInRocmVzaG9sZFwiLCB0aGlzLnRocmVzaG9sZCk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInBvcGluTGF5b3V0XCIsIHRoaXMucG9waW5MYXlvdXQpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25Nb2RlXCIsIHRoaXMuc2VsZWN0aW9uTW9kZSk7XG5cdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInR5cGVcIiwgdGhpcy50eXBlKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzXCIsIHRoaXMuZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0QWxsXCIsIHRoaXMuZW5hYmxlU2VsZWN0QWxsKTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiaWdub3JlZEZpZWxkc1wiLCB0aGlzLmlnbm9yZWRGaWVsZHMpO1xuXHRcdFRhYmxlQVBJLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25MaW1pdFwiLCB0aGlzLnNlbGVjdGlvbkxpbWl0KTtcblx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiY29uZGVuc2VkVGFibGVMYXlvdXRcIiwgdGhpcy5jb25kZW5zZWRUYWJsZUxheW91dCk7XG5cblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUpIHtcblx0XHRcdGNvbnN0IGNyZWF0aW9uTW9kZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm5hbWVcIiwgdGhpcy5jcmVhdGlvbk1vZGUubmFtZSk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJjcmVhdGlvbkZpZWxkc1wiLCB0aGlzLmNyZWF0aW9uTW9kZS5jcmVhdGlvbkZpZWxkcyk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJjcmVhdGVBdEVuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5jcmVhdGVBdEVuZCk7XG5cdFx0XHRUYWJsZUFQSS5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUpO1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwib3V0Ym91bmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUub3V0Ym91bmQpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGNyZWF0aW9uTW9kZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0YWJsZVNldHRpbmdzW1wiY3JlYXRpb25Nb2RlXCJdID0gY3JlYXRpb25Nb2RlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLm1hc3NFZGl0KSB7XG5cdFx0XHRjb25zdCBlbmFibGVNYXNzRWRpdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiY3VzdG9tRnJhZ21lbnRcIiwgdGhpcy5tYXNzRWRpdC5jdXN0b21Db250ZW50KTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiZnJvbUlubGluZVwiLCB0cnVlKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwidmlzaWJsZUZpZWxkc1wiLCB0aGlzLm1hc3NFZGl0LnZpc2libGVGaWVsZHM/LmpvaW4oXCIsXCIpKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiaWdub3JlZEZpZWxkc1wiLCB0aGlzLm1hc3NFZGl0Lmlnbm9yZWRGaWVsZHM/LmpvaW4oXCIsXCIpKTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwib3BlcmF0aW9uR3JvdXBpbmdNb2RlXCIsIHRoaXMubWFzc0VkaXQub3BlcmF0aW9uR3JvdXBpbmdNb2RlKTtcblx0XHRcdHRhYmxlU2V0dGluZ3NbXCJlbmFibGVNYXNzRWRpdFwiXSA9IGVuYWJsZU1hc3NFZGl0O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uPy5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQVBJLmFkZFNldHRpbmcoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24sIFwiYWdncmVnYXRpb25PbkxlYWZMZXZlbFwiLCB0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGFuYWx5dGljYWxDb25maWd1cmF0aW9uKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJhbmFseXRpY2FsQ29uZmlndXJhdGlvblwiXSA9IGFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbj8ucGF0aHM/Lmxlbmd0aCkge1xuXHRcdFx0VGFibGVBUEkuYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInF1aWNrVmFyaWFudFNlbGVjdGlvblwiLCB7XG5cdFx0XHRcdHBhdGhzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5wYXRocy5tYXAoKHBhdGgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4geyBhbm5vdGF0aW9uUGF0aDogcGF0aCB9O1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0c2hvd0NvdW50czogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24uc2hvd0NvdW50c1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRhYmxlU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogRmluZCBhbiBhY3Rpb24gZnJvbSBpdHMga2V5LlxuXHQgKiBAcGFyYW0ga2V5XG5cdCAqIEByZXR1cm5zIFRoZSBhY3Rpb24gaWYgaXQgY2FuIGJlIGZvdW5kIChvciB1bmRlZmluZWQpXG5cdCAqL1xuXHRmaW5kU2xvdEFjdGlvbkZyb21LZXkoa2V5OiBzdHJpbmcpOiBBY3Rpb24gfCB1bmRlZmluZWQge1xuXHRcdGxldCByZXN1bHQ6IEFjdGlvbiB8IHVuZGVmaW5lZDtcblxuXHRcdGZvciAoY29uc3QgYWN0aW9uIG9mIHRoaXMuYWN0aW9ucyA/PyBbXSkge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRhY3Rpb24uaXNBPEFjdGlvbkdyb3VwPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIikgfHxcblx0XHRcdFx0YWN0aW9uLmlzQTxBY3Rpb25Hcm91cE92ZXJyaWRlPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBPdmVycmlkZVwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJlc3VsdCA/Pz0gYWN0aW9uLmFjdGlvbnMuZmluZCgoYSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBhLmlzQTxBY3Rpb24+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIikgJiYgYS5rZXkgPT09IGtleTtcblx0XHRcdFx0fSkgYXMgQWN0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uaXNBPEFjdGlvbj4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiKSAmJiBhY3Rpb24ua2V5ID09PSBrZXkpIHtcblx0XHRcdFx0cmVzdWx0ID0gYWN0aW9uO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHR0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0fVxuXG5cdGdldEZ1bGxNZXRhUGF0aCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLm1ldGFQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5tZXRhUGF0aDtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGV4dFBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRyZXR1cm4gYCR7dGhpcy5jb250ZXh0UGF0aH0ke3RoaXMubWV0YVBhdGh9YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGAke3RoaXMuY29udGV4dFBhdGh9LyR7dGhpcy5tZXRhUGF0aH1gO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlQ29udGVudChmb3JjZUNyZWF0aW9uID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKCFvd25lcikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuY29udGV4dFBhdGggPz89IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpIGFzIHN0cmluZztcblx0XHRjb25zdCBmdWxsTWV0YVBhdGggPSB0aGlzLmdldEZ1bGxNZXRhUGF0aCgpO1xuXHRcdGlmICghdGhpcy5jb250ZW50IHx8IGZvcmNlQ3JlYXRpb24pIHtcblx0XHRcdHRoaXMuZGV0YWNoRmlsdGVyQmFyKCk7XG5cdFx0XHR0aGlzLmNvbnRlbnQ/LmRlc3Ryb3koKTtcblxuXHRcdFx0Y29uc3QgbWV0YU1vZGVsID0gb3duZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCBtZXRhUGF0aENvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoZnVsbE1ldGFQYXRoKSE7XG5cblx0XHRcdHRoaXMudGFibGVEZWZpbml0aW9uID0gY3JlYXRlVGFibGVEZWZpbml0aW9uKHRoaXMpO1xuXHRcdFx0Ly8gU2V0IERlZmF1bHQgdmFsdWVzIGZvciBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRhYmxlIGRlZmluaXRpb25cblx0XHRcdHRoaXMudGhyZXNob2xkID8/PSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLnRocmVzaG9sZCA/PyB0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnRocmVzaG9sZDtcblx0XHRcdHRoaXMudXBkYXRlUHJvcGVydGllc0Zyb21UYWJsZURlZmluaXRpb24oKTtcblxuXHRcdFx0Ly8gZGVmYXVsdCBjcmVhdGlvbiBtb2RlXG5cdFx0XHR0aGlzLmNyZWF0aW9uTW9kZSA/Pz0gbmV3IFRhYmxlQ3JlYXRpb25PcHRpb25zKHtcblx0XHRcdFx0bmFtZTogdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUubW9kZSBhcyBUYWJsZUNyZWF0aW9uT3B0aW9uc1tcIm5hbWVcIl0sXG5cdFx0XHRcdGNyZWF0ZUF0RW5kOiAodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUgYXMgQ3JlYXRlQmVoYXZpb3IpLmFwcGVuZFxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMudXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkodGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5pZ25vcmVkRmllbGRzLCB0aGlzLnRhYmxlRGVmaW5pdGlvbik7XG5cblx0XHRcdGNvbnN0IGNvbGxlY3Rpb25FbnRpdHkgPSB0aGlzLmNvbnRleHRPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzLnJlc29sdmVQYXRoKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbilcblx0XHRcdFx0LnRhcmdldCBhcyBFbnRpdHlTZXQgfCBOYXZpZ2F0aW9uUHJvcGVydHk7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gKGNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSA/PyAoY29sbGVjdGlvbkVudGl0eSBhcyBOYXZpZ2F0aW9uUHJvcGVydHkpPy50YXJnZXRUeXBlO1xuXHRcdFx0dGhpcy5lbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lID0gZW50aXR5VHlwZT8uZnVsbHlRdWFsaWZpZWROYW1lO1xuXG5cdFx0XHRjb25zdCBoYW5kbGVyUHJvdmlkZXIgPSBuZXcgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlcih0aGlzLCB7IG1ldGFNb2RlbCwgY29sbGVjdGlvbkVudGl0eSB9LCB0aGlzKTtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlTURDVGFibGUoe1xuXHRcdFx0XHRhcHBDb21wb25lbnQ6IG93bmVyLmdldEFwcENvbXBvbmVudCgpLFxuXHRcdFx0XHRtZXRhUGF0aDogbWV0YVBhdGhDb250ZXh0LFxuXHRcdFx0XHRjb252ZXJ0ZWRNZXRhZGF0YTogTWV0YU1vZGVsQ29udmVydGVyLmNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLFxuXHRcdFx0XHRoYW5kbGVyUHJvdmlkZXIsXG5cdFx0XHRcdG1ldGFNb2RlbFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHRoaXMudXBkYXRlRmlsdGVyQmFyKCk7XG5cdFx0dGhpcy5zZXR1cE9wdGltaXN0aWNCYXRjaCgpO1xuXHRcdHRoaXMuc2V0VXBOb0RhdGFJbmZvcm1hdGlvbigpO1xuXHRcdHRoaXMuZ2V0UXVpY2tGaWx0ZXIoKT8uc2V0TWV0YVBhdGgoZnVsbE1ldGFQYXRoKTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlTURDVGFibGUocGFyYW1ldGVyczogTWRjVGFibGVUZW1wbGF0ZS5UYWJsZVRlbXBsYXRpbmdQYXJhbWV0ZXJzKTogTURDVGFibGUge1xuXHRcdHJldHVybiBNZGNUYWJsZVRlbXBsYXRlLmdldE1EQ1RhYmxlVGVtcGxhdGUodGhpcywgcGFyYW1ldGVycyk7XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVByb3BlcnRpZXNGcm9tVGFibGVEZWZpbml0aW9uKCk6IHZvaWQge1xuXHRcdC8vIElEIGZvciB0aGUgaW50ZXJuYWwgTURDIHRhYmxlXG5cdFx0aWYgKE1hbmFnZWRPYmplY3RNZXRhZGF0YS5pc0dlbmVyYXRlZElkKHRoaXMuZ2V0SWQoKSkpIHtcblx0XHRcdHRoaXMuY29udGVudElkID8/PSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gYCR7dGhpcy5nZXRJZCgpfS1jb250ZW50YDtcblx0XHR9XG5cblx0XHQvLyBCYXNpYyBzZWFyY2ggZmllbGQgaWYgbm8gZmlsdGVyIGJhciBpcyBwcm92aWRlZFxuXHRcdGlmICh0aGlzLnVzZUJhc2ljU2VhcmNoID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIElmIG5vIGZpbHRlcmJhciBpcyBwcm92aWRlZCwgdXNlIHRoZSBiYXNpYyBzZWFyY2ggZmllbGRcblx0XHRcdGlmICghdGhpcy5maWx0ZXJCYXIpIHtcblx0XHRcdFx0dGhpcy5maWx0ZXJCYXIgPSBnZW5lcmF0ZShbdGhpcy5jb250ZW50SWQsIFwiU3RhbmRhcmRBY3Rpb25cIiwgXCJCYXNpY1NlYXJjaFwiXSk7XG5cdFx0XHRcdHRoaXMudXNlQmFzaWNTZWFyY2ggPSB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy51c2VCYXNpY1NlYXJjaCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlYWQtb25seSBtb2RlXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5yZWFkT25seSA9PT0gdW5kZWZpbmVkICYmXG5cdFx0XHQodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5kaXNwbGF5TW9kZSA9PT0gdHJ1ZSB8fCB0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnJlYWRPbmx5ID09PSB0cnVlKVxuXHRcdCkge1xuXHRcdFx0dGhpcy5yZWFkT25seSA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gRW5hYmxlIGVtcHR5IHJvd3Ncblx0XHRpZiAodGhpcy5lbXB0eVJvd3NFbmFibGVkID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZWQgPVxuXHRcdFx0XHR0aGlzLmNyZWF0aW9uTW9kZT8ubmFtZSA9PT0gQ3JlYXRpb25Nb2RlLklubGluZUNyZWF0aW9uUm93c1xuXHRcdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdGlmIChlbmFibGVkICE9PSB1bmRlZmluZWQgJiYgZW5hYmxlZCAhPT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJlbXB0eVJvd3NFbmFibGVkXCIsIGVuYWJsZWQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGdldE5vRGF0YU1lc3NhZ2VNb2RlKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbW9kZSA9IHRoaXMubW9kZUZvck5vRGF0YU1lc3NhZ2UgPz8gdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5tb2RlRm9yTm9EYXRhTWVzc2FnZSA/PyBcImlsbHVzdHJhdGVkTWVzc2FnZS1BdXRvXCI7XG5cdFx0cmV0dXJuIG1vZGUgPT09IFwidGV4dFwiID8gXCJ0ZXh0XCIgOiBtb2RlLnNwbGl0KFwiLVwiKVsxXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGNvdW50IG9mIHRoZSByb3cgYmluZGluZyBvZiB0aGUgdGFibGUuXG5cdCAqIEByZXR1cm5zIFRoZSBjb3VudCBvZiB0aGUgcm93IGJpbmRpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0Q291bnQoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb3dCaW5kaW5nKCk/LmdldENvdW50KCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGFibGVBUEk7XG4i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QixPQUFBLENBQUFvRyxTQUFBLG9CQUFBN0csT0FBQSxHQUFBMFYsTUFBQSxDQUFBeWQsd0JBQUEsQ0FBQTF5QixPQUFBLENBQUFvRyxTQUFBLG9CQUFBcEcsT0FBQSxDQUFBb0csU0FBQSxHQUFBaXNCLHlCQUFBLENBQUFyeUIsT0FBQSxDQUFBb0csU0FBQSx5QkFBQTVHLE9BQUEsR0FBQXlWLE1BQUEsQ0FBQXlkLHdCQUFBLENBQUExeUIsT0FBQSxDQUFBb0csU0FBQSx5QkFBQXBHLE9BQUEsQ0FBQW9HLFNBQUEsR0FBQWlzQix5QkFBQSxDQUFBcnlCLE9BQUEsQ0FBQW9HLFNBQUEsMkJBQUEzRyxPQUFBLEdBQUF3VixNQUFBLENBQUF5ZCx3QkFBQSxDQUFBMXlCLE9BQUEsQ0FBQW9HLFNBQUEsMkJBQUFwRyxPQUFBLENBQUFvRyxTQUFBLEdBQUFpc0IseUJBQUEsQ0FBQXJ5QixPQUFBLENBQUFvRyxTQUFBLDBCQUFBMUcsT0FBQSxHQUFBdVYsTUFBQSxDQUFBeWQsd0JBQUEsQ0FBQTF5QixPQUFBLENBQUFvRyxTQUFBLDBCQUFBcEcsT0FBQSxDQUFBb0csU0FBQSxHQUFBaXNCLHlCQUFBLENBQUFyeUIsT0FBQSxDQUFBb0csU0FBQSwwQkFBQXpHLE9BQUEsR0FBQXNWLE1BQUEsQ0FBQXlkLHdCQUFBLENBQUExeUIsT0FBQSxDQUFBb0csU0FBQSwwQkFBQXBHLE9BQUEsQ0FBQW9HLFNBQUEsR0FBQWlzQix5QkFBQSxDQUFBcnlCLE9BQUEsQ0FBQW9HLFNBQUEscUJBQUF4RyxPQUFBLEdBQUFxVixNQUFBLENBQUF5ZCx3QkFBQSxDQUFBMXlCLE9BQUEsQ0FBQW9HLFNBQUEscUJBQUFwRyxPQUFBLENBQUFvRyxTQUFBLEdBQUFpc0IseUJBQUEsQ0FBQXJ5QixPQUFBLENBQUFvRyxTQUFBLDJCQUFBdkcsT0FBQSxHQUFBb1YsTUFBQSxDQUFBeWQsd0JBQUEsQ0FBQTF5QixPQUFBLENBQUFvRyxTQUFBLDJCQUFBcEcsT0FBQSxDQUFBb0csU0FBQSxHQUFBaXNCLHlCQUFBLENBQUFyeUIsT0FBQSxDQUFBb0csU0FBQSxtQkFBQXRHLE9BQUEsR0FBQW1WLE1BQUEsQ0FBQXlkLHdCQUFBLENBQUExeUIsT0FBQSxDQUFBb0csU0FBQSxtQkFBQXBHLE9BQUEsQ0FBQW9HLFNBQUEsR0FBQXBHLE9BQUEsTUFBQUQsTUFBQSxLQUFBQSxNQUFBLEtBQUFBLE1BQUEsS0FBQUEsTUFBQSxLQUFBQSxNQUFBLEtBQUFBLE1BQUEsS0FBQUEsTUFBQSxLQUFBQSxNQUFBLEtBQUFBLE1BQUE7RUFBQSxPQWluRS9EN0ksUUFBUTtBQUFBIiwiaWdub3JlTGlzdCI6W119