@sapui5/sap.fe.controls 1.138.0 → 1.140.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 (65) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/controls/.library +1 -1
  3. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.js +32 -8
  4. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.tsx +42 -9
  5. package/src/sap/fe/controls/easyFilter/innerControls/ValueHelpPreviewFactory.js +22 -2
  6. package/src/sap/fe/controls/easyFilter/innerControls/ValueHelpPreviewFactory.ts +34 -1
  7. package/src/sap/fe/controls/easyFilter/utils.js +47 -2
  8. package/src/sap/fe/controls/easyFilter/utils.ts +49 -1
  9. package/src/sap/fe/controls/inlineEdit/InlineEditIndicator.js +1 -2
  10. package/src/sap/fe/controls/inlineEdit/InlineEditIndicator.tsx +0 -1
  11. package/src/sap/fe/controls/library.js +1 -1
  12. package/src/sap/fe/controls/messagebundle.properties +16 -12
  13. package/src/sap/fe/controls/messagebundle_ar.properties +8 -5
  14. package/src/sap/fe/controls/messagebundle_bg.properties +7 -4
  15. package/src/sap/fe/controls/messagebundle_ca.properties +6 -3
  16. package/src/sap/fe/controls/messagebundle_cnr.properties +6 -3
  17. package/src/sap/fe/controls/messagebundle_cs.properties +7 -4
  18. package/src/sap/fe/controls/messagebundle_cy.properties +9 -6
  19. package/src/sap/fe/controls/messagebundle_da.properties +7 -4
  20. package/src/sap/fe/controls/messagebundle_de.properties +7 -4
  21. package/src/sap/fe/controls/messagebundle_el.properties +8 -5
  22. package/src/sap/fe/controls/messagebundle_en.properties +9 -6
  23. package/src/sap/fe/controls/messagebundle_en_GB.properties +9 -6
  24. package/src/sap/fe/controls/messagebundle_en_US_saprigi.properties +9 -6
  25. package/src/sap/fe/controls/messagebundle_es.properties +8 -5
  26. package/src/sap/fe/controls/messagebundle_es_MX.properties +7 -4
  27. package/src/sap/fe/controls/messagebundle_et.properties +5 -2
  28. package/src/sap/fe/controls/messagebundle_fi.properties +7 -4
  29. package/src/sap/fe/controls/messagebundle_fr.properties +7 -4
  30. package/src/sap/fe/controls/messagebundle_fr_CA.properties +5 -2
  31. package/src/sap/fe/controls/messagebundle_hi.properties +7 -4
  32. package/src/sap/fe/controls/messagebundle_hr.properties +8 -5
  33. package/src/sap/fe/controls/messagebundle_hu.properties +7 -4
  34. package/src/sap/fe/controls/messagebundle_id.properties +7 -4
  35. package/src/sap/fe/controls/messagebundle_it.properties +9 -6
  36. package/src/sap/fe/controls/messagebundle_iw.properties +6 -3
  37. package/src/sap/fe/controls/messagebundle_ja.properties +7 -4
  38. package/src/sap/fe/controls/messagebundle_kk.properties +7 -4
  39. package/src/sap/fe/controls/messagebundle_ko.properties +6 -3
  40. package/src/sap/fe/controls/messagebundle_lt.properties +7 -4
  41. package/src/sap/fe/controls/messagebundle_lv.properties +8 -5
  42. package/src/sap/fe/controls/messagebundle_mk.properties +7 -4
  43. package/src/sap/fe/controls/messagebundle_ms.properties +8 -5
  44. package/src/sap/fe/controls/messagebundle_nl.properties +7 -4
  45. package/src/sap/fe/controls/messagebundle_no.properties +6 -3
  46. package/src/sap/fe/controls/messagebundle_pl.properties +7 -4
  47. package/src/sap/fe/controls/messagebundle_pt.properties +7 -4
  48. package/src/sap/fe/controls/messagebundle_pt_PT.properties +7 -4
  49. package/src/sap/fe/controls/messagebundle_ro.properties +8 -5
  50. package/src/sap/fe/controls/messagebundle_ru.properties +6 -3
  51. package/src/sap/fe/controls/messagebundle_sh.properties +6 -3
  52. package/src/sap/fe/controls/messagebundle_sk.properties +6 -3
  53. package/src/sap/fe/controls/messagebundle_sl.properties +8 -5
  54. package/src/sap/fe/controls/messagebundle_sr.properties +6 -3
  55. package/src/sap/fe/controls/messagebundle_sv.properties +6 -3
  56. package/src/sap/fe/controls/messagebundle_th.properties +6 -3
  57. package/src/sap/fe/controls/messagebundle_tr.properties +7 -4
  58. package/src/sap/fe/controls/messagebundle_uk.properties +6 -3
  59. package/src/sap/fe/controls/messagebundle_vi.properties +8 -5
  60. package/src/sap/fe/controls/messagebundle_zh_CN.properties +5 -2
  61. package/src/sap/fe/controls/messagebundle_zh_TW.properties +7 -4
  62. package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.js +38 -3
  63. package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.tsx +37 -2
  64. package/src/sap/fe/controls/shortcuts/popup/ShortcutTool.js +8 -1
  65. package/src/sap/fe/controls/shortcuts/popup/ShortcutTool.tsx +5 -0
@@ -134,6 +134,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/controls/easyF
134
134
  type
135
135
  } = token?.getCustomDataValue("TokenInfo");
136
136
  const key = token?.getKey();
137
+ const oldSelectedValues = token?.getItems();
137
138
  const valueHelpPromise = new Promise((resolve, reject) => {
138
139
  this.getEasyFilter()?.fireEvent("showValueHelp", {
139
140
  key,
@@ -154,7 +155,9 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/controls/easyF
154
155
  });
155
156
  try {
156
157
  const newSelectedValues = await valueHelpPromise;
157
- this.getEasyFilter()?.updateTokenArray("setSelectedValues", newSelectedValues, key);
158
+ if (!this.areTokenArraysEqual(oldSelectedValues, newSelectedValues)) {
159
+ this.getEasyFilter()?.updateTokenArray("setSelectedValues", newSelectedValues, key);
160
+ }
158
161
  } catch (error) {
159
162
  if (error instanceof Error) {
160
163
  Log.error("Error while fetching new tokens", error.message);
@@ -163,6 +166,23 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/controls/easyF
163
166
  }
164
167
  }
165
168
  };
169
+ _proto.normalizeTokenArray = function normalizeTokenArray(tokenArray) {
170
+ return tokenArray.flatMap(tokenItem => tokenItem.selectedValues.map(selected => ({
171
+ operator: tokenItem.operator,
172
+ value: selected.value
173
+ })));
174
+ };
175
+ _proto.areTokenArraysEqual = function areTokenArraysEqual(oldTokenArray, newTokenArray) {
176
+ const normalizedFirst = this.normalizeTokenArray(oldTokenArray).sort((a, b) => a.value.localeCompare(b.value));
177
+ const normalizedSecond = this.normalizeTokenArray(newTokenArray).sort((a, b) => a.value.localeCompare(b.value));
178
+ if (normalizedFirst.length === normalizedSecond.length) {
179
+ return normalizedFirst.every((item, index) => {
180
+ const secondItem = normalizedSecond[index];
181
+ return item.operator === secondItem.operator && item.value === secondItem.value;
182
+ });
183
+ }
184
+ return false;
185
+ };
166
186
  _proto.invokePopupCloseHandler = function invokePopupCloseHandler() {
167
187
  //Whatever has been deleted, make them appear again so that they can be visible as soon as you click the token again
168
188
  this.getControl()?.getItems().forEach(item => item.setVisible(true));
@@ -171,4 +191,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/controls/easyF
171
191
  }(BaseFactory);
172
192
  return ValueHelpPreviewFactory;
173
193
  }, false);
