@agilemotion/oui-react-js 2.0.27 → 2.0.29
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/dist/AuthImage.js +68 -0
- package/dist/components/FileThumb.js +25 -54
- package/dist/components/TabPanel.js +14 -3
- package/dist/components/form/UploadField.js +14 -45
- package/dist/components/media/VCRoomParticipant.js +5 -9
- package/dist/components/media/VideoPlayer.js +75 -7
- package/dist/components/media/chat/ChatRoom.js +17 -19
- package/dist/documentDownload.js +79 -0
- package/package.json +1 -1
|
@@ -22,6 +22,8 @@ var _linkifyReact = _interopRequireDefault(require("linkify-react"));
|
|
|
22
22
|
var _File = _interopRequireDefault(require("../../customInput/File"));
|
|
23
23
|
var _ApplicationManager = _interopRequireDefault(require("../../../ApplicationManager"));
|
|
24
24
|
var _RestUtils = require("../../../RestUtils");
|
|
25
|
+
var _documentDownload = require("../../../documentDownload");
|
|
26
|
+
var _AuthImage = _interopRequireDefault(require("../../../AuthImage"));
|
|
25
27
|
var _pdfIcon = _interopRequireDefault(require("../../../assets/img/pdf-icon.png"));
|
|
26
28
|
var _doc = _interopRequireDefault(require("../../../assets/img/doc.png"));
|
|
27
29
|
var _word = _interopRequireDefault(require("../../../assets/img/word.png"));
|
|
@@ -140,13 +142,11 @@ const ChatRoom = props => {
|
|
|
140
142
|
setRefresher(!refresher);
|
|
141
143
|
}
|
|
142
144
|
};
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
link.click();
|
|
149
|
-
}).catch(console.error);
|
|
145
|
+
|
|
146
|
+
// Download a chat attachment to the device (no new tab). Auth + tenant travel in headers via the
|
|
147
|
+
// shared helper, so tokens no longer leak into the URL/query string.
|
|
148
|
+
const onDownload = (fileName, repositoryId) => {
|
|
149
|
+
(0, _documentDownload.downloadDocument)(repositoryId, fileName).catch(console.error);
|
|
150
150
|
};
|
|
151
151
|
const loadMessages = () => {
|
|
152
152
|
scrollToBottom();
|
|
@@ -285,17 +285,15 @@ const ChatRoom = props => {
|
|
|
285
285
|
documents
|
|
286
286
|
} = message;
|
|
287
287
|
const thumbnails = [];
|
|
288
|
-
// TODO : Make docs URL path a config
|
|
289
|
-
const documentDownloadUrl = location + _ApplicationManager.default.getContextRoot() + '/docs/api/v1/manager/download';
|
|
290
|
-
const tokensQueryString = 'access_token=' + sessionStorage.getItem('accessToken') + '&idToken=' + sessionStorage.getItem('idToken');
|
|
291
288
|
documents.forEach((doc, index) => {
|
|
292
289
|
if (doc.type.includes('image')) {
|
|
293
290
|
return thumbnails.push(/*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
294
291
|
key: index,
|
|
295
292
|
className: 'col'
|
|
296
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
293
|
+
}, /*#__PURE__*/_react.default.createElement(_AuthImage.default, {
|
|
297
294
|
key: index,
|
|
298
|
-
|
|
295
|
+
repositoryId: doc.repositoryId,
|
|
296
|
+
fallbackSrc: doc.payload,
|
|
299
297
|
alt: "",
|
|
300
298
|
style: {
|
|
301
299
|
width: 250,
|
|
@@ -306,7 +304,7 @@ const ChatRoom = props => {
|
|
|
306
304
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
307
305
|
component: "span",
|
|
308
306
|
onClick: () => {
|
|
309
|
-
onDownload(documents[index].name,
|
|
307
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
310
308
|
}
|
|
311
309
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
312
310
|
id: 'DOWNLOAD'
|
|
@@ -336,7 +334,7 @@ const ChatRoom = props => {
|
|
|
336
334
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
337
335
|
component: "span",
|
|
338
336
|
onClick: () => {
|
|
339
|
-
onDownload(documents[index].name,
|
|
337
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
340
338
|
}
|
|
341
339
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
342
340
|
id: 'DOWNLOAD'
|
|
@@ -368,7 +366,7 @@ const ChatRoom = props => {
|
|
|
368
366
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
369
367
|
component: "span",
|
|
370
368
|
onClick: () => {
|
|
371
|
-
onDownload(documents[index].name,
|
|
369
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
372
370
|
}
|
|
373
371
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
374
372
|
id: 'DOWNLOAD'
|
|
@@ -400,7 +398,7 @@ const ChatRoom = props => {
|
|
|
400
398
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
401
399
|
component: "span",
|
|
402
400
|
onClick: () => {
|
|
403
|
-
onDownload(documents[index].name,
|
|
401
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
404
402
|
}
|
|
405
403
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
406
404
|
id: 'DOWNLOAD'
|
|
@@ -432,7 +430,7 @@ const ChatRoom = props => {
|
|
|
432
430
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
433
431
|
component: "span",
|
|
434
432
|
onClick: () => {
|
|
435
|
-
onDownload(documents[index].name,
|
|
433
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
436
434
|
}
|
|
437
435
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
438
436
|
id: 'DOWNLOAD'
|
|
@@ -470,7 +468,7 @@ const ChatRoom = props => {
|
|
|
470
468
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
471
469
|
component: "span",
|
|
472
470
|
onClick: () => {
|
|
473
|
-
onDownload(documents[index].name,
|
|
471
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
474
472
|
}
|
|
475
473
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
476
474
|
id: 'DOWNLOAD'
|
|
@@ -783,4 +781,4 @@ const ChatRoom = props => {
|
|
|
783
781
|
}
|
|
784
782
|
};
|
|
785
783
|
var _default = exports.default = ChatRoom;
|
|
786
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0ZXJpYWwiLCJfU2VuZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfVG9vbHRpcCIsIl9yZWFjdFJvdXRlckRvbSIsIl9tb21lbnQiLCJfSW5wdXRBZG9ybm1lbnQiLCJfU3R5bGVzIiwiX0N1c3RvbUlucHV0IiwiX0xvdHRpZUljb24iLCJfcmVhY3RGZWF0aGVyIiwiX1V0aWxzIiwiX1ZDRXZlbnRUeXBlIiwiX2xpbmtpZnlSZWFjdCIsIl9GaWxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9SZXN0VXRpbHMiLCJfcGRmSWNvbiIsIl9kb2MiLCJfd29yZCIsIl9leGNlbCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0ljb24iLCJfQ2hhdFBvbGwiLCJfUG9sbENvbnRhaW5lciIsIl9pY29uc01hdGVyaWFsIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwibG9jYXRpb24iLCJleHBvcnRzIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIkNoYXRSb29tIiwicHJvcHMiLCJuYXZpZ2F0ZSIsInVzZU5hdmlnYXRlIiwicmVmcmVzaGVyIiwic2V0UmVmcmVzaGVyIiwidXNlU3RhdGUiLCJtZXNzYWdlIiwic2V0TWVzc2FnZSIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImRvY3VtZW50cyIsInNldERvY3VtZW50cyIsIm1lc3NhZ2VzIiwic2V0TWVzc2FnZXMiLCJuZXdQYXJ0aWNpcGFudHMiLCJzZXROZXdQYXJ0aWNpcGFudHMiLCJjb25maXJtIiwic2V0SW1nVXBsb2FkQ29uZmlybSIsIm1lc3NhZ2VzRW5kUmVmIiwidXNlUmVmIiwibG9hZGluZyIsInNldExvYWRpbmciLCJtb2RlIiwic2V0TW9kZSIsImNsZWFyVXBsb2FkZWRGaWxlU3dpdGNoIiwic2V0Q2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2giLCJzb2NrZXRFdmVudEhhbmRsZXIiLCJjdXJyZW50VXNlciIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldFVzZXJEZXRhaWxzIiwic29ja2V0RXZlbnRIYW5kbGVyQXBpIiwiaWQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJDSEFUX01FU1NBR0UiLCJvbk1lc3NhZ2UiLCJwYXlsb2FkIiwiREVMRVRFX0NIQVRfTUVTU0FHRSIsIm9uRGVsZXRlTWVzc2FnZSIsIlNZU1RFTV9FVkVOVCIsIm9uU3lzdGVtRXZlbnQiLCJmZXRjaENoYXQiLCJ1cmwiLCJtZWV0aW5nS2V5IiwiY29uY2F0IiwiZ2V0Q29udGV4dFJvb3QiLCJtZWV0aW5nSWQiLCJzZW5kUmVxdWVzdCIsInJlc3BvbnNlIiwiY2xvc2VQb2xsSGFuZGxlciIsInBvbGwiLCJwb3N0RGF0YSIsInNlbmRNZXNzYWdlIiwicXVlc3Rpb24iLCJzdWJtaXRQb2xsVm90ZUhhbmRsZXIiLCJpc1RpZUJyZWFrZXIiLCJ1bmRlZmluZWQiLCJjaGF0UGFydGljaXBhbnQiLCJwYXJ0aWNpcGFudHMiLCJmaW5kIiwicCIsInVzZXJuYW1lIiwiZGF0YSIsInBvbGxJZCIsIm9wdGlvbklkIiwidGllQnJlYWtlck9wdGlvbiIsInNlbGVjdGVkT3B0aW9uIiwidGllQnJlYWtlciIsInN5c3RlbUV2ZW50VHlwZSIsIm1zZyIsInJvb21JZCIsImNoYXRNZXNzYWdlIiwidHlwZSIsImNoYXRUYWIiLCJhZGRlZFBlb3BsZUhhbmRsZXIiLCJsb2FkTWVzc2FnZXMiLCJjb25zb2xlIiwibG9nIiwibSIsIm1lc3NhZ2VJZCIsImFjdGl2ZSIsIm9uRG93bmxvYWQiLCJmaWxlTmFtZSIsImZldGNoIiwidGhlbiIsImJsb2IiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaHJlZiIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImRvd25sb2FkIiwiY2xpY2siLCJjYXRjaCIsImVycm9yIiwic2Nyb2xsVG9Cb3R0b20iLCJuZXdNZXNzYWdlcyIsInNob3dBbGxNZXNzYWdlc0Zvck5ld1BhcnRpY2lwYW50cyIsImRhdGVBZGRlZFRvQ2hhdCIsIkRhdGUiLCJmaWx0ZXJlZE1lc3NhZ2VzIiwidHh0IiwiY3JlYXRlZERhdGUiLCJnZXRDaGF0Um9vbVRpdGxlIiwidGl0bGUiLCJ1c2VFZmZlY3QiLCJ1c2VySWQiLCJVdGlscyIsImlzTnVsbCIsImNoYXRJZCIsImFwaSIsInZjRXZlbnRNYW5hZ2VyIiwiYWRkU3Vic2NyaXB0aW9ucyIsInJlbW92ZVN1YnNjcmlwdGlvbnMiLCJjdXJyZW50Iiwic2Nyb2xsIiwidG9wIiwic2Nyb2xsSGVpZ2h0IiwiYmVoYXZpb3IiLCJoYW5kbGVDaGFuZ2UiLCJ0YXJnZXQiLCJwYXJ0aWNpcGFudHNVc2VySWRzIiwidXNlciIsIm1hcCIsImZpbmFsTWVzc2FnZSIsInByZXZlbnREZWZhdWx0IiwibVR5cGUiLCJjb21iaW5lZFNpemUiLCJkb2MiLCJwYXJzZUludCIsInNpemUiLCJhbGVydCIsImdldFRvcFZpZXciLCJTeXN0ZW1FdmVudFR5cGUiLCJBUElfRVJST1IiLCJjb250ZW50IiwicGFydGljaXBhbnQiLCJwYXJ0aWNpcGFudHNUb1NpZ25hbElkcyIsInNvY2tldE1hbmFnZXIiLCJlbWl0RXZlbnQiLCJza2lwQWxlcnQiLCJuZXdDaGF0IiwicHJvZmlsZSIsImdldEFjdGl2ZVRlbmFudCIsIm9sZE1zZ3MiLCJvcGVuQWRkUGVvcGxlRGlhbG9nIiwic2V0T3BlbkFkZFBlb3BsZSIsInJlbmRlckZpbGVUaHVtYm5haWwiLCJ0aHVtYm5haWxzIiwiZG9jdW1lbnREb3dubG9hZFVybCIsInRva2Vuc1F1ZXJ5U3RyaW5nIiwic2Vzc2lvblN0b3JhZ2UiLCJnZXRJdGVtIiwiaW5kZXgiLCJpbmNsdWRlcyIsImtleSIsImNsYXNzTmFtZSIsInNyYyIsInJlcG9zaXRvcnlJZCIsImFsdCIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJJY29uQnV0dG9uIiwiY29tcG9uZW50Iiwib25DbGljayIsIm5hbWUiLCJmb250U2l6ZSIsIm1hcmdpblRvcCIsInBkZkljb24iLCJib3JkZXJCb3R0b20iLCJkb2NJY29uIiwid29yZEljb24iLCJ4c2xJY29uIiwicGFkZGluZ0JvdHRvbSIsImJvcmRlcldpZHRoIiwicGhwSWNvbiIsInJlbmRlckxpbmsiLCJfcmVmIiwiYXR0cmlidXRlcyIsIm9wZW4iLCJkZWxldGVDaGF0TWVzc2FnZSIsInJlbmRlck1lc3NhZ2UiLCJwYWRkaW5nUmlnaHQiLCJBdmF0YXIiLCJnZXRJbml0aWFscyIsImJvcmRlciIsImJvcmRlclJhZGl1cyIsInBhZGRpbmciLCJmb250U3R5bGUiLCJtYXJnaW4iLCJtb21lbnQiLCJmb3JtYXQiLCJkaXNhYmxlTWVzc2FnZURlbGV0ZSIsIm9wdGlvbnMiLCJyZW5kZXIiLCJzcGxpdCIsInRva2VuIiwiRnJhZ21lbnQiLCJJbmZvIiwiaXNIb3N0IiwiaXNDaGFpclBlcnNvbiIsInBvbGxDcmVhdG9yIiwicG9sbFBhcnRpY2lwYW50SURzIiwibnVtYmVyT2ZQb2xsUGFydGljaXBhbnRzIiwicmVmcmVzaFBvbGxIYW5kbGVyIiwiX21lc3NhZ2VzJGZpbHRlciRzb3J0IiwibWVyZ2VPYmplY3RzIiwiaGVhZGVyU3R5bGUiLCJQb2xsIiwiY29sb3IiLCJjcmVhdGVQb2xsSGFuZGxlciIsInBvbGxEYXRhIiwiY2FuY2VsUG9sbEhhbmRsZXIiLCJyZWYiLCJwb2xsc09ubHkiLCJzb3J0IiwiYSIsImIiLCJyZWFkT25seSIsInBvc2l0aW9uIiwiZGlzYWJsZUZpbGVBdHRhY2htZW50IiwiekluZGV4IiwiZW5hYmxlRmlsZSIsIm11bHRpcGxlIiwiaWNvbkNvbG9yIiwidmFsdWVDaGFuZ2VIYW5kbGVyIiwibGFiZWxUZXh0IiwiZGlzYWJsZWQiLCJtdWx0aWxpbmUiLCJmb3JtQ29udHJvbFByb3BzIiwiZnVsbFdpZHRoIiwiYXV0b0ZvY3VzIiwiaW5wdXRQcm9wcyIsImVuZEFkb3JubWVudCIsInN0eWxlcyIsImlucHV0QWRvcm5tZW50SWNvbiIsIm9uQ2hhbmdlIiwiZm9udFdlaWdodCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21lZGlhL2NoYXQvQ2hhdFJvb20uanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtBdmF0YXIsIEljb25CdXR0b259IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuaW1wb3J0IFNlbmRJY29uIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvU2VuZCc7XG5pbXBvcnQgVG9vbHRpcCBmcm9tICdAbXVpL21hdGVyaWFsL1Rvb2x0aXAnO1xuaW1wb3J0IHt1c2VOYXZpZ2F0ZX0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgJy4vQ2hhdFJvb21zLnNjc3MnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IElucHV0QWRvcm5tZW50IGZyb20gJ0BtdWkvbWF0ZXJpYWwvSW5wdXRBZG9ybm1lbnQnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL1N0eWxlcyc7XG5pbXBvcnQgQ3VzdG9tSW5wdXQgZnJvbSAnLi4vLi4vY3VzdG9tSW5wdXQvQ3VzdG9tSW5wdXQnO1xuaW1wb3J0IExvdHRpZUljb24gZnJvbSAnLi4vLi4vTG90dGllSWNvbic7XG5pbXBvcnQge0luZm99IGZyb20gJ3JlYWN0LWZlYXRoZXInO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uLy4uL1V0aWxzJztcbmltcG9ydCB7VkNFdmVudFR5cGV9IGZyb20gXCIuLi9WQ0V2ZW50VHlwZVwiO1xuaW1wb3J0IExpbmtpZnkgZnJvbSBcImxpbmtpZnktcmVhY3RcIjtcbmltcG9ydCBGaWxlIGZyb20gXCIuLi8uLi9jdXN0b21JbnB1dC9GaWxlXCI7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gXCIuLi8uLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXJcIjtcbmltcG9ydCB7cG9zdERhdGEsIHNlbmRSZXF1ZXN0fSBmcm9tIFwiLi4vLi4vLi4vUmVzdFV0aWxzXCI7XG5pbXBvcnQgcGRmSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaW1nL3BkZi1pY29uLnBuZydcbmltcG9ydCBkb2NJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pbWcvZG9jLnBuZydcbmltcG9ydCB3b3JkSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaW1nL3dvcmQucG5nJ1xuaW1wb3J0IHhzbEljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ltZy9leGNlbC5wbmcnXG5pbXBvcnQgcGhwSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaW1nL2V4Y2VsLnBuZydcbmltcG9ydCB2Y0V2ZW50TWFuYWdlciBmcm9tIFwiLi4vVkNFdmVudE1hbmFnZXJcIjtcbmltcG9ydCBzb2NrZXRNYW5hZ2VyIGZyb20gXCIuLi8uLi9Tb2NrZXRNYW5hZ2VyXCI7XG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vSWNvblwiO1xuaW1wb3J0IENoYXRQb2xsIGZyb20gXCIuL0NoYXRQb2xsXCI7XG5pbXBvcnQgUG9sbENvbnRhaW5lciBmcm9tIFwiLi9Qb2xsQ29udGFpbmVyXCI7XG5pbXBvcnQge1BvbGx9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5cbmV4cG9ydCBjb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5cbmNvbnN0IENoYXRSb29tID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgbmF2aWdhdGUgPSB1c2VOYXZpZ2F0ZSgpO1xuXG4gICAgY29uc3QgW3JlZnJlc2hlciwgc2V0UmVmcmVzaGVyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbbWVzc2FnZSwgc2V0TWVzc2FnZV0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW3NlbGVjdGVkQ2hhdCwgc2V0U2VsZWN0ZWRDaGF0XSA9IHVzZVN0YXRlKHByb3BzLnNlbGVjdGVkQ2hhdCk7XG4gICAgY29uc3QgW2RvY3VtZW50cywgc2V0RG9jdW1lbnRzXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFttZXNzYWdlcywgc2V0TWVzc2FnZXNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFtuZXdQYXJ0aWNpcGFudHMsIHNldE5ld1BhcnRpY2lwYW50c10gPSB1c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2NvbmZpcm0sIHNldEltZ1VwbG9hZENvbmZpcm1dID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IG1lc3NhZ2VzRW5kUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFttb2RlLCBzZXRNb2RlXSA9IHVzZVN0YXRlKCdDSEFUJyk7XG4gICAgY29uc3QgW2NsZWFyVXBsb2FkZWRGaWxlU3dpdGNoLCBzZXRDbGVhclVwbG9hZGVkRmlsZVN3aXRjaF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NvY2tldEV2ZW50SGFuZGxlcl0gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2N1cnJlbnRVc2VyXSA9IHVzZVN0YXRlKGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpKTtcblxuICAgIGNvbnN0IHNvY2tldEV2ZW50SGFuZGxlckFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NoYXQtcm9vbS0xMjI5OTE4MjknO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiAoZXZlbnRUeXBlLCBiZSkgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25NZXNzYWdlKGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuREVMRVRFX0NIQVRfTUVTU0FHRTpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlTWVzc2FnZShiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlNZU1RFTV9FVkVOVDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3lzdGVtRXZlbnQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgZmV0Y2hDaGF0ID0gKCkgPT4ge1xuICAgICAgICBsZXQgdXJsID0gc2VsZWN0ZWRDaGF0Lm1lZXRpbmdLZXkgP1xuICAgICAgICAgICAgYCR7bG9jYXRpb24gKyAnLycgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vY2FsZW5kYXIvYXBpL3YxL2NoYXQvZmV0Y2hNZWV0aW5nQ2hhdEJ5S2V5LyR7c2VsZWN0ZWRDaGF0Lm1lZXRpbmdLZXl9YFxuICAgICAgICAgICAgOiBzZWxlY3RlZENoYXQubWVldGluZ0lkID9cbiAgICAgICAgICAgIGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9jaGF0L2ZldGNoTWVldGluZ0NoYXQvJHtzZWxlY3RlZENoYXQubWVldGluZ0lkfWBcbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgIGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9jaGF0L2ZldGNoLyR7c2VsZWN0ZWRDaGF0LmlkfWA7XG4gICAgICAgIHNlbmRSZXF1ZXN0KHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaWQpIHtcbiAgICAgICAgICAgICAgICAvLyBQcmVzZXJ2ZSBtZWV0aW5nS2V5IHNvIHN1YnNlcXVlbnQgcmVmcmVzaGVzIHN0YXkgb24gdGhlIGJ5LWtleSBsb29rdXAuXG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRDaGF0KHsuLi5yZXNwb25zZSwgbWVldGluZ0tleTogc2VsZWN0ZWRDaGF0Lm1lZXRpbmdLZXl9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICB9LCB0cnVlLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNsb3NlUG9sbEhhbmRsZXIgPSAoZSwgcG9sbCkgPT4ge1xuICAgICAgICBwb3N0RGF0YShgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvcG9sbC9jbG9zZWAsXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShlLCBgUG9sbDogJHtwb2xsLnF1ZXN0aW9ufSBoYXMgYmVlbiBjbG9zZWQuYCk7XG4gICAgICAgICAgICAgICAgZmV0Y2hDaGF0KCk7XG4gICAgICAgICAgICB9LCAoZSkgPT4ge1xuXG4gICAgICAgICAgICB9LCB0cnVlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiBwb2xsLmlkXG4gICAgICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc3VibWl0UG9sbFZvdGVIYW5kbGVyID0gKHBvbGwsIGlzVGllQnJlYWtlciA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGxldCBjaGF0UGFydGljaXBhbnQgPSBzZWxlY3RlZENoYXQucGFydGljaXBhbnRzLmZpbmQocCA9PiBwLnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSk7XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIHBvbGxJZDogcG9sbC5pZCxcbiAgICAgICAgICAgIG9wdGlvbklkOiBpc1RpZUJyZWFrZXIgPyBwb2xsLnRpZUJyZWFrZXJPcHRpb24gOiBwb2xsLnNlbGVjdGVkT3B0aW9uLFxuICAgICAgICAgICAgY2hhdFBhcnRpY2lwYW50OiBjaGF0UGFydGljaXBhbnQsXG4gICAgICAgICAgICB0aWVCcmVha2VyOiBpc1RpZUJyZWFrZXJcbiAgICAgICAgfTtcblxuICAgICAgICBwb3N0RGF0YShgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvcG9sbC92b3RlYCxcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGZldGNoQ2hhdCgpO1xuICAgICAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICAgICAgfSwgdHJ1ZSwgZGF0YSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uU3lzdGVtRXZlbnQgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC5zeXN0ZW1FdmVudFR5cGUgPT09IFwiTkVXX1BPTExfVk9URVwiKSB7XG4gICAgICAgICAgICBsZXQgZmluZCA9IG1lc3NhZ2VzLmZpbmQoKG1zZykgPT4gbXNnLnBvbGwgJiYgbXNnLnBvbGwuaWQgPT09IHBheWxvYWQuZGF0YS5wb2xsSWQpO1xuICAgICAgICAgICAgaWYgKGZpbmQpIHtcbiAgICAgICAgICAgICAgICAvL2ZpbmQudG90YWxWb3RlcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTWVzc2FnZSA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZENoYXQgJiYgc2VsZWN0ZWRDaGF0LmlkID09PSBwYXlsb2FkLnJvb21JZCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLm9uTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHByb3BzLm9uTWVzc2FnZShwYXlsb2FkLmNoYXRNZXNzYWdlLCBzZWxlY3RlZENoYXQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGF5bG9hZC5jaGF0TWVzc2FnZS50eXBlID09PSAnRVZFTlQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmNoYXRUYWIpIHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hDaGF0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuYWRkZWRQZW9wbGVIYW5kbGVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZWxlY3RlZENoYXQubWVzc2FnZXMucHVzaChwYXlsb2FkLmNoYXRNZXNzYWdlKTtcbiAgICAgICAgICAgIGxvYWRNZXNzYWdlcygpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uRGVsZXRlTWVzc2FnZSA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTUVTU0FHRVMgOiBcIiwgbWVzc2FnZXMpO1xuICAgICAgICBsZXQgbXNnID0gbWVzc2FnZXMuZmluZCgobSkgPT4gbS5pZCA9PT0gcGF5bG9hZC5tZXNzYWdlSWQpO1xuICAgICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgICAgICBpZiAobXNnKSB7XG4gICAgICAgICAgICBtc2cuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRSZWZyZXNoZXIoIXJlZnJlc2hlcik7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Eb3dubG9hZCA9IChmaWxlTmFtZSwgdXJsKSA9PiB7XG4gICAgICAgIGZldGNoKHVybClcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmJsb2IoKSlcbiAgICAgICAgICAgIC50aGVuKGJsb2IgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgIH07XG5cbiAgICBjb25zdCBsb2FkTWVzc2FnZXMgPSAoKSA9PiB7XG4gICAgICAgIHNjcm9sbFRvQm90dG9tKCk7XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJcXG5cXG5cXG5cXG5NRVNTQUdFUyA6IFwiLCBzZWxlY3RlZENoYXQubWVzc2FnZXMpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRDaGF0KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFtdLmNvbmNhdChzZWxlY3RlZENoYXQubWVzc2FnZXMpO1xuICAgICAgICAgICAgaWYgKCFwcm9wcy5zaG93QWxsTWVzc2FnZXNGb3JOZXdQYXJ0aWNpcGFudHMpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmluZCA9IHNlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMuZmluZChwID0+IHAudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlQWRkZWRUb0NoYXQgPSBmaW5kID8gZmluZC5kYXRlQWRkZWRUb0NoYXQgOiBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkTWVzc2FnZXMgPSBuZXdNZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHR4dCA9PiBkYXRlQWRkZWRUb0NoYXQgPT09IG51bGwgfHwgbmV3IERhdGUoZGF0ZUFkZGVkVG9DaGF0KSA8IG5ldyBEYXRlKHR4dC5jcmVhdGVkRGF0ZSkpO1xuICAgICAgICAgICAgICAgIHNldE1lc3NhZ2VzKGZpbHRlcmVkTWVzc2FnZXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRNZXNzYWdlcyhuZXdNZXNzYWdlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZ2V0Q2hhdFJvb21UaXRsZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdC50eXBlID09PSAnQ0FMRU5EQVJfTUVFVElORycgfHwgc2VsZWN0ZWRDaGF0LnRpdGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRDaGF0LnRpdGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRTZWxlY3RlZENoYXQocHJvcHMuc2VsZWN0ZWRDaGF0KTtcbiAgICB9LCBbcHJvcHMuc2VsZWN0ZWRDaGF0XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzY3JvbGxUb0JvdHRvbSgpO1xuICAgIH0sIFttZXNzYWdlc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdCAmJiBjdXJyZW50VXNlcikge1xuICAgICAgICAgICAgc2V0TWVzc2FnZSgnJyk7XG4gICAgICAgICAgICBzZXREb2N1bWVudHMobnVsbCk7XG5cbiAgICAgICAgICAgIGxldCBmaW5kID0gc2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5maW5kKHAgPT4gcC51c2VySWQgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lIHx8IHAudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKTtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoZmluZCkpIHtcbiAgICAgICAgICAgICAgICBwb3N0RGF0YShgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvY2hhdC9hZGRQYXJ0aWNpcGFudHNgLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICAgICAgICAgIH0sIHRydWUsIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhdElkOiBzZWxlY3RlZENoYXQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50czogW2N1cnJlbnRVc2VyXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsb2FkTWVzc2FnZXMoKTtcbiAgICAgICAgfVxuICAgIH0sIFtzZWxlY3RlZENoYXQsIGN1cnJlbnRVc2VyXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzb2NrZXRFdmVudEhhbmRsZXIuYXBpID0gc29ja2V0RXZlbnRIYW5kbGVyQXBpKCk7XG4gICAgfSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2Y0V2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHNvY2tldEV2ZW50SGFuZGxlciwgVkNFdmVudFR5cGUuREVMRVRFX0NIQVRfTUVTU0FHRSwgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCBWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgdmNFdmVudE1hbmFnZXIucmVtb3ZlU3Vic2NyaXB0aW9ucyhzb2NrZXRFdmVudEhhbmRsZXIpO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IHNjcm9sbFRvQm90dG9tID0gKCkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXNFbmRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgbWVzc2FnZXNFbmRSZWYuY3VycmVudC5zY3JvbGwoe3RvcDogbWVzc2FnZXNFbmRSZWYuY3VycmVudC5zY3JvbGxIZWlnaHQsIGJlaGF2aW9yOiAnc21vb3RoJ30pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlKSA9PiB7XG4gICAgICAgIHNldE1lc3NhZ2UoZS50YXJnZXQudmFsdWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBwYXJ0aWNpcGFudHNVc2VySWRzID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRDaGF0XG4gICAgICAgICAgICAucGFydGljaXBhbnRzXG4gICAgICAgICAgICAuZmlsdGVyKHVzZXIgPT4gdXNlci51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUpXG4gICAgICAgICAgICAubWFwKHVzZXIgPT4gdXNlci51c2VybmFtZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbmRNZXNzYWdlID0gKGUsIGZpbmFsTWVzc2FnZSA9IG51bGwsIHBvbGwgPSBudWxsKSA9PiB7XG4gICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWVzc2FnZSB8fCBkb2N1bWVudHMgfHwgZmluYWxNZXNzYWdlIHx8IHBvbGwpIHtcblxuICAgICAgICAgICAgbGV0IG1UeXBlID0gJ1RFWFQnO1xuXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnRzICYmIGRvY3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbWJpbmVkU2l6ZSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBkb2Mgb2YgZG9jdW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkU2l6ZSA9IGNvbWJpbmVkU2l6ZSArIHBhcnNlSW50KGRvYy5zaXplKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tYmluZWRTaXplID4gNzUwMDAwMCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuYWxlcnQoYXBwbGljYXRpb25NYW5hZ2VyLmdldFRvcFZpZXcoKS5pZCwgU3lzdGVtRXZlbnRUeXBlLkFQSV9FUlJPUiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ0F0dGFjaG1lbnQgc2hvdWxkIGJlIG5vdCBtb3JlIHRoYW4gNy41TUIuJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbVR5cGUgPSAnRklMRSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBvbGwpIHtcbiAgICAgICAgICAgICAgICBtVHlwZSA9ICdQT0xMJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmluYWxNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgbVR5cGUgPSAnRVZFTlQnXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IHtcbiAgICAgICAgICAgICAgICBjcmVhdGVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBtVHlwZSxcbiAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGVudDogZmluYWxNZXNzYWdlID8gZmluYWxNZXNzYWdlIDogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudDogY3VycmVudFVzZXJcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChkb2N1bWVudHMgJiYgZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBtc2cuZG9jdW1lbnRzID0gZG9jdW1lbnRzO1xuICAgICAgICAgICAgICAgIHNldENsZWFyVXBsb2FkZWRGaWxlU3dpdGNoKCFjbGVhclVwbG9hZGVkRmlsZVN3aXRjaCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwb2xsKSB7XG4gICAgICAgICAgICAgICAgbXNnLnBvbGwgPSBwb2xsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtc2cucGFydGljaXBhbnQuYWN0aXZlID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3QgcGFydGljaXBhbnRzVG9TaWduYWxJZHMgPSBwYXJ0aWNpcGFudHNVc2VySWRzKCk7XG4gICAgICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5DSEFUX01FU1NBR0UsIHtcbiAgICAgICAgICAgICAgICByb29tSWQ6IHNlbGVjdGVkQ2hhdC5pZCxcbiAgICAgICAgICAgICAgICBjaGF0TWVzc2FnZTogbXNnLFxuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzLFxuICAgICAgICAgICAgICAgIHNraXBBbGVydDogcHJvcHMuY2hhdFRhYiB8fCBmaW5hbE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgbmV3Q2hhdDogc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgICAgICAgICBtZWV0aW5nSWQ6IHByb3BzLm1lZXRpbmdJZCA/IHByb3BzLm1lZXRpbmdJZCA6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJvZmlsZTogKGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBY3RpdmVUZW5hbnQoKSB8fCBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5wcm9maWxlKVxuICAgICAgICAgICAgfSkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIG1zZy5pZCA9IGRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgc2V0TWVzc2FnZXMob2xkTXNncyA9PiBbLi4ub2xkTXNncywgbXNnXSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzLnB1c2gobXNnKTtcblxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5vbk1lc3NhZ2UgJiYgc2VsZWN0ZWRDaGF0KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uTWVzc2FnZShtc2csIHNlbGVjdGVkQ2hhdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJFcnJvciBzZW5kaW5nIGNoYXQgbWVzc2FnZSA6IFwiLCBlcnJvcilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNldE1lc3NhZ2UoJycpO1xuICAgICAgICBzZXRJbWdVcGxvYWRDb25maXJtKCcnKTtcbiAgICAgICAgc2V0RG9jdW1lbnRzKG51bGwpXG4gICAgfTtcblxuICAgIGNvbnN0IG9wZW5BZGRQZW9wbGVEaWFsb2cgPSAoZSkgPT4ge1xuICAgICAgICBzZXRPcGVuQWRkUGVvcGxlKHRydWUpXG4gICAgfTtcblxuICAgIGNvbnN0IHJlbmRlckZpbGVUaHVtYm5haWwgPSAobWVzc2FnZSkgPT4ge1xuICAgICAgICBjb25zdCB7ZG9jdW1lbnRzfSA9IG1lc3NhZ2U7XG4gICAgICAgIGNvbnN0IHRodW1ibmFpbHMgPSBbXTtcbiAgICAgICAgLy8gVE9ETyA6IE1ha2UgZG9jcyBVUkwgcGF0aCBhIGNvbmZpZ1xuICAgICAgICBjb25zdCBkb2N1bWVudERvd25sb2FkVXJsID0gbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArICcvZG9jcy9hcGkvdjEvbWFuYWdlci9kb3dubG9hZCc7XG4gICAgICAgIGNvbnN0IHRva2Vuc1F1ZXJ5U3RyaW5nID0gJ2FjY2Vzc190b2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKSArICcmaWRUb2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnaWRUb2tlbicpO1xuXG4gICAgICAgIGRvY3VtZW50cy5mb3JFYWNoKChkb2MsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoZG9jLnR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2RvYy5wYXlsb2FkID8gZG9jLnBheWxvYWQgOiBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6ICcxNHB4JywgbWFyZ2luVG9wOiAnMTRweCd9fT57ZG9jLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZG9jLnR5cGUuaW5jbHVkZXMoJ3BkZicpKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17cGRmSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgYCR7ZG9jdW1lbnREb3dubG9hZFVybCArICcvJyArIGRvYy5yZXBvc2l0b3J5SWQgKyAnPycgKyB0b2tlbnNRdWVyeVN0cmluZ31gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydET1dOTE9BRCd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIG5vLW1hcmdpbiBuby1wYWRkaW5nJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2ZvbnRTaXplOiAnMTRweCcsIG1hcmdpblRvcDogJzE0cHgnfX0+e2RvYy5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvYy50eXBlLmluY2x1ZGVzKCdkb2MnKSkge1xuICAgICAgICAgICAgICAgIHRodW1ibmFpbHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e2JvcmRlckJvdHRvbTogJzVweCBzb2xpZCBibGFjayd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2RvY0ljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6IDI1MCwgaGVpZ2h0OiAnYXV0byd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygnd29yZCcpKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IHN0eWxlPXt7Ym9yZGVyQm90dG9tOiAnNXB4IHNvbGlkIGJsYWNrJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17d29yZEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6IDI1MCwgaGVpZ2h0OiAnYXV0byd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygneGxzJykpIHtcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3tib3JkZXJCb3R0b206ICc1cHggc29saWQgYmxhY2snfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXt4c2xJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAyNTAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RPV05MT0FEJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6ICcxNHB4JywgbWFyZ2luVG9wOiAnMTRweCd9fT57ZG9jLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2JvcmRlckJvdHRvbTogJzAuN3B4IHNvbGlkIGJsYWNrJywgcGFkZGluZ0JvdHRvbTogJzhweCcsIGJvcmRlcldpZHRoOiAnNTAlJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtwaHBJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAxMDAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3ttYXJnaW5Ub3A6ICc0cHgnfX0+e2RvY3VtZW50c1tpbmRleF0ubmFtZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RPV05MT0FEJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aHVtYm5haWxzO1xuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJMaW5rID0gKHthdHRyaWJ1dGVzLCBjb250ZW50fSkgPT4ge1xuICAgICAgICBjb25zdCB7aHJlZn0gPSBhdHRyaWJ1dGVzO1xuICAgICAgICByZXR1cm4gPGFcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihocmVmKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICA8L2E+O1xuICAgIH07XG5cbiAgICBjb25zdCBkZWxldGVDaGF0TWVzc2FnZSA9IChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzID0gcGFydGljaXBhbnRzVXNlcklkcygpO1xuICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5ERUxFVEVfQ0hBVF9NRVNTQUdFLCB7XG4gICAgICAgICAgICBtZXNzYWdlSWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgICAgICBwYXJ0aWNpcGFudHNUb1NpZ25hbElkcyxcbiAgICAgICAgICAgIHByb2ZpbGU6IChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QWN0aXZlVGVuYW50KCkgfHwgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkucHJvZmlsZSksXG4gICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgdXNlcm5hbWU6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lXG4gICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgIG1lc3NhZ2UuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRSZWZyZXNoZXIoIXJlZnJlc2hlcik7XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCByZW5kZXJNZXNzYWdlID0gKG1lc3NhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghbWVzc2FnZS5hY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT17J2NoYXRyb29tX19tZXNzYWdlIHJvdyBuby1tYXJnaW4nfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17bWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUgPyBcIm15Y2hhdC1kZWxldGVkXCIgOiBcInBlZXJjaGF0XCJ9PlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e3BhZGRpbmdSaWdodDogJzEycHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1V0aWxzLmdldEluaXRpYWxzKG1lc3NhZ2UucGFydGljaXBhbnQubmFtZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMXB4IHNvbGlkICM1MjVmN2ZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMTZweFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMCA4cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9IHN0eWxlPXt7Zm9udFN0eWxlOiAnaXRhbGljJ319PmRlbGV0ZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ0ZJTEUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImNoYXRyb29tX19tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteWNoYXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e21hcmdpbjogJzRweCAwIDAgMCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIGNoYXQtdGltZSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttb21lbnQobWVzc2FnZS5jcmVhdGVkRGF0ZSkuZm9ybWF0KCdERC9NTSwgSEg6bW0nKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5kaXNhYmxlTWVzc2FnZURlbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDaGF0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnREVMRVRFJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGaWxlVGh1bWJuYWlsKG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAga2V5PXtpbmRleH0+e21lc3NhZ2UuY29udGVudH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyY2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtVdGlscy5nZXRJbml0aWFscyhtZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGVlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e21vbWVudChtZXNzYWdlLmNyZWF0ZWREYXRlKS5mb3JtYXQoJ0REL01NLCBISDptbScpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGaWxlVGh1bWJuYWlsKG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e2luZGV4fT57bWVzc2FnZS5jb250ZW50fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLnR5cGUgPT09ICdURVhUJykge1xuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXljaGF0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30gc3R5bGU9e3ttYXJnaW46ICc0cHggMCAwIDAnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBjaGF0LXRpbWUnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bW9tZW50KG1lc3NhZ2UuY3JlYXRlZERhdGUpLmZvcm1hdCgnREQvTU0sIEhIOm1tJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvcHMuZGlzYWJsZU1lc3NhZ2VEZWxldGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ2hhdE1lc3NhZ2UobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RFTEVURSd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtpZnkga2V5PXtpbmRleH0gb3B0aW9ucz17e3JlbmRlcjogcmVuZGVyTGlua319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e21hcmdpbjogJzAgOHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlLmNvbnRlbnQuc3BsaXQoJ1xcbicpLm1hcCgodG9rZW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+e3Rva2VufTxici8+PC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpbmtpZnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyY2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtVdGlscy5nZXRJbml0aWFscyhtZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGVlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e21vbWVudChtZXNzYWdlLmNyZWF0ZWREYXRlKS5mb3JtYXQoJ0REL01NLCBISDptbScpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtpZnkga2V5PXtpbmRleH0gb3B0aW9ucz17e3JlbmRlcjogcmVuZGVyTGlua319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e21hcmdpbjogJzAgMCA0cHggNHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlLmNvbnRlbnQuc3BsaXQoJ1xcbicpLm1hcCgodG9rZW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+e3Rva2VufTxici8+PC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpbmtpZnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS50eXBlID09PSAnRVZFTlQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdi1wb2xsLWNob2ljZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImN2LXBvbGwtY2hvaWNlLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJjdi1jaG9pY2UtcGVyY2VudGFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2VsZWN0ZWQtY2hvaWNlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJjdi1jaG9pY2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVzc2FnZS5jb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eydjdi1jaG9pY2UtcGVyY2VudC1jaGFydCBldmVudCd9IHN0eWxlPXt7d2lkdGg6ICcxMDAlJ319PlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxQb2xsQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIHBvbGw9e21lc3NhZ2UucG9sbH1cbiAgICAgICAgICAgICAgICAgICAgY2hhdFRhYj17cHJvcHMuY2hhdFRhYn1cbiAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtwcm9wcy5pc0hvc3R9XG4gICAgICAgICAgICAgICAgICAgIGlzQ2hhaXJQZXJzb249e3Byb3BzLmlzQ2hhaXJQZXJzb259XG4gICAgICAgICAgICAgICAgICAgIHBvbGxDcmVhdG9yPXttZXNzYWdlLnBhcnRpY2lwYW50fVxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkRGF0ZT17bWVzc2FnZS5jcmVhdGVkRGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgc3VibWl0UG9sbFZvdGVIYW5kbGVyPXsocG9sbCwgaXNUaWVCcmVha2VyKSA9PiBzdWJtaXRQb2xsVm90ZUhhbmRsZXIocG9sbCwgaXNUaWVCcmVha2VyKX1cbiAgICAgICAgICAgICAgICAgICAgcG9sbFBhcnRpY2lwYW50SURzPXtzZWxlY3RlZENoYXQucGFydGljaXBhbnRzLm1hcChwID0+IHAudXNlcm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VXNlcj17Y3VycmVudFVzZXJ9XG4gICAgICAgICAgICAgICAgICAgIGNsb3NlUG9sbEhhbmRsZXI9eyhlLCBwb2xsKSA9PiBjbG9zZVBvbGxIYW5kbGVyKGUsIHBvbGwpfVxuICAgICAgICAgICAgICAgICAgICBudW1iZXJPZlBvbGxQYXJ0aWNpcGFudHM9e3NlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUG9sbEhhbmRsZXI9eygpID0+IGZldGNoQ2hhdCgpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHNlbGVjdGVkQ2hhdCAmJiBtZXNzYWdlcykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGF0cm9vbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2hhdHJvb21fX2hlYWRlclwiIHN0eWxlPXtVdGlscy5tZXJnZU9iamVjdHMoe30sIHByb3BzLmhlYWRlclN0eWxlKX0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5jaGF0VGFiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoYXRyb29tX19oZWFkZXJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPVwiUG9sbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNb2RlKCdQT0xMJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9sbCBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcHJvcHMuY2hhdFRhYiA/ICdyZWQnIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiBwcm9wcy5jaGF0VGFiID8gJzhweCcgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtb2RlID09PSAnUE9MTCcgP1xuICAgICAgICAgICAgICAgICAgICAgICAgPENoYXRQb2xsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdFRhYj17cHJvcHMuY2hhdFRhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM9e3NlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlUG9sbEhhbmRsZXI9eyhwb2xsRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShudWxsLCBudWxsLCBwb2xsRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vZGUoJ0NIQVQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbFBvbGxIYW5kbGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vZGUoJ0NIQVQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz4gOlxuICAgICAgICAgICAgICAgICAgICAgICAgPD48Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtb2RlID09PSAnQ0hBVCcgP1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cIm1lc3NhZ2VzXCIgcmVmPXttZXNzYWdlc0VuZFJlZn0gY2xhc3NOYW1lPVwiY2hhdHJvb21fX2JvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChtKSA9PiAhcHJvcHMucG9sbHNPbmx5IHx8IG0ucG9sbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBuZXcgRGF0ZShhLmNyZWF0ZWREYXRlKSAtIG5ldyBEYXRlKGIuY3JlYXRlZERhdGUpKT8ubWFwKHJlbmRlck1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdDSEFUJyAmJiAhcHJvcHMucmVhZE9ubHkgJiZcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzTmFtZT1cImNoYXRyb29tX19zZW5kTWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWVzc2FnZV9faW1hZ2VTZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NoYXQtaW5wdXQnfSBzdHlsZT17e3Bvc2l0aW9uOiAncmVsYXRpdmUnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5kaXNhYmxlRmlsZUF0dGFjaG1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImZpbGUtdXBsb2FkIGNoYXRzLWZpbGUtdXBsb2FkXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7ekluZGV4OiAhVXRpbHMuaXNOdWxsKGRvY3VtZW50cykgPyAxIDogMH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUZpbGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17J2RvY3VtZW50cyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Db2xvcj17cHJvcHMuY2hhdFRhYiA/ICd3aGl0ZScgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZG9jdW1lbnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclVwbG9hZGVkRmlsZVN3aXRjaD17Y2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KHZhbHVlLCBpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RG9jdW1lbnRzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEN1c3RvbUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogIVV0aWxzLmlzTnVsbChkb2N1bWVudHMpID8gMCA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHByb3BzLmNoYXRUYWIgPyAnd2hpdGUnIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dD17ZG9jdW1lbnRzID8gXCJcIiA6IFwiVHlwZSBhIG5ldyBtZXNzYWdlXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IVV0aWxzLmlzTnVsbChkb2N1bWVudHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sUHJvcHM9e3tmdWxsV2lkdGg6IHRydWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3Byb3BzLmNoYXRUYWIgPyAnd2hpdGUnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEFkb3JubWVudDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5wdXRBZG9ybm1lbnQgcG9zaXRpb249XCJlbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5pbnB1dEFkb3JubWVudEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2UoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VuZEljb24gc3R5bGU9e3tmb250U2l6ZTogJzI0cHgnfX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lucHV0QWRvcm5tZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoYW5nZShlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmICghbG9hZGluZyAmJiBzZWxlY3RlZENoYXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY2VudGVyZWQtZmxleC1ib3gnfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVtcHR5Y2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9IHN0eWxlPXt7Zm9udFNpemU6ICcyMHB4JywgZm9udFdlaWdodDogJ2JvbGQnfX0+WW91J3JlIHN0YXJ0aW5nIGFcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udmVyc2F0aW9uPC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9IHN0eWxlPXt7Zm9udFNpemU6ICcxNnB4J319PlR5cGUgeW91ciBmaXJzdCBtZXNzYWdlIGJlbG93PC9wPlxuICAgICAgICAgICAgICAgICAgICA8TG90dGllSWNvbiBpZD17J2NoYXQnfS8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGF0Um9vbTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFILHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTyxlQUFBLEdBQUFKLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFMLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUyxZQUFBLEdBQUFOLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFQLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVyxhQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxNQUFBLEdBQUFULHNCQUFB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
|
|
784
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0ZXJpYWwiLCJfU2VuZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfVG9vbHRpcCIsIl9yZWFjdFJvdXRlckRvbSIsIl9tb21lbnQiLCJfSW5wdXRBZG9ybm1lbnQiLCJfU3R5bGVzIiwiX0N1c3RvbUlucHV0IiwiX0xvdHRpZUljb24iLCJfcmVhY3RGZWF0aGVyIiwiX1V0aWxzIiwiX1ZDRXZlbnRUeXBlIiwiX2xpbmtpZnlSZWFjdCIsIl9GaWxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9SZXN0VXRpbHMiLCJfZG9jdW1lbnREb3dubG9hZCIsIl9BdXRoSW1hZ2UiLCJfcGRmSWNvbiIsIl9kb2MiLCJfd29yZCIsIl9leGNlbCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0ljb24iLCJfQ2hhdFBvbGwiLCJfUG9sbENvbnRhaW5lciIsIl9pY29uc01hdGVyaWFsIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwibG9jYXRpb24iLCJleHBvcnRzIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIkNoYXRSb29tIiwicHJvcHMiLCJuYXZpZ2F0ZSIsInVzZU5hdmlnYXRlIiwicmVmcmVzaGVyIiwic2V0UmVmcmVzaGVyIiwidXNlU3RhdGUiLCJtZXNzYWdlIiwic2V0TWVzc2FnZSIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImRvY3VtZW50cyIsInNldERvY3VtZW50cyIsIm1lc3NhZ2VzIiwic2V0TWVzc2FnZXMiLCJuZXdQYXJ0aWNpcGFudHMiLCJzZXROZXdQYXJ0aWNpcGFudHMiLCJjb25maXJtIiwic2V0SW1nVXBsb2FkQ29uZmlybSIsIm1lc3NhZ2VzRW5kUmVmIiwidXNlUmVmIiwibG9hZGluZyIsInNldExvYWRpbmciLCJtb2RlIiwic2V0TW9kZSIsImNsZWFyVXBsb2FkZWRGaWxlU3dpdGNoIiwic2V0Q2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2giLCJzb2NrZXRFdmVudEhhbmRsZXIiLCJjdXJyZW50VXNlciIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldFVzZXJEZXRhaWxzIiwic29ja2V0RXZlbnRIYW5kbGVyQXBpIiwiaWQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJDSEFUX01FU1NBR0UiLCJvbk1lc3NhZ2UiLCJwYXlsb2FkIiwiREVMRVRFX0NIQVRfTUVTU0FHRSIsIm9uRGVsZXRlTWVzc2FnZSIsIlNZU1RFTV9FVkVOVCIsIm9uU3lzdGVtRXZlbnQiLCJmZXRjaENoYXQiLCJ1cmwiLCJtZWV0aW5nS2V5IiwiY29uY2F0IiwiZ2V0Q29udGV4dFJvb3QiLCJtZWV0aW5nSWQiLCJzZW5kUmVxdWVzdCIsInJlc3BvbnNlIiwiY2xvc2VQb2xsSGFuZGxlciIsInBvbGwiLCJwb3N0RGF0YSIsInNlbmRNZXNzYWdlIiwicXVlc3Rpb24iLCJzdWJtaXRQb2xsVm90ZUhhbmRsZXIiLCJpc1RpZUJyZWFrZXIiLCJ1bmRlZmluZWQiLCJjaGF0UGFydGljaXBhbnQiLCJwYXJ0aWNpcGFudHMiLCJmaW5kIiwicCIsInVzZXJuYW1lIiwiZGF0YSIsInBvbGxJZCIsIm9wdGlvbklkIiwidGllQnJlYWtlck9wdGlvbiIsInNlbGVjdGVkT3B0aW9uIiwidGllQnJlYWtlciIsInN5c3RlbUV2ZW50VHlwZSIsIm1zZyIsInJvb21JZCIsImNoYXRNZXNzYWdlIiwidHlwZSIsImNoYXRUYWIiLCJhZGRlZFBlb3BsZUhhbmRsZXIiLCJsb2FkTWVzc2FnZXMiLCJjb25zb2xlIiwibG9nIiwibSIsIm1lc3NhZ2VJZCIsImFjdGl2ZSIsIm9uRG93bmxvYWQiLCJmaWxlTmFtZSIsInJlcG9zaXRvcnlJZCIsImRvd25sb2FkRG9jdW1lbnQiLCJjYXRjaCIsImVycm9yIiwic2Nyb2xsVG9Cb3R0b20iLCJuZXdNZXNzYWdlcyIsInNob3dBbGxNZXNzYWdlc0Zvck5ld1BhcnRpY2lwYW50cyIsImRhdGVBZGRlZFRvQ2hhdCIsIkRhdGUiLCJmaWx0ZXJlZE1lc3NhZ2VzIiwidHh0IiwiY3JlYXRlZERhdGUiLCJnZXRDaGF0Um9vbVRpdGxlIiwidGl0bGUiLCJ1c2VFZmZlY3QiLCJ1c2VySWQiLCJVdGlscyIsImlzTnVsbCIsImNoYXRJZCIsImFwaSIsInZjRXZlbnRNYW5hZ2VyIiwiYWRkU3Vic2NyaXB0aW9ucyIsInJlbW92ZVN1YnNjcmlwdGlvbnMiLCJjdXJyZW50Iiwic2Nyb2xsIiwidG9wIiwic2Nyb2xsSGVpZ2h0IiwiYmVoYXZpb3IiLCJoYW5kbGVDaGFuZ2UiLCJ0YXJnZXQiLCJwYXJ0aWNpcGFudHNVc2VySWRzIiwidXNlciIsIm1hcCIsImZpbmFsTWVzc2FnZSIsInByZXZlbnREZWZhdWx0IiwibVR5cGUiLCJjb21iaW5lZFNpemUiLCJkb2MiLCJwYXJzZUludCIsInNpemUiLCJhbGVydCIsImdldFRvcFZpZXciLCJTeXN0ZW1FdmVudFR5cGUiLCJBUElfRVJST1IiLCJjb250ZW50IiwicGFydGljaXBhbnQiLCJwYXJ0aWNpcGFudHNUb1NpZ25hbElkcyIsInNvY2tldE1hbmFnZXIiLCJlbWl0RXZlbnQiLCJza2lwQWxlcnQiLCJuZXdDaGF0IiwicHJvZmlsZSIsImdldEFjdGl2ZVRlbmFudCIsInRoZW4iLCJvbGRNc2dzIiwib3BlbkFkZFBlb3BsZURpYWxvZyIsInNldE9wZW5BZGRQZW9wbGUiLCJyZW5kZXJGaWxlVGh1bWJuYWlsIiwidGh1bWJuYWlscyIsImluZGV4IiwiaW5jbHVkZXMiLCJjcmVhdGVFbGVtZW50Iiwia2V5IiwiY2xhc3NOYW1lIiwiZmFsbGJhY2tTcmMiLCJhbHQiLCJzdHlsZSIsIndpZHRoIiwiaGVpZ2h0IiwiSWNvbkJ1dHRvbiIsImNvbXBvbmVudCIsIm9uQ2xpY2siLCJuYW1lIiwiZm9udFNpemUiLCJtYXJnaW5Ub3AiLCJzcmMiLCJwZGZJY29uIiwiYm9yZGVyQm90dG9tIiwiZG9jSWNvbiIsIndvcmRJY29uIiwieHNsSWNvbiIsInBhZGRpbmdCb3R0b20iLCJib3JkZXJXaWR0aCIsInBocEljb24iLCJyZW5kZXJMaW5rIiwiX3JlZiIsImF0dHJpYnV0ZXMiLCJocmVmIiwib3BlbiIsImRlbGV0ZUNoYXRNZXNzYWdlIiwicmVuZGVyTWVzc2FnZSIsInBhZGRpbmdSaWdodCIsIkF2YXRhciIsImdldEluaXRpYWxzIiwiYm9yZGVyIiwiYm9yZGVyUmFkaXVzIiwicGFkZGluZyIsImZvbnRTdHlsZSIsIm1hcmdpbiIsIm1vbWVudCIsImZvcm1hdCIsImRpc2FibGVNZXNzYWdlRGVsZXRlIiwib3B0aW9ucyIsInJlbmRlciIsInNwbGl0IiwidG9rZW4iLCJGcmFnbWVudCIsIkluZm8iLCJpc0hvc3QiLCJpc0NoYWlyUGVyc29uIiwicG9sbENyZWF0b3IiLCJwb2xsUGFydGljaXBhbnRJRHMiLCJudW1iZXJPZlBvbGxQYXJ0aWNpcGFudHMiLCJyZWZyZXNoUG9sbEhhbmRsZXIiLCJfbWVzc2FnZXMkZmlsdGVyJHNvcnQiLCJtZXJnZU9iamVjdHMiLCJoZWFkZXJTdHlsZSIsIlBvbGwiLCJjb2xvciIsImNyZWF0ZVBvbGxIYW5kbGVyIiwicG9sbERhdGEiLCJjYW5jZWxQb2xsSGFuZGxlciIsInJlZiIsInBvbGxzT25seSIsInNvcnQiLCJhIiwiYiIsInJlYWRPbmx5IiwicG9zaXRpb24iLCJkaXNhYmxlRmlsZUF0dGFjaG1lbnQiLCJ6SW5kZXgiLCJlbmFibGVGaWxlIiwibXVsdGlwbGUiLCJpY29uQ29sb3IiLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJsYWJlbFRleHQiLCJkaXNhYmxlZCIsIm11bHRpbGluZSIsImZvcm1Db250cm9sUHJvcHMiLCJmdWxsV2lkdGgiLCJhdXRvRm9jdXMiLCJpbnB1dFByb3BzIiwiZW5kQWRvcm5tZW50Iiwic3R5bGVzIiwiaW5wdXRBZG9ybm1lbnRJY29uIiwib25DaGFuZ2UiLCJmb250V2VpZ2h0IiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvY2hhdC9DaGF0Um9vbS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0F2YXRhciwgSWNvbkJ1dHRvbn0gZnJvbSAnQG11aS9tYXRlcmlhbCc7XG5pbXBvcnQgU2VuZEljb24gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9TZW5kJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0BtdWkvbWF0ZXJpYWwvVG9vbHRpcCc7XG5pbXBvcnQge3VzZU5hdmlnYXRlfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCAnLi9DaGF0Um9vbXMuc2Nzcyc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgSW5wdXRBZG9ybm1lbnQgZnJvbSAnQG11aS9tYXRlcmlhbC9JbnB1dEFkb3JubWVudCc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vU3R5bGVzJztcbmltcG9ydCBDdXN0b21JbnB1dCBmcm9tICcuLi8uLi9jdXN0b21JbnB1dC9DdXN0b21JbnB1dCc7XG5pbXBvcnQgTG90dGllSWNvbiBmcm9tICcuLi8uLi9Mb3R0aWVJY29uJztcbmltcG9ydCB7SW5mb30gZnJvbSAncmVhY3QtZmVhdGhlcic7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vLi4vVXRpbHMnO1xuaW1wb3J0IHtWQ0V2ZW50VHlwZX0gZnJvbSBcIi4uL1ZDRXZlbnRUeXBlXCI7XG5pbXBvcnQgTGlua2lmeSBmcm9tIFwibGlua2lmeS1yZWFjdFwiO1xuaW1wb3J0IEZpbGUgZnJvbSBcIi4uLy4uL2N1c3RvbUlucHV0L0ZpbGVcIjtcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSBcIi4uLy4uLy4uL0FwcGxpY2F0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHtwb3N0RGF0YSwgc2VuZFJlcXVlc3R9IGZyb20gXCIuLi8uLi8uLi9SZXN0VXRpbHNcIjtcbmltcG9ydCB7ZG93bmxvYWREb2N1bWVudH0gZnJvbSBcIi4uLy4uLy4uL2RvY3VtZW50RG93bmxvYWRcIjtcbmltcG9ydCBBdXRoSW1hZ2UgZnJvbSBcIi4uLy4uLy4uL0F1dGhJbWFnZVwiO1xuaW1wb3J0IHBkZkljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ltZy9wZGYtaWNvbi5wbmcnXG5pbXBvcnQgZG9jSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaW1nL2RvYy5wbmcnXG5pbXBvcnQgd29yZEljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ltZy93b3JkLnBuZydcbmltcG9ydCB4c2xJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pbWcvZXhjZWwucG5nJ1xuaW1wb3J0IHBocEljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ltZy9leGNlbC5wbmcnXG5pbXBvcnQgdmNFdmVudE1hbmFnZXIgZnJvbSBcIi4uL1ZDRXZlbnRNYW5hZ2VyXCI7XG5pbXBvcnQgc29ja2V0TWFuYWdlciBmcm9tIFwiLi4vLi4vU29ja2V0TWFuYWdlclwiO1xuaW1wb3J0IEljb24gZnJvbSBcIi4uLy4uL0ljb25cIjtcbmltcG9ydCBDaGF0UG9sbCBmcm9tIFwiLi9DaGF0UG9sbFwiO1xuaW1wb3J0IFBvbGxDb250YWluZXIgZnJvbSBcIi4vUG9sbENvbnRhaW5lclwiO1xuaW1wb3J0IHtQb2xsfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuXG5leHBvcnQgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuXG5jb25zdCBDaGF0Um9vbSA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcblxuICAgIGNvbnN0IFtyZWZyZXNoZXIsIHNldFJlZnJlc2hlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW21lc3NhZ2UsIHNldE1lc3NhZ2VdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtzZWxlY3RlZENoYXQsIHNldFNlbGVjdGVkQ2hhdF0gPSB1c2VTdGF0ZShwcm9wcy5zZWxlY3RlZENoYXQpO1xuICAgIGNvbnN0IFtkb2N1bWVudHMsIHNldERvY3VtZW50c10gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbWVzc2FnZXMsIHNldE1lc3NhZ2VzXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbbmV3UGFydGljaXBhbnRzLCBzZXROZXdQYXJ0aWNpcGFudHNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFtjb25maXJtLCBzZXRJbWdVcGxvYWRDb25maXJtXSA9IHVzZVN0YXRlKCcnKTtcbiAgICBjb25zdCBtZXNzYWdlc0VuZFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbbW9kZSwgc2V0TW9kZV0gPSB1c2VTdGF0ZSgnQ0hBVCcpO1xuICAgIGNvbnN0IFtjbGVhclVwbG9hZGVkRmlsZVN3aXRjaCwgc2V0Q2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2hdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtzb2NrZXRFdmVudEhhbmRsZXJdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtjdXJyZW50VXNlcl0gPSB1c2VTdGF0ZShhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKSk7XG5cbiAgICBjb25zdCBzb2NrZXRFdmVudEhhbmRsZXJBcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjaGF0LXJvb20tMTIyOTkxODI5JztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbjogKGV2ZW50VHlwZSwgYmUpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkNIQVRfTUVTU0FHRTpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVzc2FnZShiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkRFTEVURV9DSEFUX01FU1NBR0U6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZU1lc3NhZ2UoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBvblN5c3RlbUV2ZW50KGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGZldGNoQ2hhdCA9ICgpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IHNlbGVjdGVkQ2hhdC5tZWV0aW5nS2V5ID9cbiAgICAgICAgICAgIGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9jaGF0L2ZldGNoTWVldGluZ0NoYXRCeUtleS8ke3NlbGVjdGVkQ2hhdC5tZWV0aW5nS2V5fWBcbiAgICAgICAgICAgIDogc2VsZWN0ZWRDaGF0Lm1lZXRpbmdJZCA/XG4gICAgICAgICAgICBgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvY2hhdC9mZXRjaE1lZXRpbmdDaGF0LyR7c2VsZWN0ZWRDaGF0Lm1lZXRpbmdJZH1gXG4gICAgICAgICAgICA6XG4gICAgICAgICAgICBgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvY2hhdC9mZXRjaC8ke3NlbGVjdGVkQ2hhdC5pZH1gO1xuICAgICAgICBzZW5kUmVxdWVzdCh1cmwsIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlkKSB7XG4gICAgICAgICAgICAgICAgLy8gUHJlc2VydmUgbWVldGluZ0tleSBzbyBzdWJzZXF1ZW50IHJlZnJlc2hlcyBzdGF5IG9uIHRoZSBieS1rZXkgbG9va3VwLlxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ2hhdCh7Li4ucmVzcG9uc2UsIG1lZXRpbmdLZXk6IHNlbGVjdGVkQ2hhdC5tZWV0aW5nS2V5fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIChlKSA9PiB7XG5cbiAgICAgICAgfSwgdHJ1ZSwgZmFsc2UpO1xuICAgIH07XG5cbiAgICBjb25zdCBjbG9zZVBvbGxIYW5kbGVyID0gKGUsIHBvbGwpID0+IHtcbiAgICAgICAgcG9zdERhdGEoYCR7bG9jYXRpb24gKyAnLycgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vY2FsZW5kYXIvYXBpL3YxL3BvbGwvY2xvc2VgLFxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2UoZSwgYFBvbGw6ICR7cG9sbC5xdWVzdGlvbn0gaGFzIGJlZW4gY2xvc2VkLmApO1xuICAgICAgICAgICAgICAgIGZldGNoQ2hhdCgpO1xuICAgICAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICAgICAgfSwgdHJ1ZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogcG9sbC5pZFxuICAgICAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHN1Ym1pdFBvbGxWb3RlSGFuZGxlciA9IChwb2xsLCBpc1RpZUJyZWFrZXIgPSBmYWxzZSkgPT4ge1xuICAgICAgICBsZXQgY2hhdFBhcnRpY2lwYW50ID0gc2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5maW5kKHAgPT4gcC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUpO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBwb2xsSWQ6IHBvbGwuaWQsXG4gICAgICAgICAgICBvcHRpb25JZDogaXNUaWVCcmVha2VyID8gcG9sbC50aWVCcmVha2VyT3B0aW9uIDogcG9sbC5zZWxlY3RlZE9wdGlvbixcbiAgICAgICAgICAgIGNoYXRQYXJ0aWNpcGFudDogY2hhdFBhcnRpY2lwYW50LFxuICAgICAgICAgICAgdGllQnJlYWtlcjogaXNUaWVCcmVha2VyXG4gICAgICAgIH07XG5cbiAgICAgICAgcG9zdERhdGEoYCR7bG9jYXRpb24gKyAnLycgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vY2FsZW5kYXIvYXBpL3YxL3BvbGwvdm90ZWAsXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBmZXRjaENoYXQoKTtcbiAgICAgICAgICAgIH0sIChlKSA9PiB7XG5cbiAgICAgICAgICAgIH0sIHRydWUsIGRhdGEpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblN5c3RlbUV2ZW50ID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQuc3lzdGVtRXZlbnRUeXBlID09PSBcIk5FV19QT0xMX1ZPVEVcIikge1xuICAgICAgICAgICAgbGV0IGZpbmQgPSBtZXNzYWdlcy5maW5kKChtc2cpID0+IG1zZy5wb2xsICYmIG1zZy5wb2xsLmlkID09PSBwYXlsb2FkLmRhdGEucG9sbElkKTtcbiAgICAgICAgICAgIGlmIChmaW5kKSB7XG4gICAgICAgICAgICAgICAgLy9maW5kLnRvdGFsVm90ZXMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbk1lc3NhZ2UgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRDaGF0ICYmIHNlbGVjdGVkQ2hhdC5pZCA9PT0gcGF5bG9hZC5yb29tSWQpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5vbk1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5vbk1lc3NhZ2UocGF5bG9hZC5jaGF0TWVzc2FnZSwgc2VsZWN0ZWRDaGF0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBheWxvYWQuY2hhdE1lc3NhZ2UudHlwZSA9PT0gJ0VWRU5UJykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jaGF0VGFiKSB7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoQ2hhdCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmFkZGVkUGVvcGxlSGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzLnB1c2gocGF5bG9hZC5jaGF0TWVzc2FnZSk7XG4gICAgICAgICAgICBsb2FkTWVzc2FnZXMoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkRlbGV0ZU1lc3NhZ2UgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk1FU1NBR0VTIDogXCIsIG1lc3NhZ2VzKTtcbiAgICAgICAgbGV0IG1zZyA9IG1lc3NhZ2VzLmZpbmQoKG0pID0+IG0uaWQgPT09IHBheWxvYWQubWVzc2FnZUlkKTtcbiAgICAgICAgY29uc29sZS5sb2cobXNnKTtcbiAgICAgICAgaWYgKG1zZykge1xuICAgICAgICAgICAgbXNnLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2V0UmVmcmVzaGVyKCFyZWZyZXNoZXIpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8vIERvd25sb2FkIGEgY2hhdCBhdHRhY2htZW50IHRvIHRoZSBkZXZpY2UgKG5vIG5ldyB0YWIpLiBBdXRoICsgdGVuYW50IHRyYXZlbCBpbiBoZWFkZXJzIHZpYSB0aGVcbiAgICAvLyBzaGFyZWQgaGVscGVyLCBzbyB0b2tlbnMgbm8gbG9uZ2VyIGxlYWsgaW50byB0aGUgVVJML3F1ZXJ5IHN0cmluZy5cbiAgICBjb25zdCBvbkRvd25sb2FkID0gKGZpbGVOYW1lLCByZXBvc2l0b3J5SWQpID0+IHtcbiAgICAgICAgZG93bmxvYWREb2N1bWVudChyZXBvc2l0b3J5SWQsIGZpbGVOYW1lKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9hZE1lc3NhZ2VzID0gKCkgPT4ge1xuICAgICAgICBzY3JvbGxUb0JvdHRvbSgpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiXFxuXFxuXFxuXFxuTUVTU0FHRVMgOiBcIiwgc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdCkge1xuICAgICAgICAgICAgY29uc3QgbmV3TWVzc2FnZXMgPSBbXS5jb25jYXQoc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzKTtcbiAgICAgICAgICAgIGlmICghcHJvcHMuc2hvd0FsbE1lc3NhZ2VzRm9yTmV3UGFydGljaXBhbnRzKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbmQgPSBzZWxlY3RlZENoYXQucGFydGljaXBhbnRzLmZpbmQocCA9PiBwLnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZUFkZGVkVG9DaGF0ID0gZmluZCA/IGZpbmQuZGF0ZUFkZGVkVG9DaGF0IDogbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZE1lc3NhZ2VzID0gbmV3TWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih0eHQgPT4gZGF0ZUFkZGVkVG9DaGF0ID09PSBudWxsIHx8IG5ldyBEYXRlKGRhdGVBZGRlZFRvQ2hhdCkgPCBuZXcgRGF0ZSh0eHQuY3JlYXRlZERhdGUpKTtcbiAgICAgICAgICAgICAgICBzZXRNZXNzYWdlcyhmaWx0ZXJlZE1lc3NhZ2VzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0TWVzc2FnZXMobmV3TWVzc2FnZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGdldENoYXRSb29tVGl0bGUgPSAoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZENoYXQudHlwZSA9PT0gJ0NBTEVOREFSX01FRVRJTkcnIHx8IHNlbGVjdGVkQ2hhdC50aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkQ2hhdC50aXRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0U2VsZWN0ZWRDaGF0KHByb3BzLnNlbGVjdGVkQ2hhdCk7XG4gICAgfSwgW3Byb3BzLnNlbGVjdGVkQ2hhdF0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICB9LCBbbWVzc2FnZXNdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZENoYXQgJiYgY3VycmVudFVzZXIpIHtcbiAgICAgICAgICAgIHNldE1lc3NhZ2UoJycpO1xuICAgICAgICAgICAgc2V0RG9jdW1lbnRzKG51bGwpO1xuXG4gICAgICAgICAgICBsZXQgZmluZCA9IHNlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMuZmluZChwID0+IHAudXNlcklkID09PSBjdXJyZW50VXNlci51c2VybmFtZSB8fCBwLnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSk7XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGZpbmQpKSB7XG4gICAgICAgICAgICAgICAgcG9zdERhdGEoYCR7bG9jYXRpb24gKyAnLycgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vY2FsZW5kYXIvYXBpL3YxL2NoYXQvYWRkUGFydGljaXBhbnRzYCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIH0sIChlKSA9PiB7XG5cbiAgICAgICAgICAgICAgICB9LCB0cnVlLCB7XG4gICAgICAgICAgICAgICAgICAgIGNoYXRJZDogc2VsZWN0ZWRDaGF0LmlkLFxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM6IFtjdXJyZW50VXNlcl1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbG9hZE1lc3NhZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9LCBbc2VsZWN0ZWRDaGF0LCBjdXJyZW50VXNlcl0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc29ja2V0RXZlbnRIYW5kbGVyLmFwaSA9IHNvY2tldEV2ZW50SGFuZGxlckFwaSgpO1xuICAgIH0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmNFdmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhzb2NrZXRFdmVudEhhbmRsZXIsIFZDRXZlbnRUeXBlLkRFTEVURV9DSEFUX01FU1NBR0UsIFZDRXZlbnRUeXBlLkNIQVRfTUVTU0FHRSwgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5UKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHZjRXZlbnRNYW5hZ2VyLnJlbW92ZVN1YnNjcmlwdGlvbnMoc29ja2V0RXZlbnRIYW5kbGVyKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBzY3JvbGxUb0JvdHRvbSA9ICgpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2VzRW5kUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VzRW5kUmVmLmN1cnJlbnQuc2Nyb2xsKHt0b3A6IG1lc3NhZ2VzRW5kUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0LCBiZWhhdmlvcjogJ3Ntb290aCd9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZSkgPT4ge1xuICAgICAgICBzZXRNZXNzYWdlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcGFydGljaXBhbnRzVXNlcklkcyA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkQ2hhdFxuICAgICAgICAgICAgLnBhcnRpY2lwYW50c1xuICAgICAgICAgICAgLmZpbHRlcih1c2VyID0+IHVzZXIudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKVxuICAgICAgICAgICAgLm1hcCh1c2VyID0+IHVzZXIudXNlcm5hbWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBzZW5kTWVzc2FnZSA9IChlLCBmaW5hbE1lc3NhZ2UgPSBudWxsLCBwb2xsID0gbnVsbCkgPT4ge1xuICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1lc3NhZ2UgfHwgZG9jdW1lbnRzIHx8IGZpbmFsTWVzc2FnZSB8fCBwb2xsKSB7XG5cbiAgICAgICAgICAgIGxldCBtVHlwZSA9ICdURVhUJztcblxuICAgICAgICAgICAgaWYgKGRvY3VtZW50cyAmJiBkb2N1bWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCBjb21iaW5lZFNpemUgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZG9jIG9mIGRvY3VtZW50cykge1xuICAgICAgICAgICAgICAgICAgICBjb21iaW5lZFNpemUgPSBjb21iaW5lZFNpemUgKyBwYXJzZUludChkb2Muc2l6ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNvbWJpbmVkU2l6ZSA+IDc1MDAwMDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmFsZXJ0KGFwcGxpY2F0aW9uTWFuYWdlci5nZXRUb3BWaWV3KCkuaWQsIFN5c3RlbUV2ZW50VHlwZS5BUElfRVJST1IsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdBdHRhY2htZW50IHNob3VsZCBiZSBub3QgbW9yZSB0aGFuIDcuNU1CLidcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG1UeXBlID0gJ0ZJTEUnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwb2xsKSB7XG4gICAgICAgICAgICAgICAgbVR5cGUgPSAnUE9MTCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpbmFsTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIG1UeXBlID0gJ0VWRU5UJ1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtc2cgPSB7XG4gICAgICAgICAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgdHlwZTogbVR5cGUsXG4gICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGZpbmFsTWVzc2FnZSA/IGZpbmFsTWVzc2FnZSA6IG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnQ6IGN1cnJlbnRVc2VyXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnRzICYmIGRvY3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbXNnLmRvY3VtZW50cyA9IGRvY3VtZW50cztcbiAgICAgICAgICAgICAgICBzZXRDbGVhclVwbG9hZGVkRmlsZVN3aXRjaCghY2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2gpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocG9sbCkge1xuICAgICAgICAgICAgICAgIG1zZy5wb2xsID0gcG9sbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbXNnLnBhcnRpY2lwYW50LmFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGNvbnN0IHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzID0gcGFydGljaXBhbnRzVXNlcklkcygpO1xuICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCB7XG4gICAgICAgICAgICAgICAgcm9vbUlkOiBzZWxlY3RlZENoYXQuaWQsXG4gICAgICAgICAgICAgICAgY2hhdE1lc3NhZ2U6IG1zZyxcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHNUb1NpZ25hbElkcyxcbiAgICAgICAgICAgICAgICBza2lwQWxlcnQ6IHByb3BzLmNoYXRUYWIgfHwgZmluYWxNZXNzYWdlLFxuICAgICAgICAgICAgICAgIG5ld0NoYXQ6IHNlbGVjdGVkQ2hhdC5tZXNzYWdlcy5sZW5ndGggPT09IDAsXG4gICAgICAgICAgICAgICAgbWVldGluZ0lkOiBwcm9wcy5tZWV0aW5nSWQgPyBwcm9wcy5tZWV0aW5nSWQgOiBudWxsLFxuICAgICAgICAgICAgICAgIHByb2ZpbGU6IChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QWN0aXZlVGVuYW50KCkgfHwgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkucHJvZmlsZSlcbiAgICAgICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBtc2cuaWQgPSBkYXRhLmlkO1xuICAgICAgICAgICAgICAgIHNldE1lc3NhZ2VzKG9sZE1zZ3MgPT4gWy4uLm9sZE1zZ3MsIG1zZ10pO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hhdC5tZXNzYWdlcy5wdXNoKG1zZyk7XG5cbiAgICAgICAgICAgICAgICBpZiAocHJvcHMub25NZXNzYWdlICYmIHNlbGVjdGVkQ2hhdCkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vbk1lc3NhZ2UobXNnLCBzZWxlY3RlZENoYXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRXJyb3Igc2VuZGluZyBjaGF0IG1lc3NhZ2UgOiBcIiwgZXJyb3IpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzZXRNZXNzYWdlKCcnKTtcbiAgICAgICAgc2V0SW1nVXBsb2FkQ29uZmlybSgnJyk7XG4gICAgICAgIHNldERvY3VtZW50cyhudWxsKVxuICAgIH07XG5cbiAgICBjb25zdCBvcGVuQWRkUGVvcGxlRGlhbG9nID0gKGUpID0+IHtcbiAgICAgICAgc2V0T3BlbkFkZFBlb3BsZSh0cnVlKVxuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJGaWxlVGh1bWJuYWlsID0gKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgY29uc3Qge2RvY3VtZW50c30gPSBtZXNzYWdlO1xuICAgICAgICBjb25zdCB0aHVtYm5haWxzID0gW107XG5cbiAgICAgICAgZG9jdW1lbnRzLmZvckVhY2goKGRvYywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChkb2MudHlwZS5pbmNsdWRlcygnaW1hZ2UnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHRodW1ibmFpbHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEF1dGhJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlJZD17ZG9jLnJlcG9zaXRvcnlJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrU3JjPXtkb2MucGF5bG9hZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAyNTAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgZG9jLnJlcG9zaXRvcnlJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6ICcxNHB4JywgbWFyZ2luVG9wOiAnMTRweCd9fT57ZG9jLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZG9jLnR5cGUuaW5jbHVkZXMoJ3BkZicpKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17cGRmSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgZG9jLnJlcG9zaXRvcnlJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygnZG9jJykpIHtcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3tib3JkZXJCb3R0b206ICc1cHggc29saWQgYmxhY2snfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtkb2NJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAyNTAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBkb2MucmVwb3NpdG9yeUlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydET1dOTE9BRCd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIG5vLW1hcmdpbiBuby1wYWRkaW5nJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2ZvbnRTaXplOiAnMTRweCcsIG1hcmdpblRvcDogJzE0cHgnfX0+e2RvYy5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvYy50eXBlLmluY2x1ZGVzKCd3b3JkJykpIHtcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3tib3JkZXJCb3R0b206ICc1cHggc29saWQgYmxhY2snfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXt3b3JkSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgZG9jLnJlcG9zaXRvcnlJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygneGxzJykpIHtcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3tib3JkZXJCb3R0b206ICc1cHggc29saWQgYmxhY2snfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXt4c2xJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAyNTAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBkb2MucmVwb3NpdG9yeUlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydET1dOTE9BRCd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIG5vLW1hcmdpbiBuby1wYWRkaW5nJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2ZvbnRTaXplOiAnMTRweCcsIG1hcmdpblRvcDogJzE0cHgnfX0+e2RvYy5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRodW1ibmFpbHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tib3JkZXJCb3R0b206ICcwLjdweCBzb2xpZCBibGFjaycsIHBhZGRpbmdCb3R0b206ICc4cHgnLCBib3JkZXJXaWR0aDogJzUwJSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17cGhwSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMTAwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7bWFyZ2luVG9wOiAnNHB4J319Pntkb2N1bWVudHNbaW5kZXhdLm5hbWV9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgZG9jLnJlcG9zaXRvcnlJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2ZvbnRTaXplOiAnMTRweCcsIG1hcmdpblRvcDogJzE0cHgnfX0+e2RvYy5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRodW1ibmFpbHM7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbmRlckxpbmsgPSAoe2F0dHJpYnV0ZXMsIGNvbnRlbnR9KSA9PiB7XG4gICAgICAgIGNvbnN0IHtocmVmfSA9IGF0dHJpYnV0ZXM7XG4gICAgICAgIHJldHVybiA8YVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGhyZWYpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgIDwvYT47XG4gICAgfTtcblxuICAgIGNvbnN0IGRlbGV0ZUNoYXRNZXNzYWdlID0gKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgY29uc3QgcGFydGljaXBhbnRzVG9TaWduYWxJZHMgPSBwYXJ0aWNpcGFudHNVc2VySWRzKCk7XG4gICAgICAgIHNvY2tldE1hbmFnZXIuZW1pdEV2ZW50KFZDRXZlbnRUeXBlLkRFTEVURV9DSEFUX01FU1NBR0UsIHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogbWVzc2FnZS5pZCxcbiAgICAgICAgICAgIHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzLFxuICAgICAgICAgICAgcHJvZmlsZTogKGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBY3RpdmVUZW5hbnQoKSB8fCBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5wcm9maWxlKSxcbiAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICB1c2VybmFtZTogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWVcbiAgICAgICAgfSkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgbWVzc2FnZS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldFJlZnJlc2hlcighcmVmcmVzaGVyKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbmRlck1lc3NhZ2UgPSAobWVzc2FnZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFtZXNzYWdlLmFjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0gY2xhc3NOYW1lPXsnY2hhdHJvb21fX21lc3NhZ2Ugcm93IG5vLW1hcmdpbid9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXttZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSA/IFwibXljaGF0LWRlbGV0ZWRcIiA6IFwicGVlcmNoYXRcIn0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7cGFkZGluZ1JpZ2h0OiAnMTJweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7VXRpbHMuZ2V0SW5pdGlhbHMobWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0F2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUgPyBudWxsIDogXCIxcHggc29saWQgIzUyNWY3ZlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUgPyBudWxsIDogXCIxNnB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUgPyBudWxsIDogXCIwIDhweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIG5vLW1hcmdpbiBuby1wYWRkaW5nJ30gc3R5bGU9e3tmb250U3R5bGU6ICdpdGFsaWMnfX0+ZGVsZXRlZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSAnRklMRScpIHtcbiAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gY2xhc3NOYW1lPVwiY2hhdHJvb21fX21lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15Y2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9IHN0eWxlPXt7bWFyZ2luOiAnNHB4IDAgMCAwJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgY2hhdC10aW1lJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21vbWVudChtZXNzYWdlLmNyZWF0ZWREYXRlKS5mb3JtYXQoJ0REL01NLCBISDptbScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BzLmRpc2FibGVNZXNzYWdlRGVsZXRlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUNoYXRNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydERUxFVEUnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckZpbGVUaHVtYm5haWwobWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e2luZGV4fT57bWVzc2FnZS5jb250ZW50fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImNoYXRyb29tX19tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBlZXJjaGF0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1V0aWxzLmdldEluaXRpYWxzKG1lc3NhZ2UucGFydGljaXBhbnQubmFtZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnttZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bW9tZW50KG1lc3NhZ2UuY3JlYXRlZERhdGUpLmZvcm1hdCgnREQvTU0sIEhIOm1tJyl9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckZpbGVUaHVtYm5haWwobWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGtleT17aW5kZXh9PnttZXNzYWdlLmNvbnRlbnR9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ1RFWFQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImNoYXRyb29tX19tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteWNoYXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e21hcmdpbjogJzRweCAwIDAgMCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIGNoYXQtdGltZSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttb21lbnQobWVzc2FnZS5jcmVhdGVkRGF0ZSkuZm9ybWF0KCdERC9NTSwgSEg6bW0nKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5kaXNhYmxlTWVzc2FnZURlbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDaGF0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnREVMRVRFJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlua2lmeSBrZXk9e2luZGV4fSBvcHRpb25zPXt7cmVuZGVyOiByZW5kZXJMaW5rfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IHN0eWxlPXt7bWFyZ2luOiAnMCA4cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21lc3NhZ2UuY29udGVudC5zcGxpdCgnXFxuJykubWFwKCh0b2tlbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWFjdC5GcmFnbWVudCBrZXk9e2luZGV4fT57dG9rZW59PGJyLz48L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGlua2lmeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImNoYXRyb29tX19tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBlZXJjaGF0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1V0aWxzLmdldEluaXRpYWxzKG1lc3NhZ2UucGFydGljaXBhbnQubmFtZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnttZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bW9tZW50KG1lc3NhZ2UuY3JlYXRlZERhdGUpLmZvcm1hdCgnREQvTU0sIEhIOm1tJyl9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlua2lmeSBrZXk9e2luZGV4fSBvcHRpb25zPXt7cmVuZGVyOiByZW5kZXJMaW5rfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IHN0eWxlPXt7bWFyZ2luOiAnMCAwIDRweCA0cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21lc3NhZ2UuY29udGVudC5zcGxpdCgnXFxuJykubWFwKCh0b2tlbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWFjdC5GcmFnbWVudCBrZXk9e2luZGV4fT57dG9rZW59PGJyLz48L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGlua2lmeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLnR5cGUgPT09ICdFVkVOVCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN2LXBvbGwtY2hvaWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiY3YtcG9sbC1jaG9pY2UtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImN2LWNob2ljZS1wZXJjZW50YWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzZWxlY3RlZC1jaG9pY2UtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImN2LWNob2ljZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlLmNvbnRlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17J2N2LWNob2ljZS1wZXJjZW50LWNoYXJ0IGV2ZW50J30gc3R5bGU9e3t3aWR0aDogJzEwMCUnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPFBvbGxDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgcG9sbD17bWVzc2FnZS5wb2xsfVxuICAgICAgICAgICAgICAgICAgICBjaGF0VGFiPXtwcm9wcy5jaGF0VGFifVxuICAgICAgICAgICAgICAgICAgICBpc0hvc3Q9e3Byb3BzLmlzSG9zdH1cbiAgICAgICAgICAgICAgICAgICAgaXNDaGFpclBlcnNvbj17cHJvcHMuaXNDaGFpclBlcnNvbn1cbiAgICAgICAgICAgICAgICAgICAgcG9sbENyZWF0b3I9e21lc3NhZ2UucGFydGljaXBhbnR9XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWREYXRlPXttZXNzYWdlLmNyZWF0ZWREYXRlfVxuICAgICAgICAgICAgICAgICAgICBzdWJtaXRQb2xsVm90ZUhhbmRsZXI9eyhwb2xsLCBpc1RpZUJyZWFrZXIpID0+IHN1Ym1pdFBvbGxWb3RlSGFuZGxlcihwb2xsLCBpc1RpZUJyZWFrZXIpfVxuICAgICAgICAgICAgICAgICAgICBwb2xsUGFydGljaXBhbnRJRHM9e3NlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMubWFwKHAgPT4gcC51c2VybmFtZSl9XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRVc2VyPXtjdXJyZW50VXNlcn1cbiAgICAgICAgICAgICAgICAgICAgY2xvc2VQb2xsSGFuZGxlcj17KGUsIHBvbGwpID0+IGNsb3NlUG9sbEhhbmRsZXIoZSwgcG9sbCl9XG4gICAgICAgICAgICAgICAgICAgIG51bWJlck9mUG9sbFBhcnRpY2lwYW50cz17c2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQb2xsSGFuZGxlcj17KCkgPT4gZmV0Y2hDaGF0KCl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoc2VsZWN0ZWRDaGF0ICYmIG1lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoYXRyb29tXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGF0cm9vbV9faGVhZGVyXCIgc3R5bGU9e1V0aWxzLm1lcmdlT2JqZWN0cyh7fSwgcHJvcHMuaGVhZGVyU3R5bGUpfT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BzLmNoYXRUYWIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2hhdHJvb21fX2hlYWRlcnJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9XCJQb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vZGUoJ1BPTEwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb2xsIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBwcm9wcy5jaGF0VGFiID8gJ3JlZCcgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IHByb3BzLmNoYXRUYWIgPyAnOHB4JyA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdQT0xMJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2hhdFBvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0VGFiPXtwcm9wcy5jaGF0VGFifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50cz17c2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVQb2xsSGFuZGxlcj17KHBvbGxEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKG51bGwsIG51bGwsIHBvbGxEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW9kZSgnQ0hBVCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsUG9sbEhhbmRsZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW9kZSgnQ0hBVCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAvPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdDSEFUJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwibWVzc2FnZXNcIiByZWY9e21lc3NhZ2VzRW5kUmVmfSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKG0pID0+ICFwcm9wcy5wb2xsc09ubHkgfHwgbS5wb2xsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IG5ldyBEYXRlKGEuY3JlYXRlZERhdGUpIC0gbmV3IERhdGUoYi5jcmVhdGVkRGF0ZSkpPy5tYXAocmVuZGVyTWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+PC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZSA9PT0gJ0NIQVQnICYmICFwcm9wcy5yZWFkT25seSAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3NOYW1lPVwiY2hhdHJvb21fX3NlbmRNZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtZXNzYWdlX19pbWFnZVNlbGVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY2hhdC1pbnB1dCd9IHN0eWxlPXt7cG9zaXRpb246ICdyZWxhdGl2ZSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BzLmRpc2FibGVGaWxlQXR0YWNobWVudCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wiZmlsZS11cGxvYWQgY2hhdHMtZmlsZS11cGxvYWRcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t6SW5kZXg6ICFVdGlscy5pc051bGwoZG9jdW1lbnRzKSA/IDEgOiAwfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlRmlsZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXsnZG9jdW1lbnRzJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNvbG9yPXtwcm9wcy5jaGF0VGFiID8gJ3doaXRlJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtkb2N1bWVudHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVXBsb2FkZWRGaWxlU3dpdGNoPXtjbGVhclVwbG9hZGVkRmlsZVN3aXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsodmFsdWUsIGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREb2N1bWVudHModmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q3VzdG9tSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiAhVXRpbHMuaXNOdWxsKGRvY3VtZW50cykgPyAwIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcHJvcHMuY2hhdFRhYiA/ICd3aGl0ZScgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0PXtkb2N1bWVudHMgPyBcIlwiIDogXCJUeXBlIGEgbmV3IG1lc3NhZ2VcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshVXRpbHMuaXNOdWxsKGRvY3VtZW50cyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWxpbmU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xQcm9wcz17e2Z1bGxXaWR0aDogdHJ1ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17cHJvcHMuY2hhdFRhYiA/ICd3aGl0ZScgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQWRvcm5tZW50OiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnB1dEFkb3JubWVudCBwb3NpdGlvbj1cImVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c3R5bGVzLmlucHV0QWRvcm5tZW50SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZW5kSWNvbiBzdHlsZT17e2ZvbnRTaXplOiAnMjRweCd9fS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5wdXRBZG9ybm1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCFsb2FkaW5nICYmIHNlbGVjdGVkQ2hhdCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZW1wdHljaGF0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2NlbnRlcmVkLWZsZXgtYm94J30gc3R5bGU9e3tmb250U2l6ZTogJzIwcHgnLCBmb250V2VpZ2h0OiAnYm9sZCd9fT5Zb3UncmUgc3RhcnRpbmcgYVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3XG4gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJzYXRpb248L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2NlbnRlcmVkLWZsZXgtYm94J30gc3R5bGU9e3tmb250U2l6ZTogJzE2cHgnfX0+VHlwZSB5b3VyIGZpcnN0IG1lc3NhZ2UgYmVsb3c8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxMb3R0aWVJY29uIGlkPXsnY2hhdCd9Lz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoYXRSb29tO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSyxlQUFBLEdBQUFMLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFNLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFPLGVBQUEsR0FBQUosc0JBQUEsQ0FB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
|