@sapui5/sap.fe.core 1.121.1 → 1.121.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.121.1",
3
+ "version": "1.121.2",
4
4
  "description": "SAPUI5 Library sap.fe.core",
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.121.1</version>
9
+ <version>1.121.2</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -212,17 +212,24 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/Hook
212
212
  return renderedControl;
213
213
  }, {
214
214
  id: function (sId) {
215
- return containingView.createId(sId);
215
+ return mSettings.containingView.createId(sId);
216
216
  },
217
217
  settings: function (controlSettings) {
218
- const allAssociations = this.getMetadata().getAssociations();
218
+ const allAssociations = this.getMetadata().getAllAssociations();
219
219
  for (const associationDetailName of Object.keys(allAssociations)) {
220
220
  if (controlSettings[associationDetailName] !== undefined) {
221
- // The associated elements are indicated via local IDs; we need to change the references to global ones
222
- const associations = Array.isArray(controlSettings[associationDetailName]) ? controlSettings[associationDetailName] : [controlSettings[associationDetailName]];
221
+ if (allAssociations[associationDetailName].multiple) {
222
+ // Multiple association
223
+ // The associated elements are indicated via local IDs; we need to change the references to global ones
224
+ const associations = Array.isArray(controlSettings[associationDetailName]) ? controlSettings[associationDetailName] : [controlSettings[associationDetailName]];
223
225
 
224
- // Create global IDs for associations given as strings, not for already resolved ManagedObjects
225
- controlSettings[associationDetailName] = associations.map(association => typeof association === "string" ? mSettings.containingView.createId(association) : association);
226
+ // Create global IDs for associations given as strings, not for already resolved ManagedObjects
227
+ controlSettings[associationDetailName] = associations.map(association => typeof association === "string" ? mSettings.containingView.createId(association) : association);
228
+ } else {
229
+ // Single association
230
+ const singleAssociationValue = controlSettings[associationDetailName];
231
+ controlSettings[associationDetailName] = typeof singleAssociationValue === "string" ? mSettings.containingView.createId(singleAssociationValue) : singleAssociationValue;
232
+ }
226
233
  }
227
234
  }
228
235
  return controlSettings;
@@ -232,4 +239,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/Hook
232
239
  });
233
240
  return _exports;
234
241
  }, false);
