@sapui5/sap.fe.templates 1.105.0 → 1.106.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/package.json +2 -2
  2. package/src/sap/fe/templates/.library +1 -1
  3. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +2 -2
  4. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.ts +1 -1
  5. package/src/sap/fe/templates/Feedback.js +1 -1
  6. package/src/sap/fe/templates/Feedback.ts +0 -3
  7. package/src/sap/fe/templates/ListReport/ListReport.view.xml +1 -11
  8. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +49 -66
  9. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +41 -60
  10. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +1 -13
  11. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +0 -9
  12. package/src/sap/fe/templates/ListReport/overrides/Share.js +4 -12
  13. package/src/sap/fe/templates/ListReport/overrides/Share.ts +4 -12
  14. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +5 -5
  15. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +4 -4
  16. package/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +6 -1
  17. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +15 -7
  18. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +12 -3
  19. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +19 -15
  20. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +2 -2
  21. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +2 -2
  22. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +38 -20
  23. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +37 -24
  24. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +60 -48
  25. package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +6 -6
  26. package/src/sap/fe/templates/ObjectPage/view/fragments/FormActionButtons.fragment.xml +5 -1
  27. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +11 -8
  28. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +4 -4
  29. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +3 -3
  30. package/src/sap/fe/templates/library.js +1 -1
