@sapui5/sap.fe.core 1.102.7 → 1.102.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.102.7",
3
+ "version": "1.102.8",
4
4
  "description": "SAPUI5 Library sap.fe.core",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "SAP SE (https://www.sap.com)",
@@ -6,7 +6,7 @@
6
6
  <copyright>SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.102.7</version>
9
+ <version>1.102.8</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -24,23 +24,37 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
24
24
  _inheritsLoose(PageReadyControllerExtension, _ControllerExtension);
25
25
 
26
26
  function PageReadyControllerExtension() {
27
- return _ControllerExtension.apply(this, arguments) || this;
27
+ var _this;
28
+
29
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
30
+ args[_key] = arguments[_key];
31
+ }
32
+
33
+ _this = _ControllerExtension.call.apply(_ControllerExtension, [this].concat(args)) || this;
34
+ _this.pageReadyTimeoutDefault = 7000;
35
+ return _this;
28
36
  }
29
37
 
30
38
  var _proto = PageReadyControllerExtension.prototype;
31
39
 
32
40
  _proto.onInit = function onInit() {
33
- var _this = this;
41
+ var _manifestContent$sap,
42
+ _manifestContent$sap2,
43
+ _this2 = this;
34
44
 
35
45
  this._nbWaits = 0;
36
46
  this._oEventProvider = this._oEventProvider ? this._oEventProvider : new EventProvider();
37
- this._oView = this.base.getView();
47
+ this._oView = this.getView();
38
48
  this._oAppComponent = CommonUtils.getAppComponent(this._oView);
39
49
  this._oPageComponent = Component.getOwnerComponentFor(this._oView);
40
50
 
51
+ var manifestContent = this._oAppComponent.getManifest();
52
+
53
+ this.pageReadyTimeout = (_manifestContent$sap = (_manifestContent$sap2 = manifestContent["sap.ui5"]) === null || _manifestContent$sap2 === void 0 ? void 0 : _manifestContent$sap2.pageReadyTimeout) !== null && _manifestContent$sap !== void 0 ? _manifestContent$sap : this.pageReadyTimeoutDefault;
54
+
41
55
  if (this._oPageComponent && this._oPageComponent.attachContainerDefined) {
42
56
  this._oPageComponent.attachContainerDefined(function (oEvent) {
43
- return _this.registerContainer(oEvent.getParameter("container"));
57
+ return _this2.registerContainer(oEvent.getParameter("container"));
44
58
  });
45
59
  } else {
46
60
  this.registerContainer(this._oView);
@@ -48,7 +62,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
48
62
 
49
63
  var oRootControlController = this._oAppComponent.getRootControl().getController();
50
64
 
51
- var oPlaceholder = oRootControlController.getPlaceholder && oRootControlController.getPlaceholder();
65
+ var oPlaceholder = (oRootControlController === null || oRootControlController === void 0 ? void 0 : oRootControlController.getPlaceholder) && oRootControlController.getPlaceholder();
52
66
 
53
67
  if (oPlaceholder !== null && oPlaceholder !== void 0 && oPlaceholder.isPlaceholderDebugEnabled()) {
54
68
  this.attachEvent("pageReady", null, function () {
@@ -73,12 +87,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
73
87
  };
74
88
 
75
89
  _proto.waitFor = function waitFor(oPromise) {
76
- var _this2 = this;
90
+ var _this3 = this;
77
91
 
78
92
  this._nbWaits++;
79
93
  oPromise.finally(function () {
80
94
  setTimeout(function () {
81
- _this2._nbWaits--;
95
+ _this3._nbWaits--;
82
96
  }, 0);
83
97
  }).catch(null);
84
98
  };
@@ -92,7 +106,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
92
106
  };
93
107
 
94
108
  _proto.registerAggregatedControls = function registerAggregatedControls(mainBindingContext) {
95
- var _this3 = this;
109
+ var _this4 = this;
96
110
 
97
111
  if (mainBindingContext) {
98
112
  var mainObjectBinding = mainBindingContext.getBinding();
@@ -106,31 +120,42 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
106
120
 
107
121
  if (oObjectBinding) {
108
122
  // Register on all object binding (mostly used on object pages)
109
- _this3.queryWatcher.registerBinding(oObjectBinding);
123
+ _this4.queryWatcher.registerBinding(oObjectBinding);
110
124
  } else {
111
125
  var aBindingKeys = Object.keys(oElement.mBindingInfos);
112
126
  aBindingKeys.forEach(function (sPropertyName) {
113
127
  var oListBinding = oElement.mBindingInfos[sPropertyName].binding;
114
128
 
115
129
  if (oListBinding && oListBinding.isA("sap.ui.model.odata.v4.ODataListBinding")) {
116
- _this3.queryWatcher.registerBinding(oListBinding);
130
+ _this4.queryWatcher.registerBinding(oListBinding);
117
131
  }
118
132
  });
119
133
  } // This is dirty but MDCTables and MDCCharts have a weird loading lifecycle
120
134
 
121
135
 
122
136
  if (oElement.isA("sap.ui.mdc.Table") || oElement.isA("sap.ui.mdc.Chart")) {
123
- _this3.bTablesChartsLoaded = false;
124
- aPromises.push(_this3.queryWatcher.registerTableOrChart(oElement));
137
+ _this4.bTablesChartsLoaded = false;
138
+ aPromises.push(_this4.queryWatcher.registerTableOrChart(oElement));
125
139
  } else if (oElement.isA("sap.fe.core.controls.FilterBar")) {
126
- _this3.queryWatcher.registerFilterBar(oElement);
140
+ _this4.queryWatcher.registerFilterBar(oElement);
127
141
  }
128
142
  });
129
143
  return aPromises;
130
144
  };
131
145
 
132
146
  _proto.onAfterBinding = function onAfterBinding(oBindingContext) {
133
- var _this4 = this;
147
+ var _this5 = this;
148
+
149
+ // In case the page is rebind we need to clear the timer (eg: in FCL, the user can select 2 items successively in the list report)
150
+ if (this.pageReadyTimeoutTimer) {
151
+ clearTimeout(this.pageReadyTimeoutTimer);
152
+ }
153
+
154
+ this.pageReadyTimeoutTimer = setTimeout(function () {
155
+ Log.error("The PageReady Event was not fired within the ".concat(_this5.pageReadyTimeout, " ms timeout . It has been forced."));
156
+
157
+ _this5._oEventProvider.fireEvent("pageReady");
158
+ }, this.pageReadyTimeout);
134
159
 
135
160
  if (this._bAfterBindingAlreadyApplied) {
136
161
  return;
@@ -147,17 +172,19 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
147
172
  }
148
173
 
149
174
  this.attachEventOnce("pageReady", null, function () {
150
- _this4._bAfterBindingAlreadyApplied = false;
175
+ clearTimeout(_this5.pageReadyTimeoutTimer);
176
+ _this5.pageReadyTimeoutTimer = undefined;
177
+ _this5._bAfterBindingAlreadyApplied = false;
151
178
 
152
- _this4.queryWatcher.reset();
179
+ _this5.queryWatcher.reset();
153
180
  }, null);
154
181
  var aTableChartInitializedPromises = this.registerAggregatedControls(oBindingContext);
155
182
 
156
183
  if (aTableChartInitializedPromises.length > 0) {
157
184
  Promise.all(aTableChartInitializedPromises).finally(function () {
158
- _this4.bTablesChartsLoaded = true;
185
+ _this5.bTablesChartsLoaded = true;
159
186
 
160
- _this4.checkPageReadyDebounced();
187
+ _this5.checkPageReadyDebounced();
161
188
  }).catch(function (oError) {
162
189
  Log.info("There was an error with one or multiple tables or charts", oError);
163
190
  });
@@ -169,15 +196,15 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
169
196
  };
170
197
 
171
198
  _proto.waitPageReady = function waitPageReady() {
172
- var _this5 = this;
199
+ var _this6 = this;
173
200
 
174
201
  return new Promise(function (resolve) {
175
- if (_this5.isPageReady()) {
202
+ if (_this6.isPageReady()) {
176
203
  resolve();
177
204
  } else {
178
- _this5.attachEventOnce("pageReady", null, function () {
205
+ _this6.attachEventOnce("pageReady", null, function () {
179
206
  resolve();
180
- }, _this5);
207
+ }, _this6);
181
208
  }
182
209
  });
183
210
  };
@@ -198,22 +225,22 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
198
225
  };
199
226
 
200
227
  _proto.registerContainer = function registerContainer(oContainer) {
201
- var _this6 = this;
228
+ var _this7 = this;
202
229
 
203
230
  this._oContainer = oContainer;
204
231
  this._fnContainerDelegate = {
205
232
  onBeforeShow: function () {
206
- _this6.bShown = false;
207
- _this6._bIsPageReady = false;
233
+ _this7.bShown = false;
234
+ _this7._bIsPageReady = false;
208
235
  },
209
236
  onBeforeHide: function () {
210
- _this6.bShown = false;
211
- _this6._bIsPageReady = false;
237
+ _this7.bShown = false;
238
+ _this7._bIsPageReady = false;
212
239
  },
213
240
  onAfterShow: function () {
214
- _this6.bShown = true;
241
+ _this7.bShown = true;
215
242
 
216
- _this6._checkPageReady(true);
243
+ _this7._checkPageReady(true);
217
244
  }
218
245
  };
219
246
 
@@ -225,19 +252,19 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
225
252
  };
226
253
 
227
254
  _proto.checkPageReadyDebounced = function checkPageReadyDebounced() {
228
- var _this7 = this;
255
+ var _this8 = this;
229
256
 
230
257
  if (this.pageReadyTimer) {
231
258
  clearTimeout(this.pageReadyTimer);
232
259
  }
233
260
 
234
261
  this.pageReadyTimer = setTimeout(function () {
235
- _this7._checkPageReady();
262
+ _this8._checkPageReady();
236
263
  }, 200);
237
264
  };
238
265
 
239
266
  _proto._checkPageReady = function _checkPageReady() {
240
- var _this8 = this;
267
+ var _this9 = this;
241
268
 
242
269
  var bFromNav = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
243
270
 
@@ -245,9 +272,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
245
272
  // Wait until the UI is no longer dirty
246
273
  if (!Core.getUIDirty()) {
247
274
  Core.detachEvent("UIUpdated", fnUIUpdated);
248
- _this8._bWaitingForRefresh = false;
275
+ _this9._bWaitingForRefresh = false;
249
276
  setTimeout(function () {
250
- _this8._checkPageReady();
277
+ _this9._checkPageReady();
251
278
  }, 20);
252
279
  }
253
280
  }; // In case UIUpdate does not get called, check if UI is not dirty and then call _checkPageReady
@@ -256,11 +283,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
256
283
  var checkUIUpdated = function () {
257
284
  if (Core.getUIDirty()) {
258
285
  setTimeout(checkUIUpdated, 500);
259
- } else if (_this8._bWaitingForRefresh) {
260
- _this8._bWaitingForRefresh = false;
286
+ } else if (_this9._bWaitingForRefresh) {
287
+ _this9._bWaitingForRefresh = false;
261
288
  Core.detachEvent("UIUpdated", fnUIUpdated);
262
289
 
263
- _this8._checkPageReady();
290
+ _this9._checkPageReady();
264
291
  }
265
292
  };
266
293
 
@@ -290,4 +317,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/pageReady/DataQ
290
317
  }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onExit", [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "onExit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "waitFor", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "waitFor"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRouteMatched", [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "onRouteMatched"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRouteMatchedFinished", [_dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "onRouteMatchedFinished"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAfterBinding", [_dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "onAfterBinding"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "isPageReady", [_dec9, _dec10], Object.getOwnPropertyDescriptor(_class2.prototype, "isPageReady"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "waitPageReady", [_dec11, _dec12], Object.getOwnPropertyDescriptor(_class2.prototype, "waitPageReady"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "attachEventOnce", [_dec13, _dec14], Object.getOwnPropertyDescriptor(_class2.prototype, "attachEventOnce"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "attachEvent", [_dec15, _dec16], Object.getOwnPropertyDescriptor(_class2.prototype, "attachEvent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "detachEvent", [_dec17, _dec18], Object.getOwnPropertyDescriptor(_class2.prototype, "detachEvent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "isContextExpected", [_dec19, _dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "isContextExpected"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "checkPageReadyDebounced", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "checkPageReadyDebounced"), _class2.prototype)), _class2)) || _class);
291
318
  return PageReadyControllerExtension;
292
319
  }, false);
293
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBhZ2VSZWFkeS50cyJdLCJuYW1lcyI6WyJQYWdlUmVhZHlDb250cm9sbGVyRXh0ZW5zaW9uIiwiZGVmaW5lVUk1Q2xhc3MiLCJtZXRob2RPdmVycmlkZSIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkluc3RlYWQiLCJvbkluaXQiLCJfbmJXYWl0cyIsIl9vRXZlbnRQcm92aWRlciIsIkV2ZW50UHJvdmlkZXIiLCJfb1ZpZXciLCJiYXNlIiwiZ2V0VmlldyIsIl9vQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJfb1BhZ2VDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsImF0dGFjaENvbnRhaW5lckRlZmluZWQiLCJvRXZlbnQiLCJyZWdpc3RlckNvbnRhaW5lciIsImdldFBhcmFtZXRlciIsIm9Sb290Q29udHJvbENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJvUGxhY2Vob2xkZXIiLCJnZXRQbGFjZWhvbGRlciIsImlzUGxhY2Vob2xkZXJEZWJ1Z0VuYWJsZWQiLCJhdHRhY2hFdmVudCIsImdldFBsYWNlaG9sZGVyRGVidWdTdGF0cyIsImlQYWdlUmVhZHlFdmVudFRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJpSGVyb2VzQmF0Y2hSZWNlaXZlZEV2ZW50VGltZXN0YW1wIiwicXVlcnlXYXRjaGVyIiwiRGF0YVF1ZXJ5V2F0Y2hlciIsImNoZWNrUGFnZVJlYWR5RGVib3VuY2VkIiwiYmluZCIsIm9uRXhpdCIsIl9vQ29udGFpbmVyIiwicmVtb3ZlRXZlbnREZWxlZ2F0ZSIsIl9mbkNvbnRhaW5lckRlbGVnYXRlIiwid2FpdEZvciIsIm9Qcm9taXNlIiwiZmluYWxseSIsInNldFRpbWVvdXQiLCJjYXRjaCIsIm9uUm91dGVNYXRjaGVkIiwiX2JJc1BhZ2VSZWFkeSIsIm9uUm91dGVNYXRjaGVkRmluaXNoZWQiLCJyZWdpc3RlckFnZ3JlZ2F0ZWRDb250cm9scyIsIm1haW5CaW5kaW5nQ29udGV4dCIsIm1haW5PYmplY3RCaW5kaW5nIiwiZ2V0QmluZGluZyIsInJlZ2lzdGVyQmluZGluZyIsImFQcm9taXNlcyIsImFDb250cm9scyIsImZpbmRBZ2dyZWdhdGVkT2JqZWN0cyIsImZvckVhY2giLCJvRWxlbWVudCIsIm9PYmplY3RCaW5kaW5nIiwiZ2V0T2JqZWN0QmluZGluZyIsImFCaW5kaW5nS2V5cyIsIk9iamVjdCIsImtleXMiLCJtQmluZGluZ0luZm9zIiwic1Byb3BlcnR5TmFtZSIsIm9MaXN0QmluZGluZyIsImJpbmRpbmciLCJpc0EiLCJiVGFibGVzQ2hhcnRzTG9hZGVkIiwicHVzaCIsInJlZ2lzdGVyVGFibGVPckNoYXJ0IiwicmVnaXN0ZXJGaWx0ZXJCYXIiLCJvbkFmdGVyQmluZGluZyIsIm9CaW5kaW5nQ29udGV4dCIsIl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQiLCJpc0NvbnRleHRFeHBlY3RlZCIsInVuZGVmaW5lZCIsImJIYXNDb250ZXh0IiwiYXR0YWNoRXZlbnRPbmNlIiwicmVzZXQiLCJhVGFibGVDaGFydEluaXRpYWxpemVkUHJvbWlzZXMiLCJsZW5ndGgiLCJQcm9taXNlIiwiYWxsIiwib0Vycm9yIiwiTG9nIiwiaW5mbyIsImlzUGFnZVJlYWR5Iiwid2FpdFBhZ2VSZWFkeSIsInJlc29sdmUiLCJzRXZlbnRJZCIsIm9EYXRhIiwiZm5GdW5jdGlvbiIsIm9MaXN0ZW5lciIsImRldGFjaEV2ZW50Iiwib0NvbnRhaW5lciIsIm9uQmVmb3JlU2hvdyIsImJTaG93biIsIm9uQmVmb3JlSGlkZSIsIm9uQWZ0ZXJTaG93IiwiX2NoZWNrUGFnZVJlYWR5IiwiYWRkRXZlbnREZWxlZ2F0ZSIsInBhZ2VSZWFkeVRpbWVyIiwiY2xlYXJUaW1lb3V0IiwiYkZyb21OYXYiLCJmblVJVXBkYXRlZCIsIkNvcmUiLCJnZXRVSURpcnR5IiwiX2JXYWl0aW5nRm9yUmVmcmVzaCIsImNoZWNrVUlVcGRhdGVkIiwiaXNEYXRhUmVjZWl2ZWQiLCJyZXNldERhdGFSZWNlaXZlZCIsIlRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSIsImdldE51bWJlck9mVmlld3NJbkNyZWF0aW9uU3RhdGUiLCJpc1NlYXJjaFBlbmRpbmciLCJmaXJlRXZlbnQiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BZU1BLDRCLFdBRExDLGNBQWMsQ0FBQyw0Q0FBRCxDLFVBa0JiQyxjQUFjLEUsVUFzQ2RBLGNBQWMsRSxVQVVkQyxlQUFlLEUsVUFDZkMsY0FBYyxFLFVBV2RGLGNBQWMsQ0FBQyxVQUFELEMsVUFJZEEsY0FBYyxDQUFDLFVBQUQsQyxVQXlDZEEsY0FBYyxDQUFDLFVBQUQsQyxVQXVDZEMsZUFBZSxFLFdBQ2ZDLGNBQWMsRSxXQUtkRCxlQUFlLEUsV0FDZkMsY0FBYyxFLFdBa0JkRCxlQUFlLEUsV0FDZkMsY0FBYyxFLFdBS2RELGVBQWUsRSxXQUNmQyxjQUFjLEUsV0FLZEQsZUFBZSxFLFdBQ2ZDLGNBQWMsRSxXQXdCZEMsZ0JBQWdCLEUsV0FDaEJDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLE9BQW5CLEMsV0FLVkwsZUFBZSxFOzs7Ozs7Ozs7V0FuTlRNLE0sR0FEUCxrQkFDZ0I7QUFBQTs7QUFDZixXQUFLQyxRQUFMLEdBQWdCLENBQWhCO0FBQ0EsV0FBS0MsZUFBTCxHQUF1QixLQUFLQSxlQUFMLEdBQXVCLEtBQUtBLGVBQTVCLEdBQThDLElBQUlDLGFBQUosRUFBckU7QUFDQSxXQUFLQyxNQUFMLEdBQWUsSUFBRCxDQUFjQyxJQUFkLENBQW1CQyxPQUFuQixFQUFkO0FBQ0EsV0FBS0MsY0FBTCxHQUFzQkMsV0FBVyxDQUFDQyxlQUFaLENBQTRCLEtBQUtMLE1BQWpDLENBQXRCO0FBQ0EsV0FBS00sZUFBTCxHQUF1QkMsU0FBUyxDQUFDQyxvQkFB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QUNBLGVBQUt6QyxlQUFMLENBQXFCOEcsU0FBckIsQ0FBK0IsV0FBL0I7QUFDQTtBQUNEO0FBQ0QsSzs7O0lBbFN5Q0MsbUI7U0FxUzVCMUgsNEIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCBEYXRhUXVlcnlXYXRjaGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9wYWdlUmVhZHkvRGF0YVF1ZXJ5V2F0Y2hlclwiO1xuaW1wb3J0IFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBFdmVudFByb3ZpZGVyIGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCIuLi9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIGZpbmFsRXh0ZW5zaW9uLCBtZXRob2RPdmVycmlkZSwgcHJpdmF0ZUV4dGVuc2lvbiwgcHVibGljRXh0ZW5zaW9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5QYWdlUmVhZHlcIilcbmNsYXNzIFBhZ2VSZWFkeUNvbnRyb2xsZXJFeHRlbnNpb24gZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJpdmF0ZSBfb0V2ZW50UHJvdmlkZXIhOiBFdmVudFByb3ZpZGVyO1xuXHRwcml2YXRlIF9vVmlldzogYW55O1xuXHRwcml2YXRlIF9vQXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXHRwcml2YXRlIF9vUGFnZUNvbXBvbmVudCE6IGFueTtcblx0cHJpdmF0ZSBfb0NvbnRhaW5lciE6IGFueTtcblx0cHJpdmF0ZSBfYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkITogYm9vbGVhbjtcblx0cHJpdmF0ZSBfZm5Db250YWluZXJEZWxlZ2F0ZTogYW55O1xuXHRwcml2YXRlIF9uYldhaXRzITogbnVtYmVyO1xuXHRwcml2YXRlIF9iSXNQYWdlUmVhZHkhOiBib29sZWFuO1xuXHRwcml2YXRlIF9iV2FpdGluZ0ZvclJlZnJlc2ghOiBib29sZWFuO1xuXHRwcml2YXRlIGJTaG93biE6IGJvb2xlYW47XG5cdHByaXZhdGUgYkhhc0NvbnRleHQhOiBib29sZWFuO1xuXHRwcml2YXRlIGJUYWJsZXNDaGFydHNMb2FkZWQ/OiBib29sZWFuO1xuXHRwcml2YXRlIHBhZ2VSZWFkeVRpbWVyOiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZDtcblx0cHJpdmF0ZSBxdWVyeVdhdGNoZXIhOiBEYXRhUXVlcnlXYXRjaGVyO1xuXG5cdEBtZXRob2RPdmVycmlkZSgpXG5cdHB1YmxpYyBvbkluaXQoKSB7XG5cdFx0dGhpcy5fbmJXYWl0cyA9IDA7XG5cdFx0dGhpcy5fb0V2ZW50UHJvdmlkZXIgPSB0aGlzLl9vRXZlbnRQcm92aWRlciA/IHRoaXMuX29FdmVudFByb3ZpZGVyIDogbmV3IEV2ZW50UHJvdmlkZXIoKTtcblx0XHR0aGlzLl9vVmlldyA9ICh0aGlzIGFzIGFueSkuYmFzZS5nZXRWaWV3KCk7XG5cdFx0dGhpcy5fb0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLl9vVmlldyk7XG5cdFx0dGhpcy5fb1BhZ2VDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fb1ZpZXcpO1xuXG5cdFx0aWYgKHRoaXMuX29QYWdlQ29tcG9uZW50ICYmIHRoaXMuX29QYWdlQ29tcG9uZW50LmF0dGFjaENvbnRhaW5lckRlZmluZWQpIHtcblx0XHRcdHRoaXMuX29QYWdlQ29tcG9uZW50LmF0dGFjaENvbnRhaW5lckRlZmluZWQoKG9FdmVudDogRXZlbnQpID0+IHRoaXMucmVnaXN0ZXJDb250YWluZXIob0V2ZW50LmdldFBhcmFtZXRlcihcImNvbnRhaW5lclwiKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJlZ2lzdGVyQ29udGFpbmVyKHRoaXMuX29WaWV3KTtcblx0XHR9XG5cblx0XHRjb25zdCBvUm9vdENvbnRyb2xDb250cm9sbGVyID0gKHRoaXMuX29BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSBhcyBWaWV3KS5nZXRDb250cm9sbGVyKCkgYXMgYW55O1xuXHRcdGNvbnN0IG9QbGFjZWhvbGRlciA9IG9Sb290Q29udHJvbENvbnRyb2xsZXIuZ2V0UGxhY2Vob2xkZXIgJiYgb1Jvb3RDb250cm9sQ29udHJvbGxlci5nZXRQbGFjZWhvbGRlcigpO1xuXHRcdGlmIChvUGxhY2Vob2xkZXI/LmlzUGxhY2Vob2xkZXJEZWJ1Z0VuYWJsZWQoKSkge1xuXHRcdFx0dGhpcy5hdHRhY2hFdmVudChcblx0XHRcdFx0XCJwYWdlUmVhZHlcIixcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdG9QbGFjZWhvbGRlci5nZXRQbGFjZWhvbGRlckRlYnVnU3RhdHMoKS5pUGFnZVJlYWR5RXZlbnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR0aGlzXG5cdFx0XHQpO1xuXHRcdFx0dGhpcy5hdHRhY2hFdmVudChcblx0XHRcdFx0XCJoZXJvZXNCYXRjaFJlY2VpdmVkXCIsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRvUGxhY2Vob2xkZXIuZ2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzKCkuaUhlcm9lc0JhdGNoUmVjZWl2ZWRFdmVudFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoaXNcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5xdWVyeVdhdGNoZXIgPSBuZXcgRGF0YVF1ZXJ5V2F0Y2hlcih0aGlzLl9vRXZlbnRQcm92aWRlciwgdGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZC5iaW5kKHRoaXMpKTtcblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZSgpXG5cdHB1YmxpYyBvbkV4aXQoKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb0FwcENvbXBvbmVudDtcblx0XHRpZiAodGhpcy5fb0NvbnRhaW5lcikge1xuXHRcdFx0dGhpcy5fb0NvbnRhaW5lci5yZW1vdmVFdmVudERlbGVnYXRlKHRoaXMuX2ZuQ29udGFpbmVyRGVsZWdhdGUpO1xuXHRcdH1cblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgd2FpdEZvcihvUHJvbWlzZTogYW55KSB7XG5cdFx0dGhpcy5fbmJXYWl0cysrO1xuXHRcdG9Qcm9taXNlXG5cdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX25iV2FpdHMtLTtcblx0XHRcdFx0fSwgMCk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKG51bGwpO1xuXHR9XG5cdEBtZXRob2RPdmVycmlkZShcIl9yb3V0aW5nXCIpXG5cdG9uUm91dGVNYXRjaGVkKCkge1xuXHRcdHRoaXMuX2JJc1BhZ2VSZWFkeSA9IGZhbHNlO1xuXHR9XG5cdEBtZXRob2RPdmVycmlkZShcIl9yb3V0aW5nXCIpXG5cdG9uUm91dGVNYXRjaGVkRmluaXNoZWQoKSB7XG5cdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQWdncmVnYXRlZENvbnRyb2xzKG1haW5CaW5kaW5nQ29udGV4dD86IENvbnRleHQpOiBQcm9taXNlPHZvaWQ+W10ge1xuXHRcdGlmIChtYWluQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdGNvbnN0IG1haW5PYmplY3RCaW5kaW5nID0gbWFpbkJpbmRpbmdDb250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyQmluZGluZyhtYWluT2JqZWN0QmluZGluZyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYVByb21pc2VzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcblx0XHRjb25zdCBhQ29udHJvbHMgPSB0aGlzLmdldFZpZXcoKS5maW5kQWdncmVnYXRlZE9iamVjdHModHJ1ZSk7XG5cblx0XHRhQ29udHJvbHMuZm9yRWFjaCgob0VsZW1lbnQ6IGFueSkgPT4ge1xuXHRcdFx0Y29uc3Qgb09iamVjdEJpbmRpbmcgPSBvRWxlbWVudC5nZXRPYmplY3RCaW5kaW5nKCk7XG5cdFx0XHRpZiAob09iamVjdEJpbmRpbmcpIHtcblx0XHRcdFx0Ly8gUmVnaXN0ZXIgb24gYWxsIG9iamVjdCBiaW5kaW5nIChtb3N0bHkgdXNlZCBvbiBvYmplY3QgcGFnZXMpXG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyQmluZGluZyhvT2JqZWN0QmluZGluZyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBhQmluZGluZ0tleXMgPSBPYmplY3Qua2V5cyhvRWxlbWVudC5tQmluZGluZ0luZm9zKTtcblx0XHRcdFx0YUJpbmRpbmdLZXlzLmZvckVhY2goKHNQcm9wZXJ0eU5hbWUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvRWxlbWVudC5tQmluZGluZ0luZm9zW3NQcm9wZXJ0eU5hbWVdLmJpbmRpbmc7XG5cblx0XHRcdFx0XHRpZiAob0xpc3RCaW5kaW5nICYmIG9MaXN0QmluZGluZy5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJCaW5kaW5nKG9MaXN0QmluZGluZyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdC8vIFRoaXMgaXMgZGlydHkgYnV0IE1EQ1RhYmxlcyBhbmQgTURDQ2hhcnRzIGhhdmUgYSB3ZWlyZCBsb2FkaW5nIGxpZmVjeWNsZVxuXHRcdFx0aWYgKG9FbGVtZW50LmlzQShcInNhcC51aS5tZGMuVGFibGVcIikgfHwgb0VsZW1lbnQuaXNBKFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0XHR0aGlzLmJUYWJsZXNDaGFydHNMb2FkZWQgPSBmYWxzZTtcblx0XHRcdFx0YVByb21pc2VzLnB1c2godGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJUYWJsZU9yQ2hhcnQob0VsZW1lbnQpKTtcblx0XHRcdH0gZWxzZSBpZiAob0VsZW1lbnQuaXNBKFwic2FwLmZlLmNvcmUuY29udHJvbHMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyRmlsdGVyQmFyKG9FbGVtZW50KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBhUHJvbWlzZXM7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoXCJfcm91dGluZ1wiKVxuXHRvbkFmdGVyQmluZGluZyhvQmluZGluZ0NvbnRleHQ6IENvbnRleHQpIHtcblx0XHRpZiAodGhpcy5fYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuX2JBZnRlckJpbmRpbmdBbHJlYWR5QXBwbGllZCA9IHRydWU7XG5cblx0XHRpZiAodGhpcy5pc0NvbnRleHRFeHBlY3RlZCgpICYmIG9CaW5kaW5nQ29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBGb3JjZSB0byBtZW50aW9uIHdlIGFyZSBleHBlY3RpbmcgZGF0YVxuXHRcdFx0dGhpcy5iSGFzQ29udGV4dCA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmJIYXNDb250ZXh0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHR0aGlzLmF0dGFjaEV2ZW50T25jZShcblx0XHRcdFwicGFnZVJlYWR5XCIsXG5cdFx0XHRudWxsLFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHR0aGlzLl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVzZXQoKTtcblx0XHRcdH0sXG5cdFx0XHRudWxsXG5cdFx0KTtcblxuXHRcdGNvbnN0IGFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcyA9IHRoaXMucmVnaXN0ZXJBZ2dyZWdhdGVkQ29udHJvbHMob0JpbmRpbmdDb250ZXh0KTtcblxuXHRcdGlmIChhVGFibGVDaGFydEluaXRpYWxpemVkUHJvbWlzZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0UHJvbWlzZS5hbGwoYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzKVxuXHRcdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5iVGFibGVzQ2hhcnRzTG9hZGVkID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgob0Vycm9yKSA9PiB7XG5cdFx0XHRcdFx0TG9nLmluZm8oXCJUaGVyZSB3YXMgYW4gZXJyb3Igd2l0aCBvbmUgb3IgbXVsdGlwbGUgdGFibGVzIG9yIGNoYXJ0c1wiLCBvRXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGlzUGFnZVJlYWR5KCkge1xuXHRcdHJldHVybiB0aGlzLl9iSXNQYWdlUmVhZHk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIHdhaXRQYWdlUmVhZHkoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5pc1BhZ2VSZWFkeSgpKSB7XG5cdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFxuXHRcdFx0XHRcdFwicGFnZVJlYWR5XCIsXG5cdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGF0dGFjaEV2ZW50T25jZShzRXZlbnRJZDogc3RyaW5nLCBvRGF0YTogYW55LCBmbkZ1bmN0aW9uPzogRnVuY3Rpb24sIG9MaXN0ZW5lcj86IGFueSkge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcblx0XHRyZXR1cm4gdGhpcy5fb0V2ZW50UHJvdmlkZXIuYXR0YWNoRXZlbnRPbmNlKHNFdmVudElkLCBvRGF0YSwgZm5GdW5jdGlvbiBhcyBGdW5jdGlvbiwgb0xpc3RlbmVyKTtcblx0fVxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGF0dGFjaEV2ZW50KHNFdmVudElkOiBzdHJpbmcsIG9EYXRhOiBhbnksIGZuRnVuY3Rpb246IEZ1bmN0aW9uLCBvTGlzdGVuZXI6IGFueSkge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcblx0XHRyZXR1cm4gdGhpcy5fb0V2ZW50UHJvdmlkZXIuYXR0YWNoRXZlbnQoc0V2ZW50SWQsIG9EYXRhLCBmbkZ1bmN0aW9uLCBvTGlzdGVuZXIpO1xuXHR9XG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgZGV0YWNoRXZlbnQoc0V2ZW50SWQ6IHN0cmluZywgZm5GdW5jdGlvbjogRnVuY3Rpb24pIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG5cdFx0cmV0dXJuIHRoaXMuX29FdmVudFByb3ZpZGVyLmRldGFjaEV2ZW50KHNFdmVudElkLCBmbkZ1bmN0aW9uKTtcblx0fVxuXHRwcml2YXRlIHJlZ2lzdGVyQ29udGFpbmVyKG9Db250YWluZXI6IE1hbmFnZWRPYmplY3QpIHtcblx0XHR0aGlzLl9vQ29udGFpbmVyID0gb0NvbnRhaW5lcjtcblx0XHR0aGlzLl9mbkNvbnRhaW5lckRlbGVnYXRlID0ge1xuXHRcdFx0b25CZWZvcmVTaG93OiAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuYlNob3duID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuX2JJc1BhZ2VSZWFkeSA9IGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdG9uQmVmb3JlSGlkZTogKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmJTaG93biA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLl9iSXNQYWdlUmVhZHkgPSBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHRvbkFmdGVyU2hvdzogKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmJTaG93biA9IHRydWU7XG5cdFx0XHRcdHRoaXMuX2NoZWNrUGFnZVJlYWR5KHRydWUpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0dGhpcy5fb0NvbnRhaW5lci5hZGRFdmVudERlbGVnYXRlKHRoaXMuX2ZuQ29udGFpbmVyRGVsZWdhdGUpO1xuXHR9XG5cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRwdWJsaWMgaXNDb250ZXh0RXhwZWN0ZWQoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHB1YmxpYyBjaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpIHtcblx0XHRpZiAodGhpcy5wYWdlUmVhZHlUaW1lcikge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMucGFnZVJlYWR5VGltZXIpO1xuXHRcdH1cblx0XHR0aGlzLnBhZ2VSZWFkeVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLl9jaGVja1BhZ2VSZWFkeSgpO1xuXHRcdH0sIDIwMCk7XG5cdH1cblxuXHRwdWJsaWMgX2NoZWNrUGFnZVJlYWR5KGJGcm9tTmF2OiBib29sZWFuID0gZmFsc2UpIHtcblx0XHRjb25zdCBmblVJVXBkYXRlZCA9ICgpID0+IHtcblx0XHRcdC8vIFdhaXQgdW50aWwgdGhlIFVJIGlzIG5vIGxvbmdlciBkaXJ0eVxuXHRcdFx0aWYgKCFDb3JlLmdldFVJRGlydHkoKSkge1xuXHRcdFx0XHQoQ29yZSBhcyBDb3JlRXgpLmRldGFjaEV2ZW50KFwiVUlVcGRhdGVkXCIsIGZuVUlVcGRhdGVkKTtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gZmFsc2U7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX2NoZWNrUGFnZVJlYWR5KCk7XG5cdFx0XHRcdH0sIDIwKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Ly8gSW4gY2FzZSBVSVVwZGF0ZSBkb2VzIG5vdCBnZXQgY2FsbGVkLCBjaGVjayBpZiBVSSBpcyBub3QgZGlydHkgYW5kIHRoZW4gY2FsbCBfY2hlY2tQYWdlUmVhZHlcblx0XHRjb25zdCBjaGVja1VJVXBkYXRlZCA9ICgpID0+IHtcblx0XHRcdGlmIChDb3JlLmdldFVJRGlydHkoKSkge1xuXHRcdFx0XHRzZXRUaW1lb3V0KGNoZWNrVUlVcGRhdGVkLCA1MDApO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2gpIHtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gZmFsc2U7XG5cdFx0XHRcdChDb3JlIGFzIENvcmVFeCkuZGV0YWNoRXZlbnQoXCJVSVVwZGF0ZWRcIiwgZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHR0aGlzLl9jaGVja1BhZ2VSZWFkeSgpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRpZiAoXG5cdFx0XHR0aGlzLmJTaG93biAmJlxuXHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIuaXNEYXRhUmVjZWl2ZWQoKSAhPT0gZmFsc2UgJiZcblx0XHRcdHRoaXMuYlRhYmxlc0NoYXJ0c0xvYWRlZCAhPT0gZmFsc2UgJiZcblx0XHRcdCghdGhpcy5pc0NvbnRleHRFeHBlY3RlZCgpIHx8IHRoaXMuYkhhc0NvbnRleHQpIC8vIEVpdGhlciBubyBjb250ZXh0IGlzIGV4cGVjdGVkIG9yIHRoZXJlIGlzIG9uZVxuXHRcdCkge1xuXHRcdFx0aWYgKHRoaXMucXVlcnlXYXRjaGVyLmlzRGF0YVJlY2VpdmVkKCkgPT09IHRydWUgJiYgIWJGcm9tTmF2ICYmICF0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggJiYgQ29yZS5nZXRVSURpcnR5KCkpIHtcblx0XHRcdFx0Ly8gSWYgd2UgcmVxdWVzdGVkIGRhdGEgd2UgZ2V0IG5vdGlmaWVkIGFzIHNvb24gYXMgdGhlIGRhdGEgYXJyaXZlZCwgc28gYmVmb3JlIHRoZSBuZXh0IHJlbmRlcmluZyB0aWNrXG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlc2V0RGF0YVJlY2VpdmVkKCk7XG5cdFx0XHRcdHRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCA9IHRydWU7XG5cdFx0XHRcdChDb3JlIGFzIENvcmVFeCkuYXR0YWNoRXZlbnQoXCJVSVVwZGF0ZWRcIiwgZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KGNoZWNrVUlVcGRhdGVkLCA1MDApO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0KCF0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggJiYgQ29yZS5nZXRVSURpcnR5KCkpIHx8XG5cdFx0XHRcdHRoaXMuX25iV2FpdHMgIT09IDAgfHxcblx0XHRcdFx0VGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5LmdldE51bWJlck9mVmlld3NJbkNyZWF0aW9uU3RhdGUoKSA+IDAgfHxcblx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIuaXNTZWFyY2hQZW5kaW5nKClcblx0XHRcdCkge1xuXHRcdFx0XHR0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggPSB0cnVlO1xuXHRcdFx0XHQoQ29yZSBhcyBDb3JlRXgpLmF0dGFjaEV2ZW50KFwiVUlVcGRhdGVkXCIsIGZuVUlVcGRhdGVkKTtcblx0XHRcdFx0c2V0VGltZW91dChjaGVja1VJVXBkYXRlZCwgNTAwKTtcblx0XHRcdH0gZWxzZSBpZiAoIXRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCkge1xuXHRcdFx0XHQvLyBJbiB0aGUgY2FzZSB3ZSdyZSBub3Qgd2FpdGluZyBmb3IgYW55IGRhdGEgKG5hdmlnYXRpbmcgYmFjayB0byBhIHBhZ2Ugd2UgYWxyZWFkeSBoYXZlIGxvYWRlZClcblx0XHRcdFx0Ly8ganVzdCB3YWl0IGZvciBhIGZyYW1lIHRvIGZpcmUgdGhlIGV2ZW50LlxuXHRcdFx0XHR0aGlzLl9iSXNQYWdlUmVhZHkgPSB0cnVlO1xuXHRcdFx0XHR0aGlzLl9vRXZlbnRQcm92aWRlci5maXJlRXZlbnQoXCJwYWdlUmVhZHlcIik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2VSZWFkeUNvbnRyb2xsZXJFeHRlbnNpb247XG4iXX0=
320
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBhZ2VSZWFkeS50cyJdLCJuYW1lcyI6WyJQYWdlUmVhZHlDb250cm9sbGVyRXh0ZW5zaW9uIiwiZGVmaW5lVUk1Q2xhc3MiLCJtZXRob2RPdmVycmlkZSIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkluc3RlYWQiLCJwYWdlUmVhZHlUaW1lb3V0RGVmYXVsdCIsIm9uSW5pdCIsIl9uYldhaXRzIiwiX29FdmVudFByb3ZpZGVyIiwiRXZlbnRQcm92aWRlciIsIl9vVmlldyIsImdldFZpZXciLCJfb0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiX29QYWdlQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJtYW5pZmVzdENvbnRlbnQiLCJnZXRNYW5pZmVzdCIsInBhZ2VSZWFkeVRpbWVvdXQiLCJhdHRhY2hDb250YWluZXJEZWZpbmVkIiwib0V2ZW50IiwicmVnaXN0ZXJDb250YWluZXIiLCJnZXRQYXJhbWV0ZXIiLCJvUm9vdENvbnRyb2xDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwib1BsYWNlaG9sZGVyIiwiZ2V0UGxhY2Vob2xkZXIiLCJpc1BsYWNlaG9sZGVyRGVidWdFbmFibGVkIiwiYXR0YWNoRXZlbnQiLCJnZXRQbGFjZWhvbGRlckRlYnVnU3RhdHMiLCJpUGFnZVJlYWR5RXZlbnRUaW1lc3RhbXAiLCJEYXRlIiwibm93IiwiaUhlcm9lc0JhdGNoUmVjZWl2ZWRFdmVudFRpbWVzdGFtcCIsInF1ZXJ5V2F0Y2hlciIsIkRhdGFRdWVyeVdhdGNoZXIiLCJjaGVja1BhZ2VSZWFkeURlYm91bmNlZCIsImJpbmQiLCJvbkV4aXQiLCJfb0NvbnRhaW5lciIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJfZm5Db250YWluZXJEZWxlZ2F0ZSIsIndhaXRGb3IiLCJvUHJvbWlzZSIsImZpbmFsbHkiLCJzZXRUaW1lb3V0IiwiY2F0Y2giLCJvblJvdXRlTWF0Y2hlZCIsIl9iSXNQYWdlUmVhZHkiLCJvblJvdXRlTWF0Y2hlZEZpbmlzaGVkIiwicmVnaXN0ZXJBZ2dyZWdhdGVkQ29udHJvbHMiLCJtYWluQmluZGluZ0NvbnRleHQiLCJtYWluT2JqZWN0QmluZGluZyIsImdldEJpbmRpbmciLCJyZWdpc3RlckJpbmRpbmciLCJhUHJvbWlzZXMiLCJhQ29udHJvbHMiLCJmaW5kQWdncmVnYXRlZE9iamVjdHMiLCJmb3JFYWNoIiwib0VsZW1lbnQiLCJvT2JqZWN0QmluZGluZyIsImdldE9iamVjdEJpbmRpbmciLCJhQmluZGluZ0tleXMiLCJPYmplY3QiLCJrZXlzIiwibUJpbmRpbmdJbmZvcyIsInNQcm9wZXJ0eU5hbWUiLCJvTGlzdEJpbmRpbmciLCJiaW5kaW5nIiwiaXNBIiwiYlRhYmxlc0NoYXJ0c0xvYWRlZCIsInB1c2giLCJyZWdpc3RlclRhYmxlT3JDaGFydCIsInJlZ2lzdGVyRmlsdGVyQmFyIiwib25BZnRlckJpbmRpbmciLCJvQmluZGluZ0NvbnRleHQiLCJwYWdlUmVhZHlUaW1lb3V0VGltZXIiLCJjbGVhclRpbWVvdXQiLCJMb2ciLCJlcnJvciIsImZpcmVFdmVudCIsIl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQiLCJpc0NvbnRleHRFeHBlY3RlZCIsInVuZGVmaW5lZCIsImJIYXNDb250ZXh0IiwiYXR0YWNoRXZlbnRPbmNlIiwicmVzZXQiLCJhVGFibGVDaGFydEluaXRpYWxpemVkUHJvbWlzZXMiLCJsZW5ndGgiLCJQcm9taXNlIiwiYWxsIiwib0Vycm9yIiwiaW5mbyIsImlzUGFnZVJlYWR5Iiwid2FpdFBhZ2VSZWFkeSIsInJlc29sdmUiLCJzRXZlbnRJZCIsIm9EYXRhIiwiZm5GdW5jdGlvbiIsIm9MaXN0ZW5lciIsImRldGFjaEV2ZW50Iiwib0NvbnRhaW5lciIsIm9uQmVmb3JlU2hvdyIsImJTaG93biIsIm9uQmVmb3JlSGlkZSIsIm9uQWZ0ZXJTaG93IiwiX2NoZWNrUGFnZVJlYWR5IiwiYWRkRXZlbnREZWxlZ2F0ZSIsInBhZ2VSZWFkeVRpbWVyIiwiYkZyb21OYXYiLCJmblVJVXBkYXRlZCIsIkNvcmUiLCJnZXRVSURpcnR5IiwiX2JXYWl0aW5nRm9yUmVmcmVzaCIsImNoZWNrVUlVcGRhdGVkIiwiaXNEYXRhUmVjZWl2ZWQiLCJyZXNldERhdGFSZWNlaXZlZCIsIlRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSIsImdldE51bWJlck9mVmlld3NJbkNyZWF0aW9uU3RhdGUiLCJpc1NlYXJjaFBlbmRpbmciLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BZU1BLDRCLFdBRExDLGNBQWMsQ0FBQyw0Q0FBRCxDLFVBcUJiQyxjQUFjLEUsVUF5Q2RBLGNBQWMsRSxVQVVkQyxlQUFlLEUsVUFDZkMsY0FBYyxFLFVBV2RGLGNBQWMsQ0FBQyxVQUFELEMsVUFJZEEsY0FBYyxDQUFDLFVBQUQsQyxVQXlDZEEsY0FBYyxDQUFDLFVBQUQsQyxVQWtEZEMsZUFBZSxFLFdBQ2ZDLGNBQWMsRSxXQUtkRCxlQUFlLEUsV0FDZkMsY0FBYyxFLFdBa0JkRCxlQUFlLEUsV0FDZkMsY0FBYyxFLFdBS2RELGVBQWUsRSxXQUNmQyxjQUFjLEUsV0FLZEQsZUFBZSxFLFdBQ2ZDLGNBQWMsRSxXQXdCZEMsZ0JBQWdCLEUsV0FDaEJDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLE9BQW5CLEMsV0FLVkwsZUFBZSxFOzs7Ozs7Ozs7OztZQXRPUk0sdUIsR0FBMEIsSTs7Ozs7O1dBSzNCQyxNLEdBRFAsa0JBQ2dCO0FBQUE7QUFBQTtBQUFBOztBQUNmLFdBQUtDLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDQSxXQUFLQyxlQUFMLEdBQXVCLEtBQUtBLGVBQUwsR0FBdUIsS0FBS0EsZUFBNUIsR0FBOEMsSUFBSUMsYUFBSixFQUFyRTtBQUNBLFdBQUtDLE1BQUwsR0FB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bEIsT0FBdUMsSUFBdkMsSUFBK0MsQ0FBQ04sUUFBaEQsSUFBNEQsQ0FBQyxLQUFLSSxtQkFBbEUsSUFBeUZGLElBQUksQ0FBQ0MsVUFBTCxFQUE3RixFQUFnSDtBQUMvRztBQUNBLGVBQUs5RSxZQUFMLENBQWtCa0YsaUJBQWxCO0FBQ0EsZUFBS0gsbUJBQUwsR0FBMkIsSUFBM0I7QUFDQ0YsVUFBQUEsSUFBRCxDQUFpQm5GLFdBQWpCLENBQTZCLFdBQTdCLEVBQTBDa0YsV0FBMUM7QUFDQWpFLFVBQUFBLFVBQVUsQ0FBQ3FFLGNBQUQsRUFBaUIsR0FBakIsQ0FBVjtBQUNBLFNBTkQsTUFNTyxJQUNMLENBQUMsS0FBS0QsbUJBQU4sSUFBNkJGLElBQUksQ0FBQ0MsVUFBTCxFQUE5QixJQUNBLEtBQUs1RyxRQUFMLEtBQWtCLENBRGxCLElBRUFpSCwyQkFBMkIsQ0FBQ0MsK0JBQTVCLEtBQWdFLENBRmhFLElBR0EsS0FBS3BGLFlBQUwsQ0FBa0JxRixlQUFsQixFQUpNLEVBS0w7QUFDRCxlQUFLTixtQkFBTCxHQUEyQixJQUEzQjtBQUNDRixVQUFBQSxJQUFELENBQWlCbkYsV0FBakIsQ0FBNkIsV0FBN0IsRUFBMENrRixXQUExQztBQUNBakUsVUFBQUEsVUFBVSxDQUFDcUUsY0FBRCxFQUFpQixHQUFqQixDQUFWO0FBQ0EsU0FUTSxNQVNBLElBQUksQ0FBQyxLQUFLRCxtQkFBVixFQUErQjtBQUNyQztBQUNBO0FBQ0EsZUFBS2pFLGFBQUwsR0FBcUIsSUFBckI7O0FBQ0EsZUFBSzNDLGVBQUwsQ0FBcUIyRSxTQUFyQixDQUErQixXQUEvQjtBQUNBO0FBQ0Q7QUFDRCxLOzs7SUFuVHlDd0MsbUI7U0FzVDVCL0gsNEIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCBEYXRhUXVlcnlXYXRjaGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9wYWdlUmVhZHkvRGF0YVF1ZXJ5V2F0Y2hlclwiO1xuaW1wb3J0IFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBFdmVudFByb3ZpZGVyIGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCIuLi9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIGZpbmFsRXh0ZW5zaW9uLCBtZXRob2RPdmVycmlkZSwgcHJpdmF0ZUV4dGVuc2lvbiwgcHVibGljRXh0ZW5zaW9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5QYWdlUmVhZHlcIilcbmNsYXNzIFBhZ2VSZWFkeUNvbnRyb2xsZXJFeHRlbnNpb24gZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJpdmF0ZSBfb0V2ZW50UHJvdmlkZXIhOiBFdmVudFByb3ZpZGVyO1xuXHRwcml2YXRlIF9vVmlldzogYW55O1xuXHRwcml2YXRlIF9vQXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXHRwcml2YXRlIF9vUGFnZUNvbXBvbmVudCE6IGFueTtcblx0cHJpdmF0ZSBfb0NvbnRhaW5lciE6IGFueTtcblx0cHJpdmF0ZSBfYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkITogYm9vbGVhbjtcblx0cHJpdmF0ZSBfZm5Db250YWluZXJEZWxlZ2F0ZTogYW55O1xuXHRwcml2YXRlIF9uYldhaXRzITogbnVtYmVyO1xuXHRwcml2YXRlIF9iSXNQYWdlUmVhZHkhOiBib29sZWFuO1xuXHRwcml2YXRlIF9iV2FpdGluZ0ZvclJlZnJlc2ghOiBib29sZWFuO1xuXHRwcml2YXRlIGJTaG93biE6IGJvb2xlYW47XG5cdHByaXZhdGUgYkhhc0NvbnRleHQhOiBib29sZWFuO1xuXHRwcml2YXRlIGJUYWJsZXNDaGFydHNMb2FkZWQ/OiBib29sZWFuO1xuXHRwcml2YXRlIHBhZ2VSZWFkeVRpbWVyOiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZDtcblx0cHJpdmF0ZSBxdWVyeVdhdGNoZXIhOiBEYXRhUXVlcnlXYXRjaGVyO1xuXHRwcml2YXRlIHBhZ2VSZWFkeVRpbWVvdXREZWZhdWx0ID0gNzAwMDtcblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lb3V0VGltZXI/OiBudW1iZXI7XG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZW91dD86IG51bWJlcjtcblxuXHRAbWV0aG9kT3ZlcnJpZGUoKVxuXHRwdWJsaWMgb25Jbml0KCkge1xuXHRcdHRoaXMuX25iV2FpdHMgPSAwO1xuXHRcdHRoaXMuX29FdmVudFByb3ZpZGVyID0gdGhpcy5fb0V2ZW50UHJvdmlkZXIgPyB0aGlzLl9vRXZlbnRQcm92aWRlciA6IG5ldyBFdmVudFByb3ZpZGVyKCk7XG5cdFx0dGhpcy5fb1ZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHR0aGlzLl9vQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuX29WaWV3KTtcblx0XHR0aGlzLl9vUGFnZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLl9vVmlldyk7XG5cblx0XHRjb25zdCBtYW5pZmVzdENvbnRlbnQgPSB0aGlzLl9vQXBwQ29tcG9uZW50LmdldE1hbmlmZXN0KCkgYXMgYW55O1xuXHRcdHRoaXMucGFnZVJlYWR5VGltZW91dCA9IG1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl0/LnBhZ2VSZWFkeVRpbWVvdXQgPz8gdGhpcy5wYWdlUmVhZHlUaW1lb3V0RGVmYXVsdDtcblxuXHRcdGlmICh0aGlzLl9vUGFnZUNvbXBvbmVudCAmJiB0aGlzLl9vUGFnZUNvbXBvbmVudC5hdHRhY2hDb250YWluZXJEZWZpbmVkKSB7XG5cdFx0XHR0aGlzLl9vUGFnZUNvbXBvbmVudC5hdHRhY2hDb250YWluZXJEZWZpbmVkKChvRXZlbnQ6IEV2ZW50KSA9PiB0aGlzLnJlZ2lzdGVyQ29udGFpbmVyKG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb250YWluZXJcIikpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5yZWdpc3RlckNvbnRhaW5lcih0aGlzLl9vVmlldyk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb1Jvb3RDb250cm9sQ29udHJvbGxlciA9ICh0aGlzLl9vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkgYXMgVmlldykuZ2V0Q29udHJvbGxlcigpIGFzIGFueTtcblx0XHRjb25zdCBvUGxhY2Vob2xkZXIgPSBvUm9vdENvbnRyb2xDb250cm9sbGVyPy5nZXRQbGFjZWhvbGRlciAmJiBvUm9vdENvbnRyb2xDb250cm9sbGVyLmdldFBsYWNlaG9sZGVyKCk7XG5cdFx0aWYgKG9QbGFjZWhvbGRlcj8uaXNQbGFjZWhvbGRlckRlYnVnRW5hYmxlZCgpKSB7XG5cdFx0XHR0aGlzLmF0dGFjaEV2ZW50KFxuXHRcdFx0XHRcInBhZ2VSZWFkeVwiLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0b1BsYWNlaG9sZGVyLmdldFBsYWNlaG9sZGVyRGVidWdTdGF0cygpLmlQYWdlUmVhZHlFdmVudFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoaXNcblx0XHRcdCk7XG5cdFx0XHR0aGlzLmF0dGFjaEV2ZW50KFxuXHRcdFx0XHRcImhlcm9lc0JhdGNoUmVjZWl2ZWRcIixcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdG9QbGFjZWhvbGRlci5nZXRQbGFjZWhvbGRlckRlYnVnU3RhdHMoKS5pSGVyb2VzQmF0Y2hSZWNlaXZlZEV2ZW50VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhpc1xuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR0aGlzLnF1ZXJ5V2F0Y2hlciA9IG5ldyBEYXRhUXVlcnlXYXRjaGVyKHRoaXMuX29FdmVudFByb3ZpZGVyLCB0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkLmJpbmQodGhpcykpO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKClcblx0cHVibGljIG9uRXhpdCgpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGRlbGV0ZSB0aGlzLl9vQXBwQ29tcG9uZW50O1xuXHRcdGlmICh0aGlzLl9vQ29udGFpbmVyKSB7XG5cdFx0XHR0aGlzLl9vQ29udGFpbmVyLnJlbW92ZUV2ZW50RGVsZWdhdGUodGhpcy5fZm5Db250YWluZXJEZWxlZ2F0ZSk7XG5cdFx0fVxuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyB3YWl0Rm9yKG9Qcm9taXNlOiBhbnkpIHtcblx0XHR0aGlzLl9uYldhaXRzKys7XG5cdFx0b1Byb21pc2Vcblx0XHRcdC5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5fbmJXYWl0cy0tO1xuXHRcdFx0XHR9LCAwKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2gobnVsbCk7XG5cdH1cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0b25Sb3V0ZU1hdGNoZWQoKSB7XG5cdFx0dGhpcy5fYklzUGFnZVJlYWR5ID0gZmFsc2U7XG5cdH1cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0b25Sb3V0ZU1hdGNoZWRGaW5pc2hlZCgpIHtcblx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJBZ2dyZWdhdGVkQ29udHJvbHMobWFpbkJpbmRpbmdDb250ZXh0PzogQ29udGV4dCk6IFByb21pc2U8dm9pZD5bXSB7XG5cdFx0aWYgKG1haW5CaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0Y29uc3QgbWFpbk9iamVjdEJpbmRpbmcgPSBtYWluQmluZGluZ0NvbnRleHQuZ2V0QmluZGluZygpO1xuXHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJCaW5kaW5nKG1haW5PYmplY3RCaW5kaW5nKTtcblx0XHR9XG5cblx0XHRjb25zdCBhUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuXHRcdGNvbnN0IGFDb250cm9scyA9IHRoaXMuZ2V0VmlldygpLmZpbmRBZ2dyZWdhdGVkT2JqZWN0cyh0cnVlKTtcblxuXHRcdGFDb250cm9scy5mb3JFYWNoKChvRWxlbWVudDogYW55KSA9PiB7XG5cdFx0XHRjb25zdCBvT2JqZWN0QmluZGluZyA9IG9FbGVtZW50LmdldE9iamVjdEJpbmRpbmcoKTtcblx0XHRcdGlmIChvT2JqZWN0QmluZGluZykge1xuXHRcdFx0XHQvLyBSZWdpc3RlciBvbiBhbGwgb2JqZWN0IGJpbmRpbmcgKG1vc3RseSB1c2VkIG9uIG9iamVjdCBwYWdlcylcblx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJCaW5kaW5nKG9PYmplY3RCaW5kaW5nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGFCaW5kaW5nS2V5cyA9IE9iamVjdC5rZXlzKG9FbGVtZW50Lm1CaW5kaW5nSW5mb3MpO1xuXHRcdFx0XHRhQmluZGluZ0tleXMuZm9yRWFjaCgoc1Byb3BlcnR5TmFtZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG9MaXN0QmluZGluZyA9IG9FbGVtZW50Lm1CaW5kaW5nSW5mb3Nbc1Byb3BlcnR5TmFtZV0uYmluZGluZztcblxuXHRcdFx0XHRcdGlmIChvTGlzdEJpbmRpbmcgJiYgb0xpc3RCaW5kaW5nLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlckJpbmRpbmcob0xpc3RCaW5kaW5nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Ly8gVGhpcyBpcyBkaXJ0eSBidXQgTURDVGFibGVzIGFuZCBNRENDaGFydHMgaGF2ZSBhIHdlaXJkIGxvYWRpbmcgbGlmZWN5Y2xlXG5cdFx0XHRpZiAob0VsZW1lbnQuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSB8fCBvRWxlbWVudC5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdHRoaXMuYlRhYmxlc0NoYXJ0c0xvYWRlZCA9IGZhbHNlO1xuXHRcdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlclRhYmxlT3JDaGFydChvRWxlbWVudCkpO1xuXHRcdFx0fSBlbHNlIGlmIChvRWxlbWVudC5pc0EoXCJzYXAuZmUuY29yZS5jb250cm9scy5GaWx0ZXJCYXJcIikpIHtcblx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJGaWx0ZXJCYXIob0VsZW1lbnQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIGFQcm9taXNlcztcblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZShcIl9yb3V0aW5nXCIpXG5cdG9uQWZ0ZXJCaW5kaW5nKG9CaW5kaW5nQ29udGV4dD86IENvbnRleHQpIHtcblx0XHQvLyBJbiBjYXNlIHRoZSBwYWdlIGlzIHJlYmluZCB3ZSBuZWVkIHRvIGNsZWFyIHRoZSB0aW1lciAoZWc6IGluIEZDTCwgdGhlIHVzZXIgY2FuIHNlbGVjdCAyIGl0ZW1zIHN1Y2Nlc3NpdmVseSBpbiB0aGUgbGlzdCByZXBvcnQpXG5cdFx0aWYgKHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQodGhpcy5wYWdlUmVhZHlUaW1lb3V0VGltZXIpO1xuXHRcdH1cblx0XHR0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0TG9nLmVycm9yKGBUaGUgUGFnZVJlYWR5IEV2ZW50IHdhcyBub3QgZmlyZWQgd2l0aGluIHRoZSAke3RoaXMucGFnZVJlYWR5VGltZW91dH0gbXMgdGltZW91dCAuIEl0IGhhcyBiZWVuIGZvcmNlZC5gKTtcblx0XHRcdHRoaXMuX29FdmVudFByb3ZpZGVyLmZpcmVFdmVudChcInBhZ2VSZWFkeVwiKTtcblx0XHR9LCB0aGlzLnBhZ2VSZWFkeVRpbWVvdXQpO1xuXG5cdFx0aWYgKHRoaXMuX2JBZnRlckJpbmRpbmdBbHJlYWR5QXBwbGllZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQgPSB0cnVlO1xuXG5cdFx0aWYgKHRoaXMuaXNDb250ZXh0RXhwZWN0ZWQoKSAmJiBvQmluZGluZ0NvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Ly8gRm9yY2UgdG8gbWVudGlvbiB3ZSBhcmUgZXhwZWN0aW5nIGRhdGFcblx0XHRcdHRoaXMuYkhhc0NvbnRleHQgPSBmYWxzZTtcblx0XHRcdHJldHVybjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5iSGFzQ29udGV4dCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0dGhpcy5hdHRhY2hFdmVudE9uY2UoXG5cdFx0XHRcInBhZ2VSZWFkeVwiLFxuXHRcdFx0bnVsbCxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyKTtcblx0XHRcdFx0dGhpcy5wYWdlUmVhZHlUaW1lb3V0VGltZXIgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdHRoaXMuX2JBZnRlckJpbmRpbmdBbHJlYWR5QXBwbGllZCA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZXNldCgpO1xuXHRcdFx0fSxcblx0XHRcdG51bGxcblx0XHQpO1xuXG5cdFx0Y29uc3QgYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzID0gdGhpcy5yZWdpc3RlckFnZ3JlZ2F0ZWRDb250cm9scyhvQmluZGluZ0NvbnRleHQpO1xuXG5cdFx0aWYgKGFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRQcm9taXNlLmFsbChhVGFibGVDaGFydEluaXRpYWxpemVkUHJvbWlzZXMpXG5cdFx0XHRcdC5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmJUYWJsZXNDaGFydHNMb2FkZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKChvRXJyb3IpID0+IHtcblx0XHRcdFx0XHRMb2cuaW5mbyhcIlRoZXJlIHdhcyBhbiBlcnJvciB3aXRoIG9uZSBvciBtdWx0aXBsZSB0YWJsZXMgb3IgY2hhcnRzXCIsIG9FcnJvcik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgaXNQYWdlUmVhZHkoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2JJc1BhZ2VSZWFkeTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgd2FpdFBhZ2VSZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdGlmICh0aGlzLmlzUGFnZVJlYWR5KCkpIHtcblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5hdHRhY2hFdmVudE9uY2UoXG5cdFx0XHRcdFx0XCJwYWdlUmVhZHlcIixcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgYXR0YWNoRXZlbnRPbmNlKHNFdmVudElkOiBzdHJpbmcsIG9EYXRhOiBhbnksIGZuRnVuY3Rpb24/OiBGdW5jdGlvbiwgb0xpc3RlbmVyPzogYW55KSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuXHRcdHJldHVybiB0aGlzLl9vRXZlbnRQcm92aWRlci5hdHRhY2hFdmVudE9uY2Uoc0V2ZW50SWQsIG9EYXRhLCBmbkZ1bmN0aW9uIGFzIEZ1bmN0aW9uLCBvTGlzdGVuZXIpO1xuXHR9XG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgYXR0YWNoRXZlbnQoc0V2ZW50SWQ6IHN0cmluZywgb0RhdGE6IGFueSwgZm5GdW5jdGlvbjogRnVuY3Rpb24sIG9MaXN0ZW5lcjogYW55KSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuXHRcdHJldHVybiB0aGlzLl9vRXZlbnRQcm92aWRlci5hdHRhY2hFdmVudChzRXZlbnRJZCwgb0RhdGEsIGZuRnVuY3Rpb24sIG9MaXN0ZW5lcik7XG5cdH1cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyBkZXRhY2hFdmVudChzRXZlbnRJZDogc3RyaW5nLCBmbkZ1bmN0aW9uOiBGdW5jdGlvbikge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcblx0XHRyZXR1cm4gdGhpcy5fb0V2ZW50UHJvdmlkZXIuZGV0YWNoRXZlbnQoc0V2ZW50SWQsIGZuRnVuY3Rpb24pO1xuXHR9XG5cdHByaXZhdGUgcmVnaXN0ZXJDb250YWluZXIob0NvbnRhaW5lcjogTWFuYWdlZE9iamVjdCkge1xuXHRcdHRoaXMuX29Db250YWluZXIgPSBvQ29udGFpbmVyO1xuXHRcdHRoaXMuX2ZuQ29udGFpbmVyRGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVNob3c6ICgpID0+IHtcblx0XHRcdFx0dGhpcy5iU2hvd24gPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5fYklzUGFnZVJlYWR5ID0gZmFsc2U7XG5cdFx0XHR9LFxuXHRcdFx0b25CZWZvcmVIaWRlOiAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuYlNob3duID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuX2JJc1BhZ2VSZWFkeSA9IGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdG9uQWZ0ZXJTaG93OiAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuYlNob3duID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5fY2hlY2tQYWdlUmVhZHkodHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLl9vQ29udGFpbmVyLmFkZEV2ZW50RGVsZWdhdGUodGhpcy5fZm5Db250YWluZXJEZWxlZ2F0ZSk7XG5cdH1cblxuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkluc3RlYWQpXG5cdHB1YmxpYyBpc0NvbnRleHRFeHBlY3RlZCgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cHVibGljIGNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCkge1xuXHRcdGlmICh0aGlzLnBhZ2VSZWFkeVRpbWVyKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQodGhpcy5wYWdlUmVhZHlUaW1lcik7XG5cdFx0fVxuXHRcdHRoaXMucGFnZVJlYWR5VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuX2NoZWNrUGFnZVJlYWR5KCk7XG5cdFx0fSwgMjAwKTtcblx0fVxuXG5cdHB1YmxpYyBfY2hlY2tQYWdlUmVhZHkoYkZyb21OYXY6IGJvb2xlYW4gPSBmYWxzZSkge1xuXHRcdGNvbnN0IGZuVUlVcGRhdGVkID0gKCkgPT4ge1xuXHRcdFx0Ly8gV2FpdCB1bnRpbCB0aGUgVUkgaXMgbm8gbG9uZ2VyIGRpcnR5XG5cdFx0XHRpZiAoIUNvcmUuZ2V0VUlEaXJ0eSgpKSB7XG5cdFx0XHRcdChDb3JlIGFzIENvcmVFeCkuZGV0YWNoRXZlbnQoXCJVSVVwZGF0ZWRcIiwgZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHR0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggPSBmYWxzZTtcblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5fY2hlY2tQYWdlUmVhZHkoKTtcblx0XHRcdFx0fSwgMjApO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHQvLyBJbiBjYXNlIFVJVXBkYXRlIGRvZXMgbm90IGdldCBjYWxsZWQsIGNoZWNrIGlmIFVJIGlzIG5vdCBkaXJ0eSBhbmQgdGhlbiBjYWxsIF9jaGVja1BhZ2VSZWFkeVxuXHRcdGNvbnN0IGNoZWNrVUlVcGRhdGVkID0gKCkgPT4ge1xuXHRcdFx0aWYgKENvcmUuZ2V0VUlEaXJ0eSgpKSB7XG5cdFx0XHRcdHNldFRpbWVvdXQoY2hlY2tVSVVwZGF0ZWQsIDUwMCk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCkge1xuXHRcdFx0XHR0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggPSBmYWxzZTtcblx0XHRcdFx0KENvcmUgYXMgQ29yZUV4KS5kZXRhY2hFdmVudChcIlVJVXBkYXRlZFwiLCBmblVJVXBkYXRlZCk7XG5cdFx0XHRcdHRoaXMuX2NoZWNrUGFnZVJlYWR5KCk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGlmIChcblx0XHRcdHRoaXMuYlNob3duICYmXG5cdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5pc0RhdGFSZWNlaXZlZCgpICE9PSBmYWxzZSAmJlxuXHRcdFx0dGhpcy5iVGFibGVzQ2hhcnRzTG9hZGVkICE9PSBmYWxzZSAmJlxuXHRcdFx0KCF0aGlzLmlzQ29udGV4dEV4cGVjdGVkKCkgfHwgdGhpcy5iSGFzQ29udGV4dCkgLy8gRWl0aGVyIG5vIGNvbnRleHQgaXMgZXhwZWN0ZWQgb3IgdGhlcmUgaXMgb25lXG5cdFx0KSB7XG5cdFx0XHRpZiAodGhpcy5xdWVyeVdhdGNoZXIuaXNEYXRhUmVjZWl2ZWQoKSA9PT0gdHJ1ZSAmJiAhYkZyb21OYXYgJiYgIXRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCAmJiBDb3JlLmdldFVJRGlydHkoKSkge1xuXHRcdFx0XHQvLyBJZiB3ZSByZXF1ZXN0ZWQgZGF0YSB3ZSBnZXQgbm90aWZpZWQgYXMgc29vbiBhcyB0aGUgZGF0YSBhcnJpdmVkLCBzbyBiZWZvcmUgdGhlIG5leHQgcmVuZGVyaW5nIHRpY2tcblx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVzZXREYXRhUmVjZWl2ZWQoKTtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gdHJ1ZTtcblx0XHRcdFx0KENvcmUgYXMgQ29yZUV4KS5hdHRhY2hFdmVudChcIlVJVXBkYXRlZFwiLCBmblVJVXBkYXRlZCk7XG5cdFx0XHRcdHNldFRpbWVvdXQoY2hlY2tVSVVwZGF0ZWQsIDUwMCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHQoIXRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCAmJiBDb3JlLmdldFVJRGlydHkoKSkgfHxcblx0XHRcdFx0dGhpcy5fbmJXYWl0cyAhPT0gMCB8fFxuXHRcdFx0XHRUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSgpID4gMCB8fFxuXHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5pc1NlYXJjaFBlbmRpbmcoKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCA9IHRydWU7XG5cdFx0XHRcdChDb3JlIGFzIENvcmVFeCkuYXR0YWNoRXZlbnQoXCJVSVVwZGF0ZWRcIiwgZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KGNoZWNrVUlVcGRhdGVkLCA1MDApO1xuXHRcdFx0fSBlbHNlIGlmICghdGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoKSB7XG5cdFx0XHRcdC8vIEluIHRoZSBjYXNlIHdlJ3JlIG5vdCB3YWl0aW5nIGZvciBhbnkgZGF0YSAobmF2aWdhdGluZyBiYWNrIHRvIGEgcGFnZSB3ZSBhbHJlYWR5IGhhdmUgbG9hZGVkKVxuXHRcdFx0XHQvLyBqdXN0IHdhaXQgZm9yIGEgZnJhbWUgdG8gZmlyZSB0aGUgZXZlbnQuXG5cdFx0XHRcdHRoaXMuX2JJc1BhZ2VSZWFkeSA9IHRydWU7XG5cdFx0XHRcdHRoaXMuX29FdmVudFByb3ZpZGVyLmZpcmVFdmVudChcInBhZ2VSZWFkeVwiKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFnZVJlYWR5Q29udHJvbGxlckV4dGVuc2lvbjtcbiJdfQ==
@@ -31,15 +31,21 @@ class PageReadyControllerExtension extends ControllerExtension {
31
31
  private bTablesChartsLoaded?: boolean;
32
32
  private pageReadyTimer: NodeJS.Timeout | undefined;
33
33
  private queryWatcher!: DataQueryWatcher;
34
+ private pageReadyTimeoutDefault = 7000;
35
+ private pageReadyTimeoutTimer?: number;
36
+ private pageReadyTimeout?: number;
34
37
 
35
38
  @methodOverride()
36
39
  public onInit() {
37
40
  this._nbWaits = 0;
38
41
  this._oEventProvider = this._oEventProvider ? this._oEventProvider : new EventProvider();
39
- this._oView = (this as any).base.getView();
42
+ this._oView = this.getView();
40
43
  this._oAppComponent = CommonUtils.getAppComponent(this._oView);
41
44
  this._oPageComponent = Component.getOwnerComponentFor(this._oView);
42
45
 
46
+ const manifestContent = this._oAppComponent.getManifest() as any;
47
+ this.pageReadyTimeout = manifestContent["sap.ui5"]?.pageReadyTimeout ?? this.pageReadyTimeoutDefault;
48
+
43
49
  if (this._oPageComponent && this._oPageComponent.attachContainerDefined) {
44
50
  this._oPageComponent.attachContainerDefined((oEvent: Event) => this.registerContainer(oEvent.getParameter("container")));
45
51
  } else {
@@ -47,7 +53,7 @@ class PageReadyControllerExtension extends ControllerExtension {
47
53
  }
48
54
 
49
55
  const oRootControlController = (this._oAppComponent.getRootControl() as View).getController() as any;
50
- const oPlaceholder = oRootControlController.getPlaceholder && oRootControlController.getPlaceholder();
56
+ const oPlaceholder = oRootControlController?.getPlaceholder && oRootControlController.getPlaceholder();
51
57
  if (oPlaceholder?.isPlaceholderDebugEnabled()) {
52
58
  this.attachEvent(
53
59
  "pageReady",
@@ -138,7 +144,16 @@ class PageReadyControllerExtension extends ControllerExtension {
138
144
  }
139
145
 
140
146
  @methodOverride("_routing")
141
- onAfterBinding(oBindingContext: Context) {
147
+ onAfterBinding(oBindingContext?: Context) {
148
+ // In case the page is rebind we need to clear the timer (eg: in FCL, the user can select 2 items successively in the list report)
149
+ if (this.pageReadyTimeoutTimer) {
150
+ clearTimeout(this.pageReadyTimeoutTimer);
151
+ }
152
+ this.pageReadyTimeoutTimer = setTimeout(() => {
153
+ Log.error(`The PageReady Event was not fired within the ${this.pageReadyTimeout} ms timeout . It has been forced.`);
154
+ this._oEventProvider.fireEvent("pageReady");
155
+ }, this.pageReadyTimeout);
156
+
142
157
  if (this._bAfterBindingAlreadyApplied) {
143
158
  return;
144
159
  }
@@ -156,6 +171,8 @@ class PageReadyControllerExtension extends ControllerExtension {
156
171
  "pageReady",
157
172
  null,
158
173
  () => {
174
+ clearTimeout(this.pageReadyTimeoutTimer);
175
+ this.pageReadyTimeoutTimer = undefined;
159
176
  this._bAfterBindingAlreadyApplied = false;
160
177
  this.queryWatcher.reset();
161
178
  },
@@ -67,7 +67,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/formatters/FPMFormatter", "sap/fe/co
67
67
  interfaces: [],
68
68
  controls: [],
69
69
  elements: [],
70
- version: "1.102.7",
70
+ version: "1.102.8",
71
71
  noLibraryCSS: true,
72
72
  extensions: {
73
73
  //Configuration used for rule loading of Support Assistant