235
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSdW50aW1lQnVpbGRpbmdCbG9ja0ZyYWdtZW50IiwiZGVmaW5lVUk1Q2xhc3MiLCJldmVudCIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiRnJhZ21lbnQiLCJSVU5USU1FX0JMT0NLUyIsInN0b3JlUnVudGltZUJsb2NrIiwiQnVpbGRpbmdCbG9ja0NsYXNzIiwibWV0YWRhdGEiLCJuYW1lc3BhY2UiLCJwdWJsaWNOYW1lc3BhY2UiLCJuYW1lIiwicmVnaXN0ZXJUeXBlIiwibG9hZCIsIm1TZXR0aW5ncyIsImJ1aWxkaW5nQmxvY2tEZXRhaWwiLCJmcmFnbWVudE5hbWUiLCJlIiwibG9hZEVycm9yTWVzc2FnZSIsImluaXQiLCJMYWJlbCIsInRleHQiLCJmcmFnbWVudENvbnRlbnQiLCJ1bmRlZmluZWQiLCJFcnJvciIsImNsYXNzU2V0dGluZ3MiLCJmZUN1c3RvbURhdGEiLCJjdXN0b21EYXRhIiwibVByb3BlcnRpZXMiLCJ2YWx1ZSIsImZ1bmN0aW9uSG9sZGVyIiwiY29udGFpbmluZ1ZpZXciLCJnZXRDb250cm9sbGVyIiwiZ2V0VmlldyIsInBhZ2VDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsImFwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwicGFnZU1vZGVsIiwiZ2V0TW9kZWwiLCJmdW5jdGlvblN0cmluZ0luT3JkZXIiLCJzcGxpdCIsInByb3BlcnRpZXNBc3NpZ25lZFRvRnVuY3Rpb24iLCJwcm9wZXJ0eU5hbWUiLCJwcm9wZXJ0aWVzIiwicHJvcGVydHlNZXRhZGF0YSIsInBhZ2VNb2RlbENvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImJpbmRhYmxlIiwiTnVtYmVyIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJmdW5jdGlvbkluZGV4IiwiaW5kZXhPZiIsImZ1bmN0aW9uU3RyaW5nIiwidGFyZ2V0RnVuY3Rpb24iLCJmaW5kIiwiZnVuY3Rpb25EZWYiLCJfc2FwdWlfaGFuZGxlck5hbWUiLCJsZW5ndGgiLCJiaW5kIiwiZ2V0T2JqZWN0IiwiTWFuYWdlZE9iamVjdCIsInJ1bldpdGhQcmVwcm9jZXNzb3JzIiwicmVuZGVyZWRDb250cm9sIiwianN4Iiwid2l0aENvbnRleHQiLCJ2aWV3IiwidGVtcGxhdGVQcm9jZXNzaW5nU2V0dGluZ3MiLCJtb2RlbHMiLCJjb252ZXJ0ZXJDb250ZXh0IiwiSlNPTk1vZGVsIiwiaXNSdW50aW1lSW5zdGFudGlhdGlvbiIsImJ1aWxkaW5nQmxvY2tJbnN0YW5jZSIsImluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzIiwiZnJhZ21lbnRYTUwiLCJkZXBlbmRlbnRzIiwiZGVwZW5kZW50IiwiYWRkRGVwZW5kZW50IiwiY3VzdG9tRGF0YUhvbGRlciIsImFkZEN1c3RvbURhdGEiLCJsYXlvdXREYXRhIiwic2V0QWdncmVnYXRpb24iLCJnZXRDb250ZW50IiwiX2JBc3luYyIsIl9hQ29udGVudCIsImlkIiwic0lkIiwiY3JlYXRlSWQiLCJzZXR0aW5ncyIsImNvbnRyb2xTZXR0aW5ncyIsImFsbEFzc29jaWF0aW9ucyIsImdldE1ldGFkYXRhIiwiZ2V0QXNzb2NpYXRpb25zIiwiYXNzb2NpYXRpb25EZXRhaWxOYW1lIiwiT2JqZWN0Iiwia2V5cyIsImFzc29jaWF0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImFzc29jaWF0aW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJSdW50aW1lQnVpbGRpbmdCbG9ja0ZyYWdtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgdHlwZSBSdW50aW1lQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9SdW50aW1lQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHsgaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IHJlc29sdmVCaW5kaW5nU3RyaW5nIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgZXZlbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBqc3ggZnJvbSBcInNhcC9mZS9jb3JlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IExhYmVsIGZyb20gXCJzYXAvbS9MYWJlbFwiO1xuaW1wb3J0IE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEZyYWdtZW50IGZyb20gXCJzYXAvdWkvY29yZS9GcmFnbWVudFwiO1xuaW1wb3J0IHR5cGUgTGF5b3V0RGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvTGF5b3V0RGF0YVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBNYW5hZ2VkT2JqZWN0RXggfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogSW50ZXJuYWwgZXh0ZW5zaW9uIHRvIHRoZSBGcmFnbWVudCBjbGFzcyBpbiBvcmRlciB0byBhZGQgc29tZSBwbGFjZSB0byBob2xkIGZ1bmN0aW9ucyBmb3IgcnVudGltZSBidWlsZGluZyBibG9ja3NcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuYnVpbGRpbmdCbG9ja3MudGVtcGxhdGluZy5SdW50aW1lQnVpbGRpbmdCbG9ja0ZyYWdtZW50XCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSdW50aW1lQnVpbGRpbmdCbG9ja0ZyYWdtZW50IGV4dGVuZHMgRnJhZ21lbnQge1xuXHQvKlxuXHQgKiBFdmVudCB0byBob2xkIGFuZCByZXNvbHZlIGZ1bmN0aW9ucyBmb3IgcnVudGltZSBidWlsZGluZyBibG9ja3Ncblx0ICovXG5cdEBldmVudCgpXG5cdGZ1bmN0aW9uSG9sZGVyITogRnVuY3Rpb247XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIgfSlcblx0ZnJhZ21lbnRYTUw/OiBDb250cm9sO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFtdXCIsIG11bHRpcGxlOiB0cnVlIH0pXG5cdGRlcGVuZGVudHMhOiBDb250cm9sW107XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5DdXN0b21EYXRhW11cIiwgbXVsdGlwbGU6IHRydWUgfSlcblx0Y3VzdG9tRGF0YUhvbGRlciE6IEN1c3RvbURhdGFbXTtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkxheW91dERhdGFcIiB9KVxuXHRsYXlvdXREYXRhITogTGF5b3V0RGF0YTtcbn1cblxudHlwZSBGcmFnbWVudEN1c3RvbURhdGEgPSB7XG5cdG1Qcm9wZXJ0aWVzOiB7XG5cdFx0dmFsdWU6IHtcblx0XHRcdFwic2FwLmZlLmNvcmUuYnVpbGRpbmdCbG9ja3MudGVtcGxhdGluZ1wiPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblx0XHR9O1xuXHR9O1xufTtcblxuZXhwb3J0IHR5cGUgUnVudGltZUJ1aWxkaW5nQmxvY2tGcmFnbWVudFNldHRpbmdzID0ge1xuXHRmcmFnbWVudE5hbWU6IHN0cmluZztcblx0ZnJhZ21lbnRDb250ZW50PzogdHlwZW9mIFJ1bnRpbWVCdWlsZGluZ0Jsb2NrO1xuXHRjb250YWluaW5nVmlldzogVmlldztcblx0Y3VzdG9tRGF0YT86IEZyYWdtZW50Q3VzdG9tRGF0YVtdO1xuXHRkZXBlbmRlbnRzPzogVUk1RWxlbWVudFtdO1xuXHRjdXN0b21EYXRhSG9sZGVyPzogQ3VzdG9tRGF0YVtdO1xuXHRsYXlvdXREYXRhPzogTGF5b3V0RGF0YTtcblx0ZnJhZ21lbnRYTUw/OiBDb250cm9sO1xuXHRmdW5jdGlvbkhvbGRlcj86IEZ1bmN0aW9uV2l0aEhhbmRsZXJbXVtdO1xuXHRsb2FkRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xufTtcblxudHlwZSBGdW5jdGlvbldpdGhIYW5kbGVyID0gRnVuY3Rpb24gJiB7XG5cdF9zYXB1aV9oYW5kbGVyTmFtZT86IHN0cmluZztcbn07XG50eXBlIEZyYWdtZW50V2l0aEludGVybmFscyA9IHtcblx0X2JBc3luYzogYm9vbGVhbjtcblx0X2FDb250ZW50OiBDb250cm9sIHwgQ29udHJvbFtdO1xufTtcblxuY29uc3QgUlVOVElNRV9CTE9DS1M6IFJlY29yZDxzdHJpbmcsIHR5cGVvZiBSdW50aW1lQnVpbGRpbmdCbG9jaz4gPSB7fTtcbi8qKlxuICogU3RvcmVzIHRoZSBjbGFzcyBvZiBhIHJ1bnRpbWUgYnVpbGRpbmcgYmxvY2sgdG8gYmUgbG9hZGVkIHdoZW5ldmVyIHRoZSBidWlsZGluZyBibG9jayBpcyB1c2VkIGF0IHJ1bnRpbWUuXG4gKlxuICogQHBhcmFtIEJ1aWxkaW5nQmxvY2tDbGFzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcmVSdW50aW1lQmxvY2soQnVpbGRpbmdCbG9ja0NsYXNzOiB0eXBlb2YgUnVudGltZUJ1aWxkaW5nQmxvY2spOiB2b2lkIHtcblx0UlVOVElNRV9CTE9DS1NbXG5cdFx0YCR7QnVpbGRpbmdCbG9ja0NsYXNzLm1ldGFkYXRhLm5hbWVzcGFjZSA/PyBCdWlsZGluZ0Jsb2NrQ2xhc3MubWV0YWRhdGEucHVibGljTmFtZXNwYWNlfS4ke0J1aWxkaW5nQmxvY2tDbGFzcy5tZXRhZGF0YS5uYW1lfWBcblx0XSA9IEJ1aWxkaW5nQmxvY2tDbGFzcztcbn1cblxuUnVudGltZUJ1aWxkaW5nQmxvY2tGcmFnbWVudC5yZWdpc3RlclR5cGUoXCJGRV9DT01QT05FTlRTXCIsIHtcblx0bG9hZDogYXN5bmMgZnVuY3Rpb24gKG1TZXR0aW5nczogUnVudGltZUJ1aWxkaW5nQmxvY2tGcmFnbWVudFNldHRpbmdzKSB7XG5cdFx0bGV0IGJ1aWxkaW5nQmxvY2tEZXRhaWw7XG5cdFx0dHJ5IHtcblx0XHRcdGJ1aWxkaW5nQmxvY2tEZXRhaWwgPSBhd2FpdCBSVU5USU1FX0JMT0NLU1ttU2V0dGluZ3MuZnJhZ21lbnROYW1lXS5sb2FkKCk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0bVNldHRpbmdzLmxvYWRFcnJvck1lc3NhZ2UgPSBlIGFzIHN0cmluZztcblx0XHR9XG5cdFx0cmV0dXJuIGJ1aWxkaW5nQmxvY2tEZXRhaWw7XG5cdH0sXG5cdGluaXQ6IGZ1bmN0aW9uICh0aGlzOiBGcmFnbWVudFdpdGhJbnRlcm5hbHMsIG1TZXR0aW5nczogUnVudGltZUJ1aWxkaW5nQmxvY2tGcmFnbWVudFNldHRpbmdzKSB7XG5cdFx0Ly8gSW4gY2FzZSB0aGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHRoZSBsb2FkIHByb2Nlc3MsIGV4aXQgZWFybHlcblx0XHRpZiAobVNldHRpbmdzLmxvYWRFcnJvck1lc3NhZ2UpIHtcblx0XHRcdHJldHVybiBuZXcgTGFiZWwoeyB0ZXh0OiBtU2V0dGluZ3MubG9hZEVycm9yTWVzc2FnZSB9KTtcblx0XHR9XG5cdFx0bGV0IEJ1aWxkaW5nQmxvY2tDbGFzcyA9IG1TZXR0aW5ncy5mcmFnbWVudENvbnRlbnQ7XG5cdFx0aWYgKEJ1aWxkaW5nQmxvY2tDbGFzcyA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBJbiBzb21lIGNhc2Ugd2UgbWlnaHQgaGF2ZSBiZWVuIGNhbGxlZCBoZXJlIHN5bmNocm9ub3VzbHkgKHVuc3Rhc2ggY2FzZSBmb3IgaW5zdGFuY2UpLCB3aGljaCBtZWFucyB3ZSBkaWRuJ3QgZ28gdGhyb3VnaCB0aGUgbG9hZCBmdW5jdGlvblxuXHRcdFx0QnVpbGRpbmdCbG9ja0NsYXNzID0gUlVOVElNRV9CTE9DS1NbbVNldHRpbmdzLmZyYWdtZW50TmFtZV07XG5cdFx0fVxuXHRcdGlmIChCdWlsZGluZ0Jsb2NrQ2xhc3MgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBObyBidWlsZGluZyBibG9jayBjbGFzcyBmb3IgcnVudGltZSBidWlsZGluZyBibG9jayAke21TZXR0aW5ncy5mcmFnbWVudE5hbWV9IGZvdW5kYCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY2xhc3NTZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRjb25zdCBmZUN1c3RvbURhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPVxuXHRcdFx0bVNldHRpbmdzLmN1c3RvbURhdGE/LlswXT8ubVByb3BlcnRpZXM/LnZhbHVlPy5bXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy50ZW1wbGF0aW5nXCJdIHx8IHt9O1xuXHRcdGRlbGV0ZSBtU2V0dGluZ3MuY3VzdG9tRGF0YTtcblx0XHRjb25zdCBmdW5jdGlvbkhvbGRlcjogRnVuY3Rpb25XaXRoSGFuZGxlcltdW10gPSBtU2V0dGluZ3MuZnVuY3Rpb25Ib2xkZXIgPz8gW107XG5cdFx0ZGVsZXRlIG1TZXR0aW5ncy5mdW5jdGlvbkhvbGRlcjtcblxuXHRcdC8vIGNvbnRhaW5pbmdWaWV3IGNhbiBhbHNvIGJlIGEgZnJhZ21lbnQsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSBjb250cm9sbGVyICh3aGljaCBjb3VsZCBhbHNvIGJlIGFuIEV4dGVuc2lvbkFQSSkgZ2V0IHRoZSBhY3R1YWwgdmlld1xuXHRcdGNvbnN0IGNvbnRhaW5pbmdWaWV3ID1cblx0XHRcdG1TZXR0aW5ncy5jb250YWluaW5nVmlldy5nZXRDb250cm9sbGVyPy4oKT8uZ2V0Vmlldz8uKCkgPz9cblx0XHRcdChtU2V0dGluZ3MuY29udGFpbmluZ1ZpZXcuZ2V0Q29udHJvbGxlcj8uKCkgYXMgdW5rbm93biBhcyBFeHRlbnNpb25BUEkpPy5bXCJfdmlld1wiXSA/P1xuXHRcdFx0bVNldHRpbmdzLmNvbnRhaW5pbmdWaWV3O1xuXHRcdGNvbnN0IHBhZ2VDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IoY29udGFpbmluZ1ZpZXcpIGFzIFRlbXBsYXRlQ29tcG9uZW50O1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChjb250YWluaW5nVmlldyk7XG5cblx0XHRjb25zdCBtZXRhTW9kZWwgPSBhcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgcGFnZU1vZGVsID0gcGFnZUNvbXBvbmVudC5nZXRNb2RlbChcIl9wYWdlTW9kZWxcIik7XG5cblx0XHRjb25zdCBmdW5jdGlvblN0cmluZ0luT3JkZXI6IHN0cmluZ1tdIHwgdW5kZWZpbmVkID0gZmVDdXN0b21EYXRhLmZ1bmN0aW9uU3RyaW5nSW5PcmRlcj8uc3BsaXQoXCIsXCIpO1xuXHRcdGNvbnN0IHByb3BlcnRpZXNBc3NpZ25lZFRvRnVuY3Rpb246IHN0cmluZ1tdIHwgdW5kZWZpbmVkID0gZmVDdXN0b21EYXRhLnByb3BlcnRpZXNBc3NpZ25lZFRvRnVuY3Rpb24/LnNwbGl0KFwiLFwiKSA/PyBbXTtcblx0XHRmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBpbiBCdWlsZGluZ0Jsb2NrQ2xhc3MubWV0YWRhdGEucHJvcGVydGllcykge1xuXHRcdFx0Y29uc3QgcHJvcGVydHlNZXRhZGF0YSA9IEJ1aWxkaW5nQmxvY2tDbGFzcy5tZXRhZGF0YS5wcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV07XG5cdFx0XHRjb25zdCBwYWdlTW9kZWxDb250ZXh0ID0gcGFnZU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KGZlQ3VzdG9tRGF0YVtwcm9wZXJ0eU5hbWVdKTtcblxuXHRcdFx0aWYgKHBhZ2VNb2RlbENvbnRleHQgPT09IG51bGwpIHtcblx0XHRcdFx0Ly8gdmFsdWUgY2Fubm90IGJlIHJlc29sdmVkLCBzbyBpdCBpcyBlaXRoZXIgYSBydW50aW1lIGJpbmRpbmcgb3IgYSBjb25zdGFudFxuXHRcdFx0XHRsZXQgdmFsdWU6IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcj4gfCB1bmRlZmluZWQgPVxuXHRcdFx0XHRcdGZlQ3VzdG9tRGF0YVtwcm9wZXJ0eU5hbWVdO1xuXG5cdFx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0XHRpZiAocHJvcGVydHlNZXRhZGF0YS5iaW5kYWJsZSAhPT0gdHJ1ZSkge1xuXHRcdFx0XHRcdFx0Ly8gcnVudGltZSBiaW5kaW5ncyBhcmUgbm90IGFsbG93ZWQsIHNvIGNvbnZlcnQgc3RyaW5ncyBpbnRvIGFjdHVhbCBwcmltaXRpdmUgdHlwZXNcblx0XHRcdFx0XHRcdHN3aXRjaCAocHJvcGVydHlNZXRhZGF0YS50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCJib29sZWFuXCI6XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWUgPSB2YWx1ZSA9PT0gXCJ0cnVlXCI7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCJudW1iZXJcIjpcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIHJ1bnRpbWUgYmluZGluZ3MgYXJlIGFsbG93ZWQsIHNvIHJlc29sdmUgdGhlIHZhbHVlcyBhcyBCaW5kaW5nVG9vbGtpdCBleHByZXNzaW9uc1xuXHRcdFx0XHRcdFx0dmFsdWUgPSByZXNvbHZlQmluZGluZ1N0cmluZyh2YWx1ZSwgcHJvcGVydHlNZXRhZGF0YS50eXBlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAocHJvcGVydHlNZXRhZGF0YS50eXBlID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0XHRjb25zdCBmdW5jdGlvbkluZGV4ID0gcHJvcGVydGllc0Fzc2lnbmVkVG9GdW5jdGlvbi5pbmRleE9mKHByb3BlcnR5TmFtZSk7XG5cdFx0XHRcdFx0aWYgKGZ1bmN0aW9uSW5kZXggPiAtMSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgZnVuY3Rpb25TdHJpbmcgPSBmdW5jdGlvblN0cmluZ0luT3JkZXJbZnVuY3Rpb25JbmRleF07XG5cdFx0XHRcdFx0XHRjb25zdCB0YXJnZXRGdW5jdGlvbiA9IGZ1bmN0aW9uSG9sZGVyPy5maW5kKChmdW5jdGlvbkRlZikgPT4gZnVuY3Rpb25EZWZbMF0/Ll9zYXB1aV9oYW5kbGVyTmFtZSA9PT0gZnVuY3Rpb25TdHJpbmcpO1xuXHRcdFx0XHRcdFx0Ly8gV2UgdXNlIHRoZSBfc2FwdWlfaGFuZGxlck5hbWUgdG8gaWRlbnRpZnkgd2hpY2ggZnVuY3Rpb24gaXMgdGhlIG9uZSB3ZSB3YW50IHRvIGJpbmQgaGVyZVxuXHRcdFx0XHRcdFx0aWYgKHRhcmdldEZ1bmN0aW9uICYmIHRhcmdldEZ1bmN0aW9uLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHRcdFx0dmFsdWUgPSB0YXJnZXRGdW5jdGlvblswXS5iaW5kKHRhcmdldEZ1bmN0aW9uWzFdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjbGFzc1NldHRpbmdzW3Byb3BlcnR5TmFtZV0gPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAocGFnZU1vZGVsQ29udGV4dC5nZXRPYmplY3QoKSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdC8vIGdldCB2YWx1ZSBmcm9tIHBhZ2UgbW9kZWxcblx0XHRcdFx0Y2xhc3NTZXR0aW5nc1twcm9wZXJ0eU5hbWVdID0gcGFnZU1vZGVsQ29udGV4dC5nZXRPYmplY3QoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIGJpbmQgdG8gbWV0YW1vZGVsXG5cdFx0XHRcdGNsYXNzU2V0dGluZ3NbcHJvcGVydHlOYW1lXSA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChmZUN1c3RvbURhdGFbcHJvcGVydHlOYW1lXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChNYW5hZ2VkT2JqZWN0IGFzIE1hbmFnZWRPYmplY3RFeCkucnVuV2l0aFByZXByb2Nlc3NvcnMoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJlbmRlcmVkQ29udHJvbCA9IGpzeC53aXRoQ29udGV4dCh7IHZpZXc6IGNvbnRhaW5pbmdWaWV3LCBhcHBDb21wb25lbnQ6IGFwcENvbXBvbmVudCB9LCAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgdGVtcGxhdGVQcm9jZXNzaW5nU2V0dGluZ3MgPSB7XG5cdFx0XHRcdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XHRcdFx0XCJzYXAuZmUuaTE4blwiOiBjb250YWluaW5nVmlldy5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpIGFzIFJlc291cmNlTW9kZWwsXG5cdFx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IChjb250YWluaW5nVmlldy5nZXRNb2RlbChcIl9wYWdlTW9kZWxcIikgPz8gbmV3IEpTT05Nb2RlbCgpKSBhcyBKU09OTW9kZWxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRhcHBDb21wb25lbnQ6IGFwcENvbXBvbmVudCxcblx0XHRcdFx0XHRcdGlzUnVudGltZUluc3RhbnRpYXRpb246IHRydWVcblx0XHRcdFx0XHR9IGFzIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3M7XG5cblx0XHRcdFx0XHRjb25zdCBidWlsZGluZ0Jsb2NrSW5zdGFuY2UgPSBuZXcgQnVpbGRpbmdCbG9ja0NsYXNzIShjbGFzc1NldHRpbmdzLCB7fSwgdGVtcGxhdGVQcm9jZXNzaW5nU2V0dGluZ3MpO1xuXHRcdFx0XHRcdGluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKGJ1aWxkaW5nQmxvY2tJbnN0YW5jZSwgY29udGFpbmluZ1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyKTtcblx0XHRcdFx0XHRpZiAobVNldHRpbmdzLmZyYWdtZW50WE1MKSB7XG5cdFx0XHRcdFx0XHRpZiAobVNldHRpbmdzLmRlcGVuZGVudHMpIHtcblx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBkZXBlbmRlbnQgb2YgbVNldHRpbmdzLmRlcGVuZGVudHMpIHtcblx0XHRcdFx0XHRcdFx0XHRtU2V0dGluZ3MuZnJhZ21lbnRYTUwuYWRkRGVwZW5kZW50KGRlcGVuZGVudCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZGVsZXRlIG1TZXR0aW5ncy5kZXBlbmRlbnRzO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKG1TZXR0aW5ncy5jdXN0b21EYXRhSG9sZGVyKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgY3VzdG9tRGF0YUhvbGRlciBvZiBtU2V0dGluZ3MuY3VzdG9tRGF0YUhvbGRlcikge1xuXHRcdFx0XHRcdFx0XHRcdG1TZXR0aW5ncy5mcmFnbWVudFhNTC5hZGRDdXN0b21EYXRhKGN1c3RvbURhdGFIb2xkZXIpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSBtU2V0dGluZ3MuY3VzdG9tRGF0YUhvbGRlcjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChtU2V0dGluZ3MubGF5b3V0RGF0YSkge1xuXHRcdFx0XHRcdFx0XHRtU2V0dGluZ3MuZnJhZ21lbnRYTUwuc2V0QWdncmVnYXRpb24oXCJsYXlvdXREYXRhXCIsIG1TZXR0aW5ncy5sYXlvdXREYXRhKTtcblx0XHRcdFx0XHRcdFx0ZGVsZXRlIG1TZXR0aW5ncy5sYXlvdXREYXRhO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBidWlsZGluZ0Jsb2NrSW5zdGFuY2UuZ2V0Q29udGVudD8uKGNvbnRhaW5pbmdWaWV3LCBhcHBDb21wb25lbnQsIG1TZXR0aW5ncy5mcmFnbWVudFhNTCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoIXRoaXMuX2JBc3luYykge1xuXHRcdFx0XHRcdHRoaXMuX2FDb250ZW50ID0gcmVuZGVyZWRDb250cm9sO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiByZW5kZXJlZENvbnRyb2w7XG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRpZDogZnVuY3Rpb24gKHNJZDogc3RyaW5nKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNvbnRhaW5pbmdWaWV3LmNyZWF0ZUlkKHNJZCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNldHRpbmdzOiBmdW5jdGlvbiAoY29udHJvbFNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBNYW5hZ2VkT2JqZWN0IHwgKHN0cmluZyB8IE1hbmFnZWRPYmplY3QpW10+KSB7XG5cdFx0XHRcdFx0Y29uc3QgYWxsQXNzb2NpYXRpb25zID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldEFzc29jaWF0aW9ucygpO1xuXHRcdFx0XHRcdGZvciAoY29uc3QgYXNzb2NpYXRpb25EZXRhaWxOYW1lIG9mIE9iamVjdC5rZXlzKGFsbEFzc29jaWF0aW9ucykpIHtcblx0XHRcdFx0XHRcdGlmIChjb250cm9sU2V0dGluZ3NbYXNzb2NpYXRpb25EZXRhaWxOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFRoZSBhc3NvY2lhdGVkIGVsZW1lbnRzIGFyZSBpbmRpY2F0ZWQgdmlhIGxvY2FsIElEczsgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHJlZmVyZW5jZXMgdG8gZ2xvYmFsIG9uZXNcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXNzb2NpYXRpb25zID0gKFxuXHRcdFx0XHRcdFx0XHRcdEFycmF5LmlzQXJyYXkoY29udHJvbFNldHRpbmdzW2Fzc29jaWF0aW9uRGV0YWlsTmFtZV0pXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGNvbnRyb2xTZXR0aW5nc1thc3NvY2lhdGlvbkRldGFpbE5hbWVdXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IFtjb250cm9sU2V0dGluZ3NbYXNzb2NpYXRpb25EZXRhaWxOYW1lXV1cblx0XHRcdFx0XHRcdFx0KSBhcyAoc3RyaW5nIHwgTWFuYWdlZE9iamVjdClbXTtcblxuXHRcdFx0XHRcdFx0XHQvLyBDcmVhdGUgZ2xvYmFsIElEcyBmb3IgYXNzb2NpYXRpb25zIGdpdmVuIGFzIHN0cmluZ3MsIG5vdCBmb3IgYWxyZWFkeSByZXNvbHZlZCBNYW5hZ2VkT2JqZWN0c1xuXHRcdFx0XHRcdFx0XHRjb250cm9sU2V0dGluZ3NbYXNzb2NpYXRpb25EZXRhaWxOYW1lXSA9IGFzc29jaWF0aW9ucy5tYXAoKGFzc29jaWF0aW9uOiBzdHJpbmcgfCBNYW5hZ2VkT2JqZWN0KSA9PlxuXHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBhc3NvY2lhdGlvbiA9PT0gXCJzdHJpbmdcIiA/IG1TZXR0aW5ncy5jb250YWluaW5nVmlldy5jcmVhdGVJZChhc3NvY2lhdGlvbikgOiBhc3NvY2lhdGlvblxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gY29udHJvbFNldHRpbmdzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0KTtcblx0fVxufSk7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O01BNEJxQkEsNEJBQTRCO0VBSmpEO0FBQ0E7QUFDQTtFQUZBLE9BR0NDLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQyxVQUtuRkMsS0FBSyxFQUFFLFVBR1BDLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBc0IsQ0FBQyxDQUFDLFVBRzVDRCxXQUFXLENBQUM7SUFBRUMsSUFBSSxFQUFFLHVCQUF1QjtJQUFFQyxRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsVUFHOURGLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUUsMEJBQTBCO0lBQUVDLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxVQUdqRUYsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUF5QixDQUFDLENBQUM7SUFBQTtJQUFBO01BQUE7TUFBQTtRQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBLEVBaEJTRSxRQUFRO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7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
242
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSdW50aW1lQnVpbGRpbmdCbG9ja0ZyYWdtZW50IiwiZGVmaW5lVUk1Q2xhc3MiLCJldmVudCIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiRnJhZ21lbnQiLCJSVU5USU1FX0JMT0NLUyIsInN0b3JlUnVudGltZUJsb2NrIiwiQnVpbGRpbmdCbG9ja0NsYXNzIiwibWV0YWRhdGEiLCJuYW1lc3BhY2UiLCJwdWJsaWNOYW1lc3BhY2UiLCJuYW1lIiwicmVnaXN0ZXJUeXBlIiwibG9hZCIsIm1TZXR0aW5ncyIsImJ1aWxkaW5nQmxvY2tEZXRhaWwiLCJmcmFnbWVudE5hbWUiLCJlIiwibG9hZEVycm9yTWVzc2FnZSIsImluaXQiLCJMYWJlbCIsInRleHQiLCJmcmFnbWVudENvbnRlbnQiLCJ1bmRlZmluZWQiLCJFcnJvciIsImNsYXNzU2V0dGluZ3MiLCJmZUN1c3RvbURhdGEiLCJjdXN0b21EYXRhIiwibVByb3BlcnRpZXMiLCJ2YWx1ZSIsImZ1bmN0aW9uSG9sZGVyIiwiY29udGFpbmluZ1ZpZXciLCJnZXRDb250cm9sbGVyIiwiZ2V0VmlldyIsInBhZ2VDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsImFwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwicGFnZU1vZGVsIiwiZ2V0TW9kZWwiLCJmdW5jdGlvblN0cmluZ0luT3JkZXIiLCJzcGxpdCIsInByb3BlcnRpZXNBc3NpZ25lZFRvRnVuY3Rpb24iLCJwcm9wZXJ0eU5hbWUiLCJwcm9wZXJ0aWVzIiwicHJvcGVydHlNZXRhZGF0YSIsInBhZ2VNb2RlbENvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImJpbmRhYmxlIiwiTnVtYmVyIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJmdW5jdGlvbkluZGV4IiwiaW5kZXhPZiIsImZ1bmN0aW9uU3RyaW5nIiwidGFyZ2V0RnVuY3Rpb24iLCJmaW5kIiwiZnVuY3Rpb25EZWYiLCJfc2FwdWlfaGFuZGxlck5hbWUiLCJsZW5ndGgiLCJiaW5kIiwiZ2V0T2JqZWN0IiwiTWFuYWdlZE9iamVjdCIsInJ1bldpdGhQcmVwcm9jZXNzb3JzIiwicmVuZGVyZWRDb250cm9sIiwianN4Iiwid2l0aENvbnRleHQiLCJ2aWV3IiwidGVtcGxhdGVQcm9jZXNzaW5nU2V0dGluZ3MiLCJtb2RlbHMiLCJjb252ZXJ0ZXJDb250ZXh0IiwiSlNPTk1vZGVsIiwiaXNSdW50aW1lSW5zdGFudGlhdGlvbiIsImJ1aWxkaW5nQmxvY2tJbnN0YW5jZSIsImluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzIiwiZnJhZ21lbnRYTUwiLCJkZXBlbmRlbnRzIiwiZGVwZW5kZW50IiwiYWRkRGVwZW5kZW50IiwiY3VzdG9tRGF0YUhvbGRlciIsImFkZEN1c3RvbURhdGEiLCJsYXlvdXREYXRhIiwic2V0QWdncmVnYXRpb24iLCJnZXRDb250ZW50IiwiX2JBc3luYyIsIl9hQ29udGVudCIsImlkIiwic0lkIiwiY3JlYXRlSWQiLCJzZXR0aW5ncyIsImNvbnRyb2xTZXR0aW5ncyIsImFsbEFzc29jaWF0aW9ucyIsImdldE1ldGFkYXRhIiwiZ2V0QWxsQXNzb2NpYXRpb25zIiwiYXNzb2NpYXRpb25EZXRhaWxOYW1lIiwiT2JqZWN0Iiwia2V5cyIsImFzc29jaWF0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImFzc29jaWF0aW9uIiwic2luZ2xlQXNzb2NpYXRpb25WYWx1ZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUnVudGltZUJ1aWxkaW5nQmxvY2tGcmFnbWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBFeHRlbnNpb25BUEkgZnJvbSBcInNhcC9mZS9jb3JlL0V4dGVuc2lvbkFQSVwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IHR5cGUgUnVudGltZUJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvUnVudGltZUJ1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCB7IGluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0hvb2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyByZXNvbHZlQmluZGluZ1N0cmluZyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFVJNUFzc29jaWF0aW9uTWV0YWRhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgZXZlbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBqc3ggZnJvbSBcInNhcC9mZS9jb3JlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IExhYmVsIGZyb20gXCJzYXAvbS9MYWJlbFwiO1xuaW1wb3J0IE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEZyYWdtZW50IGZyb20gXCJzYXAvdWkvY29yZS9GcmFnbWVudFwiO1xuaW1wb3J0IHR5cGUgTGF5b3V0RGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvTGF5b3V0RGF0YVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBNYW5hZ2VkT2JqZWN0RXggfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG4vKipcbiAqIEludGVybmFsIGV4dGVuc2lvbiB0byB0aGUgRnJhZ21lbnQgY2xhc3MgaW4gb3JkZXIgdG8gYWRkIHNvbWUgcGxhY2UgdG8gaG9sZCBmdW5jdGlvbnMgZm9yIHJ1bnRpbWUgYnVpbGRpbmcgYmxvY2tzXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLnRlbXBsYXRpbmcuUnVudGltZUJ1aWxkaW5nQmxvY2tGcmFnbWVudFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnVudGltZUJ1aWxkaW5nQmxvY2tGcmFnbWVudCBleHRlbmRzIEZyYWdtZW50IHtcblx0Lypcblx0ICogRXZlbnQgdG8gaG9sZCBhbmQgcmVzb2x2ZSBmdW5jdGlvbnMgZm9yIHJ1bnRpbWUgYnVpbGRpbmcgYmxvY2tzXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRmdW5jdGlvbkhvbGRlciE6IEZ1bmN0aW9uO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiIH0pXG5cdGZyYWdtZW50WE1MPzogQ29udHJvbDtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xbXVwiLCBtdWx0aXBsZTogdHJ1ZSB9KVxuXHRkZXBlbmRlbnRzITogQ29udHJvbFtdO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ3VzdG9tRGF0YVtdXCIsIG11bHRpcGxlOiB0cnVlIH0pXG5cdGN1c3RvbURhdGFIb2xkZXIhOiBDdXN0b21EYXRhW107XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5MYXlvdXREYXRhXCIgfSlcblx0bGF5b3V0RGF0YSE6IExheW91dERhdGE7XG59XG5cbnR5cGUgRnJhZ21lbnRDdXN0b21EYXRhID0ge1xuXHRtUHJvcGVydGllczoge1xuXHRcdHZhbHVlOiB7XG5cdFx0XHRcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLnRlbXBsYXRpbmdcIj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cdFx0fTtcblx0fTtcbn07XG5cbmV4cG9ydCB0eXBlIFJ1bnRpbWVCdWlsZGluZ0Jsb2NrRnJhZ21lbnRTZXR0aW5ncyA9IHtcblx0ZnJhZ21lbnROYW1lOiBzdHJpbmc7XG5cdGZyYWdtZW50Q29udGVudD86IHR5cGVvZiBSdW50aW1lQnVpbGRpbmdCbG9jaztcblx0Y29udGFpbmluZ1ZpZXc6IFZpZXc7XG5cdGN1c3RvbURhdGE/OiBGcmFnbWVudEN1c3RvbURhdGFbXTtcblx0ZGVwZW5kZW50cz86IFVJNUVsZW1lbnRbXTtcblx0Y3VzdG9tRGF0YUhvbGRlcj86IEN1c3RvbURhdGFbXTtcblx0bGF5b3V0RGF0YT86IExheW91dERhdGE7XG5cdGZyYWdtZW50WE1MPzogQ29udHJvbDtcblx0ZnVuY3Rpb25Ib2xkZXI/OiBGdW5jdGlvbldpdGhIYW5kbGVyW11bXTtcblx0bG9hZEVycm9yTWVzc2FnZT86IHN0cmluZztcbn07XG5cbnR5cGUgRnVuY3Rpb25XaXRoSGFuZGxlciA9IEZ1bmN0aW9uICYge1xuXHRfc2FwdWlfaGFuZGxlck5hbWU/OiBzdHJpbmc7XG59O1xudHlwZSBGcmFnbWVudFdpdGhJbnRlcm5hbHMgPSB7XG5cdF9iQXN5bmM6IGJvb2xlYW47XG5cdF9hQ29udGVudDogQ29udHJvbCB8IENvbnRyb2xbXTtcbn07XG5cbmNvbnN0IFJVTlRJTUVfQkxPQ0tTOiBSZWNvcmQ8c3RyaW5nLCB0eXBlb2YgUnVudGltZUJ1aWxkaW5nQmxvY2s+ID0ge307XG4vKipcbiAqIFN0b3JlcyB0aGUgY2xhc3Mgb2YgYSBydW50aW1lIGJ1aWxkaW5nIGJsb2NrIHRvIGJlIGxvYWRlZCB3aGVuZXZlciB0aGUgYnVpbGRpbmcgYmxvY2sgaXMgdXNlZCBhdCBydW50aW1lLlxuICpcbiAqIEBwYXJhbSBCdWlsZGluZ0Jsb2NrQ2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0b3JlUnVudGltZUJsb2NrKEJ1aWxkaW5nQmxvY2tDbGFzczogdHlwZW9mIFJ1bnRpbWVCdWlsZGluZ0Jsb2NrKTogdm9pZCB7XG5cdFJVTlRJTUVfQkxPQ0tTW1xuXHRcdGAke0J1aWxkaW5nQmxvY2tDbGFzcy5tZXRhZGF0YS5uYW1lc3BhY2UgPz8gQnVpbGRpbmdCbG9ja0NsYXNzLm1ldGFkYXRhLnB1YmxpY05hbWVzcGFjZX0uJHtCdWlsZGluZ0Jsb2NrQ2xhc3MubWV0YWRhdGEubmFtZX1gXG5cdF0gPSBCdWlsZGluZ0Jsb2NrQ2xhc3M7XG59XG5cblJ1bnRpbWVCdWlsZGluZ0Jsb2NrRnJhZ21lbnQucmVnaXN0ZXJUeXBlKFwiRkVfQ09NUE9ORU5UU1wiLCB7XG5cdGxvYWQ6IGFzeW5jIGZ1bmN0aW9uIChtU2V0dGluZ3M6IFJ1bnRpbWVCdWlsZGluZ0Jsb2NrRnJhZ21lbnRTZXR0aW5ncykge1xuXHRcdGxldCBidWlsZGluZ0Jsb2NrRGV0YWlsO1xuXHRcdHRyeSB7XG5cdFx0XHRidWlsZGluZ0Jsb2NrRGV0YWlsID0gYXdhaXQgUlVOVElNRV9CTE9DS1NbbVNldHRpbmdzLmZyYWdtZW50TmFtZV0ubG9hZCgpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdG1TZXR0aW5ncy5sb2FkRXJyb3JNZXNzYWdlID0gZSBhcyBzdHJpbmc7XG5cdFx0fVxuXHRcdHJldHVybiBidWlsZGluZ0Jsb2NrRGV0YWlsO1xuXHR9LFxuXHRpbml0OiBmdW5jdGlvbiAodGhpczogRnJhZ21lbnRXaXRoSW50ZXJuYWxzLCBtU2V0dGluZ3M6IFJ1bnRpbWVCdWlsZGluZ0Jsb2NrRnJhZ21lbnRTZXR0aW5ncykge1xuXHRcdC8vIEluIGNhc2UgdGhlcmUgd2FzIGFuIGVycm9yIGR1cmluZyB0aGUgbG9hZCBwcm9jZXNzLCBleGl0IGVhcmx5XG5cdFx0aWYgKG1TZXR0aW5ncy5sb2FkRXJyb3JNZXNzYWdlKSB7XG5cdFx0XHRyZXR1cm4gbmV3IExhYmVsKHsgdGV4dDogbVNldHRpbmdzLmxvYWRFcnJvck1lc3NhZ2UgfSk7XG5cdFx0fVxuXHRcdGxldCBCdWlsZGluZ0Jsb2NrQ2xhc3MgPSBtU2V0dGluZ3MuZnJhZ21lbnRDb250ZW50O1xuXHRcdGlmIChCdWlsZGluZ0Jsb2NrQ2xhc3MgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Ly8gSW4gc29tZSBjYXNlIHdlIG1pZ2h0IGhhdmUgYmVlbiBjYWxsZWQgaGVyZSBzeW5jaHJvbm91c2x5ICh1bnN0YXNoIGNhc2UgZm9yIGluc3RhbmNlKSwgd2hpY2ggbWVhbnMgd2UgZGlkbid0IGdvIHRocm91Z2ggdGhlIGxvYWQgZnVuY3Rpb25cblx0XHRcdEJ1aWxkaW5nQmxvY2tDbGFzcyA9IFJVTlRJTUVfQkxPQ0tTW21TZXR0aW5ncy5mcmFnbWVudE5hbWVdO1xuXHRcdH1cblx0XHRpZiAoQnVpbGRpbmdCbG9ja0NsYXNzID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTm8gYnVpbGRpbmcgYmxvY2sgY2xhc3MgZm9yIHJ1bnRpbWUgYnVpbGRpbmcgYmxvY2sgJHttU2V0dGluZ3MuZnJhZ21lbnROYW1lfSBmb3VuZGApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNsYXNzU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0Y29uc3QgZmVDdXN0b21EYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID1cblx0XHRcdG1TZXR0aW5ncy5jdXN0b21EYXRhPy5bMF0/Lm1Qcm9wZXJ0aWVzPy52YWx1ZT8uW1wic2FwLmZlLmNvcmUuYnVpbGRpbmdCbG9ja3MudGVtcGxhdGluZ1wiXSB8fCB7fTtcblx0XHRkZWxldGUgbVNldHRpbmdzLmN1c3RvbURhdGE7XG5cdFx0Y29uc3QgZnVuY3Rpb25Ib2xkZXI6IEZ1bmN0aW9uV2l0aEhhbmRsZXJbXVtdID0gbVNldHRpbmdzLmZ1bmN0aW9uSG9sZGVyID8/IFtdO1xuXHRcdGRlbGV0ZSBtU2V0dGluZ3MuZnVuY3Rpb25Ib2xkZXI7XG5cblx0XHQvLyBjb250YWluaW5nVmlldyBjYW4gYWxzbyBiZSBhIGZyYWdtZW50LCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgY29udHJvbGxlciAod2hpY2ggY291bGQgYWxzbyBiZSBhbiBFeHRlbnNpb25BUEkpIGdldCB0aGUgYWN0dWFsIHZpZXdcblx0XHRjb25zdCBjb250YWluaW5nVmlldyA9XG5cdFx0XHRtU2V0dGluZ3MuY29udGFpbmluZ1ZpZXcuZ2V0Q29udHJvbGxlcj8uKCk/LmdldFZpZXc/LigpID8/XG5cdFx0XHQobVNldHRpbmdzLmNvbnRhaW5pbmdWaWV3LmdldENvbnRyb2xsZXI/LigpIGFzIHVua25vd24gYXMgRXh0ZW5zaW9uQVBJKT8uW1wiX3ZpZXdcIl0gPz9cblx0XHRcdG1TZXR0aW5ncy5jb250YWluaW5nVmlldztcblx0XHRjb25zdCBwYWdlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRhaW5pbmdWaWV3KSBhcyBUZW1wbGF0ZUNvbXBvbmVudDtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQoY29udGFpbmluZ1ZpZXcpO1xuXG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gYXBwQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHBhZ2VNb2RlbCA9IHBhZ2VDb21wb25lbnQuZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpO1xuXG5cdFx0Y29uc3QgZnVuY3Rpb25TdHJpbmdJbk9yZGVyOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCA9IGZlQ3VzdG9tRGF0YS5mdW5jdGlvblN0cmluZ0luT3JkZXI/LnNwbGl0KFwiLFwiKTtcblx0XHRjb25zdCBwcm9wZXJ0aWVzQXNzaWduZWRUb0Z1bmN0aW9uOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCA9IGZlQ3VzdG9tRGF0YS5wcm9wZXJ0aWVzQXNzaWduZWRUb0Z1bmN0aW9uPy5zcGxpdChcIixcIikgPz8gW107XG5cdFx0Zm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gQnVpbGRpbmdCbG9ja0NsYXNzLm1ldGFkYXRhLnByb3BlcnRpZXMpIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5TWV0YWRhdGEgPSBCdWlsZGluZ0Jsb2NrQ2xhc3MubWV0YWRhdGEucHJvcGVydGllc1twcm9wZXJ0eU5hbWVdO1xuXHRcdFx0Y29uc3QgcGFnZU1vZGVsQ29udGV4dCA9IHBhZ2VNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChmZUN1c3RvbURhdGFbcHJvcGVydHlOYW1lXSk7XG5cblx0XHRcdGlmIChwYWdlTW9kZWxDb250ZXh0ID09PSBudWxsKSB7XG5cdFx0XHRcdC8vIHZhbHVlIGNhbm5vdCBiZSByZXNvbHZlZCwgc28gaXQgaXMgZWl0aGVyIGEgcnVudGltZSBiaW5kaW5nIG9yIGEgY29uc3RhbnRcblx0XHRcdFx0bGV0IHZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyIHwgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI+IHwgdW5kZWZpbmVkID1cblx0XHRcdFx0XHRmZUN1c3RvbURhdGFbcHJvcGVydHlOYW1lXTtcblxuXHRcdFx0XHRpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0aWYgKHByb3BlcnR5TWV0YWRhdGEuYmluZGFibGUgIT09IHRydWUpIHtcblx0XHRcdFx0XHRcdC8vIHJ1bnRpbWUgYmluZGluZ3MgYXJlIG5vdCBhbGxvd2VkLCBzbyBjb252ZXJ0IHN0cmluZ3MgaW50byBhY3R1YWwgcHJpbWl0aXZlIHR5cGVzXG5cdFx0XHRcdFx0XHRzd2l0Y2ggKHByb3BlcnR5TWV0YWRhdGEudHlwZSkge1xuXHRcdFx0XHRcdFx0XHRjYXNlIFwiYm9vbGVhblwiOlxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlID0gdmFsdWUgPT09IFwidHJ1ZVwiO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIFwibnVtYmVyXCI6XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBydW50aW1lIGJpbmRpbmdzIGFyZSBhbGxvd2VkLCBzbyByZXNvbHZlIHRoZSB2YWx1ZXMgYXMgQmluZGluZ1Rvb2xraXQgZXhwcmVzc2lvbnNcblx0XHRcdFx0XHRcdHZhbHVlID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmcodmFsdWUsIHByb3BlcnR5TWV0YWRhdGEudHlwZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHByb3BlcnR5TWV0YWRhdGEudHlwZSA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgZnVuY3Rpb25JbmRleCA9IHByb3BlcnRpZXNBc3NpZ25lZFRvRnVuY3Rpb24uaW5kZXhPZihwcm9wZXJ0eU5hbWUpO1xuXHRcdFx0XHRcdGlmIChmdW5jdGlvbkluZGV4ID4gLTEpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGZ1bmN0aW9uU3RyaW5nID0gZnVuY3Rpb25TdHJpbmdJbk9yZGVyW2Z1bmN0aW9uSW5kZXhdO1xuXHRcdFx0XHRcdFx0Y29uc3QgdGFyZ2V0RnVuY3Rpb24gPSBmdW5jdGlvbkhvbGRlcj8uZmluZCgoZnVuY3Rpb25EZWYpID0+IGZ1bmN0aW9uRGVmWzBdPy5fc2FwdWlfaGFuZGxlck5hbWUgPT09IGZ1bmN0aW9uU3RyaW5nKTtcblx0XHRcdFx0XHRcdC8vIFdlIHVzZSB0aGUgX3NhcHVpX2hhbmRsZXJOYW1lIHRvIGlkZW50aWZ5IHdoaWNoIGZ1bmN0aW9uIGlzIHRoZSBvbmUgd2Ugd2FudCB0byBiaW5kIGhlcmVcblx0XHRcdFx0XHRcdGlmICh0YXJnZXRGdW5jdGlvbiAmJiB0YXJnZXRGdW5jdGlvbi5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0XHRcdHZhbHVlID0gdGFyZ2V0RnVuY3Rpb25bMF0uYmluZCh0YXJnZXRGdW5jdGlvblsxXSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2xhc3NTZXR0aW5nc1twcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKHBhZ2VNb2RlbENvbnRleHQuZ2V0T2JqZWN0KCkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHQvLyBnZXQgdmFsdWUgZnJvbSBwYWdlIG1vZGVsXG5cdFx0XHRcdGNsYXNzU2V0dGluZ3NbcHJvcGVydHlOYW1lXSA9IHBhZ2VNb2RlbENvbnRleHQuZ2V0T2JqZWN0KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBiaW5kIHRvIG1ldGFtb2RlbFxuXHRcdFx0XHRjbGFzc1NldHRpbmdzW3Byb3BlcnR5TmFtZV0gPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoZmVDdXN0b21EYXRhW3Byb3BlcnR5TmFtZV0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiAoTWFuYWdlZE9iamVjdCBhcyBNYW5hZ2VkT2JqZWN0RXgpLnJ1bldpdGhQcmVwcm9jZXNzb3JzKFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRjb25zdCByZW5kZXJlZENvbnRyb2wgPSBqc3gud2l0aENvbnRleHQoeyB2aWV3OiBjb250YWluaW5nVmlldywgYXBwQ29tcG9uZW50OiBhcHBDb21wb25lbnQgfSwgKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHRlbXBsYXRlUHJvY2Vzc2luZ1NldHRpbmdzID0ge1xuXHRcdFx0XHRcdFx0bW9kZWxzOiB7XG5cdFx0XHRcdFx0XHRcdFwic2FwLmZlLmkxOG5cIjogY29udGFpbmluZ1ZpZXcuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSBhcyBSZXNvdXJjZU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiAoY29udGFpbmluZ1ZpZXcuZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpID8/IG5ldyBKU09OTW9kZWwoKSkgYXMgSlNPTk1vZGVsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiBhcHBDb21wb25lbnQsXG5cdFx0XHRcdFx0XHRpc1J1bnRpbWVJbnN0YW50aWF0aW9uOiB0cnVlXG5cdFx0XHRcdFx0fSBhcyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzO1xuXG5cdFx0XHRcdFx0Y29uc3QgYnVpbGRpbmdCbG9ja0luc3RhbmNlID0gbmV3IEJ1aWxkaW5nQmxvY2tDbGFzcyEoY2xhc3NTZXR0aW5ncywge30sIHRlbXBsYXRlUHJvY2Vzc2luZ1NldHRpbmdzKTtcblx0XHRcdFx0XHRpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyhidWlsZGluZ0Jsb2NrSW5zdGFuY2UsIGNvbnRhaW5pbmdWaWV3LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcik7XG5cdFx0XHRcdFx0aWYgKG1TZXR0aW5ncy5mcmFnbWVudFhNTCkge1xuXHRcdFx0XHRcdFx0aWYgKG1TZXR0aW5ncy5kZXBlbmRlbnRzKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgZGVwZW5kZW50IG9mIG1TZXR0aW5ncy5kZXBlbmRlbnRzKSB7XG5cdFx0XHRcdFx0XHRcdFx0bVNldHRpbmdzLmZyYWdtZW50WE1MLmFkZERlcGVuZGVudChkZXBlbmRlbnQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSBtU2V0dGluZ3MuZGVwZW5kZW50cztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChtU2V0dGluZ3MuY3VzdG9tRGF0YUhvbGRlcikge1xuXHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGN1c3RvbURhdGFIb2xkZXIgb2YgbVNldHRpbmdzLmN1c3RvbURhdGFIb2xkZXIpIHtcblx0XHRcdFx0XHRcdFx0XHRtU2V0dGluZ3MuZnJhZ21lbnRYTUwuYWRkQ3VzdG9tRGF0YShjdXN0b21EYXRhSG9sZGVyKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRkZWxldGUgbVNldHRpbmdzLmN1c3RvbURhdGFIb2xkZXI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAobVNldHRpbmdzLmxheW91dERhdGEpIHtcblx0XHRcdFx0XHRcdFx0bVNldHRpbmdzLmZyYWdtZW50WE1MLnNldEFnZ3JlZ2F0aW9uKFwibGF5b3V0RGF0YVwiLCBtU2V0dGluZ3MubGF5b3V0RGF0YSk7XG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSBtU2V0dGluZ3MubGF5b3V0RGF0YTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gYnVpbGRpbmdCbG9ja0luc3RhbmNlLmdldENvbnRlbnQ/Lihjb250YWluaW5nVmlldywgYXBwQ29tcG9uZW50LCBtU2V0dGluZ3MuZnJhZ21lbnRYTUwpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKCF0aGlzLl9iQXN5bmMpIHtcblx0XHRcdFx0XHR0aGlzLl9hQ29udGVudCA9IHJlbmRlcmVkQ29udHJvbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gcmVuZGVyZWRDb250cm9sO1xuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0aWQ6IGZ1bmN0aW9uIChzSWQ6IHN0cmluZykge1xuXHRcdFx0XHRcdHJldHVybiBtU2V0dGluZ3MuY29udGFpbmluZ1ZpZXcuY3JlYXRlSWQoc0lkKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0c2V0dGluZ3M6IGZ1bmN0aW9uIChjb250cm9sU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IE1hbmFnZWRPYmplY3QgfCAoc3RyaW5nIHwgTWFuYWdlZE9iamVjdClbXT4pIHtcblx0XHRcdFx0XHRjb25zdCBhbGxBc3NvY2lhdGlvbnMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsQXNzb2NpYXRpb25zKCk7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBhc3NvY2lhdGlvbkRldGFpbE5hbWUgb2YgT2JqZWN0LmtleXMoYWxsQXNzb2NpYXRpb25zKSkge1xuXHRcdFx0XHRcdFx0aWYgKGNvbnRyb2xTZXR0aW5nc1thc3NvY2lhdGlvbkRldGFpbE5hbWVdICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0aWYgKChhbGxBc3NvY2lhdGlvbnNbYXNzb2NpYXRpb25EZXRhaWxOYW1lXSBhcyBVSTVBc3NvY2lhdGlvbk1ldGFkYXRhKS5tdWx0aXBsZSkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIE11bHRpcGxlIGFzc29jaWF0aW9uXG5cdFx0XHRcdFx0XHRcdFx0Ly8gVGhlIGFzc29jaWF0ZWQgZWxlbWVudHMgYXJlIGluZGljYXRlZCB2aWEgbG9jYWwgSURzOyB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgcmVmZXJlbmNlcyB0byBnbG9iYWwgb25lc1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGFzc29jaWF0aW9ucyA9IChcblx0XHRcdFx0XHRcdFx0XHRcdEFycmF5LmlzQXJyYXkoY29udHJvbFNldHRpbmdzW2Fzc29jaWF0aW9uRGV0YWlsTmFtZV0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gY29udHJvbFNldHRpbmdzW2Fzc29jaWF0aW9uRGV0YWlsTmFtZV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0OiBbY29udHJvbFNldHRpbmdzW2Fzc29jaWF0aW9uRGV0YWlsTmFtZV1dXG5cdFx0XHRcdFx0XHRcdFx0KSBhcyAoc3RyaW5nIHwgTWFuYWdlZE9iamVjdClbXTtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIENyZWF0ZSBnbG9iYWwgSURzIGZvciBhc3NvY2lhdGlvbnMgZ2l2ZW4gYXMgc3RyaW5ncywgbm90IGZvciBhbHJlYWR5IHJlc29sdmVkIE1hbmFnZWRPYmplY3RzXG5cdFx0XHRcdFx0XHRcdFx0Y29udHJvbFNldHRpbmdzW2Fzc29jaWF0aW9uRGV0YWlsTmFtZV0gPSBhc3NvY2lhdGlvbnMubWFwKChhc3NvY2lhdGlvbjogc3RyaW5nIHwgTWFuYWdlZE9iamVjdCkgPT5cblx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBhc3NvY2lhdGlvbiA9PT0gXCJzdHJpbmdcIiA/IG1TZXR0aW5ncy5jb250YWluaW5nVmlldy5jcmVhdGVJZChhc3NvY2lhdGlvbikgOiBhc3NvY2lhdGlvblxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gU2luZ2xlIGFzc29jaWF0aW9uXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc2luZ2xlQXNzb2NpYXRpb25WYWx1ZSA9IGNvbnRyb2xTZXR0aW5nc1thc3NvY2lhdGlvbkRldGFpbE5hbWVdO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnRyb2xTZXR0aW5nc1thc3NvY2lhdGlvbkRldGFpbE5hbWVdID1cblx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBzaW5nbGVBc3NvY2lhdGlvblZhbHVlID09PSBcInN0cmluZ1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gbVNldHRpbmdzLmNvbnRhaW5pbmdWaWV3LmNyZWF0ZUlkKHNpbmdsZUFzc29jaWF0aW9uVmFsdWUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogc2luZ2xlQXNzb2NpYXRpb25WYWx1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gY29udHJvbFNldHRpbmdzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0KTtcblx0fVxufSk7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O01BNEJxQkEsNEJBQTRCO0VBSmpEO0FBQ0E7QUFDQTtFQUZBLE9BR0NDLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQyxVQUtuRkMsS0FBSyxFQUFFLFVBR1BDLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBc0IsQ0FBQyxDQUFDLFVBRzVDRCxXQUFXLENBQUM7SUFBRUMsSUFBSSxFQUFFLHVCQUF1QjtJQUFFQyxRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsVUFHOURGLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUUsMEJBQTBCO0lBQUVDLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxVQUdqRUYsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUF5QixDQUFDLENBQUM7SUFBQTtJQUFBO01BQUE7TUFBQTtRQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBLEVBaEJTRSxRQUFRO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7RUFBQTtFQWlEbEUsTUFBTUMsY0FBMkQsR0FBRyxDQUFDLENBQUM7RUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNDLGlCQUFpQixDQUFDQyxrQkFBK0MsRUFBUTtJQUN4RkYsY0FBYyxDQUNaLEdBQUVFLGtC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
@@ -8,6 +8,7 @@ import type RuntimeBuildingBlock from "sap/fe/core/buildingBlocks/templating/Run
8
8
  import { initControllerExtensionHookHandlers } from "sap/fe/core/controllerextensions/HookSupport";