174
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWYWx1ZUhlbHBQcmV2aWV3RmFjdG9yeSIsIl9CYXNlRmFjdG9yeSIsIkVGQiIsInRva2VuIiwiX3RoaXMiLCJjYWxsIiwic2V0Q29udHJvbCIsIkxpc3QiLCJkZWxldGUiLCJvbkRlbGV0ZSIsImJpbmQiLCJtb2RlIiwiTGlzdE1vZGUiLCJEZWxldGUiLCJzaG93U2VwYXJhdG9ycyIsIkxpc3RTZXBhcmF0b3JzIiwiTm9uZSIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0SXRlbXMiLCJpdGVtcyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJVdGlscyIsImFyZUl0ZW1zU2FtZSIsImxpc3QiLCJnZXRDb250cm9sIiwiZGVzdHJveUFnZ3JlZ2F0aW9uIiwiZm9yRWFjaCIsIml0ZW0iLCJpbmRleDEiLCJvcGVyYXRvciIsInNlbGVjdGVkVmFsdWVzIiwidGl0bGUiLCJpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyIsIm1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yIiwiaW5zZXJ0SXRlbSIsInNlbGVjdGVkVmFsdWUiLCJpbmRleDIiLCJtYXBPcGVyYXRvckZvclZhbHVlSGVscCIsIm1hcE9wZXJhdG9yIiwiaW5kZXhQb3NpdGlvbnMiLCJhZGRJdGVtIiwiU3RhbmRhcmRMaXN0SXRlbSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwia2V5IiwidmFsdWUiLCJldmVudCIsInBvcG92ZXIiLCJnZXRUb2tlbiIsImdldEN1c3RvbURhdGFWYWx1ZSIsImdldFBhcmFtZXRlciIsInNldFZpc2libGUiLCJmb2N1cyIsIm5vcm1hbGl6ZVN0cmluZyIsInN0ciIsInJlZ2V4IiwicmVwbGFjZSIsImludm9rZU9rQnV0dG9uSGFuZGxlciIsImVhc3lGaWx0ZXJCYXJDb250YWluZXIiLCJnZXRFYXN5RmlsdGVyIiwiZ2V0SXRlbXMiLCJtYXAiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJkZWVwQ2xvbmUiLCJpbmRpY2VzVG9CZVJlbW92ZWQiLCJsaXN0SXRlbSIsImdldFZpc2libGUiLCJJbmZpbml0eSIsImdldEN1c3RvbURhdGEiLCJmaW5kIiwiZGF0YSIsImdldEtleSIsImdldFZhbHVlIiwicHVzaCIsInNvcnQiLCJhIiwiYiIsIl9yZWYiLCJvYmpJbmRleCIsInZhbHVlSW5kZXgiLCJzcGxpY2UiLCJsZW5ndGgiLCJ1cGRhdGVUb2tlbkFycmF5IiwiY2xvc2UiLCJpbnZva2VTaG93QWxsQnV0dG9uSGFuZGxlciIsInR5cGUiLCJ2YWx1ZUhlbHBQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmaXJlRXZlbnQiLCJ2YWx1ZXMiLCJuZXdTZWxlY3RlZFZhbHVlcyIsImVycm9yIiwiRXJyb3IiLCJMb2ciLCJtZXNzYWdlIiwiU3RyaW5nIiwiaW52b2tlUG9wdXBDbG9zZUhhbmRsZXIiLCJCYXNlRmFjdG9yeSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmFsdWVIZWxwUHJldmlld0ZhY3RvcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgZGVlcENsb25lIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBDbG9uZVwiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IEJhc2VGYWN0b3J5IH0gZnJvbSBcInNhcC9mZS9jb250cm9scy9lYXN5RmlsdGVyL2lubmVyQ29udHJvbHMvQmFzZUZhY3RvcnlcIjtcbmltcG9ydCBVdGlscyBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvdXRpbHNcIjtcbmltcG9ydCBMaXN0IGZyb20gXCJzYXAvbS9MaXN0XCI7XG5pbXBvcnQgdHlwZSB7IExpc3RCYXNlJERlbGV0ZUV2ZW50IH0gZnJvbSBcInNhcC9tL0xpc3RCYXNlXCI7XG5pbXBvcnQgdHlwZSBQb3BvdmVyIGZyb20gXCJzYXAvbS9Qb3BvdmVyXCI7XG5pbXBvcnQgU3RhbmRhcmRMaXN0SXRlbSBmcm9tIFwic2FwL20vU3RhbmRhcmRMaXN0SXRlbVwiO1xuaW1wb3J0IHsgTGlzdE1vZGUsIExpc3RTZXBhcmF0b3JzIH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgdHlwZSBFYXN5RmlsdGVyQmFyQ29udGFpbmVyIGZyb20gXCIuLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0Q29kZUxpc3RUeXBlLFxuXHRUb2tlbkRlZmluaXRpb24sXG5cdFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uLFxuXHRUb2tlblR5cGUsXG5cdFZhbHVlSGVscEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0VmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uXG59IGZyb20gXCIuLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBFYXN5RmlsdGVyVG9rZW4gZnJvbSBcIi4uL1Rva2VuXCI7XG5cbmNsYXNzIFZhbHVlSGVscFByZXZpZXdGYWN0b3J5IGV4dGVuZHMgQmFzZUZhY3Rvcnk8TGlzdD4ge1xuXHRjb25zdHJ1Y3RvcihFRkI6IEVuaGFuY2VXaXRoVUk1PEVhc3lGaWx0ZXJCYXJDb250YWluZXI+LCB0b2tlbjogRW5oYW5jZVdpdGhVSTU8RWFzeUZpbHRlclRva2VuPikge1xuXHRcdHN1cGVyKEVGQiwgdG9rZW4pO1xuXHRcdHRoaXMuc2V0Q29udHJvbChcblx0XHRcdG5ldyBMaXN0KHtcblx0XHRcdFx0ZGVsZXRlOiB0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyksXG5cdFx0XHRcdG1vZGU6IExpc3RNb2RlLkRlbGV0ZSxcblx0XHRcdFx0c2hvd1NlcGFyYXRvcnM6IExpc3RTZXBhcmF0b3JzLk5vbmVcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdHNldEl0ZW1zKFxuXHRcdGl0ZW1zOiBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10sXG5cdFx0dG9rZW5UeXBlOiBUb2tlblR5cGUsXG5cdFx0aXNEYXRlVGltZU9mZnNldDogYm9vbGVhblxuXHQpOiB2b2lkIHtcblx0XHRpZiAoVXRpbHMuYXJlSXRlbXNTYW1lKGl0ZW1zLCB0aGlzLml0ZW1zIGFzIFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLml0ZW1zID0gaXRlbXM7XG5cdFx0Y29uc3QgbGlzdCA9IHRoaXMuZ2V0Q29udHJvbCgpO1xuXHRcdGxpc3Q/LmRlc3Ryb3lBZ2dyZWdhdGlvbihcIml0ZW1zXCIpO1xuXHRcdGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4MSkgPT4ge1xuXHRcdFx0Y29uc3QgeyBvcGVyYXRvciwgc2VsZWN0ZWRWYWx1ZXMgfSA9IGl0ZW07XG5cdFx0XHRsZXQgdGl0bGUgPSBcIlwiO1xuXHRcdFx0aWYgKHRva2VuVHlwZSA9PT0gXCJWYWx1ZUhlbHBcIikge1xuXHRcdFx0XHRpZiAoVXRpbHMuaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3IpKSB7XG5cdFx0XHRcdFx0dGl0bGUgPSBVdGlscy5tYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcihcblx0XHRcdFx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXMgYXMgVmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRcdFx0XHRcdFx0dG9rZW5UeXBlLFxuXHRcdFx0XHRcdFx0aXNEYXRlVGltZU9mZnNldFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dGhpcy5pbnNlcnRJdGVtKGxpc3QgYXMgTGlzdCwgdGl0bGUsIFtpbmRleDFdKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZWxlY3RlZFZhbHVlcy5mb3JFYWNoKChzZWxlY3RlZFZhbHVlLCBpbmRleDIpID0+IHtcblx0XHRcdFx0XHRcdHRpdGxlID0gVXRpbHMubWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAob3BlcmF0b3IsIHNlbGVjdGVkVmFsdWUgYXMgQ29kZUxpc3RUeXBlLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHRcdFx0XHRcdFx0dGhpcy5pbnNlcnRJdGVtKGxpc3QgYXMgTGlzdCwgdGl0bGUsIFtpbmRleDEsIGluZGV4Ml0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoVXRpbHMuaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3IpKSB7XG5cdFx0XHRcdFx0dGl0bGUgPSBVdGlscy5tYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcihcblx0XHRcdFx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXMgYXMgQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRcdFx0XHRcdFx0dG9rZW5UeXBlLFxuXHRcdFx0XHRcdFx0aXNEYXRlVGltZU9mZnNldFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0Ly9JbiB0aGlzIGNhc2UsIHdlIGRvbid0IG5lZWQgdCB0byBzdG9yZSBpbmRleDIsIGJlY2F1c2Ugd2Uga25vdyB0aGF0IExMTSBvciBWSEQgYWx3YXlzIGdpdmVzIHlvdSBvbmx5IDIgdmFsdWVzIGluIHJldHVyblxuXHRcdFx0XHRcdHRoaXMuaW5zZXJ0SXRlbShsaXN0IGFzIExpc3QsIHRpdGxlLCBbaW5kZXgxXSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgoc2VsZWN0ZWRWYWx1ZSwgaW5kZXgyKSA9PiB7XG5cdFx0XHRcdFx0XHR0aXRsZSA9IFV0aWxzLm1hcE9wZXJhdG9yKG9wZXJhdG9yLCBzZWxlY3RlZFZhbHVlIGFzIHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgfCBEYXRlLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHRcdFx0XHRcdFx0Ly9XZSBuZWVkIHRvIHN0b3JlIGluZGV4MiB0byBmaW5kIG91dCB3aGljaCBpdGVtIGhhcyBiZWVuIHJlbW92ZWQgaW5zaWRlIHRoZSBhcnJheVxuXHRcdFx0XHRcdFx0dGhpcy5pbnNlcnRJdGVtKGxpc3QgYXMgTGlzdCwgdGl0bGUsIFtpbmRleDEsIGluZGV4Ml0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRpbnNlcnRJdGVtKGxpc3Q6IExpc3QsIHRpdGxlOiBzdHJpbmcsIGluZGV4UG9zaXRpb25zOiBudW1iZXJbXSk6IHZvaWQge1xuXHRcdGxpc3Q/LmFkZEl0ZW0oXG5cdFx0XHRuZXcgU3RhbmRhcmRMaXN0SXRlbSh7XG5cdFx0XHRcdHRpdGxlLFxuXHRcdFx0XHRjdXN0b21EYXRhOiBuZXcgQ3VzdG9tRGF0YSh7XG5cdFx0XHRcdFx0a2V5OiBcImFycmF5SW5kZXhcIixcblx0XHRcdFx0XHR2YWx1ZTogaW5kZXhQb3NpdGlvbnNcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdG9uRGVsZXRlKGV2ZW50OiBMaXN0QmFzZSREZWxldGVFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IHBvcG92ZXIgPSB0aGlzLmdldFRva2VuKCk/LmdldEN1c3RvbURhdGFWYWx1ZShcInBvcG92ZXJcIikgYXMgUG9wb3Zlcjtcblx0XHRldmVudC5nZXRQYXJhbWV0ZXIoXCJsaXN0SXRlbVwiKT8uc2V0VmlzaWJsZShmYWxzZSk7XG5cdFx0cG9wb3Zlci5mb2N1cygpO1xuXHR9XG5cblx0bm9ybWFsaXplU3RyaW5nKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRjb25zdCByZWdleCA9IC9eKD49fDw9fCE9fD58PCkrLztcblx0XHRyZXR1cm4gc3RyLnJlcGxhY2UocmVnZXgsIFwiXCIpO1xuXHR9XG5cblx0aW52b2tlT2tCdXR0b25IYW5kbGVyKCk6IHZvaWQge1xuXHRcdGNvbnN0IHBvcG92ZXIgPSB0aGlzLmdldFRva2VuKCk/LmdldEN1c3RvbURhdGFWYWx1ZShcInBvcG92ZXJcIikgYXMgUG9wb3Zlcjtcblx0XHRjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcblx0XHRjb25zdCBlYXN5RmlsdGVyQmFyQ29udGFpbmVyID0gdGhpcy5nZXRFYXN5RmlsdGVyKCkgYXMgRWFzeUZpbHRlckJhckNvbnRhaW5lcjtcblx0XHRjb25zdCBpdGVtcyA9IHRva2VuPy5nZXRJdGVtcygpPy5tYXAoKGl0ZW0pID0+ICh7XG5cdFx0XHRvcGVyYXRvcjogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtLm9wZXJhdG9yKSksIC8vIERlZXAgY29weSBvZiBvcGVyYXRvclxuXHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IGRlZXBDbG9uZShpdGVtLnNlbGVjdGVkVmFsdWVzKSAvLyBEZWVwIGNvcHkgb2Ygc2VsZWN0ZWRWYWx1ZXMsIGlmIGl0cyBhIGNvbXBsZXggb2JqZWN0XG5cdFx0fSkpO1xuXHRcdGNvbnN0IGluZGljZXNUb0JlUmVtb3ZlZDogbnVtYmVyW11bXSA9IFtdO1xuXHRcdHRoaXMuZ2V0Q29udHJvbCgpXG5cdFx0XHQ/LmdldEl0ZW1zKClcblx0XHRcdC5mb3JFYWNoKChsaXN0SXRlbSkgPT4ge1xuXHRcdFx0XHQvL0lmIHRoZSBpdGVtIGlzIGhpZGRlbiB0aGF0IG1lYW5zIGl0IHNob3VsZCBiZSByZW1vdmVkIGNvbXBsZXRlbHlcblx0XHRcdFx0aWYgKCFsaXN0SXRlbS5nZXRWaXNpYmxlKCkpIHtcblx0XHRcdFx0XHRjb25zdCBbaW5kZXgxID0gSW5maW5pdHksIGluZGV4MiA9IEluZmluaXR5XSA9XG5cdFx0XHRcdFx0XHQobGlzdEl0ZW1cblx0XHRcdFx0XHRcdFx0Py5nZXRDdXN0b21EYXRhKClcblx0XHRcdFx0XHRcdFx0Py5maW5kKChkYXRhKSA9PiBkYXRhPy5nZXRLZXkoKSA9PT0gXCJhcnJheUluZGV4XCIpXG5cdFx0XHRcdFx0XHRcdD8uZ2V0VmFsdWUoKSBhcyBudW1iZXJbXSkgPz8gW107XG5cdFx0XHRcdFx0aWYgKGluZGV4MSA9PT0gSW5maW5pdHkgfHwgIWl0ZW1zKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGluZGljZXNUb0JlUmVtb3ZlZC5wdXNoKFtpbmRleDEsIGluZGV4Ml0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdC8qXG5cdFx0V2l0aG91dCBzb3J0aW5nIGluIGRlc2NlbmRpbmcgb3JkZXI6XG5cblx0XHRSZW1vdmluZyBhbiBvYmplY3Qgd291bGQgc2hpZnQgYWxsIHN1YnNlcXVlbnQgaW5kaWNlcywgcG90ZW50aWFsbHkgY2F1c2luZyBpbmNvcnJlY3QgcmVtb3ZhbHMgb3Igc2tpcHMuXG5cdFx0UmVtb3ZpbmcgdmFsdWVzIGZyb20gc2VsZWN0ZWRWYWx1ZXMgY291bGQgc2hpZnQgb3RoZXIgdmFsdWVzLCByZXN1bHRpbmcgaW4gbWlzc2VkIG9yIHVuaW50ZW5kZWQgcmVtb3ZhbHMuXG5cdFx0VGhpcyBhcHByb2FjaCBlbnN1cmVzIHRoYXQgZWFjaCByZW1vdmFsIG9wZXJhdGVzIG9uIHN0YWJsZSwgY29ycmVjdCBpbmRpY2VzLlxuXG5cdFx0VGhpcyBpcyB0aGUgcmVhc29uIHdoeSB3ZSBoYXZlIGFkZGVkIHZhbHVlSW5kZXggdG8gaW5maW5pdHlcblx0XHRJbmZpbml0eSBpcyBncmVhdGVyIHRoYW4gYW55IHZhbGlkIGluZGV4LCBzbyBzb3J0aW5nIGluIGRlc2NlbmRpbmcgb3JkZXIgd2lsbCBuYXR1cmFsbHkgcGxhY2UgZW50cmllcyB3aXRoIHZhbHVlSW5kZXggPSBJbmZpbml0eSBhdCB0aGUgdG9wIGZvciBlYWNoIG9iakluZGV4LlxuXHRcdFRoaXMgd2F5LCB3ZSBjYW4gcHJvY2VzcyB0aGUgY29tcGxldGUgcmVtb3ZhbCBvZiBhbiBvYmplY3QgYmVmb3JlIGhhbmRsaW5nIGFueSBpbmRpdmlkdWFsIHNlbGVjdGVkVmFsdWVzIHJlbW92YWxzIHdpdGhpbiB0aGF0IG9iamVjdCwgcHJldmVudGluZyB1bndhbnRlZCBzaGlmdHMuXG5cdFx0ICovXG5cdFx0aW5kaWNlc1RvQmVSZW1vdmVkLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdIHx8IGJbMV0gLSBhWzFdKTtcblxuXHRcdGluZGljZXNUb0JlUmVtb3ZlZC5mb3JFYWNoKChbb2JqSW5kZXgsIHZhbHVlSW5kZXhdKSA9PiB7XG5cdFx0XHRpZiAoaXRlbXMpIHtcblx0XHRcdFx0Ly9JZiB2YWx1ZUluZGV4IGlzIGluZmluaXR5LCB0aGVuIGl0IG1lYW5zIGl0IHNob3VsZCBiZSBhIGJldHdlZW4gb3BlcmF0b3Igc2NlbmFyaW8sIHNvIHJlbW92ZSB0aGUgdG90YWwgb2JqZWN0IG9ubHlcblx0XHRcdFx0aWYgKHZhbHVlSW5kZXggPT09IEluZmluaXR5KSB7XG5cdFx0XHRcdFx0aXRlbXMuc3BsaWNlKG9iakluZGV4LCAxKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aXRlbXNbb2JqSW5kZXhdLnNlbGVjdGVkVmFsdWVzLnNwbGljZSh2YWx1ZUluZGV4LCAxKTtcblx0XHRcdFx0Ly8gSWYgdGhlIHZhbHVlcyBhcnJheSBiZWNvbWVzIGVtcHR5LCByZW1vdmUgdGhlIHdob2xlIG9iamVjdFxuXHRcdFx0XHRpZiAoaXRlbXNbb2JqSW5kZXhdLnNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdGl0ZW1zLnNwbGljZShvYmpJbmRleCwgMSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHRlYXN5RmlsdGVyQmFyQ29udGFpbmVyLnVwZGF0ZVRva2VuQXJyYXkoXG5cdFx0XHRcInNldFNlbGVjdGVkVmFsdWVzXCIsXG5cdFx0XHRpdGVtcyBhcyBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10sXG5cdFx0XHR0b2tlbj8uZ2V0S2V5KCkgYXMgc3RyaW5nXG5cdFx0KTtcblx0XHRwb3BvdmVyLmNsb3NlKCk7XG5cdH1cblxuXHRhc3luYyBpbnZva2VTaG93QWxsQnV0dG9uSGFuZGxlcigpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcblx0XHRjb25zdCB7IHR5cGUgfSA9IHRva2VuPy5nZXRDdXN0b21EYXRhVmFsdWUoXCJUb2tlbkluZm9cIikgYXMgVG9rZW5EZWZpbml0aW9uO1xuXHRcdGNvbnN0IGtleSA9IHRva2VuPy5nZXRLZXkoKSBhcyBzdHJpbmc7XG5cdFx0Y29uc3QgdmFsdWVIZWxwUHJvbWlzZSA9IG5ldyBQcm9taXNlPFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdHRoaXMuZ2V0RWFzeUZpbHRlcigpPy5maXJlRXZlbnQoXCJzaG93VmFsdWVIZWxwXCIsIHtcblx0XHRcdFx0a2V5LFxuXHRcdFx0XHR2YWx1ZXM6IHRva2VuPy5nZXRJdGVtcygpPy5tYXAoKGl0ZW06IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHR5cGUgPT09IFwiVmFsdWVIZWxwXCIpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdG9wZXJhdG9yOiBpdGVtLm9wZXJhdG9yLFxuXHRcdFx0XHRcdFx0XHQvL01ha2luZyBzdXJlIHRoYXQgb25seSB0aGUgaWQgcGFydCBpcyBwYXNzZWRcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IChpdGVtIGFzIFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbikuc2VsZWN0ZWRWYWx1ZXMubWFwKFxuXHRcdFx0XHRcdFx0XHRcdChzZWxlY3RlZFZhbHVlKSA9PiBzZWxlY3RlZFZhbHVlLnZhbHVlXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBpdGVtO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHJlc29sdmUsXG5cdFx0XHRcdHJlamVjdFxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBhd2FpdCB2YWx1ZUhlbHBQcm9taXNlO1xuXHRcdFx0dGhpcy5nZXRFYXN5RmlsdGVyKCk/LnVwZGF0ZVRva2VuQXJyYXkoXCJzZXRTZWxlY3RlZFZhbHVlc1wiLCBuZXdTZWxlY3RlZFZhbHVlcywga2V5KTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0aWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgZmV0Y2hpbmcgbmV3IHRva2Vuc1wiLCBlcnJvci5tZXNzYWdlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIGZldGNoaW5nIG5ldyB0b2tlbnNcIiwgU3RyaW5nKGVycm9yKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aW52b2tlUG9wdXBDbG9zZUhhbmRsZXIoKTogdm9pZCB7XG5cdFx0Ly9XaGF0ZXZlciBoYXMgYmVlbiBkZWxldGVkLCBtYWtlIHRoZW0gYXBwZWFyIGFnYWluIHNvIHRoYXQgdGhleSBjYW4gYmUgdmlzaWJsZSBhcyBzb29uIGFzIHlvdSBjbGljayB0aGUgdG9rZW4gYWdhaW5cblx0XHR0aGlzLmdldENvbnRyb2woKVxuXHRcdFx0Py5nZXRJdGVtcygpXG5cdFx0XHQuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5zZXRWaXNpYmxlKHRydWUpKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBWYWx1ZUhlbHBQcmV2aWV3RmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O01BdUJNQSx1QkFBdUIsMEJB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eUUsTUFBTSxDQUFDLENBQVc7TUFDckMsTUFBTWUsZ0JBQWdCLEdBQUcsSUFBSUMsT0FBTyxDQUFrQyxDQUFDQyxPQUFPLEVBQUVDLE1BQU0sS0FBSztRQUMxRixJQUFJLENBQUNoQyxhQUFhLENBQUMsQ0FBQyxFQUFFaUMsU0FBUyxDQUFDLGVBQWUsRUFBRTtVQUNoRGhELEdBQUc7VUFDSGlELE1BQU0sRUFBRTdGLEtBQUssRUFBRTRELFFBQVEsQ0FBQyxDQUFDLEVBQUVDLEdBQUcsQ0FBRWxDLElBQXVFLElBQUs7WUFDM0csSUFBSTRELElBQUksS0FBSyxXQUFXLEVBQUU7Y0FDekIsT0FBTztnQkFDTjFELFFBQVEsRUFBRUYsSUFBSSxDQUFDRSxRQUFRO2dCQUN2QjtnQkFDQUMsY0FBYyxFQUFHSCxJQUFJLENBQXVDRyxjQUFjLENBQUMrQixHQUFHLENBQzVFMUIsYUFBYSxJQUFLQSxhQUFhLENBQUNVLEtBQ2xDO2NBQ0QsQ0FBQztZQUNGLENBQUMsTUFBTTtjQUNOLE9BQU9sQixJQUFJO1lBQ1o7VUFDRCxDQUFDLENBQUM7VUFDRitELE9BQU87VUFDUEM7UUFDRCxDQUFDLENBQUM7TUFDSCxDQUFDLENBQUM7TUFFRixJQUFJO1FBQ0gsTUFBTUcsaUJBQWlCLEdBQUcsTUFBTU4sZ0JBQWdCO1FBQ2hELElBQUksQ0FBQzdCLGFBQWEsQ0FBQyxDQUFDLEVBQUV5QixnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRVUsaUJBQWlCLEVBQUVsRCxHQUFHLENBQUM7TUFDcEYsQ0FBQyxDQUFDLE9BQU9tRCxLQUFLLEVBQUU7UUFDZixJQUFJQSxLQUFLLFlBQVlDLEtBQUssRUFBRTtVQUMzQkMsR0FBRyxDQUFDRixLQUFLLENBQUMsaUNBQWlDLEVBQUVBLEtBQUssQ0FBQ0csT0FBTyxDQUFDO1FBQzVELENBQUMsTUFBTTtVQUNORCxHQUFHLENBQUNGLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRUksTUFBTSxDQUFDSixLQUFLLENBQUMsQ0FBQztRQUM1RDtNQUNEO0lBQ0QsQ0FBQztJQUFBaEYsTUFBQSxDQUVEcUYsdUJBQXVCLEdBQXZCLFNBQUFBLHVCQUF1QkEsQ0FBQSxFQUFTO01BQy9CO01BQ0EsSUFBSSxDQUFDNUUsVUFBVSxDQUFDLENBQUMsRUFDZG9DLFFBQVEsQ0FBQyxDQUFDLENBQ1hsQyxPQUFPLENBQUVDLElBQUksSUFBS0EsSUFBSSxDQUFDd0IsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFBQSxPQUFBdEQsdUJBQUE7RUFBQSxFQTVMb0N3RyxXQUFXO0VBQUEsT0ErTGxDeEcsdUJBQXVCO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
194
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWYWx1ZUhlbHBQcmV2aWV3RmFjdG9yeSIsIl9CYXNlRmFjdG9yeSIsIkVGQiIsInRva2VuIiwiX3RoaXMiLCJjYWxsIiwic2V0Q29udHJvbCIsIkxpc3QiLCJkZWxldGUiLCJvbkRlbGV0ZSIsImJpbmQiLCJtb2RlIiwiTGlzdE1vZGUiLCJEZWxldGUiLCJzaG93U2VwYXJhdG9ycyIsIkxpc3RTZXBhcmF0b3JzIiwiTm9uZSIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0SXRlbXMiLCJpdGVtcyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJVdGlscyIsImFyZUl0ZW1zU2FtZSIsImxpc3QiLCJnZXRDb250cm9sIiwiZGVzdHJveUFnZ3JlZ2F0aW9uIiwiZm9yRWFjaCIsIml0ZW0iLCJpbmRleDEiLCJvcGVyYXRvciIsInNlbGVjdGVkVmFsdWVzIiwidGl0bGUiLCJpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyIsIm1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yIiwiaW5zZXJ0SXRlbSIsInNlbGVjdGVkVmFsdWUiLCJpbmRleDIiLCJtYXBPcGVyYXRvckZvclZhbHVlSGVscCIsIm1hcE9wZXJhdG9yIiwiaW5kZXhQb3NpdGlvbnMiLCJhZGRJdGVtIiwiU3RhbmRhcmRMaXN0SXRlbSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwia2V5IiwidmFsdWUiLCJldmVudCIsInBvcG92ZXIiLCJnZXRUb2tlbiIsImdldEN1c3RvbURhdGFWYWx1ZSIsImdldFBhcmFtZXRlciIsInNldFZpc2libGUiLCJmb2N1cyIsIm5vcm1hbGl6ZVN0cmluZyIsInN0ciIsInJlZ2V4IiwicmVwbGFjZSIsImludm9rZU9rQnV0dG9uSGFuZGxlciIsImVhc3lGaWx0ZXJCYXJDb250YWluZXIiLCJnZXRFYXN5RmlsdGVyIiwiZ2V0SXRlbXMiLCJtYXAiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJkZWVwQ2xvbmUiLCJpbmRpY2VzVG9CZVJlbW92ZWQiLCJsaXN0SXRlbSIsImdldFZpc2libGUiLCJJbmZpbml0eSIsImdldEN1c3RvbURhdGEiLCJmaW5kIiwiZGF0YSIsImdldEtleSIsImdldFZhbHVlIiwicHVzaCIsInNvcnQiLCJhIiwiYiIsIl9yZWYiLCJvYmpJbmRleCIsInZhbHVlSW5kZXgiLCJzcGxpY2UiLCJsZW5ndGgiLCJ1cGRhdGVUb2tlbkFycmF5IiwiY2xvc2UiLCJpbnZva2VTaG93QWxsQnV0dG9uSGFuZGxlciIsInR5cGUiLCJvbGRTZWxlY3RlZFZhbHVlcyIsInZhbHVlSGVscFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZpcmVFdmVudCIsInZhbHVlcyIsIm5ld1NlbGVjdGVkVmFsdWVzIiwiYXJlVG9rZW5BcnJheXNFcXVhbCIsImVycm9yIiwiRXJyb3IiLCJMb2ciLCJtZXNzYWdlIiwiU3RyaW5nIiwibm9ybWFsaXplVG9rZW5BcnJheSIsInRva2VuQXJyYXkiLCJmbGF0TWFwIiwidG9rZW5JdGVtIiwic2VsZWN0ZWQiLCJvbGRUb2tlbkFycmF5IiwibmV3VG9rZW5BcnJheSIsIm5vcm1hbGl6ZWRGaXJzdCIsImxvY2FsZUNvbXBhcmUiLCJub3JtYWxpemVkU2Vjb25kIiwiZXZlcnkiLCJpbmRleCIsInNlY29uZEl0ZW0iLCJpbnZva2VQb3B1cENsb3NlSGFuZGxlciIsIkJhc2VGYWN0b3J5Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJWYWx1ZUhlbHBQcmV2aWV3RmFjdG9yeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBkZWVwQ2xvbmUgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcENsb25lXCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgQmFzZUZhY3RvcnkgfSBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvaW5uZXJDb250cm9scy9CYXNlRmFjdG9yeVwiO1xuaW1wb3J0IFV0aWxzIGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci91dGlsc1wiO1xuaW1wb3J0IExpc3QgZnJvbSBcInNhcC9tL0xpc3RcIjtcbmltcG9ydCB0eXBlIHsgTGlzdEJhc2UkRGVsZXRlRXZlbnQgfSBmcm9tIFwic2FwL20vTGlzdEJhc2VcIjtcbmltcG9ydCB0eXBlIFBvcG92ZXIgZnJvbSBcInNhcC9tL1BvcG92ZXJcIjtcbmltcG9ydCBTdGFuZGFyZExpc3RJdGVtIGZyb20gXCJzYXAvbS9TdGFuZGFyZExpc3RJdGVtXCI7XG5pbXBvcnQgeyBMaXN0TW9kZSwgTGlzdFNlcGFyYXRvcnMgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCB0eXBlIEVhc3lGaWx0ZXJCYXJDb250YWluZXIgZnJvbSBcIi4uL0Vhc3lGaWx0ZXJCYXJDb250YWluZXJcIjtcbmltcG9ydCB0eXBlIHtcblx0QmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRDb2RlTGlzdFR5cGUsXG5cdFRva2VuRGVmaW5pdGlvbixcblx0VG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24sXG5cdFRva2VuVHlwZSxcblx0VmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25cbn0gZnJvbSBcIi4uL0Vhc3lGaWx0ZXJCYXJDb250YWluZXJcIjtcbmltcG9ydCB0eXBlIEVhc3lGaWx0ZXJUb2tlbiBmcm9tIFwiLi4vVG9rZW5cIjtcbnR5cGUgTm9ybWFsaXplZFBhaXIgPSB7XG5cdG9wZXJhdG9yOiBzdHJpbmc7XG5cdHZhbHVlOiBzdHJpbmc7XG59O1xuXG5jbGFzcyBWYWx1ZUhlbHBQcmV2aWV3RmFjdG9yeSBleHRlbmRzIEJhc2VGYWN0b3J5PExpc3Q+IHtcblx0Y29uc3RydWN0b3IoRUZCOiBFbmhhbmNlV2l0aFVJNTxFYXN5RmlsdGVyQmFyQ29udGFpbmVyPiwgdG9rZW46IEVuaGFuY2VXaXRoVUk1PEVhc3lGaWx0ZXJUb2tlbj4pIHtcblx0XHRzdXBlcihFRkIsIHRva2VuKTtcblx0XHR0aGlzLnNldENvbnRyb2woXG5cdFx0XHRuZXcgTGlzdCh7XG5cdFx0XHRcdGRlbGV0ZTogdGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpLFxuXHRcdFx0XHRtb2RlOiBMaXN0TW9kZS5EZWxldGUsXG5cdFx0XHRcdHNob3dTZXBhcmF0b3JzOiBMaXN0U2VwYXJhdG9ycy5Ob25lXG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHRzZXRJdGVtcyhcblx0XHRpdGVtczogVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10gfCBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRcdHRva2VuVHlwZTogVG9rZW5UeXBlLFxuXHRcdGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW5cblx0KTogdm9pZCB7XG5cdFx0aWYgKFV0aWxzLmFyZUl0ZW1zU2FtZShpdGVtcywgdGhpcy5pdGVtcyBhcyBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5pdGVtcyA9IGl0ZW1zO1xuXHRcdGNvbnN0IGxpc3QgPSB0aGlzLmdldENvbnRyb2woKTtcblx0XHRsaXN0Py5kZXN0cm95QWdncmVnYXRpb24oXCJpdGVtc1wiKTtcblx0XHRpdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleDEpID0+IHtcblx0XHRcdGNvbnN0IHsgb3BlcmF0b3IsIHNlbGVjdGVkVmFsdWVzIH0gPSBpdGVtO1xuXHRcdFx0bGV0IHRpdGxlID0gXCJcIjtcblx0XHRcdGlmICh0b2tlblR5cGUgPT09IFwiVmFsdWVIZWxwXCIpIHtcblx0XHRcdFx0aWYgKFV0aWxzLmlzQmV0d2VlblNlbGVjdGVkVmFsdWVzKG9wZXJhdG9yKSkge1xuXHRcdFx0XHRcdHRpdGxlID0gVXRpbHMubWFwT3BlcmF0b3JGb3JCZXR3ZWVuT3BlcmF0b3IoXG5cdFx0XHRcdFx0XHRvcGVyYXRvcixcblx0XHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzIGFzIFZhbHVlSGVscEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0XHRcdFx0XHRcdHRva2VuVHlwZSxcblx0XHRcdFx0XHRcdGlzRGF0ZVRpbWVPZmZzZXRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHRoaXMuaW5zZXJ0SXRlbShsaXN0IGFzIExpc3QsIHRpdGxlLCBbaW5kZXgxXSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgoc2VsZWN0ZWRWYWx1ZSwgaW5kZXgyKSA9PiB7XG5cdFx0XHRcdFx0XHR0aXRsZSA9IFV0aWxzLm1hcE9wZXJhdG9yRm9yVmFsdWVIZWxwKG9wZXJhdG9yLCBzZWxlY3RlZFZhbHVlIGFzIENvZGVMaXN0VHlwZSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0XHRcdFx0XHRcdHRoaXMuaW5zZXJ0SXRlbShsaXN0IGFzIExpc3QsIHRpdGxlLCBbaW5kZXgxLCBpbmRleDJdKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKFV0aWxzLmlzQmV0d2VlblNlbGVjdGVkVmFsdWVzKG9wZXJhdG9yKSkge1xuXHRcdFx0XHRcdHRpdGxlID0gVXRpbHMubWFwT3BlcmF0b3JGb3JCZXR3ZWVuT3BlcmF0b3IoXG5cdFx0XHRcdFx0XHRvcGVyYXRvcixcblx0XHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzIGFzIEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0XHRcdFx0XHRcdHRva2VuVHlwZSxcblx0XHRcdFx0XHRcdGlzRGF0ZVRpbWVPZmZzZXRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdC8vSW4gdGhpcyBjYXNlLCB3ZSBkb24ndCBuZWVkIHQgdG8gc3RvcmUgaW5kZXgyLCBiZWNhdXNlIHdlIGtub3cgdGhhdCBMTE0gb3IgVkhEIGFsd2F5cyBnaXZlcyB5b3Ugb25seSAyIHZhbHVlcyBpbiByZXR1cm5cblx0XHRcdFx0XHR0aGlzLmluc2VydEl0ZW0obGlzdCBhcyBMaXN0LCB0aXRsZSwgW2luZGV4MV0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzLmZvckVhY2goKHNlbGVjdGVkVmFsdWUsIGluZGV4MikgPT4ge1xuXHRcdFx0XHRcdFx0dGl0bGUgPSBVdGlscy5tYXBPcGVyYXRvcihvcGVyYXRvciwgc2VsZWN0ZWRWYWx1ZSBhcyBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyIHwgRGF0ZSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0XHRcdFx0XHRcdC8vV2UgbmVlZCB0byBzdG9yZSBpbmRleDIgdG8gZmluZCBvdXQgd2hpY2ggaXRlbSBoYXMgYmVlbiByZW1vdmVkIGluc2lkZSB0aGUgYXJyYXlcblx0XHRcdFx0XHRcdHRoaXMuaW5zZXJ0SXRlbShsaXN0IGFzIExpc3QsIHRpdGxlLCBbaW5kZXgxLCBpbmRleDJdKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0aW5zZXJ0SXRlbShsaXN0OiBMaXN0LCB0aXRsZTogc3RyaW5nLCBpbmRleFBvc2l0aW9uczogbnVtYmVyW10pOiB2b2lkIHtcblx0XHRsaXN0Py5hZGRJdGVtKFxuXHRcdFx0bmV3IFN0YW5kYXJkTGlzdEl0ZW0oe1xuXHRcdFx0XHR0aXRsZSxcblx0XHRcdFx0Y3VzdG9tRGF0YTogbmV3IEN1c3RvbURhdGEoe1xuXHRcdFx0XHRcdGtleTogXCJhcnJheUluZGV4XCIsXG5cdFx0XHRcdFx0dmFsdWU6IGluZGV4UG9zaXRpb25zXG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHRvbkRlbGV0ZShldmVudDogTGlzdEJhc2UkRGVsZXRlRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBwb3BvdmVyID0gdGhpcy5nZXRUb2tlbigpPy5nZXRDdXN0b21EYXRhVmFsdWUoXCJwb3BvdmVyXCIpIGFzIFBvcG92ZXI7XG5cdFx0ZXZlbnQuZ2V0UGFyYW1ldGVyKFwibGlzdEl0ZW1cIik/LnNldFZpc2libGUoZmFsc2UpO1xuXHRcdHBvcG92ZXIuZm9jdXMoKTtcblx0fVxuXG5cdG5vcm1hbGl6ZVN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgcmVnZXggPSAvXig+PXw8PXwhPXw+fDwpKy87XG5cdFx0cmV0dXJuIHN0ci5yZXBsYWNlKHJlZ2V4LCBcIlwiKTtcblx0fVxuXG5cdGludm9rZU9rQnV0dG9uSGFuZGxlcigpOiB2b2lkIHtcblx0XHRjb25zdCBwb3BvdmVyID0gdGhpcy5nZXRUb2tlbigpPy5nZXRDdXN0b21EYXRhVmFsdWUoXCJwb3BvdmVyXCIpIGFzIFBvcG92ZXI7XG5cdFx0Y29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XG5cdFx0Y29uc3QgZWFzeUZpbHRlckJhckNvbnRhaW5lciA9IHRoaXMuZ2V0RWFzeUZpbHRlcigpIGFzIEVhc3lGaWx0ZXJCYXJDb250YWluZXI7XG5cdFx0Y29uc3QgaXRlbXMgPSB0b2tlbj8uZ2V0SXRlbXMoKT8ubWFwKChpdGVtKSA9PiAoe1xuXHRcdFx0b3BlcmF0b3I6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaXRlbS5vcGVyYXRvcikpLCAvLyBEZWVwIGNvcHkgb2Ygb3BlcmF0b3Jcblx0XHRcdHNlbGVjdGVkVmFsdWVzOiBkZWVwQ2xvbmUoaXRlbS5zZWxlY3RlZFZhbHVlcykgLy8gRGVlcCBjb3B5IG9mIHNlbGVjdGVkVmFsdWVzLCBpZiBpdHMgYSBjb21wbGV4IG9iamVjdFxuXHRcdH0pKTtcblx0XHRjb25zdCBpbmRpY2VzVG9CZVJlbW92ZWQ6IG51bWJlcltdW10gPSBbXTtcblx0XHR0aGlzLmdldENvbnRyb2woKVxuXHRcdFx0Py5nZXRJdGVtcygpXG5cdFx0XHQuZm9yRWFjaCgobGlzdEl0ZW0pID0+IHtcblx0XHRcdFx0Ly9JZiB0aGUgaXRlbSBpcyBoaWRkZW4gdGhhdCBtZWFucyBpdCBzaG91bGQgYmUgcmVtb3ZlZCBjb21wbGV0ZWx5XG5cdFx0XHRcdGlmICghbGlzdEl0ZW0uZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdFx0Y29uc3QgW2luZGV4MSA9IEluZmluaXR5LCBpbmRleDIgPSBJbmZpbml0eV0gPVxuXHRcdFx0XHRcdFx0KGxpc3RJdGVtXG5cdFx0XHRcdFx0XHRcdD8uZ2V0Q3VzdG9tRGF0YSgpXG5cdFx0XHRcdFx0XHRcdD8uZmluZCgoZGF0YSkgPT4gZGF0YT8uZ2V0S2V5KCkgPT09IFwiYXJyYXlJbmRleFwiKVxuXHRcdFx0XHRcdFx0XHQ/LmdldFZhbHVlKCkgYXMgbnVtYmVyW10pID8/IFtdO1xuXHRcdFx0XHRcdGlmIChpbmRleDEgPT09IEluZmluaXR5IHx8ICFpdGVtcykge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRpY2VzVG9CZVJlbW92ZWQucHVzaChbaW5kZXgxLCBpbmRleDJdKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHQvKlxuXHRcdFdpdGhvdXQgc29ydGluZyBpbiBkZXNjZW5kaW5nIG9yZGVyOlxuXG5cdFx0UmVtb3ZpbmcgYW4gb2JqZWN0IHdvdWxkIHNoaWZ0IGFsbCBzdWJzZXF1ZW50IGluZGljZXMsIHBvdGVudGlhbGx5IGNhdXNpbmcgaW5jb3JyZWN0IHJlbW92YWxzIG9yIHNraXBzLlxuXHRcdFJlbW92aW5nIHZhbHVlcyBmcm9tIHNlbGVjdGVkVmFsdWVzIGNvdWxkIHNoaWZ0IG90aGVyIHZhbHVlcywgcmVzdWx0aW5nIGluIG1pc3NlZCBvciB1bmludGVuZGVkIHJlbW92YWxzLlxuXHRcdFRoaXMgYXBwcm9hY2ggZW5zdXJlcyB0aGF0IGVhY2ggcmVtb3ZhbCBvcGVyYXRlcyBvbiBzdGFibGUsIGNvcnJlY3QgaW5kaWNlcy5cblxuXHRcdFRoaXMgaXMgdGhlIHJlYXNvbiB3aHkgd2UgaGF2ZSBhZGRlZCB2YWx1ZUluZGV4IHRvIGluZmluaXR5XG5cdFx0SW5maW5pdHkgaXMgZ3JlYXRlciB0aGFuIGFueSB2YWxpZCBpbmRleCwgc28gc29ydGluZyBpbiBkZXNjZW5kaW5nIG9yZGVyIHdpbGwgbmF0dXJhbGx5IHBsYWNlIGVudHJpZXMgd2l0aCB2YWx1ZUluZGV4ID0gSW5maW5pdHkgYXQgdGhlIHRvcCBmb3IgZWFjaCBvYmpJbmRleC5cblx0XHRUaGlzIHdheSwgd2UgY2FuIHByb2Nlc3MgdGhlIGNvbXBsZXRlIHJlbW92YWwgb2YgYW4gb2JqZWN0IGJlZm9yZSBoYW5kbGluZyBhbnkgaW5kaXZpZHVhbCBzZWxlY3RlZFZhbHVlcyByZW1vdmFscyB3aXRoaW4gdGhhdCBvYmplY3QsIHByZXZlbnRpbmcgdW53YW50ZWQgc2hpZnRzLlxuXHRcdCAqL1xuXHRcdGluZGljZXNUb0JlUmVtb3ZlZC5zb3J0KChhLCBiKSA9PiBiWzBdIC0gYVswXSB8fCBiWzFdIC0gYVsxXSk7XG5cblx0XHRpbmRpY2VzVG9CZVJlbW92ZWQuZm9yRWFjaCgoW29iakluZGV4LCB2YWx1ZUluZGV4XSkgPT4ge1xuXHRcdFx0aWYgKGl0ZW1zKSB7XG5cdFx0XHRcdC8vSWYgdmFsdWVJbmRleCBpcyBpbmZpbml0eSwgdGhlbiBpdCBtZWFucyBpdCBzaG91bGQgYmUgYSBiZXR3ZWVuIG9wZXJhdG9yIHNjZW5hcmlvLCBzbyByZW1vdmUgdGhlIHRvdGFsIG9iamVjdCBvbmx5XG5cdFx0XHRcdGlmICh2YWx1ZUluZGV4ID09PSBJbmZpbml0eSkge1xuXHRcdFx0XHRcdGl0ZW1zLnNwbGljZShvYmpJbmRleCwgMSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGl0ZW1zW29iakluZGV4XS5zZWxlY3RlZFZhbHVlcy5zcGxpY2UodmFsdWVJbmRleCwgMSk7XG5cdFx0XHRcdC8vIElmIHRoZSB2YWx1ZXMgYXJyYXkgYmVjb21lcyBlbXB0eSwgcmVtb3ZlIHRoZSB3aG9sZSBvYmplY3Rcblx0XHRcdFx0aWYgKGl0ZW1zW29iakluZGV4XS5zZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRpdGVtcy5zcGxpY2Uob2JqSW5kZXgsIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0ZWFzeUZpbHRlckJhckNvbnRhaW5lci51cGRhdGVUb2tlbkFycmF5KFxuXHRcdFx0XCJzZXRTZWxlY3RlZFZhbHVlc1wiLFxuXHRcdFx0aXRlbXMgYXMgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRcdFx0dG9rZW4/LmdldEtleSgpIGFzIHN0cmluZ1xuXHRcdCk7XG5cdFx0cG9wb3Zlci5jbG9zZSgpO1xuXHR9XG5cblx0YXN5bmMgaW52b2tlU2hvd0FsbEJ1dHRvbkhhbmRsZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XG5cdFx0Y29uc3QgeyB0eXBlIH0gPSB0b2tlbj8uZ2V0Q3VzdG9tRGF0YVZhbHVlKFwiVG9rZW5JbmZvXCIpIGFzIFRva2VuRGVmaW5pdGlvbjtcblx0XHRjb25zdCBrZXkgPSB0b2tlbj8uZ2V0S2V5KCkgYXMgc3RyaW5nO1xuXHRcdGNvbnN0IG9sZFNlbGVjdGVkVmFsdWVzID0gdG9rZW4/LmdldEl0ZW1zKCkgYXMgKFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uKVtdO1xuXHRcdGNvbnN0IHZhbHVlSGVscFByb21pc2UgPSBuZXcgUHJvbWlzZTxUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLmdldEVhc3lGaWx0ZXIoKT8uZmlyZUV2ZW50KFwic2hvd1ZhbHVlSGVscFwiLCB7XG5cdFx0XHRcdGtleSxcblx0XHRcdFx0dmFsdWVzOiB0b2tlbj8uZ2V0SXRlbXMoKT8ubWFwKChpdGVtOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbiB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbikgPT4ge1xuXHRcdFx0XHRcdGlmICh0eXBlID09PSBcIlZhbHVlSGVscFwiKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRvcGVyYXRvcjogaXRlbS5vcGVyYXRvcixcblx0XHRcdFx0XHRcdFx0Ly9NYWtpbmcgc3VyZSB0aGF0IG9ubHkgdGhlIGlkIHBhcnQgaXMgcGFzc2VkXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzOiAoaXRlbSBhcyBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb24pLnNlbGVjdGVkVmFsdWVzLm1hcChcblx0XHRcdFx0XHRcdFx0XHQoc2VsZWN0ZWRWYWx1ZSkgPT4gc2VsZWN0ZWRWYWx1ZS52YWx1ZVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRyZXNvbHZlLFxuXHRcdFx0XHRyZWplY3Rcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gYXdhaXQgdmFsdWVIZWxwUHJvbWlzZTtcblx0XHRcdGlmICghdGhpcy5hcmVUb2tlbkFycmF5c0VxdWFsKG9sZFNlbGVjdGVkVmFsdWVzLCBuZXdTZWxlY3RlZFZhbHVlcykpIHtcblx0XHRcdFx0dGhpcy5nZXRFYXN5RmlsdGVyKCk/LnVwZGF0ZVRva2VuQXJyYXkoXCJzZXRTZWxlY3RlZFZhbHVlc1wiLCBuZXdTZWxlY3RlZFZhbHVlcywga2V5KTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0aWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgZmV0Y2hpbmcgbmV3IHRva2Vuc1wiLCBlcnJvci5tZXNzYWdlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIGZldGNoaW5nIG5ldyB0b2tlbnNcIiwgU3RyaW5nKGVycm9yKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0bm9ybWFsaXplVG9rZW5BcnJheSh0b2tlbkFycmF5OiAoVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24gfCBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb24pW10pOiBOb3JtYWxpemVkUGFpcltdIHtcblx0XHRyZXR1cm4gdG9rZW5BcnJheS5mbGF0TWFwKCh0b2tlbkl0ZW0pID0+XG5cdFx0XHQodG9rZW5JdGVtIGFzIFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbikuc2VsZWN0ZWRWYWx1ZXMubWFwKChzZWxlY3RlZCkgPT4gKHtcblx0XHRcdFx0b3BlcmF0b3I6IHRva2VuSXRlbS5vcGVyYXRvcixcblx0XHRcdFx0dmFsdWU6IHNlbGVjdGVkLnZhbHVlXG5cdFx0XHR9KSlcblx0XHQpO1xuXHR9XG5cblx0YXJlVG9rZW5BcnJheXNFcXVhbChcblx0XHRvbGRUb2tlbkFycmF5OiAoVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24gfCBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb24pW10sXG5cdFx0bmV3VG9rZW5BcnJheTogKFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uKVtdXG5cdCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG5vcm1hbGl6ZWRGaXJzdCA9IHRoaXMubm9ybWFsaXplVG9rZW5BcnJheShvbGRUb2tlbkFycmF5KS5zb3J0KChhLCBiKSA9PiBhLnZhbHVlLmxvY2FsZUNvbXBhcmUoYi52YWx1ZSkpO1xuXHRcdGNvbnN0IG5vcm1hbGl6ZWRTZWNvbmQgPSB0aGlzLm5vcm1hbGl6ZVRva2VuQXJyYXkobmV3VG9rZW5BcnJheSkuc29ydCgoYSwgYikgPT4gYS52YWx1ZS5sb2NhbGVDb21wYXJlKGIudmFsdWUpKTtcblxuXHRcdGlmIChub3JtYWxpemVkRmlyc3QubGVuZ3RoID09PSBub3JtYWxpemVkU2Vjb25kLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIG5vcm1hbGl6ZWRGaXJzdC5ldmVyeSgoaXRlbSwgaW5kZXgpID0+IHtcblx0XHRcdFx0Y29uc3Qgc2Vjb25kSXRlbSA9IG5vcm1hbGl6ZWRTZWNvbmRbaW5kZXhdO1xuXHRcdFx0XHRyZXR1cm4gaXRlbS5vcGVyYXRvciA9PT0gc2Vjb25kSXRlbS5vcGVyYXRvciAmJiBpdGVtLnZhbHVlID09PSBzZWNvbmRJdGVtLnZhbHVlO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0aW52b2tlUG9wdXBDbG9zZUhhbmRsZXIoKTogdm9pZCB7XG5cdFx0Ly9XaGF0ZXZlciBoYXMgYmVlbiBkZWxldGVkLCBtYWtlIHRoZW0gYXBwZWFyIGFnYWluIHNvIHRoYXQgdGhleSBjYW4gYmUgdmlzaWJsZSBhcyBzb29uIGFzIHlvdSBjbGljayB0aGUgdG9rZW4gYWdhaW5cblx0XHR0aGlzLmdldENvbnRyb2woKVxuXHRcdFx0Py5nZXRJdGVtcygpXG5cdFx0XHQuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5zZXRWaXNpYmxlKHRydWUpKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBWYWx1ZUhlbHBQcmV2aWV3RmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O01BMkJNQSx1QkFBdUIsMEJBQUFDLFlBQUE7SUFDNUIsU0FBQUQsd0JBQVlFLEdBQTJDLEVBQUVDLEtBQXNDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ2hHQSxLQUFBLEdBQUFILFlBQUEsQ0FBQUksSUFBQSxPQUFNSCxHQUFHLEVBQUVDLEtBQUssQ0FBQztNQUNqQkMsS0FBQSxDQUFLRSxVQUFVLENBQ2QsSUFBSUMsSUFBSSxDQUFDO1FBQ1JDLE1BQU0sRUFBRUosS0FBQSxDQUFLSyxRQUFRLENBQUNDLElBQUksQ0FBQU4sS0FBSyxDQUFDO1FBQ2hDTyxJQUFJLEVBQUVDLFFBQVEsQ0FBQ0MsTUFBTTtRQUNyQkMsY0FBYyxFQUFFQyxjQUFjLENBQUNDO01BQ2hDLENBQUMsQ0FDRixDQUFDO01BQUMsT0FBQVosS0FBQTtJQUNIO0lBQUNhLGNBQUEsQ0FBQWpCLHVCQUFBLEVBQUFDLFlBQUE7SUFBQSxJQUFBaUIsTUFBQSxHQUFBbEIsdUJBQUEsQ0FBQW1CLFNBQUE7SUFBQUQsTUFBQSxDQUVERSxRQUFRLEdBQVIsU0FBQUEsUUFBUUEsQ0FDUEMsS0FBNEUsRUFDNUVDLFNBQW9CLEVBQ3BCQyxnQkFBeUIsRUFDbEI7TUFDUCxJQUFJQyxLQUFLLENBQUNDLFlBQVksQ0FBQ0osS0FBSyxFQUFFLElBQUksQ0FBQ0EsS0FBNEMsQ0FBQyxFQUFFO1FBQ2pGO01BQ0Q7TUFDQSxJQUFJLENBQUNBLEtBQUssR0FBR0EsS0FBSztNQUNsQixNQUFNSyxJQUFJLEdBQUcsSUFBSSxDQUFDQyxVQUFVLENBQUMsQ0FBQztNQUM5QkQsSUFBSSxFQUFFRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7TUFDakNQLEtBQUssQ0FBQ1EsT0FBTyxDQUFDLENBQUNDLElBQUksRUFBRUMsTUFBTSxLQUFLO1FBQy9CLE1BQU07VUFBRUMsUUFBUTtVQUFFQztRQUFlLENBQUMsR0FBR0gsSUFBSTtRQUN6QyxJQUFJSSxLQUFLLEdBQUcsRUFBRTtRQUNkLElBQUlaLFNBQVMsS0FBSyxXQUFXLEVBQUU7VUFDOUIsSUFBSUUsS0FBSyxDQUFDVyx1QkFBdUIsQ0FBQ0gsUUFBUSxDQUFDLEVBQUU7WUFDNUNFLEtBQUssR0FBR1YsS0FBSyxDQUFDWSw2QkFBNkIsQ0FDMUNKLFFBQVEsRUFDUkMsY0FBYyxFQUNkWCxTQUFTLEVBQ1RDLGdCQUNELENBQUM7WUFDRCxJQUFJLENBQUNjLFVBQVUsQ0FBQ1gsSUFBSSxFQUFVUSxLQUFLLEVBQUUsQ0FBQ0gsTUFBTSxDQUFDLENBQUM7VUFDL0MsQ0FBQyxNQUFNO1lBQ05FLGNBQWMsQ0FBQ0osT0FBTyxDQUFDLENBQUNTLGFBQWEsRUFBRUMsTUFBTSxLQUFLO2NBQ2pETCxLQUFLLEdBQUdWLEtBQUssQ0FBQ2dCLHVCQUF1QixDQUFDUixRQUFRLEVBQUVNLGFBQWEsRUFBa0JoQixTQUFTLEVBQUVDLGdCQUFnQixDQUFDO2NBQzNHLElBQUksQ0FBQ2MsVUFBVSxDQUFDWCxJQUFJLEVBQVVRLEtBQUssRUFBRSxDQUFDSCxNQUFNLEVBQUVRLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZELENBQUMsQ0FBQztVQUNIO1FBQ0QsQ0FBQyxNQUFNO1VBQ04sSUFBSWYsS0FBSyxDQUFDVyx1QkFBdUIsQ0FBQ0gsUUFBUSxDQUFDLEVBQUU7WUFDNUNFLEtBQUssR0FBR1YsS0FBSyxDQUFDWSw2QkFBNkIsQ0FDMUNKLFFBQVEsRUFDUkMsY0FBYyxFQUNkWCxTQUFTLEVBQ1RDLGdCQUNELENBQUM7WUFDRDtZQUNBLElBQUksQ0FBQ2MsVUFBVSxDQUFDWCxJQUFJLEVBQVVRLEtBQUssRUFBRSxDQUFDSCxNQUFNLENBQUMsQ0FBQztVQUMvQyxDQUFDLE1BQU07WUFDTkUsY0FBYyxDQUFDSixPQUFPLENBQUMsQ0FBQ1MsYUFBYSxFQUFFQyxNQUFNLEtBQUs7Y0FDakRMLEtBQUssR0FBR1YsS0FBSyxDQUFDaUIsV0FBVyxDQUFDVCxRQUFRLEVBQUVNLGFBQWEsRUFBc0NoQixTQUFTLEVBQUVDLGdCQUFnQixDQUFDO2NBQ25IO2NBQ0EsSUFBSSxDQUFDYyxVQUFVLENBQUNYLElBQUksRUFBVVEsS0FBSyxFQUFFLENBQUNILE1BQU0sRUFBRVEsTUFBTSxDQUFDLENBQUM7WUFDdkQsQ0FBQyxDQUFDO1VBQ0g7UUFDRDtNQUNELENBQUMsQ0FBQztJQUNILENBQUM7SUFBQXJCLE1BQUEsQ0FFRG1CLFVBQVUsR0FBVixTQUFBQSxVQUFVQSxDQUFDWCxJQUFVLEVBQUVRLEtBQWEsRUFBRVEsY0FBd0IsRUFBUTtNQUNyRWhCLElBQUksRUFBRWlCLE9BQU8sQ0FDWixJQUFJQyxnQkFBZ0IsQ0FBQztRQUNwQlYsS0FBSztRQUNMVyxVQUFVLEVBQUUsSUFBSUMsVUFBVSxDQUFDO1VBQzFCQyxHQUFHLEVBQUUsWUFBWTtVQUNqQkMsS0FBSyxFQUFFTjtRQUNSLENBQUM7TUFDRixDQUFDLENBQ0YsQ0FBQztJQUNGLENBQUM7SUFBQXhCLE1BQUEsQ0FFRFQsUUFBUSxHQUFSLFNBQUFBLFFBQVFBLENBQUN3QyxLQUEyQixFQUFRO01BQzNDLE1BQU1DLE9BQU8sR0FBRyxJQUFJLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEVBQUVDLGtCQUFrQixDQUFDLFNBQVMsQ0FBWTtNQUN6RUgsS0FBSyxDQUFDSSxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUVDLFVBQVUsQ0FBQyxLQUFLLENBQUM7TUFDakRKLE9BQU8sQ0FBQ0ssS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUFBckMsTUFBQSxDQUVEc0MsZUFBZSxHQUFmLFNBQUFBLGVBQWVBLENBQUNDLEdBQVcsRUFBVTtNQUNwQyxNQUFNQyxLQUFLLEdBQUcsa0JBQWtCO01BQ2hDLE9BQU9ELEdBQUcsQ0FBQ0UsT0FBTyxDQUFDRCxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFBQXhDLE1BQUEsQ0FFRDBDLHFCQUFxQixHQUFyQixTQUFBQSxxQkFBcUJBLENBQUEsRUFBUztNQUM3QixNQUFNVixPQUFPLEdBQUcsSUFBSSxDQUFDQyxRQUFRLENBQUMsQ0FBQyxFQUFFQyxrQkFBa0IsQ0FBQyxTQUFTLENBQVk7TUFDekUsTUFBTWpELEtBQUssR0FBRyxJQUFJLENBQUNnRCxRQUFRLENBQUMsQ0FBQztNQUM3QixNQUFNVSxzQkFBc0IsR0FBRyxJQUFJLENBQUNDLGFBQWEsQ0FBQyxDQUEyQjtNQUM3RSxNQUFNekMsS0FBSyxHQUFHbEIsS0FBSyxFQUFFNEQsUUFBUSxDQUFDLENBQUMsRUFBRUMsR0FBRyxDQUFFbEMsSUFBSSxLQUFNO1FBQy9DRSxRQUFRLEVBQUVpQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsSUFBSSxDQUFDRSxTQUFTLENBQUNyQyxJQUFJLENBQUNFLFFBQVEsQ0FBQyxDQUFDO1FBQUU7UUFDckRDLGNBQWMsRUFBRW1DLFNBQVMsQ0FBQ3RDLElBQUksQ0FBQ0csY0FBYyxDQUFDLENBQUM7TUFDaEQsQ0FBQyxDQUFDLENBQUM7TUFDSCxNQUFNb0Msa0JBQThCLEdBQUcsRUFBRTtNQUN6QyxJQUFJLENBQUMxQyxVQUFVLENBQUMsQ0FBQyxFQUNkb0MsUUFBUSxDQUFDLENBQUMsQ0FDWGxDLE9BQU8sQ0FBRXlDLFFBQVEsSUFBSztRQUN0QjtRQUNBLElBQUksQ0FBQ0EsUUFBUSxDQUFDQyxVQUFVLENBQUMsQ0FBQyxFQUFFO1VBQzNCLE1BQU0sQ0FBQ3hDLE1BQU0sR0FBR3lDLFFBQVEsRUFBRWpDLE1BQU0sR0FBR2lDLFFBQVEsQ0FBQyxHQUMxQ0YsUUFBUSxFQUNORyxhQUFhLENBQUMsQ0FBQyxFQUNmQyxJQUFJLENBQUVDLElBQUksSUFBS0EsSUFBSSxFQUFFQyxNQUFNLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxFQUMvQ0MsUUFBUSxDQUFDLENBQUMsSUFBaUIsRUFBRTtVQUNqQyxJQUFJOUMsTUFBTSxLQUFLeUMsUUFBUSxJQUFJLENBQUNuRCxLQUFLLEVBQUU7WUFDbEM7VUFDRDtVQUNBZ0Qsa0JBQWtCLENBQUNTLElBQUksQ0FBQyxDQUFDL0MsTUFBTSxFQUFFUSxNQUFNLENBQUMsQ0FBQztRQUMxQztNQUNELENBQUMsQ0FBQzs7TUFFSDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7TUFHRThCLGtCQUFrQixDQUFDVSxJQUFJLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUtBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUU3RFgsa0JBQWtCLENBQUN4QyxPQUFPLENBQUNxRCxJQUFBLElBQTRCO1FBQUEsSUFBM0IsQ0FBQ0MsUUFBUSxFQUFFQyxVQUFVLENBQUMsR0FBQUYsSUFBQTtRQUNqRCxJQUFJN0QsS0FBSyxFQUFFO1VBQ1Y7VUFDQSxJQUFJK0QsVUFBVSxLQUFLWixRQUFRLEVBQUU7WUFDNUJuRCxLQUFLLENBQUNnRSxNQUFNLENBQUNGLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDekI7VUFDRDtVQUNBOUQsS0FBSyxDQUFDOEQsUUFBUSxDQUFDLENBQUNsRCxjQUFjLENBQUNvRCxNQUFNLENBQUNELFVBQVUsRUFBRSxDQUFDLENBQUM7VUFDcEQ7VUFDQSxJQUFJL0QsS0FBSyxDQUFDOEQsUUFBUSxDQUFDLENBQUNsRCxjQUFjLENBQUNxRCxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hEakUsS0FBSyxDQUFDZ0UsTUFBTSxDQUFDRixRQUFRLEVBQUUsQ0FBQyxDQUFDO1VBQzFCO1FBQ0Q7TUFDRCxDQUFDLENBQUM7TUFDRnRCLHNCQUFzQixDQUFDMEIsZ0JBQWdCLENBQ3RDLG1CQUFtQixFQUNuQmxFLEtBQUssRUFDTGxCLEtBQUssRUFBRXlFLE1BQU0sQ0FBQyxDQUNmLENBQUM7TUFDRDFCLE9BQU8sQ0FBQ3NDLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFBQXRFLE1BQUEsQ0FFS3VFLDBCQUEwQixHQUFoQyxlQUFNQSwwQkFBMEJBLENBQUEsRUFBa0I7TUFDakQsTUFBTXRGLEtBQUssR0FBRyxJQUFJLENBQUNnRCxRQUFRLENBQUMsQ0FBQztNQUM3QixNQUFNO1FBQUV1QztNQUFLLENBQUMsR0FBR3ZGLEtBQUssRUFBRWlELGtCQUFrQixDQUFDLFdBQVcsQ0FBb0I7TUFDMUUsTUFBTUwsR0FBRyxHQUFHNUMsS0FBSyxFQUFFeUUsTUFBTSxDQUFDLENBQVc7TUFDckMsTUFBTWUsaUJBQWlCLEdBQUd4RixLQUFLLEVBQUU0RCxRQUFRLENBQUMsQ0FBMEU7TUFDcEgsTUFBTTZCLGdCQUFnQixHQUFHLElBQUlDLE9BQU8sQ0FBa0MsQ0FBQ0MsT0FBTyxFQUFFQyxNQUFNLEtBQUs7UUFDMUYsSUFBSSxDQUFDakMsYUFBYSxDQUFDLENBQUMsRUFBRWtDLFNBQVMsQ0FBQyxlQUFlLEVBQUU7VUFDaERqRCxHQUFHO1VBQ0hrRCxNQUFNLEVBQUU5RixLQUFLLEVBQUU0RCxRQUFRLENBQUMsQ0FBQyxFQUFFQyxHQUFHLENBQUVsQyxJQUF1RSxJQUFLO1lBQzNHLElBQUk0RCxJQUFJLEtBQUssV0FBVyxFQUFFO2NBQ3pCLE9BQU87Z0JBQ04xRCxRQUFRLEVBQUVGLElBQUksQ0FBQ0UsUUFBUTtnQkFDdkI7Z0JBQ0FDLGNBQWMsRUFBR0gsSUFBSSxDQUF1Q0csY0FBYyxDQUFDK0IsR0FBRyxDQUM1RTFCLGFBQWEsSUFBS0EsYUFBYSxDQUFDVSxLQUNsQztjQUNELENBQUM7WUFDRixDQUFDLE1BQU07Y0FDTixPQUFPbEIsSUFBSTtZQUNaO1VBQ0QsQ0FBQyxDQUFDO1VBQ0ZnRSxPQUFPO1VBQ1BDO1FBQ0QsQ0FBQyxDQUFDO01BQ0gsQ0FBQyxDQUFDO01BRUYsSUFBSTtRQUNILE1BQU1HLGlCQUFpQixHQUFHLE1BQU1OLGdCQUFnQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDTyxtQkFBbUIsQ0FBQ1IsaUJBQWlCLEVBQUVPLGlCQUFpQixDQUFDLEVBQUU7VUFDcEUsSUFBSSxDQUFDcEMsYUFBYSxDQUFDLENBQUMsRUFBRXlCLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFVyxpQkFBaUIsRUFBRW5ELEdBQUcsQ0FBQztRQUNwRjtNQUNELENBQUMsQ0FBQyxPQUFPcUQsS0FBSyxFQUFFO1FBQ2YsSUFBSUEsS0FBSyxZQUFZQyxLQUFLLEVBQUU7VUFDM0JDLEdBQUcsQ0FBQ0YsS0FBSyxDQUFDLGlDQUFpQyxFQUFFQSxLQUFLLENBQUNHLE9BQU8sQ0FBQztRQUM1RCxDQUFDLE1BQU07VUFDTkQsR0FBRyxDQUFDRixLQUFLLENBQUMsaUNBQWlDLEVBQUVJLE1BQU0sQ0FBQ0osS0FBSyxDQUFDLENBQUM7UUFDNUQ7TUFDRDtJQUNELENBQUM7SUFBQWxGLE1BQUEsQ0FFRHVGLG1CQUFtQixHQUFuQixTQUFBQSxtQkFBbUJBLENBQUNDLFVBQWlGLEVBQW9CO01BQ3hILE9BQU9BLFVBQVUsQ0FBQ0MsT0FBTyxDQUFFQyxTQUFTLElBQ2xDQSxTQUFTLENBQXVDM0UsY0FBYyxDQUFDK0IsR0FBRyxDQUFFNkMsUUFBUSxLQUFNO1FBQ2xGN0UsUUFBUSxFQUFFNEUsU0FBUyxDQUFDNUUsUUFBUTtRQUM1QmdCLEtBQUssRUFBRTZELFFBQVEsQ0FBQzdEO01BQ2pCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDRixDQUFDO0lBQUE5QixNQUFBLENBRURpRixtQkFBbUIsR0FBbkIsU0FBQUEsbUJBQW1CQSxDQUNsQlcsYUFBb0YsRUFDcEZDLGFBQW9GLEVBQzFFO01BQ1YsTUFBTUMsZUFBZSxHQUFHLElBQUksQ0FBQ1AsbUJBQW1CLENBQUNLLGFBQWEsQ0FBQyxDQUFDL0IsSUFBSSxDQUFDLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxLQUFLRCxDQUFDLENBQUNoQyxLQUFLLENBQUNpRSxhQUFhLENBQUNoQyxDQUFDLENBQUNqQyxLQUFLLENBQUMsQ0FBQztNQUM5RyxNQUFNa0UsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDVCxtQkFBbUIsQ0FBQ00sYUFBYSxDQUFDLENBQUNoQyxJQUFJLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUtELENBQUMsQ0FBQ2hDLEtBQUssQ0FBQ2lFLGFBQWEsQ0FBQ2hDLENBQUMsQ0FBQ2pDLEtBQUssQ0FBQyxDQUFDO01BRS9HLElBQUlnRSxlQUFlLENBQUMxQixNQUFNLEtBQUs0QixnQkFBZ0IsQ0FBQzVCLE1BQU0sRUFBRTtRQUN2RCxPQUFPMEIsZUFBZSxDQUFDRyxLQUFLLENBQUMsQ0FBQ3JGLElBQUksRUFBRXNGLEtBQUssS0FBSztVQUM3QyxNQUFNQyxVQUFVLEdBQUdILGdCQUFnQixDQUFDRSxLQUFLLENBQUM7VUFDMUMsT0FBT3RGLElBQUksQ0FBQ0UsUUFBUSxLQUFLcUYsVUFBVSxDQUFDckYsUUFBUSxJQUFJRixJQUFJLENBQUNrQixLQUFLLEtBQUtxRSxVQUFVLENBQUNyRSxLQUFLO1FBQ2hGLENBQUMsQ0FBQztNQUNIO01BRUEsT0FBTyxLQUFLO0lBQ2IsQ0FBQztJQUFBOUIsTUFBQSxDQUVEb0csdUJBQXVCLEdBQXZCLFNBQUFBLHVCQUF1QkEsQ0FBQSxFQUFTO01BQy9CO01BQ0EsSUFBSSxDQUFDM0YsVUFBVSxDQUFDLENBQUMsRUFDZG9DLFFBQVEsQ0FBQyxDQUFDLENBQ1hsQyxPQUFPLENBQUVDLElBQUksSUFBS0EsSUFBSSxDQUFDd0IsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFBQSxPQUFBdEQsdUJBQUE7RUFBQSxFQXpOb0N1SCxXQUFXO0VBQUEsT0E0TmxDdkgsdUJBQXVCO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -20,6 +20,10 @@ import type {
20
20
  ValueHelpSelectedValuesDefinition
21
21
  } from "../EasyFilterBarContainer";