@@ -26,6 +26,7 @@ import {
26
26
  import EditState from "sap/fe/core/helpers/EditState";
27
27
  import MessageStrip from "sap/fe/core/helpers/MessageStrip";
28
28
  import { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
29
+ import * as StableIdHelper from "sap/fe/core/helpers/StableIdHelper";
29
30
  import CoreLibrary from "sap/fe/core/library";
30
31
  import PageController from "sap/fe/core/PageController";
31
32
  import ChartRuntime from "sap/fe/macros/chart/ChartRuntime";
@@ -38,6 +39,7 @@ import ExtensionAPI from "sap/fe/templates/ListReport/ExtensionAPI";
38
39
  import EditFlowOverrides from "sap/fe/templates/RootContainer/overrides/EditFlow";
39
40
  import TableScroller from "sap/fe/templates/TableScroller";
40
41
  import type SegmentedButton from "sap/m/SegmentedButton";
42
+ import Component from "sap/ui/core/Component";
41
43
  import type Control from "sap/ui/core/Control";
42
44
  import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
43
45
  import { system } from "sap/ui/Device";
@@ -47,6 +49,7 @@ import type JSONModel from "sap/ui/model/json/JSONModel";
47
49
  import type ResourceModel from "sap/ui/model/resource/ResourceModel";
48
50
  import hasher from "sap/ui/thirdparty/hasher";
49
51
  import type { V4Context } from "types/extension_types";
52
+ import * as ListReportTemplating from "./ListReportTemplating";
50
53
  import IntentBasedNavigationOverride from "./overrides/IntentBasedNavigation";
51
54
  import ShareOverrides from "./overrides/Share";
52
55
  import ViewStateOverrides from "./overrides/ViewState";
@@ -153,7 +156,7 @@ class ListReportController extends PageController {
153
156
  const aTables = this._getControls("table");
154
157
  if (EditState.isEditStateDirty()) {
155
158
  this._getMultiModeControl()?.invalidateContent();
156
- const oTableBinding = this._getTableBinding();
159
+ const oTableBinding = this._getTable()?.getRowBinding();
157
160
  if (oTableBinding) {
158
161
  if (CommonUtils.getAppComponent(this.getView())._isFclEnabled()) {
159
162
  // there is an issue if we use a timeout with a kept alive context used on another page
@@ -276,9 +279,7 @@ class ListReportController extends PageController {
276
279
  }
277
280
 
278
281
  getCurrentEntitySet() {
279
- return this._isMultiMode()
280
- ? this._getMultiModeControl()?.getDisplayedEntitySet()
281
- : this._getTable()?.data("targetCollectionPath").slice(1);
282
+ return this._getTable()?.data("targetCollectionPath").slice(1);
282
283
  }
283
284
 
284
285
  /**
@@ -318,16 +319,13 @@ class ListReportController extends PageController {
318
319
  }
319
320
 
320
321
  _getPageTitleInformation() {
321
- const oTitleInfo = { title: "", subtitle: "", intent: "", icon: "" };
322
- oTitleInfo.title = this.getView().getContent()[0].data().ListReportTitle;
323
- oTitleInfo.subtitle = this.getView().getContent()[0].data().ListReportSubtitle;
324
- return oTitleInfo;
325
- }
326
-
327
- _getPageOrFilterBarVariantManagement() {
328
- return (
329
- this.getView().byId("fe::PageVariantManagement") || this.getView().byId(`${this._getFilterBarControlId()}::VariantManagement`)
330
- );
322
+ const oManifestEntry = this.getAppComponent().getManifestEntry("sap.app");
323
+ return {
324
+ title: oManifestEntry.title,
325
+ subtitle: oManifestEntry.appSubTitle || "",
326
+ intent: "",
327
+ icon: ""
328
+ };
331
329
  }
332
330
 
333
331
  _getFilterBarControl() {
@@ -342,62 +340,48 @@ class ListReportController extends PageController {
342
340
  }
343
341
 
344
342
  _getSegmentedButton(sControl: any) {
345
- return this.getView().byId(this._getSegmentedButtonId(sControl));
343
+ const sSegmentedButtonId = (sControl === "Chart" ? this.getChartControl() : this._getTable())?.data("segmentedButtonId");
344
+ return this.getView().byId(sSegmentedButtonId);
346
345
  }
347
346
 
348
- _getSegmentedButtonId(sControl: any) {
349
- if (sControl === "Chart") {
350
- return this._getChart().data("segmentedButtonId");
351
- } else {
352
- return this._getTable()?.data("segmentedButtonId");
353
- }
347
+ _getControlFromPageModelProperty(sPath: string) {
348
+ const controlId = this._getPageModel()?.getProperty(sPath);
349
+ return controlId && this.getView().byId(controlId);
354
350
  }
355
351
 
356
- _getFilterBarControlId() {
357
- return this.getView().getContent()[0].data("filterBarId");
352
+ _getPageModel(): JSONModel | undefined {
353
+ const pageComponent = Component.getOwnerComponentFor(this.getView()) as any;
354
+ return pageComponent.getModel("_pageModel");
358
355
  }
359
356
 
360
- _getChartControlId() {
361
- return this.getView().getContent()[0].data("singleChartId");
357
+ _getFilterBarControlId(): string {
358
+ return this._getPageModel()?.getProperty("/filterBarId") || "";
362
359
  }
363
360
 
364
361
  getChartControl() {
365
- return this.getView().byId(this._getChartControlId());
362
+ return this._getControlFromPageModelProperty("/singleChartId");
366
363
  }
367
364
 
368
365
  _getVisualFilterBarControl() {
369
- return this.getView().byId(this._getVisualFilterBarControlId());
366
+ const sVisualFilterBarId = StableIdHelper.generate(["visualFilter", this._getFilterBarControlId()]);
367
+ return sVisualFilterBarId && this.getView().byId(sVisualFilterBarId);
370
368
  }
371
-
372
- _getVisualFilterBarControlId() {
373
- return this.getView().getContent()[0].data("visualFilterBarId");
369
+ _getFilterBarVariantControl() {
370
+ return this._getControlFromPageModelProperty("/variantManagement/id");
374
371
  }
375
372
 
376
373
  _getMultiModeControl() {
377
374
  return this.getView().byId("fe::TabMultipleMode::Control") as MultipleModeControl;
378
375
  }
379
376
 
380
- _getTableControlId() {
381
- return this.getView().getContent()[0].data("singleTableId");
382
- }
383
-
384
377
  _getTable(): Table | undefined {
385
378
  if (this._isMultiMode()) {
386
379
  const oControl = this._getMultiModeControl()?.getSelectedInnerControl()?.content;
387
380
  return oControl?.isA("sap.ui.mdc.Table") ? (oControl as Table) : undefined;
381
+ } else {
382
+ return this._getControlFromPageModelProperty("/singleTableId") as Table;
388
383
  }
389
- return this.getView().byId(this._getTableControlId()) as Table;
390
- }
391
-
392
- _getChart() {
393
- return this.getView().byId(this._getChartControlId());
394
384
  }
395
-
396
- _getTableBinding(sTableId?: any) {
397
- const oTableControl = sTableId ? this.getView().byId(sTableId) : this._getTable();
398
- return oTableControl && (oTableControl as any)._getRowBinding();
399
- }
400
-
401
385
  _getControls(sKey?: any) {
402
386
  if (this._isMultiMode()) {
403
387
  const aControls: any[] = [];
@@ -414,7 +398,7 @@ class ListReportController extends PageController {
414
398
  });
415
399
  return aControls;
416
400
  } else if (sKey === "Chart") {
417
- const oChart = this._getChart();
401
+ const oChart = this.getChartControl();
418
402
  return oChart ? [oChart] : [];
419
403
  } else {
420
404
  const oTable = this._getTable();
@@ -423,7 +407,7 @@ class ListReportController extends PageController {
423
407
  }
424
408
 
425
409
  _getDefaultPath() {
426
- const defaultPath = this.getView().getContent()[0].data("defaultPath");
410
+ const defaultPath = ListReportTemplating.getDefaultPath(this._getPageModel()?.getProperty("/views") || []);
427
411
  switch (defaultPath) {
428
412
  case "primary":
429
413
  return TemplateContentView.Chart;
@@ -443,7 +427,7 @@ class ListReportController extends PageController {
443
427
  * @returns Is Multiple Table mode set?
444
428
  */
445
429
  _isMultiMode(): boolean {
446
- return !!this.getView().getModel("_pageModel")?.getProperty("/multiViewsControl");
430
+ return !!this._getPageModel()?.getProperty("/multiViewsControl");
447
431
  }
448
432
 
449
433
  /**
@@ -453,13 +437,13 @@ class ListReportController extends PageController {
453
437
  * @name _isInitLoadDisabled
454
438
  * @returns Is InitLoad enabled?
455
439
  */
456
- _isInitLoadEnabled() {
440
+ _isInitLoadEnabled(): boolean {
457
441
  const initLoadMode = (this.getView().getViewData() as any).initialLoad;
458
442
  return initLoadMode === InitialLoadMode.Enabled;
459
443
  }
460
444
 
461
- _hasMultiVisualizations() {
462
- return this.getView().getContent()[0].data("hasMultiVisualizations") === "true";
445
+ _hasMultiVisualizations(): boolean {
446
+ return this._getPageModel()?.getProperty("/hasMultiVisualizations");
463
447
  }
464
448
 
465
449
  /**
@@ -499,7 +483,8 @@ class ListReportController extends PageController {
499
483
  }
500
484
  // set hook for flex for when standard variant is set (at start or by user at runtime)
501
485
  // required to override the user setting 'apply automatically' behaviour if there are no filters
502
- const variantManagement: any = this._getPageOrFilterBarVariantManagement();
486
+ const variantManagementId: any = ListReportTemplating.getVariantBackReference(this.getView().getViewData(), this._getPageModel());
487
+ const variantManagement = variantManagementId && this.getView().byId(variantManagementId);
503
488
  if (variantManagement) {
504
489
  variantManagement.registerApplyAutomaticallyOnStandardVariant(this._applyAutomaticallyOnStandardVariant.bind(this));
505
490
  }
@@ -737,7 +722,7 @@ class ListReportController extends PageController {
737
722
  const sSelectedKey = oEvent.mParameters.key ? oEvent.mParameters.key : null;
738
723
  const oInternalModelContext = this.getView().getBindingContext("internal") as InternalModelContext;
739
724
  oInternalModelContext.setProperty("alpContentView", sSelectedKey);
740
- const oChart = this._getChart();
725
+ const oChart = this.getChartControl();
741
726
  const oTable = this._getTable();
742
727
  const oSegmentedButtonDelegate = {
743
728
  onAfterRendering() {
@@ -773,13 +758,9 @@ class ListReportController extends PageController {
773
758
  this.getExtensionAPI().updateAppState();
774
759
  },
775
760
  onFiltersSegmentedButtonPressed(this: ListReportController, oEvent: any) {
776
- if (oEvent.getParameter("key") === "Compact") {
777
- this._getFilterBarControl().setVisible(true);
778
- (this.getView().byId(this.getView().getContent()[0].data("visualFilterBarId")) as Control).setVisible(false);
779
- } else {
780
- this._getFilterBarControl().setVisible(false);
781
- (this.getView().byId(this.getView().getContent()[0].data("visualFilterBarId")) as Control).setVisible(true);
782
- }
761
+ const isCompact = oEvent.getParameter("key") === "Compact";
762
+ this._getFilterBarControl().setVisible(isCompact);
763
+ (this._getVisualFilterBarControl() as Control).setVisible(!isCompact);
783
764
  },
784
765
  onStateChange(this: ListReportController) {
785
766
  this.getExtensionAPI().updateAppState();
@@ -114,18 +114,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/C
114
114
  MultipleModeControl.render = function render(oRm, oControl) {
115
115
  oRm.renderControl(oControl.content);
116
116
  }
117
- /**
118
- * Gets the entity set of the displayed visualization.
119
- *
120
- * @returns {string} The entity set
121
- */
122
- ;
123
-
124
- _proto.getDisplayedEntitySet = function getDisplayedEntitySet() {
125
- var _this$getSelectedInne3, _this$getSelectedInne4;
126
-
127
- return (_this$getSelectedInne3 = this.getSelectedInnerControl()) === null || _this$getSelectedInne3 === void 0 ? void 0 : (_this$getSelectedInne4 = _this$getSelectedInne3.content) === null || _this$getSelectedInne4 === void 0 ? void 0 : _this$getSelectedInne4.data("targetCollectionPath").slice(1);
128
- }
129
117
  /**
130
118
  * Gets the model containing information related to the IconTabFilters.
131
119
  *
@@ -468,4 +456,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/C
468
456
  })), _class2)) || _class);
469
457
  return MultipleModeControl;
470
458
  }, false);
471
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaW5kaW5nQWN0aW9uIiwiTXVsdGlwbGVNb2RlQ29udHJvbCIsImRlZmluZVVJNUNsYXNzIiwicHJvcGVydHkiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiYWdncmVnYXRpb24iLCJtdWx0aXBsZSIsImlzRGVmYXVsdCIsImFzc29jaWF0aW9uIiwiZXZlbnQiLCJvbkJlZm9yZVJlbmRlcmluZyIsImdldFRhYnNNb2RlbCIsIm9GaWx0ZXJCYXJBUEkiLCJfZ2V0RmlsdGVyQ29udHJvbCIsImdldFBhcmVudCIsIl9nZXRBbGxJbm5lckNvbnRyb2xzIiwiZm9yRWFjaCIsIm9NYWNyb0FQSSIsInNob3dDb3VudHMiLCJhdHRhY2hFdmVudCIsIl9yZWZyZXNoVGFic0NvdW50IiwiYmluZCIsInN1c3BlbmRCaW5kaW5nIiwiX29uU2VhcmNoIiwiX29uRmlsdGVyQ2hhbmdlZCIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJnZXRTZWxlY3RlZElubmVyQ29udHJvbCIsInJlc3VtZUJpbmRpbmciLCJnZXRQcm9wZXJ0eSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwicmVuZGVyQ29udHJvbCIsImNvbnRlbnQiLCJnZXREaXNwbGF5ZWRFbnRpdHlTZXQiLCJkYXRhIiwic2xpY2UiLCJzVGFic01vZGVsIiwib0NvbnRlbnQiLCJ1bmRlZmluZWQiLCJvTW9kZWwiLCJnZXRNb2RlbCIsIkpTT05Nb2RlbCIsInNldE1vZGVsIiwib1NlbGVjdGVkVGFiIiwiZ2V0SXRlbXMiLCJmaW5kIiwib0l0ZW0iLCJnZXRLZXkiLCJnZXRTZWxlY3RlZEtleSIsIl9nZXRUYWJGcm9tSW5uZXJDb250cm9sIiwiaGFuZGxlVGFiQ2hhbmdlIiwib0V2ZW50Iiwib0ljb25UYWJCYXIiLCJnZXRTb3VyY2UiLCJvTXVsdGlDb250cm9sIiwibVBhcmFtZXRlcnMiLCJnZXRQYXJhbWV0ZXJzIiwiX3NldElubmVyQmluZGluZyIsInNQcmV2aW91c1NlbGVjdGVkS2V5IiwicHJldmlvdXNLZXkiLCJzU2VsZWN0ZWRLZXkiLCJzZWxlY3RlZEtleSIsIm9GaWx0ZXJCYXIiLCJfcmVmcmVzaEN1c3RvbVZpZXciLCJnZXRGaWx0ZXJDb25kaXRpb25zIiwiQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJIiwiYWRkIiwiY2hhbmdlcyIsImNoYW5nZVNwZWNpZmljRGF0YSIsImNoYW5nZVR5cGUiLCJwcmV2aW91c1NlbGVjdGVkS2V5Iiwic2VsZWN0b3JFbGVtZW50IiwiX2dldFZpZXdDb250cm9sbGVyIiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJmaXJlRXZlbnQiLCJpY29uVGFiQmFyIiwiaW52YWxpZGF0ZUNvbnRlbnQiLCJzZXRDb3VudHNPdXREYXRlZCIsImJWYWx1ZSIsInNldFByb3BlcnR5Iiwic2V0RnJlZXplQ29udGVudCIsIl91cGRhdGVNdWx0aVRhYk5vdEFwcGxpY2FibGVGaWVsZHMiLCJvUmVzb3VyY2VCdW5kbGUiLCJ0YWJzTW9kZWwiLCJvRmlsdGVyQ29udHJvbCIsInJlc3VsdHMiLCJvVGFiIiwic1RhYklkIiwibUlnbm9yZWRGaWVsZHMiLCJyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcyIsIm5vdEFwcGxpY2FibGUiLCJmaWVsZHMiLCJ0aXRsZSIsIl9zZXRUYWJNZXNzYWdlU3RyaXAiLCJlbnRpdHlUeXBlUGF0aCIsImlnbm9yZWRGaWVsZHMiLCJyZXNvdXJjZUJ1bmRsZSIsImdldFRleHQiLCJzZXREYXRhIiwiYk9ubHlGb3JWaXNpYmxlVGFiIiwiaW5uZXJDb250cm9scyIsInJlZHVjZSIsImFJbm5lckNvbnRyb2xzIiwic0lubmVyQ29udHJvbCIsIkNvcmUiLCJieUlkIiwicHVzaCIsImZpbHRlciIsIm9Jbm5lckNvbnRyb2wiLCJnZXRWaXNpYmxlIiwiZmlsdGVyQ29udHJvbCIsInNTdXBwb3J0ZWRDbGFzcyIsIkljb25UYWJGaWx0ZXIiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJpc0EiLCJvVmlldyIsIkNvbW1vblV0aWxzIiwiZ2V0VGFyZ2V0VmlldyIsImdldENvbnRyb2xsZXIiLCJvRmlsdGVyQ29uZGl0aW9ucyIsInNSZWZyZXNoQ2F1c2UiLCJvblZpZXdOZWVkc1JlZnJlc2giLCJmaWx0ZXJDb25kaXRpb25zIiwiY3VycmVudFRhYklkIiwicmVmcmVzaENhdXNlIiwib0ljb25UYWJGaWx0ZXIiLCJnZXRDb3VudHMiLCJjb3VudHNPdXREYXRlZCIsInNldENvdW50IiwidGhlbiIsImlDb3VudCIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQiLCJiSXNTZWxlY3RlZEtleSIsInNBY3Rpb24iLCJSZXN1bWUiLCJTdXNwZW5kIiwicHJvcGVydGllcyIsInNUZXh0IiwiYUlnbm9yZWRGaWVsZHMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJhSWdub3JlZExhYmVscyIsIk1lc3NhZ2VTdHJpcCIsImdldExhYmVscyIsIkRlbGVnYXRlVXRpbCIsImdldExvY2FsaXplZFRleHQiLCJnZXRQYXJhbWV0ZXIiLCJDb250cm9sIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNdWx0aXBsZU1vZGVDb250cm9sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL01hY3JvQVBJXCI7XG5pbXBvcnQgSWNvblRhYkJhciBmcm9tIFwic2FwL20vSWNvblRhYkJhclwiO1xuaW1wb3J0IEljb25UYWJGaWx0ZXIgZnJvbSBcInNhcC9tL0ljb25UYWJGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvcmVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCBDb250cm9sUGVyc29uYWxpemF0aW9uV3JpdGVBUEkgZnJvbSBcInNhcC91aS9mbC93cml0ZS9hcGkvQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIElubmVyQ29udHJvbFR5cGUgPSBNYWNyb0FQSSAmXG5cdFBhcnRpYWw8e1xuXHRcdHJlc3VtZUJpbmRpbmc6IEZ1bmN0aW9uO1xuXHRcdHN1c3BlbmRCaW5kaW5nOiBGdW5jdGlvbjtcblx0XHRnZXRDb3VudHM6IEZ1bmN0aW9uO1xuXHRcdHJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzOiBGdW5jdGlvbjtcblx0XHRpbnZhbGlkYXRlQ29udGVudDogRnVuY3Rpb247XG5cdH0+O1xuXG50eXBlIE1lc3NhZ2VTdHJpcFByb3BlcnRpZXMgPSB7XG5cdGVudGl0eVR5cGVQYXRoOiBzdHJpbmc7XG5cdGlnbm9yZWRGaWVsZHM6IGFueVtdO1xuXHRyZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGU7XG5cdHRpdGxlOiBzdHJpbmc7XG59O1xuXG5lbnVtIEJpbmRpbmdBY3Rpb24ge1xuXHRTdXNwZW5kID0gXCJzdXNwZW5kQmluZGluZ1wiLFxuXHRSZXN1bWUgPSBcInJlc3VtZUJpbmRpbmdcIlxufVxuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnQuY29udHJvbHMuTXVsdGlwbGVNb2RlQ29udHJvbFwiKVxuY2xhc3MgTXVsdGlwbGVNb2RlQ29udHJvbCBleHRlbmRzIENvbnRyb2wge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRzaG93Q291bnRzITogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRmcmVlemVDb250ZW50ITogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRjb3VudHNPdXREYXRlZCE6IGJvb2xlYW47XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAubS5JY29uVGFiQmFyXCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnQhOiBJY29uVGFiQmFyO1xuXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSB9KVxuXHRpbm5lckNvbnRyb2xzITogc3RyaW5nW107XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9scy5GaWx0ZXJCYXJcIiwgbXVsdGlwbGU6IGZhbHNlIH0pXG5cdGZpbHRlckNvbnRyb2whOiBzdHJpbmc7XG5cblx0QGV2ZW50KClcblx0c2VsZWN0ITogRnVuY3Rpb247XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKSB7XG5cdFx0dGhpcy5nZXRUYWJzTW9kZWwoKTsgLy8gR2VuZXJhdGUgdGhlIG1vZGVsIHdoaWNoIGlzIG1hbmRhdG9yeSBmb3Igc29tZSBiaW5kaW5nc1xuXG5cdFx0Y29uc3Qgb0ZpbHRlckJhckFQSSA9IHRoaXMuX2dldEZpbHRlckNvbnRyb2woKT8uZ2V0UGFyZW50KCk7XG5cdFx0dGhpcy5fZ2V0QWxsSW5uZXJDb250cm9scygpLmZvckVhY2goKG9NYWNyb0FQSSkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuc2hvd0NvdW50cykge1xuXHRcdFx0XHRvTWFjcm9BUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbERhdGFSZXF1ZXN0ZWRcIiwgdGhpcy5fcmVmcmVzaFRhYnNDb3VudC5iaW5kKHRoaXMpKTtcblx0XHRcdH1cblx0XHRcdG9NYWNyb0FQSS5zdXNwZW5kQmluZGluZz8uKCk7XG5cdFx0fSk7XG5cdFx0aWYgKG9GaWx0ZXJCYXJBUEkpIHtcblx0XHRcdG9GaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbFNlYXJjaFwiLCB0aGlzLl9vblNlYXJjaC5iaW5kKHRoaXMpKTtcblx0XHRcdG9GaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbEZpbHRlckNoYW5nZWRcIiwgdGhpcy5fb25GaWx0ZXJDaGFuZ2VkLmJpbmQodGhpcykpO1xuXHRcdH1cblx0fVxuXG5cdG9uQWZ0ZXJSZW5kZXJpbmcoKSB7XG5cdFx0dGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpPy5yZXN1bWVCaW5kaW5nPy4oIXRoaXMuZ2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIpKTtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXIob1JtOiBSZW5kZXJNYW5hZ2VyLCBvQ29udHJvbDogTXVsdGlwbGVNb2RlQ29udHJvbCkge1xuXHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmNvbnRlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGVudGl0eSBzZXQgb2YgdGhlIGRpc3BsYXllZCB2aXN1YWxpemF0aW9uLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW50aXR5IHNldFxuXHQgKi9cblx0Z2V0RGlzcGxheWVkRW50aXR5U2V0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKT8uY29udGVudD8uZGF0YShcInRhcmdldENvbGxlY3Rpb25QYXRoXCIpLnNsaWNlKDEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG1vZGVsIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgSWNvblRhYkZpbHRlcnMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtzYXAudWkubW9kZWwuTW9kZWwgfCB1bmRlZmluZWR9IFRoZSBtb2RlbFxuXHQgKi9cblx0Z2V0VGFic01vZGVsKCk6IE1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzVGFic01vZGVsID0gXCJ0YWJzSW50ZXJuYWxcIjtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRpZiAoIW9Db250ZW50KSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRsZXQgb01vZGVsID0gb0NvbnRlbnQuZ2V0TW9kZWwoc1RhYnNNb2RlbCk7XG5cdFx0aWYgKCFvTW9kZWwpIHtcblx0XHRcdG9Nb2RlbCA9IG5ldyBKU09OTW9kZWwoe30pO1xuXHRcdFx0b0NvbnRlbnQuc2V0TW9kZWwob01vZGVsLCBzVGFic01vZGVsKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9Nb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBpbm5lciBjb250cm9sIG9mIHRoZSBkaXNwbGF5ZWQgdGFiLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7SW5uZXJDb250cm9sVHlwZSB8IHVuZGVmaW5lZH0gVGhlIGNvbnRyb2xcblx0ICovXG5cdGdldFNlbGVjdGVkSW5uZXJDb250cm9sKCk6IElubmVyQ29udHJvbFR5cGUgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG9TZWxlY3RlZFRhYiA9IHRoaXMuY29udGVudC5nZXRJdGVtcygpLmZpbmQoKG9JdGVtKSA9PiAob0l0ZW0gYXMgSWNvblRhYkZpbHRlcikuZ2V0S2V5KCkgPT09IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpKTtcblx0XHRyZXR1cm4gb1NlbGVjdGVkVGFiXG5cdFx0XHQ/IHRoaXMuX2dldEFsbElubmVyQ29udHJvbHMoKS5maW5kKChvTWFjcm9BUEkpID0+IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob01hY3JvQVBJKSA9PT0gb1NlbGVjdGVkVGFiKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogTWFuYWdlcyB0aGUgYmluZGluZyBvZiBhbGwgaW5uZXIgY29udHJvbHMgd2hlbiB0aGUgc2VsZWN0ZWQgSWNvblRhYkZpbHRlciBpcyBjaGFuZ2VkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3NhcC51aS5iYXNlLkV2ZW50fSBvRXZlbnQgRXZlbnQgZmlyZWQgYnkgdGhlIEljb25UYWJCYXJcblx0ICovXG5cdHN0YXRpYyBoYW5kbGVUYWJDaGFuZ2Uob0V2ZW50OiBhbnkpOiB2b2lkIHtcblx0XHRjb25zdCBvSWNvblRhYkJhciA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBvTXVsdGlDb250cm9sID0gb0ljb25UYWJCYXIuZ2V0UGFyZW50KCk7XG5cblx0XHRjb25zdCBtUGFyYW1ldGVycyA9IG9FdmVudC5nZXRQYXJhbWV0ZXJzKCk7XG5cdFx0b011bHRpQ29udHJvbC5fc2V0SW5uZXJCaW5kaW5nKHRydWUpO1xuXHRcdGNvbnN0IHNQcmV2aW91c1NlbGVjdGVkS2V5ID0gbVBhcmFtZXRlcnM/LnByZXZpb3VzS2V5O1xuXHRcdGNvbnN0IHNTZWxlY3RlZEtleSA9IG1QYXJhbWV0ZXJzPy5zZWxlY3RlZEtleTtcblxuXHRcdGlmIChzU2VsZWN0ZWRLZXkgJiYgc1ByZXZpb3VzU2VsZWN0ZWRLZXkgIT09IHNTZWxlY3RlZEtleSkge1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9NdWx0aUNvbnRyb2wuX2dldEZpbHRlckNvbnRyb2woKTtcblx0XHRcdGlmIChvRmlsdGVyQmFyICYmICFvTXVsdGlDb250cm9sLmdldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiKSkge1xuXHRcdFx0XHRpZiAoIW9NdWx0aUNvbnRyb2wuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKSkge1xuXHRcdFx0XHRcdC8vY3VzdG9tIHRhYlxuXHRcdFx0XHRcdG9NdWx0aUNvbnRyb2wuX3JlZnJlc2hDdXN0b21WaWV3KG9GaWx0ZXJCYXIuZ2V0RmlsdGVyQ29uZGl0aW9ucygpLCBcInRhYkNoYW5nZWRcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdENvbnRyb2xQZXJzb25hbGl6YXRpb25Xcml0ZUFQSS5hZGQoe1xuXHRcdFx0XHRjaGFuZ2VzOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y2hhbmdlU3BlY2lmaWNEYXRhOiB7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZVR5cGU6IFwic2VsZWN0SWNvblRhYkJhckZpbHRlclwiLFxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiB7XG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0ZWRLZXk6IHNTZWxlY3RlZEtleSxcblx0XHRcdFx0XHRcdFx0XHRwcmV2aW91c1NlbGVjdGVkS2V5OiBzUHJldmlvdXNTZWxlY3RlZEtleVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0c2VsZWN0b3JFbGVtZW50OiBvSWNvblRhYkJhclxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0b011bHRpQ29udHJvbC5fZ2V0Vmlld0NvbnRyb2xsZXIoKT8uZ2V0RXh0ZW5zaW9uQVBJKCk/LnVwZGF0ZUFwcFN0YXRlKCk7XG5cblx0XHRvTXVsdGlDb250cm9sLmZpcmVFdmVudChcInNlbGVjdFwiLCB7XG5cdFx0XHRpY29uVGFiQmFyOiBvSWNvblRhYkJhcixcblx0XHRcdHNlbGVjdGVkS2V5OiBzU2VsZWN0ZWRLZXksXG5cdFx0XHRwcmV2aW91c0tleTogc1ByZXZpb3VzU2VsZWN0ZWRLZXlcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbnZhbGlkYXRlcyB0aGUgY29udGVudCBvZiBhbGwgaW5uZXIgY29udHJvbHMuXG5cdCAqL1xuXHRpbnZhbGlkYXRlQ29udGVudCgpIHtcblx0XHR0aGlzLnNldENvdW50c091dERhdGVkKHRydWUpO1xuXHRcdHRoaXMuX2dldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdG9NYWNyb0FQSS5pbnZhbGlkYXRlQ29udGVudD8uKCk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgY291bnRzIHRvIG91dCBvZiBkYXRlIG9yIHVwIHRvIGRhdGVcblx0ICogSWYgdGhlIGNvdW50cyBhcmUgc2V0IHRvIFwib3V0IG9mIGRhdGVcIiBhbmQgdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgZG9lc24ndCBjb250YWluIGFuIGlubmVyIGNvbnRyb2wgYWxsIGlubmVyIGNvbnRyb2xzIGFyZSByZXF1ZXN0ZWQgdG8gZ2V0IHRoZSBuZXcgY291bnRzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJWYWx1ZSBGcmVlemUgb3Igbm90IHRoZSBjb250cm9sXG5cdCAqL1xuXHRzZXRDb3VudHNPdXREYXRlZChiVmFsdWUgPSB0cnVlKSB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImNvdW50c091dERhdGVkXCIsIGJWYWx1ZSk7XG5cdFx0Ly8gaWYgdGhlIGN1cnJlbnQgdGFiIGlzIG5vdCBjb25maWd1cmVkIHdpdGggbm8gaW5uZXIgQ29udHJvbFxuXHRcdC8vIHRoZSB0YWIgY291bnRzIG11c3QgYmUgbWFudWFsbHkgcmVmcmVzaGVkIHNpbmNlIG5vIE1hY3JvIEFQSSB3aWxsIHNlbnQgZXZlbnQgaW50ZXJuYWxEYXRhUmVxdWVzdGVkXG5cdFx0aWYgKGJWYWx1ZSAmJiAhdGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpKSB7XG5cdFx0XHR0aGlzLl9yZWZyZXNoVGFic0NvdW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZyZWV6ZXMgdGhlIGNvbnRlbnQgOlxuXHQgKiAgLSBjb250ZW50IGlzIGZyb3plbjogdGhlIGJpbmRpbmcgb2YgdGhlIGlubmVyIGNvbnRyb2xzIGFyZSBzdXNwZW5kZWQuXG5cdCAqICAtIGNvbnRlbnQgaXMgdW5mcm96ZW46IHRoZSBiaW5kaW5nIG9mIGlubmVyIGNvbnRyb2wgcmVsYXRlZCB0byB0aGUgc2VsZWN0ZWQgSWNvblRhYkZpbHRlciBpcyByZXN1bWVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJWYWx1ZSBGcmVlemUgb3Igbm90IHRoZSBjb250cm9sXG5cdCAqL1xuXHRzZXRGcmVlemVDb250ZW50KGJWYWx1ZTogYm9vbGVhbikge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIsIGJWYWx1ZSk7XG5cdFx0dGhpcy5fc2V0SW5uZXJCaW5kaW5nKCk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgaW50ZXJuYWwgbW9kZWwgd2l0aCB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZSBvbiBlYWNoIEljb25UYWJGaWx0ZXIgKGNvbnRhaW5pbmcgaW5uZXIgY29udHJvbCkgYWNjb3JkaW5nIHRvIHRoZSBlbnRpdHlUeXBlIG9mIHRoZSBmaWx0ZXIgY29udHJvbC5cblx0ICpcblx0ICogQHBhcmFtIG9SZXNvdXJjZUJ1bmRsZVxuXHQgKi9cblx0X3VwZGF0ZU11bHRpVGFiTm90QXBwbGljYWJsZUZpZWxkcyhvUmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlKSB7XG5cdFx0Y29uc3QgdGFic01vZGVsID0gdGhpcy5nZXRUYWJzTW9kZWwoKTtcblx0XHRjb25zdCBvRmlsdGVyQ29udHJvbCA9IHRoaXMuX2dldEZpbHRlckNvbnRyb2woKSBhcyBDb250cm9sO1xuXHRcdGlmICh0YWJzTW9kZWwgJiYgb0ZpbHRlckNvbnRyb2wpIHtcblx0XHRcdGNvbnN0IHJlc3VsdHM6IGFueSA9IHt9O1xuXHRcdFx0dGhpcy5fZ2V0QWxsSW5uZXJDb250cm9scygpLmZvckVhY2goKG9NYWNyb0FQSSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvVGFiID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpO1xuXHRcdFx0XHRpZiAob1RhYikge1xuXHRcdFx0XHRcdGNvbnN0IHNUYWJJZCA9IG9UYWIuZ2V0S2V5KCk7XG5cdFx0XHRcdFx0Y29uc3QgbUlnbm9yZWRGaWVsZHMgPSBvTWFjcm9BUEkucmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHM/LihvRmlsdGVyQ29udHJvbCkgfHwgW107XG5cdFx0XHRcdFx0cmVzdWx0c1tzVGFiSWRdID0ge1xuXHRcdFx0XHRcdFx0bm90QXBwbGljYWJsZToge1xuXHRcdFx0XHRcdFx0XHRmaWVsZHM6IG1JZ25vcmVkRmllbGRzLFxuXHRcdFx0XHRcdFx0XHR0aXRsZTogdGhpcy5fc2V0VGFiTWVzc2FnZVN0cmlwKHtcblx0XHRcdFx0XHRcdFx0XHRlbnRpdHlUeXBlUGF0aDogb0ZpbHRlckNvbnRyb2wuZGF0YShcImVudGl0eVR5cGVcIiksXG5cdFx0XHRcdFx0XHRcdFx0aWdub3JlZEZpZWxkczogbUlnbm9yZWRGaWVsZHMsXG5cdFx0XHRcdFx0XHRcdFx0cmVzb3VyY2VCdW5kbGU6IG9SZXNvdXJjZUJ1bmRsZSxcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogb1RhYi5nZXRUZXh0KClcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdCh0YWJzTW9kZWwgYXMgYW55KS5zZXREYXRhKHJlc3VsdHMpO1xuXHRcdH1cblx0fVxuXG5cdF9nZXRBbGxJbm5lckNvbnRyb2xzKGJPbmx5Rm9yVmlzaWJsZVRhYiA9IGZhbHNlKTogSW5uZXJDb250cm9sVHlwZVtdIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5pbm5lckNvbnRyb2xzLnJlZHVjZSgoYUlubmVyQ29udHJvbHM6IElubmVyQ29udHJvbFR5cGVbXSwgc0lubmVyQ29udHJvbDogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sID0gQ29yZS5ieUlkKHNJbm5lckNvbnRyb2wpIGFzIElubmVyQ29udHJvbFR5cGU7XG5cdFx0XHRcdGlmIChvQ29udHJvbCkge1xuXHRcdFx0XHRcdGFJbm5lckNvbnRyb2xzLnB1c2gob0NvbnRyb2wpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhSW5uZXJDb250cm9scy5maWx0ZXIoXG5cdFx0XHRcdFx0KG9Jbm5lckNvbnRyb2wpID0+ICFiT25seUZvclZpc2libGVUYWIgfHwgdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvSW5uZXJDb250cm9sKT8uZ2V0VmlzaWJsZSgpXG5cdFx0XHRcdCk7XG5cdFx0XHR9LCBbXSkgfHwgW11cblx0XHQpO1xuXHR9XG5cblx0X2dldEZpbHRlckNvbnRyb2woKTogRmlsdGVyQmFyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gQ29yZS5ieUlkKHRoaXMuZmlsdGVyQ29udHJvbCkgYXMgRmlsdGVyQmFyIHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0X2dldFRhYkZyb21Jbm5lckNvbnRyb2wob0NvbnRyb2w6IENvbnRyb2wpOiBJY29uVGFiRmlsdGVyIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzU3VwcG9ydGVkQ2xhc3MgPSBJY29uVGFiRmlsdGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpO1xuXHRcdGxldCBvVGFiOiBhbnkgPSBvQ29udHJvbDtcblx0XHRpZiAob1RhYiAmJiAhb1RhYi5pc0Eoc1N1cHBvcnRlZENsYXNzKSAmJiBvVGFiLmdldFBhcmVudCkge1xuXHRcdFx0b1RhYiA9IG9Db250cm9sLmdldFBhcmVudCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gb1RhYiAmJiBvVGFiLmlzQShzU3VwcG9ydGVkQ2xhc3MpID8gKG9UYWIgYXMgSWNvblRhYkZpbHRlcikgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRfZ2V0Vmlld0NvbnRyb2xsZXIoKSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdHJldHVybiBvVmlldyAmJiBvVmlldy5nZXRDb250cm9sbGVyKCk7XG5cdH1cblxuXHRfcmVmcmVzaEN1c3RvbVZpZXcob0ZpbHRlckNvbmRpdGlvbnM6IGFueSwgc1JlZnJlc2hDYXVzZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5fZ2V0Vmlld0NvbnRyb2xsZXIoKT8ub25WaWV3TmVlZHNSZWZyZXNoPy4oe1xuXHRcdFx0ZmlsdGVyQ29uZGl0aW9uczogb0ZpbHRlckNvbmRpdGlvbnMsXG5cdFx0XHRjdXJyZW50VGFiSWQ6IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpLFxuXHRcdFx0cmVmcmVzaENhdXNlOiBzUmVmcmVzaENhdXNlXG5cdFx0fSk7XG5cdH1cblxuXHRfcmVmcmVzaFRhYnNDb3VudCgpOiB2b2lkIHtcblx0XHRjb25zdCBzU2VsZWN0ZWRLZXkgPSB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKTtcblx0XHR0aGlzLl9nZXRBbGxJbm5lckNvbnRyb2xzKHRydWUpLmZvckVhY2goKG9NYWNyb0FQSSkgPT4ge1xuXHRcdFx0Y29uc3Qgb0ljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSk7XG5cdFx0XHRpZiAob01hY3JvQVBJPy5nZXRDb3VudHMgJiYgKHRoaXMuY291bnRzT3V0RGF0ZWQgfHwgc1NlbGVjdGVkS2V5ID09PSBvSWNvblRhYkZpbHRlcj8uZ2V0S2V5KCkpKSB7XG5cdFx0XHRcdGlmIChvSWNvblRhYkZpbHRlciAmJiBvSWNvblRhYkZpbHRlci5zZXRDb3VudCkge1xuXHRcdFx0XHRcdG9JY29uVGFiRmlsdGVyLnNldENvdW50KFwiLi4uXCIpO1xuXHRcdFx0XHRcdG9NYWNyb0FQSVxuXHRcdFx0XHRcdFx0LmdldENvdW50cygpXG5cdFx0XHRcdFx0XHQudGhlbigoaUNvdW50OiBzdHJpbmcpID0+IG9JY29uVGFiRmlsdGVyLnNldENvdW50KGlDb3VudCB8fCBcIjBcIikpXG5cdFx0XHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHJlcXVlc3RpbmcgQ291bnRzIGZvciBDb250cm9sXCIsIG9FcnJvcik7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQoZmFsc2UpO1xuXHR9XG5cblx0X3NldElubmVyQmluZGluZyhiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQgPSBmYWxzZSkge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuX2dldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdFx0Y29uc3Qgb0ljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSk7XG5cdFx0XHRcdGNvbnN0IGJJc1NlbGVjdGVkS2V5ID0gb0ljb25UYWJGaWx0ZXI/LmdldEtleSgpID09PSB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKTtcblx0XHRcdFx0Y29uc3Qgc0FjdGlvbiA9IGJJc1NlbGVjdGVkS2V5ICYmICF0aGlzLmdldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiKSA/IEJpbmRpbmdBY3Rpb24uUmVzdW1lIDogQmluZGluZ0FjdGlvbi5TdXNwZW5kO1xuXHRcdFx0XHRvTWFjcm9BUElbc0FjdGlvbl0/LihzQWN0aW9uID09PSBCaW5kaW5nQWN0aW9uLlJlc3VtZSA/IGJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZCAmJiBiSXNTZWxlY3RlZEtleSA6IHVuZGVmaW5lZCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRfc2V0VGFiTWVzc2FnZVN0cmlwKHByb3BlcnRpZXM6IE1lc3NhZ2VTdHJpcFByb3BlcnRpZXMpIHtcblx0XHRsZXQgc1RleHQgPSBcIlwiO1xuXHRcdGNvbnN0IGFJZ25vcmVkRmllbGRzID0gcHJvcGVydGllcy5pZ25vcmVkRmllbGRzO1xuXHRcdGNvbnN0IG9GaWx0ZXJDb250cm9sID0gdGhpcy5fZ2V0RmlsdGVyQ29udHJvbCgpIGFzIENvbnRyb2w7XG5cdFx0aWYgKG9GaWx0ZXJDb250cm9sICYmIEFycmF5LmlzQXJyYXkoYUlnbm9yZWRGaWVsZHMpICYmIGFJZ25vcmVkRmllbGRzLmxlbmd0aCA+IDAgJiYgcHJvcGVydGllcy50aXRsZSkge1xuXHRcdFx0Y29uc3QgYUlnbm9yZWRMYWJlbHMgPSBNZXNzYWdlU3RyaXAuZ2V0TGFiZWxzKFxuXHRcdFx0XHRhSWdub3JlZEZpZWxkcyxcblx0XHRcdFx0cHJvcGVydGllcy5lbnRpdHlUeXBlUGF0aCxcblx0XHRcdFx0b0ZpbHRlckNvbnRyb2wsXG5cdFx0XHRcdHByb3BlcnRpZXMucmVzb3VyY2VCdW5kbGVcblx0XHRcdCk7XG5cdFx0XHRzVGV4dCA9IE1lc3NhZ2VTdHJpcC5nZXRUZXh0KGFJZ25vcmVkTGFiZWxzLCBvRmlsdGVyQ29udHJvbCwgcHJvcGVydGllcy50aXRsZSwgRGVsZWdhdGVVdGlsLmdldExvY2FsaXplZFRleHQpO1xuXHRcdFx0cmV0dXJuIHNUZXh0O1xuXHRcdH1cblx0fVxuXG5cdF9vblNlYXJjaChvRXZlbnQ6IENvcmVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0dGhpcy5zZXRGcmVlemVDb250ZW50KGZhbHNlKTtcblx0XHRpZiAodGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpKSB7XG5cdFx0XHR0aGlzLl91cGRhdGVNdWx0aVRhYk5vdEFwcGxpY2FibGVGaWVsZHModGhpcy5fZ2V0Vmlld0NvbnRyb2xsZXIoKT8ub1Jlc291cmNlQnVuZGxlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gY3VzdG9tIHRhYlxuXHRcdFx0dGhpcy5fcmVmcmVzaEN1c3RvbVZpZXcob0V2ZW50LmdldFBhcmFtZXRlcihcImNvbmRpdGlvbnNcIiksIFwic2VhcmNoXCIpO1xuXHRcdH1cblx0fVxuXG5cdF9vbkZpbHRlckNoYW5nZWQob0V2ZW50OiBDb3JlRXZlbnQpOiB2b2lkIHtcblx0XHRpZiAob0V2ZW50LmdldFBhcmFtZXRlcihcImNvbmRpdGlvbnNCYXNlZFwiKSkge1xuXHRcdFx0dGhpcy5zZXRGcmVlemVDb250ZW50KHRydWUpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBNdWx0aXBsZU1vZGVDb250cm9sO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFrQ0tBLGE7O2FBQUFBLGE7SUFBQUEsYTtJQUFBQSxhO0tBQUFBLGEsS0FBQUEsYTs7TUFNQ0MsbUIsV0FETEMsY0FBYyxDQUFDLDBEQUFELEMsVUFFYkMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFSLENBQUQsQyxVQUdSRCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVI7SUFBbUJDLFlBQVksRUFBRTtFQUFqQyxDQUFELEMsVUFHUkYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFSO0lBQW1CQyxZQUFZLEVBQUU7RUFBakMsQ0FBRCxDLFVBR1JDLFdBQVcsQ0FBQztJQUFFRixJQUFJLEVBQUUsa0JBQVI7SUFBNEJHLFFBQVEsRUFBRSxLQUF0QztJQUE2Q0MsU0FBUyxFQUFFO0VBQXhELENBQUQsQyxVQUdYQyxXQUFXLENBQUM7SUFBRUwsSUFBSSxFQUFFLHFCQUFSO0lBQStCRyxRQUFRLEVBQUU7RUFBekMsQ0FBRCxDLFVBR1hFLFdBQVcsQ0FBQztJ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
459
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaW5kaW5nQWN0aW9uIiwiTXVsdGlwbGVNb2RlQ29udHJvbCIsImRlZmluZVVJNUNsYXNzIiwicHJvcGVydHkiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiYWdncmVnYXRpb24iLCJtdWx0aXBsZSIsImlzRGVmYXVsdCIsImFzc29jaWF0aW9uIiwiZXZlbnQiLCJvbkJlZm9yZVJlbmRlcmluZyIsImdldFRhYnNNb2RlbCIsIm9GaWx0ZXJCYXJBUEkiLCJfZ2V0RmlsdGVyQ29udHJvbCIsImdldFBhcmVudCIsIl9nZXRBbGxJbm5lckNvbnRyb2xzIiwiZm9yRWFjaCIsIm9NYWNyb0FQSSIsInNob3dDb3VudHMiLCJhdHRhY2hFdmVudCIsIl9yZWZyZXNoVGFic0NvdW50IiwiYmluZCIsInN1c3BlbmRCaW5kaW5nIiwiX29uU2VhcmNoIiwiX29uRmlsdGVyQ2hhbmdlZCIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJnZXRTZWxlY3RlZElubmVyQ29udHJvbCIsInJlc3VtZUJpbmRpbmciLCJnZXRQcm9wZXJ0eSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwicmVuZGVyQ29udHJvbCIsImNvbnRlbnQiLCJzVGFic01vZGVsIiwib0NvbnRlbnQiLCJ1bmRlZmluZWQiLCJvTW9kZWwiLCJnZXRNb2RlbCIsIkpTT05Nb2RlbCIsInNldE1vZGVsIiwib1NlbGVjdGVkVGFiIiwiZ2V0SXRlbXMiLCJmaW5kIiwib0l0ZW0iLCJnZXRLZXkiLCJnZXRTZWxlY3RlZEtleSIsIl9nZXRUYWJGcm9tSW5uZXJDb250cm9sIiwiaGFuZGxlVGFiQ2hhbmdlIiwib0V2ZW50Iiwib0ljb25UYWJCYXIiLCJnZXRTb3VyY2UiLCJvTXVsdGlDb250cm9sIiwibVBhcmFtZXRlcnMiLCJnZXRQYXJhbWV0ZXJzIiwiX3NldElubmVyQmluZGluZyIsInNQcmV2aW91c1NlbGVjdGVkS2V5IiwicHJldmlvdXNLZXkiLCJzU2VsZWN0ZWRLZXkiLCJzZWxlY3RlZEtleSIsIm9GaWx0ZXJCYXIiLCJfcmVmcmVzaEN1c3RvbVZpZXciLCJnZXRGaWx0ZXJDb25kaXRpb25zIiwiQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJIiwiYWRkIiwiY2hhbmdlcyIsImNoYW5nZVNwZWNpZmljRGF0YSIsImNoYW5nZVR5cGUiLCJwcmV2aW91c1NlbGVjdGVkS2V5Iiwic2VsZWN0b3JFbGVtZW50IiwiX2dldFZpZXdDb250cm9sbGVyIiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJmaXJlRXZlbnQiLCJpY29uVGFiQmFyIiwiaW52YWxpZGF0ZUNvbnRlbnQiLCJzZXRDb3VudHNPdXREYXRlZCIsImJWYWx1ZSIsInNldFByb3BlcnR5Iiwic2V0RnJlZXplQ29udGVudCIsIl91cGRhdGVNdWx0aVRhYk5vdEFwcGxpY2FibGVGaWVsZHMiLCJvUmVzb3VyY2VCdW5kbGUiLCJ0YWJzTW9kZWwiLCJvRmlsdGVyQ29udHJvbCIsInJlc3VsdHMiLCJvVGFiIiwic1RhYklkIiwibUlnbm9yZWRGaWVsZHMiLCJyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcyIsIm5vdEFwcGxpY2FibGUiLCJmaWVsZHMiLCJ0aXRsZSIsIl9zZXRUYWJNZXNzYWdlU3RyaXAiLCJlbnRpdHlUeXBlUGF0aCIsImRhdGEiLCJpZ25vcmVkRmllbGRzIiwicmVzb3VyY2VCdW5kbGUiLCJnZXRUZXh0Iiwic2V0RGF0YSIsImJPbmx5Rm9yVmlzaWJsZVRhYiIsImlubmVyQ29udHJvbHMiLCJyZWR1Y2UiLCJhSW5uZXJDb250cm9scyIsInNJbm5lckNvbnRyb2wiLCJDb3JlIiwiYnlJZCIsInB1c2giLCJmaWx0ZXIiLCJvSW5uZXJDb250cm9sIiwiZ2V0VmlzaWJsZSIsImZpbHRlckNvbnRyb2wiLCJzU3VwcG9ydGVkQ2xhc3MiLCJJY29uVGFiRmlsdGVyIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiaXNBIiwib1ZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckNvbmRpdGlvbnMiLCJzUmVmcmVzaENhdXNlIiwib25WaWV3TmVlZHNSZWZyZXNoIiwiZmlsdGVyQ29uZGl0aW9ucyIsImN1cnJlbnRUYWJJZCIsInJlZnJlc2hDYXVzZSIsIm9JY29uVGFiRmlsdGVyIiwiZ2V0Q291bnRzIiwiY291bnRzT3V0RGF0ZWQiLCJzZXRDb3VudCIsInRoZW4iLCJpQ291bnQiLCJjYXRjaCIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwiYlJlcXVlc3RJZk5vdEluaXRpYWxpemVkIiwiYklzU2VsZWN0ZWRLZXkiLCJzQWN0aW9uIiwiUmVzdW1lIiwiU3VzcGVuZCIsInByb3BlcnRpZXMiLCJzVGV4dCIsImFJZ25vcmVkRmllbGRzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiYUlnbm9yZWRMYWJlbHMiLCJNZXNzYWdlU3RyaXAiLCJnZXRMYWJlbHMiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRMb2NhbGl6ZWRUZXh0IiwiZ2V0UGFyYW1ldGVyIiwiQ29udHJvbCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTXVsdGlwbGVNb2RlQ29udHJvbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0ZpbHRlckJhclwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgTWVzc2FnZVN0cmlwIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IERlbGVnYXRlVXRpbCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCBNYWNyb0FQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9NYWNyb0FQSVwiO1xuaW1wb3J0IEljb25UYWJCYXIgZnJvbSBcInNhcC9tL0ljb25UYWJCYXJcIjtcbmltcG9ydCBJY29uVGFiRmlsdGVyIGZyb20gXCJzYXAvbS9JY29uVGFiRmlsdGVyXCI7XG5pbXBvcnQgdHlwZSBDb3JlRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCBSZW5kZXJNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQgQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJIGZyb20gXCJzYXAvdWkvZmwvd3JpdGUvYXBpL0NvbnRyb2xQZXJzb25hbGl6YXRpb25Xcml0ZUFQSVwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuXG5leHBvcnQgdHlwZSBJbm5lckNvbnRyb2xUeXBlID0gTWFjcm9BUEkgJlxuXHRQYXJ0aWFsPHtcblx0XHRyZXN1bWVCaW5kaW5nOiBGdW5jdGlvbjtcblx0XHRzdXNwZW5kQmluZGluZzogRnVuY3Rpb247XG5cdFx0Z2V0Q291bnRzOiBGdW5jdGlvbjtcblx0XHRyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkczogRnVuY3Rpb247XG5cdFx0aW52YWxpZGF0ZUNvbnRlbnQ6IEZ1bmN0aW9uO1xuXHR9PjtcblxudHlwZSBNZXNzYWdlU3RyaXBQcm9wZXJ0aWVzID0ge1xuXHRlbnRpdHlUeXBlUGF0aDogc3RyaW5nO1xuXHRpZ25vcmVkRmllbGRzOiBhbnlbXTtcblx0cmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlO1xuXHR0aXRsZTogc3RyaW5nO1xufTtcblxuZW51bSBCaW5kaW5nQWN0aW9uIHtcblx0U3VzcGVuZCA9IFwic3VzcGVuZEJpbmRpbmdcIixcblx0UmVzdW1lID0gXCJyZXN1bWVCaW5kaW5nXCJcbn1cblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LmNvbnRyb2xzLk11bHRpcGxlTW9kZUNvbnRyb2xcIilcbmNsYXNzIE11bHRpcGxlTW9kZUNvbnRyb2wgZXh0ZW5kcyBDb250cm9sIHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0c2hvd0NvdW50cyE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0ZnJlZXplQ29udGVudCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0Y291bnRzT3V0RGF0ZWQhOiBib29sZWFuO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uSWNvblRhYkJhclwiLCBtdWx0aXBsZTogZmFsc2UsIGlzRGVmYXVsdDogdHJ1ZSB9KVxuXHRjb250ZW50ITogSWNvblRhYkJhcjtcblxuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IHRydWUgfSlcblx0aW5uZXJDb250cm9scyE6IHN0cmluZ1tdO1xuXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbHMuRmlsdGVyQmFyXCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHRmaWx0ZXJDb250cm9sITogc3RyaW5nO1xuXG5cdEBldmVudCgpXG5cdHNlbGVjdCE6IEZ1bmN0aW9uO1xuXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCkge1xuXHRcdHRoaXMuZ2V0VGFic01vZGVsKCk7IC8vIEdlbmVyYXRlIHRoZSBtb2RlbCB3aGljaCBpcyBtYW5kYXRvcnkgZm9yIHNvbWUgYmluZGluZ3NcblxuXHRcdGNvbnN0IG9GaWx0ZXJCYXJBUEkgPSB0aGlzLl9nZXRGaWx0ZXJDb250cm9sKCk/LmdldFBhcmVudCgpO1xuXHRcdHRoaXMuX2dldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdGlmICh0aGlzLnNob3dDb3VudHMpIHtcblx0XHRcdFx0b01hY3JvQVBJLmF0dGFjaEV2ZW50KFwiaW50ZXJuYWxEYXRhUmVxdWVzdGVkXCIsIHRoaXMuX3JlZnJlc2hUYWJzQ291bnQuYmluZCh0aGlzKSk7XG5cdFx0XHR9XG5cdFx0XHRvTWFjcm9BUEkuc3VzcGVuZEJpbmRpbmc/LigpO1xuXHRcdH0pO1xuXHRcdGlmIChvRmlsdGVyQmFyQVBJKSB7XG5cdFx0XHRvRmlsdGVyQmFyQVBJLmF0dGFjaEV2ZW50KFwiaW50ZXJuYWxTZWFyY2hcIiwgdGhpcy5fb25TZWFyY2guYmluZCh0aGlzKSk7XG5cdFx0XHRvRmlsdGVyQmFyQVBJLmF0dGFjaEV2ZW50KFwiaW50ZXJuYWxGaWx0ZXJDaGFuZ2VkXCIsIHRoaXMuX29uRmlsdGVyQ2hhbmdlZC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cdH1cblxuXHRvbkFmdGVyUmVuZGVyaW5nKCkge1xuXHRcdHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKT8ucmVzdW1lQmluZGluZz8uKCF0aGlzLmdldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiKSk7XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IE11bHRpcGxlTW9kZUNvbnRyb2wpIHtcblx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBtb2RlbCBjb250YWluaW5nIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIEljb25UYWJGaWx0ZXJzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c2FwLnVpLm1vZGVsLk1vZGVsIHwgdW5kZWZpbmVkfSBUaGUgbW9kZWxcblx0ICovXG5cdGdldFRhYnNNb2RlbCgpOiBNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgc1RhYnNNb2RlbCA9IFwidGFic0ludGVybmFsXCI7XG5cdFx0Y29uc3Qgb0NvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0aWYgKCFvQ29udGVudCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0bGV0IG9Nb2RlbCA9IG9Db250ZW50LmdldE1vZGVsKHNUYWJzTW9kZWwpO1xuXHRcdGlmICghb01vZGVsKSB7XG5cdFx0XHRvTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHt9KTtcblx0XHRcdG9Db250ZW50LnNldE1vZGVsKG9Nb2RlbCwgc1RhYnNNb2RlbCk7XG5cdFx0fVxuXHRcdHJldHVybiBvTW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgaW5uZXIgY29udHJvbCBvZiB0aGUgZGlzcGxheWVkIHRhYi5cblx0ICpcblx0ICogQHJldHVybnMge0lubmVyQ29udHJvbFR5cGUgfCB1bmRlZmluZWR9IFRoZSBjb250cm9sXG5cdCAqL1xuXHRnZXRTZWxlY3RlZElubmVyQ29udHJvbCgpOiBJbm5lckNvbnRyb2xUeXBlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvU2VsZWN0ZWRUYWIgPSB0aGlzLmNvbnRlbnQuZ2V0SXRlbXMoKS5maW5kKChvSXRlbSkgPT4gKG9JdGVtIGFzIEljb25UYWJGaWx0ZXIpLmdldEtleSgpID09PSB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKSk7XG5cdFx0cmV0dXJuIG9TZWxlY3RlZFRhYlxuXHRcdFx0PyB0aGlzLl9nZXRBbGxJbm5lckNvbnRyb2xzKCkuZmluZCgob01hY3JvQVBJKSA9PiB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSkgPT09IG9TZWxlY3RlZFRhYilcblx0XHRcdDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgdGhlIGJpbmRpbmcgb2YgYWxsIGlubmVyIGNvbnRyb2xzIHdoZW4gdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgaXMgY2hhbmdlZC5cblx0ICpcblx0ICogQHBhcmFtIHtzYXAudWkuYmFzZS5FdmVudH0gb0V2ZW50IEV2ZW50IGZpcmVkIGJ5IHRoZSBJY29uVGFiQmFyXG5cdCAqL1xuXHRzdGF0aWMgaGFuZGxlVGFiQ2hhbmdlKG9FdmVudDogYW55KTogdm9pZCB7XG5cdFx0Y29uc3Qgb0ljb25UYWJCYXIgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qgb011bHRpQ29udHJvbCA9IG9JY29uVGFiQmFyLmdldFBhcmVudCgpO1xuXG5cdFx0Y29uc3QgbVBhcmFtZXRlcnMgPSBvRXZlbnQuZ2V0UGFyYW1ldGVycygpO1xuXHRcdG9NdWx0aUNvbnRyb2wuX3NldElubmVyQmluZGluZyh0cnVlKTtcblx0XHRjb25zdCBzUHJldmlvdXNTZWxlY3RlZEtleSA9IG1QYXJhbWV0ZXJzPy5wcmV2aW91c0tleTtcblx0XHRjb25zdCBzU2VsZWN0ZWRLZXkgPSBtUGFyYW1ldGVycz8uc2VsZWN0ZWRLZXk7XG5cblx0XHRpZiAoc1NlbGVjdGVkS2V5ICYmIHNQcmV2aW91c1NlbGVjdGVkS2V5ICE9PSBzU2VsZWN0ZWRLZXkpIHtcblx0XHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvTXVsdGlDb250cm9sLl9nZXRGaWx0ZXJDb250cm9sKCk7XG5cdFx0XHRpZiAob0ZpbHRlckJhciAmJiAhb011bHRpQ29udHJvbC5nZXRQcm9wZXJ0eShcImZyZWV6ZUNvbnRlbnRcIikpIHtcblx0XHRcdFx0aWYgKCFvTXVsdGlDb250cm9sLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdFx0XHQvL2N1c3RvbSB0YWJcblx0XHRcdFx0XHRvTXVsdGlDb250cm9sLl9yZWZyZXNoQ3VzdG9tVmlldyhvRmlsdGVyQmFyLmdldEZpbHRlckNvbmRpdGlvbnMoKSwgXCJ0YWJDaGFuZ2VkXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRDb250cm9sUGVyc29uYWxpemF0aW9uV3JpdGVBUEkuYWRkKHtcblx0XHRcdFx0Y2hhbmdlczogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGNoYW5nZVNwZWNpZmljRGF0YToge1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VUeXBlOiBcInNlbGVjdEljb25UYWJCYXJGaWx0ZXJcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDoge1xuXHRcdFx0XHRcdFx0XHRcdHNlbGVjdGVkS2V5OiBzU2VsZWN0ZWRLZXksXG5cdFx0XHRcdFx0XHRcdFx0cHJldmlvdXNTZWxlY3RlZEtleTogc1ByZXZpb3VzU2VsZWN0ZWRLZXlcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHNlbGVjdG9yRWxlbWVudDogb0ljb25UYWJCYXJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdF1cblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdG9NdWx0aUNvbnRyb2wuX2dldFZpZXdDb250cm9sbGVyKCk/LmdldEV4dGVuc2lvbkFQSSgpPy51cGRhdGVBcHBTdGF0ZSgpO1xuXG5cdFx0b011bHRpQ29udHJvbC5maXJlRXZlbnQoXCJzZWxlY3RcIiwge1xuXHRcdFx0aWNvblRhYkJhcjogb0ljb25UYWJCYXIsXG5cdFx0XHRzZWxlY3RlZEtleTogc1NlbGVjdGVkS2V5LFxuXHRcdFx0cHJldmlvdXNLZXk6IHNQcmV2aW91c1NlbGVjdGVkS2V5XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogSW52YWxpZGF0ZXMgdGhlIGNvbnRlbnQgb2YgYWxsIGlubmVyIGNvbnRyb2xzLlxuXHQgKi9cblx0aW52YWxpZGF0ZUNvbnRlbnQoKSB7XG5cdFx0dGhpcy5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHR0aGlzLl9nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRvTWFjcm9BUEkuaW52YWxpZGF0ZUNvbnRlbnQ/LigpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGNvdW50cyB0byBvdXQgb2YgZGF0ZSBvciB1cCB0byBkYXRlXG5cdCAqIElmIHRoZSBjb3VudHMgYXJlIHNldCB0byBcIm91dCBvZiBkYXRlXCIgYW5kIHRoZSBzZWxlY3RlZCBJY29uVGFiRmlsdGVyIGRvZXNuJ3QgY29udGFpbiBhbiBpbm5lciBjb250cm9sIGFsbCBpbm5lciBjb250cm9scyBhcmUgcmVxdWVzdGVkIHRvIGdldCB0aGUgbmV3IGNvdW50cy5cblx0ICpcblx0ICogQHBhcmFtIHtib29sZWFufSBiVmFsdWUgRnJlZXplIG9yIG5vdCB0aGUgY29udHJvbFxuXHQgKi9cblx0c2V0Q291bnRzT3V0RGF0ZWQoYlZhbHVlID0gdHJ1ZSkge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJjb3VudHNPdXREYXRlZFwiLCBiVmFsdWUpO1xuXHRcdC8vIGlmIHRoZSBjdXJyZW50IHRhYiBpcyBub3QgY29uZmlndXJlZCB3aXRoIG5vIGlubmVyIENvbnRyb2xcblx0XHQvLyB0aGUgdGFiIGNvdW50cyBtdXN0IGJlIG1hbnVhbGx5IHJlZnJlc2hlZCBzaW5jZSBubyBNYWNybyBBUEkgd2lsbCBzZW50IGV2ZW50IGludGVybmFsRGF0YVJlcXVlc3RlZFxuXHRcdGlmIChiVmFsdWUgJiYgIXRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKSkge1xuXHRcdFx0dGhpcy5fcmVmcmVzaFRhYnNDb3VudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGcmVlemVzIHRoZSBjb250ZW50IDpcblx0ICogIC0gY29udGVudCBpcyBmcm96ZW46IHRoZSBiaW5kaW5nIG9mIHRoZSBpbm5lciBjb250cm9scyBhcmUgc3VzcGVuZGVkLlxuXHQgKiAgLSBjb250ZW50IGlzIHVuZnJvemVuOiB0aGUgYmluZGluZyBvZiBpbm5lciBjb250cm9sIHJlbGF0ZWQgdG8gdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgaXMgcmVzdW1lZC5cblx0ICpcblx0ICogQHBhcmFtIHtib29sZWFufSBiVmFsdWUgRnJlZXplIG9yIG5vdCB0aGUgY29udHJvbFxuXHQgKi9cblx0c2V0RnJlZXplQ29udGVudChiVmFsdWU6IGJvb2xlYW4pIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiLCBiVmFsdWUpO1xuXHRcdHRoaXMuX3NldElubmVyQmluZGluZygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIGludGVybmFsIG1vZGVsIHdpdGggdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGFwcGxpY2FibGUgb24gZWFjaCBJY29uVGFiRmlsdGVyIChjb250YWluaW5nIGlubmVyIGNvbnRyb2wpIGFjY29yZGluZyB0byB0aGUgZW50aXR5VHlwZSBvZiB0aGUgZmlsdGVyIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBwYXJhbSBvUmVzb3VyY2VCdW5kbGVcblx0ICovXG5cdF91cGRhdGVNdWx0aVRhYk5vdEFwcGxpY2FibGVGaWVsZHMob1Jlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSkge1xuXHRcdGNvbnN0IHRhYnNNb2RlbCA9IHRoaXMuZ2V0VGFic01vZGVsKCk7XG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRyb2wgPSB0aGlzLl9nZXRGaWx0ZXJDb250cm9sKCkgYXMgQ29udHJvbDtcblx0XHRpZiAodGFic01vZGVsICYmIG9GaWx0ZXJDb250cm9sKSB7XG5cdFx0XHRjb25zdCByZXN1bHRzOiBhbnkgPSB7fTtcblx0XHRcdHRoaXMuX2dldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdFx0Y29uc3Qgb1RhYiA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob01hY3JvQVBJKTtcblx0XHRcdFx0aWYgKG9UYWIpIHtcblx0XHRcdFx0XHRjb25zdCBzVGFiSWQgPSBvVGFiLmdldEtleSgpO1xuXHRcdFx0XHRcdGNvbnN0IG1JZ25vcmVkRmllbGRzID0gb01hY3JvQVBJLnJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzPy4ob0ZpbHRlckNvbnRyb2wpIHx8IFtdO1xuXHRcdFx0XHRcdHJlc3VsdHNbc1RhYklkXSA9IHtcblx0XHRcdFx0XHRcdG5vdEFwcGxpY2FibGU6IHtcblx0XHRcdFx0XHRcdFx0ZmllbGRzOiBtSWdub3JlZEZpZWxkcyxcblx0XHRcdFx0XHRcdFx0dGl0bGU6IHRoaXMuX3NldFRhYk1lc3NhZ2VTdHJpcCh7XG5cdFx0XHRcdFx0XHRcdFx0ZW50aXR5VHlwZVBhdGg6IG9GaWx0ZXJDb250cm9sLmRhdGEoXCJlbnRpdHlUeXBlXCIpLFxuXHRcdFx0XHRcdFx0XHRcdGlnbm9yZWRGaWVsZHM6IG1JZ25vcmVkRmllbGRzLFxuXHRcdFx0XHRcdFx0XHRcdHJlc291cmNlQnVuZGxlOiBvUmVzb3VyY2VCdW5kbGUsXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IG9UYWIuZ2V0VGV4dCgpXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHQodGFic01vZGVsIGFzIGFueSkuc2V0RGF0YShyZXN1bHRzKTtcblx0XHR9XG5cdH1cblxuXHRfZ2V0QWxsSW5uZXJDb250cm9scyhiT25seUZvclZpc2libGVUYWIgPSBmYWxzZSk6IElubmVyQ29udHJvbFR5cGVbXSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdHRoaXMuaW5uZXJDb250cm9scy5yZWR1Y2UoKGFJbm5lckNvbnRyb2xzOiBJbm5lckNvbnRyb2xUeXBlW10sIHNJbm5lckNvbnRyb2w6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRjb25zdCBvQ29udHJvbCA9IENvcmUuYnlJZChzSW5uZXJDb250cm9sKSBhcyBJbm5lckNvbnRyb2xUeXBlO1xuXHRcdFx0XHRpZiAob0NvbnRyb2wpIHtcblx0XHRcdFx0XHRhSW5uZXJDb250cm9scy5wdXNoKG9Db250cm9sKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYUlubmVyQ29udHJvbHMuZmlsdGVyKFxuXHRcdFx0XHRcdChvSW5uZXJDb250cm9sKSA9PiAhYk9ubHlGb3JWaXNpYmxlVGFiIHx8IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob0lubmVyQ29udHJvbCk/LmdldFZpc2libGUoKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSwgW10pIHx8IFtdXG5cdFx0KTtcblx0fVxuXG5cdF9nZXRGaWx0ZXJDb250cm9sKCk6IEZpbHRlckJhciB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIENvcmUuYnlJZCh0aGlzLmZpbHRlckNvbnRyb2wpIGFzIEZpbHRlckJhciB8IHVuZGVmaW5lZDtcblx0fVxuXG5cdF9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9Db250cm9sOiBDb250cm9sKTogSWNvblRhYkZpbHRlciB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgc1N1cHBvcnRlZENsYXNzID0gSWNvblRhYkZpbHRlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKTtcblx0XHRsZXQgb1RhYjogYW55ID0gb0NvbnRyb2w7XG5cdFx0aWYgKG9UYWIgJiYgIW9UYWIuaXNBKHNTdXBwb3J0ZWRDbGFzcykgJiYgb1RhYi5nZXRQYXJlbnQpIHtcblx0XHRcdG9UYWIgPSBvQ29udHJvbC5nZXRQYXJlbnQoKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9UYWIgJiYgb1RhYi5pc0Eoc1N1cHBvcnRlZENsYXNzKSA/IChvVGFiIGFzIEljb25UYWJGaWx0ZXIpIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0X2dldFZpZXdDb250cm9sbGVyKCkge1xuXHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKTtcblx0XHRyZXR1cm4gb1ZpZXcgJiYgb1ZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHR9XG5cblx0X3JlZnJlc2hDdXN0b21WaWV3KG9GaWx0ZXJDb25kaXRpb25zOiBhbnksIHNSZWZyZXNoQ2F1c2U6IHN0cmluZykge1xuXHRcdHRoaXMuX2dldFZpZXdDb250cm9sbGVyKCk/Lm9uVmlld05lZWRzUmVmcmVzaD8uKHtcblx0XHRcdGZpbHRlckNvbmRpdGlvbnM6IG9GaWx0ZXJDb25kaXRpb25zLFxuXHRcdFx0Y3VycmVudFRhYklkOiB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKSxcblx0XHRcdHJlZnJlc2hDYXVzZTogc1JlZnJlc2hDYXVzZVxuXHRcdH0pO1xuXHR9XG5cblx0X3JlZnJlc2hUYWJzQ291bnQoKTogdm9pZCB7XG5cdFx0Y29uc3Qgc1NlbGVjdGVkS2V5ID0gdGhpcy5jb250ZW50LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0dGhpcy5fZ2V0QWxsSW5uZXJDb250cm9scyh0cnVlKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdGNvbnN0IG9JY29uVGFiRmlsdGVyID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpO1xuXHRcdFx0aWYgKG9NYWNyb0FQST8uZ2V0Q291bnRzICYmICh0aGlzLmNvdW50c091dERhdGVkIHx8IHNTZWxlY3RlZEtleSA9PT0gb0ljb25UYWJGaWx0ZXI/LmdldEtleSgpKSkge1xuXHRcdFx0XHRpZiAob0ljb25UYWJGaWx0ZXIgJiYgb0ljb25UYWJGaWx0ZXIuc2V0Q291bnQpIHtcblx0XHRcdFx0XHRvSWNvblRhYkZpbHRlci5zZXRDb3VudChcIi4uLlwiKTtcblx0XHRcdFx0XHRvTWFjcm9BUElcblx0XHRcdFx0XHRcdC5nZXRDb3VudHMoKVxuXHRcdFx0XHRcdFx0LnRoZW4oKGlDb3VudDogc3RyaW5nKSA9PiBvSWNvblRhYkZpbHRlci5zZXRDb3VudChpQ291bnQgfHwgXCIwXCIpKVxuXHRcdFx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSByZXF1ZXN0aW5nIENvdW50cyBmb3IgQ29udHJvbFwiLCBvRXJyb3IpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLnNldENvdW50c091dERhdGVkKGZhbHNlKTtcblx0fVxuXG5cdF9zZXRJbm5lckJpbmRpbmcoYlJlcXVlc3RJZk5vdEluaXRpYWxpemVkID0gZmFsc2UpIHtcblx0XHRpZiAodGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLl9nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9JY29uVGFiRmlsdGVyID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpO1xuXHRcdFx0XHRjb25zdCBiSXNTZWxlY3RlZEtleSA9IG9JY29uVGFiRmlsdGVyPy5nZXRLZXkoKSA9PT0gdGhpcy5jb250ZW50LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0XHRcdGNvbnN0IHNBY3Rpb24gPSBiSXNTZWxlY3RlZEtleSAmJiAhdGhpcy5nZXRQcm9wZXJ0eShcImZyZWV6ZUNvbnRlbnRcIikgPyBCaW5kaW5nQWN0aW9uLlJlc3VtZSA6IEJpbmRpbmdBY3Rpb24uU3VzcGVuZDtcblx0XHRcdFx0b01hY3JvQVBJW3NBY3Rpb25dPy4oc0FjdGlvbiA9PT0gQmluZGluZ0FjdGlvbi5SZXN1bWUgPyBiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQgJiYgYklzU2VsZWN0ZWRLZXkgOiB1bmRlZmluZWQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0X3NldFRhYk1lc3NhZ2VTdHJpcChwcm9wZXJ0aWVzOiBNZXNzYWdlU3RyaXBQcm9wZXJ0aWVzKSB7XG5cdFx0bGV0IHNUZXh0ID0gXCJcIjtcblx0XHRjb25zdCBhSWdub3JlZEZpZWxkcyA9IHByb3BlcnRpZXMuaWdub3JlZEZpZWxkcztcblx0XHRjb25zdCBvRmlsdGVyQ29udHJvbCA9IHRoaXMuX2dldEZpbHRlckNvbnRyb2woKSBhcyBDb250cm9sO1xuXHRcdGlmIChvRmlsdGVyQ29udHJvbCAmJiBBcnJheS5pc0FycmF5KGFJZ25vcmVkRmllbGRzKSAmJiBhSWdub3JlZEZpZWxkcy5sZW5ndGggPiAwICYmIHByb3BlcnRpZXMudGl0bGUpIHtcblx0XHRcdGNvbnN0IGFJZ25vcmVkTGFiZWxzID0gTWVzc2FnZVN0cmlwLmdldExhYmVscyhcblx0XHRcdFx0YUlnbm9yZWRGaWVsZHMsXG5cdFx0XHRcdHByb3BlcnRpZXMuZW50aXR5VHlwZVBhdGgsXG5cdFx0XHRcdG9GaWx0ZXJDb250cm9sLFxuXHRcdFx0XHRwcm9wZXJ0aWVzLnJlc291cmNlQnVuZGxlXG5cdFx0XHQpO1xuXHRcdFx0c1RleHQgPSBNZXNzYWdlU3RyaXAuZ2V0VGV4dChhSWdub3JlZExhYmVscywgb0ZpbHRlckNvbnRyb2wsIHByb3BlcnRpZXMudGl0bGUsIERlbGVnYXRlVXRpbC5nZXRMb2NhbGl6ZWRUZXh0KTtcblx0XHRcdHJldHVybiBzVGV4dDtcblx0XHR9XG5cdH1cblxuXHRfb25TZWFyY2gob0V2ZW50OiBDb3JlRXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLnNldENvdW50c091dERhdGVkKHRydWUpO1xuXHRcdHRoaXMuc2V0RnJlZXplQ29udGVudChmYWxzZSk7XG5cdFx0aWYgKHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKSkge1xuXHRcdFx0dGhpcy5fdXBkYXRlTXVsdGlUYWJOb3RBcHBsaWNhYmxlRmllbGRzKHRoaXMuX2dldFZpZXdDb250cm9sbGVyKCk/Lm9SZXNvdXJjZUJ1bmRsZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGN1c3RvbSB0YWJcblx0XHRcdHRoaXMuX3JlZnJlc2hDdXN0b21WaWV3KG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb25kaXRpb25zXCIpLCBcInNlYXJjaFwiKTtcblx0XHR9XG5cdH1cblxuXHRfb25GaWx0ZXJDaGFuZ2VkKG9FdmVudDogQ29yZUV2ZW50KTogdm9pZCB7XG5cdFx0aWYgKG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb25kaXRpb25zQmFzZWRcIikpIHtcblx0XHRcdHRoaXMuc2V0RnJlZXplQ29udGVudCh0cnVlKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTXVsdGlwbGVNb2RlQ29udHJvbDtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Ba0NLQSxhOzthQUFBQSxhO0lBQUFBLGE7SUFBQUEsYTtLQUFBQSxhLEtBQUFBLGE7O01BTUNDLG1CLFdBRExDLGNBQWMsQ0FBQywwREFBRCxDLFVBRWJDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUixDQUFELEMsVUFHUkQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFSO0lBQW1CQyxZQUFZLEVBQUU7RUFBakMsQ0FBRCxDLFVBR1JGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsU0FBUjtJQUFtQkMsWUFBWSxFQUFFO0VBQWpDLENBQUQsQyxVQUdSQyxXQUFXLENBQUM7SUFBRUYsSUFBSSxFQUFFLGtCQUFSO0lBQTRCRyxRQUFRLEVBQUUsS0FBdEM7SUFBNkNDLFNBQVMsRUFBRTtFQUF4RCxDQUFELEMsVUFHWEMsV0FBVyxDQUFDO0lBQUVMLElBQUksRUFBRSxxQkFBUjtJQUErQkcsUUFBUSxFQUFFO0VBQXpDLENBQUQsQyxVQUdYRSxXQUFXLENBQUM7SUFBRUwsSUFBSSxFQUFFLGdDQUFSO0lBQTBDRyxRQUFRLEVBQUU7RUFBcEQsQ0FBRCxDLFVBR1hHLEtBQUssRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQUdOQyxpQixHQUFBLDZCQUFvQjtNQUFBO01BQUE7O01BQ25CLEtBQUtDLFlBQUwsR0FEbUIsQ0FDRTs7TUFFckIsSUFBTUMsYUFBYSw0QkFBRyxLQUFLQyxpQkFBTCxFQUFILDBEQUFHLHNCQUEwQkMsU0FBMUIsRUFBdEI7O01BQ0EsS0FBS0Msb0JBQUwsR0FBNEJDLE9BQTVCLENBQW9DLFVBQUNDLFNBQUQsRUFBZTtRQUFBOztRQUNsRCxJQUFJLE1BQUksQ0FB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
@@ -84,15 +84,6 @@ class MultipleModeControl extends Control {
84
84
  oRm.renderControl(oControl.content);
85
85
  }
86
86
 
87
- /**
88
- * Gets the entity set of the displayed visualization.
89
- *
90
- * @returns {string} The entity set
91
- */
92
- getDisplayedEntitySet(): string | undefined {
93
- return this.getSelectedInnerControl()?.content?.data("targetCollectionPath").slice(1);
94
- }
95
-
96
87
  /**
97
88
  * Gets the model containing information related to the IconTabFilters.
98
89
  *
@@ -6,17 +6,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/S
6
6
  "use strict";
7
7
 
8
8
  function getCountUrl(oController) {
9
- var _oController$getView$;
9
+ var _oController$_getTabl;
10
10
 
11
- // get selected table ID from multiple tabs
12
- var sTableId = (_oController$getView$ = oController.getView().byId("fe::TabMultipleMode")) === null || _oController$getView$ === void 0 ? void 0 : _oController$getView$.getSelectedKey();
13
-
14
- if (!sTableId) {
15
- // if not multiple tabs, get single table ID
16
- sTableId = oController.getView().getContent()[0].data().singleTableId;
17
- }
18
-
19
- var oTable = oController.getView().byId(sTableId);
11
+ var oTable = (_oController$_getTabl = oController._getTable) === null || _oController$_getTabl === void 0 ? void 0 : _oController$_getTabl.call(oController);
20
12
 
21
13
  if (!oTable) {
22
14
  return "";
@@ -69,7 +61,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/S
69
61
  }
70
62
 
71
63
  function getSaveAsTileServiceUrl(oController) {
72
- var oFilterBar = oController.getView().byId(oController.getView().getContent()[0].data("filterBarId"));
64
+ var oFilterBar = oController._getFilterBarControl();
73
65
 
74
66
  if (oFilterBar) {
75
67
  var oConditions = oFilterBar.getFilterConditions();
@@ -136,4 +128,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/S
136
128
  };
137
129
  return ShareOverride;
138
130
  }, false);
139
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb3VudFVybCIsIm9Db250cm9sbGVyIiwic1RhYmxlSWQiLCJnZXRWaWV3IiwiYnlJZCIsImdldFNlbGVjdGVkS2V5IiwiZ2V0Q29udGVudCIsImRhdGEiLCJzaW5nbGVUYWJsZUlkIiwib1RhYmxlIiwib0JpbmRpbmciLCJnZXRSb3dCaW5kaW5nIiwiZ2V0QmluZGluZyIsInNEb3dubG9hZFVybCIsImdldERvd25sb2FkVXJsIiwiYVNwbGl0VXJsIiwic3BsaXQiLCJiYXNlVXJsIiwiYVN1cHBvcnRlZFBhcmFtcyIsImxlbmd0aCIsInVybFBhcmFtcyIsImZvckVhY2giLCJ1cmxQYXJhbSIsImFVcmxQYXJhbVBhcnRzIiwicHVzaCIsImpvaW4iLCJnZXRTaGFyZVVybCIsInNIYXNoIiwiSGFzaENoYW5nZXIiLCJnZXRJbnN0YW5jZSIsImdldEhhc2giLCJzQmFzZVBhdGgiLCJocmVmRm9yQXBwU3BlY2lmaWNIYXNoIiwid2luZG93IiwibG9jYXRpb24iLCJoYXNoIiwiZ2V0U2hhcmVFbWFpbFVybCIsIm9VU2hlbGxDb250YWluZXIiLCJzYXAiLCJ1c2hlbGwiLCJDb250YWluZXIiLCJnZXRGTFBVcmxBc3luYyIsInRoZW4iLCJzRkxQVXJsIiwiY2F0Y2giLCJzRXJyb3IiLCJMb2ciLCJlcnJvciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRTYXZlQXNUaWxlU2VydmljZVVybCIsIm9GaWx0ZXJCYXIiLCJvQ29uZGl0aW9ucyIsImdldEZpbHRlckNvbmRpdGlvbnMiLCJiU2F2ZUFzVGlsZVNlcnZpY2VVcmxBbGxvd2VkIiwiU2VtYW50aWNEYXRlT3BlcmF0b3JzIiwiaGFzU2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsImdldEphbVVybCIsInNKYW1VcmwiLCJydW5uaW5nSW5JZnJhbWUiLCJnZXRGTFBVcmwiLCJzVXJsIiwic3Vic3RyIiwiaW5kZXhPZiIsIm9yaWdpbiIsInBhdGhuYW1lIiwiU2hhcmVPdmVycmlkZSIsImFkYXB0U2hhcmVNZXRhZGF0YSIsIm9TaGFyZU1ldGFkYXRhIiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiYmFzZSIsIm9NZXRhZGF0YSIsImdldE1ldGFkYXRhIiwib1VJTWFuaWZlc3QiLCJnZXRNYW5pZmVzdEVudHJ5Iiwic0ljb24iLCJpY29ucyIsImljb24iLCJvQXBwTWFuaWZlc3QiLCJzVGl0bGUiLCJ0aXRsZSIsInRpbGUiLCJxdWVyeVVybCIsImphbSIsInVybCIsImVtYWlsIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTaGFyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIEJhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgU2hhcmUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NoYXJlXCI7XG5pbXBvcnQgU2VtYW50aWNEYXRlT3BlcmF0b3JzIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljRGF0ZU9wZXJhdG9yc1wiO1xuaW1wb3J0IHR5cGUgSWNvblRhYkJhciBmcm9tIFwic2FwL20vSWNvblRhYkJhclwiO1xuaW1wb3J0IEhhc2hDaGFuZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9yb3V0aW5nL0hhc2hDaGFuZ2VyXCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuZnVuY3Rpb24gZ2V0Q291bnRVcmwob0NvbnRyb2xsZXI6IEJhc2VDb250cm9sbGVyKSB7XG5cdC8vIGdldCBzZWxlY3RlZCB0YWJsZSBJRCBmcm9tIG11bHRpcGxlIHRhYnNcblx0bGV0IHNUYWJsZUlkID0gKG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKFwiZmU6OlRhYk11bHRpcGxlTW9kZVwiKSBhcyBJY29uVGFiQmFyKT8uZ2V0U2VsZWN0ZWRLZXkoKTtcblx0aWYgKCFzVGFibGVJZCkge1xuXHRcdC8vIGlmIG5vdCBtdWx0aXBsZSB0YWJzLCBnZXQgc2luZ2xlIHRhYmxlIElEXG5cdFx0c1RhYmxlSWQgPSBvQ29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Q29udGVudCgpWzBdLmRhdGEoKS5zaW5nbGVUYWJsZUlkO1xuXHR9XG5cdGNvbnN0IG9UYWJsZSA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKHNUYWJsZUlkKSBhcyBUYWJsZTtcblx0aWYgKCFvVGFibGUpIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXHRjb25zdCBvQmluZGluZyA9IG9UYWJsZS5nZXRSb3dCaW5kaW5nKCkgfHwgb1RhYmxlLmdldEJpbmRpbmcoXCJpdGVtc1wiKTtcblx0Y29uc3Qgc0Rvd25sb2FkVXJsID0gKG9CaW5kaW5nICYmIChvQmluZGluZyBhcyBhbnkpLmdldERvd25sb2FkVXJsKCkpIHx8IFwiXCI7XG5cdGNvbnN0IGFTcGxpdFVybCA9IHNEb3dubG9hZFVybC5zcGxpdChcIj9cIik7XG5cdGNvbnN0IGJhc2VVcmwgPSBgJHthU3BsaXRVcmxbMF19LyRjb3VudD9gO1xuXHQvLyBnZXREb3dubG9hZFVybCgpIHJldHVybnMgdXJsIHdpdGggJHNlbGVjdCwgJGV4cGFuZCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gLyRjb3VudCBpcyB1c2VkIHRvIGdldCB0aGUgcmVjb3JkIGNvdW50LiBvbmx5ICRhcHBseSwgJHNlYXJjaCwgJGZpbHRlciBpcyBzdXBwb3J0ZWRcblx0Ly8gPyRjb3VudD10cnVlIHJldHVybnMgY291bnQgaW4gYSBmb3JtYXQgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSBGTFAgeWV0LlxuXHQvLyBjdXJyZW50bHkgc3VwcG9ydGVkIGZvcm1hdCBmb3IgdjQgaXMgLi4vY291bnQuLiBvbmx5ICh3aGVyZSB0aWxlIHByZXZpZXcgd2lsbCBzdGlsbCBub3Qgd29yaylcblx0Y29uc3QgYVN1cHBvcnRlZFBhcmFtczogYW55W10gPSBbXTtcblx0aWYgKGFTcGxpdFVybC5sZW5ndGggPiAxKSB7XG5cdFx0Y29uc3QgdXJsUGFyYW1zID0gYVNwbGl0VXJsWzFdO1xuXHRcdHVybFBhcmFtcy5zcGxpdChcIiZcIikuZm9yRWFjaChmdW5jdGlvbiAodXJsUGFyYW06IGFueSkge1xuXHRcdFx0Y29uc3QgYVVybFBhcmFtUGFydHMgPSB1cmxQYXJhbS5zcGxpdChcIj1cIik7XG5cdFx0XHRzd2l0Y2ggKGFVcmxQYXJhbVBhcnRzWzBdKSB7XG5cdFx0XHRcdGNhc2UgXCIkYXBwbHlcIjpcblx0XHRcdFx0Y2FzZSBcIiRzZWFyY2hcIjpcblx0XHRcdFx0Y2FzZSBcIiRmaWx0ZXJcIjpcblx0XHRcdFx0XHRhU3VwcG9ydGVkUGFyYW1zLnB1c2godXJsUGFyYW0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBiYXNlVXJsICsgYVN1cHBvcnRlZFBhcmFtcy5qb2luKFwiJlwiKTtcbn1cbmZ1bmN0aW9uIGdldFNoYXJlVXJsKCkge1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0cmV0dXJuIHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcbn1cbmZ1bmN0aW9uIGdldFNoYXJlRW1haWxVcmwoKSB7XG5cdGNvbnN0IG9VU2hlbGxDb250YWluZXIgPSBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyO1xuXHRpZiAob1VTaGVsbENvbnRhaW5lcikge1xuXHRcdHJldHVybiBvVVNoZWxsQ29udGFpbmVyXG5cdFx0XHQuZ2V0RkxQVXJsQXN5bmModHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNGTFBVcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZG9jdW1lbnQuVVJMKTtcblx0fVxufVxuZnVuY3Rpb24gZ2V0U2F2ZUFzVGlsZVNlcnZpY2VVcmwob0NvbnRyb2xsZXI6IGFueSkge1xuXHRjb25zdCBvRmlsdGVyQmFyID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpLmJ5SWQob0NvbnRyb2xsZXIuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXS5kYXRhKFwiZmlsdGVyQmFySWRcIikpO1xuXHRpZiAob0ZpbHRlckJhcikge1xuXHRcdGNvbnN0IG9Db25kaXRpb25zID0gb0ZpbHRlckJhci5nZXRGaWx0ZXJDb25kaXRpb25zKCk7XG5cdFx0Y29uc3QgYlNhdmVBc1RpbGVTZXJ2aWNlVXJsQWxsb3dlZCA9IFNlbWFudGljRGF0ZU9wZXJhdG9ycy5oYXNTZW1hbnRpY0RhdGVPcGVyYXRpb25zKG9Db25kaXRpb25zKTtcblx0XHRpZiAoYlNhdmVBc1RpbGVTZXJ2aWNlVXJsQWxsb3dlZCkge1xuXHRcdFx0cmV0dXJuIGdldENvdW50VXJsKG9Db250cm9sbGVyKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIFwiXCI7XG59XG5mdW5jdGlvbiBnZXRKYW1VcmwoKSB7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRjb25zdCBzSmFtVXJsID0gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHQvLyBpbiBjYXNlIHdlIGFyZSBpbiBjRkxQIHNjZW5hcmlvLCB0aGUgYXBwbGljYXRpb24gaXMgcnVubmluZ1xuXHQvLyBpbnNpZGUgYW4gaWZyYW1lLCBhbmQgdGhlcmUgZm9yIHdlIG5lZWQgdG8gZ2V0IHRoZSBjRkxQIFVSTFxuXHQvLyBhbmQgbm90ICdkb2N1bWVudC5VUkwnIHRoYXQgcmVwcmVzZW50cyB0aGUgaWZyYW1lIFVSTFxuXHRpZiAoc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lciAmJiBzYXAudXNoZWxsLkNvbnRhaW5lci5ydW5uaW5nSW5JZnJhbWUgJiYgc2FwLnVzaGVsbC5Db250YWluZXIucnVubmluZ0luSWZyYW1lKCkpIHtcblx0XHRzYXAudXNoZWxsLkNvbnRhaW5lci5nZXRGTFBVcmwodHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNVcmwuc3Vic3RyKDAsIHNVcmwuaW5kZXhPZihcIiNcIikpICsgc0phbVVybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKHNFcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNvdWxkIG5vdCByZXRyaWV2ZSBjRkxQIFVSTCBmb3IgdGhlIHNoYXJpbmcgZGlhbG9nIChkaWFsb2cgd2lsbCBub3QgYmUgb3BlbmVkKVwiLCBzRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBzSmFtVXJsO1xuXHR9XG59XG5cbmNvbnN0IFNoYXJlT3ZlcnJpZGUgPSB7XG5cdGFkYXB0U2hhcmVNZXRhZGF0YTogZnVuY3Rpb24gKHRoaXM6IFNoYXJlLCBvU2hhcmVNZXRhZGF0YTogYW55KSB7XG5cdFx0UHJvbWlzZS5yZXNvbHZlKGdldEphbVVybCgpKVxuXHRcdFx0LnRoZW4oKHNKYW1Vcmw6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4ge1xuXHRcdFx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuYmFzZS5nZXRWaWV3KCkpO1xuXHRcdFx0XHRjb25zdCBvTWV0YWRhdGEgPSBvQXBwQ29tcG9uZW50LmdldE1ldGFkYXRhKCk7XG5cdFx0XHRcdGNvbnN0IG9VSU1hbmlmZXN0ID0gb01ldGFkYXRhLmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWlcIik7XG5cdFx0XHRcdGNvbnN0IHNJY29uID0gKG9VSU1hbmlmZXN0ICYmIG9VSU1hbmlmZXN0Lmljb25zICYmIG9VSU1hbmlmZXN0Lmljb25zLmljb24pIHx8IFwiXCI7XG5cdFx0XHRcdGNvbnN0IG9BcHBNYW5pZmVzdCA9IG9NZXRhZGF0YS5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmFwcFwiKTtcblx0XHRcdFx0Y29uc3Qgc1RpdGxlID0gKG9BcHBNYW5pZmVzdCAmJiBvQXBwTWFuaWZlc3QudGl0bGUpIHx8IFwiXCI7XG5cdFx0XHRcdC8vIFRPRE86IGNoZWNrIGlmIHRoZXJlIGlzIGFueSBzZW1hbnRpYyBkYXRlIHVzZWQgYmVmb3JlIGFkZGluZyBzZXJ2aWNlVVJMIGFzIEJMSTpGSU9SSVRFQ0hQMS0xODAyM1xuXHRcdFx0XHRvU2hhcmVNZXRhZGF0YS50aWxlID0ge1xuXHRcdFx0XHRcdGljb246IHNJY29uLFxuXHRcdFx0XHRcdHRpdGxlOiBzVGl0bGUsXG5cdFx0XHRcdFx0cXVlcnlVcmw6IGdldFNhdmVBc1RpbGVTZXJ2aWNlVXJsKHRoaXMuYmFzZSlcblx0XHRcdFx0fTtcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudGl0bGUgPSBkb2N1bWVudC50aXRsZTtcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuamFtLnVybCA9IHNKYW1Vcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnJvcik7XG5cdFx0XHR9KTtcblxuXHRcdFByb21pc2UucmVzb2x2ZShnZXRTaGFyZVVybCgpKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKHNVcmw6IGFueSkge1xuXHRcdFx0XHRvU2hhcmVNZXRhZGF0YS51cmwgPSBzVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0fSk7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShnZXRTaGFyZUVtYWlsVXJsKCkpLnRoZW4oZnVuY3Rpb24gKHNGTFBVcmw6IGFueSkge1xuXHRcdFx0b1NoYXJlTWV0YWRhdGEuZW1haWwudXJsID0gc0ZMUFVybDtcblx0XHRcdHJldHVybiBvU2hhcmVNZXRhZGF0YTtcblx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2hhcmVPdmVycmlkZTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7OztFQVFBLFNBQVNBLFdBQVQsQ0FBcUJDLFdBQXJCLEVBQWtEO0lBQUE7O0lBQ2pEO0lBQ0EsSUFBSUMsUUFBUSw0QkFBSUQsV0FBVyxDQUFDRSxPQUFaLEdBQXNCQyxJQUF0QixDQUEyQixxQkFBM0IsQ0FBSiwwREFBRyxzQkFBbUVDLGNBQW5FLEVBQWY7O0lBQ0EsSUFBSSxDQUFDSCxRQUFMLEVBQWU7TUFDZDtNQUNBQSxRQUFRLEdBQUdELFdBQVcsQ0FBQ0UsT0FBWixHQUFzQkcsVUFBdEIsR0FBbUMsQ0FBbkMsRUFBc0NDLElBQXRD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
131
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb3VudFVybCIsIm9Db250cm9sbGVyIiwib1RhYmxlIiwiX2dldFRhYmxlIiwib0JpbmRpbmciLCJnZXRSb3dCaW5kaW5nIiwiZ2V0QmluZGluZyIsInNEb3dubG9hZFVybCIsImdldERvd25sb2FkVXJsIiwiYVNwbGl0VXJsIiwic3BsaXQiLCJiYXNlVXJsIiwiYVN1cHBvcnRlZFBhcmFtcyIsImxlbmd0aCIsInVybFBhcmFtcyIsImZvckVhY2giLCJ1cmxQYXJhbSIsImFVcmxQYXJhbVBhcnRzIiwicHVzaCIsImpvaW4iLCJnZXRTaGFyZVVybCIsInNIYXNoIiwiSGFzaENoYW5nZXIiLCJnZXRJbnN0YW5jZSIsImdldEhhc2giLCJzQmFzZVBhdGgiLCJocmVmRm9yQXBwU3BlY2lmaWNIYXNoIiwid2luZG93IiwibG9jYXRpb24iLCJoYXNoIiwiZ2V0U2hhcmVFbWFpbFVybCIsIm9VU2hlbGxDb250YWluZXIiLCJzYXAiLCJ1c2hlbGwiLCJDb250YWluZXIiLCJnZXRGTFBVcmxBc3luYyIsInRoZW4iLCJzRkxQVXJsIiwiY2F0Y2giLCJzRXJyb3IiLCJMb2ciLCJlcnJvciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRTYXZlQXNUaWxlU2VydmljZVVybCIsIm9GaWx0ZXJCYXIiLCJfZ2V0RmlsdGVyQmFyQ29udHJvbCIsIm9Db25kaXRpb25zIiwiZ2V0RmlsdGVyQ29uZGl0aW9ucyIsImJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJoYXNTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiZ2V0SmFtVXJsIiwic0phbVVybCIsInJ1bm5pbmdJbklmcmFtZSIsImdldEZMUFVybCIsInNVcmwiLCJzdWJzdHIiLCJpbmRleE9mIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZU92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJiYXNlIiwiZ2V0VmlldyIsIm9NZXRhZGF0YSIsImdldE1ldGFkYXRhIiwib1VJTWFuaWZlc3QiLCJnZXRNYW5pZmVzdEVudHJ5Iiwic0ljb24iLCJpY29ucyIsImljb24iLCJvQXBwTWFuaWZlc3QiLCJzVGl0bGUiLCJ0aXRsZSIsInRpbGUiLCJxdWVyeVVybCIsImphbSIsInVybCIsImVtYWlsIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTaGFyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFNoYXJlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZVwiO1xuaW1wb3J0IFNlbWFudGljRGF0ZU9wZXJhdG9ycyBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCBIYXNoQ2hhbmdlciBmcm9tIFwic2FwL3VpL2NvcmUvcm91dGluZy9IYXNoQ2hhbmdlclwiO1xuaW1wb3J0IExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCIuLi9MaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyXCI7XG5mdW5jdGlvbiBnZXRDb3VudFVybChvQ29udHJvbGxlcjogTGlzdFJlcG9ydENvbnRyb2xsZXIpIHtcblx0Y29uc3Qgb1RhYmxlID0gb0NvbnRyb2xsZXIuX2dldFRhYmxlPy4oKTtcblx0aWYgKCFvVGFibGUpIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXHRjb25zdCBvQmluZGluZyA9IG9UYWJsZS5nZXRSb3dCaW5kaW5nKCkgfHwgb1RhYmxlLmdldEJpbmRpbmcoXCJpdGVtc1wiKTtcblx0Y29uc3Qgc0Rvd25sb2FkVXJsID0gKG9CaW5kaW5nICYmIChvQmluZGluZyBhcyBhbnkpLmdldERvd25sb2FkVXJsKCkpIHx8IFwiXCI7XG5cdGNvbnN0IGFTcGxpdFVybCA9IHNEb3dubG9hZFVybC5zcGxpdChcIj9cIik7XG5cdGNvbnN0IGJhc2VVcmwgPSBgJHthU3BsaXRVcmxbMF19LyRjb3VudD9gO1xuXHQvLyBnZXREb3dubG9hZFVybCgpIHJldHVybnMgdXJsIHdpdGggJHNlbGVjdCwgJGV4cGFuZCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gLyRjb3VudCBpcyB1c2VkIHRvIGdldCB0aGUgcmVjb3JkIGNvdW50LiBvbmx5ICRhcHBseSwgJHNlYXJjaCwgJGZpbHRlciBpcyBzdXBwb3J0ZWRcblx0Ly8gPyRjb3VudD10cnVlIHJldHVybnMgY291bnQgaW4gYSBmb3JtYXQgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSBGTFAgeWV0LlxuXHQvLyBjdXJyZW50bHkgc3VwcG9ydGVkIGZvcm1hdCBmb3IgdjQgaXMgLi4vY291bnQuLiBvbmx5ICh3aGVyZSB0aWxlIHByZXZpZXcgd2lsbCBzdGlsbCBub3Qgd29yaylcblx0Y29uc3QgYVN1cHBvcnRlZFBhcmFtczogYW55W10gPSBbXTtcblx0aWYgKGFTcGxpdFVybC5sZW5ndGggPiAxKSB7XG5cdFx0Y29uc3QgdXJsUGFyYW1zID0gYVNwbGl0VXJsWzFdO1xuXHRcdHVybFBhcmFtcy5zcGxpdChcIiZcIikuZm9yRWFjaChmdW5jdGlvbiAodXJsUGFyYW06IGFueSkge1xuXHRcdFx0Y29uc3QgYVVybFBhcmFtUGFydHMgPSB1cmxQYXJhbS5zcGxpdChcIj1cIik7XG5cdFx0XHRzd2l0Y2ggKGFVcmxQYXJhbVBhcnRzWzBdKSB7XG5cdFx0XHRcdGNhc2UgXCIkYXBwbHlcIjpcblx0XHRcdFx0Y2FzZSBcIiRzZWFyY2hcIjpcblx0XHRcdFx0Y2FzZSBcIiRmaWx0ZXJcIjpcblx0XHRcdFx0XHRhU3VwcG9ydGVkUGFyYW1zLnB1c2godXJsUGFyYW0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBiYXNlVXJsICsgYVN1cHBvcnRlZFBhcmFtcy5qb2luKFwiJlwiKTtcbn1cbmZ1bmN0aW9uIGdldFNoYXJlVXJsKCkge1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0cmV0dXJuIHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcbn1cbmZ1bmN0aW9uIGdldFNoYXJlRW1haWxVcmwoKSB7XG5cdGNvbnN0IG9VU2hlbGxDb250YWluZXIgPSBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyO1xuXHRpZiAob1VTaGVsbENvbnRhaW5lcikge1xuXHRcdHJldHVybiBvVVNoZWxsQ29udGFpbmVyXG5cdFx0XHQuZ2V0RkxQVXJsQXN5bmModHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNGTFBVcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZG9jdW1lbnQuVVJMKTtcblx0fVxufVxuZnVuY3Rpb24gZ2V0U2F2ZUFzVGlsZVNlcnZpY2VVcmwob0NvbnRyb2xsZXI6IGFueSkge1xuXHRjb25zdCBvRmlsdGVyQmFyID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRjb25zdCBvQ29uZGl0aW9ucyA9IG9GaWx0ZXJCYXIuZ2V0RmlsdGVyQ29uZGl0aW9ucygpO1xuXHRcdGNvbnN0IGJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQgPSBTZW1hbnRpY0RhdGVPcGVyYXRvcnMuaGFzU2VtYW50aWNEYXRlT3BlcmF0aW9ucyhvQ29uZGl0aW9ucyk7XG5cdFx0aWYgKGJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQpIHtcblx0XHRcdHJldHVybiBnZXRDb3VudFVybChvQ29udHJvbGxlcik7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBcIlwiO1xufVxuZnVuY3Rpb24gZ2V0SmFtVXJsKCkge1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0Y29uc3Qgc0phbVVybCA9IHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0Ly8gaW4gY2FzZSB3ZSBhcmUgaW4gY0ZMUCBzY2VuYXJpbywgdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmdcblx0Ly8gaW5zaWRlIGFuIGlmcmFtZSwgYW5kIHRoZXJlIGZvciB3ZSBuZWVkIHRvIGdldCB0aGUgY0ZMUCBVUkxcblx0Ly8gYW5kIG5vdCAnZG9jdW1lbnQuVVJMJyB0aGF0IHJlcHJlc2VudHMgdGhlIGlmcmFtZSBVUkxcblx0aWYgKHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIgJiYgc2FwLnVzaGVsbC5Db250YWluZXIucnVubmluZ0luSWZyYW1lICYmIHNhcC51c2hlbGwuQ29udGFpbmVyLnJ1bm5pbmdJbklmcmFtZSgpKSB7XG5cdFx0c2FwLnVzaGVsbC5Db250YWluZXIuZ2V0RkxQVXJsKHRydWUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc1VybDogYW55KSB7XG5cdFx0XHRcdHJldHVybiBzVXJsLnN1YnN0cigwLCBzVXJsLmluZGV4T2YoXCIjXCIpKSArIHNKYW1Vcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgc0phbVVybDtcblx0fVxufVxuXG5jb25zdCBTaGFyZU92ZXJyaWRlID0ge1xuXHRhZGFwdFNoYXJlTWV0YWRhdGE6IGZ1bmN0aW9uICh0aGlzOiBTaGFyZSwgb1NoYXJlTWV0YWRhdGE6IGFueSkge1xuXHRcdFByb21pc2UucmVzb2x2ZShnZXRKYW1VcmwoKSlcblx0XHRcdC50aGVuKChzSmFtVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcblx0XHRcdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLmJhc2UuZ2V0VmlldygpKTtcblx0XHRcdFx0Y29uc3Qgb01ldGFkYXRhID0gb0FwcENvbXBvbmVudC5nZXRNZXRhZGF0YSgpO1xuXHRcdFx0XHRjb25zdCBvVUlNYW5pZmVzdCA9IG9NZXRhZGF0YS5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLnVpXCIpO1xuXHRcdFx0XHRjb25zdCBzSWNvbiA9IChvVUlNYW5pZmVzdCAmJiBvVUlNYW5pZmVzdC5pY29ucyAmJiBvVUlNYW5pZmVzdC5pY29ucy5pY29uKSB8fCBcIlwiO1xuXHRcdFx0XHRjb25zdCBvQXBwTWFuaWZlc3QgPSBvTWV0YWRhdGEuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5hcHBcIik7XG5cdFx0XHRcdGNvbnN0IHNUaXRsZSA9IChvQXBwTWFuaWZlc3QgJiYgb0FwcE1hbmlmZXN0LnRpdGxlKSB8fCBcIlwiO1xuXHRcdFx0XHQvLyBUT0RPOiBjaGVjayBpZiB0aGVyZSBpcyBhbnkgc2VtYW50aWMgZGF0ZSB1c2VkIGJlZm9yZSBhZGRpbmcgc2VydmljZVVSTCBhcyBCTEk6RklPUklURUNIUDEtMTgwMjNcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudGlsZSA9IHtcblx0XHRcdFx0XHRpY29uOiBzSWNvbixcblx0XHRcdFx0XHR0aXRsZTogc1RpdGxlLFxuXHRcdFx0XHRcdHF1ZXJ5VXJsOiBnZXRTYXZlQXNUaWxlU2VydmljZVVybCh0aGlzLmJhc2UpXG5cdFx0XHRcdH07XG5cdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnRpdGxlID0gZG9jdW1lbnQudGl0bGU7XG5cdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmphbS51cmwgPSBzSmFtVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0fSk7XG5cblx0XHRQcm9taXNlLnJlc29sdmUoZ2V0U2hhcmVVcmwoKSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzVXJsOiBhbnkpIHtcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudXJsID0gc1VybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHRcdH0pO1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZ2V0U2hhcmVFbWFpbFVybCgpKS50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCA9IHNGTFBVcmw7XG5cdFx0XHRyZXR1cm4gb1NoYXJlTWV0YWRhdGE7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNoYXJlT3ZlcnJpZGU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7RUFNQSxTQUFTQSxXQUFULENBQXFCQyxXQUFyQixFQUF3RDtJQUFBOztJQUN2RCxJQUFNQyxNQUFNLDRCQUFHRCxXQUFXLENBQUNFLFNBQWYsMERBQUcsMkJBQUFGLFdBQVcsQ0FBMUI7O0lBQ0EsSUFBSSxDQUFDQyxNQUFMLEVBQWE7TUFDWixPQUFPLEVBQVA7SUFDQTs7SUFDRCxJQUFNRSxRQUFRLEdBQUdGLE1BQU0sQ0FBQ0csYUFBUCxNQUEwQkgsTUFBTSxDQUFDSSxVQUFQLENBQWtCLE9BQWxCLENBQTNDO0lBQ0EsSUFBTUMsWUFBWSxHQUFJSCxRQUFRLElBQUtBLFFBQUQsQ0FBa0JJLGNBQWxCLEVBQWIsSUFBb0QsRUFBekU7SUFDQSxJQUFNQyxTQUFTLEdBQUdGLFlBQVksQ0FBQ0csS0FBYixDQUFtQixHQUFuQixDQUFsQjtJQUNBLElBQU1DLE9BQU8sYUFBTUYsU0FBUyxDQUFDLENBQUQsQ0FBZixhQUFiLENBUnVELENBU3ZEO0lBQ0E7SUFDQTs7SUFDQSxJQUFNRyxnQkFBdUIsR0FBRyxFQUFoQzs7SUFDQSxJQUFJSCxTQUFTLENBQUNJLE1BQVYsR0FBbUIsQ0FBdkIsRUFBMEI7TUFDekIsSUFBTUMsU0FBUyxHQUFHTCxTQUFTLENBQUMsQ0FBRCxDQUEzQjtNQUNBSyxTQUFTLENBQUNKLEtBQVYsQ0FBZ0IsR0FBaEIsRUFBcUJLLE9BQXJCLENBQTZCLFVBQVVDLFFBQVYsRUFBeUI7UUFDckQsSUFBTUMsY0FBYyxHQUFHRCxRQUFRLENBQUNOLEtBQVQsQ0FBZSxHQUFmLENBQXZCOztRQUNBLFFBQVFPLGNBQWMsQ0FBQyxDQUFELENBQXRCO1VBQ0MsS0FBSyxRQUFMO1VBQ0EsS0FBSyxTQUFMO1VBQ0Es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
@@ -1,19 +1,11 @@
1
1
  import Log from "sap/base/Log";
2
- import type BaseController from "sap/fe/core/BaseController";
3
2
  import CommonUtils from "sap/fe/core/CommonUtils";
4
3
  import type Share from "sap/fe/core/controllerextensions/Share";
5
4
  import SemanticDateOperators from "sap/fe/core/helpers/SemanticDateOperators";
6
- import type IconTabBar from "sap/m/IconTabBar";
7
5
  import HashChanger from "sap/ui/core/routing/HashChanger";
8
- import type Table from "sap/ui/mdc/Table";
9
- function getCountUrl(oController: BaseController) {
10
- // get selected table ID from multiple tabs
11
- let sTableId = (oController.getView().byId("fe::TabMultipleMode") as IconTabBar)?.getSelectedKey();
12
- if (!sTableId) {
13
- // if not multiple tabs, get single table ID
14
- sTableId = oController.getView().getContent()[0].data().singleTableId;
15
- }
16
- const oTable = oController.getView().byId(sTableId) as Table;
6
+ import ListReportController from "../ListReportController.controller";
7
+ function getCountUrl(oController: ListReportController) {
8
+ const oTable = oController._getTable?.();
17
9
  if (!oTable) {
18
10
  return "";
19
11
  }
@@ -62,7 +54,7 @@ function getShareEmailUrl() {
62
54
  }
63
55
  }
64
56
  function getSaveAsTileServiceUrl(oController: any) {
65
- const oFilterBar = oController.getView().byId(oController.getView().getContent()[0].data("filterBarId"));
57
+ const oFilterBar = oController._getFilterBarControl();
66
58
  if (oFilterBar) {
67
59
  const oConditions = oFilterBar.getFilterConditions();
68
60
  const bSaveAsTileServiceUrlAllowed = SemanticDateOperators.hasSemanticDateOperations(oConditions);