9
9
  import type { BindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
10
10
  import { resolveBindingString } from "sap/fe/core/helpers/BindingToolkit";
11
+ import type { UI5AssociationMetadata } from "sap/fe/core/helpers/ClassSupport";
11
12
  import { aggregation, defineUI5Class, event } from "sap/fe/core/helpers/ClassSupport";
12
13
  import jsx from "sap/fe/core/jsx-runtime/jsx";
13
14
  import Label from "sap/m/Label";
@@ -21,7 +22,6 @@ import type LayoutData from "sap/ui/core/LayoutData";
21
22
  import type View from "sap/ui/core/mvc/View";
22
23
  import JSONModel from "sap/ui/model/json/JSONModel";
23
24
  import type { ManagedObjectEx } from "types/extension_types";
24
-
25
25
  /**
26
26
  * Internal extension to the Fragment class in order to add some place to hold functions for runtime building blocks
27
27
  */
@@ -219,23 +219,33 @@ RuntimeBuildingBlockFragment.registerType("FE_COMPONENTS", {
219
219
  },
220
220
  {
221
221
  id: function (sId: string) {
222
- return containingView.createId(sId);
222
+ return mSettings.containingView.createId(sId);
223
223
  },
224
224
  settings: function (controlSettings: Record<string, string | ManagedObject | (string | ManagedObject)[]>) {
225
- const allAssociations = this.getMetadata().getAssociations();
225
+ const allAssociations = this.getMetadata().getAllAssociations();
226
226
  for (const associationDetailName of Object.keys(allAssociations)) {
227
227
  if (controlSettings[associationDetailName] !== undefined) {
228
- // The associated elements are indicated via local IDs; we need to change the references to global ones
229
- const associations = (
230
- Array.isArray(controlSettings[associationDetailName])
231
- ? controlSettings[associationDetailName]
232
- : [controlSettings[associationDetailName]]
233
- ) as (string | ManagedObject)[];
234
-
235
- // Create global IDs for associations given as strings, not for already resolved ManagedObjects
236
- controlSettings[associationDetailName] = associations.map((association: string | ManagedObject) =>
237
- typeof association === "string" ? mSettings.containingView.createId(association) : association
238
- );
228
+ if ((allAssociations[associationDetailName] as UI5AssociationMetadata).multiple) {
229
+ // Multiple association
230
+ // The associated elements are indicated via local IDs; we need to change the references to global ones
231
+ const associations = (
232
+ Array.isArray(controlSettings[associationDetailName])
233
+ ? controlSettings[associationDetailName]
234
+ : [controlSettings[associationDetailName]]
235
+ ) as (string | ManagedObject)[];
236
+
237
+ // Create global IDs for associations given as strings, not for already resolved ManagedObjects
238
+ controlSettings[associationDetailName] = associations.map((association: string | ManagedObject) =>
239
+ typeof association === "string" ? mSettings.containingView.createId(association) : association
240
+ );
241
+ } else {
242
+ // Single association
243
+ const singleAssociationValue = controlSettings[associationDetailName];
244
+ controlSettings[associationDetailName] =
245
+ typeof singleAssociationValue === "string"
246
+ ? mSettings.containingView.createId(singleAssociationValue)
247
+ : singleAssociationValue;
248
+ }
239
249
  }
240
250
  }
241
251
  return controlSettings;