22
22
  import type EasyFilterToken from "../Token";
23
+ type NormalizedPair = {
24
+ operator: string;
25
+ value: string;
26
+ };
23
27
 
24
28
  class ValueHelpPreviewFactory extends BaseFactory<List> {
25
29
  constructor(EFB: EnhanceWithUI5<EasyFilterBarContainer>, token: EnhanceWithUI5<EasyFilterToken>) {
@@ -171,6 +175,7 @@ class ValueHelpPreviewFactory extends BaseFactory<List> {
171
175
  const token = this.getToken();
172
176
  const { type } = token?.getCustomDataValue("TokenInfo") as TokenDefinition;
173
177
  const key = token?.getKey() as string;
178
+ const oldSelectedValues = token?.getItems() as (TokenSelectedValuesDefinition | ValueHelpSelectedValuesDefinition)[];
174
179
  const valueHelpPromise = new Promise<TokenSelectedValuesDefinition[]>((resolve, reject) => {
175
180
  this.getEasyFilter()?.fireEvent("showValueHelp", {
176
181
  key,
@@ -194,7 +199,9 @@ class ValueHelpPreviewFactory extends BaseFactory<List> {
194
199
 
195
200
  try {
196
201
  const newSelectedValues = await valueHelpPromise;
197
- this.getEasyFilter()?.updateTokenArray("setSelectedValues", newSelectedValues, key);
202
+ if (!this.areTokenArraysEqual(oldSelectedValues, newSelectedValues)) {
203
+ this.getEasyFilter()?.updateTokenArray("setSelectedValues", newSelectedValues, key);
204
+ }
198
205
  } catch (error) {
199
206
  if (error instanceof Error) {
200
207
  Log.error("Error while fetching new tokens", error.message);
@@ -204,6 +211,32 @@ class ValueHelpPreviewFactory extends BaseFactory<List> {
204
211
  }
205
212
  }
206
213
 
214
+ normalizeTokenArray(tokenArray: (TokenSelectedValuesDefinition | ValueHelpSelectedValuesDefinition)[]): NormalizedPair[] {
215
+ return tokenArray.flatMap((tokenItem) =>
216
+ (tokenItem as ValueHelpSelectedValuesDefinition).selectedValues.map((selected) => ({
217
+ operator: tokenItem.operator,
218
+ value: selected.value
219
+ }))
220
+ );
221
+ }
222
+
223
+ areTokenArraysEqual(
224
+ oldTokenArray: (TokenSelectedValuesDefinition | ValueHelpSelectedValuesDefinition)[],
225
+ newTokenArray: (TokenSelectedValuesDefinition | ValueHelpSelectedValuesDefinition)[]
226
+ ): boolean {
227
+ const normalizedFirst = this.normalizeTokenArray(oldTokenArray).sort((a, b) => a.value.localeCompare(b.value));
228
+ const normalizedSecond = this.normalizeTokenArray(newTokenArray).sort((a, b) => a.value.localeCompare(b.value));
229
+
230
+ if (normalizedFirst.length === normalizedSecond.length) {
231
+ return normalizedFirst.every((item, index) => {
232
+ const secondItem = normalizedSecond[index];
233
+ return item.operator === secondItem.operator && item.value === secondItem.value;
234
+ });
235
+ }
236
+
237
+ return false;
238
+ }
239
+
207
240
  invokePopupCloseHandler(): void {
208
241
  //Whatever has been deleted, make them appear again so that they can be visible as soon as you click the token again
209
242
  this.getControl()
@@ -149,12 +149,41 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
149
149
  function convertBoolToString(value) {
150
150
  return value ? resourceBundle.getText("M_EASY_FILTER_SELECTED_VALUES_TRUE") : resourceBundle.getText("M_EASY_FILTER_SELECTED_VALUES_FALSE");
151
151
  }
152
- function formatData(tokens, filterValues, filterBarMetadata) {
152
+
153
+ //This function returns true if the filter is not a valid "SingleRange" (e.g., wrong operator or too many values), and false if it is valid.
154
+ function isInvalidSingleRange(filterValue) {
155
+ const allowed = [FilterOperator.EQ, FilterOperator.LE, FilterOperator.LT, FilterOperator.GE, FilterOperator.GT, FilterOperator.BT];
156
+
157
+ // filterValue.operator !== FilterOperator.BT ensures BT is always valid.
158
+ // !allowed.includes() blocks unsupported operators.
159
+ // filterValue.values.length >= 2 blocks multiple values for single-range filters.
160
+ // Together, this returns true when the filter is not a valid single-range.
161
+ return filterValue.operator !== FilterOperator.BT && (!allowed.includes(filterValue.operator) || filterValue.values.length >= 2);
162
+ }
163
+ function formatData(tokens, filterValues, filterBarMetadata, setMessageStripForValidatedFilters) {
153
164
  if (filterValues) {
154
165
  const visitedMapForMandatoryTokens = {};
166
+ const nonFilterableTokenLabels = [];
167
+ const singleRangeTokenLabels = [];
168
+ const hiddenFilterTokenLabels = [];
155
169
  for (const filterValue of filterValues) {
156
170
  const filterCriteria = filterBarMetadata.find(field => field.name === filterValue.name);
157
171
  if (filterCriteria) {
172
+ // Only block if filterable is false
173
+ if (Object.prototype.hasOwnProperty.call(filterCriteria, "filterable") && !filterCriteria?.filterable) {
174
+ nonFilterableTokenLabels.push(filterCriteria.label || filterCriteria.name);
175
+ continue;
176
+ }
177
+ // Only block if hiddenFilter is true
178
+ if (Object.prototype.hasOwnProperty.call(filterCriteria, "hiddenFilter") && filterCriteria?.hiddenFilter) {
179
+ hiddenFilterTokenLabels.push(filterCriteria.label || filterCriteria.name);
180
+ continue;
181
+ }
182
+ // Only apply SingleRange logic if filterRestriction is set to SingleRange
183
+ if (filterCriteria?.filterRestriction === "SingleRange" && isInvalidSingleRange(filterValue)) {
184
+ singleRangeTokenLabels.push(filterCriteria.label || filterCriteria.name);
185
+ filterValue.values = []; // Reset values to avoid adding invalid token values
186
+ }
158
187
  const {
159
188
  type
160
189
  } = filterCriteria;
@@ -198,6 +227,22 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
198
227
  }
199
228
  }
200
229
  }
230
+ if (nonFilterableTokenLabels.length > 0 || singleRangeTokenLabels.length > 0 || hiddenFilterTokenLabels.length > 0) {
231
+ const messages = [];
232
+ if (nonFilterableTokenLabels.length > 0) {
233
+ const nonFilterableTokenLabel = `<strong>${nonFilterableTokenLabels.join(", ")}</strong>`;
234
+ messages.push(resourceBundle.getText("M_EASY_FILTER_NON_FILTERABLE", [nonFilterableTokenLabel]));
235
+ }
236
+ if (hiddenFilterTokenLabels.length > 0) {
237
+ const label = `<strong>${hiddenFilterTokenLabels.join(", ")}</strong>`;
238
+ messages.push(resourceBundle.getText("M_EASY_FILTER_HIDDEN_FILTER", [label]));
239
+ }
240
+ if (singleRangeTokenLabels.length > 0) {
241
+ const label = `<strong>${singleRangeTokenLabels.join(", ")}</strong>`;
242
+ messages.push(resourceBundle.getText("M_EASY_FILTER_SINGLE_RANGE", [label]));
243
+ }
244
+ setMessageStripForValidatedFilters(messages.join("<br>"));
245
+ }
201
246
  }
202
247
  }
203
248
  const EasyFilterUtils = {
@@ -213,4 +258,4 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
213
258
  };
214
259
  return EasyFilterUtils;
215
260
  }, false);
216
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsInZhbHVlIiwiaW5kZXgiLCJkZWVwRXF1YWwiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRGF0ZSIsIkZpbHRlck9wZXJhdG9yIiwiR1QiLCJMVCIsIkdFIiwiTEUiLCJFUSIsIkNvbnRhaW5zIiwiRW5kc1dpdGgiLCJTdGFydHNXaXRoIiwiTkUiLCJOb3RDb250YWlucyIsIk5vdEVuZHNXaXRoIiwiTm90U3RhcnRzV2l0aCIsInRvU3RyaW5nIiwibWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAiLCJtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvciIsInZhbHVlcyIsIm5ld1ZhbHVlMSIsIm5ld1ZhbHVlMiIsIkJUIiwiaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMiLCJOQiIsImdldFRleHQiLCJmb3JtYXREYXRhIiwidG9rZW5zIiwiZmlsdGVyVmFsdWVzIiwiZmlsdGVyQmFyTWV0YWRhdGEiLCJ2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zIiwiZmlsdGVyVmFsdWUiLCJmaWx0ZXJDcml0ZXJpYSIsImZpbmQiLCJmaWVsZCIsIm5hbWUiLCJ0eXBlIiwidG9rZW5JbmRleCIsImZpbmRJbmRleCIsInRva2VuIiwia2V5Iiwia2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyIsIkVhc3lGaWx0ZXJVdGlscyIsIm5ld1Rva2VuIiwibGFiZWwiLCJidXN5IiwicHVzaCIsImN1cnJlbnRUb2tlbiIsImlzUmVxdWlyZWQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbInV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9FZG1cIjtcbmltcG9ydCBkZWVwRXF1YWwgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcEVxdWFsXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBEYXRlRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvRGF0ZUZvcm1hdFwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBEYXRlVGltZU9mZnNldCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3R5cGUvRGF0ZVRpbWVPZmZzZXRcIjtcbmltcG9ydCB0eXBlIHsgRWFzeUZpbHRlclJlc3VsdCwgUHJvcGVydHlNZXRhZGF0YSB9IGZyb20gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHtcblx0QmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRDb2RlTGlzdFR5cGUsXG5cdEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhLFxuXHRUb2tlbkRlZmluaXRpb24sXG5cdFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uLFxuXHRUb2tlblR5cGUsXG5cdFZhbHVlSGVscEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0VmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uXG59IGZyb20gXCIuL0Vhc3lGaWx0ZXJCYXJDb250YWluZXJcIjtcblxudHlwZSBjb2RlTGlzdFR5cGUgPSBQcm9wZXJ0eU1ldGFkYXRhW1wiY29kZUxpc3RcIl07XG50eXBlIGZpbmFsQ29kZUxpc3RUeXBlID0geyB2YWx1ZTogUHJpbWl0aXZlVHlwZTsgZGVzY3JpcHRpb24/OiBzdHJpbmcgfVtdO1xuY29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuY29uc3QgZGF0ZVRpbWVPZmZzZXQgPSBuZXcgRGF0ZVRpbWVPZmZzZXQoKTtcblxuZnVuY3Rpb24gYXJlSXRlbXNTYW1lKFxuXHRhcnIxOiByZWFkb25seSBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10sXG5cdGFycjI6IHJlYWRvbmx5IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10gfCBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXVxuKTogYm9vbGVhbiB7XG5cdGlmIChhcnIxLmxlbmd0aCAhPT0gYXJyMi5sZW5ndGgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoXG5cdFx0XHRhcnIxW2ldLm9wZXJhdG9yICE9PSBhcnIyW2ldLm9wZXJhdG9yIHx8XG5cdFx0XHQhYXJyMVtpXS5zZWxlY3RlZFZhbHVlcy5ldmVyeShcblx0XHRcdFx0KHZhbHVlLCBpbmRleCkgPT5cblx0XHRcdFx0XHR2YWx1ZSA9PT0gYXJyMltpXS5zZWxlY3RlZFZhbHVlc1tpbmRleF0gfHxcblx0XHRcdFx0XHQodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG5cdFx0XHRcdFx0XHRkZWVwRXF1YWwoKHZhbHVlIGFzIENvZGVMaXN0VHlwZSkudmFsdWUsIChhcnIyW2ldLnNlbGVjdGVkVmFsdWVzW2luZGV4XSBhcyBDb2RlTGlzdFR5cGUpLnZhbHVlKSAmJlxuXHRcdFx0XHRcdFx0KHZhbHVlIGFzIENvZGVMaXN0VHlwZSkuZGVzY3JpcHRpb24gPT09IChhcnIyW2ldLnNlbGVjdGVkVmFsdWVzW2luZGV4XSBhcyBDb2RlTGlzdFR5cGUpLmRlc2NyaXB0aW9uKVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTsgLy8gQXJyYXlzIGFyZSB0aGUgc2FtZVxufVxuXG5mdW5jdGlvbiBhcmVBcnJheVNhbWUoYXJyMTogcmVhZG9ubHkgdW5rbm93bltdLCBhcnIyOiByZWFkb25seSB1bmtub3duW10pOiBib29sZWFuIHtcblx0aWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHQvLyBDb21wYXJlIGVsZW1lbnRzIG9mIGJvdGggYXJyYXlzXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYXJyMS5sZW5ndGg7IGkrKykge1xuXHRcdGlmIChhcnIxW2ldICE9PSBhcnIyW2ldKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0cnVlOyAvLyBBcnJheXMgYXJlIHRoZSBzYW1lXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFyZUNvZGVMaXN0c1NhbWUoYXJyMTogY29kZUxpc3RUeXBlLCBhcnIyOiBjb2RlTGlzdFR5cGUpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0Y29uc3QgYXJyTmV3MTogZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBnZXRDb2RlTGlzdEFycmF5KGFycjEpO1xuXHRjb25zdCBhcnJOZXcyOiBmaW5hbENvZGVMaXN0VHlwZSB8IHVuZGVmaW5lZCA9IGF3YWl0IGdldENvZGVMaXN0QXJyYXkoYXJyMik7XG5cdGNvbnN0IGRlc2NyaXB0aW9uTmV3MSA9IGFyck5ldzE/Lm1hcCgoZGF0YSkgPT4gZGF0YS5kZXNjcmlwdGlvbik7XG5cdGNvbnN0IGRlc2NyaXB0aW9uTmV3MiA9IGFyck5ldzI/Lm1hcCgoZGF0YSkgPT4gZGF0YS5kZXNjcmlwdGlvbik7XG5cblx0Y29uc3QgdmFsdWUxID0gYXJyTmV3MT8ubWFwKChkYXRhKSA9PiBkYXRhLnZhbHVlKTtcblx0Y29uc3QgdmFsdWUyID0gYXJyTmV3Mj8ubWFwKChkYXRhKSA9PiBkYXRhLnZhbHVlKTtcblx0aWYgKCFkZXNjcmlwdGlvbk5ldzEgfHwgIWRlc2NyaXB0aW9uTmV3Mikge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gYXJlQXJyYXlTYW1lKGRlc2NyaXB0aW9uTmV3MSwgZGVzY3JpcHRpb25OZXcyKSAmJiBhcmVBcnJheVNhbWUodmFsdWUxIGFzIFByaW1pdGl2ZVR5cGUsIHZhbHVlMiBhcyBQcmltaXRpdmVUeXBlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q29kZUxpc3RBcnJheShhcnI6IGNvZGVMaXN0VHlwZSk6IFByb21pc2U8ZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQ+IHtcblx0aWYgKHR5cGVvZiBhcnIgPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdHJldHVybiBhcnIoKTtcblx0fVxuXHRyZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlOiBEYXRlLCB0b2tlblR5cGU6IFRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldDogYm9vbGVhbik6IHN0cmluZyB7XG5cdGxldCBmb3JtYXR0ZWREYXRlVGltZSA9IFwiXCI7XG5cdGlmIChpc0RhdGVUaW1lT2Zmc2V0KSB7XG5cdFx0cmV0dXJuIGRhdGVUaW1lT2Zmc2V0LmZvcm1hdFZhbHVlKHZhbHVlLCBcInN0cmluZ1wiKSBhcyBzdHJpbmc7XG5cdH1cblx0c3dpdGNoICh0b2tlblR5cGUpIHtcblx0XHRjYXNlIFwiQ2FsZW5kYXJcIjpcblx0XHRcdGZvcm1hdHRlZERhdGVUaW1lID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoKS5mb3JtYXQodmFsdWUpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIlRpbWVcIjpcblx0XHRcdGZvcm1hdHRlZERhdGVUaW1lID0gRGF0ZUZvcm1hdC5nZXRUaW1lSW5zdGFuY2UoKS5mb3JtYXQodmFsdWUpO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrO1xuXHR9XG5cdHJldHVybiBmb3JtYXR0ZWREYXRlVGltZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9wZXJhdG9yIGFuZCB2YWx1ZS5cbiAqIEBwYXJhbSBvcGVyYXRvciBUaGUgb3BlcmF0b3IgdG8gcmVwcmVzZW50XG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlcHJlc2VudFxuICogQHBhcmFtIHRva2VuVHlwZSBUaGUgdG9rZW4ncyB0eXBlXG4gKiBAcGFyYW0gaXNEYXRlVGltZU9mZnNldCBDaGVja3MgaWYgdGhlIGRhdGEgdHlwZSBpcyBvZiBEYXRlVGltZU9mZnNldFxuICogQHJldHVybnMgVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb3BlcmF0b3IgYW5kIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yKFxuXHRvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsXG5cdHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSxcblx0dG9rZW5UeXBlOiBUb2tlblR5cGUsXG5cdGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW5cbik6IHN0cmluZyB7XG5cdGxldCBuZXdWYWx1ZTogbnVtYmVyIHwgc3RyaW5nID0gXCJcIjtcblx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZSA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWUpO1xuXHR9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0fSBlbHNlIHtcblx0XHRuZXdWYWx1ZSA9IHZhbHVlO1xuXHR9XG5cblx0c3dpdGNoIChvcGVyYXRvcikge1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuR1Q6XG5cdFx0XHRyZXR1cm4gYD4gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTFQ6XG5cdFx0XHRyZXR1cm4gYDwgJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuR0U6XG5cdFx0XHRyZXR1cm4gYD49ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkxFOlxuXHRcdFx0cmV0dXJuIGA8PSAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5FUTpcblx0XHRcdHJldHVybiBgJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuQ29udGFpbnM6XG5cdFx0XHRyZXR1cm4gYCoke25ld1ZhbHVlfSpgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuRW5kc1dpdGg6XG5cdFx0XHRyZXR1cm4gYCoke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5TdGFydHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAke25ld1ZhbHVlfSpgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTkU6XG5cdFx0XHRyZXR1cm4gYCE9KCR7bmV3VmFsdWV9KWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWluczpcblx0XHRcdHJldHVybiBgISgqJHtuZXdWYWx1ZX0qKWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RFbmRzV2l0aDpcblx0XHRcdHJldHVybiBgISgqJHtuZXdWYWx1ZX0pYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5vdFN0YXJ0c1dpdGg6XG5cdFx0XHRyZXR1cm4gYCEoJHtuZXdWYWx1ZX0qKWA7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBuZXdWYWx1ZT8udG9TdHJpbmcoKTtcblx0fVxufVxuXG5mdW5jdGlvbiBtYXBPcGVyYXRvckZvclZhbHVlSGVscChvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsIHZhbHVlOiBDb2RlTGlzdFR5cGUsIHRva2VuVHlwZTogVG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuKTogc3RyaW5nIHtcblx0cmV0dXJuIG1hcE9wZXJhdG9yKG9wZXJhdG9yLCB2YWx1ZS5kZXNjcmlwdGlvbiwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gbWFwT3BlcmF0b3JGb3JCZXR3ZWVuT3BlcmF0b3IoXG5cdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcixcblx0dmFsdWVzOiBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMgfCBWYWx1ZUhlbHBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdHRva2VuVHlwZTogVG9rZW5UeXBlLFxuXHRpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuXG4pOiBzdHJpbmcge1xuXHRsZXQgbmV3VmFsdWUxOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gXCJcIjtcblx0bGV0IG5ld1ZhbHVlMjogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IFwiXCI7XG5cdGlmICh0eXBlb2YgdmFsdWVzWzBdID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlMSA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWVzWzBdKTtcblx0fSBlbHNlIGlmICh2YWx1ZXNbMF0gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUxID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZXNbMF0sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdG5ld1ZhbHVlMSA9IHZhbHVlc1swXS5kZXNjcmlwdGlvbiBhcyBzdHJpbmc7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUxID0gdmFsdWVzWzBdO1xuXHR9XG5cblx0aWYgKHR5cGVvZiB2YWx1ZXNbMV0gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUyID0gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZXNbMV0pO1xuXHR9IGVsc2UgaWYgKHZhbHVlc1sxXSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZTIgPSBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlc1sxXSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWVzWzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0bmV3VmFsdWUyID0gdmFsdWVzWzFdLmRlc2NyaXB0aW9uIGFzIHN0cmluZztcblx0fSBlbHNlIHtcblx0XHRuZXdWYWx1ZTIgPSB2YWx1ZXNbMV07XG5cdH1cblx0aWYgKG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCkge1xuXHRcdHJldHVybiBgJHtuZXdWYWx1ZTF9Li4uJHtuZXdWYWx1ZTJ9YDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gYCEoJHtuZXdWYWx1ZTF9Li4uJHtuZXdWYWx1ZTJ9KWA7XG5cdH1cbn1cblxuZnVuY3Rpb24gaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yKTogYm9vbGVhbiB7XG5cdHJldHVybiBvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuQlQgfHwgb3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLk5CO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlOiBib29sZWFuKTogc3RyaW5nIHtcblx0cmV0dXJuIHZhbHVlXG5cdFx0PyByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9TRUxFQ1RFRF9WQUxVRVNfVFJVRVwiKVxuXHRcdDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0VMRUNURURfVkFMVUVTX0ZBTFNFXCIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXREYXRhKFxuXHR0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdLFxuXHRmaWx0ZXJWYWx1ZXM6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl0sXG5cdGZpbHRlckJhck1ldGFkYXRhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdXG4pOiB2b2lkIHtcblx0aWYgKGZpbHRlclZhbHVlcykge1xuXHRcdGNvbnN0IHZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG5cdFx0Zm9yIChjb25zdCBmaWx0ZXJWYWx1ZSBvZiBmaWx0ZXJWYWx1ZXMpIHtcblx0XHRcdGNvbnN0IGZpbHRlckNyaXRlcmlhID0gZmlsdGVyQmFyTWV0YWRhdGEuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRcdFx0aWYgKGZpbHRlckNyaXRlcmlhKSB7XG5cdFx0XHRcdGNvbnN0IHsgdHlwZSB9ID0gZmlsdGVyQ3JpdGVyaWE7XG5cdFx0XHRcdGNvbnN0IHRva2VuSW5kZXggPSB0b2tlbnMuZmluZEluZGV4KCh0b2tlbikgPT4gdG9rZW4ua2V5ID09PSBmaWx0ZXJWYWx1ZS5uYW1lKTtcblx0XHRcdFx0Y29uc3QgeyBvcGVyYXRvciwgdmFsdWVzIH0gPSBmaWx0ZXJWYWx1ZTtcblx0XHRcdFx0bGV0IGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uO1xuXHRcdFx0XHRpZiAoRWFzeUZpbHRlclV0aWxzLmlzQmV0d2VlblNlbGVjdGVkVmFsdWVzKG9wZXJhdG9yKSkge1xuXHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSB7XG5cdFx0XHRcdFx0XHRvcGVyYXRvcixcblx0XHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzOiB2YWx1ZXMgYXMgQmV0d2VlblNlbGVjdGVkVmFsdWVzXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0ge1xuXHRcdFx0XHRcdFx0b3BlcmF0b3I6IG9wZXJhdG9yIGFzIEV4Y2x1ZGU8RmlsdGVyT3BlcmF0b3IsIEZpbHRlck9wZXJhdG9yLkJUIHwgRmlsdGVyT3BlcmF0b3IuTkI+LFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBzdHJpbmdbXSB8IERhdGVbXSB8IG51bWJlcltdIHwgYm9vbGVhbltdXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodG9rZW5JbmRleCA9PT0gLTEpIHtcblx0XHRcdFx0XHQvLyBBZGQgbmV3IHRva2VuIGlmIGl0IGRvZXNuJ3QgZXhpc3Rcblx0XHRcdFx0XHRjb25zdCBuZXdUb2tlbjogVG9rZW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRcdFx0a2V5OiBmaWx0ZXJWYWx1ZS5uYW1lLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGZpbHRlckNyaXRlcmlhLmxhYmVsIGFzIHN0cmluZyxcblx0XHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFtrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXSxcblx0XHRcdFx0XHRcdHR5cGU6IHR5cGUgYXMgRXhjbHVkZTxUb2tlblR5cGUsIFwiVmFsdWVIZWxwXCI+LFxuXHRcdFx0XHRcdFx0YnVzeTogdHlwZSA9PT0gXCJWYWx1ZUhlbHBcIiA/IHRydWUgOiBmYWxzZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0dG9rZW5zLnB1c2gobmV3VG9rZW4pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIFVwZGF0ZSBleGlzdGluZyB0b2tlblxuXHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRUb2tlbiA9IHRva2Vuc1t0b2tlbkluZGV4XTtcblx0XHRcdFx0XHQvL0lmIGl0cyBkZWZhdWx0IHZhbHVlICwgb3ZlcnJpZGUgaXRcblx0XHRcdFx0XHRpZiAoKGN1cnJlbnRUb2tlbi5pc1JlcXVpcmVkID8/IGZhbHNlKSAmJiAhdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2Vuc1tjdXJyZW50VG9rZW4ua2V5XSkge1xuXHRcdFx0XHRcdFx0Y3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBba2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc107XG5cdFx0XHRcdFx0XHR2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zW2N1cnJlbnRUb2tlbi5rZXldID0gdHJ1ZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0KGN1cnJlbnRUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIGFzIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10pLnB1c2goa2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbmNvbnN0IEVhc3lGaWx0ZXJVdGlscyA9IHtcblx0YXJlSXRlbXNTYW1lLFxuXHRhcmVDb2RlTGlzdHNTYW1lLFxuXHRnZXRDb2RlTGlzdEFycmF5LFxuXHRhcmVBcnJheVNhbWUsXG5cdG1hcE9wZXJhdG9yLFxuXHRtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcixcblx0aXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdGZvcm1hdERhdGEsXG5cdG1hcE9wZXJhdG9yRm9yVmFsdWVIZWxwXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFYXN5RmlsdGVyVXRpbHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFvQkEsTUFBTUEsY0FBYyxHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFFO0VBQ25FLE1BQU1DLGNBQWMsR0FBRyxJQUFJ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QUFJVSx5QkFBd0Q7VUFDNUQsSUFBSUMsZUFBZSxDQUFDbkIsdUJBQXVCLENBQUNwRCxRQUFRLENBQUMsRUFBRTtZQUN0RHNFLHlCQUF5QixHQUFHO2NBQzNCdEUsUUFBUTtjQUNSQyxjQUFjLEVBQUUrQztZQUNqQixDQUFDO1VBQ0YsQ0FBQyxNQUFNO1lBQ05zQix5QkFBeUIsR0FBRztjQUMzQnRFLFFBQVEsRUFBRUEsUUFBMEU7Y0FDcEZDLGNBQWMsRUFBRStDO1lBQ2pCLENBQUM7VUFDRjtVQUNBLElBQUlrQixVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDdEI7WUFDQSxNQUFNTSxRQUF5QixHQUFHO2NBQ2pDSCxHQUFHLEVBQUVULFdBQVcsQ0FBQ0ksSUFBSTtjQUNyQlMsS0FBSyxFQUFFWixjQUFjLENBQUNZLEtBQWU7Y0FDckNILHlCQUF5QixFQUFFLENBQUNBLHlCQUF5QixDQUFDO2NBQ3RETCxJQUFJLEVBQUVBLElBQXVDO2NBQzdDUyxJQUFJLEVBQUVULElBQUksS0FBSyxXQUFXLEdBQUcsSUFBSSxHQUFHO1lBQ3JDLENBQUM7WUFDRFQsTUFBTSxDQUFDbUIsSUFBSSxDQUFDSCxRQUFRLENBQUM7VUFDdEIsQ0FBQyxNQUFNO1lBQ047WUFDQSxNQUFNSSxZQUFZLEdBQUdwQixNQUFNLENBQUNVLFVBQVUsQ0FBQztZQUN2QztZQUNBLElBQUksQ0FBQ1UsWUFBWSxDQUFDQyxVQUFVLElBQUksS0FBSyxLQUFLLENBQUNsQiw0QkFBNEIsQ0FBQ2lCLFlBQVksQ0FBQ1AsR0FBRyxDQUFDLEVBQUU7Y0FDMUZPLFlBQVksQ0FBQ04seUJBQXlCLEdBQUcsQ0FBQ0EseUJBQXlCLENBQUM7Y0FDcEVYLDRCQUE0QixDQUFDaUIsWUFBWSxDQUFDUCxHQUFHLENBQUMsR0FBRyxJQUFJO1lBQ3RELENBQUMsTUFBTTtjQUNMTyxZQUFZLENBQUNOLHlCQUF5QixDQUFxQ0ssSUFBSSxDQUFDTCx5QkFBeUIsQ0FBQztZQUM1RztVQUNEO1FBQ0Q7TUFDRDtJQUNEO0VBQ0Q7RUFFQSxNQUFNQyxlQUFlLEdBQUc7SUFDdkI1RSxZQUFZO0lBQ1phLGdCQUFnQjtJQUNoQkUsZ0JBQWdCO0lBQ2hCSCxZQUFZO0lBQ1pxQixXQUFXO0lBQ1htQiw2QkFBNkI7SUFDN0JLLHVCQUF1QjtJQUN2QkcsVUFBVTtJQUNWVDtFQUNELENBQUM7RUFBQyxPQUVheUIsZUFBZTtBQUFBIiwiaWdub3JlTGlzdCI6W119
261
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsInZhbHVlIiwiaW5kZXgiLCJkZWVwRXF1YWwiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRGF0ZSIsIkZpbHRlck9wZXJhdG9yIiwiR1QiLCJMVCIsIkdFIiwiTEUiLCJFUSIsIkNvbnRhaW5zIiwiRW5kc1dpdGgiLCJTdGFydHNXaXRoIiwiTkUiLCJOb3RDb250YWlucyIsIk5vdEVuZHNXaXRoIiwiTm90U3RhcnRzV2l0aCIsInRvU3RyaW5nIiwibWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAiLCJtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvciIsInZhbHVlcyIsIm5ld1ZhbHVlMSIsIm5ld1ZhbHVlMiIsIkJUIiwiaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMiLCJOQiIsImdldFRleHQiLCJpc0ludmFsaWRTaW5nbGVSYW5nZSIsImZpbHRlclZhbHVlIiwiYWxsb3dlZCIsImluY2x1ZGVzIiwiZm9ybWF0RGF0YSIsInRva2VucyIsImZpbHRlclZhbHVlcyIsImZpbHRlckJhck1ldGFkYXRhIiwic2V0TWVzc2FnZVN0cmlwRm9yVmFsaWRhdGVkRmlsdGVycyIsInZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnMiLCJub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMiLCJzaW5nbGVSYW5nZVRva2VuTGFiZWxzIiwiaGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMiLCJmaWx0ZXJDcml0ZXJpYSIsImZpbmQiLCJmaWVsZCIsIm5hbWUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJmaWx0ZXJhYmxlIiwicHVzaCIsImxhYmVsIiwiaGlkZGVuRmlsdGVyIiwiZmlsdGVyUmVzdHJpY3Rpb24iLCJ0eXBlIiwidG9rZW5JbmRleCIsImZpbmRJbmRleCIsInRva2VuIiwia2V5Iiwia2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyIsIkVhc3lGaWx0ZXJVdGlscyIsIm5ld1Rva2VuIiwiYnVzeSIsImN1cnJlbnRUb2tlbiIsImlzUmVxdWlyZWQiLCJtZXNzYWdlcyIsIm5vbkZpbHRlcmFibGVUb2tlbkxhYmVsIiwiam9pbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsidXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcmltaXRpdmVUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IERhdGVGb3JtYXQgZnJvbSBcInNhcC91aS9jb3JlL2Zvcm1hdC9EYXRlRm9ybWF0XCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IERhdGVUaW1lT2Zmc2V0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9EYXRlVGltZU9mZnNldFwiO1xuaW1wb3J0IHR5cGUgeyBFYXN5RmlsdGVyUmVzdWx0LCBQcm9wZXJ0eU1ldGFkYXRhIH0gZnJvbSBcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWx0ZXIvRWFzeUZpbHRlclwiO1xuaW1wb3J0IHR5cGUge1xuXHRCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdENvZGVMaXN0VHlwZSxcblx0RWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEsXG5cdFRva2VuRGVmaW5pdGlvbixcblx0VG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24sXG5cdFRva2VuVHlwZSxcblx0VmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25cbn0gZnJvbSBcIi4vRWFzeUZpbHRlckJhckNvbnRhaW5lclwiO1xuXG50eXBlIGNvZGVMaXN0VHlwZSA9IFByb3BlcnR5TWV0YWRhdGFbXCJjb2RlTGlzdFwiXTtcbnR5cGUgZmluYWxDb2RlTGlzdFR5cGUgPSB7IHZhbHVlOiBQcmltaXRpdmVUeXBlOyBkZXNjcmlwdGlvbj86IHN0cmluZyB9W107XG5jb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb250cm9sc1wiKSE7XG5jb25zdCBkYXRlVGltZU9mZnNldCA9IG5ldyBEYXRlVGltZU9mZnNldCgpO1xuXG5mdW5jdGlvbiBhcmVJdGVtc1NhbWUoXG5cdGFycjE6IHJlYWRvbmx5IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10gfCBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSxcblx0YXJyMjogcmVhZG9ubHkgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdXG4pOiBib29sZWFuIHtcblx0aWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHQvLyBDb21wYXJlIGVsZW1lbnRzIG9mIGJvdGggYXJyYXlzXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYXJyMS5sZW5ndGg7IGkrKykge1xuXHRcdGlmIChcblx0XHRcdGFycjFbaV0ub3BlcmF0b3IgIT09IGFycjJbaV0ub3BlcmF0b3IgfHxcblx0XHRcdCFhcnIxW2ldLnNlbGVjdGVkVmFsdWVzLmV2ZXJ5KFxuXHRcdFx0XHQodmFsdWUsIGluZGV4KSA9PlxuXHRcdFx0XHRcdHZhbHVlID09PSBhcnIyW2ldLnNlbGVjdGVkVmFsdWVzW2luZGV4XSB8fFxuXHRcdFx0XHRcdCh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcblx0XHRcdFx0XHRcdGRlZXBFcXVhbCgodmFsdWUgYXMgQ29kZUxpc3RUeXBlKS52YWx1ZSwgKGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdIGFzIENvZGVMaXN0VHlwZSkudmFsdWUpICYmXG5cdFx0XHRcdFx0XHQodmFsdWUgYXMgQ29kZUxpc3RUeXBlKS5kZXNjcmlwdGlvbiA9PT0gKGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdIGFzIENvZGVMaXN0VHlwZSkuZGVzY3JpcHRpb24pXG5cdFx0XHQpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0cnVlOyAvLyBBcnJheXMgYXJlIHRoZSBzYW1lXG59XG5cbmZ1bmN0aW9uIGFyZUFycmF5U2FtZShhcnIxOiByZWFkb25seSB1bmtub3duW10sIGFycjI6IHJlYWRvbmx5IHVua25vd25bXSk6IGJvb2xlYW4ge1xuXHRpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdC8vIENvbXBhcmUgZWxlbWVudHMgb2YgYm90aCBhcnJheXNcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnIxLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKGFycjFbaV0gIT09IGFycjJbaV0pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHRydWU7IC8vIEFycmF5cyBhcmUgdGhlIHNhbWVcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXJlQ29kZUxpc3RzU2FtZShhcnIxOiBjb2RlTGlzdFR5cGUsIGFycjI6IGNvZGVMaXN0VHlwZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRjb25zdCBhcnJOZXcxOiBmaW5hbENvZGVMaXN0VHlwZSB8IHVuZGVmaW5lZCA9IGF3YWl0IGdldENvZGVMaXN0QXJyYXkoYXJyMSk7XG5cdGNvbnN0IGFyck5ldzI6IGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZ2V0Q29kZUxpc3RBcnJheShhcnIyKTtcblx0Y29uc3QgZGVzY3JpcHRpb25OZXcxID0gYXJyTmV3MT8ubWFwKChkYXRhKSA9PiBkYXRhLmRlc2NyaXB0aW9uKTtcblx0Y29uc3QgZGVzY3JpcHRpb25OZXcyID0gYXJyTmV3Mj8ubWFwKChkYXRhKSA9PiBkYXRhLmRlc2NyaXB0aW9uKTtcblxuXHRjb25zdCB2YWx1ZTEgPSBhcnJOZXcxPy5tYXAoKGRhdGEpID0+IGRhdGEudmFsdWUpO1xuXHRjb25zdCB2YWx1ZTIgPSBhcnJOZXcyPy5tYXAoKGRhdGEpID0+IGRhdGEudmFsdWUpO1xuXHRpZiAoIWRlc2NyaXB0aW9uTmV3MSB8fCAhZGVzY3JpcHRpb25OZXcyKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdHJldHVybiBhcmVBcnJheVNhbWUoZGVzY3JpcHRpb25OZXcxLCBkZXNjcmlwdGlvbk5ldzIpICYmIGFyZUFycmF5U2FtZSh2YWx1ZTEgYXMgUHJpbWl0aXZlVHlwZSwgdmFsdWUyIGFzIFByaW1pdGl2ZVR5cGUpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb2RlTGlzdEFycmF5KGFycjogY29kZUxpc3RUeXBlKTogUHJvbWlzZTxmaW5hbENvZGVMaXN0VHlwZSB8IHVuZGVmaW5lZD4ge1xuXHRpZiAodHlwZW9mIGFyciA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0cmV0dXJuIGFycigpO1xuXHR9XG5cdHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWU6IERhdGUsIHRva2VuVHlwZTogVG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuKTogc3RyaW5nIHtcblx0bGV0IGZvcm1hdHRlZERhdGVUaW1lID0gXCJcIjtcblx0aWYgKGlzRGF0ZVRpbWVPZmZzZXQpIHtcblx0XHRyZXR1cm4gZGF0ZVRpbWVPZmZzZXQuZm9ybWF0VmFsdWUodmFsdWUsIFwic3RyaW5nXCIpIGFzIHN0cmluZztcblx0fVxuXHRzd2l0Y2ggKHRva2VuVHlwZSkge1xuXHRcdGNhc2UgXCJDYWxlbmRhclwiOlxuXHRcdFx0Zm9ybWF0dGVkRGF0ZVRpbWUgPSBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZSgpLmZvcm1hdCh2YWx1ZSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiVGltZVwiOlxuXHRcdFx0Zm9ybWF0dGVkRGF0ZVRpbWUgPSBEYXRlRm9ybWF0LmdldFRpbWVJbnN0YW5jZSgpLmZvcm1hdCh2YWx1ZSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIGZvcm1hdHRlZERhdGVUaW1lO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb3BlcmF0b3IgYW5kIHZhbHVlLlxuICogQHBhcmFtIG9wZXJhdG9yIFRoZSBvcGVyYXRvciB0byByZXByZXNlbnRcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVwcmVzZW50XG4gKiBAcGFyYW0gdG9rZW5UeXBlIFRoZSB0b2tlbidzIHR5cGVcbiAqIEBwYXJhbSBpc0RhdGVUaW1lT2Zmc2V0IENoZWNrcyBpZiB0aGUgZGF0YSB0eXBlIGlzIG9mIERhdGVUaW1lT2Zmc2V0XG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvcGVyYXRvciBhbmQgdmFsdWVcbiAqL1xuZnVuY3Rpb24gbWFwT3BlcmF0b3IoXG5cdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcixcblx0dmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlLFxuXHR0b2tlblR5cGU6IFRva2VuVHlwZSxcblx0aXNEYXRlVGltZU9mZnNldDogYm9vbGVhblxuKTogc3RyaW5nIHtcblx0bGV0IG5ld1ZhbHVlOiBudW1iZXIgfCBzdHJpbmcgPSBcIlwiO1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlID0gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZSk7XG5cdH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUgPSBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZhbHVlID0gdmFsdWU7XG5cdH1cblxuXHRzd2l0Y2ggKG9wZXJhdG9yKSB7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5HVDpcblx0XHRcdHJldHVybiBgPiAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5MVDpcblx0XHRcdHJldHVybiBgPCAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5HRTpcblx0XHRcdHJldHVybiBgPj0gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTEU6XG5cdFx0XHRyZXR1cm4gYDw9ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkVROlxuXHRcdFx0cmV0dXJuIGAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Db250YWluczpcblx0XHRcdHJldHVybiBgKiR7bmV3VmFsdWV9KmA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5FbmRzV2l0aDpcblx0XHRcdHJldHVybiBgKiR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLlN0YXJ0c1dpdGg6XG5cdFx0XHRyZXR1cm4gYCR7bmV3VmFsdWV9KmA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5ORTpcblx0XHRcdHJldHVybiBgIT0oJHtuZXdWYWx1ZX0pYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5vdENvbnRhaW5zOlxuXHRcdFx0cmV0dXJuIGAhKCoke25ld1ZhbHVlfSopYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5vdEVuZHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAhKCoke25ld1ZhbHVlfSlgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90U3RhcnRzV2l0aDpcblx0XHRcdHJldHVybiBgISgke25ld1ZhbHVlfSopYDtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIG5ld1ZhbHVlPy50b1N0cmluZygpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yRm9yVmFsdWVIZWxwKG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciwgdmFsdWU6IENvZGVMaXN0VHlwZSwgdG9rZW5UeXBlOiBUb2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRyZXR1cm4gbWFwT3BlcmF0b3Iob3BlcmF0b3IsIHZhbHVlLmRlc2NyaXB0aW9uLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xufVxuXG5mdW5jdGlvbiBtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcihcblx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLFxuXHR2YWx1ZXM6IEJldHdlZW5TZWxlY3RlZFZhbHVlcyB8IFZhbHVlSGVscEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0dG9rZW5UeXBlOiBUb2tlblR5cGUsXG5cdGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW5cbik6IHN0cmluZyB7XG5cdGxldCBuZXdWYWx1ZTE6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSBcIlwiO1xuXHRsZXQgbmV3VmFsdWUyOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gXCJcIjtcblx0aWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUxID0gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZXNbMF0pO1xuXHR9IGVsc2UgaWYgKHZhbHVlc1swXSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZTEgPSBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlc1swXSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWVzWzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0bmV3VmFsdWUxID0gdmFsdWVzWzBdLmRlc2NyaXB0aW9uIGFzIHN0cmluZztcblx0fSBlbHNlIHtcblx0XHRuZXdWYWx1ZTEgPSB2YWx1ZXNbMF07XG5cdH1cblxuXHRpZiAodHlwZW9mIHZhbHVlc1sxXSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZTIgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlc1sxXSk7XG5cdH0gZWxzZSBpZiAodmFsdWVzWzFdIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlMiA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWVzWzFdLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRuZXdWYWx1ZTIgPSB2YWx1ZXNbMV0uZGVzY3JpcHRpb24gYXMgc3RyaW5nO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZhbHVlMiA9IHZhbHVlc1sxXTtcblx0fVxuXHRpZiAob3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLkJUKSB7XG5cdFx0cmV0dXJuIGAke25ld1ZhbHVlMX0uLi4ke25ld1ZhbHVlMn1gO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBgISgke25ld1ZhbHVlMX0uLi4ke25ld1ZhbHVlMn0pYDtcblx0fVxufVxuXG5mdW5jdGlvbiBpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyhvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IpOiBib29sZWFuIHtcblx0cmV0dXJuIG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCB8fCBvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuTkI7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWU6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRyZXR1cm4gdmFsdWVcblx0XHQ/IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1NFTEVDVEVEX1ZBTFVFU19UUlVFXCIpXG5cdFx0OiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9TRUxFQ1RFRF9WQUxVRVNfRkFMU0VcIik7XG59XG5cbi8vVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlIGZpbHRlciBpcyBub3QgYSB2YWxpZCBcIlNpbmdsZVJhbmdlXCIgKGUuZy4sIHdyb25nIG9wZXJhdG9yIG9yIHRvbyBtYW55IHZhbHVlcyksIGFuZCBmYWxzZSBpZiBpdCBpcyB2YWxpZC5cbmZ1bmN0aW9uIGlzSW52YWxpZFNpbmdsZVJhbmdlKGZpbHRlclZhbHVlOiB7IG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcjsgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IGJvb2xlYW4pW10gfSk6IGJvb2xlYW4ge1xuXHRjb25zdCBhbGxvd2VkID0gW0ZpbHRlck9wZXJhdG9yLkVRLCBGaWx0ZXJPcGVyYXRvci5MRSwgRmlsdGVyT3BlcmF0b3IuTFQsIEZpbHRlck9wZXJhdG9yLkdFLCBGaWx0ZXJPcGVyYXRvci5HVCwgRmlsdGVyT3BlcmF0b3IuQlRdO1xuXG5cdC8vIFx0ZmlsdGVyVmFsdWUub3BlcmF0b3IgIT09IEZpbHRlck9wZXJhdG9yLkJUIGVuc3VyZXMgQlQgaXMgYWx3YXlzIHZhbGlkLlxuXHQvLyAhYWxsb3dlZC5pbmNsdWRlcygpIGJsb2NrcyB1bnN1cHBvcnRlZCBvcGVyYXRvcnMuXG5cdC8vIGZpbHRlclZhbHVlLnZhbHVlcy5sZW5ndGggPj0gMiBibG9ja3MgbXVsdGlwbGUgdmFsdWVzIGZvciBzaW5nbGUtcmFuZ2UgZmlsdGVycy5cblx0Ly8gVG9nZXRoZXIsIHRoaXMgcmV0dXJucyB0cnVlIHdoZW4gdGhlIGZpbHRlciBpcyBub3QgYSB2YWxpZCBzaW5nbGUtcmFuZ2UuXG5cdHJldHVybiBmaWx0ZXJWYWx1ZS5vcGVyYXRvciAhPT0gRmlsdGVyT3BlcmF0b3IuQlQgJiYgKCFhbGxvd2VkLmluY2x1ZGVzKGZpbHRlclZhbHVlLm9wZXJhdG9yKSB8fCBmaWx0ZXJWYWx1ZS52YWx1ZXMubGVuZ3RoID49IDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXREYXRhKFxuXHR0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdLFxuXHRmaWx0ZXJWYWx1ZXM6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl0sXG5cdGZpbHRlckJhck1ldGFkYXRhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdLFxuXHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzOiAobXNnOiBzdHJpbmcpID0+IHZvaWRcbik6IHZvaWQge1xuXHRpZiAoZmlsdGVyVmFsdWVzKSB7XG5cdFx0Y29uc3QgdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VuczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblx0XHRjb25zdCBub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc2luZ2xlUmFuZ2VUb2tlbkxhYmVsczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBoaWRkZW5GaWx0ZXJUb2tlbkxhYmVsczogc3RyaW5nW10gPSBbXTtcblxuXHRcdGZvciAoY29uc3QgZmlsdGVyVmFsdWUgb2YgZmlsdGVyVmFsdWVzKSB7XG5cdFx0XHRjb25zdCBmaWx0ZXJDcml0ZXJpYSA9IGZpbHRlckJhck1ldGFkYXRhLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBmaWx0ZXJWYWx1ZS5uYW1lKTtcblx0XHRcdGlmIChmaWx0ZXJDcml0ZXJpYSkge1xuXHRcdFx0XHQvLyBPbmx5IGJsb2NrIGlmIGZpbHRlcmFibGUgaXMgZmFsc2Vcblx0XHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWx0ZXJDcml0ZXJpYSwgXCJmaWx0ZXJhYmxlXCIpICYmICFmaWx0ZXJDcml0ZXJpYT8uZmlsdGVyYWJsZSkge1xuXHRcdFx0XHRcdG5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5wdXNoKGZpbHRlckNyaXRlcmlhLmxhYmVsIHx8IGZpbHRlckNyaXRlcmlhLm5hbWUpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIE9ubHkgYmxvY2sgaWYgaGlkZGVuRmlsdGVyIGlzIHRydWVcblx0XHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWx0ZXJDcml0ZXJpYSwgXCJoaWRkZW5GaWx0ZXJcIikgJiYgZmlsdGVyQ3JpdGVyaWE/LmhpZGRlbkZpbHRlcikge1xuXHRcdFx0XHRcdGhpZGRlbkZpbHRlclRva2VuTGFiZWxzLnB1c2goZmlsdGVyQ3JpdGVyaWEubGFiZWwgfHwgZmlsdGVyQ3JpdGVyaWEubmFtZSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gT25seSBhcHBseSBTaW5nbGVSYW5nZSBsb2dpYyBpZiBmaWx0ZXJSZXN0cmljdGlvbiBpcyBzZXQgdG8gU2luZ2xlUmFuZ2Vcblx0XHRcdFx0aWYgKGZpbHRlckNyaXRlcmlhPy5maWx0ZXJSZXN0cmljdGlvbiA9PT0gXCJTaW5nbGVSYW5nZVwiICYmIGlzSW52YWxpZFNpbmdsZVJhbmdlKGZpbHRlclZhbHVlKSkge1xuXHRcdFx0XHRcdHNpbmdsZVJhbmdlVG9rZW5MYWJlbHMucHVzaChmaWx0ZXJDcml0ZXJpYS5sYWJlbCB8fCBmaWx0ZXJDcml0ZXJpYS5uYW1lKTtcblx0XHRcdFx0XHRmaWx0ZXJWYWx1ZS52YWx1ZXMgPSBbXTsgLy8gUmVzZXQgdmFsdWVzIHRvIGF2b2lkIGFkZGluZyBpbnZhbGlkIHRva2VuIHZhbHVlc1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgeyB0eXBlIH0gPSBmaWx0ZXJDcml0ZXJpYTtcblx0XHRcdFx0Y29uc3QgdG9rZW5JbmRleCA9IHRva2Vucy5maW5kSW5kZXgoKHRva2VuKSA9PiB0b2tlbi5rZXkgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRcdFx0XHRjb25zdCB7IG9wZXJhdG9yLCB2YWx1ZXMgfSA9IGZpbHRlclZhbHVlO1xuXHRcdFx0XHRsZXQga2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb247XG5cdFx0XHRcdGlmIChFYXN5RmlsdGVyVXRpbHMuaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3IpKSB7XG5cdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyA9IHtcblx0XHRcdFx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXNcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSB7XG5cdFx0XHRcdFx0XHRvcGVyYXRvcjogb3BlcmF0b3IgYXMgRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj4sXG5cdFx0XHRcdFx0XHRzZWxlY3RlZFZhbHVlczogdmFsdWVzIGFzIHN0cmluZ1tdIHwgRGF0ZVtdIHwgbnVtYmVyW10gfCBib29sZWFuW11cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0b2tlbkluZGV4ID09PSAtMSkge1xuXHRcdFx0XHRcdC8vIEFkZCBuZXcgdG9rZW4gaWYgaXQgZG9lc24ndCBleGlzdFxuXHRcdFx0XHRcdGNvbnN0IG5ld1Rva2VuOiBUb2tlbkRlZmluaXRpb24gPSB7XG5cdFx0XHRcdFx0XHRrZXk6IGZpbHRlclZhbHVlLm5hbWUsXG5cdFx0XHRcdFx0XHRsYWJlbDogZmlsdGVyQ3JpdGVyaWEubGFiZWwgYXMgc3RyaW5nLFxuXHRcdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdLFxuXHRcdFx0XHRcdFx0dHlwZTogdHlwZSBhcyBFeGNsdWRlPFRva2VuVHlwZSwgXCJWYWx1ZUhlbHBcIj4sXG5cdFx0XHRcdFx0XHRidXN5OiB0eXBlID09PSBcIlZhbHVlSGVscFwiID8gdHJ1ZSA6IGZhbHNlXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR0b2tlbnMucHVzaChuZXdUb2tlbik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gVXBkYXRlIGV4aXN0aW5nIHRva2VuXG5cdFx0XHRcdFx0Y29uc3QgY3VycmVudFRva2VuID0gdG9rZW5zW3Rva2VuSW5kZXhdO1xuXHRcdFx0XHRcdC8vSWYgaXRzIGRlZmF1bHQgdmFsdWUgLCBvdmVycmlkZSBpdFxuXHRcdFx0XHRcdGlmICgoY3VycmVudFRva2VuLmlzUmVxdWlyZWQgPz8gZmFsc2UpICYmICF2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zW2N1cnJlbnRUb2tlbi5rZXldKSB7XG5cdFx0XHRcdFx0XHRjdXJyZW50VG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyA9IFtrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXTtcblx0XHRcdFx0XHRcdHZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnNbY3VycmVudFRva2VuLmtleV0gPSB0cnVlO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQoY3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgYXMgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSkucHVzaChrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKG5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5sZW5ndGggPiAwIHx8IHNpbmdsZVJhbmdlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCB8fCBoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlczogc3RyaW5nW10gPSBbXTtcblx0XHRcdGlmIChub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjb25zdCBub25GaWx0ZXJhYmxlVG9rZW5MYWJlbCA9IGA8c3Ryb25nPiR7bm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gO1xuXHRcdFx0XHRtZXNzYWdlcy5wdXNoKHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX05PTl9GSUxURVJBQkxFXCIsIFtub25GaWx0ZXJhYmxlVG9rZW5MYWJlbF0pKTtcblx0XHRcdH1cblx0XHRcdGlmIChoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNvbnN0IGxhYmVsID0gYDxzdHJvbmc+JHtoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5qb2luKFwiLCBcIil9PC9zdHJvbmc+YDtcblx0XHRcdFx0bWVzc2FnZXMucHVzaChyZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9ISURERU5fRklMVEVSXCIsIFtsYWJlbF0pKTtcblx0XHRcdH1cblx0XHRcdGlmIChzaW5nbGVSYW5nZVRva2VuTGFiZWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y29uc3QgbGFiZWwgPSBgPHN0cm9uZz4ke3NpbmdsZVJhbmdlVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfTwvc3Ryb25nPmA7XG5cdFx0XHRcdG1lc3NhZ2VzLnB1c2gocmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0lOR0xFX1JBTkdFXCIsIFtsYWJlbF0pKTtcblx0XHRcdH1cblx0XHRcdHNldE1lc3NhZ2VTdHJpcEZvclZhbGlkYXRlZEZpbHRlcnMobWVzc2FnZXMuam9pbihcIjxicj5cIikpO1xuXHRcdH1cblx0fVxufVxuXG5jb25zdCBFYXN5RmlsdGVyVXRpbHMgPSB7XG5cdGFyZUl0ZW1zU2FtZSxcblx0YXJlQ29kZUxpc3RzU2FtZSxcblx0Z2V0Q29kZUxpc3RBcnJheSxcblx0YXJlQXJyYXlTYW1lLFxuXHRtYXBPcGVyYXRvcixcblx0bWFwT3BlcmF0b3JGb3JCZXR3ZWVuT3BlcmF0b3IsXG5cdGlzQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRmb3JtYXREYXRhLFxuXHRtYXBPcGVyYXRvckZvclZhbHVlSGVscFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRWFzeUZpbHRlclV0aWxzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBb0JBLE1BQU1BLGNBQWMsR0FBR0MsR0FBRyxDQUFDQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBRTtFQUNuRSxNQUFNQyxjQUFjLEdBQUcsSUFBSUMsY0FBYyxDQUFDLENBQUM7RUFFM0MsU0FBU0MsWUFBWUEsQ0FDcEJDLElBQW9GLEVBQ3BGQyxJQUFvRixFQUMxRTtJQUNWLElBQUlELElBQUksQ0FBQ0UsTUFBTSxLQUFLRCxJQUFJLENBQUNDLE1BQU0sRUFBRTtNQUNoQyxPQUFPLEtBQUs7SUFDYjtJQUNBO0lBQ0EsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdILElBQUksQ0FBQ0UsTUFBTSxFQUFFQyxDQUFDLEVBQUUsRUFBRTtNQUNyQyxJQUNDSCxJQUFJLENBQUNHLENBQUMsQ0FBQyxDQUFDQyxRQUFRLEtBQUtILElBQUksQ0FBQ0UsQ0FBQyxDQUFDLENBQUNDLFFBQVEsSUFDckMsQ0FBQ0osSUFB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
@@ -199,16 +199,48 @@ function convertBoolToString(value: boolean): string {
199
199
  : resourceBundle.getText("M_EASY_FILTER_SELECTED_VALUES_FALSE");
200
200
  }
201
201
 
202
+ //This function returns true if the filter is not a valid "SingleRange" (e.g., wrong operator or too many values), and false if it is valid.
203
+ function isInvalidSingleRange(filterValue: { operator: FilterOperator; values: (string | number | Date | boolean)[] }): boolean {
204
+ const allowed = [FilterOperator.EQ, FilterOperator.LE, FilterOperator.LT, FilterOperator.GE, FilterOperator.GT, FilterOperator.BT];
205
+
206
+ // filterValue.operator !== FilterOperator.BT ensures BT is always valid.
207
+ // !allowed.includes() blocks unsupported operators.
208
+ // filterValue.values.length >= 2 blocks multiple values for single-range filters.
209
+ // Together, this returns true when the filter is not a valid single-range.
210
+ return filterValue.operator !== FilterOperator.BT && (!allowed.includes(filterValue.operator) || filterValue.values.length >= 2);
211
+ }
212
+
202
213
  function formatData(
203
214
  tokens: TokenDefinition[],
204
215
  filterValues: EasyFilterResult["filter"],
205
- filterBarMetadata: EasyFilterPropertyMetadata[]
216
+ filterBarMetadata: EasyFilterPropertyMetadata[],
217
+ setMessageStripForValidatedFilters: (msg: string) => void
206
218
  ): void {
207
219
  if (filterValues) {
208
220
  const visitedMapForMandatoryTokens: Record<string, boolean> = {};
221
+ const nonFilterableTokenLabels: string[] = [];
222
+ const singleRangeTokenLabels: string[] = [];
223
+ const hiddenFilterTokenLabels: string[] = [];
224
+
209
225
  for (const filterValue of filterValues) {
210
226
  const filterCriteria = filterBarMetadata.find((field) => field.name === filterValue.name);
211
227
  if (filterCriteria) {
228
+ // Only block if filterable is false
229
+ if (Object.prototype.hasOwnProperty.call(filterCriteria, "filterable") && !filterCriteria?.filterable) {
230
+ nonFilterableTokenLabels.push(filterCriteria.label || filterCriteria.name);
231
+ continue;
232
+ }
233
+ // Only block if hiddenFilter is true
234
+ if (Object.prototype.hasOwnProperty.call(filterCriteria, "hiddenFilter") && filterCriteria?.hiddenFilter) {
235
+ hiddenFilterTokenLabels.push(filterCriteria.label || filterCriteria.name);
236
+ continue;
237
+ }
238
+ // Only apply SingleRange logic if filterRestriction is set to SingleRange
239
+ if (filterCriteria?.filterRestriction === "SingleRange" && isInvalidSingleRange(filterValue)) {
240
+ singleRangeTokenLabels.push(filterCriteria.label || filterCriteria.name);
241
+ filterValue.values = []; // Reset values to avoid adding invalid token values
242
+ }
243
+
212
244
  const { type } = filterCriteria;
213
245
  const tokenIndex = tokens.findIndex((token) => token.key === filterValue.name);
214
246
  const { operator, values } = filterValue;
@@ -247,6 +279,22 @@ function formatData(
247
279
  }
248
280
  }
249
281
  }
282
+ if (nonFilterableTokenLabels.length > 0 || singleRangeTokenLabels.length > 0 || hiddenFilterTokenLabels.length > 0) {
283
+ const messages: string[] = [];
284
+ if (nonFilterableTokenLabels.length > 0) {
285
+ const nonFilterableTokenLabel = `<strong>${nonFilterableTokenLabels.join(", ")}</strong>`;
286
+ messages.push(resourceBundle.getText("M_EASY_FILTER_NON_FILTERABLE", [nonFilterableTokenLabel]));
287
+ }
288
+ if (hiddenFilterTokenLabels.length > 0) {
289
+ const label = `<strong>${hiddenFilterTokenLabels.join(", ")}</strong>`;
290
+ messages.push(resourceBundle.getText("M_EASY_FILTER_HIDDEN_FILTER", [label]));
291
+ }
292
+ if (singleRangeTokenLabels.length > 0) {
293
+ const label = `<strong>${singleRangeTokenLabels.join(", ")}</strong>`;
294
+ messages.push(resourceBundle.getText("M_EASY_FILTER_SINGLE_RANGE", [label]));
295
+ }
296
+ setMessageStripForValidatedFilters(messages.join("<br>"));
297
+ }
250
298
  }
251
299
  }
252
300
 
@@ -19,7 +19,6 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx", "sap/m
19
19
  function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
20
20
  /**
21
21
  * Control to indicate the possibility to edit an element inline, and to save or discard the changes after editing.
22
- * @experimental This class is experimental and provides only limited functionality. Also the API might be changed in future.
23
22
  */
24
23
  let InlineEditIndicator = (_dec = defineUI5Class("sap.fe.controls.inlineEdit.InlineEditIndicator"), _dec2 = aggregation({
25
24
  type: "sap.m.Button"
@@ -170,4 +169,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx", "sap/m
170
169
  _exports = InlineEditIndicator;
171
170
  return _exports;
172
171
  }, false);
173
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbmxpbmVFZGl0SW5kaWNhdG9yIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJhZ2dyZWdhdGlvbiIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJwcm9wZXJ0eSIsIl9kZWM2IiwiZXZlbnQiLCJfZGVjNyIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsImlkT3JTZXR0aW5ncyIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJlZGl0QnV0dG9uIiwiX2pzeCIsIkJ1dHRvbiIsImljb24iLCJCdXR0b25UeXBlIiwiVHJhbnNwYXJlbnQiLCJwcmVzcyIsIl9ldiIsImZpcmVFdmVudCIsInRvb2x0aXAiLCJnZXRUZXh0Iiwic2F2ZUJ1dHRvbiIsImZpZWxkR3JvdXBJZHMiLCJkaXNjYXJkQnV0dG9uIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImFkZEVkaXRCdXR0b25BcmlhRGVzY3JpYmVkQnkiLCJhcmlhRGVzY3JpYmVkQnlFbGVtZW50IiwidW5kZWZpbmVkIiwiYWRkQXJpYURlc2NyaWJlZEJ5IiwicmVtb3ZlQWxsRWRpdEJ1dHRvbkFyaWFEZXNjcmliZWRCeSIsInJlbW92ZUFsbEFyaWFEZXNjcmliZWRCeSIsIm9ubW91c2VvdXQiLCJtb3VzZUV2ZW50IiwiY3VycmVudFRhcmdldCIsImNvbnRhaW5zIiwicmVsYXRlZFRhcmdldCIsIm9ua2V5ZG93biIsImUiLCJrZXkiLCJzaGlmdEtleSIsInByZXZlbnREZWZhdWx0Iiwic2V0V2lkdGgiLCJ3aWR0aCIsIiQiLCJjc3MiLCJnZXREaXNjYXJkQnV0dG9uIiwiZ2V0U2F2ZUJ1dHRvbiIsImdldEVkaXRCdXR0b24iLCJyZW5kZXIiLCJybSIsImNvbnRyb2wiLCJqc3giLCJyZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIiLCJjbGFzc2VzIiwiZWRpdE1vZGUiLCJwdXNoIiwiY2xhc3MiLCJqb2luIiwicmVmIiwiY2hpbGRyZW4iLCJfanN4cyIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIklubGluZUVkaXRJbmRpY2F0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogQ29udHJvbCB0byBpbmRpY2F0ZSB0aGUgcG9zc2liaWxpdHkgdG8gZWRpdCBhbiBlbGVtZW50IGlubGluZSwgYW5kIHRvIHNhdmUgb3IgZGlzY2FyZCB0aGUgY2hhbmdlcyBhZnRlciBlZGl0aW5nLlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIGNsYXNzIGlzIGV4cGVyaW1lbnRhbCBhbmQgcHJvdmlkZXMgb25seSBsaW1pdGVkIGZ1bmN0aW9uYWxpdHkuIEFsc28gdGhlIEFQSSBtaWdodCBiZSBjaGFuZ2VkIGluIGZ1dHVyZS5cbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvbnRyb2xzLmlubGluZUVkaXQuSW5saW5lRWRpdEluZGljYXRvclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5saW5lRWRpdEluZGljYXRvciBleHRlbmRzIENvbnRyb2wge1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLkJ1dHRvblwiIH0pXG5cdHByaXZhdGUgZWRpdEJ1dHRvbjogQnV0dG9uO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uQnV0dG9uXCIgfSlcblx0cHJpdmF0ZSBzYXZlQnV0dG9uOiBCdXR0b247XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAubS5CdXR0b25cIiB9KVxuXHRwcml2YXRlIGRpc2NhcmRCdXR0b246IEJ1dHRvbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRlZGl0TW9kZSA9IGZhbHNlO1xuXG5cdEBldmVudCgpXG5cdHByZXNzRWRpdD86IEV2ZW50SGFuZGxlcjtcblxuXHRAZXZlbnQoKVxuXHRtb3VzZW91dD86IEV2ZW50SGFuZGxlcjtcblxuXHRwcml2YXRlIHdpZHRoPzogbnVtYmVyO1xuXG5cdHByaXZhdGUgcmVzb3VyY2VCdW5kbGU/OiBSZXNvdXJjZUJ1bmRsZTtcblxuXHRjb25zdHJ1Y3RvcihpZE9yU2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8SW5saW5lRWRpdEluZGljYXRvcj4gfCBzdHJpbmcsIHNldHRpbmdzPzogUHJvcGVydGllc09mPElubGluZUVkaXRJbmRpY2F0b3I+KSB7XG5cdFx0c3VwZXIoaWRPclNldHRpbmdzIGFzIHN0cmluZyB8IHVuZGVmaW5lZCwgc2V0dGluZ3MpO1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMuZWRpdEJ1dHRvbiA9IChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0aWNvbj1cInNhcC1pY29uOi8vZWRpdFwiXG5cdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdHByZXNzPXsoX2V2KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJwcmVzc0VkaXRcIik7XG5cdFx0XHRcdH19XG5cdFx0XHRcdHRvb2x0aXA9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fSU5MSU5FX0VESVRfVE9PTFRJUF9FRElUXCIpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXG5cdFx0dGhpcy5zYXZlQnV0dG9uID0gKFxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRpY29uPVwic2FwLWljb246Ly9hY2NlcHRcIlxuXHRcdFx0XHR0eXBlPXtCdXR0b25UeXBlLlRyYW5zcGFyZW50fVxuXHRcdFx0XHRqc3g6Y29tbWFuZD1cImNtZDpTYXZlfHByZXNzXCJcblx0XHRcdFx0ZmllbGRHcm91cElkcz1cIklubGluZUVkaXRcIlxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0lOTElORV9FRElUX1RPT0xUSVBfU0FWRVwiKX1cblx0XHRcdC8+XG5cdFx0KTtcblxuXHRcdHRoaXMuZGlzY2FyZEJ1dHRvbiA9IChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0aWNvbj1cInNhcC1pY29uOi8vZGVjbGluZVwiXG5cdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdGpzeDpjb21tYW5kPVwiY21kOkNhbmNlbHxwcmVzc1wiXG5cdFx0XHRcdHRvb2x0aXA9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fSU5MSU5FX0VESVRfVE9PTFRJUF9DQU5DRUxcIil9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9XCJJbmxpbmVFZGl0XCJcblx0XHRcdC8+XG5cdFx0KTtcblx0XHQvL0ludGVydmFsVHJpZ2dlci5hZGRMaXN0ZW5lcih0aGlzLm9uQWZ0ZXJSZW5kZXJpbmcsIHRoaXMpXG5cdH1cblxuXHQvKlxuXHQgKiBBZGQgYXJpYS1kZXNjcmliZWRCeSBlbGVtZW50IHRvIHRoZSBlZGl0IGJ1dHRvblxuXHQgKiBAcGFyYW0gYXJpYURlc2NyaWJlZEJ5RWxlbWVudCAtIEVsZW1lbnQgdG8gYmUgYWRkZWQgYXMgYXJpYURlc2NyaWJlZEJ5XG5cdCAqICovXG5cdGFkZEVkaXRCdXR0b25BcmlhRGVzY3JpYmVkQnkoYXJpYURlc2NyaWJlZEJ5RWxlbWVudDogc3RyaW5nIHwgQ29udHJvbCk6IHZvaWQge1xuXHRcdGlmIChhcmlhRGVzY3JpYmVkQnlFbGVtZW50ICE9PSB1bmRlZmluZWQgJiYgYXJpYURlc2NyaWJlZEJ5RWxlbWVudCAhPT0gbnVsbCAmJiBhcmlhRGVzY3JpYmVkQnlFbGVtZW50ICE9PSBcIlwiKSB7XG5cdFx0XHR0aGlzLmVkaXRCdXR0b24uYWRkQXJpYURlc2NyaWJlZEJ5KGFyaWFEZXNjcmliZWRCeUVsZW1lbnQpO1xuXHRcdH1cblx0fVxuXG5cdC8qXG5cdCAqIFJlbW92ZSBhbGwgYXJpYS1kZXNjcmliZWRCeSBlbGVtZW50cyBmcm9tIHRoZSBlZGl0IGJ1dHRvblxuXHQgKiAqL1xuXHRyZW1vdmVBbGxFZGl0QnV0dG9uQXJpYURlc2NyaWJlZEJ5KCk6IHZvaWQge1xuXHRcdHRoaXMuZWRpdEJ1dHRvbi5yZW1vdmVBbGxBcmlhRGVzY3JpYmVkQnkoKTtcblx0fVxuXG5cdG9ubW91c2VvdXQobW91c2VFdmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuXHRcdGlmICghKG1vdXNlRXZlbnQuY3VycmVudFRhcmdldCBhcyBFbGVtZW50KT8uY29udGFpbnMobW91c2VFdmVudC5yZWxhdGVkVGFyZ2V0IGFzIEVsZW1lbnQpKSB7XG5cdFx0XHR0aGlzLmZpcmVFdmVudChcIm1vdXNlb3V0XCIsIHsgcmVsYXRlZFRhcmdldDogbW91c2VFdmVudC5yZWxhdGVkVGFyZ2V0IH0pO1xuXHRcdH1cblx0fVxuXG5cdG9ua2V5ZG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG5cdFx0aWYgKGUua2V5ID09PSBcIlRhYlwiICYmICFlLnNoaWZ0S2V5KSB7XG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR0aGlzLmZpcmVFdmVudChcInByZXNzVGFiXCIpO1xuXHRcdH0gZWxzZSBpZiAoZS5rZXkgPT09IFwiVGFiXCIgJiYgZS5zaGlmdEtleSkge1xuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0dGhpcy5maXJlRXZlbnQoXCJwcmVzc1NoaWZ0VGFiXCIpO1xuXHRcdH1cblx0fVxuXG5cdHNldFdpZHRoKHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLndpZHRoID0gd2lkdGg7XG5cdFx0dGhpcy4kKCkuY3NzKFwid2lkdGhcIiwgYCR7d2lkdGh9cHhgKTtcblx0fVxuXG5cdGdldERpc2NhcmRCdXR0b24oKTogQnV0dG9uIHtcblx0XHRyZXR1cm4gdGhpcy5kaXNjYXJkQnV0dG9uO1xuXHR9XG5cblx0Z2V0U2F2ZUJ1dHRvbigpOiBCdXR0b24ge1xuXHRcdHJldHVybiB0aGlzLnNhdmVCdXR0b247XG5cdH1cblxuXHRnZXRFZGl0QnV0dG9uKCk6IEJ1dHRvbiB7XG5cdFx0cmV0dXJuIHRoaXMuZWRpdEJ1dHRvbjtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXIocm06IFJlbmRlck1hbmFnZXIsIGNvbnRyb2w6IElubGluZUVkaXRJbmRpY2F0b3IpOiB2b2lkIHtcblx0XHRqc3gucmVuZGVyVXNpbmdSZW5kZXJNYW5hZ2VyKHJtLCBjb250cm9sLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRjb25zdCBjbGFzc2VzID0gW1wic2FwRmVJbmxpbmVFZGl0SW5kaWNhdG9yXCJdO1xuXHRcdFx0aWYgKGNvbnRyb2wuZWRpdE1vZGUpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNoKFwic2FwRmVJbmxpbmVFZGl0SW5kaWNhdG9yRWRpdE1vZGVcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8c3BhbiBjbGFzcz17Y2xhc3Nlcy5qb2luKFwiIFwiKX0gcmVmPXtjb250cm9sfT5cblx0XHRcdFx0XHR7IWNvbnRyb2wuZWRpdE1vZGUgPyAoXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz17XCJzYXBGZUlubGluZUVkaXRJbmRpY2F0b3JJY29uXCJ9Pntjb250cm9sLmVkaXRCdXR0b259PC9zcGFuPlxuXHRcdFx0XHRcdCkgOiAoXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz17XCJzYXBGZUlubGluZUVkaXRJbmRpY2F0b3JBY2NlcHREZWNsaW5lSWNvbiBzYXBGZUlubGluZUVkaXRJbmRpY2F0b3JJY29uXCJ9PlxuXHRcdFx0XHRcdFx0XHR7Y29udHJvbC5zYXZlQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHR7Y29udHJvbC5kaXNjYXJkQnV0dG9ufVxuXHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdDwvc3Bhbj5cblx0XHRcdCk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQVdBO0FBQ0E7QUFDQTtBQUNBO0VBSEEsSUFLcUJBLG1CQUFtQixJQUFBQyxJQUFBLEdBRHZDQyxjQUFjLENBQUMsZ0RBQWdELENBQUMsRUFBQUMsS0FBQSxHQUUvREMsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFlLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR3JDRixXQUFXLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQWUsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FHckNILFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBZSxDQUFDLENBQUMsRUFBQUcsS0FBQSxHQUdyQ0MsUUFBUSxDQUFDO0lBQUVKLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBRzdCQyxLQUFLLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR1BELEtBQUssQ0FBQyxDQUFDLEVBQUFWLElBQUEsQ0FBQVksTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxRQUFBO0lBT1IsU0FBQWYsb0JBQVlnQixZQUF5RCxFQUFFQyxRQUE0QyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUNwSEEsS0FBQSxHQUFBSCxRQUFBLENBQUFJLElBQUEsT0FBTUgsWUFBWSxFQUF3QkMsUUFBUSxDQUFDO01BQUNHLDBCQUFBLENBQUFGLEtBQUEsZ0JBQUFHLFdBQUEsRUFBQUgsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGdCQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxtQkFBQUssWUFBQSxFQUFBTCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsY0FBQU0sWUFBQSxFQUFBTixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsZUFBQU8sWUFBQSxFQUFBUCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsY0FBQVEsWUFBQSxFQUFBUixLQUFBO01BQ3BEQSxLQUFBLENBQUtTLGNBQWMsR0FBR0MsR0FBRyxDQUFDQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBRTtNQUNsRVgsS0FBQSxDQUFLWSxVQUFVLEdBQ2RDLElBQUEsQ0FBQ0MsTUFBTTtRQUNOQyxJQUFJLEVBQUMsaUJBQWlCO1FBQ3RCNUIsSUFBSSxFQUFFNkIsVUFBVSxDQUFDQyxXQUFZO1FBQzdCQyxLQUFLLEVBQUdDLEdBQUcsSUFBVztVQUNyQm5CLEtBQUEsQ0FBS29CLFNBQVMsQ0FBQyxXQUFXLENBQUM7UUFDNUIsQ0FBRTtRQUNGQyxPQUFPLEVBQUVyQixLQUFBLENBQUtTLGNBQWMsQ0FBQ2EsT0FBTyxDQUFDLDRCQUE0QjtNQUFFLENBQ25FLENBQ0Q7TUFFRHRCLEtBQUEsQ0FBS3VCLFVBQVUsR0FDZFYsSUFBQSxDQUFDQyxNQUFNO1FBQ05DLElBQUksRUFBQyxtQkFBbUI7UUFDeEI1QixJQUFJLEVBQUU2QixVQUFVLENBQUNDLFdBQVk7UUFDN0IsZUFBWSxnQkFBZ0I7UUFDNUJPLGFBQWEsRUFBQyxZQUFZO1FBQzFCSCxPQUFPLEVBQUVyQixLQUFBLENBQUtTLGNBQWMsQ0FBQ2EsT0FBTyxDQUFDLDRCQUE0QjtNQUFFLENBQ25FLENBQ0Q7TUFFRHRCLEtBQUEsQ0FBS3lCLGFBQWEsR0FDakJaLElBQUEsQ0FBQ0MsTUFBTTtRQUNOQyxJQUFJLEVBQUMsb0JBQW9CO1FBQ3pCNUIsSUFBSSxFQUFFNkIsVUFBVSxDQUFDQyxXQUFZO1FBQzdCLGVBQVksa0JBQWtCO1FBQzlCSSxPQUFPLEVBQUVyQixLQUFBLENBQUtTLGNBQWMsQ0FBQ2EsT0FBTyxDQUFDLDhCQUE4QixDQUFFO1FBQ3JFRSxhQUFhLEVBQUM7TUFBWSxDQUMxQixDQUNEO01BQ0Q7TUFBQSxPQUFBeEIsS0FBQTtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0lBSEMwQixRQUFBLEdBQUE1QyxtQkFBQTtJQUFBNkMsY0FBQSxDQUFBN0MsbUJBQUEsRUFBQWUsUUFBQTtJQUFBLElBQUErQixNQUFBLEdBQUE5QyxtQkFBQSxDQUFBK0MsU0FBQTtJQUFBRCxNQUFBLENBSUFFLDRCQUE0QixHQUE1QixTQUFBQSw0QkFBNEJBLENBQUNDLHNCQUF3QyxFQUFRO01BQzVFLElBQUlBLHNCQUFzQixLQUFLQyxTQUFTLElBQUlELHNCQUFzQixLQUFLLElBQUksSUFBSUEsc0JBQXNCLEtBQUssRUFBRSxFQUFFO1FBQzdHLElBQUksQ0FBQ25CLFVBQVUsQ0FBQ3FCLGtCQUFrQixDQUFDRixzQkFBc0IsQ0FBQztNQUMzRDtJQUNEOztJQUVBO0FBQ0Q7QUFDQSxTQUZDO0lBQUFILE1BQUEsQ0FHQU0sa0NBQWtDLEdBQWxDLFNBQUFBLGtDQUFrQ0EsQ0FBQSxFQUFTO01BQzFDLElBQUksQ0FBQ3RCLFVBQVUsQ0FBQ3VCLHdCQUF3QixDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUFBUCxNQUFBLENBRURRLFVBQVUsR0FBVixTQUFBQSxVQUFVQSxDQUFDQyxVQUFzQixFQUFRO01BQ3hDLElBQUksQ0FBRUEsVUFBVSxDQUFDQyxhQUFhLEVBQWNDLFFBQVEsQ0FBQ0YsVUFBVSxDQUFDRyxhQUF3QixDQUFDLEVBQUU7UUFDMUYsSUFBSSxDQUFDcEIsU0FBUyxDQUFDLFVBQVUsRUFBRTtVQUFFb0IsYUFBYSxFQUFFSCxVQUFVLENBQUNHO1FBQWMsQ0FBQyxDQUFDO01BQ3hFO0lBQ0QsQ0FBQztJQUFBWixNQUFBLENBRURhLFNBQVMsR0FBVCxTQUFBQSxTQUFTQSxDQUFDQyxDQUFnQixFQUFRO01BQ2pDLElBQUlBLENBQUMsQ0FBQ0MsR0FBRyxLQUFLLEtBQUssSUFBSSxDQUFDRCxDQUFDLENBQUNFLFFBQVEsRUFBRTtRQUNuQ0YsQ0FBQyxDQUFDRyxjQUFjLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUN6QixTQUFTLENBQUMsVUFBVSxDQUFDO01BQzNCLENBQUMsTUFBTSxJQUFJc0IsQ0FBQyxDQUFDQyxHQUFHLEtBQUssS0FBSyxJQUFJRCxDQUFDLENBQUNFLFFBQVEsRUFBRTtRQUN6Q0YsQ0FBQyxDQUFDRyxjQUFjLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUN6QixTQUFTLENBQUMsZUFBZSxDQUFDO01BQ2hDO0lBQ0QsQ0FBQztJQUFBUSxNQUFBLENBRURrQixRQUFRLEdBQVIsU0FBQUEsUUFBUUEsQ0FBQ0MsS0FBYSxFQUFRO01BQzdCLElBQUksQ0FBQ0EsS0FBSyxHQUFHQSxLQUFLO01BQ2xCLElBQUksQ0FBQ0MsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHRixLQUFLLElBQUksQ0FBQztJQUNwQyxDQUFDO0lBQUFuQixNQUFBLENBRURzQixnQkFBZ0IsR0FBaEIsU0FBQUEsZ0JBQWdCQSxDQUFBLEVBQVc7TUFDMUIsT0FBTyxJQUFJLENBQUN6QixhQUFhO0lBQzFCLENBQUM7SUFBQUcsTUFBQSxDQUVEdUIsYUFBYSxHQUFiLFNBQUFBLGFBQWFBLENBQUEsRUFBVztNQUN2QixPQUFPLElBQUksQ0FBQzVCLFVBQVU7SUFDdkIsQ0FBQztJQUFBSyxNQUFBLENBRUR3QixhQUFhLEdBQWIsU0FBQUEsYUFBYUEsQ0FBQSxFQUFXO01BQ3ZCLE9BQU8sSUFBSSxDQUFDeEMsVUFBVTtJQUN2QixDQUFDO0lBQUE5QixtQkFBQSxDQUVNdUUsTUFBTSxHQUFiLFNBQU9BLE1BQU1BLENBQUNDLEVBQWlCLEVBQUVDLE9BQTRCLEVBQVE7TUFDcEVDLEdBQUcsQ0FBQ0Msd0JBQXdCLENBQUNILEVBQUUsRUFBRUMsT0FBTyxFQUFFLFlBQVk7UUFDckQsTUFBTUcsT0FBTyxHQUFHLENBQUMsMEJBQTBCLENBQUM7UUFDNUMsSUFBSUgsT0FBTyxDQUFDSSxRQUFRLEVBQUU7VUFDckJELE9BQU8sQ0FBQ0UsSUFBSSxDQUFDLGtDQUFrQyxDQUFDO1FBQ2pEO1FBQ0EsT0FDQy9DLElBQUE7VUFBTWdELEtBQUssRUFBRUgsT0FBTyxDQUFDSSxJQUFJLENBQUMsR0FBRyxDQUFFO1VBQUNDLEdBQUcsRUFBRVIsT0FBUTtVQUFBUyxRQUFBLEVBQzNDLENBQUNULE9BQU8sQ0FBQ0ksUUFBUSxHQUNqQjlDLElBQUE7WUFBTWdELEtBQUssRUFBRSw4QkFBK0I7WUFBQUcsUUFBQSxFQUFFVCxPQUFPLENBQUMzQztVQUFVLENBQU8sQ0FBQyxHQUV4RXFELEtBQUE7WUFBTUosS0FBSyxFQUFFLHdFQUF5RTtZQUFBRyxRQUFBLEdBQ3BGVCxPQUFPLENBQUNoQyxVQUFVLEVBQ2xCZ0MsT0FBTyxDQUFDOUIsYUFBYTtVQUFBLENBQ2pCO1FBQ04sQ0FDSSxDQUFDO01BRVQsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUFBLE9BQUEzQyxtQkFBQTtFQUFBLEVBaEkrQ29GLE9BQU8sR0FBQS9ELFdBQUEsR0FBQWdFLHlCQUFBLENBQUF2RSxPQUFBLENBQUFpQyxTQUFBLGlCQUFBNUMsS0FBQTtJQUFBbUYsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFuRSxZQUFBLEdBQUErRCx5QkFBQSxDQUFBdkUsT0FBQSxDQUFBaUMsU0FBQSxpQkFBQXpDLEtBQUE7SUFBQWdGLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBbEUsWUFBQSxHQUFBOEQseUJBQUEsQ0FBQXZFLE9BQUEsQ0FBQWlDLFNBQUEsb0JBQUF4QyxLQUFBO0lBQUErRSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWpFLFlBQUEsR0FBQTZELHlCQUFBLENBQUF2RSxPQUFBLENBQUFpQyxTQUFBLGVBQUF2QyxLQUFBO0lBQUE4RSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQVc1QyxLQUFLO0lBQUE7RUFBQSxJQUFBaEUsWUFBQSxHQUFBNEQseUJBQUEsQ0FBQXZFLE9BQUEsQ0FBQWlDLFNBQUEsZ0JBQUFyQyxLQUFBO0lBQUE0RSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQS9ELFlBQUEsR0FBQTJELHlCQUFBLENBQUF2RSxPQUFBLENBQUFpQyxTQUFBLGVBQUFuQyxLQUFBO0lBQUEwRSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTNFLE9BQUEsTUFBQUQsTUFBQTtFQUFBK0IsUUFBQSxHQUFBNUMsbUJBQUE7RUFBQSxPQUFBNEMsUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
172
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbmxpbmVFZGl0SW5kaWNhdG9yIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJhZ2dyZWdhdGlvbiIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJwcm9wZXJ0eSIsIl9kZWM2IiwiZXZlbnQiLCJfZGVjNyIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsImlkT3JTZXR0aW5ncyIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJlZGl0QnV0dG9uIiwiX2pzeCIsIkJ1dHRvbiIsImljb24iLCJCdXR0b25UeXBlIiwiVHJhbnNwYXJlbnQiLCJwcmVzcyIsIl9ldiIsImZpcmVFdmVudCIsInRvb2x0aXAiLCJnZXRUZXh0Iiwic2F2ZUJ1dHRvbiIsImZpZWxkR3JvdXBJZHMiLCJkaXNjYXJkQnV0dG9uIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImFkZEVkaXRCdXR0b25BcmlhRGVzY3JpYmVkQnkiLCJhcmlhRGVzY3JpYmVkQnlFbGVtZW50IiwidW5kZWZpbmVkIiwiYWRkQXJpYURlc2NyaWJlZEJ5IiwicmVtb3ZlQWxsRWRpdEJ1dHRvbkFyaWFEZXNjcmliZWRCeSIsInJlbW92ZUFsbEFyaWFEZXNjcmliZWRCeSIsIm9ubW91c2VvdXQiLCJtb3VzZUV2ZW50IiwiY3VycmVudFRhcmdldCIsImNvbnRhaW5zIiwicmVsYXRlZFRhcmdldCIsIm9ua2V5ZG93biIsImUiLCJrZXkiLCJzaGlmdEtleSIsInByZXZlbnREZWZhdWx0Iiwic2V0V2lkdGgiLCJ3aWR0aCIsIiQiLCJjc3MiLCJnZXREaXNjYXJkQnV0dG9uIiwiZ2V0U2F2ZUJ1dHRvbiIsImdldEVkaXRCdXR0b24iLCJyZW5kZXIiLCJybSIsImNvbnRyb2wiLCJqc3giLCJyZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIiLCJjbGFzc2VzIiwiZWRpdE1vZGUiLCJwdXNoIiwiY2xhc3MiLCJqb2luIiwicmVmIiwiY2hpbGRyZW4iLCJfanN4cyIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIklubGluZUVkaXRJbmRpY2F0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogQ29udHJvbCB0byBpbmRpY2F0ZSB0aGUgcG9zc2liaWxpdHkgdG8gZWRpdCBhbiBlbGVtZW50IGlubGluZSwgYW5kIHRvIHNhdmUgb3IgZGlzY2FyZCB0aGUgY2hhbmdlcyBhZnRlciBlZGl0aW5nLlxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29udHJvbHMuaW5saW5lRWRpdC5JbmxpbmVFZGl0SW5kaWNhdG9yXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbmxpbmVFZGl0SW5kaWNhdG9yIGV4dGVuZHMgQ29udHJvbCB7XG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uQnV0dG9uXCIgfSlcblx0cHJpdmF0ZSBlZGl0QnV0dG9uOiBCdXR0b247XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAubS5CdXR0b25cIiB9KVxuXHRwcml2YXRlIHNhdmVCdXR0b246IEJ1dHRvbjtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLkJ1dHRvblwiIH0pXG5cdHByaXZhdGUgZGlzY2FyZEJ1dHRvbjogQnV0dG9uO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGVkaXRNb2RlID0gZmFsc2U7XG5cblx0QGV2ZW50KClcblx0cHJlc3NFZGl0PzogRXZlbnRIYW5kbGVyO1xuXG5cdEBldmVudCgpXG5cdG1vdXNlb3V0PzogRXZlbnRIYW5kbGVyO1xuXG5cdHByaXZhdGUgd2lkdGg/OiBudW1iZXI7XG5cblx0cHJpdmF0ZSByZXNvdXJjZUJ1bmRsZT86IFJlc291cmNlQnVuZGxlO1xuXG5cdGNvbnN0cnVjdG9yKGlkT3JTZXR0aW5ncz86IFByb3BlcnRpZXNPZjxJbmxpbmVFZGl0SW5kaWNhdG9yPiB8IHN0cmluZywgc2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8SW5saW5lRWRpdEluZGljYXRvcj4pIHtcblx0XHRzdXBlcihpZE9yU2V0dGluZ3MgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLCBzZXR0aW5ncyk7XG5cdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb250cm9sc1wiKSE7XG5cdFx0dGhpcy5lZGl0QnV0dG9uID0gKFxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRpY29uPVwic2FwLWljb246Ly9lZGl0XCJcblx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5UcmFuc3BhcmVudH1cblx0XHRcdFx0cHJlc3M9eyhfZXYpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInByZXNzRWRpdFwiKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0dG9vbHRpcD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9JTkxJTkVfRURJVF9UT09MVElQX0VESVRcIil9XG5cdFx0XHQvPlxuXHRcdCk7XG5cblx0XHR0aGlzLnNhdmVCdXR0b24gPSAoXG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdGljb249XCJzYXAtaWNvbjovL2FjY2VwdFwiXG5cdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdGpzeDpjb21tYW5kPVwiY21kOlNhdmV8cHJlc3NcIlxuXHRcdFx0XHRmaWVsZEdyb3VwSWRzPVwiSW5saW5lRWRpdFwiXG5cdFx0XHRcdHRvb2x0aXA9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fSU5MSU5FX0VESVRfVE9PTFRJUF9TQVZFXCIpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXG5cdFx0dGhpcy5kaXNjYXJkQnV0dG9uID0gKFxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRpY29uPVwic2FwLWljb246Ly9kZWNsaW5lXCJcblx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5UcmFuc3BhcmVudH1cblx0XHRcdFx0anN4OmNvbW1hbmQ9XCJjbWQ6Q2FuY2VsfHByZXNzXCJcblx0XHRcdFx0dG9vbHRpcD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9JTkxJTkVfRURJVF9UT09MVElQX0NBTkNFTFwiKX1cblx0XHRcdFx0ZmllbGRHcm91cElkcz1cIklubGluZUVkaXRcIlxuXHRcdFx0Lz5cblx0XHQpO1xuXHRcdC8vSW50ZXJ2YWxUcmlnZ2VyLmFkZExpc3RlbmVyKHRoaXMub25BZnRlclJlbmRlcmluZywgdGhpcylcblx0fVxuXG5cdC8qXG5cdCAqIEFkZCBhcmlhLWRlc2NyaWJlZEJ5IGVsZW1lbnQgdG8gdGhlIGVkaXQgYnV0dG9uXG5cdCAqIEBwYXJhbSBhcmlhRGVzY3JpYmVkQnlFbGVtZW50IC0gRWxlbWVudCB0byBiZSBhZGRlZCBhcyBhcmlhRGVzY3JpYmVkQnlcblx0ICogKi9cblx0YWRkRWRpdEJ1dHRvbkFyaWFEZXNjcmliZWRCeShhcmlhRGVzY3JpYmVkQnlFbGVtZW50OiBzdHJpbmcgfCBDb250cm9sKTogdm9pZCB7XG5cdFx0aWYgKGFyaWFEZXNjcmliZWRCeUVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJiBhcmlhRGVzY3JpYmVkQnlFbGVtZW50ICE9PSBudWxsICYmIGFyaWFEZXNjcmliZWRCeUVsZW1lbnQgIT09IFwiXCIpIHtcblx0XHRcdHRoaXMuZWRpdEJ1dHRvbi5hZGRBcmlhRGVzY3JpYmVkQnkoYXJpYURlc2NyaWJlZEJ5RWxlbWVudCk7XG5cdFx0fVxuXHR9XG5cblx0Lypcblx0ICogUmVtb3ZlIGFsbCBhcmlhLWRlc2NyaWJlZEJ5IGVsZW1lbnRzIGZyb20gdGhlIGVkaXQgYnV0dG9uXG5cdCAqICovXG5cdHJlbW92ZUFsbEVkaXRCdXR0b25BcmlhRGVzY3JpYmVkQnkoKTogdm9pZCB7XG5cdFx0dGhpcy5lZGl0QnV0dG9uLnJlbW92ZUFsbEFyaWFEZXNjcmliZWRCeSgpO1xuXHR9XG5cblx0b25tb3VzZW91dChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG5cdFx0aWYgKCEobW91c2VFdmVudC5jdXJyZW50VGFyZ2V0IGFzIEVsZW1lbnQpPy5jb250YWlucyhtb3VzZUV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgRWxlbWVudCkpIHtcblx0XHRcdHRoaXMuZmlyZUV2ZW50KFwibW91c2VvdXRcIiwgeyByZWxhdGVkVGFyZ2V0OiBtb3VzZUV2ZW50LnJlbGF0ZWRUYXJnZXQgfSk7XG5cdFx0fVxuXHR9XG5cblx0b25rZXlkb3duKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcblx0XHRpZiAoZS5rZXkgPT09IFwiVGFiXCIgJiYgIWUuc2hpZnRLZXkpIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHRoaXMuZmlyZUV2ZW50KFwicHJlc3NUYWJcIik7XG5cdFx0fSBlbHNlIGlmIChlLmtleSA9PT0gXCJUYWJcIiAmJiBlLnNoaWZ0S2V5KSB7XG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR0aGlzLmZpcmVFdmVudChcInByZXNzU2hpZnRUYWJcIik7XG5cdFx0fVxuXHR9XG5cblx0c2V0V2lkdGgod2lkdGg6IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMud2lkdGggPSB3aWR0aDtcblx0XHR0aGlzLiQoKS5jc3MoXCJ3aWR0aFwiLCBgJHt3aWR0aH1weGApO1xuXHR9XG5cblx0Z2V0RGlzY2FyZEJ1dHRvbigpOiBCdXR0b24ge1xuXHRcdHJldHVybiB0aGlzLmRpc2NhcmRCdXR0b247XG5cdH1cblxuXHRnZXRTYXZlQnV0dG9uKCk6IEJ1dHRvbiB7XG5cdFx0cmV0dXJuIHRoaXMuc2F2ZUJ1dHRvbjtcblx0fVxuXG5cdGdldEVkaXRCdXR0b24oKTogQnV0dG9uIHtcblx0XHRyZXR1cm4gdGhpcy5lZGl0QnV0dG9uO1xuXHR9XG5cblx0c3RhdGljIHJlbmRlcihybTogUmVuZGVyTWFuYWdlciwgY29udHJvbDogSW5saW5lRWRpdEluZGljYXRvcik6IHZvaWQge1xuXHRcdGpzeC5yZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIocm0sIGNvbnRyb2wsIGZ1bmN0aW9uICgpIHtcblx0XHRcdGNvbnN0IGNsYXNzZXMgPSBbXCJzYXBGZUlubGluZUVkaXRJbmRpY2F0b3JcIl07XG5cdFx0XHRpZiAoY29udHJvbC5lZGl0TW9kZSkge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goXCJzYXBGZUlubGluZUVkaXRJbmRpY2F0b3JFZGl0TW9kZVwiKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxzcGFuIGNsYXNzPXtjbGFzc2VzLmpvaW4oXCIgXCIpfSByZWY9e2NvbnRyb2x9PlxuXHRcdFx0XHRcdHshY29udHJvbC5lZGl0TW9kZSA/IChcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPXtcInNhcEZlSW5saW5lRWRpdEluZGljYXRvckljb25cIn0+e2NvbnRyb2wuZWRpdEJ1dHRvbn08L3NwYW4+XG5cdFx0XHRcdFx0KSA6IChcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPXtcInNhcEZlSW5saW5lRWRpdEluZGljYXRvckFjY2VwdERlY2xpbmVJY29uIHNhcEZlSW5saW5lRWRpdEluZGljYXRvckljb25cIn0+XG5cdFx0XHRcdFx0XHRcdHtjb250cm9sLnNhdmVCdXR0b259XG5cdFx0XHRcdFx0XHRcdHtjb250cm9sLmRpc2NhcmRCdXR0b259XG5cdFx0XHRcdFx0XHQ8L3NwYW4+XG5cdFx0XHRcdFx0KX1cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0KTtcblx0XHR9KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBV0E7QUFDQTtBQUNBO0VBRkEsSUFJcUJBLG1CQUFtQixJQUFBQyxJQUFBLEdBRHZDQyxjQUFjLENBQUMsZ0RBQWdELENBQUMsRUFBQUMsS0FBQSxHQUUvREMsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFlLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR3JDRixXQUFXLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQWUsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FHckNILFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBZSxDQUFDLENBQUMsRUFBQUcsS0FBQSxHQUdyQ0MsUUFBUSxDQUFDO0lBQUVKLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBRzdCQyxL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
@@ -11,7 +11,6 @@ import type { EventHandler } from "types/extension_types";
11
11
 
12
12
  /**
13
13
  * Control to indicate the possibility to edit an element inline, and to save or discard the changes after editing.
14
- * @experimental This class is experimental and provides only limited functionality. Also the API might be changed in future.
15
14
  */
16
15
  @defineUI5Class("sap.fe.controls.inlineEdit.InlineEditIndicator")
17
16
  export default class InlineEditIndicator extends Control {
@@ -22,7 +22,7 @@ sap.ui.define(["sap/fe/base/library", "sap/fe/controls/shortcuts/ShortcutExplana
22
22
  controls: [],
23
23
  elements: [],
24
24
  // eslint-disable-next-line no-template-curly-in-string
25
- version: "1.138.0",
25
+ version: "1.140.0",
26
26
  noLibraryCSS: false
27
27
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
28
  });