@sapui5/sap.fe.controls 1.136.5 → 1.136.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 +1 -1
- package/src/sap/fe/controls/.library +1 -1
- package/src/sap/fe/controls/library.js +1 -1
- package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.js +38 -2
- package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.tsx +37 -1
- package/src/sap/fe/controls/shortcuts/popup/ShortcutTool.js +8 -1
- package/src/sap/fe/controls/shortcuts/popup/ShortcutTool.tsx +5 -0
package/package.json
CHANGED
|
@@ -22,7 +22,7 @@ sap.ui.define(["sap/fe/base/library", "sap/fe/controls/shortcuts/ShortcutExplana
|
|
|
22
22
|
controls: [],
|
|
23
23
|
elements: [],
|
|
24
24
|
// eslint-disable-next-line no-template-curly-in-string
|
|
25
|
-
version: "1.136.
|
|
25
|
+
version: "1.136.7",
|
|
26
26
|
noLibraryCSS: false
|
|
27
27
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
28
|
});
|
|
@@ -35,7 +35,8 @@ sap.ui.define(["sap/base/Log", "sap/base/security/encodeURL", "sap/fe/base/Class
|
|
|
35
35
|
if (left + windowWidth > window.screen.availWidth) {
|
|
36
36
|
left = window.screen.availWidth - windowWidth;
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
let theme = Theming.getTheme();
|
|
39
|
+
theme = this._sanitizeTheme(theme);
|
|
39
40
|
const url = sap.ui.require.toUrl("sap/fe/controls/shortcuts/popup/index.html");
|
|
40
41
|
const localOrigin = window.location.protocol + "//" + window.location.host;
|
|
41
42
|
// We pass the theme and the origin to the popup so that it can communicate safely with the parent
|
|
@@ -72,6 +73,41 @@ sap.ui.define(["sap/base/Log", "sap/base/security/encodeURL", "sap/fe/base/Class
|
|
|
72
73
|
myWin.close();
|
|
73
74
|
};
|
|
74
75
|
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Sanitizes the theme name to ensure it starts with "sap-".
|
|
80
|
+
* If the theme does not start with "sap-", it tries to get the theme from the computed styles.
|
|
81
|
+
* If it still does not find a valid theme, it defaults to "sap_horizon".
|
|
82
|
+
* This is to ensure that the popup always uses a valid theme.
|
|
83
|
+
* @param theme The theme name to sanitize
|
|
84
|
+
* @returns The sanitized theme name
|
|
85
|
+
* @private
|
|
86
|
+
*/;
|
|
87
|
+
_proto._sanitizeTheme = function _sanitizeTheme(theme) {
|
|
88
|
+
if (!theme.startsWith("sap_")) {
|
|
89
|
+
try {
|
|
90
|
+
const computedStyles = getComputedStyle(document.documentElement);
|
|
91
|
+
theme = computedStyles.getPropertyValue("--sapSapThemeId");
|
|
92
|
+
if (!theme) {
|
|
93
|
+
const themeMetadata = computedStyles.getPropertyValue("--sapThemeMetaData-UI5-sap-ui-core");
|
|
94
|
+
if (themeMetadata) {
|
|
95
|
+
const themeMatch = JSON.parse(themeMetadata);
|
|
96
|
+
if (themeMatch && themeMatch.Extends && themeMatch.Extends.length > 0) {
|
|
97
|
+
theme = themeMatch.Extends[0];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
} catch (e) {
|
|
102
|
+
Log.info("Cannot get theme from computed styles", e instanceof Error ? e.message : String(e));
|
|
103
|
+
theme = "sap_horizon";
|
|
104
|
+
}
|
|
105
|
+
if (!theme || !theme.startsWith("sap_")) {
|
|
106
|
+
// Final fallback to sap_horizon
|
|
107
|
+
theme = "sap_horizon";
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return theme;
|
|
75
111
|
};
|
|
76
112
|
/**
|
|
77
113
|
* Creates or returns the instance of the ShortcutExplanationProvider.
|
|
@@ -134,4 +170,4 @@ sap.ui.define(["sap/base/Log", "sap/base/security/encodeURL", "sap/fe/base/Class
|
|
|
134
170
|
_exports = ShortcutExplanationProvider;
|
|
135
171
|
return _exports;
|
|
136
172
|
}, false);
|
|
137
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIiwiX01hbmFnZWRPYmplY3QiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9wb3B1cElkeCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRTaGVsbERpYWxvZ0NvbnRlbnQiLCJ3aW5kb3dXaWR0aCIsImxlZnQiLCJ3aW5kb3ciLCJzY3JlZW5MZWZ0Iiwib3V0ZXJXaWR0aCIsInNjcmVlbiIsImF2YWlsV2lkdGgiLCJ0aGVtZSIsIlRoZW1pbmciLCJnZXRUaGVtZSIsInVybCIsInNhcCIsInVpIiwicmVxdWlyZSIsInRvVXJsIiwibG9jYWxPcmlnaW4iLCJsb2NhdGlvbiIsInByb3RvY29sIiwiaG9zdCIsInBhcmFtcyIsImVuY29kZVVSTCIsIm15V2luIiwib3BlbiIsInNjcmVlblRvcCIsImhhbmRsZU1lc3NhZ2VSZWNlaXZlZCIsIm1lc3NhZ2VFdmVudCIsIm9yaWdpbiIsIm1lc3NhZ2VEYXRhIiwiZGF0YSIsInNlcnZpY2UiLCJtZXNzYWdlUG9ydCIsInBvcnRzIiwicG9zdE1lc3NhZ2UiLCJzdGFydHNXaXRoIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9wZW5lciIsImUiLCJMb2ciLCJkZWJ1ZyIsIkVycm9yIiwibWVzc2FnZSIsIlN0cmluZyIsInNldFRpbWVvdXQiLCJhZGRFdmVudExpc3RlbmVyIiwiaWQiLCJvbnVubG9hZCIsImNsb3NlIiwiZ2V0SW5zdGFuY2UiLCJzaGVsbENvbnRhaW5lciIsInJlc29sdmVDcmVhdGlvbiIsImluc3RhbmNlIiwiaW5zdGFuY2VQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJleHRlbnNpb25TZXJ2aWNlIiwiZ2V0U2VydmljZUFzeW5jIiwic2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJyZWdpc3RlclVzZXJBY3Rpb24iLCJlcnJvciIsInVuZGVmaW5lZCIsInNoZWxsRXh0ZW5zaW9uU2VydmljZSIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJzaGVsbEhpc3RvcnlEaWFsb2ciLCJpc0RpYWxvZ0FkZGVkIiwidXNlckFjdGlvbiIsImNyZWF0ZVVzZXJBY3Rpb24iLCJ0ZXh0IiwiZ2V0VGV4dCIsImljb24iLCJJY29uUG9vbCIsImdldEljb25VUkkiLCJwcmVzcyIsImNvbnRyb2xUeXBlIiwic2hvd0ZvckFsbEFwcHMiLCJlcnIiLCJNYW5hZ2VkT2JqZWN0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGVuY29kZVVSTCBmcm9tIFwic2FwL2Jhc2Uvc2VjdXJpdHkvZW5jb2RlVVJMXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgSWNvblBvb2wgZnJvbSBcInNhcC91aS9jb3JlL0ljb25Qb29sXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBUaGVtaW5nIGZyb20gXCJzYXAvdWkvY29yZS9UaGVtaW5nXCI7XG5pbXBvcnQgdHlwZSBDb250YWluZXIgZnJvbSBcInNhcC91c2hlbGwvQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBFeHRlbnNpb24gZnJvbSBcInNhcC91c2hlbGwvc2VydmljZXMvRXh0ZW5zaW9uXCI7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBkaWFsb2cgdG8gZXhwbGFpbiB0aGUgc2hvcnRjdXRzIHRvIHRoZSB1c2VyLlxuICogVGhpcyBkaWFsb2cgd2lsbCBiZSByZWdpc3RlcmVkIGluIHRoZSBzaGVsbCB1c2VyIG1lbnUgYW5kIHdpbGwgb3BlbiBhcyBhbiBpbmRlcGVuZGVudCB3aW5kb3cuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5zaG9ydGN1dHMuU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgZXh0ZW5kcyBNYW5hZ2VkT2JqZWN0IHtcblx0cHJpdmF0ZSBfcG9wdXBJZHggPSAwO1xuXG5cdGdldFNoZWxsRGlhbG9nQ29udGVudCgpOiB2b2lkIHtcblx0XHQvLyBQb3NpdGlvbiB0byB0b3AgcmlnaHQgb2YgdGhlIG1haW4gd2luZG93IGlmIHBvc3NpYmxlXG5cdFx0Y29uc3Qgd2luZG93V2lkdGggPSA2MjA7XG5cdFx0bGV0IGxlZnQgPSB3aW5kb3cuc2NyZWVuTGVmdCArIHdpbmRvdy5vdXRlcldpZHRoO1xuXHRcdGlmIChsZWZ0ICsgd2luZG93V2lkdGggPiB3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGgpIHtcblx0XHRcdGxlZnQgPSB3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGggLSB3aW5kb3dXaWR0aDtcblx0XHR9XG5cdFx0Y29uc3QgdGhlbWUgPSBUaGVtaW5nLmdldFRoZW1lKCk7XG5cdFx0Y29uc3QgdXJsID0gc2FwLnVpLnJlcXVpcmUudG9VcmwoXCJzYXAvZmUvY29udHJvbHMvc2hvcnRjdXRzL3BvcHVwL2luZGV4Lmh0bWxcIik7XG5cdFx0Y29uc3QgbG9jYWxPcmlnaW4gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcblx0XHQvLyBXZSBwYXNzIHRoZSB0aGVtZSBhbmQgdGhlIG9yaWdpbiB0byB0aGUgcG9wdXAgc28gdGhhdCBpdCBjYW4gY29tbXVuaWNhdGUgc2FmZWx5IHdpdGggdGhlIHBhcmVudFxuXHRcdGNvbnN0IHBhcmFtcyA9IFwiP3NhcC11aS14eC1zaG9ydGN1dC1vcmlnaW49XCIgKyBlbmNvZGVVUkwobG9jYWxPcmlnaW4pICsgXCImc2FwLXVpLXRoZW1lPVwiICsgdGhlbWU7XG5cdFx0Y29uc3QgbXlXaW4gPSB3aW5kb3cub3Blbihcblx0XHRcdHVybCArIHBhcmFtcyxcblx0XHRcdFwiX2JsYW5rXCIsXG5cdFx0XHRgcG9wdXAsdG9vbGJhcj1ubyxtZW51YmFyPW5vLHNjcm9sbGJhcnM9bm8sbG9jYXRpb249bm8sd2lkdGg9JHt3aW5kb3dXaWR0aH0saGVpZ2h0PTU1MCx0b3A9JHt3aW5kb3cuc2NyZWVuVG9wfSxsZWZ0PSR7bGVmdH1gXG5cdFx0KTtcblx0XHRpZiAobXlXaW4pIHtcblx0XHRcdGNvbnN0IGhhbmRsZU1lc3NhZ2VSZWNlaXZlZCA9IChtZXNzYWdlRXZlbnQ6IE1lc3NhZ2VFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAobG9jYWxPcmlnaW4gPT09IG1lc3NhZ2VFdmVudC5vcmlnaW4pIHtcblx0XHRcdFx0XHRjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2VFdmVudD8uZGF0YTtcblx0XHRcdFx0XHRpZiAobWVzc2FnZURhdGEuc2VydmljZSA9PT0gXCJzYXAudWkuaW50ZXJhY3Rpb24uTWVzc2FnZVBvcnRSZWFkeVwiKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBtZXNzYWdlUG9ydCA9IG1lc3NhZ2VFdmVudC5wb3J0c1swXTsgLy8gUmVtZW1iZXIgdGhlIHBvcnRcblx0XHRcdFx0XHRcdG15V2luLnBvc3RNZXNzYWdlKHsgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uTWVzc2FnZVBvcnRSZWFkeVwiIH0sIHVybC5zdGFydHNXaXRoKFwiL1wiKSA/IGxvY2FsT3JpZ2luIDogdXJsLCBbXG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VQb3J0XG5cdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVNZXNzYWdlUmVjZWl2ZWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG15V2luLm9wZW5lciA9IG51bGw7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdC8vIFRoaXMgbWlnaHQgZmFpbCB3aGVuIHRoZXJlIGlzIENPUlMgaW52b2x2ZWQgYW55d2F5IGFuZCB3ZSBjYW4ndCBhY2Nlc3MgdGhlIG9wZW5lciBhbnl3YXlcblx0XHRcdFx0TG9nLmRlYnVnKFwiQ2Fubm90IHNldCBvcGVuZXIgdG8gbnVsbFwiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0fVxuXG5cdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZU1lc3NhZ2VSZWNlaXZlZCk7XG5cdFx0XHRcdHdpbmRvdy5wb3N0TWVzc2FnZShcblx0XHRcdFx0XHR7IGlkOiBcInNhcC5mZS5pbnRlcmFjdGlvbi5Qb3B1cFwiICsgdGhpcy5fcG9wdXBJZHgrKywgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uUmVxdWVzdE1lc3NhZ2VQb3J0XCIgfSxcblx0XHRcdFx0XHRsb2NhbE9yaWdpblxuXHRcdFx0XHQpO1xuXHRcdFx0fSwgMTUwMCk7IC8vIGdpdmUgYSBiaXQgb2YgdGltZSBmb3IgdGhlIHBvcHVwIHRvIGJlIHJlYWR5XG5cdFx0XHQvLyBXZSBjYW4ndCByZWx5IG9uIHRoZSBvbmxvYWQgb2YgdGhlIHBvcHVwIGJlY2F1c2UgaXQgaXMgbm90IGFsd2F5cyBhdmFpbGJsZSBpbiBDT1JTIHNjZW5hcmlvc1xuXHRcdFx0d2luZG93Lm9udW5sb2FkID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuXHRcdFx0XHRteVdpbi5jbG9zZSgpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgaW5zdGFuY2VQcm9taXNlOiBQcm9taXNlPFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZD47XG5cblx0c3RhdGljIGluc3RhbmNlOiBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ7XG5cblx0c3RhdGljIGlzRGlhbG9nQWRkZWQgPSBmYWxzZTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBvciByZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiB0aGUgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyLlxuXHQgKiBUaGlzIGlzIGEgc2luZ2xldG9uIHRvIGVuc3VyZSB3ZSBvbmx5IGhhdmUgb25lIGluc3RhbmNlIG9mIHRoZSBkaWFsb2cuXG5cdCAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiB0aGUgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyXG5cdCAqL1xuXHRzdGF0aWMgYXN5bmMgZ2V0SW5zdGFuY2UoKTogUHJvbWlzZTxTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ+IHtcblx0XHQvLyBUZXN0IHRoZSBzaGVsbCBleGlzdGVuY2UgYW5kIHJlZ2lzdGVyIHRoZSBleHRlbnNpb25cblx0XHRjb25zdCBzaGVsbENvbnRhaW5lciA9IHNhcC51aS5yZXF1aXJlKFwic2FwL3VzaGVsbC9Db250YWluZXJcIikgYXMgQ29udGFpbmVyIHwgdW5kZWZpbmVkO1xuXHRcdGxldCByZXNvbHZlQ3JlYXRpb246IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoc2hlbGxDb250YWluZXIgJiYgIXRoaXMuaW5zdGFuY2UpIHtcblx0XHRcdFx0dGhpcy5pbnN0YW5jZVByb21pc2UgPSBuZXcgUHJvbWlzZTxTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ+KChyZXNvbHZlKSA9PiB7XG5cdFx0XHRcdFx0cmVzb2x2ZUNyZWF0aW9uID0gcmVzb2x2ZTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IGV4dGVuc2lvblNlcnZpY2UgPSAoYXdhaXQgc2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiRXh0ZW5zaW9uXCIpKSBhcyBFeHRlbnNpb24gfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChleHRlbnNpb25TZXJ2aWNlKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc2hlbGxIaXN0b3J5UHJvdmlkZXIgPSBhd2FpdCBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIucmVnaXN0ZXJVc2VyQWN0aW9uKGV4dGVuc2lvblNlcnZpY2UpO1xuXHRcdFx0XHRcdHRoaXMuaW5zdGFuY2UgPSBzaGVsbEhpc3RvcnlQcm92aWRlcjtcblx0XHRcdFx0XHRyZXNvbHZlQ3JlYXRpb24hKHNoZWxsSGlzdG9yeVByb3ZpZGVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCByZWdpc3RlciBleHRlbnNpb25cIiwgZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpKTtcblx0XHRcdHJlc29sdmVDcmVhdGlvbj8uKHVuZGVmaW5lZCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmluc3RhbmNlUHJvbWlzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIHRoZSB1c2VyIGFjdGlvbiB0byB0aGUgc2hlbGwsIHRoZSBhY3Rpb24gd2lsbCBvcGVuIHRoZSBkaWFsb2cgd2l0aCB0aGUgc2hvcnRjdXRzLlxuXHQgKiBAcGFyYW0gc2hlbGxFeHRlbnNpb25TZXJ2aWNlIFRoZSBleHRlbnNpb24gc2VydmljZSB0byBhZGQgdGhlIHVzZXIgYWN0aW9uIHRvIHRoZSBzaGVsbFxuXHQgKiBAcmV0dXJucyBUaGUgZGlhbG9nIHdpdGggdGhlIHNob3J0Y3V0c1xuXHQgKi9cblx0c3RhdGljIGFzeW5jIHJlZ2lzdGVyVXNlckFjdGlvbihzaGVsbEV4dGVuc2lvblNlcnZpY2U6IEV4dGVuc2lvbik6IFByb21pc2U8U2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIHwgdW5kZWZpbmVkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcblxuXHRcdFx0Y29uc3Qgc2hlbGxIaXN0b3J5RGlhbG9nID0gbmV3IFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlcigpO1xuXHRcdFx0aWYgKCF0aGlzLmlzRGlhbG9nQWRkZWQpIHtcblx0XHRcdFx0dGhpcy5pc0RpYWxvZ0FkZGVkID0gdHJ1ZTtcblx0XHRcdFx0Y29uc3QgdXNlckFjdGlvbiA9IGF3YWl0IHNoZWxsRXh0ZW5zaW9uU2VydmljZS5jcmVhdGVVc2VyQWN0aW9uKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGlkOiBcInNhcHVpNS5zaG9ydGN1dC5leHBsYW5hdGlvbi50cmlnZ2VyXCIsXG5cdFx0XHRcdFx0XHR0ZXh0OiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19TSE9SVENVVF9USVRMRVwiKSxcblx0XHRcdFx0XHRcdGljb246IEljb25Qb29sLmdldEljb25VUkkoXCJrZXlib2FyZC1hbmQtbW91c2VcIiksXG5cdFx0XHRcdFx0XHRwcmVzczogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRzaGVsbEhpc3RvcnlEaWFsb2cuZ2V0U2hlbGxEaWFsb2dDb250ZW50KCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRjb250cm9sVHlwZTogXCJzYXAubS5CdXR0b25cIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdFx0dXNlckFjdGlvbi5zaG93Rm9yQWxsQXBwcygpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHNoZWxsSGlzdG9yeURpYWxvZztcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCBhZGQgdXNlciBhY3Rpb25cIiwgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpKTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0VBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUpBLElBTXFCQSwyQkFBMkIsSUFBQUMsSUFBQSxHQUQvQ0MsY0FBYyxDQUFDLHVEQUF1RCxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSxJQUFBQyw0QkFBQSwwQkFBQUMsY0FBQTtJQUFBLFNBQUFMLDRCQUFBO01BQUEsSUFBQU0sS0FBQTtNQUFBLFNBQUFDLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQUFDLElBQUEsT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7UUFBQUYsSUFBQSxDQUFBRSxJQUFBLElBQUFKLFNBQUEsQ0FBQUksSUFBQTtNQUFBO01BQUFOLEtBQUEsR0FBQUQsY0FBQSxDQUFBUSxJQUFBLFVBQUFILElBQUE7TUFBQUosS0FBQSxDQUUvRFEsU0FBUyxHQUFHLENBQUM7TUFBQSxPQUFBUixLQUFBO0lBQUE7SUFBQVMsUUFBQSxHQUFBZiwyQkFBQTtJQUFBZ0IsY0FBQSxDQUFBaEIsMkJBQUEsRUFBQUssY0FBQTtJQUFBLElBQUFZLE1BQUEsR0FBQWpCLDJCQUFBLENBQUFrQixTQUFBO0lBQUFELE1BQUEsQ0FFckJFLHFCQUFxQixHQUFyQixTQUFBQSxxQkFBcUJBLENBQUEsRUFBUztNQUM3QjtNQUNBLE1BQU1DLFdBQVcsR0FBRyxHQUFHO01BQ3ZCLElBQUlDLElBQUksR0FBR0MsTUFBTSxDQUFDQyxVQUFVLEdBQUdELE1BQU0sQ0FBQ0UsVUFBVTtNQUNoRCxJQUFJSCxJQUFJLEdBQUdELFdBQVcsR0FBR0UsTUFBTSxDQUFDRyxNQUFNLENBQUNDLFVBQVUsRUFBRTtRQUNsREwsSUFBSSxHQUFHQyxNQUFNLENBQUNHLE1BQU0sQ0FBQ0MsVUFBVSxHQUFH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
|
|
173
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIiwiX01hbmFnZWRPYmplY3QiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9wb3B1cElkeCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRTaGVsbERpYWxvZ0NvbnRlbnQiLCJ3aW5kb3dXaWR0aCIsImxlZnQiLCJ3aW5kb3ciLCJzY3JlZW5MZWZ0Iiwib3V0ZXJXaWR0aCIsInNjcmVlbiIsImF2YWlsV2lkdGgiLCJ0aGVtZSIsIlRoZW1pbmciLCJnZXRUaGVtZSIsIl9zYW5pdGl6ZVRoZW1lIiwidXJsIiwic2FwIiwidWkiLCJyZXF1aXJlIiwidG9VcmwiLCJsb2NhbE9yaWdpbiIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJob3N0IiwicGFyYW1zIiwiZW5jb2RlVVJMIiwibXlXaW4iLCJvcGVuIiwic2NyZWVuVG9wIiwiaGFuZGxlTWVzc2FnZVJlY2VpdmVkIiwibWVzc2FnZUV2ZW50Iiwib3JpZ2luIiwibWVzc2FnZURhdGEiLCJkYXRhIiwic2VydmljZSIsIm1lc3NhZ2VQb3J0IiwicG9ydHMiLCJwb3N0TWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib3BlbmVyIiwiZSIsIkxvZyIsImRlYnVnIiwiRXJyb3IiLCJtZXNzYWdlIiwiU3RyaW5nIiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJpZCIsIm9udW5sb2FkIiwiY2xvc2UiLCJjb21wdXRlZFN0eWxlcyIsImdldENvbXB1dGVkU3R5bGUiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZU1ldGFkYXRhIiwidGhlbWVNYXRjaCIsIkpTT04iLCJwYXJzZSIsIkV4dGVuZHMiLCJpbmZvIiwiZ2V0SW5zdGFuY2UiLCJzaGVsbENvbnRhaW5lciIsInJlc29sdmVDcmVhdGlvbiIsImluc3RhbmNlIiwiaW5zdGFuY2VQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJleHRlbnNpb25TZXJ2aWNlIiwiZ2V0U2VydmljZUFzeW5jIiwic2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJyZWdpc3RlclVzZXJBY3Rpb24iLCJlcnJvciIsInVuZGVmaW5lZCIsInNoZWxsRXh0ZW5zaW9uU2VydmljZSIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJzaGVsbEhpc3RvcnlEaWFsb2ciLCJpc0RpYWxvZ0FkZGVkIiwidXNlckFjdGlvbiIsImNyZWF0ZVVzZXJBY3Rpb24iLCJ0ZXh0IiwiZ2V0VGV4dCIsImljb24iLCJJY29uUG9vbCIsImdldEljb25VUkkiLCJwcmVzcyIsImNvbnRyb2xUeXBlIiwic2hvd0ZvckFsbEFwcHMiLCJlcnIiLCJNYW5hZ2VkT2JqZWN0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGVuY29kZVVSTCBmcm9tIFwic2FwL2Jhc2Uvc2VjdXJpdHkvZW5jb2RlVVJMXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgSWNvblBvb2wgZnJvbSBcInNhcC91aS9jb3JlL0ljb25Qb29sXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBUaGVtaW5nIGZyb20gXCJzYXAvdWkvY29yZS9UaGVtaW5nXCI7XG5pbXBvcnQgdHlwZSBDb250YWluZXIgZnJvbSBcInNhcC91c2hlbGwvQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBFeHRlbnNpb24gZnJvbSBcInNhcC91c2hlbGwvc2VydmljZXMvRXh0ZW5zaW9uXCI7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBkaWFsb2cgdG8gZXhwbGFpbiB0aGUgc2hvcnRjdXRzIHRvIHRoZSB1c2VyLlxuICogVGhpcyBkaWFsb2cgd2lsbCBiZSByZWdpc3RlcmVkIGluIHRoZSBzaGVsbCB1c2VyIG1lbnUgYW5kIHdpbGwgb3BlbiBhcyBhbiBpbmRlcGVuZGVudCB3aW5kb3cuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5zaG9ydGN1dHMuU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgZXh0ZW5kcyBNYW5hZ2VkT2JqZWN0IHtcblx0cHJpdmF0ZSBfcG9wdXBJZHggPSAwO1xuXG5cdGdldFNoZWxsRGlhbG9nQ29udGVudCgpOiB2b2lkIHtcblx0XHQvLyBQb3NpdGlvbiB0byB0b3AgcmlnaHQgb2YgdGhlIG1haW4gd2luZG93IGlmIHBvc3NpYmxlXG5cdFx0Y29uc3Qgd2luZG93V2lkdGggPSA2MjA7XG5cdFx0bGV0IGxlZnQgPSB3aW5kb3cuc2NyZWVuTGVmdCArIHdpbmRvdy5vdXRlcldpZHRoO1xuXHRcdGlmIChsZWZ0ICsgd2luZG93V2lkdGggPiB3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGgpIHtcblx0XHRcdGxlZnQgPSB3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGggLSB3aW5kb3dXaWR0aDtcblx0XHR9XG5cdFx0bGV0IHRoZW1lID0gVGhlbWluZy5nZXRUaGVtZSgpO1xuXHRcdHRoZW1lID0gdGhpcy5fc2FuaXRpemVUaGVtZSh0aGVtZSk7XG5cdFx0Y29uc3QgdXJsID0gc2FwLnVpLnJlcXVpcmUudG9VcmwoXCJzYXAvZmUvY29udHJvbHMvc2hvcnRjdXRzL3BvcHVwL2luZGV4Lmh0bWxcIik7XG5cdFx0Y29uc3QgbG9jYWxPcmlnaW4gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcblx0XHQvLyBXZSBwYXNzIHRoZSB0aGVtZSBhbmQgdGhlIG9yaWdpbiB0byB0aGUgcG9wdXAgc28gdGhhdCBpdCBjYW4gY29tbXVuaWNhdGUgc2FmZWx5IHdpdGggdGhlIHBhcmVudFxuXHRcdGNvbnN0IHBhcmFtcyA9IFwiP3NhcC11aS14eC1zaG9ydGN1dC1vcmlnaW49XCIgKyBlbmNvZGVVUkwobG9jYWxPcmlnaW4pICsgXCImc2FwLXVpLXRoZW1lPVwiICsgdGhlbWU7XG5cdFx0Y29uc3QgbXlXaW4gPSB3aW5kb3cub3Blbihcblx0XHRcdHVybCArIHBhcmFtcyxcblx0XHRcdFwiX2JsYW5rXCIsXG5cdFx0XHRgcG9wdXAsdG9vbGJhcj1ubyxtZW51YmFyPW5vLHNjcm9sbGJhcnM9bm8sbG9jYXRpb249bm8sd2lkdGg9JHt3aW5kb3dXaWR0aH0saGVpZ2h0PTU1MCx0b3A9JHt3aW5kb3cuc2NyZWVuVG9wfSxsZWZ0PSR7bGVmdH1gXG5cdFx0KTtcblx0XHRpZiAobXlXaW4pIHtcblx0XHRcdGNvbnN0IGhhbmRsZU1lc3NhZ2VSZWNlaXZlZCA9IChtZXNzYWdlRXZlbnQ6IE1lc3NhZ2VFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAobG9jYWxPcmlnaW4gPT09IG1lc3NhZ2VFdmVudC5vcmlnaW4pIHtcblx0XHRcdFx0XHRjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2VFdmVudD8uZGF0YTtcblx0XHRcdFx0XHRpZiAobWVzc2FnZURhdGEuc2VydmljZSA9PT0gXCJzYXAudWkuaW50ZXJhY3Rpb24uTWVzc2FnZVBvcnRSZWFkeVwiKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBtZXNzYWdlUG9ydCA9IG1lc3NhZ2VFdmVudC5wb3J0c1swXTsgLy8gUmVtZW1iZXIgdGhlIHBvcnRcblx0XHRcdFx0XHRcdG15V2luLnBvc3RNZXNzYWdlKHsgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uTWVzc2FnZVBvcnRSZWFkeVwiIH0sIHVybC5zdGFydHNXaXRoKFwiL1wiKSA/IGxvY2FsT3JpZ2luIDogdXJsLCBbXG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VQb3J0XG5cdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVNZXNzYWdlUmVjZWl2ZWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG15V2luLm9wZW5lciA9IG51bGw7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdC8vIFRoaXMgbWlnaHQgZmFpbCB3aGVuIHRoZXJlIGlzIENPUlMgaW52b2x2ZWQgYW55d2F5IGFuZCB3ZSBjYW4ndCBhY2Nlc3MgdGhlIG9wZW5lciBhbnl3YXlcblx0XHRcdFx0TG9nLmRlYnVnKFwiQ2Fubm90IHNldCBvcGVuZXIgdG8gbnVsbFwiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0fVxuXG5cdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZU1lc3NhZ2VSZWNlaXZlZCk7XG5cdFx0XHRcdHdpbmRvdy5wb3N0TWVzc2FnZShcblx0XHRcdFx0XHR7IGlkOiBcInNhcC5mZS5pbnRlcmFjdGlvbi5Qb3B1cFwiICsgdGhpcy5fcG9wdXBJZHgrKywgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uUmVxdWVzdE1lc3NhZ2VQb3J0XCIgfSxcblx0XHRcdFx0XHRsb2NhbE9yaWdpblxuXHRcdFx0XHQpO1xuXHRcdFx0fSwgMTUwMCk7IC8vIGdpdmUgYSBiaXQgb2YgdGltZSBmb3IgdGhlIHBvcHVwIHRvIGJlIHJlYWR5XG5cdFx0XHQvLyBXZSBjYW4ndCByZWx5IG9uIHRoZSBvbmxvYWQgb2YgdGhlIHBvcHVwIGJlY2F1c2UgaXQgaXMgbm90IGFsd2F5cyBhdmFpbGJsZSBpbiBDT1JTIHNjZW5hcmlvc1xuXHRcdFx0d2luZG93Lm9udW5sb2FkID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuXHRcdFx0XHRteVdpbi5jbG9zZSgpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2FuaXRpemVzIHRoZSB0aGVtZSBuYW1lIHRvIGVuc3VyZSBpdCBzdGFydHMgd2l0aCBcInNhcC1cIi5cblx0ICogSWYgdGhlIHRoZW1lIGRvZXMgbm90IHN0YXJ0IHdpdGggXCJzYXAtXCIsIGl0IHRyaWVzIHRvIGdldCB0aGUgdGhlbWUgZnJvbSB0aGUgY29tcHV0ZWQgc3R5bGVzLlxuXHQgKiBJZiBpdCBzdGlsbCBkb2VzIG5vdCBmaW5kIGEgdmFsaWQgdGhlbWUsIGl0IGRlZmF1bHRzIHRvIFwic2FwX2hvcml6b25cIi5cblx0ICogVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgcG9wdXAgYWx3YXlzIHVzZXMgYSB2YWxpZCB0aGVtZS5cblx0ICogQHBhcmFtIHRoZW1lIFRoZSB0aGVtZSBuYW1lIHRvIHNhbml0aXplXG5cdCAqIEByZXR1cm5zIFRoZSBzYW5pdGl6ZWQgdGhlbWUgbmFtZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJpdmF0ZSBfc2FuaXRpemVUaGVtZSh0aGVtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRpZiAoIXRoZW1lLnN0YXJ0c1dpdGgoXCJzYXBfXCIpKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBjb21wdXRlZFN0eWxlcyA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcblx0XHRcdFx0dGhlbWUgPSBjb21wdXRlZFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1zYXBTYXBUaGVtZUlkXCIpO1xuXHRcdFx0XHRpZiAoIXRoZW1lKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGhlbWVNZXRhZGF0YSA9IGNvbXB1dGVkU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCItLXNhcFRoZW1lTWV0YURhdGEtVUk1LXNhcC11aS1jb3JlXCIpO1xuXHRcdFx0XHRcdGlmICh0aGVtZU1ldGFkYXRhKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB0aGVtZU1hdGNoID0gSlNPTi5wYXJzZSh0aGVtZU1ldGFkYXRhKTtcblx0XHRcdFx0XHRcdGlmICh0aGVtZU1hdGNoICYmIHRoZW1lTWF0Y2guRXh0ZW5kcyAmJiB0aGVtZU1hdGNoLkV4dGVuZHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHR0aGVtZSA9IHRoZW1lTWF0Y2guRXh0ZW5kc1swXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLmluZm8oXCJDYW5ub3QgZ2V0IHRoZW1lIGZyb20gY29tcHV0ZWQgc3R5bGVzXCIsIGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKSk7XG5cdFx0XHRcdHRoZW1lID0gXCJzYXBfaG9yaXpvblwiO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCF0aGVtZSB8fCAhdGhlbWUuc3RhcnRzV2l0aChcInNhcF9cIikpIHtcblx0XHRcdFx0Ly8gRmluYWwgZmFsbGJhY2sgdG8gc2FwX2hvcml6b25cblx0XHRcdFx0dGhlbWUgPSBcInNhcF9ob3Jpem9uXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0aGVtZTtcblx0fVxuXG5cdHN0YXRpYyBpbnN0YW5jZVByb21pc2U6IFByb21pc2U8U2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIHwgdW5kZWZpbmVkPjtcblxuXHRzdGF0aWMgaW5zdGFuY2U6IFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZDtcblxuXHRzdGF0aWMgaXNEaWFsb2dBZGRlZCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIG9yIHJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIuXG5cdCAqIFRoaXMgaXMgYSBzaW5nbGV0b24gdG8gZW5zdXJlIHdlIG9ubHkgaGF2ZSBvbmUgaW5zdGFuY2Ugb2YgdGhlIGRpYWxvZy5cblx0ICogQHJldHVybnMgVGhlIGluc3RhbmNlIG9mIHRoZSBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXJcblx0ICovXG5cdHN0YXRpYyBhc3luYyBnZXRJbnN0YW5jZSgpOiBQcm9taXNlPFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZD4ge1xuXHRcdC8vIFRlc3QgdGhlIHNoZWxsIGV4aXN0ZW5jZSBhbmQgcmVnaXN0ZXIgdGhlIGV4dGVuc2lvblxuXHRcdGNvbnN0IHNoZWxsQ29udGFpbmVyID0gc2FwLnVpLnJlcXVpcmUoXCJzYXAvdXNoZWxsL0NvbnRhaW5lclwiKSBhcyBDb250YWluZXIgfCB1bmRlZmluZWQ7XG5cdFx0bGV0IHJlc29sdmVDcmVhdGlvbjogRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG5cdFx0dHJ5IHtcblx0XHRcdGlmIChzaGVsbENvbnRhaW5lciAmJiAhdGhpcy5pbnN0YW5jZSkge1xuXHRcdFx0XHR0aGlzLmluc3RhbmNlUHJvbWlzZSA9IG5ldyBQcm9taXNlPFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0XHRyZXNvbHZlQ3JlYXRpb24gPSByZXNvbHZlO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgZXh0ZW5zaW9uU2VydmljZSA9IChhd2FpdCBzaGVsbENvbnRhaW5lci5nZXRTZXJ2aWNlQXN5bmMoXCJFeHRlbnNpb25cIikpIGFzIEV4dGVuc2lvbiB8IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKGV4dGVuc2lvblNlcnZpY2UpIHtcblx0XHRcdFx0XHRjb25zdCBzaGVsbEhpc3RvcnlQcm92aWRlciA9IGF3YWl0IFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlci5yZWdpc3RlclVzZXJBY3Rpb24oZXh0ZW5zaW9uU2VydmljZSk7XG5cdFx0XHRcdFx0dGhpcy5pbnN0YW5jZSA9IHNoZWxsSGlzdG9yeVByb3ZpZGVyO1xuXHRcdFx0XHRcdHJlc29sdmVDcmVhdGlvbiEoc2hlbGxIaXN0b3J5UHJvdmlkZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IHJlZ2lzdGVyIGV4dGVuc2lvblwiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0cmVzb2x2ZUNyZWF0aW9uPy4odW5kZWZpbmVkKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaW5zdGFuY2VQcm9taXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgdGhlIHVzZXIgYWN0aW9uIHRvIHRoZSBzaGVsbCwgdGhlIGFjdGlvbiB3aWxsIG9wZW4gdGhlIGRpYWxvZyB3aXRoIHRoZSBzaG9ydGN1dHMuXG5cdCAqIEBwYXJhbSBzaGVsbEV4dGVuc2lvblNlcnZpY2UgVGhlIGV4dGVuc2lvbiBzZXJ2aWNlIHRvIGFkZCB0aGUgdXNlciBhY3Rpb24gdG8gdGhlIHNoZWxsXG5cdCAqIEByZXR1cm5zIFRoZSBkaWFsb2cgd2l0aCB0aGUgc2hvcnRjdXRzXG5cdCAqL1xuXHRzdGF0aWMgYXN5bmMgcmVnaXN0ZXJVc2VyQWN0aW9uKHNoZWxsRXh0ZW5zaW9uU2VydmljZTogRXh0ZW5zaW9uKTogUHJvbWlzZTxTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXG5cdFx0XHRjb25zdCBzaGVsbEhpc3RvcnlEaWFsb2cgPSBuZXcgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyKCk7XG5cdFx0XHRpZiAoIXRoaXMuaXNEaWFsb2dBZGRlZCkge1xuXHRcdFx0XHR0aGlzLmlzRGlhbG9nQWRkZWQgPSB0cnVlO1xuXHRcdFx0XHRjb25zdCB1c2VyQWN0aW9uID0gYXdhaXQgc2hlbGxFeHRlbnNpb25TZXJ2aWNlLmNyZWF0ZVVzZXJBY3Rpb24oXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWQ6IFwic2FwdWk1LnNob3J0Y3V0LmV4cGxhbmF0aW9uLnRyaWdnZXJcIixcblx0XHRcdFx0XHRcdHRleHQ6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1NIT1JUQ1VUX1RJVExFXCIpLFxuXHRcdFx0XHRcdFx0aWNvbjogSWNvblBvb2wuZ2V0SWNvblVSSShcImtleWJvYXJkLWFuZC1tb3VzZVwiKSxcblx0XHRcdFx0XHRcdHByZXNzOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHNoZWxsSGlzdG9yeURpYWxvZy5nZXRTaGVsbERpYWxvZ0NvbnRlbnQoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGNvbnRyb2xUeXBlOiBcInNhcC5tLkJ1dHRvblwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR1c2VyQWN0aW9uLnNob3dGb3JBbGxBcHBzKCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gc2hlbGxIaXN0b3J5RGlhbG9nO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IGFkZCB1c2VyIGFjdGlvblwiLCBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycikpO1xuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7RUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBSkEsSUFNcUJBLDJCQUEyQixJQUFBQyxJQUFBLEdBRC9DQyxjQUFjLENBQUMsdURBQXVE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
|
|
@@ -24,7 +24,8 @@ export default class ShortcutExplanationProvider extends ManagedObject {
|
|
|
24
24
|
if (left + windowWidth > window.screen.availWidth) {
|
|
25
25
|
left = window.screen.availWidth - windowWidth;
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
let theme = Theming.getTheme();
|
|
28
|
+
theme = this._sanitizeTheme(theme);
|
|
28
29
|
const url = sap.ui.require.toUrl("sap/fe/controls/shortcuts/popup/index.html");
|
|
29
30
|
const localOrigin = window.location.protocol + "//" + window.location.host;
|
|
30
31
|
// We pass the theme and the origin to the popup so that it can communicate safely with the parent
|
|
@@ -68,6 +69,41 @@ export default class ShortcutExplanationProvider extends ManagedObject {
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Sanitizes the theme name to ensure it starts with "sap-".
|
|
74
|
+
* If the theme does not start with "sap-", it tries to get the theme from the computed styles.
|
|
75
|
+
* If it still does not find a valid theme, it defaults to "sap_horizon".
|
|
76
|
+
* This is to ensure that the popup always uses a valid theme.
|
|
77
|
+
* @param theme The theme name to sanitize
|
|
78
|
+
* @returns The sanitized theme name
|
|
79
|
+
* @private
|
|
80
|
+
*/
|
|
81
|
+
private _sanitizeTheme(theme: string): string {
|
|
82
|
+
if (!theme.startsWith("sap_")) {
|
|
83
|
+
try {
|
|
84
|
+
const computedStyles = getComputedStyle(document.documentElement);
|
|
85
|
+
theme = computedStyles.getPropertyValue("--sapSapThemeId");
|
|
86
|
+
if (!theme) {
|
|
87
|
+
const themeMetadata = computedStyles.getPropertyValue("--sapThemeMetaData-UI5-sap-ui-core");
|
|
88
|
+
if (themeMetadata) {
|
|
89
|
+
const themeMatch = JSON.parse(themeMetadata);
|
|
90
|
+
if (themeMatch && themeMatch.Extends && themeMatch.Extends.length > 0) {
|
|
91
|
+
theme = themeMatch.Extends[0];
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
} catch (e) {
|
|
96
|
+
Log.info("Cannot get theme from computed styles", e instanceof Error ? e.message : String(e));
|
|
97
|
+
theme = "sap_horizon";
|
|
98
|
+
}
|
|
99
|
+
if (!theme || !theme.startsWith("sap_")) {
|
|
100
|
+
// Final fallback to sap_horizon
|
|
101
|
+
theme = "sap_horizon";
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return theme;
|
|
105
|
+
}
|
|
106
|
+
|
|
71
107
|
static instancePromise: Promise<ShortcutExplanationProvider | undefined>;
|
|
72
108
|
|
|
73
109
|
static instance: ShortcutExplanationProvider | undefined;
|
|
@@ -95,6 +95,13 @@ sap.ui.define(["sap/fe/base/BuildingBlockBase", "sap/fe/base/ClassSupport", "sap
|
|
|
95
95
|
var _proto = ShortcutTool.prototype;
|
|
96
96
|
_proto.setupPort = function setupPort(messagePort) {
|
|
97
97
|
messagePort.onmessage = this.onMessageReceived.bind(this);
|
|
98
|
+
// We send a message to stop the display if it is already running
|
|
99
|
+
// and then start it again to ensure we have the latest data.
|
|
100
|
+
// This is to ensure that the popup is always up-to-date with the latest shortcuts
|
|
101
|
+
// and to avoid any potential issues with the display being already running.
|
|
102
|
+
messagePort.postMessage({
|
|
103
|
+
service: "sap.ui.interaction.StopDisplay"
|
|
104
|
+
});
|
|
98
105
|
messagePort.postMessage({
|
|
99
106
|
service: "sap.ui.interaction.StartDisplay"
|
|
100
107
|
});
|
|
@@ -226,4 +233,4 @@ sap.ui.define(["sap/fe/base/BuildingBlockBase", "sap/fe/base/ClassSupport", "sap
|
|
|
226
233
|
_exports = ShortcutTool;
|
|
227
234
|
return _exports;
|
|
228
235
|
}, false);
|
|
229
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREb2NzRGV0YWlsIiwiZG9jc1BhdGgiLCJkYXRhIiwic3BsdGlQYXRoIiwic3BsaXQiLCJyZXN1bHQiLCJmb3JFYWNoIiwicGF0aCIsImNvbGxhcHNlRHVwbGljYXRlIiwiZWxlbWVudHMiLCJmaWx0ZXJRdWVyeSIsIm1hcCIsImVsZW1lbnQiLCJsYWJlbCIsIm5vZGVzIiwiZmlsdGVyIiwibm9kZSIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJzb21lIiwiZXhpc3RpbmdOb2RlIiwicHVzaCIsIk9iamVjdCIsImVudHJpZXMiLCJfcmVmIiwibWFwS2V5VG9TeW1ib2wiLCJrZXkiLCJ0cmFuc2xhdGVkS2V5IiwidHJpbSIsIlNob3J0Y3V0VG9vbCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2tCYXNlIiwiX3RoaXMiLCJjYWxsIiwicmVzb3VyY2VCdW5kbGUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzdGF0ZSIsInNob3J0Y3V0c1RyZWUiLCJvcmlnaW5hbFRyZWUiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImluaXRpYWxGb2N1cyIsIiRzZWFyY2hGaWVsZCIsImN1cnJlbnQiLCJhZGRFdmVudERlbGVnYXRlIiwib25BZnRlclJlbmRlcmluZyIsImZvY3VzIiwid2luZG93IiwibWVzc2FnZVBvcnQiLCJzZXR1cFBvcnQiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25tZXNzYWdlIiwib25NZXNzYWdlUmVjZWl2ZWQiLCJiaW5kIiwicG9zdE1lc3NhZ2UiLCJzZXJ2aWNlIiwiZSIsInBheWxvYWQiLCJyZXZlcnNlIiwiaW50ZXJhY3Rpb25zIiwic2hvcnRjdXQiLCIkcmVmIiwiZG9jdW1lbnRhdGlvbkludGVyYWN0aW9uIiwiZGVzY3JpcHRpb24iLCJyZXBsYWNlQWxsIiwic2hvcnRjdXRLZXlzIiwia2JkIiwibmFtZSIsImNvbmNhdCIsIm9uU3RhdGVDaGFuZ2UiLCIkdHJlZSIsImV4cGFuZFRvTGV2ZWwiLCJvblNlYXJjaCIsIl9lIiwicXVlcnkiLCJnZXRQYXJhbWV0ZXIiLCJpc1RpdGxlTWF0Y2giLCJpc05vZGVNYXRjaCIsIl9qc3giLCJQYW5lbCIsImhlYWRlclRleHQiLCJnZXRUZXh0Iiwid2lkdGgiLCJjaGlsZHJlbiIsIlNlYXJjaEZpZWxkIiwicmVmIiwicGxhY2Vob2xkZXIiLCJzZWFyY2giLCJUcmVlIiwiaXRlbXMiLCJtb2RlbCIsInBhcmFtZXRlcnMiLCJhcnJheU5hbWVzIiwibm9EYXRhVGV4dCIsIkN1c3RvbVRyZWVJdGVtIiwiX2pzeHMiLCJGbGV4Qm94IiwiYWxpZ25JdGVtcyIsInJlbmRlclR5cGUiLCJqdXN0aWZ5Q29udGVudCIsIkZvcm1hdHRlZFRleHQiLCJodG1sVGV4dCIsImNsYXNzIiwiZGlyZWN0aW9uIiwiaWQiLCJjb250ZXh0Iiwic2hvcnRjdXRLZXkiLCJnZXRPYmplY3QiLCJzaG9ydEN1dFRleHQiLCJyYXciLCJ0cmFuc2xhdGVkU2hvcnRDdXRUZXh0IiwidHJhbnNsYXRlZCIsInRyYW5zbGF0ZWRTaG9ydEN1dEtleXMiLCJyYXdLZXkiLCJpZHgiLCJMYWJlbCIsInRleHQiLCJsZW5ndGgiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2hvcnRjdXRUb29sLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tCYXNlIGZyb20gXCJzYXAvZmUvYmFzZS9CdWlsZGluZ0Jsb2NrQmFzZVwiO1xuaW1wb3J0IHsgZGVmaW5lUmVmZXJlbmNlLCBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IEN1c3RvbVRyZWVJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21UcmVlSXRlbVwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBGb3JtYXR0ZWRUZXh0IGZyb20gXCJzYXAvbS9Gb3JtYXR0ZWRUZXh0XCI7XG5pbXBvcnQgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgUGFuZWwgZnJvbSBcInNhcC9tL1BhbmVsXCI7XG5pbXBvcnQgdHlwZSB7IFNlYXJjaEZpZWxkJFNlYXJjaEV2ZW50IH0gZnJvbSBcInNhcC9tL1NlYXJjaEZpZWxkXCI7XG5pbXBvcnQgU2VhcmNoRmllbGQgZnJvbSBcInNhcC9tL1NlYXJjaEZpZWxkXCI7XG5pbXBvcnQgVHJlZSBmcm9tIFwic2FwL20vVHJlZVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG50eXBlIE5hbWVkS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0a2JkOiAoc3RyaW5nIHwgeyByYXc6IHN0cmluZzsgdHJhbnNsYXRlZDogc3RyaW5nIH0pW107XG59O1xudHlwZSBEb2NLZXlib2FyZEludGVyYWN0aW9uID0ge1xuXHRkZXNjcmlwdGlvbjogc3RyaW5nO1xuXHRrYmQ6IChzdHJpbmcgfCB7IHJhdzogc3RyaW5nOyB0cmFuc2xhdGVkOiBzdHJpbmcgfSlbXTtcbn07XG5cbnR5cGUgUmVmS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IHtcblx0JHJlZjogc3RyaW5nO1xufTtcbnR5cGUgS2V5Ym9hcmRFbGVtZW50cyA9IHtcblx0Y2xhc3M6IHN0cmluZztcblx0aWQ6IHN0cmluZztcblx0bGFiZWw6IHN0cmluZztcblx0aW50ZXJhY3Rpb25zOiAoTmFtZWRLZXlib2FyZEludGVyYWN0aW9uIHwgUmVmS2V5Ym9hcmRJbnRlcmFjdGlvbilbXTtcbn07XG50eXBlIFNob3J0Y3V0RWxlbWVudCA9IHsgbGFiZWw6IHN0cmluZzsgc2hvcnRjdXRLZXlzOiAoc3RyaW5nIHwgeyByYXc6IHN0cmluZzsgdHJhbnNsYXRlZDogc3RyaW5nIH0pW10gfTtcblxuZnVuY3Rpb24gZ2V0RG9jc0RldGFpbChkb2NzUGF0aDogc3RyaW5nLCBkYXRhOiBvYmplY3QpOiBEb2NLZXlib2FyZEludGVyYWN0aW9uW10gfCB1bmRlZmluZWQge1xuXHRjb25zdCBzcGx0aVBhdGggPSBkb2NzUGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCByZXN1bHQgPSBkYXRhO1xuXHRzcGx0aVBhdGguZm9yRWFjaCgocGF0aCkgPT4ge1xuXHRcdHJlc3VsdCA9IHJlc3VsdFtwYXRoIGFzIGtleW9mIHR5cGVvZiByZXN1bHRdO1xuXHR9KTtcblx0cmV0dXJuIHJlc3VsdCBhcyBEb2NLZXlib2FyZEludGVyYWN0aW9uW10gfCB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNvbGxhcHNlRHVwbGljYXRlKFxuXHRlbGVtZW50czogeyBsYWJlbDogc3RyaW5nOyBub2RlczogU2hvcnRjdXRFbGVtZW50W10gfVtdLFxuXHRmaWx0ZXJRdWVyeTogc3RyaW5nXG4pOiB7IGxhYmVsOiBzdHJpbmc7IG5vZGVzOiBTaG9ydGN1dEVsZW1lbnRbXSB9W10ge1xuXHRjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIFNob3J0Y3V0RWxlbWVudFtdPiA9IHt9O1xuXHRlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG5cdFx0aWYgKCFtYXBbZWxlbWVudC5sYWJlbF0pIHtcblx0XHRcdG1hcFtlbGVtZW50LmxhYmVsXSA9IFtdO1xuXHRcdH1cblx0XHRlbGVtZW50Lm5vZGVzXG5cdFx0XHQuZmlsdGVyKChub2RlKSA9PiB7XG5cdFx0XHRcdHJldHVybiBub2RlLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyUXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdFx0XHR9KVxuXHRcdFx0LmZvckVhY2goKG5vZGUpID0+IHtcblx0XHRcdFx0aWYgKCFtYXBbZWxlbWVudC5sYWJlbF0uc29tZSgoZXhpc3RpbmdOb2RlKSA9PiBleGlzdGluZ05vZGUubGFiZWwgPT09IG5vZGUubGFiZWwpKSB7XG5cdFx0XHRcdFx0bWFwW2VsZW1lbnQubGFiZWxdLnB1c2gobm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHR9KTtcblx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKG1hcCkubWFwKChbbGFiZWwsIG5vZGVzXSkgPT4gKHsgbGFiZWwsIG5vZGVzIH0pKTtcbn1cblxuLyoqXG4gKiBNYXBzIGEga2V5Ym9hcmQga2V5IHRvIGEgc3ltYm9sIGZvciBkaXNwbGF5IHB1cnBvc2VzLlxuICogV2UgbmVlZCB0byBwZXJmb3JtIHRoZSBtYXBwaW5nIGJhc2VkIG9uIHRoZSByYXcga2V5IG5hbWUgYnV0IHJldHVybiB0aGUgdHJhbnNsYXRlZCBrZXkgZm9yIGRpc3BsYXkuXG4gKiBAcGFyYW0ga2V5IFRoZSByYXcga2V5IG5hbWUgKGUuZy4sIFwiQXJyb3dVcFwiLCBcIkN0cmxcIiwgZXRjLilcbiAqIEBwYXJhbSB0cmFuc2xhdGVkS2V5IFRoZSB0cmFuc2xhdGVkIGtleSBuYW1lIGluIHRoZSBwcm9wZXIgbGFuZ3VhZ2VcbiAqIEByZXR1cm5zIFRoZSBzeW1ib2wgdG8gYmUgZGlzcGxheWVkIGZvciB0aGUga2V5XG4gKi9cbmZ1bmN0aW9uIG1hcEtleVRvU3ltYm9sKGtleTogc3RyaW5nLCB0cmFuc2xhdGVkS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRzd2l0Y2ggKGtleS50cmltKCkpIHtcblx0XHRjYXNlIFwiQXJyb3dEb3duXCI6XG5cdFx0XHRyZXR1cm4gXCLihpNcIjtcblx0XHRjYXNlIFwiQXJyb3dVcFwiOlxuXHRcdFx0cmV0dXJuIFwi4oaRXCI7XG5cdFx0Y2FzZSBcIkFycm93TGVmdFwiOlxuXHRcdFx0cmV0dXJuIFwi4oaQXCI7XG5cdFx0Y2FzZSBcIkFycm93UmlnaHRcIjpcblx0XHRcdHJldHVybiBcIuKGklwiO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gdHJhbnNsYXRlZEtleTtcblx0fVxufVxuXG50eXBlIFNob3J0Y3V0VG9vbFN0YXRlID0ge1xuXHRzaG9ydGN1dHNUcmVlOiB7IGxhYmVsOiBzdHJpbmc7IG5vZGVzOiBTaG9ydGN1dEVsZW1lbnRbXSB9W107XG5cdG9yaWdpbmFsVHJlZTogeyBsYWJlbDogc3RyaW5nOyBub2RlczogU2hvcnRjdXRFbGVtZW50W10gfVtdO1xuXHRpbml0aWFsRm9jdXM6IGJvb2xlYW47XG59O1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvbnRyb2xzLnNob3J0Y3V0cy5wb3B1cC5TaG9ydGN1dFRvb2xcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNob3J0Y3V0VG9vbCBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPFBhbmVsLCBTaG9ydGN1dFRvb2xTdGF0ZT4ge1xuXHRwcml2YXRlIHJlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb250cm9sc1wiKSE7XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdCRzZWFyY2hGaWVsZCE6IFJlZjxTZWFyY2hGaWVsZD47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdCR0cmVlITogUmVmPFRyZWU+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5zdGF0ZS5zaG9ydGN1dHNUcmVlID0gW107XG5cdFx0dGhpcy5zdGF0ZS5vcmlnaW5hbFRyZWUgPSBbXTtcblxuXHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdHRoaXMuc3RhdGUuaW5pdGlhbEZvY3VzID0gdHJ1ZTtcblx0XHR0aGlzLiRzZWFyY2hGaWVsZC5jdXJyZW50Py5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmc6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuc3RhdGUuaW5pdGlhbEZvY3VzKSB7XG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoRmllbGQuY3VycmVudD8uZm9jdXMoKTtcblx0XHRcdFx0XHR0aGlzLnN0YXRlLmluaXRpYWxGb2N1cyA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpZiAoKHdpbmRvdyBhcyB7IG1lc3NhZ2VQb3J0PzogTWVzc2FnZVBvcnQgfSkubWVzc2FnZVBvcnQpIHtcblx0XHRcdHRoaXMuc2V0dXBQb3J0KCh3aW5kb3cgYXMgeyBtZXNzYWdlUG9ydD86IE1lc3NhZ2VQb3J0IH0pLm1lc3NhZ2VQb3J0ISk7XG5cdFx0fVxuXHR9XG5cblx0c2V0dXBQb3J0KG1lc3NhZ2VQb3J0OiBNZXNzYWdlUG9ydCk6IHZvaWQge1xuXHRcdG1lc3NhZ2VQb3J0Lm9ubWVzc2FnZSA9IHRoaXMub25NZXNzYWdlUmVjZWl2ZWQuYmluZCh0aGlzKTtcblx0XHRtZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh7IHNlcnZpY2U6IFwic2FwLnVpLmludGVyYWN0aW9uLlN0YXJ0RGlzcGxheVwiIH0pO1xuXHR9XG5cblx0b25NZXNzYWdlUmVjZWl2ZWQoZTogTWVzc2FnZUV2ZW50KTogdm9pZCB7XG5cdFx0aWYgKGU/LmRhdGE/LnNlcnZpY2UgPT09IFwic2FwLnVpLmludGVyYWN0aW9uLlVwZGF0ZURpc3BsYXlcIikge1xuXHRcdFx0Y29uc3QgZWxlbWVudHMgPSBlLmRhdGEucGF5bG9hZC5lbGVtZW50cyBhcyBLZXlib2FyZEVsZW1lbnRzW107XG5cdFx0XHRlbGVtZW50cy5yZXZlcnNlKCk7XG5cdFx0XHR0aGlzLnN0YXRlLm9yaWdpbmFsVHJlZSA9IGVsZW1lbnRzLm1hcCgoZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCBub2RlczogU2hvcnRjdXRFbGVtZW50W10gPSBbXTtcblx0XHRcdFx0ZWxlbWVudC5pbnRlcmFjdGlvbnMuZm9yRWFjaCgoc2hvcnRjdXQpID0+IHtcblx0XHRcdFx0XHRpZiAoKHNob3J0Y3V0IGFzIFJlZktleWJvYXJkSW50ZXJhY3Rpb24pLiRyZWYpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGludGVyYWN0aW9ucyA9IGdldERvY3NEZXRhaWwoKHNob3J0Y3V0IGFzIFJlZktleWJvYXJkSW50ZXJhY3Rpb24pLiRyZWYsIGUuZGF0YS5wYXlsb2FkKTtcblx0XHRcdFx0XHRcdGludGVyYWN0aW9ucz8uZm9yRWFjaCgoZG9jdW1lbnRhdGlvbkludGVyYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5vZGVzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBkb2N1bWVudGF0aW9uSW50ZXJhY3Rpb24uZGVzY3JpcHRpb24ucmVwbGFjZUFsbChcIjxrYmRcIiwgXCI8c3Ryb25nXCIpLnJlcGxhY2VBbGwoXCI8L2tiZD5cIiwgXCI8L3N0cm9uZz5cIiksXG5cdFx0XHRcdFx0XHRcdFx0c2hvcnRjdXRLZXlzOiBkb2N1bWVudGF0aW9uSW50ZXJhY3Rpb24ua2JkXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG5vZGVzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogKChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLmRlc2NyaXB0aW9uID8/IChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLm5hbWUpXG5cdFx0XHRcdFx0XHRcdFx0LnJlcGxhY2VBbGwoXCI8a2JkXCIsIFwiPHN0cm9uZ1wiKVxuXHRcdFx0XHRcdFx0XHRcdC5yZXBsYWNlQWxsKFwiPC9rYmQ+XCIsIFwiPC9zdHJvbmc+XCIpLFxuXHRcdFx0XHRcdFx0XHRzaG9ydGN1dEtleXM6IChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLmtiZFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRsYWJlbDogZWxlbWVudC5sYWJlbC5yZXBsYWNlQWxsKFwiPGtiZFwiLCBcIjxzdHJvbmdcIikucmVwbGFjZUFsbChcIjwva2JkPlwiLCBcIjwvc3Ryb25nPlwiKSxcblx0XHRcdFx0XHRub2Rlczogbm9kZXNcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHR0aGlzLnN0YXRlLnNob3J0Y3V0c1RyZWUgPSBjb2xsYXBzZUR1cGxpY2F0ZSh0aGlzLnN0YXRlLm9yaWdpbmFsVHJlZS5jb25jYXQoKSwgXCJcIik7XG5cdH1cblxuXHRvblN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuXHRcdHRoaXMuJHRyZWUuY3VycmVudD8uZXhwYW5kVG9MZXZlbCgxKTtcblx0fVxuXG5cdG9uU2VhcmNoKF9lOiBTZWFyY2hGaWVsZCRTZWFyY2hFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IHF1ZXJ5ID0gX2UuZ2V0UGFyYW1ldGVyKFwicXVlcnlcIikgPz8gXCJcIjtcblx0XHR0aGlzLnN0YXRlLnNob3J0Y3V0c1RyZWUgPSBjb2xsYXBzZUR1cGxpY2F0ZShcblx0XHRcdHRoaXMuc3RhdGUub3JpZ2luYWxUcmVlXG5cdFx0XHRcdC5maWx0ZXIoKGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRjb25zdCBpc1RpdGxlTWF0Y2ggPSBlbGVtZW50LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdFx0XHRcdFx0Y29uc3QgaXNOb2RlTWF0Y2ggPSBlbGVtZW50Lm5vZGVzLnNvbWUoKG5vZGUpID0+IG5vZGUubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b0xvd2VyQ2FzZSgpKSk7XG5cdFx0XHRcdFx0cmV0dXJuIGlzVGl0bGVNYXRjaCB8fCBpc05vZGVNYXRjaDtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNvbmNhdCgpLFxuXHRcdFx0cXVlcnlcblx0XHQpO1xuXHR9XG5cblx0Y3JlYXRlQ29udGVudCgpOiBQYW5lbCB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxQYW5lbCBoZWFkZXJUZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1NIT1JUQ1VUX1RJVExFXCIpfSB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiBbXG5cdFx0XHRcdFx0XHQ8U2VhcmNoRmllbGRcblx0XHRcdFx0XHRcdFx0cmVmPXt0aGlzLiRzZWFyY2hGaWVsZH1cblx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfU0hPUlRDVVRfUExBQ0VIT0xERVJcIil9XG5cdFx0XHRcdFx0XHRcdHNlYXJjaD17KGUpOiB2b2lkID0+IHRoaXMub25TZWFyY2goZSl9XG5cdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdDxUcmVlXG5cdFx0XHRcdFx0XHRcdHJlZj17dGhpcy4kdHJlZX1cblx0XHRcdFx0XHRcdFx0aXRlbXM9e3sgbW9kZWw6IFwiJGNvbXBvbmVudFN0YXRlXCIsIHBhdGg6IFwiL3Nob3J0Y3V0c1RyZWVcIiwgcGFyYW1ldGVyczogeyBhcnJheU5hbWVzOiBbXCJub2Rlc1wiXSB9IH19XG5cdFx0XHRcdFx0XHRcdG5vRGF0YVRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfU0hPUlRDVVRfTk9EQVRBXCIpfVxuXHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHQ8Q3VzdG9tVHJlZUl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3ggYWxpZ25JdGVtcz17XCJTdGFydFwifSB3aWR0aD17XCIxMDAlXCJ9IHJlbmRlclR5cGU9e1wiQmFyZVwifSBqdXN0aWZ5Q29udGVudD17XCJTcGFjZUJldHdlZW5cIn0+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8Rm9ybWF0dGVkVGV4dCBodG1sVGV4dD17dGhpcy5zdGF0ZS5zaG9ydGN1dHNUcmVlLmxhYmVsfSBjbGFzcz17XCJzYXBGZUNvbnRyb2xzU2hvcmN1dE1GVFwifSAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVuZGVyVHlwZT17XCJCYXJlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtcIlNwYWNlQmV0d2VlblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17XCJ7JGNvbXBvbmVudFN0YXRlPnNob3J0Y3V0S2V5c31cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlyZWN0aW9uPXtcIkNvbHVtblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBmdW5jdGlvbiAoaWQ6IHN0cmluZywgY29udGV4dDogQ29udGV4dCk6IExhYmVsIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Y3V0S2V5ID0gY29udGV4dC5nZXRPYmplY3QoKSBhcyBzdHJpbmcgfCB7IHJhdzogc3RyaW5nOyB0cmFuc2xhdGVkOiBzdHJpbmcgfTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Q3V0VGV4dCA9IHR5cGVvZiBzaG9ydGN1dEtleSA9PT0gXCJzdHJpbmdcIiA/IHNob3J0Y3V0S2V5IDogc2hvcnRjdXRLZXkucmF3O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgdHJhbnNsYXRlZFNob3J0Q3V0VGV4dCA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBzaG9ydGN1dEtleSA9PT0gXCJzdHJpbmdcIiA/IHNob3J0Y3V0S2V5IDogc2hvcnRjdXRLZXkudHJhbnNsYXRlZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Y3V0S2V5cyA9IHNob3J0Q3V0VGV4dC5zcGxpdChcIitcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0cmFuc2xhdGVkU2hvcnRDdXRLZXlzID0gdHJhbnNsYXRlZFNob3J0Q3V0VGV4dC5zcGxpdChcIitcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBlbGVtZW50czogQ29udHJvbFtdID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaG9ydGN1dEtleXMuZm9yRWFjaCgocmF3S2V5OiBzdHJpbmcsIGlkeDogbnVtYmVyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRyYW5zbGF0ZWRLZXkgPSB0cmFuc2xhdGVkU2hvcnRDdXRLZXlzW2lkeF0gPz8gcmF3S2V5O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbGVtZW50cy5wdXNoKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxMYWJlbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17bWFwS2V5VG9TeW1ib2wocmF3S2V5LCB0cmFuc2xhdGVkS2V5KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpbkVuZCBzYXBGZUNvbnRyb2xzU2hvcnRjdXRLZXlcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaWR4ICE9PSBzaG9ydGN1dEtleXMubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsZW1lbnRzLnB1c2goPExhYmVsIHRleHQ9e1wiK1wifSBjbGFzcz17XCJzYXBVaVRpbnlNYXJnaW5FbmRcIn0gLz4pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94IGlkPXtpZH0gcmVuZGVyVHlwZT17XCJCYXJlXCJ9IGFsaWduSXRlbXM9e1wiQ2VudGVyXCJ9PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7IGl0ZW1zOiBlbGVtZW50cyB9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdDwvQ3VzdG9tVHJlZUl0ZW0+XG5cdFx0XHRcdFx0XHQ8L1RyZWU+XG5cdFx0XHRcdFx0XVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9QYW5lbD5cblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7RUFxQ0EsU0FBU0EsYUFBYUEsQ0FBQ0MsUUFBZ0IsRUFBRUMsSUFBWSxFQUF3QztJQUM1RixNQUFNQyxTQUFTLEdBQUdGLFFBQVEsQ0FBQ0csS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUNyQyxJQUFJQyxNQUFNLEdBQUdILElBQUk7SUFDakJDLFNBQVMsQ0FBQ0csT0FBTyxDQUFFQyxJQUFJLElBQUs7TUFDM0JGLE1BQU0sR0FBR0EsTUFBTSxDQUFDRSxJQUFJLENBQXdCO0lBQzdDLENBQUMsQ0FBQztJQUNGLE9BQU9GLE1BQU07RUFDZDtFQUVBLFNBQVNHLGlCQUFpQkEsQ0FDekJDLFFBQXVELEVBQ3ZEQyxXQUFtQixFQUM2QjtJQUNoRCxN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
|
|
236
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREb2NzRGV0YWlsIiwiZG9jc1BhdGgiLCJkYXRhIiwic3BsdGlQYXRoIiwic3BsaXQiLCJyZXN1bHQiLCJmb3JFYWNoIiwicGF0aCIsImNvbGxhcHNlRHVwbGljYXRlIiwiZWxlbWVudHMiLCJmaWx0ZXJRdWVyeSIsIm1hcCIsImVsZW1lbnQiLCJsYWJlbCIsIm5vZGVzIiwiZmlsdGVyIiwibm9kZSIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJzb21lIiwiZXhpc3RpbmdOb2RlIiwicHVzaCIsIk9iamVjdCIsImVudHJpZXMiLCJfcmVmIiwibWFwS2V5VG9TeW1ib2wiLCJrZXkiLCJ0cmFuc2xhdGVkS2V5IiwidHJpbSIsIlNob3J0Y3V0VG9vbCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2tCYXNlIiwiX3RoaXMiLCJjYWxsIiwicmVzb3VyY2VCdW5kbGUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzdGF0ZSIsInNob3J0Y3V0c1RyZWUiLCJvcmlnaW5hbFRyZWUiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImluaXRpYWxGb2N1cyIsIiRzZWFyY2hGaWVsZCIsImN1cnJlbnQiLCJhZGRFdmVudERlbGVnYXRlIiwib25BZnRlclJlbmRlcmluZyIsImZvY3VzIiwid2luZG93IiwibWVzc2FnZVBvcnQiLCJzZXR1cFBvcnQiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25tZXNzYWdlIiwib25NZXNzYWdlUmVjZWl2ZWQiLCJiaW5kIiwicG9zdE1lc3NhZ2UiLCJzZXJ2aWNlIiwiZSIsInBheWxvYWQiLCJyZXZlcnNlIiwiaW50ZXJhY3Rpb25zIiwic2hvcnRjdXQiLCIkcmVmIiwiZG9jdW1lbnRhdGlvbkludGVyYWN0aW9uIiwiZGVzY3JpcHRpb24iLCJyZXBsYWNlQWxsIiwic2hvcnRjdXRLZXlzIiwia2JkIiwibmFtZSIsImNvbmNhdCIsIm9uU3RhdGVDaGFuZ2UiLCIkdHJlZSIsImV4cGFuZFRvTGV2ZWwiLCJvblNlYXJjaCIsIl9lIiwicXVlcnkiLCJnZXRQYXJhbWV0ZXIiLCJpc1RpdGxlTWF0Y2giLCJpc05vZGVNYXRjaCIsIl9qc3giLCJQYW5lbCIsImhlYWRlclRleHQiLCJnZXRUZXh0Iiwid2lkdGgiLCJjaGlsZHJlbiIsIlNlYXJjaEZpZWxkIiwicmVmIiwicGxhY2Vob2xkZXIiLCJzZWFyY2giLCJUcmVlIiwiaXRlbXMiLCJtb2RlbCIsInBhcmFtZXRlcnMiLCJhcnJheU5hbWVzIiwibm9EYXRhVGV4dCIsIkN1c3RvbVRyZWVJdGVtIiwiX2pzeHMiLCJGbGV4Qm94IiwiYWxpZ25JdGVtcyIsInJlbmRlclR5cGUiLCJqdXN0aWZ5Q29udGVudCIsIkZvcm1hdHRlZFRleHQiLCJodG1sVGV4dCIsImNsYXNzIiwiZGlyZWN0aW9uIiwiaWQiLCJjb250ZXh0Iiwic2hvcnRjdXRLZXkiLCJnZXRPYmplY3QiLCJzaG9ydEN1dFRleHQiLCJyYXciLCJ0cmFuc2xhdGVkU2hvcnRDdXRUZXh0IiwidHJhbnNsYXRlZCIsInRyYW5zbGF0ZWRTaG9ydEN1dEtleXMiLCJyYXdLZXkiLCJpZHgiLCJMYWJlbCIsInRleHQiLCJsZW5ndGgiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2hvcnRjdXRUb29sLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tCYXNlIGZyb20gXCJzYXAvZmUvYmFzZS9CdWlsZGluZ0Jsb2NrQmFzZVwiO1xuaW1wb3J0IHsgZGVmaW5lUmVmZXJlbmNlLCBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IEN1c3RvbVRyZWVJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21UcmVlSXRlbVwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBGb3JtYXR0ZWRUZXh0IGZyb20gXCJzYXAvbS9Gb3JtYXR0ZWRUZXh0XCI7XG5pbXBvcnQgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgUGFuZWwgZnJvbSBcInNhcC9tL1BhbmVsXCI7XG5pbXBvcnQgdHlwZSB7IFNlYXJjaEZpZWxkJFNlYXJjaEV2ZW50IH0gZnJvbSBcInNhcC9tL1NlYXJjaEZpZWxkXCI7XG5pbXBvcnQgU2VhcmNoRmllbGQgZnJvbSBcInNhcC9tL1NlYXJjaEZpZWxkXCI7XG5pbXBvcnQgVHJlZSBmcm9tIFwic2FwL20vVHJlZVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG50eXBlIE5hbWVkS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0a2JkOiAoc3RyaW5nIHwgeyByYXc6IHN0cmluZzsgdHJhbnNsYXRlZDogc3RyaW5nIH0pW107XG59O1xudHlwZSBEb2NLZXlib2FyZEludGVyYWN0aW9uID0ge1xuXHRkZXNjcmlwdGlvbjogc3RyaW5nO1xuXHRrYmQ6IChzdHJpbmcgfCB7IHJhdzogc3RyaW5nOyB0cmFuc2xhdGVkOiBzdHJpbmcgfSlbXTtcbn07XG5cbnR5cGUgUmVmS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IHtcblx0JHJlZjogc3RyaW5nO1xufTtcbnR5cGUgS2V5Ym9hcmRFbGVtZW50cyA9IHtcblx0Y2xhc3M6IHN0cmluZztcblx0aWQ6IHN0cmluZztcblx0bGFiZWw6IHN0cmluZztcblx0aW50ZXJhY3Rpb25zOiAoTmFtZWRLZXlib2FyZEludGVyYWN0aW9uIHwgUmVmS2V5Ym9hcmRJbnRlcmFjdGlvbilbXTtcbn07XG50eXBlIFNob3J0Y3V0RWxlbWVudCA9IHsgbGFiZWw6IHN0cmluZzsgc2hvcnRjdXRLZXlzOiAoc3RyaW5nIHwgeyByYXc6IHN0cmluZzsgdHJhbnNsYXRlZDogc3RyaW5nIH0pW10gfTtcblxuZnVuY3Rpb24gZ2V0RG9jc0RldGFpbChkb2NzUGF0aDogc3RyaW5nLCBkYXRhOiBvYmplY3QpOiBEb2NLZXlib2FyZEludGVyYWN0aW9uW10gfCB1bmRlZmluZWQge1xuXHRjb25zdCBzcGx0aVBhdGggPSBkb2NzUGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCByZXN1bHQgPSBkYXRhO1xuXHRzcGx0aVBhdGguZm9yRWFjaCgocGF0aCkgPT4ge1xuXHRcdHJlc3VsdCA9IHJlc3VsdFtwYXRoIGFzIGtleW9mIHR5cGVvZiByZXN1bHRdO1xuXHR9KTtcblx0cmV0dXJuIHJlc3VsdCBhcyBEb2NLZXlib2FyZEludGVyYWN0aW9uW10gfCB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNvbGxhcHNlRHVwbGljYXRlKFxuXHRlbGVtZW50czogeyBsYWJlbDogc3RyaW5nOyBub2RlczogU2hvcnRjdXRFbGVtZW50W10gfVtdLFxuXHRmaWx0ZXJRdWVyeTogc3RyaW5nXG4pOiB7IGxhYmVsOiBzdHJpbmc7IG5vZGVzOiBTaG9ydGN1dEVsZW1lbnRbXSB9W10ge1xuXHRjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIFNob3J0Y3V0RWxlbWVudFtdPiA9IHt9O1xuXHRlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG5cdFx0aWYgKCFtYXBbZWxlbWVudC5sYWJlbF0pIHtcblx0XHRcdG1hcFtlbGVtZW50LmxhYmVsXSA9IFtdO1xuXHRcdH1cblx0XHRlbGVtZW50Lm5vZGVzXG5cdFx0XHQuZmlsdGVyKChub2RlKSA9PiB7XG5cdFx0XHRcdHJldHVybiBub2RlLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyUXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdFx0XHR9KVxuXHRcdFx0LmZvckVhY2goKG5vZGUpID0+IHtcblx0XHRcdFx0aWYgKCFtYXBbZWxlbWVudC5sYWJlbF0uc29tZSgoZXhpc3RpbmdOb2RlKSA9PiBleGlzdGluZ05vZGUubGFiZWwgPT09IG5vZGUubGFiZWwpKSB7XG5cdFx0XHRcdFx0bWFwW2VsZW1lbnQubGFiZWxdLnB1c2gobm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHR9KTtcblx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKG1hcCkubWFwKChbbGFiZWwsIG5vZGVzXSkgPT4gKHsgbGFiZWwsIG5vZGVzIH0pKTtcbn1cblxuLyoqXG4gKiBNYXBzIGEga2V5Ym9hcmQga2V5IHRvIGEgc3ltYm9sIGZvciBkaXNwbGF5IHB1cnBvc2VzLlxuICogV2UgbmVlZCB0byBwZXJmb3JtIHRoZSBtYXBwaW5nIGJhc2VkIG9uIHRoZSByYXcga2V5IG5hbWUgYnV0IHJldHVybiB0aGUgdHJhbnNsYXRlZCBrZXkgZm9yIGRpc3BsYXkuXG4gKiBAcGFyYW0ga2V5IFRoZSByYXcga2V5IG5hbWUgKGUuZy4sIFwiQXJyb3dVcFwiLCBcIkN0cmxcIiwgZXRjLilcbiAqIEBwYXJhbSB0cmFuc2xhdGVkS2V5IFRoZSB0cmFuc2xhdGVkIGtleSBuYW1lIGluIHRoZSBwcm9wZXIgbGFuZ3VhZ2VcbiAqIEByZXR1cm5zIFRoZSBzeW1ib2wgdG8gYmUgZGlzcGxheWVkIGZvciB0aGUga2V5XG4gKi9cbmZ1bmN0aW9uIG1hcEtleVRvU3ltYm9sKGtleTogc3RyaW5nLCB0cmFuc2xhdGVkS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRzd2l0Y2ggKGtleS50cmltKCkpIHtcblx0XHRjYXNlIFwiQXJyb3dEb3duXCI6XG5cdFx0XHRyZXR1cm4gXCLihpNcIjtcblx0XHRjYXNlIFwiQXJyb3dVcFwiOlxuXHRcdFx0cmV0dXJuIFwi4oaRXCI7XG5cdFx0Y2FzZSBcIkFycm93TGVmdFwiOlxuXHRcdFx0cmV0dXJuIFwi4oaQXCI7XG5cdFx0Y2FzZSBcIkFycm93UmlnaHRcIjpcblx0XHRcdHJldHVybiBcIuKGklwiO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gdHJhbnNsYXRlZEtleTtcblx0fVxufVxuXG50eXBlIFNob3J0Y3V0VG9vbFN0YXRlID0ge1xuXHRzaG9ydGN1dHNUcmVlOiB7IGxhYmVsOiBzdHJpbmc7IG5vZGVzOiBTaG9ydGN1dEVsZW1lbnRbXSB9W107XG5cdG9yaWdpbmFsVHJlZTogeyBsYWJlbDogc3RyaW5nOyBub2RlczogU2hvcnRjdXRFbGVtZW50W10gfVtdO1xuXHRpbml0aWFsRm9jdXM6IGJvb2xlYW47XG59O1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvbnRyb2xzLnNob3J0Y3V0cy5wb3B1cC5TaG9ydGN1dFRvb2xcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNob3J0Y3V0VG9vbCBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPFBhbmVsLCBTaG9ydGN1dFRvb2xTdGF0ZT4ge1xuXHRwcml2YXRlIHJlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb250cm9sc1wiKSE7XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdCRzZWFyY2hGaWVsZCE6IFJlZjxTZWFyY2hGaWVsZD47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdCR0cmVlITogUmVmPFRyZWU+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5zdGF0ZS5zaG9ydGN1dHNUcmVlID0gW107XG5cdFx0dGhpcy5zdGF0ZS5vcmlnaW5hbFRyZWUgPSBbXTtcblxuXHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdHRoaXMuc3RhdGUuaW5pdGlhbEZvY3VzID0gdHJ1ZTtcblx0XHR0aGlzLiRzZWFyY2hGaWVsZC5jdXJyZW50Py5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmc6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuc3RhdGUuaW5pdGlhbEZvY3VzKSB7XG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoRmllbGQuY3VycmVudD8uZm9jdXMoKTtcblx0XHRcdFx0XHR0aGlzLnN0YXRlLmluaXRpYWxGb2N1cyA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpZiAoKHdpbmRvdyBhcyB7IG1lc3NhZ2VQb3J0PzogTWVzc2FnZVBvcnQgfSkubWVzc2FnZVBvcnQpIHtcblx0XHRcdHRoaXMuc2V0dXBQb3J0KCh3aW5kb3cgYXMgeyBtZXNzYWdlUG9ydD86IE1lc3NhZ2VQb3J0IH0pLm1lc3NhZ2VQb3J0ISk7XG5cdFx0fVxuXHR9XG5cblx0c2V0dXBQb3J0KG1lc3NhZ2VQb3J0OiBNZXNzYWdlUG9ydCk6IHZvaWQge1xuXHRcdG1lc3NhZ2VQb3J0Lm9ubWVzc2FnZSA9IHRoaXMub25NZXNzYWdlUmVjZWl2ZWQuYmluZCh0aGlzKTtcblx0XHQvLyBXZSBzZW5kIGEgbWVzc2FnZSB0byBzdG9wIHRoZSBkaXNwbGF5IGlmIGl0IGlzIGFscmVhZHkgcnVubmluZ1xuXHRcdC8vIGFuZCB0aGVuIHN0YXJ0IGl0IGFnYWluIHRvIGVuc3VyZSB3ZSBoYXZlIHRoZSBsYXRlc3QgZGF0YS5cblx0XHQvLyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBwb3B1cCBpcyBhbHdheXMgdXAtdG8tZGF0ZSB3aXRoIHRoZSBsYXRlc3Qgc2hvcnRjdXRzXG5cdFx0Ly8gYW5kIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIGRpc3BsYXkgYmVpbmcgYWxyZWFkeSBydW5uaW5nLlxuXHRcdG1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlKHsgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uU3RvcERpc3BsYXlcIiB9KTtcblx0XHRtZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh7IHNlcnZpY2U6IFwic2FwLnVpLmludGVyYWN0aW9uLlN0YXJ0RGlzcGxheVwiIH0pO1xuXHR9XG5cblx0b25NZXNzYWdlUmVjZWl2ZWQoZTogTWVzc2FnZUV2ZW50KTogdm9pZCB7XG5cdFx0aWYgKGU/LmRhdGE/LnNlcnZpY2UgPT09IFwic2FwLnVpLmludGVyYWN0aW9uLlVwZGF0ZURpc3BsYXlcIikge1xuXHRcdFx0Y29uc3QgZWxlbWVudHMgPSBlLmRhdGEucGF5bG9hZC5lbGVtZW50cyBhcyBLZXlib2FyZEVsZW1lbnRzW107XG5cdFx0XHRlbGVtZW50cy5yZXZlcnNlKCk7XG5cdFx0XHR0aGlzLnN0YXRlLm9yaWdpbmFsVHJlZSA9IGVsZW1lbnRzLm1hcCgoZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCBub2RlczogU2hvcnRjdXRFbGVtZW50W10gPSBbXTtcblx0XHRcdFx0ZWxlbWVudC5pbnRlcmFjdGlvbnMuZm9yRWFjaCgoc2hvcnRjdXQpID0+IHtcblx0XHRcdFx0XHRpZiAoKHNob3J0Y3V0IGFzIFJlZktleWJvYXJkSW50ZXJhY3Rpb24pLiRyZWYpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGludGVyYWN0aW9ucyA9IGdldERvY3NEZXRhaWwoKHNob3J0Y3V0IGFzIFJlZktleWJvYXJkSW50ZXJhY3Rpb24pLiRyZWYsIGUuZGF0YS5wYXlsb2FkKTtcblx0XHRcdFx0XHRcdGludGVyYWN0aW9ucz8uZm9yRWFjaCgoZG9jdW1lbnRhdGlvbkludGVyYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5vZGVzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBkb2N1bWVudGF0aW9uSW50ZXJhY3Rpb24uZGVzY3JpcHRpb24ucmVwbGFjZUFsbChcIjxrYmRcIiwgXCI8c3Ryb25nXCIpLnJlcGxhY2VBbGwoXCI8L2tiZD5cIiwgXCI8L3N0cm9uZz5cIiksXG5cdFx0XHRcdFx0XHRcdFx0c2hvcnRjdXRLZXlzOiBkb2N1bWVudGF0aW9uSW50ZXJhY3Rpb24ua2JkXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG5vZGVzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogKChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLmRlc2NyaXB0aW9uID8/IChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLm5hbWUpXG5cdFx0XHRcdFx0XHRcdFx0LnJlcGxhY2VBbGwoXCI8a2JkXCIsIFwiPHN0cm9uZ1wiKVxuXHRcdFx0XHRcdFx0XHRcdC5yZXBsYWNlQWxsKFwiPC9rYmQ+XCIsIFwiPC9zdHJvbmc+XCIpLFxuXHRcdFx0XHRcdFx0XHRzaG9ydGN1dEtleXM6IChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLmtiZFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRsYWJlbDogZWxlbWVudC5sYWJlbC5yZXBsYWNlQWxsKFwiPGtiZFwiLCBcIjxzdHJvbmdcIikucmVwbGFjZUFsbChcIjwva2JkPlwiLCBcIjwvc3Ryb25nPlwiKSxcblx0XHRcdFx0XHRub2Rlczogbm9kZXNcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHR0aGlzLnN0YXRlLnNob3J0Y3V0c1RyZWUgPSBjb2xsYXBzZUR1cGxpY2F0ZSh0aGlzLnN0YXRlLm9yaWdpbmFsVHJlZS5jb25jYXQoKSwgXCJcIik7XG5cdH1cblxuXHRvblN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuXHRcdHRoaXMuJHRyZWUuY3VycmVudD8uZXhwYW5kVG9MZXZlbCgxKTtcblx0fVxuXG5cdG9uU2VhcmNoKF9lOiBTZWFyY2hGaWVsZCRTZWFyY2hFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IHF1ZXJ5ID0gX2UuZ2V0UGFyYW1ldGVyKFwicXVlcnlcIikgPz8gXCJcIjtcblx0XHR0aGlzLnN0YXRlLnNob3J0Y3V0c1RyZWUgPSBjb2xsYXBzZUR1cGxpY2F0ZShcblx0XHRcdHRoaXMuc3RhdGUub3JpZ2luYWxUcmVlXG5cdFx0XHRcdC5maWx0ZXIoKGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRjb25zdCBpc1RpdGxlTWF0Y2ggPSBlbGVtZW50LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdFx0XHRcdFx0Y29uc3QgaXNOb2RlTWF0Y2ggPSBlbGVtZW50Lm5vZGVzLnNvbWUoKG5vZGUpID0+IG5vZGUubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b0xvd2VyQ2FzZSgpKSk7XG5cdFx0XHRcdFx0cmV0dXJuIGlzVGl0bGVNYXRjaCB8fCBpc05vZGVNYXRjaDtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNvbmNhdCgpLFxuXHRcdFx0cXVlcnlcblx0XHQpO1xuXHR9XG5cblx0Y3JlYXRlQ29udGVudCgpOiBQYW5lbCB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxQYW5lbCBoZWFkZXJUZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1NIT1JUQ1VUX1RJVExFXCIpfSB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiBbXG5cdFx0XHRcdFx0XHQ8U2VhcmNoRmllbGRcblx0XHRcdFx0XHRcdFx0cmVmPXt0aGlzLiRzZWFyY2hGaWVsZH1cblx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfU0hPUlRDVVRfUExBQ0VIT0xERVJcIil9XG5cdFx0XHRcdFx0XHRcdHNlYXJjaD17KGUpOiB2b2lkID0+IHRoaXMub25TZWFyY2goZSl9XG5cdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdDxUcmVlXG5cdFx0XHRcdFx0XHRcdHJlZj17dGhpcy4kdHJlZX1cblx0XHRcdFx0XHRcdFx0aXRlbXM9e3sgbW9kZWw6IFwiJGNvbXBvbmVudFN0YXRlXCIsIHBhdGg6IFwiL3Nob3J0Y3V0c1RyZWVcIiwgcGFyYW1ldGVyczogeyBhcnJheU5hbWVzOiBbXCJub2Rlc1wiXSB9IH19XG5cdFx0XHRcdFx0XHRcdG5vRGF0YVRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfU0hPUlRDVVRfTk9EQVRBXCIpfVxuXHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHQ8Q3VzdG9tVHJlZUl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3ggYWxpZ25JdGVtcz17XCJTdGFydFwifSB3aWR0aD17XCIxMDAlXCJ9IHJlbmRlclR5cGU9e1wiQmFyZVwifSBqdXN0aWZ5Q29udGVudD17XCJTcGFjZUJldHdlZW5cIn0+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8Rm9ybWF0dGVkVGV4dCBodG1sVGV4dD17dGhpcy5zdGF0ZS5zaG9ydGN1dHNUcmVlLmxhYmVsfSBjbGFzcz17XCJzYXBGZUNvbnRyb2xzU2hvcmN1dE1GVFwifSAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVuZGVyVHlwZT17XCJCYXJlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtcIlNwYWNlQmV0d2VlblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17XCJ7JGNvbXBvbmVudFN0YXRlPnNob3J0Y3V0S2V5c31cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlyZWN0aW9uPXtcIkNvbHVtblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBmdW5jdGlvbiAoaWQ6IHN0cmluZywgY29udGV4dDogQ29udGV4dCk6IExhYmVsIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Y3V0S2V5ID0gY29udGV4dC5nZXRPYmplY3QoKSBhcyBzdHJpbmcgfCB7IHJhdzogc3RyaW5nOyB0cmFuc2xhdGVkOiBzdHJpbmcgfTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Q3V0VGV4dCA9IHR5cGVvZiBzaG9ydGN1dEtleSA9PT0gXCJzdHJpbmdcIiA/IHNob3J0Y3V0S2V5IDogc2hvcnRjdXRLZXkucmF3O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgdHJhbnNsYXRlZFNob3J0Q3V0VGV4dCA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBzaG9ydGN1dEtleSA9PT0gXCJzdHJpbmdcIiA/IHNob3J0Y3V0S2V5IDogc2hvcnRjdXRLZXkudHJhbnNsYXRlZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Y3V0S2V5cyA9IHNob3J0Q3V0VGV4dC5zcGxpdChcIitcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0cmFuc2xhdGVkU2hvcnRDdXRLZXlzID0gdHJhbnNsYXRlZFNob3J0Q3V0VGV4dC5zcGxpdChcIitcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBlbGVtZW50czogQ29udHJvbFtdID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaG9ydGN1dEtleXMuZm9yRWFjaCgocmF3S2V5OiBzdHJpbmcsIGlkeDogbnVtYmVyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRyYW5zbGF0ZWRLZXkgPSB0cmFuc2xhdGVkU2hvcnRDdXRLZXlzW2lkeF0gPz8gcmF3S2V5O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbGVtZW50cy5wdXNoKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxMYWJlbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17bWFwS2V5VG9TeW1ib2wocmF3S2V5LCB0cmFuc2xhdGVkS2V5KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpbkVuZCBzYXBGZUNvbnRyb2xzU2hvcnRjdXRLZXlcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaWR4ICE9PSBzaG9ydGN1dEtleXMubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsZW1lbnRzLnB1c2goPExhYmVsIHRleHQ9e1wiK1wifSBjbGFzcz17XCJzYXBVaVRpbnlNYXJnaW5FbmRcIn0gLz4pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94IGlkPXtpZH0gcmVuZGVyVHlwZT17XCJCYXJlXCJ9IGFsaWduSXRlbXM9e1wiQ2VudGVyXCJ9PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7IGl0ZW1zOiBlbGVtZW50cyB9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdDwvQ3VzdG9tVHJlZUl0ZW0+XG5cdFx0XHRcdFx0XHQ8L1RyZWU+XG5cdFx0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
|
|
@@ -126,6 +126,11 @@ export default class ShortcutTool extends BuildingBlockBase<Panel, ShortcutToolS
|
|
|
126
126
|
|
|
127
127
|
setupPort(messagePort: MessagePort): void {
|
|
128
128
|
messagePort.onmessage = this.onMessageReceived.bind(this);
|
|
129
|
+
// We send a message to stop the display if it is already running
|
|
130
|
+
// and then start it again to ensure we have the latest data.
|
|
131
|
+
// This is to ensure that the popup is always up-to-date with the latest shortcuts
|
|
132
|
+
// and to avoid any potential issues with the display being already running.
|
|
133
|
+
messagePort.postMessage({ service: "sap.ui.interaction.StopDisplay" });
|
|
129
134
|
messagePort.postMessage({ service: "sap.ui.interaction.StartDisplay" });
|
|
130
135
|
}
|
|
131
136
|
|