@sapui5/sap.fe.macros 1.124.6 → 1.124.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.macros",
3
- "version": "1.124.6",
3
+ "version": "1.124.7",
4
4
  "description": "SAPUI5 Library sap.fe.macros",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.124.6</version>
9
+ <version>1.124.7</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.macros</documentation>
12
12
 
@@ -77,7 +77,7 @@ sap.ui.define(["sap/base/util/merge", "sap/base/util/uid", "sap/fe/core/building
77
77
  UIArea.rerenderControl(this.content);
78
78
  };
79
79
  _proto.getController = function getController() {
80
- return this.getModel("$view").getObject("").getController();
80
+ return this.getModel("$view").getObject("/").getController();
81
81
  }
82
82
 
83
83
  /**
@@ -153,4 +153,4 @@ sap.ui.define(["sap/base/util/merge", "sap/base/util/uid", "sap/fe/core/building
153
153
  })), _class2)) || _class);
154
154
  return MacroAPI;
155
155
  }, false);
156
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNYWNyb0FQSSIsImRlZmluZVVJNUNsYXNzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiYWdncmVnYXRpb24iLCJ0eXBlIiwibXVsdGlwbGUiLCJpc0RlZmF1bHQiLCJwcm9wZXJ0eSIsIm1TZXR0aW5ncyIsIm90aGVycyIsInBhcmVudENvbnRleHRUb0JpbmQiLCJhcHBseVNldHRpbmdzIiwib1Njb3BlIiwiZXZlbnRzS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRNZXRhZGF0YSIsImdldEV2ZW50cyIsImV2ZW50c0tleSIsInVuZGVmaW5lZCIsImluaXQiLCJnZXRNb2RlbCIsIm9QYWdlTW9kZWwiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsInNldE1vZGVsIiwicmVyZW5kZXIiLCJVSUFyZWEiLCJyZXJlbmRlckNvbnRyb2wiLCJjb250ZW50IiwiZ2V0Q29udHJvbGxlciIsImdldE9iamVjdCIsInNldFBhcmVudEJpbmRpbmdDb250ZXh0IiwibW9kZWxOYW1lIiwicGF0aCIsInNldFBhcmVudCIsImFyZ3MiLCJmb3JFYWNoIiwiZ2V0UGFyZW50IiwiYmluZE9iamVjdCIsIm1vZGVsIiwiZXZlbnRzIiwiY2hhbmdlIiwib0JvdW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInNldFByb3BlcnR5IiwiQnVpbGRpbmdCbG9ja0Jhc2UiLCJuYW1lc3BhY2UiLCJtYWNyb05hbWUiLCJmcmFnbWVudCIsImhhc1ZhbGlkYXRpb24iLCJnZXRDb252ZXJ0ZXJDb250ZXh0Iiwib0RhdGFNb2RlbFBhdGgiLCJjb250ZXh0UGF0aCIsIm9BcHBDb21wb25lbnQiLCJhcHBDb21wb25lbnQiLCJ2aWV3RGF0YSIsIm1vZGVscyIsImdldERhdGEiLCJDb252ZXJ0ZXJDb250ZXh0IiwiY3JlYXRlQ29udmVydGVyQ29udGV4dEZvck1hY3JvIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJuYW1lIiwibWV0YU1vZGVsIiwiZ2V0RGlhZ25vc3RpY3MiLCJtZXJnZSIsImNvbnRleHRMb2NhdGlvbiIsImNyZWF0ZUJpbmRpbmdDb250ZXh0Iiwib0RhdGEiLCJzQ29udGV4dFBhdGgiLCJ1aWQiLCJjb252ZXJ0ZXJDb250ZXh0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNYWNyb0FQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCB1aWQgZnJvbSBcInNhcC9iYXNlL3V0aWwvdWlkXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJQXJlYSBmcm9tIFwic2FwL3VpL2NvcmUvVUlBcmVhXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtQ29udGVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDbGllbnRDb250ZXh0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL0NsaWVudENvbnRleHRCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG4vKipcbiAqIEJhc2UgQVBJIGNvbnRyb2wgZm9yIGJ1aWxkaW5nIGJsb2Nrcy5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAbmFtZSBzYXAuZmUubWFjcm9zLk1hY3JvQVBJXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIilcbmNsYXNzIE1hY3JvQVBJIGV4dGVuZHMgQnVpbGRpbmdCbG9ja0Jhc2UgaW1wbGVtZW50cyBJRm9ybUNvbnRlbnQge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUZvcm1Db250ZW50ID0gdHJ1ZTtcblxuXHRzdGF0aWMgbmFtZXNwYWNlID0gXCJzYXAuZmUubWFjcm9zXCI7XG5cblx0c3RhdGljIG1hY3JvTmFtZSA9IFwiTWFjcm9cIjtcblxuXHRzdGF0aWMgZnJhZ21lbnQgPSBcInNhcC5mZS5tYWNyb3MuTWFjcm9cIjtcblxuXHRzdGF0aWMgaGFzVmFsaWRhdGlvbiA9IHRydWU7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnQhOiBDb250cm9sO1xuXG5cdGNvbnN0cnVjdG9yKG1TZXR0aW5ncz86ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8TWFjcm9BUEk+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIobVNldHRpbmdzLCBvdGhlcnMpO1xuXHR9XG5cblx0YXBwbHlTZXR0aW5ncyhtU2V0dGluZ3M6ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MsIG9TY29wZT86IG9iamVjdCk6IHRoaXMge1xuXHRcdC8vIENsZWFudXAgZXZlbnRzXG5cdFx0aWYgKG1TZXR0aW5ncykge1xuXHRcdFx0Y29uc3QgZXZlbnRzS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRFdmVudHMoKSk7XG5cdFx0XHRmb3IgKGNvbnN0IGV2ZW50c0tleSBvZiBldmVudHNLZXlzKSB7XG5cdFx0XHRcdGlmIChtU2V0dGluZ3NbZXZlbnRzS2V5IGFzIGtleW9mICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3NdID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRkZWxldGUgbVNldHRpbmdzW2V2ZW50c0tleSBhcyBrZXlvZiAkTWFuYWdlZE9iamVjdFNldHRpbmdzXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBzdXBlci5hcHBseVNldHRpbmdzKG1TZXR0aW5ncywgb1Njb3BlKTtcblx0fVxuXG5cdGluaXQoKSB7XG5cdFx0c3VwZXIuaW5pdCgpO1xuXHRcdGlmICghdGhpcy5nZXRNb2RlbChcIl9wYWdlTW9kZWxcIikpIHtcblx0XHRcdGNvbnN0IG9QYWdlTW9kZWwgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcyk/LmdldE1vZGVsKFwiX3BhZ2VNb2RlbFwiKTtcblx0XHRcdGlmIChvUGFnZU1vZGVsKSB7XG5cdFx0XHRcdHRoaXMuc2V0TW9kZWwob1BhZ2VNb2RlbCwgXCJfcGFnZU1vZGVsXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IHVzZWQgaW4gdGhlIGN1cnJlbnQgcGFnZSBvciBibG9jay5cblx0ICogVGhpcyBzZXR0aW5nIGlzIGRlZmluZWQgYnkgdGhlIGZyYW1ld29yay5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgcGF0aCBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG1ldGFtb2RlbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dFBhdGguXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWV0YVBhdGghOiBzdHJpbmc7XG5cblx0cmVyZW5kZXIoKSB7XG5cdFx0KFVJQXJlYSBhcyB1bmtub3duIGFzIHsgcmVyZW5kZXJDb250cm9sKGNvbnRyb2w6IENvbnRyb2wpOiB2b2lkIH0pLnJlcmVuZGVyQ29udHJvbCh0aGlzLmNvbnRlbnQpO1xuXHR9XG5cblx0Z2V0Q29udHJvbGxlcigpOiBQYWdlQ29udHJvbGxlciB7XG5cdFx0cmV0dXJuICh0aGlzLmdldE1vZGVsKFwiJHZpZXdcIikgYXMgSlNPTk1vZGVsKS5nZXRPYmplY3QoXCJcIikuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIGEgQ29udmVydGVyIENvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSBvRGF0YU1vZGVsUGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHBhcmFtIG1TZXR0aW5nc1xuXHQgKiBAcmV0dXJucyBBIENvbnZlcnRlciBDb250ZXh0XG5cdCAqL1xuXHRzdGF0aWMgZ2V0Q29udmVydGVyQ29udGV4dCA9IGZ1bmN0aW9uIChcblx0XHRvRGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPixcblx0XHRjb250ZXh0UGF0aDogc3RyaW5nLFxuXHRcdG1TZXR0aW5nczogVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nc1xuXHQpOiBDb252ZXJ0ZXJDb250ZXh0IHtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gbVNldHRpbmdzLmFwcENvbXBvbmVudDtcblx0XHRjb25zdCB2aWV3RGF0YSA9IG1TZXR0aW5ncy5tb2RlbHMudmlld0RhdGEgJiYgbVNldHRpbmdzLm1vZGVscy52aWV3RGF0YS5nZXREYXRhKCk7XG5cdFx0cmV0dXJuIENvbnZlcnRlckNvbnRleHQuY3JlYXRlQ29udmVydGVyQ29udGV4dEZvck1hY3JvKFxuXHRcdFx0b0RhdGFNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZSxcblx0XHRcdG1TZXR0aW5ncy5tb2RlbHMubWV0YU1vZGVsLFxuXHRcdFx0b0FwcENvbXBvbmVudCAmJiBvQXBwQ29tcG9uZW50LmdldERpYWdub3N0aWNzKCksXG5cdFx0XHRtZXJnZSxcblx0XHRcdG9EYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbixcblx0XHRcdHZpZXdEYXRhXG5cdFx0KTtcblx0fTtcblxuXHQvKipcblx0ICogQ3JlYXRlIGEgQmluZGluZyBDb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0gb0RhdGFcblx0ICogQHBhcmFtIG1TZXR0aW5nc1xuXHQgKiBAcmV0dXJucyBUaGUgYmluZGluZyBjb250ZXh0XG5cdCAqL1xuXHRzdGF0aWMgY3JlYXRlQmluZGluZ0NvbnRleHQgPSBmdW5jdGlvbiAob0RhdGE6IG9iamVjdCwgbVNldHRpbmdzOiBhbnkpIHtcblx0XHRjb25zdCBzQ29udGV4dFBhdGggPSBgL3VpZC0tJHt1aWQoKX1gO1xuXHRcdG1TZXR0aW5ncy5tb2RlbHMuY29udmVydGVyQ29udGV4dC5zZXRQcm9wZXJ0eShzQ29udGV4dFBhdGgsIG9EYXRhKTtcblx0XHRyZXR1cm4gbVNldHRpbmdzLm1vZGVscy5jb252ZXJ0ZXJDb250ZXh0LmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNDb250ZXh0UGF0aCk7XG5cdH07XG5cblx0cGFyZW50Q29udGV4dFRvQmluZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBLZWVwIHRyYWNrIG9mIGEgYmluZGluZyBjb250ZXh0IHRoYXQgc2hvdWxkIGJlIGFzc2lnbmVkIHRvIHRoZSBwYXJlbnQgb2YgdGhhdCBjb250cm9sLlxuXHQgKlxuXHQgKiBAcGFyYW0gbW9kZWxOYW1lIFRoZSBtb2RlbCBuYW1lIHRoYXQgdGhlIGNvbnRleHQgd2lsbCByZWxhdGUgdG9cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggb2YgdGhlIGJpbmRpbmcgY29udGV4dFxuXHQgKi9cblx0c2V0UGFyZW50QmluZGluZ0NvbnRleHQobW9kZWxOYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuXHRcdHRoaXMucGFyZW50Q29udGV4dFRvQmluZFttb2RlbE5hbWVdID0gcGF0aDtcblx0fVxuXG5cdHNldFBhcmVudCguLi5hcmdzOiBhbnlbXSkge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0c3VwZXIuc2V0UGFyZW50KC4uLmFyZ3MpO1xuXHRcdE9iamVjdC5rZXlzKHRoaXMucGFyZW50Q29udGV4dFRvQmluZCkuZm9yRWFjaCgobW9kZWxOYW1lKSA9PiB7XG5cdFx0XHR0aGlzLmdldFBhcmVudCgpIS5iaW5kT2JqZWN0KHtcblx0XHRcdFx0cGF0aDogdGhpcy5wYXJlbnRDb250ZXh0VG9CaW5kW21vZGVsTmFtZV0sXG5cdFx0XHRcdG1vZGVsOiBtb2RlbE5hbWUsXG5cdFx0XHRcdGV2ZW50czoge1xuXHRcdFx0XHRcdGNoYW5nZTogZnVuY3Rpb24gKHRoaXM6IENsaWVudENvbnRleHRCaW5kaW5nKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBvQm91bmRDb250ZXh0ID0gdGhpcy5nZXRCb3VuZENvbnRleHQoKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0XHRcdGlmIChvQm91bmRDb250ZXh0ICYmICFvQm91bmRDb250ZXh0LmdldE9iamVjdCgpKSB7XG5cdFx0XHRcdFx0XHRcdG9Cb3VuZENvbnRleHQuc2V0UHJvcGVydHkoXCJcIiwge30pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFjcm9BUEk7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztFQW1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQU5BLElBUU1BLFFBQVEsV0FEYkMsY0FBYyxDQUFDLHdCQUF3QixDQUFDLFVBRXZDQyxrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxVQVc5Q0MsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRSxxQkFBcUI7SUFBRUMsUUFBUSxFQUFFLEtBQUs7SUFBRUMsU0FBUyxFQUFFO0VBQUssQ0FBQyxDQUFDLFVBcUM5RUMsUUFBUSxDQUFDO0lBQUVILElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxVQVE1QkcsUUFBUSxDQUFDO0lBQUVILElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQztJQUFBO0lBMUM3QixrQkFBWUksU0FBcUQsRUFBRUMsTUFBeUIsRUFBRTtNQUFBO01BQzdGLHNDQUFNRCxT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
156
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNYWNyb0FQSSIsImRlZmluZVVJNUNsYXNzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiYWdncmVnYXRpb24iLCJ0eXBlIiwibXVsdGlwbGUiLCJpc0RlZmF1bHQiLCJwcm9wZXJ0eSIsIm1TZXR0aW5ncyIsIm90aGVycyIsInBhcmVudENvbnRleHRUb0JpbmQiLCJhcHBseVNldHRpbmdzIiwib1Njb3BlIiwiZXZlbnRzS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRNZXRhZGF0YSIsImdldEV2ZW50cyIsImV2ZW50c0tleSIsInVuZGVmaW5lZCIsImluaXQiLCJnZXRNb2RlbCIsIm9QYWdlTW9kZWwiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsInNldE1vZGVsIiwicmVyZW5kZXIiLCJVSUFyZWEiLCJyZXJlbmRlckNvbnRyb2wiLCJjb250ZW50IiwiZ2V0Q29udHJvbGxlciIsImdldE9iamVjdCIsInNldFBhcmVudEJpbmRpbmdDb250ZXh0IiwibW9kZWxOYW1lIiwicGF0aCIsInNldFBhcmVudCIsImFyZ3MiLCJmb3JFYWNoIiwiZ2V0UGFyZW50IiwiYmluZE9iamVjdCIsIm1vZGVsIiwiZXZlbnRzIiwiY2hhbmdlIiwib0JvdW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInNldFByb3BlcnR5IiwiQnVpbGRpbmdCbG9ja0Jhc2UiLCJuYW1lc3BhY2UiLCJtYWNyb05hbWUiLCJmcmFnbWVudCIsImhhc1ZhbGlkYXRpb24iLCJnZXRDb252ZXJ0ZXJDb250ZXh0Iiwib0RhdGFNb2RlbFBhdGgiLCJjb250ZXh0UGF0aCIsIm9BcHBDb21wb25lbnQiLCJhcHBDb21wb25lbnQiLCJ2aWV3RGF0YSIsIm1vZGVscyIsImdldERhdGEiLCJDb252ZXJ0ZXJDb250ZXh0IiwiY3JlYXRlQ29udmVydGVyQ29udGV4dEZvck1hY3JvIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJuYW1lIiwibWV0YU1vZGVsIiwiZ2V0RGlhZ25vc3RpY3MiLCJtZXJnZSIsImNvbnRleHRMb2NhdGlvbiIsImNyZWF0ZUJpbmRpbmdDb250ZXh0Iiwib0RhdGEiLCJzQ29udGV4dFBhdGgiLCJ1aWQiLCJjb252ZXJ0ZXJDb250ZXh0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNYWNyb0FQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCB1aWQgZnJvbSBcInNhcC9iYXNlL3V0aWwvdWlkXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJQXJlYSBmcm9tIFwic2FwL3VpL2NvcmUvVUlBcmVhXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtQ29udGVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDbGllbnRDb250ZXh0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL0NsaWVudENvbnRleHRCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG4vKipcbiAqIEJhc2UgQVBJIGNvbnRyb2wgZm9yIGJ1aWxkaW5nIGJsb2Nrcy5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAbmFtZSBzYXAuZmUubWFjcm9zLk1hY3JvQVBJXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIilcbmNsYXNzIE1hY3JvQVBJIGV4dGVuZHMgQnVpbGRpbmdCbG9ja0Jhc2UgaW1wbGVtZW50cyBJRm9ybUNvbnRlbnQge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUZvcm1Db250ZW50ID0gdHJ1ZTtcblxuXHRzdGF0aWMgbmFtZXNwYWNlID0gXCJzYXAuZmUubWFjcm9zXCI7XG5cblx0c3RhdGljIG1hY3JvTmFtZSA9IFwiTWFjcm9cIjtcblxuXHRzdGF0aWMgZnJhZ21lbnQgPSBcInNhcC5mZS5tYWNyb3MuTWFjcm9cIjtcblxuXHRzdGF0aWMgaGFzVmFsaWRhdGlvbiA9IHRydWU7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnQhOiBDb250cm9sO1xuXG5cdGNvbnN0cnVjdG9yKG1TZXR0aW5ncz86ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8TWFjcm9BUEk+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIobVNldHRpbmdzLCBvdGhlcnMpO1xuXHR9XG5cblx0YXBwbHlTZXR0aW5ncyhtU2V0dGluZ3M6ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MsIG9TY29wZT86IG9iamVjdCk6IHRoaXMge1xuXHRcdC8vIENsZWFudXAgZXZlbnRzXG5cdFx0aWYgKG1TZXR0aW5ncykge1xuXHRcdFx0Y29uc3QgZXZlbnRzS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRFdmVudHMoKSk7XG5cdFx0XHRmb3IgKGNvbnN0IGV2ZW50c0tleSBvZiBldmVudHNLZXlzKSB7XG5cdFx0XHRcdGlmIChtU2V0dGluZ3NbZXZlbnRzS2V5IGFzIGtleW9mICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3NdID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRkZWxldGUgbVNldHRpbmdzW2V2ZW50c0tleSBhcyBrZXlvZiAkTWFuYWdlZE9iamVjdFNldHRpbmdzXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBzdXBlci5hcHBseVNldHRpbmdzKG1TZXR0aW5ncywgb1Njb3BlKTtcblx0fVxuXG5cdGluaXQoKSB7XG5cdFx0c3VwZXIuaW5pdCgpO1xuXHRcdGlmICghdGhpcy5nZXRNb2RlbChcIl9wYWdlTW9kZWxcIikpIHtcblx0XHRcdGNvbnN0IG9QYWdlTW9kZWwgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcyk/LmdldE1vZGVsKFwiX3BhZ2VNb2RlbFwiKTtcblx0XHRcdGlmIChvUGFnZU1vZGVsKSB7XG5cdFx0XHRcdHRoaXMuc2V0TW9kZWwob1BhZ2VNb2RlbCwgXCJfcGFnZU1vZGVsXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IHVzZWQgaW4gdGhlIGN1cnJlbnQgcGFnZSBvciBibG9jay5cblx0ICogVGhpcyBzZXR0aW5nIGlzIGRlZmluZWQgYnkgdGhlIGZyYW1ld29yay5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgcGF0aCBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG1ldGFtb2RlbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dFBhdGguXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWV0YVBhdGghOiBzdHJpbmc7XG5cblx0cmVyZW5kZXIoKSB7XG5cdFx0KFVJQXJlYSBhcyB1bmtub3duIGFzIHsgcmVyZW5kZXJDb250cm9sKGNvbnRyb2w6IENvbnRyb2wpOiB2b2lkIH0pLnJlcmVuZGVyQ29udHJvbCh0aGlzLmNvbnRlbnQpO1xuXHR9XG5cblx0Z2V0Q29udHJvbGxlcigpOiBQYWdlQ29udHJvbGxlciB7XG5cdFx0cmV0dXJuICh0aGlzLmdldE1vZGVsKFwiJHZpZXdcIikgYXMgSlNPTk1vZGVsKS5nZXRPYmplY3QoXCIvXCIpLmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSBhIENvbnZlcnRlciBDb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0gb0RhdGFNb2RlbFBhdGhcblx0ICogQHBhcmFtIGNvbnRleHRQYXRoXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3Ncblx0ICogQHJldHVybnMgQSBDb252ZXJ0ZXIgQ29udGV4dFxuXHQgKi9cblx0c3RhdGljIGdldENvbnZlcnRlckNvbnRleHQgPSBmdW5jdGlvbiAoXG5cdFx0b0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4sXG5cdFx0Y29udGV4dFBhdGg6IHN0cmluZyxcblx0XHRtU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3Ncblx0KTogQ29udmVydGVyQ29udGV4dCB7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IG1TZXR0aW5ncy5hcHBDb21wb25lbnQ7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSBtU2V0dGluZ3MubW9kZWxzLnZpZXdEYXRhICYmIG1TZXR0aW5ncy5tb2RlbHMudmlld0RhdGEuZ2V0RGF0YSgpO1xuXHRcdHJldHVybiBDb252ZXJ0ZXJDb250ZXh0LmNyZWF0ZUNvbnZlcnRlckNvbnRleHRGb3JNYWNybyhcblx0XHRcdG9EYXRhTW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWUsXG5cdFx0XHRtU2V0dGluZ3MubW9kZWxzLm1ldGFNb2RlbCxcblx0XHRcdG9BcHBDb21wb25lbnQgJiYgb0FwcENvbXBvbmVudC5nZXREaWFnbm9zdGljcygpLFxuXHRcdFx0bWVyZ2UsXG5cdFx0XHRvRGF0YU1vZGVsUGF0aC5jb250ZXh0TG9jYXRpb24sXG5cdFx0XHR2aWV3RGF0YVxuXHRcdCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENyZWF0ZSBhIEJpbmRpbmcgQ29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIG9EYXRhXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3Ncblx0ICogQHJldHVybnMgVGhlIGJpbmRpbmcgY29udGV4dFxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZUJpbmRpbmdDb250ZXh0ID0gZnVuY3Rpb24gKG9EYXRhOiBvYmplY3QsIG1TZXR0aW5nczogYW55KSB7XG5cdFx0Y29uc3Qgc0NvbnRleHRQYXRoID0gYC91aWQtLSR7dWlkKCl9YDtcblx0XHRtU2V0dGluZ3MubW9kZWxzLmNvbnZlcnRlckNvbnRleHQuc2V0UHJvcGVydHkoc0NvbnRleHRQYXRoLCBvRGF0YSk7XG5cdFx0cmV0dXJuIG1TZXR0aW5ncy5tb2RlbHMuY29udmVydGVyQ29udGV4dC5jcmVhdGVCaW5kaW5nQ29udGV4dChzQ29udGV4dFBhdGgpO1xuXHR9O1xuXG5cdHBhcmVudENvbnRleHRUb0JpbmQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuXHQvKipcblx0ICogS2VlcCB0cmFjayBvZiBhIGJpbmRpbmcgY29udGV4dCB0aGF0IHNob3VsZCBiZSBhc3NpZ25lZCB0byB0aGUgcGFyZW50IG9mIHRoYXQgY29udHJvbC5cblx0ICpcblx0ICogQHBhcmFtIG1vZGVsTmFtZSBUaGUgbW9kZWwgbmFtZSB0aGF0IHRoZSBjb250ZXh0IHdpbGwgcmVsYXRlIHRvXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBiaW5kaW5nIGNvbnRleHRcblx0ICovXG5cdHNldFBhcmVudEJpbmRpbmdDb250ZXh0KG1vZGVsTmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcblx0XHR0aGlzLnBhcmVudENvbnRleHRUb0JpbmRbbW9kZWxOYW1lXSA9IHBhdGg7XG5cdH1cblxuXHRzZXRQYXJlbnQoLi4uYXJnczogYW55W10pIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHN1cGVyLnNldFBhcmVudCguLi5hcmdzKTtcblx0XHRPYmplY3Qua2V5cyh0aGlzLnBhcmVudENvbnRleHRUb0JpbmQpLmZvckVhY2goKG1vZGVsTmFtZSkgPT4ge1xuXHRcdFx0dGhpcy5nZXRQYXJlbnQoKSEuYmluZE9iamVjdCh7XG5cdFx0XHRcdHBhdGg6IHRoaXMucGFyZW50Q29udGV4dFRvQmluZFttb2RlbE5hbWVdLFxuXHRcdFx0XHRtb2RlbDogbW9kZWxOYW1lLFxuXHRcdFx0XHRldmVudHM6IHtcblx0XHRcdFx0XHRjaGFuZ2U6IGZ1bmN0aW9uICh0aGlzOiBDbGllbnRDb250ZXh0QmluZGluZykge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb0JvdW5kQ29udGV4dCA9IHRoaXMuZ2V0Qm91bmRDb250ZXh0KCkgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRcdFx0XHRpZiAob0JvdW5kQ29udGV4dCAmJiAhb0JvdW5kQ29udGV4dC5nZXRPYmplY3QoKSkge1xuXHRcdFx0XHRcdFx0XHRvQm91bmRDb250ZXh0LnNldFByb3BlcnR5KFwiXCIsIHt9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hY3JvQVBJO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7RUFtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQSxJQVFNQSxRQUFRLFdBRGJDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxVQUV2Q0Msa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsVUFXOUNDLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUUscUJBQXFCO0lBQUVDLFFBQVEsRUFBRSxLQUFLO0lBQUVDLFNBQVMsRUFBRTtFQUFLLENBQUMsQ0FBQyxVQXFDOUVDLFFBQVEsQ0FBQztJQUFFSCxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsVUFRNUJHLFFBQVEsQ0FBQztJQUFFSCxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUM7SUFBQTtJQTFDN0Isa0JBQVlJLFNBQXFELEVBQUVDLE1BQXlCLEVBQUU7TUFBQTtNQUM3RixzQ0FBTUQs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
@@ -90,7 +90,7 @@ class MacroAPI extends BuildingBlockBase implements IFormContent {
90
90
  }
91
91
 
92
92
  getController(): PageController {
93
- return (this.getModel("$view") as JSONModel).getObject("").getController() as PageController;
93
+ return (this.getModel("$view") as JSONModel).getObject("/").getController() as PageController;
94
94
  }
95
95
 
96
96
  /**
@@ -82,7 +82,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/StandardRecommendationHelper
82
82
  const allListBinding = valueHelpListModel.bindList(valueHelpBindingInfo.path, undefined, sorter, valueHelpFilters, valueHelpBindingInfo.parameters);
83
83
  additionalValueContextPromise.push(
84
84
  // in case of dropdown, we are supposed to fetch all the records
85
- allListBinding.requestContexts(0, payload.isValueListWithFixedValues ? Infinity : 10, "additionalValue"));
85
+ allListBinding.requestContexts(0, payload.isValueListWithFixedValues ? 500 : 10, "additionalValue"));
86
86
  }
87
87
  return additionalValueContextPromise;
88
88
  },
@@ -454,4 +454,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/StandardRecommendationHelper
454
454
  _exports.additionalValueHelper = additionalValueHelper;
455
455
  return _exports;
456
456
  }, false);
457
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBZGRpdGlvbmFsVmFsdWVHcm91cEtleSIsImFkZGl0aW9uYWxWYWx1ZUhlbHBlciIsInJlcXVlc3RGb3JBZGRpdGlvbmFsVmFsdWVDb250ZXh0RGF0YSIsImFkZGl0aW9uYWxWYWx1ZXMiLCJ2YWx1ZUhlbHBMaXN0QmluZGluZyIsInZhbHVlSGVscEJpbmRpbmdJbmZvIiwicGF5bG9hZCIsInNvcnRlcnMiLCJyZXZlcnNlUmVjb21tZW5kYXRpb25WYWx1ZXMiLCJmaWx0ZXIiLCJ2YWx1ZSIsImdyb3VwS2V5IiwicmVjb21tZW5kYXRpb24iLCJyZXZlcnNlIiwicGFyYW1ldGVycyIsIiRzZWxlY3QiLCJxdWFsaWZpZXJzIiwidmFsdWVIZWxwUXVhbGlmaWVyIiwidmhQcm9wZXJ0aWVzIiwic2VhcmNoVGVybSIsIiRzZWFyY2giLCJsaXN0U29ydGVycyIsImZvckVhY2giLCJzb3J0ZXIiLCJwdXNoIiwiU29ydGVyIiwibmFtZSIsImRlc2NlbmRpbmciLCJ2YWx1ZUhlbHBMaXN0TW9kZWwiLCJnZXRNb2RlbCIsImFkZGl0aW9uYWxWYWx1ZUNvbnRleHRQcm9taXNlIiwiZ2V0QWRkaXRpb25hbFZhbHVlQ29udGV4dFByb21pc2UiLCJzdWJtaXRCYXRjaCIsImFkZGl0aW9uYWxWYWx1ZXNDb250ZXh0IiwiUHJvbWlzZSIsImFsbCIsInJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJhbGxDb250ZXh0cyIsImxlbmd0aCIsImlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwicmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YSIsIm1hcCIsImNvbnRleHQiLCJnZXRPYmplY3QiLCJvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YSIsInZhbHVlSGVscEZpbHRlcnMiLCJnZXRWYWx1ZUhlbHBCaW5kaW5nRmlsdGVycyIsInJlY29tbWVuZGF0aW9uVmFsdWVGaWx0ZXJzIiwiZ2V0QWRkaXRpb25hbFZhbHVlRmlsdGVycyIsInJlY29tbWVuZGF0aW9uVmFsdWVzTGlzdEJpbmRpbmciLCJiaW5kTGlzdCIsInBhdGgiLCJ1bmRlZmluZWQiLCJyZXF1ZXN0Q29udGV4dHMiLCJhbGxMaXN0QmluZGluZyIsIkluZmluaXR5IiwiZmlsdGVycyIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VtZVZhbHVlTGlzdEJpbmRpbmdBbmRSZXNldENoYW5nZXMiLCJpc1N1c3BlbmRlZCIsInJlc3VtZUFzeW5jIiwicmVzZXRDaGFuZ2VzIiwiZXJyb3IiLCJzb3J0QW5kRmlsdGVyTGlzdEJpbmRpbmciLCJGaWx0ZXIiLCJOT05FIiwiRmlsdGVyVHlwZSIsIkFwcGxpY2F0aW9uIiwibW9kaWZpZWRTb3J0ZXJzIiwiZ2V0U29ydGVyRnVuY3Rpb24iLCJzb3J0IiwicmV2ZXJzZUFkZGl0aW9uYWxWYWx1ZXMiLCJhZGRpdGlvbmFsVmFsdWUiLCJ2YWx1ZXMiLCJwcm9wZXJ0eVBhdGgiLCJ2YWx1ZTEiLCJvcGVyYXRvciIsInJlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZ2V0UHJvcGVydHkiLCJnZXRUZXh0IiwicmVjZW50VmFsdWUiLCJjcmVhdGVUcmFuc2llbnRDb250ZXh0c0ZvckFkZGl0aW9uYWxWYWx1ZUNvbnRleHREYXRhIiwicmVjZW50VmFsdWVzQ29udGV4dERhdGEiLCJjcmVhdGVHcm91cGVkVHJhbnNpZW50Q29udGV4dHMiLCJvdGhlciIsImFkZGl0aW9uYWxWYWx1ZUNvbnRleHREYXRhIiwiY29udGV4dERhdGEiLCJjcmVhdGUiLCJjcmVhdGVkIiwiY2FuY2VsZWQiLCJMb2ciLCJnZXRSZWxldmFudFJlY29tbWVuZGF0aW9ucyIsImRhdGEiLCJiaW5kaW5nQ29udGV4dCIsImJpbmRpbmdQYXRoIiwicmVsZXZhbnRSZWNvbW1lbmRhdGlvbnMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0UmVjb21tZW5kYXRpb25Qcm9wZXJ0eVBhdGgiLCJ2ZXJzaW9uIiwiZ2V0QWRkaXRpb25hbFZhbHVlRnJvbVByb3BlcnR5UGF0aCIsInZhbHVlRGF0YSIsIl9jaGVja0ZvcktleXNJblJlY29tbWVuZGF0aW9ucyIsImtleVByb3BlcnRpZXMiLCJrZXkiLCJnZXRBZGRpdGlvbmFsVmFsdWVGcm9tS2V5cyIsInJlY29tbWVuZGF0aW9uRGF0YSIsInJlc3VsdCIsInJlY0RhdGEiLCJhbGxLZXlzTWF0Y2giLCJfZ2V0UmVjb21tZW5kYXRpb24iLCJvbGREYXRhIiwiYXNzaWduIiwiaW5jbHVkZXMiLCJwcm9wZXJ0eVBhdGhzIiwic3BsaXQiLCJuYXZQcm9wUGF0aCIsInNwbGljZSIsImpvaW4iLCJzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyIiwiZ2V0U3RhbmRhcmRSZWNvbW1lbmRhdGlvbnMiLCJnZXRSZWxldmFudE90aGVyc1ZhbHVlc0NvbnRleHREYXRhIiwidmFsdWVIZWxwS2V5cyIsImNoZWNrVmFsdWVzTWF0Y2giLCJnZXRSZWxldmFudFJlY2VudFZhbHVlc0NvbnRleHREYXRhIiwiYmluZGluZ0luZm8iLCJyZWNlbnRWYWx1ZXNNb2RlbCIsIkpTT05Nb2RlbCIsInJlY2VudFZhbHVlc0xpc3QiLCJnZXRBbGxDdXJyZW50Q29udGV4dHMiLCJyZWNlbnRWYWx1ZUNvbnRleHREYXRhIiwiZmlsdGVyUmVjZW50VmFsdWVzQ29udGV4dERhdGEiLCJjb250ZXh0RGF0YVRvQmVNYXRjaGVkIiwiY29udGV4dERhdGFMaXN0Iiwib2JqIiwibWF0Y2giLCJnZXRSZWxldmFudFJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGEiLCJyZWNvbW1lbmRhdGlvblZhbHVlcyIsInZhbHVlTGlzdFByb3BlcnR5IiwicmVsZXZhbnRSZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhIiwiZm91bmRPYmplY3QiLCJmaW5kIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBZGRpdGlvbmFsVmFsdWVIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEluQ29tcGxldGVuZXNzSW5mb1R5cGUsXG5cdEludGVybmFsUHJvcGVydHlBZGRpdGlvbmFsVmFsdWUsXG5cdEtleVByb3BlcnRpZXNEYXRhVHlwZSxcblx0UmVjb21tZW5kYXRpb25EYXRhRm9yTmF2UHJvcGVydHlUeXBlLFxuXHRSZWNvbW1lbmRhdGlvblZhbHVlVHlwZVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZWNvbW1lbmRhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBSZWNvbW1lbmRhdGlvbkluZm8sIFN0YW5kYXJkUmVjb21tZW5kYXRpb25EYXRhVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXJcIjtcbmltcG9ydCB7IHN0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkRGF0YVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IFNvcnRlclR5cGUsIFZhbHVlSGVscFBheWxvYWQgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVMaXN0SGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEFnZ3JlZ2F0aW9uQmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCBGaWx0ZXJUeXBlIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyVHlwZVwiO1xuaW1wb3J0IFNvcnRlciBmcm9tIFwic2FwL3VpL21vZGVsL1NvcnRlclwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRFcnJvclR5cGUgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuXG5lbnVtIEFkZGl0aW9uYWxWYWx1ZUdyb3VwS2V5IHtcblx0cmVjb21tZW5kYXRpb24gPSBcInJlY29tbWVuZGF0aW9uXCIsXG5cdHJlY2VudFZhbHVlID0gXCJyZWNlbnRWYWx1ZVwiLFxuXHRvdGhlciA9IFwib3RoZXJcIlxufVxuZXhwb3J0IHR5cGUgQWRkaXRpb25hbFZhbHVlVHlwZSA9IHtcblx0cHJvcGVydHlQYXRoOiBzdHJpbmc7XG5cdHZhbHVlczogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pW107XG5cdGdyb3VwS2V5OiBBZGRpdGlvbmFsVmFsdWVHcm91cEtleTsgLy8gdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBncm91cFxufTtcbmV4cG9ydCB0eXBlIEJpbmRpbmdJbmZvUGFyYW1ldGVycyA9IHtcblx0JHNlbGVjdDogc3RyaW5nW107XG5cdCRleHBhbmQ/OiBzdHJpbmdbXTtcblx0JHNlYXJjaDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQWRkaXRpb25WYWx1ZURlZmluaXRpb24gPVxuXHR8IEluQ29tcGxldGVuZXNzSW5mb1R5cGVcblx0fCBSZWNvbW1lbmRhdGlvbkRhdGFGb3JOYXZQcm9wZXJ0eVR5cGVbXVxuXHR8IEludGVybmFsUHJvcGVydHlBZGRpdGlvbmFsVmFsdWVcblx0fCB7fTtcbmNvbnN0IGFkZGl0aW9uYWxWYWx1ZUhlbHBlciA9IHtcblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgdG8gY3JlYXRlIGNvbnRleHQgYmFzZWQgb24gYWRkaXRpb25hbCB2YWx1ZSBmaWx0ZXJzIGFuZCBjdXN0b20gc29ydGVyIGFuZCByZXF1ZXN0IGNvbnRleHRzIGZyb20gaXQuXG5cdCAqXG5cdCAqIEBwYXJhbSBhZGRpdGlvbmFsVmFsdWVzIEFycmF5IG9mIGFkZGl0aW9uYWwgdmFsdWVzXG5cdCAqIEBwYXJhbSB2YWx1ZUhlbHBMaXN0QmluZGluZyBMaXN0IGJpbmRpbmdcblx0ICogQHBhcmFtIHZhbHVlSGVscEJpbmRpbmdJbmZvIFRoZSBiaW5kaW5nIGluZm8gb2JqZWN0IHRvIGJlIHVzZWQgdG8gYmluZCB0aGUgbGlzdCB0byB0aGUgbW9kZWxcblx0ICogQHBhcmFtIHBheWxvYWQgUGF5bG9hZCBvZiB0aGUgdmFsdWUgaGVscFxuXHQgKiBAcGFyYW0gc29ydGVycyBTb3J0ZXJzIG9mIHRoZSB2YWx1ZSBoZWxwIGxpc3QgYmluZGluZ1xuXHQgKiBAcmV0dXJucyBBZGRpdGlvbmFsIHZhbHVlIGNvbnRleHRzXG5cdCAqL1xuXHRyZXF1ZXN0Rm9yQWRkaXRpb25hbFZhbHVlQ29udGV4dERhdGE6IGFzeW5jIGZ1bmN0aW9uIChcblx0XHRhZGRpdGlvbmFsVmFsdWVzOiBBZGRpdGlvbmFsVmFsdWVUeXBlW10sXG5cdFx0dmFsdWVIZWxwTGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcsXG5cdFx0dmFsdWVIZWxwQmluZGluZ0luZm86IEFnZ3JlZ2F0aW9uQmluZGluZ0luZm8sXG5cdFx0cGF5bG9hZDogVmFsdWVIZWxwUGF5bG9hZCxcblx0XHRzb3J0ZXJzOiBTb3J0ZXJUeXBlW11cblx0KTogUHJvbWlzZTx7IHJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGE6IEZpZWxkRGF0YVR5cGVbXTsgb3RoZXJzVmFsdWVzQ29udGV4dERhdGE6IEZpZWxkRGF0YVR5cGVbXSB9PiB7XG5cdFx0Ly8gcmV2ZXJzZSB0aGUgYXJyYXkgc28gdGhhdCB3aGlsZSBjcmVhdGluZyB0cmFuc2llbnQgY29udGV4dCBmaXJzdCBhZGRpdGlvbmFsIHZhbHVlIGlzIGdyb3VwZWQgZmlyc3Rcblx0XHRjb25zdCByZXZlcnNlUmVjb21tZW5kYXRpb25WYWx1ZXMgPSBbXG5cdFx0XHQuLi5hZGRpdGlvbmFsVmFsdWVzLmZpbHRlcigodmFsdWUpID0+IHZhbHVlLmdyb3VwS2V5ID09PSBBZGRpdGlvbmFsVmFsdWVHcm91cEtleS5yZWNvbW1lbmRhdGlvbilcblx0XHRdLnJldmVyc2UoKTtcblxuXHRcdC8vIGxvZ2ljIHRvIGFkZCAkc2VsZWN0IGZvciBtdWx0aS1sZXZlbCBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgYXMgZmlsbGluZyAkc2VsZWN0IGlzIHN1ZmZpY2llbnQgZm9yIHRoZSBtb2RlbCB0byBjcmVhdGUgdGhlIGV4cGFuZCBjYWxsc1xuXHRcdCh2YWx1ZUhlbHBCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIGFzIEJpbmRpbmdJbmZvUGFyYW1ldGVycykuJHNlbGVjdCA9XG5cdFx0XHRwYXlsb2FkLnF1YWxpZmllcnNbcGF5bG9hZC52YWx1ZUhlbHBRdWFsaWZpZXJdLnZoUHJvcGVydGllcyA/PyBbXTtcblxuXHRcdC8vIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBpbnB1dCBpbiB0aGUgZmllbGRcblx0XHQvLyBUaGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRvIHNob3cgdGhlIFwib3RoZXJzXCIgc2VjdGlvbiBvciBub3Rcblx0XHQvLyBhbmQgYWxzbyB0byBkZXRlcm1pbmUgaWYgdHlwZUFoZWFkIHNob3VsZCBvcGVuIG9yIG5vdFxuXHRcdGNvbnN0IHNlYXJjaFRlcm0gPSAodmFsdWVIZWxwQmluZGluZ0luZm8ucGFyYW1ldGVycyBhcyBCaW5kaW5nSW5mb1BhcmFtZXRlcnMpLiRzZWFyY2g7XG5cdFx0KHZhbHVlSGVscEJpbmRpbmdJbmZvLnBhcmFtZXRlcnMgYXMgQmluZGluZ0luZm9QYXJhbWV0ZXJzKS4kc2VhcmNoID0gc2VhcmNoVGVybTtcblx0XHRjb25zdCBsaXN0U29ydGVyczogU29ydGVyW10gPSBbXTtcblx0XHRzb3J0ZXJzLmZvckVhY2goKHNvcnRlcjogU29ydGVyVHlwZSkgPT4gbGlzdFNvcnRlcnMucHVzaChuZXcgU29ydGVyKHNvcnRlci5uYW1lID8/IFwiXCIsIHNvcnRlci5kZXNjZW5kaW5nKSkpO1xuXHRcdGNvbnN0IHZhbHVlSGVscExpc3RNb2RlbDogT0RhdGFNb2RlbCA9IHZhbHVlSGVscExpc3RCaW5kaW5nLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbDtcblxuXHRcdGNvbnN0IGFkZGl0aW9uYWxWYWx1ZUNvbnRleHRQcm9taXNlOiBQcm9taXNlPFY0Q29udGV4dFtdPltdID0gdGhpcy5nZXRBZGRpdGlvbmFsVmFsdWVDb250ZXh0UHJvbWlzZShcblx0XHRcdHJldmVyc2VSZWNvbW1lbmRhdGlvblZhbHVlcyxcblx0XHRcdHNlYXJjaFRlcm0sXG5cdFx0XHRwYXlsb2FkLFxuXHRcdFx0dmFsdWVIZWxwTGlzdE1vZGVsLFxuXHRcdFx0dmFsdWVIZWxwQmluZGluZ0luZm8sXG5cdFx0XHRsaXN0U29ydGVyc1xuXHRcdCk7XG5cdFx0YXdhaXQgdmFsdWVIZWxwTGlzdE1vZGVsLnN1Ym1pdEJhdGNoKFwiYWRkaXRpb25hbFZhbHVlXCIpO1xuXHRcdGNvbnN0IGFkZGl0aW9uYWxWYWx1ZXNDb250ZXh0ID0gYXdhaXQgUHJvbWlzZS5hbGwoYWRkaXRpb25hbFZhbHVlQ29udGV4dFByb21pc2UpO1xuXHRcdGxldCByZWNvbW1lbmRhdGlvbkNvbnRleHRzOiBWNENvbnRleHRbXSA9IFtdLFxuXHRcdFx0YWxsQ29udGV4dHM6IFY0Q29udGV4dFtdID0gW107XG5cdFx0aWYgKHJldmVyc2VSZWNvbW1lbmRhdGlvblZhbHVlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRyZWNvbW1lbmRhdGlvbkNvbnRleHRzID0gYWRkaXRpb25hbFZhbHVlc0NvbnRleHRbMF07XG5cdFx0XHRpZiAoc2VhcmNoVGVybSB8fCBwYXlsb2FkLmlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzKSB7XG5cdFx0XHRcdGFsbENvbnRleHRzID0gYWRkaXRpb25hbFZhbHVlc0NvbnRleHRbMV07XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChzZWFyY2hUZXJtIHx8IHBheWxvYWQuaXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMpIHtcblx0XHRcdGFsbENvbnRleHRzID0gYWRkaXRpb25hbFZhbHVlc0NvbnRleHRbMF07XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YSA9IHJlY29tbWVuZGF0aW9uQ29udGV4dHMubWFwKChjb250ZXh0KSA9PiBjb250ZXh0LmdldE9iamVjdCgpIGFzIEZpZWxkRGF0YVR5cGUpO1xuXHRcdGNvbnN0IG90aGVyc1ZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW10gPSBhbGxDb250ZXh0cy5tYXAoKGNvbnRleHQpID0+IGNvbnRleHQuZ2V0T2JqZWN0KCkgYXMgRmllbGREYXRhVHlwZSk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YSxcblx0XHRcdG90aGVyc1ZhbHVlc0NvbnRleHREYXRhXG5cdFx0fTtcblx0fSxcblx0LyoqXG5cdCAqIE1ldGhvZCB0byBnZXQgYWxsIHRoZSByZWxldmFudCBsaXN0IGJpbmRpbmcgKHJlY29tbWVuZGF0aW9uIGFuZCBvdGhlcnMpIHByb21pc2UgZm9yIHdoaWNoIHdlIG5lZWQgdG8gbWFrZSBhIGNhbGwgdG8gdGhlIGJhY2tlbmQuXG5cdCAqIEBwYXJhbSByZXZlcnNlUmVjb21tZW5kYXRpb25WYWx1ZXMgUmV2ZXJzZWQgcmVjb21tZW5kYXRpb24gdmFsdWVzXG5cdCAqIEBwYXJhbSBzZWFyY2hUZXJtIFNlYXJjaCB0ZXJtIGVudGVyZWQgYnkgdGhlIHVzZXJcblx0ICogQHBhcmFtIHBheWxvYWQgUGF5bG9hZCBvZiB0aGUgdmFsdWUgaGVscFxuXHQgKiBAcGFyYW0gdmFsdWVIZWxwTGlzdE1vZGVsIE1vZGVsIG9mIHRoZSB2YWx1ZSBoZWxwXG5cdCAqIEBwYXJhbSB2YWx1ZUhlbHBCaW5kaW5nSW5mbyBCaW5kaW5nIGluZm8gb2YgdGhlIHZhbHVlIGhlbHBcblx0ICogQHBhcmFtIHNvcnRlciBDdXN0b20gc29ydGVyIHdoaWNoIG5lZWRzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGxpc3QgYmluZGluZ1xuXHQgKiBAcmV0dXJucyBBbGwgdGhlIGxpc3QgYmluZGluZyB3aGljaCB3b3VsZCBiZSB1c2VkIHRvIHRyaWdnZXIgY2FsbHMgdG8gdGhlIGJhY2tlbmQuXG5cdCAqL1xuXHRnZXRBZGRpdGlvbmFsVmFsdWVDb250ZXh0UHJvbWlzZTogZnVuY3Rpb24gKFxuXHRcdHJldmVyc2VSZWNvbW1lbmRhdGlvblZhbHVlczogQWRkaXRpb25hbFZhbHVlVHlwZVtdLFxuXHRcdHNlYXJjaFRlcm06IHN0cmluZyxcblx0XHRwYXlsb2FkOiBWYWx1ZUhlbHBQYXlsb2FkLFxuXHRcdHZhbHVlSGVscExpc3RNb2RlbDogT0RhdGFNb2RlbCxcblx0XHR2YWx1ZUhlbHBCaW5kaW5nSW5mbzogQWdncmVnYXRpb25CaW5kaW5nSW5mbyxcblx0XHRzb3J0ZXI6IFNvcnRlcltdXG5cdCk6IFByb21pc2U8VjRDb250ZXh0W10+W10ge1xuXHRcdGNvbnN0IGFkZGl0aW9uYWxWYWx1ZUNvbnRleHRQcm9taXNlOiBQcm9taXNlPFY0Q29udGV4dFtdPltdID0gW107XG5cdFx0Y29uc3QgdmFsdWVIZWxwRmlsdGVyczogRmlsdGVyW10gPSBbLi4udGhpcy5nZXRWYWx1ZUhlbHBCaW5kaW5nRmlsdGVycyh2YWx1ZUhlbHBCaW5kaW5nSW5mbyldO1xuXHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uVmFsdWVGaWx0ZXJzID0gdGhpcy5nZXRBZGRpdGlvbmFsVmFsdWVGaWx0ZXJzKHJldmVyc2VSZWNvbW1lbmRhdGlvblZhbHVlcywgWy4uLnZhbHVlSGVscEZpbHRlcnNdKTtcblxuXHRcdGlmIChyZXZlcnNlUmVjb21tZW5kYXRpb25WYWx1ZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc3QgcmVjb21tZW5kYXRpb25WYWx1ZXNMaXN0QmluZGluZzogT0RhdGFMaXN0QmluZGluZyA9IHZhbHVlSGVscExpc3RNb2RlbC5iaW5kTGlzdChcblx0XHRcdFx0dmFsdWVIZWxwQmluZGluZ0luZm8ucGF0aCxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdHJlY29tbWVuZGF0aW9uVmFsdWVGaWx0ZXJzLFxuXHRcdFx0XHR2YWx1ZUhlbHBCaW5kaW5nSW5mby5wYXJhbWV0ZXJzXG5cdFx0XHQpO1xuXHRcdFx0YWRkaXRpb25hbFZhbHVlQ29udGV4dFByb21pc2UucHVzaChyZWNvbW1lbmRhdGlvblZhbHVlc0xpc3RCaW5kaW5nLnJlcXVlc3RDb250ZXh0cygwLCAxMCwgXCJhZGRpdGlvbmFsVmFsdWVcIikpO1xuXHRcdH1cblxuXHRcdGlmIChzZWFyY2hUZXJtIHx8IHBheWxvYWQuaXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMpIHtcblx0XHRcdGNvbnN0IGFsbExpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nID0gdmFsdWVIZWxwTGlzdE1vZGVsLmJpbmRMaXN0KFxuXHRcdFx0XHR2YWx1ZUhlbHBCaW5kaW5nSW5mby5wYXRoLFxuXHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdHNvcnRlcixcblx0XHRcdFx0dmFsdWVIZWxwRmlsdGVycyxcblx0XHRcdFx0dmFsdWVIZWxwQmluZGluZ0luZm8ucGFyYW1ldGVyc1xuXHRcdFx0KTtcblx0XHRcdGFkZGl0aW9uYWxWYWx1ZUNvbnRleHRQcm9taXNlLnB1c2goXG5cdFx0XHRcdC8vIGluIGNhc2Ugb2YgZHJvcGRvd24sIHdlIGFyZSBzdXBwb3NlZCB0byBmZXRjaCBhbGwgdGhlIHJlY29yZHNcblx0XHRcdFx0YWxsTGlzdEJpbmRpbmcucmVxdWVzdENvbnRleHRzKDAsIHBheWxvYWQuaXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMgPyBJbmZpbml0eSA6IDEwLCBcImFkZGl0aW9uYWxWYWx1ZVwiKVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIGFkZGl0aW9uYWxWYWx1ZUNvbnRleHRQcm9taXNlO1xuXHR9LFxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSB0byBmZXRjaCB0aGUgdmFsdWVoZWxwIGJpbmRpbmcgZmlsdGVycy5cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlSGVscEJpbmRpbmdJbmZvIFRoZSBiaW5kaW5nIGluZm8gb2JqZWN0IHRvIGJlIHVzZWQgdG8gYmluZCB0aGUgbGlzdCB0byB0aGUgbW9kZWxcblx0ICogQHJldHVybnMgRmlsdGVycyBvZiB2YWx1ZWhlbHAgYmluZGluZ1xuXHQgKi9cblx0Z2V0VmFsdWVIZWxwQmluZGluZ0ZpbHRlcnM6IGZ1bmN0aW9uICh2YWx1ZUhlbHBCaW5kaW5nSW5mbzogQWdncmVnYXRpb25CaW5kaW5nSW5mbykge1xuXHRcdC8vIGdldCBhbGwgZXhpc3RpbmcgZmlsdGVycyBmcm9tIHRoZSBiaW5kaW5nIGluZm9cblx0XHQvLyB0aGlzICsgYWRkaXRpb25hbCB2YWx1ZSBmaWx0ZXJzIHdpbGwgYmUgdXNlZCBsYXRlciBvbiB0byBmZXRjaCBhZGRpdGlvbmFsIHZhbHVlcyBmcm9tIHRoZSBiYWNrZW5kXG5cdFx0aWYgKHZhbHVlSGVscEJpbmRpbmdJbmZvLmZpbHRlcnMpIHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHZhbHVlSGVscEJpbmRpbmdJbmZvLmZpbHRlcnMpKSB7XG5cdFx0XHRcdHJldHVybiB2YWx1ZUhlbHBCaW5kaW5nSW5mby5maWx0ZXJzO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIFt2YWx1ZUhlbHBCaW5kaW5nSW5mby5maWx0ZXJzXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIFtdO1xuXHR9LFxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiByZXN1bWVzIHRoZSBzdXNwZW5kZWQgbGlzdCBiaW5kaW5nIGFuZCB0aGVuIHJlc2V0cyBjaGFuZ2VzIG9uIGl0LlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWVIZWxwTGlzdEJpbmRpbmcgTGlzdCBiaW5kaW5nXG5cdCAqL1xuXHRyZXN1bWVWYWx1ZUxpc3RCaW5kaW5nQW5kUmVzZXRDaGFuZ2VzOiBhc3luYyBmdW5jdGlvbiAodmFsdWVIZWxwTGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcpIHtcblx0XHRpZiAodmFsdWVIZWxwTGlzdEJpbmRpbmcuaXNTdXNwZW5kZWQoKSkge1xuXHRcdFx0YXdhaXQgdmFsdWVIZWxwTGlzdEJpbmRpbmcucmVzdW1lQXN5bmMoKTtcblx0XHR9XG5cdFx0Ly8gZ2V0IHJpZCBvZiBleGlzdGluZyB0cmFuc2llbnQgY29udGV4dHMuXG5cblx0XHQvLyBkZXN0cm95aW5nIGNhdXNlcyBpc3N1ZXMgc29tZXRpbWVzLCBjb250ZXh0cyBhcmUgbm90IGFsd2F5cyBhdmFpbGFibGUgdG8gZGVzdHJveSBidXQgYXBwZWFyIGFmdGVyd2FyZHMgbWFnaWNhbGx5XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IHZhbHVlSGVscExpc3RCaW5kaW5nLnJlc2V0Q2hhbmdlcygpO1xuXHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHQvL1dlIGRvIG5vdCBkbyBhbnl0aGluZyBoZXJlIGFzIHdlIGtub3cgdGhlIG1vZGVsIHdpbGwgYWx3YXlzIHRocm93IGFuIGVycm9yIGFuZCB0aGlzIHdpbGwgZmlsbCB1cCB0aGUgY29uc29sZSB3aXRoIGVycm9ycy5cblx0XHR9XG5cdH0sXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIHNvcnRpbmcgYW5kIGZpbHRlcmluZyB0aGUgbGlzdCBiaW5kaW5nLlxuXHQgKiBAcGFyYW0gdmFsdWVIZWxwTGlzdEJpbmRpbmcgTGlzdCBCaW5kaW5nXG5cdCAqIEBwYXJhbSBzb3J0ZXJzIFNvcnRlcnMgb2YgdGhlIHZhbHVlIGhlbHAgbGlzdCBiaW5kaW5nXG5cdCAqL1xuXHRzb3J0QW5kRmlsdGVyTGlzdEJpbmRpbmc6IGZ1bmN0aW9uICh2YWx1ZUhlbHBMaXN0QmluZGluZzogT0RhdGFMaXN0QmluZGluZywgc29ydGVyczogU29ydGVyVHlwZVtdKTogdm9pZCB7XG5cdFx0Ly8gSW4gb3JkZXIgdG8gbm90IHNob3cgdGhlIGxpc3QgYXQgYWxsLCB3ZSBwYXNzIGFuIGVtcHR5IGZpbHRlciB3aGljaCB3b3VsZCByZW5kZXIgYW4gZW1wdHkgbGlzdFxuXHRcdHZhbHVlSGVscExpc3RCaW5kaW5nLmZpbHRlcihGaWx0ZXIuTk9ORSwgRmlsdGVyVHlwZS5BcHBsaWNhdGlvbik7XG5cblx0XHRpZiAoc29ydGVycy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IG1vZGlmaWVkU29ydGVyczogU29ydGVyW10gPSBbXTtcblx0XHRcdHNvcnRlcnMuZm9yRWFjaCgoc29ydGVyOiBTb3J0ZXJUeXBlKSA9PlxuXHRcdFx0XHRtb2RpZmllZFNvcnRlcnMucHVzaChuZXcgU29ydGVyKHNvcnRlci5uYW1lID8/IFwiXCIsIHNvcnRlci5kZXNjZW5kaW5nLCB0aGlzLmdldFNvcnRlckZ1bmN0aW9uKSlcblx0XHRcdCk7XG5cdFx0XHR2YWx1ZUhlbHBMaXN0QmluZGluZy5zb3J0KG1vZGlmaWVkU29ydGVycyk7XG5cdFx0fSBlbHNlIHZhbHVlSGVscExpc3RCaW5kaW5nLnNvcnQobmV3IFNvcnRlcihcIlwiLCBmYWxzZSwgdGhpcy5nZXRTb3J0ZXJGdW5jdGlvbikpO1xuXHR9LFxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbnMgY3JlYXRlcyB0aGUgZmlsdGVycyBmb3IgYWRkaXRpb25hbCB2YWx1ZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSByZXZlcnNlQWRkaXRpb25hbFZhbHVlcyBBcnJheSBvZiBhZGRpdGlvbmFsIHZhbHVlcyBpbiByZXZlcnNlIG9yZGVyXG5cdCAqIEBwYXJhbSBmaWx0ZXJzIEV4aXN0aW5nIHZhbHVlaGVscCBiaW5kaW5nIGZpbHRlcnNcblx0ICogQHJldHVybnMgQWRkaXRpb25hbCB2YWx1ZSBmaWx0ZXJzXG5cdCAqL1xuXHRnZXRBZGRpdGlvbmFsVmFsdWVGaWx0ZXJzOiBmdW5jdGlvbiAocmV2ZXJzZUFkZGl0aW9uYWxWYWx1ZXM6IEFkZGl0aW9uYWxWYWx1ZVR5cGVbXSwgZmlsdGVyczogRmlsdGVyW10pOiBGaWx0ZXJbXSB7XG5cdFx0cmV2ZXJzZUFkZGl0aW9uYWxWYWx1ZXMuZm9yRWFjaCgoYWRkaXRpb25hbFZhbHVlKSA9PiB7XG5cdFx0XHRpZiAoYWRkaXRpb25hbFZhbHVlLnZhbHVlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNvbnN0IHZhbHVlcyA9IGFkZGl0aW9uYWxWYWx1ZS52YWx1ZXM7XG5cdFx0XHRcdGNvbnN0IHByb3BlcnR5UGF0aCA9IGFkZGl0aW9uYWxWYWx1ZS5wcm9wZXJ0eVBhdGg7XG5cdFx0XHRcdC8vIGFkZCBhZGRpdGlvbmFsIHZhbHVlIGZpbHRlcnMgdG8gZXhpc3RpbmcgZmlsdGVycyBmcm9tIHRoZSBiaW5kaW5nIGluZm9cblx0XHRcdFx0dmFsdWVzLmZvckVhY2goKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0Ly8gdXBkYXRlIHRoZSB2YWx1ZSBoZWxwIGJpbmRpbmcgaW5mbyB0byBnZXQgYWRkaXRpb25hbCB2YWx1ZXMgZnJvbSB0aGUgYmFja2VuZFxuXHRcdFx0XHRcdGZpbHRlcnMucHVzaChcblx0XHRcdFx0XHRcdG5ldyBGaWx0ZXIoe1xuXHRcdFx0XHRcdFx0XHRwYXRoOiBwcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0XHRcdHZhbHVlMTogdmFsdWUsXG5cdFx0XHRcdFx0XHRcdG9wZXJhdG9yOiBcIkVRXCJcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGZpbHRlcnM7XG5cdH0sXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgY2FsbGJhY2sgdG8gdGhlIGN1c3RvbSBzb3J0ZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSBjb250ZXh0IENvbnRleHQgb2YgdGhlIEZpZWxkXG5cdCAqIEByZXR1cm5zIEdyb3VwIGtleSB0aGF0IGNhbiBiZSB1c2VkIGZvciBzb3J0aW5nXG5cdCAqL1xuXHRnZXRTb3J0ZXJGdW5jdGlvbjogZnVuY3Rpb24gKGNvbnRleHQ6IFY0Q29udGV4dCk6IHN0cmluZyB7XG5cdFx0Ly9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuXHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5tYWNyb3NcIikhO1xuXHRcdC8vZ2V0IHRoZSBjbGllbnQgc2lkZSBhbm5vdGF0aW9uIHRvIGZpZ3VyZSBvdXQgdGhlIGdyb3VwIGtleVxuXHRcdGNvbnN0IGdyb3VwS2V5ID0gY29udGV4dC5nZXRQcm9wZXJ0eShcIkAkZmUuYWRkaXRpb25hbFZhbHVlR3JvdXBLZXlcIikgYXMgc3RyaW5nO1xuXHRcdGlmIChncm91cEtleSA9PT0gQWRkaXRpb25hbFZhbHVlR3JvdXBLZXkucmVjb21tZW5kYXRpb24pIHtcblx0XHRcdHJldHVybiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9BRERJVElPTkFMVkFMVUVIRUxQRVJfUkVDT01NRU5EQVRJT05TXCIpO1xuXHRcdH0gZWxzZSBpZiAoZ3JvdXBLZXkgPT09IEFkZGl0aW9uYWxWYWx1ZUdyb3VwS2V5LnJlY2VudFZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fQURESVRJT05BTFZBTFVFSEVMUEVSX1JFQ0VOVFZBTFVFXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fQURESVRJT05BTFZBTFVFSEVMUEVSX09USEVSU1wiKTtcblx0XHR9XG5cdH0sXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gY3JlYXRlIHRyYW5zaWVudCBjb250ZXh0cyBvZiB0aGUgdmFsdWUgaGVscCBsaXN0IGJpbmRpbmcgZm9yIHRoZSBnaXZlbiBkaWZmZXJlbnQgdHlwZXMgYWRkaXRpb25hbCB2YWx1ZSBjb250ZXh0IGRhdGEuXG5cdCAqIEBwYXJhbSByZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhIFJlY29tbWVuZGF0aW9uIHZhbHVlcyBjb250ZXh0IGRhdGFcblx0ICogQHBhcmFtIHJlY2VudFZhbHVlc0NvbnRleHREYXRhIFJlY2VudCB2YWx1ZXMgY29udGV4dCBkYXRhXG5cdCAqIEBwYXJhbSBvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YSBPdGhlciB2YWx1ZXMgY29udGV4dCBkYXRhXG5cdCAqIEBwYXJhbSB2YWx1ZUhlbHBMaXN0QmluZGluZyBMaXN0IGJpbmRpbmdcblx0ICovXG5cdGNyZWF0ZVRyYW5zaWVudENvbnRleHRzRm9yQWRkaXRpb25hbFZhbHVlQ29udGV4dERhdGE6IGZ1bmN0aW9uIChcblx0XHRyZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW10sXG5cdFx0cmVjZW50VmFsdWVzQ29udGV4dERhdGE6IEZpZWxkRGF0YVR5cGVbXSxcblx0XHRvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YTogRmllbGREYXRhVHlwZVtdLFxuXHRcdHZhbHVlSGVscExpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nXG5cdCk6IHZvaWQge1xuXHRcdHRoaXMuY3JlYXRlR3JvdXBlZFRyYW5zaWVudENvbnRleHRzKG90aGVyc1ZhbHVlc0NvbnRleHREYXRhLCB2YWx1ZUhlbHBMaXN0QmluZGluZywgQWRkaXRpb25hbFZhbHVlR3JvdXBLZXkub3RoZXIpO1xuXHRcdHRoaXMuY3JlYXRlR3JvdXBlZFRyYW5zaWVudENvbnRleHRzKHJlY2VudFZhbHVlc0NvbnRleHREYXRhLCB2YWx1ZUhlbHBMaXN0QmluZGluZywgQWRkaXRpb25hbFZhbHVlR3JvdXBLZXkucmVjZW50VmFsdWUpO1xuXHRcdHRoaXMuY3JlYXRlR3JvdXBlZFRyYW5zaWVudENvbnRleHRzKHJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGEsIHZhbHVlSGVscExpc3RCaW5kaW5nLCBBZGRpdGlvbmFsVmFsdWVHcm91cEtleS5yZWNvbW1lbmRhdGlvbik7XG5cdH0sXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gY3JlYXRlIHRyYW5zaWVudCBjb250ZXh0IGZvciB0aGUgZ2l2ZW4gYWRkaXRpb25hbCB2YWx1ZSBjb250ZXh0IGRhdGEuIEl0IGFsc28gYWRkcyBhIGtleSBmb3IgZWFjaCBjb250ZXh0IHdoaWNoIGlzIHVzZWQgdG8gZ3JvdXAgdGhlIG5ld2x5IGNyZWF0ZWQgdHJhbnNpZW50IGNvbnRleHRzIGFjY29yZGluZ2x5LlxuXHQgKiBAcGFyYW0gYWRkaXRpb25hbFZhbHVlQ29udGV4dERhdGEgQWRkaXRpb25hbCB2YWx1ZSBjb250ZXh0IGRhdGFcblx0ICogQHBhcmFtIHZhbHVlSGVscExpc3RCaW5kaW5nIExpc3QgYmluZGluZ1xuXHQgKiBAcGFyYW0gZ3JvdXBLZXkgS2V5IHdoaWNoIGluZGljYXRlcyB0aGUgZ3JvdXAgb2YgdGhlIGFkZGl0aW9uYWwgdmFsdWUgY29udGV4dCBkYXRhXG5cdCAqL1xuXHRjcmVhdGVHcm91cGVkVHJhbnNpZW50Q29udGV4dHM6IGZ1bmN0aW9uIChcblx0XHRhZGRpdGlvbmFsVmFsdWVDb250ZXh0RGF0YTogRmllbGREYXRhVHlwZVtdLFxuXHRcdHZhbHVlSGVscExpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLFxuXHRcdGdyb3VwS2V5OiBBZGRpdGlvbmFsVmFsdWVHcm91cEtleVxuXHQpOiB2b2lkIHtcblx0XHQvLyByZXZlcnNlIG9mIHRoZSBjb250ZXh0IGRhdGEgaXMgcmVxdWlyZWQgc28gdGhhdCB0aGUgY29udGV4dCB3aGljaCBuZWVkcyB0byBiZSBzaG93biBiZWxvdyBpbiB0aGUgbGlzdCBnZXRzIGNyZWF0ZWQgZmlyc3Rcblx0XHRbLi4uYWRkaXRpb25hbFZhbHVlQ29udGV4dERhdGFdLnJldmVyc2UoKS5mb3JFYWNoKGFzeW5jIChjb250ZXh0RGF0YTogRmllbGREYXRhVHlwZSkgPT4ge1xuXHRcdFx0Ly8gZ3JvdXBLZXkgaXMgYWRkZWQgaW4gb3JkZXIgdG8gcHJvcGVybHkgZ3JvdXAgdGhlIHRyYW5zaWVudCBjb250ZXh0cyBhbW9uZ3N0IGFsbCAzIGdyb3Vwc1xuXHRcdFx0Y29udGV4dERhdGFbXCJAJGZlLmFkZGl0aW9uYWxWYWx1ZUdyb3VwS2V5XCJdID0gZ3JvdXBLZXk7XG5cdFx0XHRjb25zdCBjb250ZXh0ID0gdmFsdWVIZWxwTGlzdEJpbmRpbmcuY3JlYXRlKGNvbnRleHREYXRhKTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGF3YWl0IGNvbnRleHQuY3JlYXRlZCgpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0Ly8gRm9yIHRyYW5zaWVudCBjb250ZXh0cyB0aGUgY2FuY2VsZWQgaXMgc2V0IHRvIHRydWUgYW5kIGZvciBvdGhlciBjYXNlcyBpdCB3aWxsIGJlIGZhbHNlLiBBdGxlYXN0IGluIHJlY29tbWVuZGF0aW9uc1xuXHRcdFx0XHQvLyB1c2UgY2FzZSB3ZSBkbyBub3QgZmFjZSB0aGUgc2NlbmFyaW8gd2hlcmUgY2FuY2VsZWQgaXMgc2V0IHRvIGZhbHNlLiBGb3Igbm93IHdlIGFyZSBqdXN0IGxvZ2dpbmcgdGhlIGVycm9yLlxuXHRcdFx0XHRpZiAoIShlcnJvciBhcyBDb250ZXh0RXJyb3JUeXBlKS5jYW5jZWxlZCkge1xuXHRcdFx0XHRcdExvZy5lcnJvcigoZXJyb3IgYXMgQ29udGV4dEVycm9yVHlwZSkubmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb25zIHJldHVybnMgdGhlIHJlbGV2YW50IHJlY29tbWVuZGF0aW9ucyBmb3IgdGhlIHZhbHVlbGlzdC5cblx0ICpcblx0ICogQHBhcmFtIGRhdGEgT2JqZWN0IGNvbnRhaW5pbmcgcmVjb21tZW5kYXRpb24gbW9kZWwgZGF0YVxuXHQgKiBAcGFyYW0gYmluZGluZ0NvbnRleHQgQmluZGluZyBjb250ZXh0IG9mIHRoZSBGaWVsZFxuXHQgKiBAcGFyYW0gcHJvcGVydHlQYXRoIFByb3BlcnR5IFBhdGggb2YgdGhlIEZpZWxkXG5cdCAqIEByZXR1cm5zIFJlbGV2YW50IHJlY29tbWVuZGF0aW9ucyBmb3IgdGhlIHZhbHVlbGlzdFxuXHQgKi9cblx0Z2V0UmVsZXZhbnRSZWNvbW1lbmRhdGlvbnM6IGZ1bmN0aW9uIChcblx0XHRkYXRhOiBJbkNvbXBsZXRlbmVzc0luZm9UeXBlIHwge30sXG5cdFx0YmluZGluZ0NvbnRleHQ6IFY0Q29udGV4dCxcblx0XHRwcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0XHRiaW5kaW5nUGF0aD86IHN0cmluZ1xuXHQpOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgdmFsdWVzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+ID0gW107XG5cdFx0bGV0IHJlbGV2YW50UmVjb21tZW5kYXRpb25zOiBJbnRlcm5hbFByb3BlcnR5QWRkaXRpb25hbFZhbHVlIHwgdW5kZWZpbmVkO1xuXHRcdGlmIChPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGggPiAwKSB7XG5cdFx0XHQvL2dldCB0aGUgcmlnaHQgcHJvcGVydHkgcGF0aCBieSBlbGltaW5hdGluZyB0aGUgc3RhcnRpbmcgLyBhbmQgYWxzbyBtYWluIGVudGl0eXNldCBuYW1lXG5cdFx0XHRwcm9wZXJ0eVBhdGggPSB0aGlzLmdldFJlY29tbWVuZGF0aW9uUHJvcGVydHlQYXRoKHByb3BlcnR5UGF0aCk7XG5cdFx0XHRpZiAoKGRhdGEgYXMgUmVjb21tZW5kYXRpb25JbmZvKS52ZXJzaW9uID09PSAyLjAgJiYgYmluZGluZ1BhdGgpIHtcblx0XHRcdFx0cHJvcGVydHlQYXRoID0gYmluZGluZ1BhdGg7XG5cdFx0XHR9XG5cdFx0XHQvL2dldCB0aGUgcmVjb21tZW5kYXRpb25zIGJhc2VkIG9uIHByb3BlcnR5IHBhdGggYW5kIGJpbmRpbmcgY29udGV4dCBwYXNzZWRcblx0XHRcdHJlbGV2YW50UmVjb21tZW5kYXRpb25zID0gdGhpcy5nZXRBZGRpdGlvbmFsVmFsdWVGcm9tUHJvcGVydHlQYXRoKHByb3BlcnR5UGF0aCwgYmluZGluZ0NvbnRleHQsIGRhdGEpIGFzXG5cdFx0XHRcdHwgSW50ZXJuYWxQcm9wZXJ0eUFkZGl0aW9uYWxWYWx1ZVxuXHRcdFx0XHR8IHVuZGVmaW5lZDtcblx0XHRcdC8vaWYgd2UgZ2V0IHJlY29tbWVuZGF0aW9ucyB0aGVuIHB1c2ggdGhlIHZhbHVlc1xuXHRcdFx0aWYgKHJlbGV2YW50UmVjb21tZW5kYXRpb25zICYmIE9iamVjdC5rZXlzKHJlbGV2YW50UmVjb21tZW5kYXRpb25zKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHJlbGV2YW50UmVjb21tZW5kYXRpb25zLmFkZGl0aW9uYWxWYWx1ZXMuZm9yRWFjaCgodmFsdWVEYXRhOiBSZWNvbW1lbmRhdGlvblZhbHVlVHlwZSkgPT4ge1xuXHRcdFx0XHRcdHZhbHVlcy5wdXNoKHZhbHVlRGF0YS52YWx1ZSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly9pZiByZWNvbW1lbmRhdGlvbnMgYXJlIG5vdCBmb3VuZCB0aGVuIHJldHVybiBudWxsXG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRfY2hlY2tGb3JLZXlzSW5SZWNvbW1lbmRhdGlvbnM6IGZ1bmN0aW9uIChrZXlQcm9wZXJ0aWVzOiBLZXlQcm9wZXJ0aWVzRGF0YVR5cGUsIGNvbnRleHREYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogYm9vbGVhbiB7XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4ga2V5UHJvcGVydGllcykge1xuXHRcdFx0aWYgKGtleVByb3BlcnRpZXNba2V5XSAhPT0gY29udGV4dERhdGFba2V5XSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSB0byBmZXRjaCB0aGUgZXhhY3Qgb2JqZWN0IGZyb20gYW4gYXJyYXkgb2Ygb2JqZWN0cyB0aGF0IGNvbnRhaW5zIHJlbGV2YW50IHJlY29tbWVuZGF0aW9uRGF0YSBiYXNlZCBvbiBrZXlzLlxuXHQgKlxuXHQgKiBAcGFyYW0gcmVjb21tZW5kYXRpb25EYXRhIEFycmF5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCB2YWx1ZXNcblx0ICogQHBhcmFtIGJpbmRpbmdDb250ZXh0IEJpbmRpbmcgY29udGV4dCBvZiB0aGUgRmllbGRcblx0ICogQHJldHVybnMgUmVsZXZhbnQgb2JqZWN0IGZyb20gYW4gYXJyYXkgb2Ygb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGFkZGl0aW9uYWwgdmFsdWVcblx0ICovXG5cdGdldEFkZGl0aW9uYWxWYWx1ZUZyb21LZXlzOiBmdW5jdGlvbiAoXG5cdFx0cmVjb21tZW5kYXRpb25EYXRhOiBBZGRpdGlvblZhbHVlRGVmaW5pdGlvbixcblx0XHRiaW5kaW5nQ29udGV4dD86IFY0Q29udGV4dCB8IENvbnRleHRcblx0KTogQWRkaXRpb25WYWx1ZURlZmluaXRpb24ge1xuXHRcdGNvbnN0IGNvbnRleHREYXRhID0gYmluZGluZ0NvbnRleHQ/LmdldE9iamVjdCgpIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ7XG5cdFx0bGV0IHJlc3VsdDogQWRkaXRpb25WYWx1ZURlZmluaXRpb24gPSB7fTtcblx0XHQvL2xvb3AgdGhyb3VnaCB0aGUgcmVjb21tZW5kYXRpb25EYXRhIGFuZCBjaGVjayBpZiB0aGUga2V5UHJvcGVydGllcyBtYXRjaCB3aXRoIHRoZSBiaW5kaW5nIGNvbnRleHQgZGF0YVxuXHRcdGlmIChiaW5kaW5nQ29udGV4dCAmJiBjb250ZXh0RGF0YSkge1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkocmVjb21tZW5kYXRpb25EYXRhKSkge1xuXHRcdFx0XHQocmVjb21tZW5kYXRpb25EYXRhIGFzIFJlY29tbWVuZGF0aW9uRGF0YUZvck5hdlByb3BlcnR5VHlwZVtdKS5mb3JFYWNoKChyZWNEYXRhKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qga2V5UHJvcGVydGllcyA9IHJlY0RhdGEua2V5UHJvcGVydGllcyBhcyBLZXlQcm9wZXJ0aWVzRGF0YVR5cGU7XG5cdFx0XHRcdFx0Y29uc3QgYWxsS2V5c01hdGNoID0gdGhpcy5fY2hlY2tGb3JLZXlzSW5SZWNvbW1lbmRhdGlvbnMoa2V5UHJvcGVydGllcywgY29udGV4dERhdGEpO1xuXHRcdFx0XHRcdC8vaWYgZXZlcnkga2V5IHZhbHVlIG1hdGNoZXMgd2l0aCB0aGUgYmluZGluZyBjb250ZXh0IGRhdGEgdGhlbiBhc3NpZ24gaXQgdG8gcmVzdWx0IHdoaWNoIHdpbGwgYmUgcmV0dXJuZWRcblx0XHRcdFx0XHRpZiAoYWxsS2V5c01hdGNoKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSByZWNEYXRhIGFzIEFkZGl0aW9uVmFsdWVEZWZpbml0aW9uO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0sXG5cblx0X2dldFJlY29tbWVuZGF0aW9uOiBmdW5jdGlvbiAoXG5cdFx0cHJvcGVydHlQYXRoOiBzdHJpbmcsXG5cdFx0YmluZGluZ0NvbnRleHQ6IENvbnRleHQsXG5cdFx0cmVjb21tZW5kYXRpb25EYXRhOiBBZGRpdGlvblZhbHVlRGVmaW5pdGlvblxuXHQpOiBBZGRpdGlvblZhbHVlRGVmaW5pdGlvbiB7XG5cdFx0Ly9jcmVhdGUgYSBjb3B5IG9mIHRoZSByZWNvbW1lbmRhdGlvbkRhdGEgdG8gc3RvcmUgaXRzIHByZXZpb3VzIHZhbHVlIGFzIGl0IHdpbGwgY2hhbmdlIGJlY2F1c2Ugb2YgdGhlIHJlY3Vyc2l2ZSBhcHByb2FjaFxuXHRcdGxldCBvbGREYXRhID0gT2JqZWN0LmFzc2lnbihyZWNvbW1lbmRhdGlvbkRhdGEsIHt9KTtcblx0XHQvL2NoZWNrIGlmIHByb3BlcnR5IHBhdGggZXhpc3RzIG9uIHRoZSByZWNvbW1lbmRhdGlvbkRhdGEgb2JqZWN0IGFuZCBpZiBzbyB0aGVuIHJldHVybiB0aGUgb2JqZWN0IHBvaW50aW5nIHRvIHRoZSBwcm9wZXJ0eSBwYXRoXG5cdFx0aWYgKE9iamVjdC5rZXlzKHJlY29tbWVuZGF0aW9uRGF0YSkuaW5jbHVkZXMocHJvcGVydHlQYXRoKSkge1xuXHRcdFx0cmV0dXJuIChyZWNvbW1lbmRhdGlvbkRhdGEgYXMgSW5Db21wbGV0ZW5lc3NJbmZvVHlwZSlbcHJvcGVydHlQYXRoXSBhcyBBZGRpdGlvblZhbHVlRGVmaW5pdGlvbjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly9pZiBwcm9wZXJ0eSBwYXRoIGlzIG5vdCBwcmVzZW50IHRoZW4gY2hlY2sgaWYgaXQgaXMgMTpuIG1hcHBpbmcgYW5kIHdlIG5lZWQgdG8gZG8gYSByZWN1cnNpdmUgYXBwcm9hY2ggdG8gbGFuZCBvbiB0aGUgZXhhY3Qgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlbGV2YW50IHJlY29tbWVuZGF0aW9uc1xuXHRcdFx0Ly9jb250aW51ZSB0aGUgd2hpbGUgbG9vcCB0aWxsIHRoZSBwcm9wZXJ0eSBwYXRoIGlzIGZvdW5kIGluIHRoZSBwcmV2aW91cyByZWNvbW1lbmRhdGlvbkRhdGFcblx0XHRcdHdoaWxlIChPYmplY3Qua2V5cyhvbGREYXRhKS5sZW5ndGggPiAwICYmICFPYmplY3Qua2V5cyhvbGREYXRhKS5pbmNsdWRlcyhwcm9wZXJ0eVBhdGgpKSB7XG5cdFx0XHRcdC8vIGFzIGl0IG1pZ2h0IGJlIDE6biBtYXBwaW5nIHNvIGZpcnN0IHNlcGVyYXRlIHRoZSBuYXZwcm9wIG5hbWUgYW5kIGFjdHVhbCBwcm9wIG5hbWUgdG8gbWFrZSBzdXJlIHdlIGZpbmQgdGhlIG5hdnByb3AgZmlyc3QgYW5kIHRoZW4gZnJvbSBpdHMgcG9pbnRpbmcgb2JqZWN0IHdlIGZpbmQgdGhlIHByb3BlcnR5IHBhdGhcblx0XHRcdFx0Ly9lZzogX0l0ZW0vTWF0ZXJpYWwgd2lsbCBiZSBmaXJzdCBkaXZpZGVkIGludG8gX0l0ZW0gYW5kIHdlIHNlYXJjaCBmb3IgaXQgYW5kIHRoZW4gZnJvbSBpdHMgcmVsZXZhbnQgb2JqZWN0IHdlIHNlYXJjaCBmb3IgTWF0ZXJpYWxcblx0XHRcdFx0Y29uc3QgcHJvcGVydHlQYXRocyA9IHByb3BlcnR5UGF0aC5zcGxpdChcIi9cIik7XG5cdFx0XHRcdGlmIChwcm9wZXJ0eVBhdGhzLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHQvL2dldHRpbmcgdGhlIG5hdnByb3AgcGF0aFxuXHRcdFx0XHRcdGNvbnN0IG5hdlByb3BQYXRoID0gcHJvcGVydHlQYXRoc1swXTtcblx0XHRcdFx0XHQvL3JlbW92aW5nIHRoZSBuYXZwcm9wIHBhdGggZnJvbSBwcm9wZXJ0eXBhdGhzIHNvIHRoYXQgd2Ugb25seSBjaGVjayBmb3IgYWN0dWFsIHByb3BlcnR5IHBhdGhcblx0XHRcdFx0XHRwcm9wZXJ0eVBhdGhzLnNwbGljZSgwLCAxKTtcblx0XHRcdFx0XHRwcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGhzLmpvaW4oXCIvXCIpO1xuXHRcdFx0XHRcdC8vdXNpbmcgZ2V0QWRkaXRpb25hbFZhbHVlRnJvbVByb3BlcnR5UGF0aCBhbmQgcGFzc2luZyBuYXZQcm9wUGF0aCB3ZSBnZXQgdGhlIGV4YWN0IGFycmF5IG9mIG9iamVjdHMgcG9pbnRpbmcgdG8gdGhlIG5hdlByb3Bcblx0XHRcdFx0XHRyZWNvbW1lbmRhdGlvbkRhdGEgPSB0aGlzLmdldEFkZGl0aW9uYWxWYWx1ZUZyb21Qcm9wZXJ0eVBhdGgoXG5cdFx0XHRcdFx0XHRuYXZQcm9wUGF0aCxcblx0XHRcdFx0XHRcdGJpbmRpbmdDb250ZXh0LFxuXHRcdFx0XHRcdFx0cmVjb21tZW5kYXRpb25EYXRhXG5cdFx0XHRcdFx0KSBhcyBSZWNvbW1lbmRhdGlvbkRhdGFGb3JOYXZQcm9wZXJ0eVR5cGVbXTtcblx0XHRcdFx0XHQvL25vIHBhc3MgdGhlIGFycmF5IG9mIG9iamVjdHMgb2YgbmF2UHJvcCB0byBnZXRBZGRpdGlvbmFsVmFsdWVGcm9tS2V5cyBhbmQgZ2V0IHRoZSBleGFjdCBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgcmVjb21tZW5kYXRpb25EYXRhIGJhc2VkIG9uIGtleXNcblx0XHRcdFx0XHRyZWNvbW1lbmRhdGlvbkRhdGEgPSB0aGlzLmdldEFkZGl0aW9uYWxWYWx1ZUZyb21LZXlzKHJlY29tbWVuZGF0aW9uRGF0YSwgYmluZGluZ0NvbnRleHQpO1xuXHRcdFx0XHRcdGlmIChPYmplY3Qua2V5cyhyZWNvbW1lbmRhdGlvbkRhdGEpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdC8vc2V0IHRoZSByZWNvbW1lbmRhdGlvbkRhdGEgdG8gb2xkRGF0YSBiZWZvcmUgYXNzaWduaW5nIHRoZSBuZXcgdmFsdWUgdG8gaXRcblx0XHRcdFx0XHRcdG9sZERhdGEgPSBPYmplY3QuYXNzaWduKHJlY29tbWVuZGF0aW9uRGF0YSwge30pO1xuXHRcdFx0XHRcdFx0Ly9oZXJlIHdlIGNoZWNrIGZvciB0aGUgYWN0dWFsIHByb3BlcnR5IHBhdGggZnJvbSB0aGUgb2JqZWN0IHdlIGZvdW5kIGZyb20gZ2V0QWRkaXRpb25hbFZhbHVlRnJvbUtleXNcblx0XHRcdFx0XHRcdC8vZWc6IE1hdGVyaWFsIGNhbiBiZSBmb3VuZCBpbiB0aGUgb2JqZWN0IHdoaWNoIGlzIHBhcnQgb2YgYXJyYXkgb2Ygb2JqZWN0cyBvZiBfSXRlbVxuXHRcdFx0XHRcdFx0cmVjb21tZW5kYXRpb25EYXRhID0gdGhpcy5nZXRBZGRpdGlvbmFsVmFsdWVGcm9tUHJvcGVydHlQYXRoKFxuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0XHRcdGJpbmRpbmdDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHRyZWNvbW1lbmRhdGlvbkRhdGFcblx0XHRcdFx0XHRcdCkgYXMgQWRkaXRpb25WYWx1ZURlZmluaXRpb247XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiB7fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHt9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVjb21tZW5kYXRpb25EYXRhO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZ2V0dGluZyB0aGUgYWRkaXRpb25hbCB2YWx1ZSBiYXNlZCBvbiBwcm9wZXJ0eSBwYXRoIGFuZCBiaW5kaW5nIGNvbnRleHQgcGFzc2VkLlxuXHQgKlxuXHQgKiBAcGFyYW0gcHJvcGVydHlQYXRoIFByb3BlcnR5IHBhdGggb2YgdGhlIGZpZWxkXG5cdCAqIEBwYXJhbSBiaW5kaW5nQ29udGV4dCBCaW5kaW5nIGNvbnRleHQgb2YgdGhlIGZpZWxkXG5cdCAqIEBwYXJhbSByZWNvbW1lbmRhdGlvbkRhdGEgT2JqZWN0IGNvbnRhaW5pbmcgYWRkaXRpb25hbCB2YWx1ZVxuXHQgKiBAcmV0dXJucyBBZGRpdGlvbmFsIHZhbHVlIGJhc2VkIG9uIHByb3BlcnR5IHBhdGggYW5kIGJpbmRpbmcgY29udGV4dCBwYXNzZWRcblx0ICovXG5cdGdldEFkZGl0aW9uYWxWYWx1ZUZyb21Qcm9wZXJ0eVBhdGg6IGZ1bmN0aW9uIChcblx0XHRwcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0XHRiaW5kaW5nQ29udGV4dDogVjRDb250ZXh0IHwgQ29udGV4dCxcblx0XHRyZWNvbW1lbmRhdGlvbkRhdGE/OiBBZGRpdGlvblZhbHVlRGVmaW5pdGlvbiB8IFJlY29tbWVuZGF0aW9uSW5mb1xuXHQpOiBBZGRpdGlvblZhbHVlRGVmaW5pdGlvbiB8IFN0YW5kYXJkUmVjb21tZW5kYXRpb25EYXRhVHlwZSB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKChyZWNvbW1lbmRhdGlvbkRhdGEgYXMgUmVjb21tZW5kYXRpb25JbmZvKS52ZXJzaW9uID09PSAyKSB7XG5cdFx0XHRyZXR1cm4gc3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5nZXRTdGFuZGFyZFJlY29tbWVuZGF0aW9ucyhcblx0XHRcdFx0YmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdHByb3BlcnR5UGF0aCxcblx0XHRcdFx0cmVjb21tZW5kYXRpb25EYXRhIGFzIFJlY29tbWVuZGF0aW9uSW5mb1xuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKHJlY29tbWVuZGF0aW9uRGF0YSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2dldFJlY29tbWVuZGF0aW9uKHByb3BlcnR5UGF0aCwgYmluZGluZ0NvbnRleHQsIHJlY29tbWVuZGF0aW9uRGF0YSk7XG5cdFx0fVxuXHR9LFxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIG9mIHRoZSBmaWVsZCBieSByZW1vdmluZyB0aGUgbGVhZGluZyAnLycgYW5kIG1haW4gZW50aXR5IHNldCBuYW1lLlxuXHQgKlxuXHQgKiBAcGFyYW0gcHJvcGVydHlQYXRoIFByb3BlcnR5IFBhdGggb2YgdGhlIEZpZWxkXG5cdCAqIEByZXR1cm5zIFByb3BlcnR5IHBhdGggb2YgdGhlIGZpZWxkIGJ5IHJlbW92aW5nIHRoZSBsZWFkaW5nICcvJyBhbmQgbWFpbiBlbnRpdHkgc2V0IG5hbWUuXG5cdCAqL1xuXHRnZXRSZWNvbW1lbmRhdGlvblByb3BlcnR5UGF0aDogZnVuY3Rpb24gKHByb3BlcnR5UGF0aDogc3RyaW5nKSB7XG5cdFx0Ly9GaXJzdCB3ZSBzcGxpdCB0aGUgcHJvcGVydHkgcGF0aCBiYXNlZCBvbiAvXG5cdFx0Y29uc3QgcHJvcGVydHlQYXRocyA9IHByb3BlcnR5UGF0aC5zcGxpdChcIi9cIik7XG5cdFx0Ly9Ob3cgcmVtb3ZlIHRoZSBmaXJzdCB0d28gZWxlbWVudHMgb2YgdGhlIGFycmF5LiBBcyBmaXJzdCBlbGVtZW50IHdpbGwgYWx3YXlzIGJlICcnIGFuZCBzZWNvbmQgZWxlbWVudCB3aWxsIGJlIG1haW4gZW50aXR5IHNldCBuYW1lXG5cdFx0cHJvcGVydHlQYXRocy5zcGxpY2UoMCwgMik7XG5cdFx0Ly9Ob3cgam9pbiB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIHRvIGNyZWF0ZSBhIG5ldyBwcm9wZXJ0eSBwYXRoIGFuZCByZXR1cm4gaXRcblx0XHRyZXR1cm4gcHJvcGVydHlQYXRocy5qb2luKFwiL1wiKTtcblx0fSxcblx0LyoqXG5cdCAqIE1ldGhvZCB0byBmaWx0ZXIgT3RoZXJzIHZhbHVlcyBjb250ZXh0IGRhdGEgYW5kIHJlbW92ZSB2YWx1ZXMgd2hpY2ggYXJlIGFsc28gcHJlc2VudCBpbiBSZWNlbnRseSBVc2VkIGFuZCBSZWNvbW1lbmRhdGlvbiBncm91cC5cblx0ICogQHBhcmFtIHJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGEgUmVjb21tZW5kYXRpb24gdmFsdWVzIGNvbnRleHQgZGF0YVxuXHQgKiBAcGFyYW0gcmVjZW50VmFsdWVzQ29udGV4dERhdGEgUmVjZW50IHZhbHVlcyBjb250ZXh0IGRhdGFcblx0ICogQHBhcmFtIG90aGVyc1ZhbHVlc0NvbnRleHREYXRhIE90aGVycyB2YWx1ZXMgY29udGV4dCBkYXRhXG5cdCAqIEBwYXJhbSB2YWx1ZUxpc3RQcm9wZXJ0eSBWYWx1ZUxpc3RQcm9wZXJ0eSBvZiB0aGUgcGF5bG9hZFxuXHQgKiBAcGFyYW0gYWRkaXRpb25hbFZhbHVlcyBBcnJheSBvZiBhZGRpdGlvbmFsIHZhbHVlc1xuXHQgKiBAcmV0dXJucyBPdGhlcnMgdmFsdWVzIGNvbnRleHQgZGF0YS5cblx0ICovXG5cdGdldFJlbGV2YW50T3RoZXJzVmFsdWVzQ29udGV4dERhdGE6IGZ1bmN0aW9uIChcblx0XHRyZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW10sXG5cdFx0cmVjZW50VmFsdWVzQ29udGV4dERhdGE6IEZpZWxkRGF0YVR5cGVbXSxcblx0XHRvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YTogRmllbGREYXRhVHlwZVtdLFxuXHRcdHZhbHVlSGVscEtleXM6IHN0cmluZ1tdXG5cdCk6IEZpZWxkRGF0YVR5cGVbXSB7XG5cdFx0cmV0dXJuIG90aGVyc1ZhbHVlc0NvbnRleHREYXRhLmZpbHRlcihcblx0XHRcdChjb250ZXh0RGF0YSkgPT5cblx0XHRcdFx0IXRoaXMuY2hlY2tWYWx1ZXNNYXRjaChjb250ZXh0RGF0YSwgcmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YSwgdmFsdWVIZWxwS2V5cykgJiZcblx0XHRcdFx0IXRoaXMuY2hlY2tWYWx1ZXNNYXRjaChjb250ZXh0RGF0YSwgcmVjZW50VmFsdWVzQ29udGV4dERhdGEsIHZhbHVlSGVscEtleXMpXG5cdFx0KTtcblx0fSxcblx0LyoqXG5cdCAqIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIHJlY2VudCB2YWx1ZXMgbWF0Y2hlcyBlaXRoZXIgd2l0aCB0aGUgc2VhcmNoIHRlcm0gb3Igd2l0aCB0aGUgb3RoZXJzIHZhbHVlcy5cblx0ICogQHBhcmFtIG90aGVyc1ZhbHVlc0NvbnRleHREYXRhIE90aGVycyB2YWx1ZXMgY29udGV4dCBkYXRhXG5cdCAqIEBwYXJhbSByZWNlbnRWYWx1ZXNDb250ZXh0RGF0YSBSZWNlbnQgdmFsdWVzIGNvbnRleHQgZGF0YVxuXHQgKiBAcGFyYW0gdmFsdWVMaXN0UHJvcGVydHkgVmFsdWVMaXN0UHJvcGVydHkgb2YgdGhlIHBheWxvYWRcblx0ICogQHBhcmFtIHNlYXJjaFRlcm0gU2VhcmNoIHRlcm0gZW50ZXJlZCBieSB0aGUgdXNlclxuXHQgKiBAcGFyYW0gYmluZGluZ0luZm8gQmluZGluZyBpbmZvIG9iamVjdCBvZiB0aGUgdmFsdWUgaGVscFxuXHQgKiBAcmV0dXJucyBSZWNlbnQgdmFsdWVzIGNvbnRleHQgZGF0YSB3aGljaCBuZWVkcyB0byBiZSBzaG93IGluIHRoZSBSZWNlbnRseSBVc2VkIGdyb3VwIGluIHRoZSB0eXBlIGFoZWFkIHN1Z2dlc3Rpb24gbGlzdC5cblx0ICovXG5cdGdldFJlbGV2YW50UmVjZW50VmFsdWVzQ29udGV4dERhdGE6IGZ1bmN0aW9uIChcblx0XHRvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YTogRmllbGREYXRhVHlwZVtdLFxuXHRcdHJlY2VudFZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW10sXG5cdFx0dmFsdWVIZWxwS2V5czogc3RyaW5nW10sXG5cdFx0c2VhcmNoVGVybTogc3RyaW5nLFxuXHRcdGJpbmRpbmdJbmZvOiBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvXG5cdCk6IEZpZWxkRGF0YVR5cGVbXSB7XG5cdFx0Ly8gZmlsdGVyIG91dCByZWNlbnQgdmFsdWUgYmFzZWQgb24gZXhpc3RpbmcgdmFsdWUgaGVscCBmaWx0ZXJzXG5cdFx0Y29uc3QgcmVjZW50VmFsdWVzTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHsgcmVjZW50VmFsdWVzQ29udGV4dERhdGEgfSk7XG5cdFx0Y29uc3QgcmVjZW50VmFsdWVzTGlzdCA9IHJlY2VudFZhbHVlc01vZGVsLmJpbmRMaXN0KFxuXHRcdFx0XCIvcmVjZW50VmFsdWVzQ29udGV4dERhdGFcIixcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdHRoaXMuZ2V0VmFsdWVIZWxwQmluZGluZ0ZpbHRlcnMoYmluZGluZ0luZm8pXG5cdFx0KTtcblx0XHRyZWNlbnRWYWx1ZXNDb250ZXh0RGF0YSA9IHJlY2VudFZhbHVlc0xpc3QuZ2V0QWxsQ3VycmVudENvbnRleHRzKCkubWFwKChjb250ZXh0KSA9PiBjb250ZXh0LmdldE9iamVjdCgpIGFzIEZpZWxkRGF0YVR5cGUpO1xuXG5cdFx0Ly8gY29uc2lkZXIgb25seSB0aG9zZSByZWNlbnQgdmFsdWVzIHdoaWNoIGVpdGhlciBtYXRjaGVzIHdpdGggdGhlIHNlYXJjaCB0ZXJtIG9yIHdpdGggdGhlIHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gYmFja2VuZCBmb3IgdGhlIE90aGVycyBncm91cC5cblx0XHQvLyBCb3RoIHRoZSBmaWx0ZXJzIG5lZWRzIHRvIGJlIGFwcGxpZWQgc28gdGhhdCBzbyB0aGF0IG9yZGVyIG9mIHRoZSByZWNlbnQgdmFsdWVzIGRvZXMgbm90IGNoYW5nZSwgd2hpY2ggaXMgaW1wb3J0YW50IGZvciB0aGUgb3JkZXIgaW4gd2hpY2hcblx0XHQvLyB0aGUgZGF0YSB3b3VsZCBiZSBzaG93biBpbiB0aGUgdHlwZSBhaGVhZCBzdWdnZXN0aW9uIGxpc3QuXG5cdFx0cmV0dXJuIHJlY2VudFZhbHVlc0NvbnRleHREYXRhLmZpbHRlcigocmVjZW50VmFsdWVDb250ZXh0RGF0YSkgPT5cblx0XHRcdHRoaXMuZmlsdGVyUmVjZW50VmFsdWVzQ29udGV4dERhdGEocmVjZW50VmFsdWVDb250ZXh0RGF0YSwgc2VhcmNoVGVybSwgdmFsdWVIZWxwS2V5cywgb3RoZXJzVmFsdWVzQ29udGV4dERhdGEpXG5cdFx0KTtcblx0fSxcblx0LyoqXG5cdCAqIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIHRoZSBnaXZlbiByZWNlbnQgdmFsdWUgY29udGV4dCBkYXRhIG1hdGNoZXMgd2l0aCB0aGUgZ2l2ZW4gc2VhcmNoIHRlcm0gb3IgdGhlIG90aGVycyB2YWx1ZXMuXG5cdCAqIEBwYXJhbSByZWNlbnRWYWx1ZUNvbnRleHREYXRhIFJlY2VudCB2YWx1ZXMgY29udGV4dCBkYXRhXG5cdCAqIEBwYXJhbSBzZWFyY2hUZXJtIFNlYXJjaCB0ZXJtIGVudGVyZWQgYnkgdGhlIHVzZXJcblx0ICogQHBhcmFtIHZhbHVlTGlzdFByb3BlcnR5IFZhbHVlTGlzdFByb3BlcnR5IG9mIHRoZSBwYXlsb2FkXG5cdCAqIEBwYXJhbSBvdGhlcnNGcm9tQmFja2VuZCBPdGhlcnMgdmFsdWVzIGNvbnRleHQgZGF0YVxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBnaXZlbiByZWNlbnQgdmFsdWUgY29udGV4dCBzYXRpc2ZpZXMgdGhlIGZpbHRlciBjb25kaXRpb24uXG5cdCAqL1xuXHRmaWx0ZXJSZWNlbnRWYWx1ZXNDb250ZXh0RGF0YTogZnVuY3Rpb24gKFxuXHRcdHJlY2VudFZhbHVlQ29udGV4dERhdGE6IEZpZWxkRGF0YVR5cGUsXG5cdFx0c2VhcmNoVGVybTogc3RyaW5nLFxuXHRcdHZhbHVlSGVscEtleXM6IHN0cmluZ1tdLFxuXHRcdG90aGVyc1ZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW11cblx0KTogYm9vbGVhbiB7XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gcmVjZW50VmFsdWVDb250ZXh0RGF0YSkge1xuXHRcdFx0aWYgKHR5cGVvZiByZWNlbnRWYWx1ZUNvbnRleHREYXRhW2tleV0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHRoaXMuZmlsdGVyUmVjZW50VmFsdWVzQ29udGV4dERhdGEoXG5cdFx0XHRcdFx0XHRyZWNlbnRWYWx1ZUNvbnRleHREYXRhW2tleV0gYXMgRmllbGREYXRhVHlwZSxcblx0XHRcdFx0XHRcdHNlYXJjaFRlcm0sXG5cdFx0XHRcdFx0XHR2YWx1ZUhlbHBLZXlzLFxuXHRcdFx0XHRcdFx0b3RoZXJzVmFsdWVzQ29udGV4dERhdGFcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiByZWNlbnRWYWx1ZUNvbnRleHREYXRhW2tleV0gPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCghc2VhcmNoVGVybSAmJiBvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YS5sZW5ndGggPT09IDApIHx8IC8vIENhc2Ugd2hlcmUgZm9jdXMgaXMganVzdCBzZXQgdG8gdGhlIHZhbHVlIGhlbHAgZmllbGRcblx0XHRcdFx0XHQocmVjZW50VmFsdWVDb250ZXh0RGF0YVtrZXldIGFzIHN0cmluZykuaW5jbHVkZXMoc2VhcmNoVGVybSkgfHxcblx0XHRcdFx0XHQodmFsdWVIZWxwS2V5cy5pbmNsdWRlcyhrZXkpICYmIHRoaXMuY2hlY2tWYWx1ZXNNYXRjaChyZWNlbnRWYWx1ZUNvbnRleHREYXRhLCBvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YSwgdmFsdWVIZWxwS2V5cykpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgdmFsdWVzIG9mIHNwZWNpZmllZCBrZXlzIGluIGNvbnRleHREYXRhVG9CZU1hdGNoZWQgbWF0Y2ggd2l0aCBhbnkgb2JqZWN0IGluIGNvbnRleHREYXRhTGlzdC5cblx0ICogQHBhcmFtIGNvbnRleHREYXRhVG9CZU1hdGNoZWQgVGhlIGNvbnRleHQgZGF0YSBvYmplY3QgdG8gY29tcGFyZVxuXHQgKiBAcGFyYW0gY29udGV4dERhdGFMaXN0IFRoZSBhcnJheSBvZiBjb250ZXh0IGRhdGEgb2JqZWN0cyB0byBjb21wYXJlIGFnYWluc3Rcblx0ICogQHBhcmFtIHZhbHVlSGVscEtleXMgVGhlIGtleXMgdG8gY29tcGFyZSBmcm9tIGNvbnRleHREYXRhVG9CZU1hdGNoZWQgd2l0aCBjb250ZXh0RGF0YUxpc3Qgb2JqZWN0c1xuXHQgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgYW55IG9iamVjdCBpbiBjb250ZXh0RGF0YUxpc3QgbWF0Y2hlcyB0aGUgdmFsdWVzIG9mIHRoZSBzcGVjaWZpZWQga2V5cyBpbiBjb250ZXh0RGF0YVRvQmVNYXRjaGVkLCBvdGhlcndpc2UgZmFsc2UuXG5cdCAqL1xuXHRjaGVja1ZhbHVlc01hdGNoOiBmdW5jdGlvbiAoY29udGV4dERhdGFUb0JlTWF0Y2hlZDogRmllbGREYXRhVHlwZSwgY29udGV4dERhdGFMaXN0OiBGaWVsZERhdGFUeXBlW10sIHZhbHVlSGVscEtleXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG5cdFx0Zm9yIChjb25zdCBvYmogb2YgY29udGV4dERhdGFMaXN0KSB7XG5cdFx0XHRsZXQgbWF0Y2ggPSB0cnVlO1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgb2YgdmFsdWVIZWxwS2V5cykge1xuXHRcdFx0XHQvLyBDaGVjayBpZiB0aGUgdmFsdWUgb2YgdGhlIGtleSBpbiByZWNlbnRWYWx1ZXNDb250ZXh0RGF0YVxuXHRcdFx0XHQvLyBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUga2V5IGluIHRoZSBjdXJyZW50IG9iamVjdCBmcm9tIG90aGVyc1ZhbHVlc0NvbnRleHREYXRhXG5cdFx0XHRcdGlmIChjb250ZXh0RGF0YVRvQmVNYXRjaGVkW2tleV0gIT09IG9ialtrZXldKSB7XG5cdFx0XHRcdFx0bWF0Y2ggPSBmYWxzZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKG1hdGNoKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblx0LyoqXG5cdCAqIE1ldGhvZCB0byByZWFycmFuZ2UgdGhlIGdpdmVuIGFkZGl0aW9uYWwgdmFsdWUgY29udGV4dCBkYXRhIGFzIHBlciB0aGUgY2hyb25vbG9naWNhbCBvcmRlciBvZiB0aGUgZ2l2ZW4gYWRkaXRpb25hbCB2YWx1ZXMuXG5cdCAqIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIHJlY29tbWVuZGF0aW9uIGRhdGEgZmV0Y2hlZCBmcm9tIGJhY2tlbmQgYXJlIHNob3duIGluIHRoZSBzYW1lIG9yZGVyIG9mIHJlY29tbWVuZGF0aW9uIHZhbHVlcyBmZXRjaGVkIGZyb20gcmVjb21tZW5kYXRpb24gc2VydmljZS5cblx0ICogQHBhcmFtIHJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGEgUmVjb21tZW5kYXRpb24gdmFsdWVzIGNvbnRleHQgZGF0YVxuXHQgKiBAcGFyYW0gcmVjb21tZW5kYXRpb25WYWx1ZXMgUmVjb21tZW5kYXRpb24gdmFsdWVzXG5cdCAqIEBwYXJhbSB2YWx1ZUxpc3RQcm9wZXJ0eSBWYWx1ZSBsaXN0IHByb3BlcnR5IG9mIHRoZSB2YWx1ZSBoZWxwXG5cdCAqIEByZXR1cm5zIFJlY29tbWVuZGF0aW9uIHZhbHVlcyBjb250ZXh0IGRhdGEgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuXG5cdCAqL1xuXHRnZXRSZWxldmFudFJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGE6IGZ1bmN0aW9uIChcblx0XHRyZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW10sXG5cdFx0cmVjb21tZW5kYXRpb25WYWx1ZXM6IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKVtdID0gW10sXG5cdFx0dmFsdWVMaXN0UHJvcGVydHk6IHN0cmluZ1xuXHQpOiBGaWVsZERhdGFUeXBlW10ge1xuXHRcdGNvbnN0IHJlbGV2YW50UmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YTogRmllbGREYXRhVHlwZVtdID0gW107XG5cdFx0cmVjb21tZW5kYXRpb25WYWx1ZXMuZm9yRWFjaCgodmFsdWUpID0+IHtcblx0XHRcdGNvbnN0IGZvdW5kT2JqZWN0ID0gcmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YS5maW5kKChjb250ZXh0RGF0YSkgPT4gY29udGV4dERhdGFbdmFsdWVMaXN0UHJvcGVydHldID09PSB2YWx1ZSk7XG5cdFx0XHRpZiAoZm91bmRPYmplY3QpIHtcblx0XHRcdFx0cmVsZXZhbnRSZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhLnB1c2goZm91bmRPYmplY3QpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHJlbGV2YW50UmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YTtcblx0fVxufTtcbmV4cG9ydCB7IEFkZGl0aW9uYWxWYWx1ZUdyb3VwS2V5LCBSZWNvbW1lbmRhdGlvblZhbHVlVHlwZSwgYWRkaXRpb25hbFZhbHVlSGVscGVyIH07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7OztNQXdCS0EsdUJBQXVC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
457
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBZGRpdGlvbmFsVmFsdWVHcm91cEtleSIsImFkZGl0aW9uYWxWYWx1ZUhlbHBlciIsInJlcXVlc3RGb3JBZGRpdGlvbmFsVmFsdWVDb250ZXh0RGF0YSIsImFkZGl0aW9uYWxWYWx1ZXMiLCJ2YWx1ZUhlbHBMaXN0QmluZGluZyIsInZhbHVlSGVscEJpbmRpbmdJbmZvIiwicGF5bG9hZCIsInNvcnRlcnMiLCJyZXZlcnNlUmVjb21tZW5kYXRpb25WYWx1ZXMiLCJmaWx0ZXIiLCJ2YWx1ZSIsImdyb3VwS2V5IiwicmVjb21tZW5kYXRpb24iLCJyZXZlcnNlIiwicGFyYW1ldGVycyIsIiRzZWxlY3QiLCJxdWFsaWZpZXJzIiwidmFsdWVIZWxwUXVhbGlmaWVyIiwidmhQcm9wZXJ0aWVzIiwic2VhcmNoVGVybSIsIiRzZWFyY2giLCJsaXN0U29ydGVycyIsImZvckVhY2giLCJzb3J0ZXIiLCJwdXNoIiwiU29ydGVyIiwibmFtZSIsImRlc2NlbmRpbmciLCJ2YWx1ZUhlbHBMaXN0TW9kZWwiLCJnZXRNb2RlbCIsImFkZGl0aW9uYWxWYWx1ZUNvbnRleHRQcm9taXNlIiwiZ2V0QWRkaXRpb25hbFZhbHVlQ29udGV4dFByb21pc2UiLCJzdWJtaXRCYXRjaCIsImFkZGl0aW9uYWxWYWx1ZXNDb250ZXh0IiwiUHJvbWlzZSIsImFsbCIsInJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJhbGxDb250ZXh0cyIsImxlbmd0aCIsImlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwicmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YSIsIm1hcCIsImNvbnRleHQiLCJnZXRPYmplY3QiLCJvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YSIsInZhbHVlSGVscEZpbHRlcnMiLCJnZXRWYWx1ZUhlbHBCaW5kaW5nRmlsdGVycyIsInJlY29tbWVuZGF0aW9uVmFsdWVGaWx0ZXJzIiwiZ2V0QWRkaXRpb25hbFZhbHVlRmlsdGVycyIsInJlY29tbWVuZGF0aW9uVmFsdWVzTGlzdEJpbmRpbmciLCJiaW5kTGlzdCIsInBhdGgiLCJ1bmRlZmluZWQiLCJyZXF1ZXN0Q29udGV4dHMiLCJhbGxMaXN0QmluZGluZyIsImZpbHRlcnMiLCJBcnJheSIsImlzQXJyYXkiLCJyZXN1bWVWYWx1ZUxpc3RCaW5kaW5nQW5kUmVzZXRDaGFuZ2VzIiwiaXNTdXNwZW5kZWQiLCJyZXN1bWVBc3luYyIsInJlc2V0Q2hhbmdlcyIsImVycm9yIiwic29ydEFuZEZpbHRlckxpc3RCaW5kaW5nIiwiRmlsdGVyIiwiTk9ORSIsIkZpbHRlclR5cGUiLCJBcHBsaWNhdGlvbiIsIm1vZGlmaWVkU29ydGVycyIsImdldFNvcnRlckZ1bmN0aW9uIiwic29ydCIsInJldmVyc2VBZGRpdGlvbmFsVmFsdWVzIiwiYWRkaXRpb25hbFZhbHVlIiwidmFsdWVzIiwicHJvcGVydHlQYXRoIiwidmFsdWUxIiwib3BlcmF0b3IiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFByb3BlcnR5IiwiZ2V0VGV4dCIsInJlY2VudFZhbHVlIiwiY3JlYXRlVHJhbnNpZW50Q29udGV4dHNGb3JBZGRpdGlvbmFsVmFsdWVDb250ZXh0RGF0YSIsInJlY2VudFZhbHVlc0NvbnRleHREYXRhIiwiY3JlYXRlR3JvdXBlZFRyYW5zaWVudENvbnRleHRzIiwib3RoZXIiLCJhZGRpdGlvbmFsVmFsdWVDb250ZXh0RGF0YSIsImNvbnRleHREYXRhIiwiY3JlYXRlIiwiY3JlYXRlZCIsImNhbmNlbGVkIiwiTG9nIiwiZ2V0UmVsZXZhbnRSZWNvbW1lbmRhdGlvbnMiLCJkYXRhIiwiYmluZGluZ0NvbnRleHQiLCJiaW5kaW5nUGF0aCIsInJlbGV2YW50UmVjb21tZW5kYXRpb25zIiwiT2JqZWN0Iiwia2V5cyIsImdldFJlY29tbWVuZGF0aW9uUHJvcGVydHlQYXRoIiwidmVyc2lvbiIsImdldEFkZGl0aW9uYWxWYWx1ZUZyb21Qcm9wZXJ0eVBhdGgiLCJ2YWx1ZURhdGEiLCJfY2hlY2tGb3JLZXlzSW5SZWNvbW1lbmRhdGlvbnMiLCJrZXlQcm9wZXJ0aWVzIiwia2V5IiwiZ2V0QWRkaXRpb25hbFZhbHVlRnJvbUtleXMiLCJyZWNvbW1lbmRhdGlvbkRhdGEiLCJyZXN1bHQiLCJyZWNEYXRhIiwiYWxsS2V5c01hdGNoIiwiX2dldFJlY29tbWVuZGF0aW9uIiwib2xkRGF0YSIsImFzc2lnbiIsImluY2x1ZGVzIiwicHJvcGVydHlQYXRocyIsInNwbGl0IiwibmF2UHJvcFBhdGgiLCJzcGxpY2UiLCJqb2luIiwic3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlciIsImdldFN0YW5kYXJkUmVjb21tZW5kYXRpb25zIiwiZ2V0UmVsZXZhbnRPdGhlcnNWYWx1ZXNDb250ZXh0RGF0YSIsInZhbHVlSGVscEtleXMiLCJjaGVja1ZhbHVlc01hdGNoIiwiZ2V0UmVsZXZhbnRSZWNlbnRWYWx1ZXNDb250ZXh0RGF0YSIsImJpbmRpbmdJbmZvIiwicmVjZW50VmFsdWVzTW9kZWwiLCJKU09OTW9kZWwiLCJyZWNlbnRWYWx1ZXNMaXN0IiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwicmVjZW50VmFsdWVDb250ZXh0RGF0YSIsImZpbHRlclJlY2VudFZhbHVlc0NvbnRleHREYXRhIiwiY29udGV4dERhdGFUb0JlTWF0Y2hlZCIsImNvbnRleHREYXRhTGlzdCIsIm9iaiIsIm1hdGNoIiwiZ2V0UmVsZXZhbnRSZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhIiwicmVjb21tZW5kYXRpb25WYWx1ZXMiLCJ2YWx1ZUxpc3RQcm9wZXJ0eSIsInJlbGV2YW50UmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YSIsImZvdW5kT2JqZWN0IiwiZmluZCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQWRkaXRpb25hbFZhbHVlSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUge1xuXHRJbkNvbXBsZXRlbmVzc0luZm9UeXBlLFxuXHRJbnRlcm5hbFByb3BlcnR5QWRkaXRpb25hbFZhbHVlLFxuXHRLZXlQcm9wZXJ0aWVzRGF0YVR5cGUsXG5cdFJlY29tbWVuZGF0aW9uRGF0YUZvck5hdlByb3BlcnR5VHlwZSxcblx0UmVjb21tZW5kYXRpb25WYWx1ZVR5cGVcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVjb21tZW5kYXRpb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUmVjb21tZW5kYXRpb25JbmZvLCBTdGFuZGFyZFJlY29tbWVuZGF0aW9uRGF0YVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgeyBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBGaWVsZERhdGFUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1ZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBTb3J0ZXJUeXBlLCBWYWx1ZUhlbHBQYXlsb2FkIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvdmFsdWVoZWxwL1ZhbHVlTGlzdEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyXCI7XG5pbXBvcnQgRmlsdGVyVHlwZSBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclR5cGVcIjtcbmltcG9ydCBTb3J0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9Tb3J0ZXJcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0RXJyb3JUeXBlIH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcblxuZW51bSBBZGRpdGlvbmFsVmFsdWVHcm91cEtleSB7XG5cdHJlY29tbWVuZGF0aW9uID0gXCJyZWNvbW1lbmRhdGlvblwiLFxuXHRyZWNlbnRWYWx1ZSA9IFwicmVjZW50VmFsdWVcIixcblx0b3RoZXIgPSBcIm90aGVyXCJcbn1cbmV4cG9ydCB0eXBlIEFkZGl0aW9uYWxWYWx1ZVR5cGUgPSB7XG5cdHByb3BlcnR5UGF0aDogc3RyaW5nO1xuXHR2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKVtdO1xuXHRncm91cEtleTogQWRkaXRpb25hbFZhbHVlR3JvdXBLZXk7IC8vIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZ3JvdXBcbn07XG5leHBvcnQgdHlwZSBCaW5kaW5nSW5mb1BhcmFtZXRlcnMgPSB7XG5cdCRzZWxlY3Q6IHN0cmluZ1tdO1xuXHQkZXhwYW5kPzogc3RyaW5nW107XG5cdCRzZWFyY2g6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFkZGl0aW9uVmFsdWVEZWZpbml0aW9uID1cblx0fCBJbkNvbXBsZXRlbmVzc0luZm9UeXBlXG5cdHwgUmVjb21tZW5kYXRpb25EYXRhRm9yTmF2UHJvcGVydHlUeXBlW11cblx0fCBJbnRlcm5hbFByb3BlcnR5QWRkaXRpb25hbFZhbHVlXG5cdHwge307XG5jb25zdCBhZGRpdGlvbmFsVmFsdWVIZWxwZXIgPSB7XG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIHRvIGNyZWF0ZSBjb250ZXh0IGJhc2VkIG9uIGFkZGl0aW9uYWwgdmFsdWUgZmlsdGVycyBhbmQgY3VzdG9tIHNvcnRlciBhbmQgcmVxdWVzdCBjb250ZXh0cyBmcm9tIGl0LlxuXHQgKlxuXHQgKiBAcGFyYW0gYWRkaXRpb25hbFZhbHVlcyBBcnJheSBvZiBhZGRpdGlvbmFsIHZhbHVlc1xuXHQgKiBAcGFyYW0gdmFsdWVIZWxwTGlzdEJpbmRpbmcgTGlzdCBiaW5kaW5nXG5cdCAqIEBwYXJhbSB2YWx1ZUhlbHBCaW5kaW5nSW5mbyBUaGUgYmluZGluZyBpbmZvIG9iamVjdCB0byBiZSB1c2VkIHRvIGJpbmQgdGhlIGxpc3QgdG8gdGhlIG1vZGVsXG5cdCAqIEBwYXJhbSBwYXlsb2FkIFBheWxvYWQgb2YgdGhlIHZhbHVlIGhlbHBcblx0ICogQHBhcmFtIHNvcnRlcnMgU29ydGVycyBvZiB0aGUgdmFsdWUgaGVscCBsaXN0IGJpbmRpbmdcblx0ICogQHJldHVybnMgQWRkaXRpb25hbCB2YWx1ZSBjb250ZXh0c1xuXHQgKi9cblx0cmVxdWVzdEZvckFkZGl0aW9uYWxWYWx1ZUNvbnRleHREYXRhOiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0YWRkaXRpb25hbFZhbHVlczogQWRkaXRpb25hbFZhbHVlVHlwZVtdLFxuXHRcdHZhbHVlSGVscExpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLFxuXHRcdHZhbHVlSGVscEJpbmRpbmdJbmZvOiBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvLFxuXHRcdHBheWxvYWQ6IFZhbHVlSGVscFBheWxvYWQsXG5cdFx0c29ydGVyczogU29ydGVyVHlwZVtdXG5cdCk6IFByb21pc2U8eyByZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW107IG90aGVyc1ZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW10gfT4ge1xuXHRcdC8vIHJldmVyc2UgdGhlIGFycmF5IHNvIHRoYXQgd2hpbGUgY3JlYXRpbmcgdHJhbnNpZW50IGNvbnRleHQgZmlyc3QgYWRkaXRpb25hbCB2YWx1ZSBpcyBncm91cGVkIGZpcnN0XG5cdFx0Y29uc3QgcmV2ZXJzZVJlY29tbWVuZGF0aW9uVmFsdWVzID0gW1xuXHRcdFx0Li4uYWRkaXRpb25hbFZhbHVlcy5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZS5ncm91cEtleSA9PT0gQWRkaXRpb25hbFZhbHVlR3JvdXBLZXkucmVjb21tZW5kYXRpb24pXG5cdFx0XS5yZXZlcnNlKCk7XG5cblx0XHQvLyBsb2dpYyB0byBhZGQgJHNlbGVjdCBmb3IgbXVsdGktbGV2ZWwgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIGFzIGZpbGxpbmcgJHNlbGVjdCBpcyBzdWZmaWNpZW50IGZvciB0aGUgbW9kZWwgdG8gY3JlYXRlIHRoZSBleHBhbmQgY2FsbHNcblx0XHQodmFsdWVIZWxwQmluZGluZ0luZm8ucGFyYW1ldGVycyBhcyBCaW5kaW5nSW5mb1BhcmFtZXRlcnMpLiRzZWxlY3QgPVxuXHRcdFx0cGF5bG9hZC5xdWFsaWZpZXJzW3BheWxvYWQudmFsdWVIZWxwUXVhbGlmaWVyXS52aFByb3BlcnRpZXMgPz8gW107XG5cblx0XHQvLyBjaGVjayBpZiB0aGVyZSBpcyBhbnkgaW5wdXQgaW4gdGhlIGZpZWxkXG5cdFx0Ly8gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIHRvIGRldGVybWluZSB0byBzaG93IHRoZSBcIm90aGVyc1wiIHNlY3Rpb24gb3Igbm90XG5cdFx0Ly8gYW5kIGFsc28gdG8gZGV0ZXJtaW5lIGlmIHR5cGVBaGVhZCBzaG91bGQgb3BlbiBvciBub3Rcblx0XHRjb25zdCBzZWFyY2hUZXJtID0gKHZhbHVlSGVscEJpbmRpbmdJbmZvLnBhcmFtZXRlcnMgYXMgQmluZGluZ0luZm9QYXJhbWV0ZXJzKS4kc2VhcmNoO1xuXHRcdCh2YWx1ZUhlbHBCaW5kaW5nSW5mby5wYXJhbWV0ZXJzIGFzIEJpbmRpbmdJbmZvUGFyYW1ldGVycykuJHNlYXJjaCA9IHNlYXJjaFRlcm07XG5cdFx0Y29uc3QgbGlzdFNvcnRlcnM6IFNvcnRlcltdID0gW107XG5cdFx0c29ydGVycy5mb3JFYWNoKChzb3J0ZXI6IFNvcnRlclR5cGUpID0+IGxpc3RTb3J0ZXJzLnB1c2gobmV3IFNvcnRlcihzb3J0ZXIubmFtZSA/PyBcIlwiLCBzb3J0ZXIuZGVzY2VuZGluZykpKTtcblx0XHRjb25zdCB2YWx1ZUhlbHBMaXN0TW9kZWw6IE9EYXRhTW9kZWwgPSB2YWx1ZUhlbHBMaXN0QmluZGluZy5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cblx0XHRjb25zdCBhZGRpdGlvbmFsVmFsdWVDb250ZXh0UHJvbWlzZTogUHJvbWlzZTxWNENvbnRleHRbXT5bXSA9IHRoaXMuZ2V0QWRkaXRpb25hbFZhbHVlQ29udGV4dFByb21pc2UoXG5cdFx0XHRyZXZlcnNlUmVjb21tZW5kYXRpb25WYWx1ZXMsXG5cdFx0XHRzZWFyY2hUZXJtLFxuXHRcdFx0cGF5bG9hZCxcblx0XHRcdHZhbHVlSGVscExpc3RNb2RlbCxcblx0XHRcdHZhbHVlSGVscEJpbmRpbmdJbmZvLFxuXHRcdFx0bGlzdFNvcnRlcnNcblx0XHQpO1xuXHRcdGF3YWl0IHZhbHVlSGVscExpc3RNb2RlbC5zdWJtaXRCYXRjaChcImFkZGl0aW9uYWxWYWx1ZVwiKTtcblx0XHRjb25zdCBhZGRpdGlvbmFsVmFsdWVzQ29udGV4dCA9IGF3YWl0IFByb21pc2UuYWxsKGFkZGl0aW9uYWxWYWx1ZUNvbnRleHRQcm9taXNlKTtcblx0XHRsZXQgcmVjb21tZW5kYXRpb25Db250ZXh0czogVjRDb250ZXh0W10gPSBbXSxcblx0XHRcdGFsbENvbnRleHRzOiBWNENvbnRleHRbXSA9IFtdO1xuXHRcdGlmIChyZXZlcnNlUmVjb21tZW5kYXRpb25WYWx1ZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0cmVjb21tZW5kYXRpb25Db250ZXh0cyA9IGFkZGl0aW9uYWxWYWx1ZXNDb250ZXh0WzBdO1xuXHRcdFx0aWYgKHNlYXJjaFRlcm0gfHwgcGF5bG9hZC5pc1ZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcykge1xuXHRcdFx0XHRhbGxDb250ZXh0cyA9IGFkZGl0aW9uYWxWYWx1ZXNDb250ZXh0WzFdO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoc2VhcmNoVGVybSB8fCBwYXlsb2FkLmlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzKSB7XG5cdFx0XHRhbGxDb250ZXh0cyA9IGFkZGl0aW9uYWxWYWx1ZXNDb250ZXh0WzBdO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGEgPSByZWNvbW1lbmRhdGlvbkNvbnRleHRzLm1hcCgoY29udGV4dCkgPT4gY29udGV4dC5nZXRPYmplY3QoKSBhcyBGaWVsZERhdGFUeXBlKTtcblx0XHRjb25zdCBvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YTogRmllbGREYXRhVHlwZVtdID0gYWxsQ29udGV4dHMubWFwKChjb250ZXh0KSA9PiBjb250ZXh0LmdldE9iamVjdCgpIGFzIEZpZWxkRGF0YVR5cGUpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGEsXG5cdFx0XHRvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YVxuXHRcdH07XG5cdH0sXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gZ2V0IGFsbCB0aGUgcmVsZXZhbnQgbGlzdCBiaW5kaW5nIChyZWNvbW1lbmRhdGlvbiBhbmQgb3RoZXJzKSBwcm9taXNlIGZvciB3aGljaCB3ZSBuZWVkIHRvIG1ha2UgYSBjYWxsIHRvIHRoZSBiYWNrZW5kLlxuXHQgKiBAcGFyYW0gcmV2ZXJzZVJlY29tbWVuZGF0aW9uVmFsdWVzIFJldmVyc2VkIHJlY29tbWVuZGF0aW9uIHZhbHVlc1xuXHQgKiBAcGFyYW0gc2VhcmNoVGVybSBTZWFyY2ggdGVybSBlbnRlcmVkIGJ5IHRoZSB1c2VyXG5cdCAqIEBwYXJhbSBwYXlsb2FkIFBheWxvYWQgb2YgdGhlIHZhbHVlIGhlbHBcblx0ICogQHBhcmFtIHZhbHVlSGVscExpc3RNb2RlbCBNb2RlbCBvZiB0aGUgdmFsdWUgaGVscFxuXHQgKiBAcGFyYW0gdmFsdWVIZWxwQmluZGluZ0luZm8gQmluZGluZyBpbmZvIG9mIHRoZSB2YWx1ZSBoZWxwXG5cdCAqIEBwYXJhbSBzb3J0ZXIgQ3VzdG9tIHNvcnRlciB3aGljaCBuZWVkcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBsaXN0IGJpbmRpbmdcblx0ICogQHJldHVybnMgQWxsIHRoZSBsaXN0IGJpbmRpbmcgd2hpY2ggd291bGQgYmUgdXNlZCB0byB0cmlnZ2VyIGNhbGxzIHRvIHRoZSBiYWNrZW5kLlxuXHQgKi9cblx0Z2V0QWRkaXRpb25hbFZhbHVlQ29udGV4dFByb21pc2U6IGZ1bmN0aW9uIChcblx0XHRyZXZlcnNlUmVjb21tZW5kYXRpb25WYWx1ZXM6IEFkZGl0aW9uYWxWYWx1ZVR5cGVbXSxcblx0XHRzZWFyY2hUZXJtOiBzdHJpbmcsXG5cdFx0cGF5bG9hZDogVmFsdWVIZWxwUGF5bG9hZCxcblx0XHR2YWx1ZUhlbHBMaXN0TW9kZWw6IE9EYXRhTW9kZWwsXG5cdFx0dmFsdWVIZWxwQmluZGluZ0luZm86IEFnZ3JlZ2F0aW9uQmluZGluZ0luZm8sXG5cdFx0c29ydGVyOiBTb3J0ZXJbXVxuXHQpOiBQcm9taXNlPFY0Q29udGV4dFtdPltdIHtcblx0XHRjb25zdCBhZGRpdGlvbmFsVmFsdWVDb250ZXh0UHJvbWlzZTogUHJvbWlzZTxWNENvbnRleHRbXT5bXSA9IFtdO1xuXHRcdGNvbnN0IHZhbHVlSGVscEZpbHRlcnM6IEZpbHRlcltdID0gWy4uLnRoaXMuZ2V0VmFsdWVIZWxwQmluZGluZ0ZpbHRlcnModmFsdWVIZWxwQmluZGluZ0luZm8pXTtcblx0XHRjb25zdCByZWNvbW1lbmRhdGlvblZhbHVlRmlsdGVycyA9IHRoaXMuZ2V0QWRkaXRpb25hbFZhbHVlRmlsdGVycyhyZXZlcnNlUmVjb21tZW5kYXRpb25WYWx1ZXMsIFsuLi52YWx1ZUhlbHBGaWx0ZXJzXSk7XG5cblx0XHRpZiAocmV2ZXJzZVJlY29tbWVuZGF0aW9uVmFsdWVzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uVmFsdWVzTGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcgPSB2YWx1ZUhlbHBMaXN0TW9kZWwuYmluZExpc3QoXG5cdFx0XHRcdHZhbHVlSGVscEJpbmRpbmdJbmZvLnBhdGgsXG5cdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRyZWNvbW1lbmRhdGlvblZhbHVlRmlsdGVycyxcblx0XHRcdFx0dmFsdWVIZWxwQmluZGluZ0luZm8ucGFyYW1ldGVyc1xuXHRcdFx0KTtcblx0XHRcdGFkZGl0aW9uYWxWYWx1ZUNvbnRleHRQcm9taXNlLnB1c2gocmVjb21tZW5kYXRpb25WYWx1ZXNMaXN0QmluZGluZy5yZXF1ZXN0Q29udGV4dHMoMCwgMTAsIFwiYWRkaXRpb25hbFZhbHVlXCIpKTtcblx0XHR9XG5cblx0XHRpZiAoc2VhcmNoVGVybSB8fCBwYXlsb2FkLmlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzKSB7XG5cdFx0XHRjb25zdCBhbGxMaXN0QmluZGluZzogT0RhdGFMaXN0QmluZGluZyA9IHZhbHVlSGVscExpc3RNb2RlbC5iaW5kTGlzdChcblx0XHRcdFx0dmFsdWVIZWxwQmluZGluZ0luZm8ucGF0aCxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRzb3J0ZXIsXG5cdFx0XHRcdHZhbHVlSGVscEZpbHRlcnMsXG5cdFx0XHRcdHZhbHVlSGVscEJpbmRpbmdJbmZvLnBhcmFtZXRlcnNcblx0XHRcdCk7XG5cdFx0XHRhZGRpdGlvbmFsVmFsdWVDb250ZXh0UHJvbWlzZS5wdXNoKFxuXHRcdFx0XHQvLyBpbiBjYXNlIG9mIGRyb3Bkb3duLCB3ZSBhcmUgc3VwcG9zZWQgdG8gZmV0Y2ggYWxsIHRoZSByZWNvcmRzXG5cdFx0XHRcdGFsbExpc3RCaW5kaW5nLnJlcXVlc3RDb250ZXh0cygwLCBwYXlsb2FkLmlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzID8gNTAwIDogMTAsIFwiYWRkaXRpb25hbFZhbHVlXCIpXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gYWRkaXRpb25hbFZhbHVlQ29udGV4dFByb21pc2U7XG5cdH0sXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIHRvIGZldGNoIHRoZSB2YWx1ZWhlbHAgYmluZGluZyBmaWx0ZXJzLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWVIZWxwQmluZGluZ0luZm8gVGhlIGJpbmRpbmcgaW5mbyBvYmplY3QgdG8gYmUgdXNlZCB0byBiaW5kIHRoZSBsaXN0IHRvIHRoZSBtb2RlbFxuXHQgKiBAcmV0dXJucyBGaWx0ZXJzIG9mIHZhbHVlaGVscCBiaW5kaW5nXG5cdCAqL1xuXHRnZXRWYWx1ZUhlbHBCaW5kaW5nRmlsdGVyczogZnVuY3Rpb24gKHZhbHVlSGVscEJpbmRpbmdJbmZvOiBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvKSB7XG5cdFx0Ly8gZ2V0IGFsbCBleGlzdGluZyBmaWx0ZXJzIGZyb20gdGhlIGJpbmRpbmcgaW5mb1xuXHRcdC8vIHRoaXMgKyBhZGRpdGlvbmFsIHZhbHVlIGZpbHRlcnMgd2lsbCBiZSB1c2VkIGxhdGVyIG9uIHRvIGZldGNoIGFkZGl0aW9uYWwgdmFsdWVzIGZyb20gdGhlIGJhY2tlbmRcblx0XHRpZiAodmFsdWVIZWxwQmluZGluZ0luZm8uZmlsdGVycykge1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWVIZWxwQmluZGluZ0luZm8uZmlsdGVycykpIHtcblx0XHRcdFx0cmV0dXJuIHZhbHVlSGVscEJpbmRpbmdJbmZvLmZpbHRlcnM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gW3ZhbHVlSGVscEJpbmRpbmdJbmZvLmZpbHRlcnNdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gW107XG5cdH0sXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJlc3VtZXMgdGhlIHN1c3BlbmRlZCBsaXN0IGJpbmRpbmcgYW5kIHRoZW4gcmVzZXRzIGNoYW5nZXMgb24gaXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB2YWx1ZUhlbHBMaXN0QmluZGluZyBMaXN0IGJpbmRpbmdcblx0ICovXG5cdHJlc3VtZVZhbHVlTGlzdEJpbmRpbmdBbmRSZXNldENoYW5nZXM6IGFzeW5jIGZ1bmN0aW9uICh2YWx1ZUhlbHBMaXN0QmluZGluZzogT0RhdGFMaXN0QmluZGluZykge1xuXHRcdGlmICh2YWx1ZUhlbHBMaXN0QmluZGluZy5pc1N1c3BlbmRlZCgpKSB7XG5cdFx0XHRhd2FpdCB2YWx1ZUhlbHBMaXN0QmluZGluZy5yZXN1bWVBc3luYygpO1xuXHRcdH1cblx0XHQvLyBnZXQgcmlkIG9mIGV4aXN0aW5nIHRyYW5zaWVudCBjb250ZXh0cy5cblxuXHRcdC8vIGRlc3Ryb3lpbmcgY2F1c2VzIGlzc3VlcyBzb21ldGltZXMsIGNvbnRleHRzIGFyZSBub3QgYWx3YXlzIGF2YWlsYWJsZSB0byBkZXN0cm95IGJ1dCBhcHBlYXIgYWZ0ZXJ3YXJkcyBtYWdpY2FsbHlcblx0XHR0cnkge1xuXHRcdFx0YXdhaXQgdmFsdWVIZWxwTGlzdEJpbmRpbmcucmVzZXRDaGFuZ2VzKCk7XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdC8vV2UgZG8gbm90IGRvIGFueXRoaW5nIGhlcmUgYXMgd2Uga25vdyB0aGUgbW9kZWwgd2lsbCBhbHdheXMgdGhyb3cgYW4gZXJyb3IgYW5kIHRoaXMgd2lsbCBmaWxsIHVwIHRoZSBjb25zb2xlIHdpdGggZXJyb3JzLlxuXHRcdH1cblx0fSxcblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3Igc29ydGluZyBhbmQgZmlsdGVyaW5nIHRoZSBsaXN0IGJpbmRpbmcuXG5cdCAqIEBwYXJhbSB2YWx1ZUhlbHBMaXN0QmluZGluZyBMaXN0IEJpbmRpbmdcblx0ICogQHBhcmFtIHNvcnRlcnMgU29ydGVycyBvZiB0aGUgdmFsdWUgaGVscCBsaXN0IGJpbmRpbmdcblx0ICovXG5cdHNvcnRBbmRGaWx0ZXJMaXN0QmluZGluZzogZnVuY3Rpb24gKHZhbHVlSGVscExpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLCBzb3J0ZXJzOiBTb3J0ZXJUeXBlW10pOiB2b2lkIHtcblx0XHQvLyBJbiBvcmRlciB0byBub3Qgc2hvdyB0aGUgbGlzdCBhdCBhbGwsIHdlIHBhc3MgYW4gZW1wdHkgZmlsdGVyIHdoaWNoIHdvdWxkIHJlbmRlciBhbiBlbXB0eSBsaXN0XG5cdFx0dmFsdWVIZWxwTGlzdEJpbmRpbmcuZmlsdGVyKEZpbHRlci5OT05FLCBGaWx0ZXJUeXBlLkFwcGxpY2F0aW9uKTtcblxuXHRcdGlmIChzb3J0ZXJzLmxlbmd0aCkge1xuXHRcdFx0Y29uc3QgbW9kaWZpZWRTb3J0ZXJzOiBTb3J0ZXJbXSA9IFtdO1xuXHRcdFx0c29ydGVycy5mb3JFYWNoKChzb3J0ZXI6IFNvcnRlclR5cGUpID0+XG5cdFx0XHRcdG1vZGlmaWVkU29ydGVycy5wdXNoKG5ldyBTb3J0ZXIoc29ydGVyLm5hbWUgPz8gXCJcIiwgc29ydGVyLmRlc2NlbmRpbmcsIHRoaXMuZ2V0U29ydGVyRnVuY3Rpb24pKVxuXHRcdFx0KTtcblx0XHRcdHZhbHVlSGVscExpc3RCaW5kaW5nLnNvcnQobW9kaWZpZWRTb3J0ZXJzKTtcblx0XHR9IGVsc2UgdmFsdWVIZWxwTGlzdEJpbmRpbmcuc29ydChuZXcgU29ydGVyKFwiXCIsIGZhbHNlLCB0aGlzLmdldFNvcnRlckZ1bmN0aW9uKSk7XG5cdH0sXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9ucyBjcmVhdGVzIHRoZSBmaWx0ZXJzIGZvciBhZGRpdGlvbmFsIHZhbHVlcy5cblx0ICpcblx0ICogQHBhcmFtIHJldmVyc2VBZGRpdGlvbmFsVmFsdWVzIEFycmF5IG9mIGFkZGl0aW9uYWwgdmFsdWVzIGluIHJldmVyc2Ugb3JkZXJcblx0ICogQHBhcmFtIGZpbHRlcnMgRXhpc3RpbmcgdmFsdWVoZWxwIGJpbmRpbmcgZmlsdGVyc1xuXHQgKiBAcmV0dXJucyBBZGRpdGlvbmFsIHZhbHVlIGZpbHRlcnNcblx0ICovXG5cdGdldEFkZGl0aW9uYWxWYWx1ZUZpbHRlcnM6IGZ1bmN0aW9uIChyZXZlcnNlQWRkaXRpb25hbFZhbHVlczogQWRkaXRpb25hbFZhbHVlVHlwZVtdLCBmaWx0ZXJzOiBGaWx0ZXJbXSk6IEZpbHRlcltdIHtcblx0XHRyZXZlcnNlQWRkaXRpb25hbFZhbHVlcy5mb3JFYWNoKChhZGRpdGlvbmFsVmFsdWUpID0+IHtcblx0XHRcdGlmIChhZGRpdGlvbmFsVmFsdWUudmFsdWVzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y29uc3QgdmFsdWVzID0gYWRkaXRpb25hbFZhbHVlLnZhbHVlcztcblx0XHRcdFx0Y29uc3QgcHJvcGVydHlQYXRoID0gYWRkaXRpb25hbFZhbHVlLnByb3BlcnR5UGF0aDtcblx0XHRcdFx0Ly8gYWRkIGFkZGl0aW9uYWwgdmFsdWUgZmlsdGVycyB0byBleGlzdGluZyBmaWx0ZXJzIGZyb20gdGhlIGJpbmRpbmcgaW5mb1xuXHRcdFx0XHR2YWx1ZXMuZm9yRWFjaCgodmFsdWUpID0+IHtcblx0XHRcdFx0XHQvLyB1cGRhdGUgdGhlIHZhbHVlIGhlbHAgYmluZGluZyBpbmZvIHRvIGdldCBhZGRpdGlvbmFsIHZhbHVlcyBmcm9tIHRoZSBiYWNrZW5kXG5cdFx0XHRcdFx0ZmlsdGVycy5wdXNoKFxuXHRcdFx0XHRcdFx0bmV3IEZpbHRlcih7XG5cdFx0XHRcdFx0XHRcdHBhdGg6IHByb3BlcnR5UGF0aCxcblx0XHRcdFx0XHRcdFx0dmFsdWUxOiB2YWx1ZSxcblx0XHRcdFx0XHRcdFx0b3BlcmF0b3I6IFwiRVFcIlxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gZmlsdGVycztcblx0fSxcblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgYSBjYWxsYmFjayB0byB0aGUgY3VzdG9tIHNvcnRlci5cblx0ICpcblx0ICogQHBhcmFtIGNvbnRleHQgQ29udGV4dCBvZiB0aGUgRmllbGRcblx0ICogQHJldHVybnMgR3JvdXAga2V5IHRoYXQgY2FuIGJlIHVzZWQgZm9yIHNvcnRpbmdcblx0ICovXG5cdGdldFNvcnRlckZ1bmN0aW9uOiBmdW5jdGlvbiAoY29udGV4dDogVjRDb250ZXh0KTogc3RyaW5nIHtcblx0XHQvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG5cdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSE7XG5cdFx0Ly9nZXQgdGhlIGNsaWVudCBzaWRlIGFubm90YXRpb24gdG8gZmlndXJlIG91dCB0aGUgZ3JvdXAga2V5XG5cdFx0Y29uc3QgZ3JvdXBLZXkgPSBjb250ZXh0LmdldFByb3BlcnR5KFwiQCRmZS5hZGRpdGlvbmFsVmFsdWVHcm91cEtleVwiKSBhcyBzdHJpbmc7XG5cdFx0aWYgKGdyb3VwS2V5ID09PSBBZGRpdGlvbmFsVmFsdWVHcm91cEtleS5yZWNvbW1lbmRhdGlvbikge1xuXHRcdFx0cmV0dXJuIHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0FERElUSU9OQUxWQUxVRUhFTFBFUl9SRUNPTU1FTkRBVElPTlNcIik7XG5cdFx0fSBlbHNlIGlmIChncm91cEtleSA9PT0gQWRkaXRpb25hbFZhbHVlR3JvdXBLZXkucmVjZW50VmFsdWUpIHtcblx0XHRcdHJldHVybiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9BRERJVElPTkFMVkFMVUVIRUxQRVJfUkVDRU5UVkFMVUVcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9BRERJVElPTkFMVkFMVUVIRUxQRVJfT1RIRVJTXCIpO1xuXHRcdH1cblx0fSxcblx0LyoqXG5cdCAqIE1ldGhvZCB0byBjcmVhdGUgdHJhbnNpZW50IGNvbnRleHRzIG9mIHRoZSB2YWx1ZSBoZWxwIGxpc3QgYmluZGluZyBmb3IgdGhlIGdpdmVuIGRpZmZlcmVudCB0eXBlcyBhZGRpdGlvbmFsIHZhbHVlIGNvbnRleHQgZGF0YS5cblx0ICogQHBhcmFtIHJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGEgUmVjb21tZW5kYXRpb24gdmFsdWVzIGNvbnRleHQgZGF0YVxuXHQgKiBAcGFyYW0gcmVjZW50VmFsdWVzQ29udGV4dERhdGEgUmVjZW50IHZhbHVlcyBjb250ZXh0IGRhdGFcblx0ICogQHBhcmFtIG90aGVyc1ZhbHVlc0NvbnRleHREYXRhIE90aGVyIHZhbHVlcyBjb250ZXh0IGRhdGFcblx0ICogQHBhcmFtIHZhbHVlSGVscExpc3RCaW5kaW5nIExpc3QgYmluZGluZ1xuXHQgKi9cblx0Y3JlYXRlVHJhbnNpZW50Q29udGV4dHNGb3JBZGRpdGlvbmFsVmFsdWVDb250ZXh0RGF0YTogZnVuY3Rpb24gKFxuXHRcdHJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGE6IEZpZWxkRGF0YVR5cGVbXSxcblx0XHRyZWNlbnRWYWx1ZXNDb250ZXh0RGF0YTogRmllbGREYXRhVHlwZVtdLFxuXHRcdG90aGVyc1ZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW10sXG5cdFx0dmFsdWVIZWxwTGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmdcblx0KTogdm9pZCB7XG5cdFx0dGhpcy5jcmVhdGVHcm91cGVkVHJhbnNpZW50Q29udGV4dHMob3RoZXJzVmFsdWVzQ29udGV4dERhdGEsIHZhbHVlSGVscExpc3RCaW5kaW5nLCBBZGRpdGlvbmFsVmFsdWVHcm91cEtleS5vdGhlcik7XG5cdFx0dGhpcy5jcmVhdGVHcm91cGVkVHJhbnNpZW50Q29udGV4dHMocmVjZW50VmFsdWVzQ29udGV4dERhdGEsIHZhbHVlSGVscExpc3RCaW5kaW5nLCBBZGRpdGlvbmFsVmFsdWVHcm91cEtleS5yZWNlbnRWYWx1ZSk7XG5cdFx0dGhpcy5jcmVhdGVHcm91cGVkVHJhbnNpZW50Q29udGV4dHMocmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YSwgdmFsdWVIZWxwTGlzdEJpbmRpbmcsIEFkZGl0aW9uYWxWYWx1ZUdyb3VwS2V5LnJlY29tbWVuZGF0aW9uKTtcblx0fSxcblx0LyoqXG5cdCAqIE1ldGhvZCB0byBjcmVhdGUgdHJhbnNpZW50IGNvbnRleHQgZm9yIHRoZSBnaXZlbiBhZGRpdGlvbmFsIHZhbHVlIGNvbnRleHQgZGF0YS4gSXQgYWxzbyBhZGRzIGEga2V5IGZvciBlYWNoIGNvbnRleHQgd2hpY2ggaXMgdXNlZCB0byBncm91cCB0aGUgbmV3bHkgY3JlYXRlZCB0cmFuc2llbnQgY29udGV4dHMgYWNjb3JkaW5nbHkuXG5cdCAqIEBwYXJhbSBhZGRpdGlvbmFsVmFsdWVDb250ZXh0RGF0YSBBZGRpdGlvbmFsIHZhbHVlIGNvbnRleHQgZGF0YVxuXHQgKiBAcGFyYW0gdmFsdWVIZWxwTGlzdEJpbmRpbmcgTGlzdCBiaW5kaW5nXG5cdCAqIEBwYXJhbSBncm91cEtleSBLZXkgd2hpY2ggaW5kaWNhdGVzIHRoZSBncm91cCBvZiB0aGUgYWRkaXRpb25hbCB2YWx1ZSBjb250ZXh0IGRhdGFcblx0ICovXG5cdGNyZWF0ZUdyb3VwZWRUcmFuc2llbnRDb250ZXh0czogZnVuY3Rpb24gKFxuXHRcdGFkZGl0aW9uYWxWYWx1ZUNvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW10sXG5cdFx0dmFsdWVIZWxwTGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcsXG5cdFx0Z3JvdXBLZXk6IEFkZGl0aW9uYWxWYWx1ZUdyb3VwS2V5XG5cdCk6IHZvaWQge1xuXHRcdC8vIHJldmVyc2Ugb2YgdGhlIGNvbnRleHQgZGF0YSBpcyByZXF1aXJlZCBzbyB0aGF0IHRoZSBjb250ZXh0IHdoaWNoIG5lZWRzIHRvIGJlIHNob3duIGJlbG93IGluIHRoZSBsaXN0IGdldHMgY3JlYXRlZCBmaXJzdFxuXHRcdFsuLi5hZGRpdGlvbmFsVmFsdWVDb250ZXh0RGF0YV0ucmV2ZXJzZSgpLmZvckVhY2goYXN5bmMgKGNvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlKSA9PiB7XG5cdFx0XHQvLyBncm91cEtleSBpcyBhZGRlZCBpbiBvcmRlciB0byBwcm9wZXJseSBncm91cCB0aGUgdHJhbnNpZW50IGNvbnRleHRzIGFtb25nc3QgYWxsIDMgZ3JvdXBzXG5cdFx0XHRjb250ZXh0RGF0YVtcIkAkZmUuYWRkaXRpb25hbFZhbHVlR3JvdXBLZXlcIl0gPSBncm91cEtleTtcblx0XHRcdGNvbnN0IGNvbnRleHQgPSB2YWx1ZUhlbHBMaXN0QmluZGluZy5jcmVhdGUoY29udGV4dERhdGEpO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0YXdhaXQgY29udGV4dC5jcmVhdGVkKCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHQvLyBGb3IgdHJhbnNpZW50IGNvbnRleHRzIHRoZSBjYW5jZWxlZCBpcyBzZXQgdG8gdHJ1ZSBhbmQgZm9yIG90aGVyIGNhc2VzIGl0IHdpbGwgYmUgZmFsc2UuIEF0bGVhc3QgaW4gcmVjb21tZW5kYXRpb25zXG5cdFx0XHRcdC8vIHVzZSBjYXNlIHdlIGRvIG5vdCBmYWNlIHRoZSBzY2VuYXJpbyB3aGVyZSBjYW5jZWxlZCBpcyBzZXQgdG8gZmFsc2UuIEZvciBub3cgd2UgYXJlIGp1c3QgbG9nZ2luZyB0aGUgZXJyb3IuXG5cdFx0XHRcdGlmICghKGVycm9yIGFzIENvbnRleHRFcnJvclR5cGUpLmNhbmNlbGVkKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKChlcnJvciBhcyBDb250ZXh0RXJyb3JUeXBlKS5uYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbnMgcmV0dXJucyB0aGUgcmVsZXZhbnQgcmVjb21tZW5kYXRpb25zIGZvciB0aGUgdmFsdWVsaXN0LlxuXHQgKlxuXHQgKiBAcGFyYW0gZGF0YSBPYmplY3QgY29udGFpbmluZyByZWNvbW1lbmRhdGlvbiBtb2RlbCBkYXRhXG5cdCAqIEBwYXJhbSBiaW5kaW5nQ29udGV4dCBCaW5kaW5nIGNvbnRleHQgb2YgdGhlIEZpZWxkXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eVBhdGggUHJvcGVydHkgUGF0aCBvZiB0aGUgRmllbGRcblx0ICogQHJldHVybnMgUmVsZXZhbnQgcmVjb21tZW5kYXRpb25zIGZvciB0aGUgdmFsdWVsaXN0XG5cdCAqL1xuXHRnZXRSZWxldmFudFJlY29tbWVuZGF0aW9uczogZnVuY3Rpb24gKFxuXHRcdGRhdGE6IEluQ29tcGxldGVuZXNzSW5mb1R5cGUgfCB7fSxcblx0XHRiaW5kaW5nQ29udGV4dDogVjRDb250ZXh0LFxuXHRcdHByb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRcdGJpbmRpbmdQYXRoPzogc3RyaW5nXG5cdCk6IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBudWxsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB2YWx1ZXM6IEFycmF5PHN0cmluZyB8IG51bWJlcj4gPSBbXTtcblx0XHRsZXQgcmVsZXZhbnRSZWNvbW1lbmRhdGlvbnM6IEludGVybmFsUHJvcGVydHlBZGRpdGlvbmFsVmFsdWUgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKE9iamVjdC5rZXlzKGRhdGEpLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vZ2V0IHRoZSByaWdodCBwcm9wZXJ0eSBwYXRoIGJ5IGVsaW1pbmF0aW5nIHRoZSBzdGFydGluZyAvIGFuZCBhbHNvIG1haW4gZW50aXR5c2V0IG5hbWVcblx0XHRcdHByb3BlcnR5UGF0aCA9IHRoaXMuZ2V0UmVjb21tZW5kYXRpb25Qcm9wZXJ0eVBhdGgocHJvcGVydHlQYXRoKTtcblx0XHRcdGlmICgoZGF0YSBhcyBSZWNvbW1lbmRhdGlvbkluZm8pLnZlcnNpb24gPT09IDIuMCAmJiBiaW5kaW5nUGF0aCkge1xuXHRcdFx0XHRwcm9wZXJ0eVBhdGggPSBiaW5kaW5nUGF0aDtcblx0XHRcdH1cblx0XHRcdC8vZ2V0IHRoZSByZWNvbW1lbmRhdGlvbnMgYmFzZWQgb24gcHJvcGVydHkgcGF0aCBhbmQgYmluZGluZyBjb250ZXh0IHBhc3NlZFxuXHRcdFx0cmVsZXZhbnRSZWNvbW1lbmRhdGlvbnMgPSB0aGlzLmdldEFkZGl0aW9uYWxWYWx1ZUZyb21Qcm9wZXJ0eVBhdGgocHJvcGVydHlQYXRoLCBiaW5kaW5nQ29udGV4dCwgZGF0YSkgYXNcblx0XHRcdFx0fCBJbnRlcm5hbFByb3BlcnR5QWRkaXRpb25hbFZhbHVlXG5cdFx0XHRcdHwgdW5kZWZpbmVkO1xuXHRcdFx0Ly9pZiB3ZSBnZXQgcmVjb21tZW5kYXRpb25zIHRoZW4gcHVzaCB0aGUgdmFsdWVzXG5cdFx0XHRpZiAocmVsZXZhbnRSZWNvbW1lbmRhdGlvbnMgJiYgT2JqZWN0LmtleXMocmVsZXZhbnRSZWNvbW1lbmRhdGlvbnMpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0cmVsZXZhbnRSZWNvbW1lbmRhdGlvbnMuYWRkaXRpb25hbFZhbHVlcy5mb3JFYWNoKCh2YWx1ZURhdGE6IFJlY29tbWVuZGF0aW9uVmFsdWVUeXBlKSA9PiB7XG5cdFx0XHRcdFx0dmFsdWVzLnB1c2godmFsdWVEYXRhLnZhbHVlKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvL2lmIHJlY29tbWVuZGF0aW9ucyBhcmUgbm90IGZvdW5kIHRoZW4gcmV0dXJuIG51bGxcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdF9jaGVja0ZvcktleXNJblJlY29tbWVuZGF0aW9uczogZnVuY3Rpb24gKGtleVByb3BlcnRpZXM6IEtleVByb3BlcnRpZXNEYXRhVHlwZSwgY29udGV4dERhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBib29sZWFuIHtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiBrZXlQcm9wZXJ0aWVzKSB7XG5cdFx0XHRpZiAoa2V5UHJvcGVydGllc1trZXldICE9PSBjb250ZXh0RGF0YVtrZXldKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIHRvIGZldGNoIHRoZSBleGFjdCBvYmplY3QgZnJvbSBhbiBhcnJheSBvZiBvYmplY3RzIHRoYXQgY29udGFpbnMgcmVsZXZhbnQgcmVjb21tZW5kYXRpb25EYXRhIGJhc2VkIG9uIGtleXMuXG5cdCAqXG5cdCAqIEBwYXJhbSByZWNvbW1lbmRhdGlvbkRhdGEgQXJyYXkgY29udGFpbmluZyBhZGRpdGlvbmFsIHZhbHVlc1xuXHQgKiBAcGFyYW0gYmluZGluZ0NvbnRleHQgQmluZGluZyBjb250ZXh0IG9mIHRoZSBGaWVsZFxuXHQgKiBAcmV0dXJucyBSZWxldmFudCBvYmplY3QgZnJvbSBhbiBhcnJheSBvZiBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgYWRkaXRpb25hbCB2YWx1ZVxuXHQgKi9cblx0Z2V0QWRkaXRpb25hbFZhbHVlRnJvbUtleXM6IGZ1bmN0aW9uIChcblx0XHRyZWNvbW1lbmRhdGlvbkRhdGE6IEFkZGl0aW9uVmFsdWVEZWZpbml0aW9uLFxuXHRcdGJpbmRpbmdDb250ZXh0PzogVjRDb250ZXh0IHwgQ29udGV4dFxuXHQpOiBBZGRpdGlvblZhbHVlRGVmaW5pdGlvbiB7XG5cdFx0Y29uc3QgY29udGV4dERhdGEgPSBiaW5kaW5nQ29udGV4dD8uZ2V0T2JqZWN0KCkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZDtcblx0XHRsZXQgcmVzdWx0OiBBZGRpdGlvblZhbHVlRGVmaW5pdGlvbiA9IHt9O1xuXHRcdC8vbG9vcCB0aHJvdWdoIHRoZSByZWNvbW1lbmRhdGlvbkRhdGEgYW5kIGNoZWNrIGlmIHRoZSBrZXlQcm9wZXJ0aWVzIG1hdGNoIHdpdGggdGhlIGJpbmRpbmcgY29udGV4dCBkYXRhXG5cdFx0aWYgKGJpbmRpbmdDb250ZXh0ICYmIGNvbnRleHREYXRhKSB7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShyZWNvbW1lbmRhdGlvbkRhdGEpKSB7XG5cdFx0XHRcdChyZWNvbW1lbmRhdGlvbkRhdGEgYXMgUmVjb21tZW5kYXRpb25EYXRhRm9yTmF2UHJvcGVydHlUeXBlW10pLmZvckVhY2goKHJlY0RhdGEpID0+IHtcblx0XHRcdFx0XHRjb25zdCBrZXlQcm9wZXJ0aWVzID0gcmVjRGF0YS5rZXlQcm9wZXJ0aWVzIGFzIEtleVByb3BlcnRpZXNEYXRhVHlwZTtcblx0XHRcdFx0XHRjb25zdCBhbGxLZXlzTWF0Y2ggPSB0aGlzLl9jaGVja0ZvcktleXNJblJlY29tbWVuZGF0aW9ucyhrZXlQcm9wZXJ0aWVzLCBjb250ZXh0RGF0YSk7XG5cdFx0XHRcdFx0Ly9pZiBldmVyeSBrZXkgdmFsdWUgbWF0Y2hlcyB3aXRoIHRoZSBiaW5kaW5nIGNvbnRleHQgZGF0YSB0aGVuIGFzc2lnbiBpdCB0byByZXN1bHQgd2hpY2ggd2lsbCBiZSByZXR1cm5lZFxuXHRcdFx0XHRcdGlmIChhbGxLZXlzTWF0Y2gpIHtcblx0XHRcdFx0XHRcdHJlc3VsdCA9IHJlY0RhdGEgYXMgQWRkaXRpb25WYWx1ZURlZmluaXRpb247XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSxcblxuXHRfZ2V0UmVjb21tZW5kYXRpb246IGZ1bmN0aW9uIChcblx0XHRwcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0XHRiaW5kaW5nQ29udGV4dDogQ29udGV4dCxcblx0XHRyZWNvbW1lbmRhdGlvbkRhdGE6IEFkZGl0aW9uVmFsdWVEZWZpbml0aW9uXG5cdCk6IEFkZGl0aW9uVmFsdWVEZWZpbml0aW9uIHtcblx0XHQvL2NyZWF0ZSBhIGNvcHkgb2YgdGhlIHJlY29tbWVuZGF0aW9uRGF0YSB0byBzdG9yZSBpdHMgcHJldmlvdXMgdmFsdWUgYXMgaXQgd2lsbCBjaGFuZ2UgYmVjYXVzZSBvZiB0aGUgcmVjdXJzaXZlIGFwcHJvYWNoXG5cdFx0bGV0IG9sZERhdGEgPSBPYmplY3QuYXNzaWduKHJlY29tbWVuZGF0aW9uRGF0YSwge30pO1xuXHRcdC8vY2hlY2sgaWYgcHJvcGVydHkgcGF0aCBleGlzdHMgb24gdGhlIHJlY29tbWVuZGF0aW9uRGF0YSBvYmplY3QgYW5kIGlmIHNvIHRoZW4gcmV0dXJuIHRoZSBvYmplY3QgcG9pbnRpbmcgdG8gdGhlIHByb3BlcnR5IHBhdGhcblx0XHRpZiAoT2JqZWN0LmtleXMocmVjb21tZW5kYXRpb25EYXRhKS5pbmNsdWRlcyhwcm9wZXJ0eVBhdGgpKSB7XG5cdFx0XHRyZXR1cm4gKHJlY29tbWVuZGF0aW9uRGF0YSBhcyBJbkNvbXBsZXRlbmVzc0luZm9UeXBlKVtwcm9wZXJ0eVBhdGhdIGFzIEFkZGl0aW9uVmFsdWVEZWZpbml0aW9uO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvL2lmIHByb3BlcnR5IHBhdGggaXMgbm90IHByZXNlbnQgdGhlbiBjaGVjayBpZiBpdCBpcyAxOm4gbWFwcGluZyBhbmQgd2UgbmVlZCB0byBkbyBhIHJlY3Vyc2l2ZSBhcHByb2FjaCB0byBsYW5kIG9uIHRoZSBleGFjdCBvYmplY3QgY29udGFpbmluZyB0aGUgcmVsZXZhbnQgcmVjb21tZW5kYXRpb25zXG5cdFx0XHQvL2NvbnRpbnVlIHRoZSB3aGlsZSBsb29wIHRpbGwgdGhlIHByb3BlcnR5IHBhdGggaXMgZm91bmQgaW4gdGhlIHByZXZpb3VzIHJlY29tbWVuZGF0aW9uRGF0YVxuXHRcdFx0d2hpbGUgKE9iamVjdC5rZXlzKG9sZERhdGEpLmxlbmd0aCA+IDAgJiYgIU9iamVjdC5rZXlzKG9sZERhdGEpLmluY2x1ZGVzKHByb3BlcnR5UGF0aCkpIHtcblx0XHRcdFx0Ly8gYXMgaXQgbWlnaHQgYmUgMTpuIG1hcHBpbmcgc28gZmlyc3Qgc2VwZXJhdGUgdGhlIG5hdnByb3AgbmFtZSBhbmQgYWN0dWFsIHByb3AgbmFtZSB0byBtYWtlIHN1cmUgd2UgZmluZCB0aGUgbmF2cHJvcCBmaXJzdCBhbmQgdGhlbiBmcm9tIGl0cyBwb2ludGluZyBvYmplY3Qgd2UgZmluZCB0aGUgcHJvcGVydHkgcGF0aFxuXHRcdFx0XHQvL2VnOiBfSXRlbS9NYXRlcmlhbCB3aWxsIGJlIGZpcnN0IGRpdmlkZWQgaW50byBfSXRlbSBhbmQgd2Ugc2VhcmNoIGZvciBpdCBhbmQgdGhlbiBmcm9tIGl0cyByZWxldmFudCBvYmplY3Qgd2Ugc2VhcmNoIGZvciBNYXRlcmlhbFxuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eVBhdGhzID0gcHJvcGVydHlQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRcdFx0aWYgKHByb3BlcnR5UGF0aHMubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdC8vZ2V0dGluZyB0aGUgbmF2cHJvcCBwYXRoXG5cdFx0XHRcdFx0Y29uc3QgbmF2UHJvcFBhdGggPSBwcm9wZXJ0eVBhdGhzWzBdO1xuXHRcdFx0XHRcdC8vcmVtb3ZpbmcgdGhlIG5hdnByb3AgcGF0aCBmcm9tIHByb3BlcnR5cGF0aHMgc28gdGhhdCB3ZSBvbmx5IGNoZWNrIGZvciBhY3R1YWwgcHJvcGVydHkgcGF0aFxuXHRcdFx0XHRcdHByb3BlcnR5UGF0aHMuc3BsaWNlKDAsIDEpO1xuXHRcdFx0XHRcdHByb3BlcnR5UGF0aCA9IHByb3BlcnR5UGF0aHMuam9pbihcIi9cIik7XG5cdFx0XHRcdFx0Ly91c2luZyBnZXRBZGRpdGlvbmFsVmFsdWVGcm9tUHJvcGVydHlQYXRoIGFuZCBwYXNzaW5nIG5hdlByb3BQYXRoIHdlIGdldCB0aGUgZXhhY3QgYXJyYXkgb2Ygb2JqZWN0cyBwb2ludGluZyB0byB0aGUgbmF2UHJvcFxuXHRcdFx0XHRcdHJlY29tbWVuZGF0aW9uRGF0YSA9IHRoaXMuZ2V0QWRkaXRpb25hbFZhbHVlRnJvbVByb3BlcnR5UGF0aChcblx0XHRcdFx0XHRcdG5hdlByb3BQYXRoLFxuXHRcdFx0XHRcdFx0YmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0XHRyZWNvbW1lbmRhdGlvbkRhdGFcblx0XHRcdFx0XHQpIGFzIFJlY29tbWVuZGF0aW9uRGF0YUZvck5hdlByb3BlcnR5VHlwZVtdO1xuXHRcdFx0XHRcdC8vbm8gcGFzcyB0aGUgYXJyYXkgb2Ygb2JqZWN0cyBvZiBuYXZQcm9wIHRvIGdldEFkZGl0aW9uYWxWYWx1ZUZyb21LZXlzIGFuZCBnZXQgdGhlIGV4YWN0IG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSByZWNvbW1lbmRhdGlvbkRhdGEgYmFzZWQgb24ga2V5c1xuXHRcdFx0XHRcdHJlY29tbWVuZGF0aW9uRGF0YSA9IHRoaXMuZ2V0QWRkaXRpb25hbFZhbHVlRnJvbUtleXMocmVjb21tZW5kYXRpb25EYXRhLCBiaW5kaW5nQ29udGV4dCk7XG5cdFx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKHJlY29tbWVuZGF0aW9uRGF0YSkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0Ly9zZXQgdGhlIHJlY29tbWVuZGF0aW9uRGF0YSB0byBvbGREYXRhIGJlZm9yZSBhc3NpZ25pbmcgdGhlIG5ldyB2YWx1ZSB0byBpdFxuXHRcdFx0XHRcdFx0b2xkRGF0YSA9IE9iamVjdC5hc3NpZ24ocmVjb21tZW5kYXRpb25EYXRhLCB7fSk7XG5cdFx0XHRcdFx0XHQvL2hlcmUgd2UgY2hlY2sgZm9yIHRoZSBhY3R1YWwgcHJvcGVydHkgcGF0aCBmcm9tIHRoZSBvYmplY3Qgd2UgZm91bmQgZnJvbSBnZXRBZGRpdGlvbmFsVmFsdWVGcm9tS2V5c1xuXHRcdFx0XHRcdFx0Ly9lZzogTWF0ZXJpYWwgY2FuIGJlIGZvdW5kIGluIHRoZSBvYmplY3Qgd2hpY2ggaXMgcGFydCBvZiBhcnJheSBvZiBvYmplY3RzIG9mIF9JdGVtXG5cdFx0XHRcdFx0XHRyZWNvbW1lbmRhdGlvbkRhdGEgPSB0aGlzLmdldEFkZGl0aW9uYWxWYWx1ZUZyb21Qcm9wZXJ0eVBhdGgoXG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5UGF0aCxcblx0XHRcdFx0XHRcdFx0YmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0XHRcdHJlY29tbWVuZGF0aW9uRGF0YVxuXHRcdFx0XHRcdFx0KSBhcyBBZGRpdGlvblZhbHVlRGVmaW5pdGlvbjtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4ge307XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiByZWNvbW1lbmRhdGlvbkRhdGE7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBnZXR0aW5nIHRoZSBhZGRpdGlvbmFsIHZhbHVlIGJhc2VkIG9uIHByb3BlcnR5IHBhdGggYW5kIGJpbmRpbmcgY29udGV4dCBwYXNzZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eVBhdGggUHJvcGVydHkgcGF0aCBvZiB0aGUgZmllbGRcblx0ICogQHBhcmFtIGJpbmRpbmdDb250ZXh0IEJpbmRpbmcgY29udGV4dCBvZiB0aGUgZmllbGRcblx0ICogQHBhcmFtIHJlY29tbWVuZGF0aW9uRGF0YSBPYmplY3QgY29udGFpbmluZyBhZGRpdGlvbmFsIHZhbHVlXG5cdCAqIEByZXR1cm5zIEFkZGl0aW9uYWwgdmFsdWUgYmFzZWQgb24gcHJvcGVydHkgcGF0aCBhbmQgYmluZGluZyBjb250ZXh0IHBhc3NlZFxuXHQgKi9cblx0Z2V0QWRkaXRpb25hbFZhbHVlRnJvbVByb3BlcnR5UGF0aDogZnVuY3Rpb24gKFxuXHRcdHByb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRcdGJpbmRpbmdDb250ZXh0OiBWNENvbnRleHQgfCBDb250ZXh0LFxuXHRcdHJlY29tbWVuZGF0aW9uRGF0YT86IEFkZGl0aW9uVmFsdWVEZWZpbml0aW9uIHwgUmVjb21tZW5kYXRpb25JbmZvXG5cdCk6IEFkZGl0aW9uVmFsdWVEZWZpbml0aW9uIHwgU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkRhdGFUeXBlIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoKHJlY29tbWVuZGF0aW9uRGF0YSBhcyBSZWNvbW1lbmRhdGlvbkluZm8pLnZlcnNpb24gPT09IDIpIHtcblx0XHRcdHJldHVybiBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLmdldFN0YW5kYXJkUmVjb21tZW5kYXRpb25zKFxuXHRcdFx0XHRiaW5kaW5nQ29udGV4dCxcblx0XHRcdFx0cHJvcGVydHlQYXRoLFxuXHRcdFx0XHRyZWNvbW1lbmRhdGlvbkRhdGEgYXMgUmVjb21tZW5kYXRpb25JbmZvXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAocmVjb21tZW5kYXRpb25EYXRhKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fZ2V0UmVjb21tZW5kYXRpb24ocHJvcGVydHlQYXRoLCBiaW5kaW5nQ29udGV4dCwgcmVjb21tZW5kYXRpb25EYXRhKTtcblx0XHR9XG5cdH0sXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHByb3BlcnR5IHBhdGggb2YgdGhlIGZpZWxkIGJ5IHJlbW92aW5nIHRoZSBsZWFkaW5nICcvJyBhbmQgbWFpbiBlbnRpdHkgc2V0IG5hbWUuXG5cdCAqXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eVBhdGggUHJvcGVydHkgUGF0aCBvZiB0aGUgRmllbGRcblx0ICogQHJldHVybnMgUHJvcGVydHkgcGF0aCBvZiB0aGUgZmllbGQgYnkgcmVtb3ZpbmcgdGhlIGxlYWRpbmcgJy8nIGFuZCBtYWluIGVudGl0eSBzZXQgbmFtZS5cblx0ICovXG5cdGdldFJlY29tbWVuZGF0aW9uUHJvcGVydHlQYXRoOiBmdW5jdGlvbiAocHJvcGVydHlQYXRoOiBzdHJpbmcpIHtcblx0XHQvL0ZpcnN0IHdlIHNwbGl0IHRoZSBwcm9wZXJ0eSBwYXRoIGJhc2VkIG9uIC9cblx0XHRjb25zdCBwcm9wZXJ0eVBhdGhzID0gcHJvcGVydHlQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHQvL05vdyByZW1vdmUgdGhlIGZpcnN0IHR3byBlbGVtZW50cyBvZiB0aGUgYXJyYXkuIEFzIGZpcnN0IGVsZW1lbnQgd2lsbCBhbHdheXMgYmUgJycgYW5kIHNlY29uZCBlbGVtZW50IHdpbGwgYmUgbWFpbiBlbnRpdHkgc2V0IG5hbWVcblx0XHRwcm9wZXJ0eVBhdGhzLnNwbGljZSgwLCAyKTtcblx0XHQvL05vdyBqb2luIHRoZSByZW1haW5pbmcgZWxlbWVudHMgdG8gY3JlYXRlIGEgbmV3IHByb3BlcnR5IHBhdGggYW5kIHJldHVybiBpdFxuXHRcdHJldHVybiBwcm9wZXJ0eVBhdGhzLmpvaW4oXCIvXCIpO1xuXHR9LFxuXHQvKipcblx0ICogTWV0aG9kIHRvIGZpbHRlciBPdGhlcnMgdmFsdWVzIGNvbnRleHQgZGF0YSBhbmQgcmVtb3ZlIHZhbHVlcyB3aGljaCBhcmUgYWxzbyBwcmVzZW50IGluIFJlY2VudGx5IFVzZWQgYW5kIFJlY29tbWVuZGF0aW9uIGdyb3VwLlxuXHQgKiBAcGFyYW0gcmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YSBSZWNvbW1lbmRhdGlvbiB2YWx1ZXMgY29udGV4dCBkYXRhXG5cdCAqIEBwYXJhbSByZWNlbnRWYWx1ZXNDb250ZXh0RGF0YSBSZWNlbnQgdmFsdWVzIGNvbnRleHQgZGF0YVxuXHQgKiBAcGFyYW0gb3RoZXJzVmFsdWVzQ29udGV4dERhdGEgT3RoZXJzIHZhbHVlcyBjb250ZXh0IGRhdGFcblx0ICogQHBhcmFtIHZhbHVlTGlzdFByb3BlcnR5IFZhbHVlTGlzdFByb3BlcnR5IG9mIHRoZSBwYXlsb2FkXG5cdCAqIEBwYXJhbSBhZGRpdGlvbmFsVmFsdWVzIEFycmF5IG9mIGFkZGl0aW9uYWwgdmFsdWVzXG5cdCAqIEByZXR1cm5zIE90aGVycyB2YWx1ZXMgY29udGV4dCBkYXRhLlxuXHQgKi9cblx0Z2V0UmVsZXZhbnRPdGhlcnNWYWx1ZXNDb250ZXh0RGF0YTogZnVuY3Rpb24gKFxuXHRcdHJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGE6IEZpZWxkRGF0YVR5cGVbXSxcblx0XHRyZWNlbnRWYWx1ZXNDb250ZXh0RGF0YTogRmllbGREYXRhVHlwZVtdLFxuXHRcdG90aGVyc1ZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW10sXG5cdFx0dmFsdWVIZWxwS2V5czogc3RyaW5nW11cblx0KTogRmllbGREYXRhVHlwZVtdIHtcblx0XHRyZXR1cm4gb3RoZXJzVmFsdWVzQ29udGV4dERhdGEuZmlsdGVyKFxuXHRcdFx0KGNvbnRleHREYXRhKSA9PlxuXHRcdFx0XHQhdGhpcy5jaGVja1ZhbHVlc01hdGNoKGNvbnRleHREYXRhLCByZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhLCB2YWx1ZUhlbHBLZXlzKSAmJlxuXHRcdFx0XHQhdGhpcy5jaGVja1ZhbHVlc01hdGNoKGNvbnRleHREYXRhLCByZWNlbnRWYWx1ZXNDb250ZXh0RGF0YSwgdmFsdWVIZWxwS2V5cylcblx0XHQpO1xuXHR9LFxuXHQvKipcblx0ICogTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgcmVjZW50IHZhbHVlcyBtYXRjaGVzIGVpdGhlciB3aXRoIHRoZSBzZWFyY2ggdGVybSBvciB3aXRoIHRoZSBvdGhlcnMgdmFsdWVzLlxuXHQgKiBAcGFyYW0gb3RoZXJzVmFsdWVzQ29udGV4dERhdGEgT3RoZXJzIHZhbHVlcyBjb250ZXh0IGRhdGFcblx0ICogQHBhcmFtIHJlY2VudFZhbHVlc0NvbnRleHREYXRhIFJlY2VudCB2YWx1ZXMgY29udGV4dCBkYXRhXG5cdCAqIEBwYXJhbSB2YWx1ZUxpc3RQcm9wZXJ0eSBWYWx1ZUxpc3RQcm9wZXJ0eSBvZiB0aGUgcGF5bG9hZFxuXHQgKiBAcGFyYW0gc2VhcmNoVGVybSBTZWFyY2ggdGVybSBlbnRlcmVkIGJ5IHRoZSB1c2VyXG5cdCAqIEBwYXJhbSBiaW5kaW5nSW5mbyBCaW5kaW5nIGluZm8gb2JqZWN0IG9mIHRoZSB2YWx1ZSBoZWxwXG5cdCAqIEByZXR1cm5zIFJlY2VudCB2YWx1ZXMgY29udGV4dCBkYXRhIHdoaWNoIG5lZWRzIHRvIGJlIHNob3cgaW4gdGhlIFJlY2VudGx5IFVzZWQgZ3JvdXAgaW4gdGhlIHR5cGUgYWhlYWQgc3VnZ2VzdGlvbiBsaXN0LlxuXHQgKi9cblx0Z2V0UmVsZXZhbnRSZWNlbnRWYWx1ZXNDb250ZXh0RGF0YTogZnVuY3Rpb24gKFxuXHRcdG90aGVyc1ZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW10sXG5cdFx0cmVjZW50VmFsdWVzQ29udGV4dERhdGE6IEZpZWxkRGF0YVR5cGVbXSxcblx0XHR2YWx1ZUhlbHBLZXlzOiBzdHJpbmdbXSxcblx0XHRzZWFyY2hUZXJtOiBzdHJpbmcsXG5cdFx0YmluZGluZ0luZm86IEFnZ3JlZ2F0aW9uQmluZGluZ0luZm9cblx0KTogRmllbGREYXRhVHlwZVtdIHtcblx0XHQvLyBmaWx0ZXIgb3V0IHJlY2VudCB2YWx1ZSBiYXNlZCBvbiBleGlzdGluZyB2YWx1ZSBoZWxwIGZpbHRlcnNcblx0XHRjb25zdCByZWNlbnRWYWx1ZXNNb2RlbCA9IG5ldyBKU09OTW9kZWwoeyByZWNlbnRWYWx1ZXNDb250ZXh0RGF0YSB9KTtcblx0XHRjb25zdCByZWNlbnRWYWx1ZXNMaXN0ID0gcmVjZW50VmFsdWVzTW9kZWwuYmluZExpc3QoXG5cdFx0XHRcIi9yZWNlbnRWYWx1ZXNDb250ZXh0RGF0YVwiLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0dGhpcy5nZXRWYWx1ZUhlbHBCaW5kaW5nRmlsdGVycyhiaW5kaW5nSW5mbylcblx0XHQpO1xuXHRcdHJlY2VudFZhbHVlc0NvbnRleHREYXRhID0gcmVjZW50VmFsdWVzTGlzdC5nZXRBbGxDdXJyZW50Q29udGV4dHMoKS5tYXAoKGNvbnRleHQpID0+IGNvbnRleHQuZ2V0T2JqZWN0KCkgYXMgRmllbGREYXRhVHlwZSk7XG5cblx0XHQvLyBjb25zaWRlciBvbmx5IHRob3NlIHJlY2VudCB2YWx1ZXMgd2hpY2ggZWl0aGVyIG1hdGNoZXMgd2l0aCB0aGUgc2VhcmNoIHRlcm0gb3Igd2l0aCB0aGUgcmVzcG9uc2UgcmVjZWl2ZWQgZnJvbSBiYWNrZW5kIGZvciB0aGUgT3RoZXJzIGdyb3VwLlxuXHRcdC8vIEJvdGggdGhlIGZpbHRlcnMgbmVlZHMgdG8gYmUgYXBwbGllZCBzbyB0aGF0IHNvIHRoYXQgb3JkZXIgb2YgdGhlIHJlY2VudCB2YWx1ZXMgZG9lcyBub3QgY2hhbmdlLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHRoZSBvcmRlciBpbiB3aGljaFxuXHRcdC8vIHRoZSBkYXRhIHdvdWxkIGJlIHNob3duIGluIHRoZSB0eXBlIGFoZWFkIHN1Z2dlc3Rpb24gbGlzdC5cblx0XHRyZXR1cm4gcmVjZW50VmFsdWVzQ29udGV4dERhdGEuZmlsdGVyKChyZWNlbnRWYWx1ZUNvbnRleHREYXRhKSA9PlxuXHRcdFx0dGhpcy5maWx0ZXJSZWNlbnRWYWx1ZXNDb250ZXh0RGF0YShyZWNlbnRWYWx1ZUNvbnRleHREYXRhLCBzZWFyY2hUZXJtLCB2YWx1ZUhlbHBLZXlzLCBvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YSlcblx0XHQpO1xuXHR9LFxuXHQvKipcblx0ICogTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIHJlY2VudCB2YWx1ZSBjb250ZXh0IGRhdGEgbWF0Y2hlcyB3aXRoIHRoZSBnaXZlbiBzZWFyY2ggdGVybSBvciB0aGUgb3RoZXJzIHZhbHVlcy5cblx0ICogQHBhcmFtIHJlY2VudFZhbHVlQ29udGV4dERhdGEgUmVjZW50IHZhbHVlcyBjb250ZXh0IGRhdGFcblx0ICogQHBhcmFtIHNlYXJjaFRlcm0gU2VhcmNoIHRlcm0gZW50ZXJlZCBieSB0aGUgdXNlclxuXHQgKiBAcGFyYW0gdmFsdWVMaXN0UHJvcGVydHkgVmFsdWVMaXN0UHJvcGVydHkgb2YgdGhlIHBheWxvYWRcblx0ICogQHBhcmFtIG90aGVyc0Zyb21CYWNrZW5kIE90aGVycyB2YWx1ZXMgY29udGV4dCBkYXRhXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGdpdmVuIHJlY2VudCB2YWx1ZSBjb250ZXh0IHNhdGlzZmllcyB0aGUgZmlsdGVyIGNvbmRpdGlvbi5cblx0ICovXG5cdGZpbHRlclJlY2VudFZhbHVlc0NvbnRleHREYXRhOiBmdW5jdGlvbiAoXG5cdFx0cmVjZW50VmFsdWVDb250ZXh0RGF0YTogRmllbGREYXRhVHlwZSxcblx0XHRzZWFyY2hUZXJtOiBzdHJpbmcsXG5cdFx0dmFsdWVIZWxwS2V5czogc3RyaW5nW10sXG5cdFx0b3RoZXJzVmFsdWVzQ29udGV4dERhdGE6IEZpZWxkRGF0YVR5cGVbXVxuXHQpOiBib29sZWFuIHtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiByZWNlbnRWYWx1ZUNvbnRleHREYXRhKSB7XG5cdFx0XHRpZiAodHlwZW9mIHJlY2VudFZhbHVlQ29udGV4dERhdGFba2V5XSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJSZWNlbnRWYWx1ZXNDb250ZXh0RGF0YShcblx0XHRcdFx0XHRcdHJlY2VudFZhbHVlQ29udGV4dERhdGFba2V5XSBhcyBGaWVsZERhdGFUeXBlLFxuXHRcdFx0XHRcdFx0c2VhcmNoVGVybSxcblx0XHRcdFx0XHRcdHZhbHVlSGVscEtleXMsXG5cdFx0XHRcdFx0XHRvdGhlcnNWYWx1ZXNDb250ZXh0RGF0YVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHJlY2VudFZhbHVlQ29udGV4dERhdGFba2V5XSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0KCFzZWFyY2hUZXJtICYmIG90aGVyc1ZhbHVlc0NvbnRleHREYXRhLmxlbmd0aCA9PT0gMCkgfHwgLy8gQ2FzZSB3aGVyZSBmb2N1cyBpcyBqdXN0IHNldCB0byB0aGUgdmFsdWUgaGVscCBmaWVsZFxuXHRcdFx0XHRcdChyZWNlbnRWYWx1ZUNvbnRleHREYXRhW2tleV0gYXMgc3RyaW5nKS5pbmNsdWRlcyhzZWFyY2hUZXJtKSB8fFxuXHRcdFx0XHRcdCh2YWx1ZUhlbHBLZXlzLmluY2x1ZGVzKGtleSkgJiYgdGhpcy5jaGVja1ZhbHVlc01hdGNoKHJlY2VudFZhbHVlQ29udGV4dERhdGEsIG90aGVyc1ZhbHVlc0NvbnRleHREYXRhLCB2YWx1ZUhlbHBLZXlzKSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIGtleXMgaW4gY29udGV4dERhdGFUb0JlTWF0Y2hlZCBtYXRjaCB3aXRoIGFueSBvYmplY3QgaW4gY29udGV4dERhdGFMaXN0LlxuXHQgKiBAcGFyYW0gY29udGV4dERhdGFUb0JlTWF0Y2hlZCBUaGUgY29udGV4dCBkYXRhIG9iamVjdCB0byBjb21wYXJlXG5cdCAqIEBwYXJhbSBjb250ZXh0RGF0YUxpc3QgVGhlIGFycmF5IG9mIGNvbnRleHQgZGF0YSBvYmplY3RzIHRvIGNvbXBhcmUgYWdhaW5zdFxuXHQgKiBAcGFyYW0gdmFsdWVIZWxwS2V5cyBUaGUga2V5cyB0byBjb21wYXJlIGZyb20gY29udGV4dERhdGFUb0JlTWF0Y2hlZCB3aXRoIGNvbnRleHREYXRhTGlzdCBvYmplY3RzXG5cdCAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2JqZWN0IGluIGNvbnRleHREYXRhTGlzdCBtYXRjaGVzIHRoZSB2YWx1ZXMgb2YgdGhlIHNwZWNpZmllZCBrZXlzIGluIGNvbnRleHREYXRhVG9CZU1hdGNoZWQsIG90aGVyd2lzZSBmYWxzZS5cblx0ICovXG5cdGNoZWNrVmFsdWVzTWF0Y2g6IGZ1bmN0aW9uIChjb250ZXh0RGF0YVRvQmVNYXRjaGVkOiBGaWVsZERhdGFUeXBlLCBjb250ZXh0RGF0YUxpc3Q6IEZpZWxkRGF0YVR5cGVbXSwgdmFsdWVIZWxwS2V5czogc3RyaW5nW10pOiBib29sZWFuIHtcblx0XHRmb3IgKGNvbnN0IG9iaiBvZiBjb250ZXh0RGF0YUxpc3QpIHtcblx0XHRcdGxldCBtYXRjaCA9IHRydWU7XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBvZiB2YWx1ZUhlbHBLZXlzKSB7XG5cdFx0XHRcdC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBvZiB0aGUga2V5IGluIHJlY2VudFZhbHVlc0NvbnRleHREYXRhXG5cdFx0XHRcdC8vIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBrZXkgaW4gdGhlIGN1cnJlbnQgb2JqZWN0IGZyb20gb3RoZXJzVmFsdWVzQ29udGV4dERhdGFcblx0XHRcdFx0aWYgKGNvbnRleHREYXRhVG9CZU1hdGNoZWRba2V5XSAhPT0gb2JqW2tleV0pIHtcblx0XHRcdFx0XHRtYXRjaCA9IGZhbHNlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAobWF0Y2gpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXHQvKipcblx0ICogTWV0aG9kIHRvIHJlYXJyYW5nZSB0aGUgZ2l2ZW4gYWRkaXRpb25hbCB2YWx1ZSBjb250ZXh0IGRhdGEgYXMgcGVyIHRoZSBjaHJvbm9sb2dpY2FsIG9yZGVyIG9mIHRoZSBnaXZlbiBhZGRpdGlvbmFsIHZhbHVlcy5cblx0ICogVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgcmVjb21tZW5kYXRpb24gZGF0YSBmZXRjaGVkIGZyb20gYmFja2VuZCBhcmUgc2hvd24gaW4gdGhlIHNhbWUgb3JkZXIgb2YgcmVjb21tZW5kYXRpb24gdmFsdWVzIGZldGNoZWQgZnJvbSByZWNvbW1lbmRhdGlvbiBzZXJ2aWNlLlxuXHQgKiBAcGFyYW0gcmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YSBSZWNvbW1lbmRhdGlvbiB2YWx1ZXMgY29udGV4dCBkYXRhXG5cdCAqIEBwYXJhbSByZWNvbW1lbmRhdGlvblZhbHVlcyBSZWNvbW1lbmRhdGlvbiB2YWx1ZXNcblx0ICogQHBhcmFtIHZhbHVlTGlzdFByb3BlcnR5IFZhbHVlIGxpc3QgcHJvcGVydHkgb2YgdGhlIHZhbHVlIGhlbHBcblx0ICogQHJldHVybnMgUmVjb21tZW5kYXRpb24gdmFsdWVzIGNvbnRleHQgZGF0YSBpbiB0aGUgY29ycmVjdCBvcmRlci5cblx0ICovXG5cdGdldFJlbGV2YW50UmVjb21tZW5kYXRpb25WYWx1ZXNDb250ZXh0RGF0YTogZnVuY3Rpb24gKFxuXHRcdHJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGE6IEZpZWxkRGF0YVR5cGVbXSxcblx0XHRyZWNvbW1lbmRhdGlvblZhbHVlczogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pW10gPSBbXSxcblx0XHR2YWx1ZUxpc3RQcm9wZXJ0eTogc3RyaW5nXG5cdCk6IEZpZWxkRGF0YVR5cGVbXSB7XG5cdFx0Y29uc3QgcmVsZXZhbnRSZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhOiBGaWVsZERhdGFUeXBlW10gPSBbXTtcblx0XHRyZWNvbW1lbmRhdGlvblZhbHVlcy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuXHRcdFx0Y29uc3QgZm91bmRPYmplY3QgPSByZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhLmZpbmQoKGNvbnRleHREYXRhKSA9PiBjb250ZXh0RGF0YVt2YWx1ZUxpc3RQcm9wZXJ0eV0gPT09IHZhbHVlKTtcblx0XHRcdGlmIChmb3VuZE9iamVjdCkge1xuXHRcdFx0XHRyZWxldmFudFJlY29tbWVuZGF0aW9uVmFsdWVzQ29udGV4dERhdGEucHVzaChmb3VuZE9iamVjdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gcmVsZXZhbnRSZWNvbW1lbmRhdGlvblZhbHVlc0NvbnRleHREYXRhO1xuXHR9XG59O1xuZXhwb3J0IHsgQWRkaXRpb25hbFZhbHVlR3JvdXBLZXksIFJlY29tbWVuZGF0aW9uVmFsdWVUeXBlLCBhZGRpdGlvbmFsVmFsdWVIZWxwZXIgfTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7O01Bd0JLQSx1QkFBdUI7RUFBQSxXQUF2QkEsdUJB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
@@ -151,7 +151,7 @@ const additionalValueHelper = {
151
151
  );
152
152
  additionalValueContextPromise.push(
153
153
  // in case of dropdown, we are supposed to fetch all the records
154
- allListBinding.requestContexts(0, payload.isValueListWithFixedValues ? Infinity : 10, "additionalValue")
154
+ allListBinding.requestContexts(0, payload.isValueListWithFixedValues ? 500 : 10, "additionalValue")
155
155
  );
156
156
  }
157
157
  return additionalValueContextPromise;
@@ -25,7 +25,7 @@ sap.ui.define(["sap/fe/core/library", "sap/fe/macros/coreUI/factory", "sap/fe/ma
25
25
  controls: [],
26
26
  elements: [],
27
27
  // eslint-disable-next-line no-template-curly-in-string
28
- version: "1.124.6",
28
+ version: "1.124.7",
29
29
  noLibraryCSS: true,
30
30
  extensions: {
31
31
  flChangeHandlers: {