@projectcor/maia-components 2.46.0 → 2.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +36 -8
- package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +23 -5
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +126 -13
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +80 -47
- package/lib/lang/br/index.js +8 -1
- package/lib/lang/en/index.js +8 -1
- package/lib/lang/es/index.js +8 -1
- package/lib/lang/fr/index.js +8 -1
- package/lib/services/maia/Agents/connectors.js +88 -46
- package/lib/store/sessions/sessionStreamManager.js +70 -53
- package/lib/types/agentModal.js +1 -1
- package/lib/utils/normalizeAgentConnectors.js +4 -4
- package/lib/utils/streamActivityMessages.js +13 -2
- package/package.json +1 -1
|
@@ -64,13 +64,55 @@ export var getAgentConnectors = /*#__PURE__*/function () {
|
|
|
64
64
|
return _ref2.apply(this, arguments);
|
|
65
65
|
};
|
|
66
66
|
}();
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
|
|
68
|
+
/** Fetch a fresh OAuth URL on click: its state expires after ten minutes. */
|
|
69
|
+
export var authorizeConnector = /*#__PURE__*/function () {
|
|
70
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(slug) {
|
|
71
|
+
var response, payload;
|
|
70
72
|
return _regeneratorRuntime.wrap(function (_context3) {
|
|
71
73
|
while (1) switch (_context3.prev = _context3.next) {
|
|
72
74
|
case 0:
|
|
73
75
|
_context3.next = 1;
|
|
76
|
+
return fetchMaia({
|
|
77
|
+
path: "connectors/".concat(encodeURIComponent(slug), "/authorize"),
|
|
78
|
+
method: 'POST'
|
|
79
|
+
});
|
|
80
|
+
case 1:
|
|
81
|
+
response = _context3.sent;
|
|
82
|
+
if (response.ok) {
|
|
83
|
+
_context3.next = 2;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
throw new Error('Failed to start connector authorization');
|
|
87
|
+
case 2:
|
|
88
|
+
_context3.next = 3;
|
|
89
|
+
return response.json();
|
|
90
|
+
case 3:
|
|
91
|
+
payload = _context3.sent;
|
|
92
|
+
if (payload.auth_url) {
|
|
93
|
+
_context3.next = 4;
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
throw new Error('Connector authorization URL is missing');
|
|
97
|
+
case 4:
|
|
98
|
+
return _context3.abrupt("return", payload.auth_url);
|
|
99
|
+
case 5:
|
|
100
|
+
case "end":
|
|
101
|
+
return _context3.stop();
|
|
102
|
+
}
|
|
103
|
+
}, _callee3);
|
|
104
|
+
}));
|
|
105
|
+
return function authorizeConnector(_x2) {
|
|
106
|
+
return _ref3.apply(this, arguments);
|
|
107
|
+
};
|
|
108
|
+
}();
|
|
109
|
+
export var saveAgentConnectors = /*#__PURE__*/function () {
|
|
110
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(agentId, connectorSlugs) {
|
|
111
|
+
var response;
|
|
112
|
+
return _regeneratorRuntime.wrap(function (_context4) {
|
|
113
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
114
|
+
case 0:
|
|
115
|
+
_context4.next = 1;
|
|
74
116
|
return fetchMaia({
|
|
75
117
|
path: "agents/".concat(agentId, "/connectors"),
|
|
76
118
|
method: 'POST',
|
|
@@ -79,22 +121,22 @@ export var saveAgentConnectors = /*#__PURE__*/function () {
|
|
|
79
121
|
}
|
|
80
122
|
});
|
|
81
123
|
case 1:
|
|
82
|
-
response =
|
|
124
|
+
response = _context4.sent;
|
|
83
125
|
if (response.ok) {
|
|
84
|
-
|
|
126
|
+
_context4.next = 2;
|
|
85
127
|
break;
|
|
86
128
|
}
|
|
87
129
|
throw new Error('Failed to save agent connectors');
|
|
88
130
|
case 2:
|
|
89
|
-
return
|
|
131
|
+
return _context4.abrupt("return", response.json());
|
|
90
132
|
case 3:
|
|
91
133
|
case "end":
|
|
92
|
-
return
|
|
134
|
+
return _context4.stop();
|
|
93
135
|
}
|
|
94
|
-
},
|
|
136
|
+
}, _callee4);
|
|
95
137
|
}));
|
|
96
|
-
return function saveAgentConnectors(
|
|
97
|
-
return
|
|
138
|
+
return function saveAgentConnectors(_x3, _x4) {
|
|
139
|
+
return _ref4.apply(this, arguments);
|
|
98
140
|
};
|
|
99
141
|
}();
|
|
100
142
|
export var openConnectorAuthorizationWindows = function openConnectorAuthorizationWindows(authorizations, popupWindow) {
|
|
@@ -128,47 +170,47 @@ var isConnectorOAuthMessage = function isConnectorOAuthMessage(data) {
|
|
|
128
170
|
|
|
129
171
|
/** Waits until the OAuth popup finishes, then confirms the company token via GET. */
|
|
130
172
|
export var waitForConnectorAuthorization = /*#__PURE__*/function () {
|
|
131
|
-
var
|
|
132
|
-
var agentId, slugs, popup,
|
|
133
|
-
return _regeneratorRuntime.wrap(function (
|
|
134
|
-
while (1) switch (
|
|
173
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(_ref5) {
|
|
174
|
+
var agentId, slugs, popup, _ref5$timeoutMs, timeoutMs, pending, oauthError, authorizedSlugs;
|
|
175
|
+
return _regeneratorRuntime.wrap(function (_context7) {
|
|
176
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
135
177
|
case 0:
|
|
136
|
-
agentId =
|
|
178
|
+
agentId = _ref5.agentId, slugs = _ref5.slugs, popup = _ref5.popup, _ref5$timeoutMs = _ref5.timeoutMs, timeoutMs = _ref5$timeoutMs === void 0 ? 180000 : _ref5$timeoutMs;
|
|
137
179
|
if (slugs.length) {
|
|
138
|
-
|
|
180
|
+
_context7.next = 1;
|
|
139
181
|
break;
|
|
140
182
|
}
|
|
141
|
-
return
|
|
183
|
+
return _context7.abrupt("return", {
|
|
142
184
|
authorized: []
|
|
143
185
|
});
|
|
144
186
|
case 1:
|
|
145
187
|
pending = new Set(slugs);
|
|
146
188
|
authorizedSlugs = /*#__PURE__*/function () {
|
|
147
|
-
var
|
|
189
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
|
|
148
190
|
var connectors;
|
|
149
|
-
return _regeneratorRuntime.wrap(function (
|
|
150
|
-
while (1) switch (
|
|
191
|
+
return _regeneratorRuntime.wrap(function (_context5) {
|
|
192
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
151
193
|
case 0:
|
|
152
|
-
|
|
194
|
+
_context5.next = 1;
|
|
153
195
|
return getAgentConnectors(agentId);
|
|
154
196
|
case 1:
|
|
155
|
-
connectors =
|
|
156
|
-
return
|
|
197
|
+
connectors = _context5.sent;
|
|
198
|
+
return _context5.abrupt("return", connectors.filter(function (connector) {
|
|
157
199
|
return pending.has(connector.slug) && connector.user_authorized;
|
|
158
200
|
}).map(function (connector) {
|
|
159
201
|
return connector.slug;
|
|
160
202
|
}));
|
|
161
203
|
case 2:
|
|
162
204
|
case "end":
|
|
163
|
-
return
|
|
205
|
+
return _context5.stop();
|
|
164
206
|
}
|
|
165
|
-
},
|
|
207
|
+
}, _callee5);
|
|
166
208
|
}));
|
|
167
209
|
return function authorizedSlugs() {
|
|
168
|
-
return
|
|
210
|
+
return _ref7.apply(this, arguments);
|
|
169
211
|
};
|
|
170
212
|
}();
|
|
171
|
-
return
|
|
213
|
+
return _context7.abrupt("return", new Promise(function (resolve) {
|
|
172
214
|
var finished = false;
|
|
173
215
|
// Declarados antes porque `finish` los limpia y a su vez los tres lo invocan.
|
|
174
216
|
// Para cuando alguno puede disparar, el bloque de abajo ya los asignó.
|
|
@@ -176,47 +218,47 @@ export var waitForConnectorAuthorization = /*#__PURE__*/function () {
|
|
|
176
218
|
var poll;
|
|
177
219
|
var timer;
|
|
178
220
|
var finish = /*#__PURE__*/function () {
|
|
179
|
-
var
|
|
221
|
+
var _ref8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
|
|
180
222
|
var authorized, _t;
|
|
181
|
-
return _regeneratorRuntime.wrap(function (
|
|
182
|
-
while (1) switch (
|
|
223
|
+
return _regeneratorRuntime.wrap(function (_context6) {
|
|
224
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
183
225
|
case 0:
|
|
184
226
|
if (!finished) {
|
|
185
|
-
|
|
227
|
+
_context6.next = 1;
|
|
186
228
|
break;
|
|
187
229
|
}
|
|
188
|
-
return
|
|
230
|
+
return _context6.abrupt("return");
|
|
189
231
|
case 1:
|
|
190
232
|
finished = true;
|
|
191
233
|
window.removeEventListener('message', onMessage);
|
|
192
234
|
window.clearInterval(poll);
|
|
193
235
|
window.clearTimeout(timer);
|
|
194
|
-
|
|
195
|
-
|
|
236
|
+
_context6.prev = 2;
|
|
237
|
+
_context6.next = 3;
|
|
196
238
|
return authorizedSlugs();
|
|
197
239
|
case 3:
|
|
198
|
-
authorized =
|
|
240
|
+
authorized = _context6.sent;
|
|
199
241
|
resolve({
|
|
200
242
|
authorized: authorized,
|
|
201
243
|
error: authorized.length ? undefined : oauthError
|
|
202
244
|
});
|
|
203
|
-
|
|
245
|
+
_context6.next = 5;
|
|
204
246
|
break;
|
|
205
247
|
case 4:
|
|
206
|
-
|
|
207
|
-
_t =
|
|
248
|
+
_context6.prev = 4;
|
|
249
|
+
_t = _context6["catch"](2);
|
|
208
250
|
resolve({
|
|
209
251
|
authorized: [],
|
|
210
252
|
error: oauthError
|
|
211
253
|
});
|
|
212
254
|
case 5:
|
|
213
255
|
case "end":
|
|
214
|
-
return
|
|
256
|
+
return _context6.stop();
|
|
215
257
|
}
|
|
216
|
-
},
|
|
258
|
+
}, _callee6, null, [[2, 4]]);
|
|
217
259
|
}));
|
|
218
260
|
return function finish() {
|
|
219
|
-
return
|
|
261
|
+
return _ref8.apply(this, arguments);
|
|
220
262
|
};
|
|
221
263
|
}();
|
|
222
264
|
onMessage = function onMessage(event) {
|
|
@@ -241,12 +283,12 @@ export var waitForConnectorAuthorization = /*#__PURE__*/function () {
|
|
|
241
283
|
}));
|
|
242
284
|
case 2:
|
|
243
285
|
case "end":
|
|
244
|
-
return
|
|
286
|
+
return _context7.stop();
|
|
245
287
|
}
|
|
246
|
-
},
|
|
288
|
+
}, _callee7);
|
|
247
289
|
}));
|
|
248
|
-
return function waitForConnectorAuthorization(
|
|
249
|
-
return
|
|
290
|
+
return function waitForConnectorAuthorization(_x5) {
|
|
291
|
+
return _ref6.apply(this, arguments);
|
|
250
292
|
};
|
|
251
293
|
}();
|
|
252
294
|
export var connectorAuthErrorMessage = function connectorAuthErrorMessage(error) {
|
|
@@ -255,4 +297,4 @@ export var connectorAuthErrorMessage = function connectorAuthErrorMessage(error)
|
|
|
255
297
|
}
|
|
256
298
|
return "".concat(error.name, ": ").concat(error.message);
|
|
257
299
|
};
|
|
258
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaE1haWEiLCJnZXRBdmFpbGFibGVDb25uZWN0b3JzIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInBhdGgiLCJtZXRob2QiLCJzZW50Iiwib2siLCJFcnJvciIsImFicnVwdCIsImpzb24iLCJzdG9wIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJnZXRBZ2VudENvbm5lY3RvcnMiLCJfcmVmMiIsIl9jYWxsZWUyIiwiYWdlbnRJZCIsIl9jb250ZXh0MiIsImNvbmNhdCIsIl94Iiwic2F2ZUFnZW50Q29ubmVjdG9ycyIsIl9yZWYzIiwiX2NhbGxlZTMiLCJjb25uZWN0b3JTbHVncyIsIl9jb250ZXh0MyIsImJvZHkiLCJjb25uZWN0b3Jfc2x1Z3MiLCJfeDIiLCJfeDMiLCJvcGVuQ29ubmVjdG9yQXV0aG9yaXphdGlvbldpbmRvd3MiLCJhdXRob3JpemF0aW9ucyIsInBvcHVwV2luZG93IiwibGVuZ3RoIiwiY2xvc2VkIiwiY2xvc2UiLCJfYXV0aG9yaXphdGlvbnMiLCJfdG9BcnJheSIsImZpcnN0QXV0aG9yaXphdGlvbiIsInJlbWFpbmluZ0F1dGhvcml6YXRpb25zIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJzbGljZSIsIm9wZW5lZCIsImxvY2F0aW9uIiwiaHJlZiIsImF1dGhfdXJsIiwid2luZG93Iiwib3BlbiIsImZvckVhY2giLCJhdXRob3JpemF0aW9uIiwiaXNDb25uZWN0b3JPQXV0aE1lc3NhZ2UiLCJkYXRhIiwiX3R5cGVvZiIsInR5cGUiLCJ3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbiIsIl9yZWY1IiwiX2NhbGxlZTYiLCJfcmVmNCIsInNsdWdzIiwicG9wdXAiLCJfcmVmNCR0aW1lb3V0TXMiLCJ0aW1lb3V0TXMiLCJwZW5kaW5nIiwib2F1dGhFcnJvciIsImF1dGhvcml6ZWRTbHVncyIsIl9jb250ZXh0NiIsImF1dGhvcml6ZWQiLCJTZXQiLCJfcmVmNiIsIl9jYWxsZWU0IiwiY29ubmVjdG9ycyIsIl9jb250ZXh0NCIsImZpbHRlciIsImNvbm5lY3RvciIsImhhcyIsInNsdWciLCJ1c2VyX2F1dGhvcml6ZWQiLCJtYXAiLCJQcm9taXNlIiwicmVzb2x2ZSIsImZpbmlzaGVkIiwib25NZXNzYWdlIiwicG9sbCIsInRpbWVyIiwiZmluaXNoIiwiX3JlZjciLCJfY2FsbGVlNSIsIl90IiwiX2NvbnRleHQ1IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNsZWFySW50ZXJ2YWwiLCJjbGVhclRpbWVvdXQiLCJlcnJvciIsInVuZGVmaW5lZCIsImV2ZW50Iiwic3RhdHVzIiwibWVzc2FnZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJzZXRJbnRlcnZhbCIsInNldFRpbWVvdXQiLCJfeDQiLCJjb25uZWN0b3JBdXRoRXJyb3JNZXNzYWdlIiwibmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tYWlhL0FnZW50cy9jb25uZWN0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uL2NsaWVudCdcblxuZXhwb3J0IHR5cGUgQ2F0YWxvZ0Nvbm5lY3RvciA9IHtcbiAgaWQ6IG51bWJlclxuICBzbHVnOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIGljb25fdXJsPzogc3RyaW5nXG4gIHJlcXVpcmVzX2F1dGg6IGJvb2xlYW5cbiAgaXNfYWN0aXZlOiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIEFnZW50Q29ubmVjdG9yID0gQ2F0YWxvZ0Nvbm5lY3RvciAmIHtcbiAgZW5hYmxlZF9mb3JfYWdlbnQ6IGJvb2xlYW5cbiAgdXNlcl9hdXRob3JpemVkOiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFBlbmRpbmdDb25uZWN0b3JBdXRob3JpemF0aW9uID0ge1xuICBzbHVnOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGF1dGhfdXJsOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ29ubmVjdG9yQXV0aEVycm9yID0ge1xuICBzbHVnOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIG1lc3NhZ2U6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBTYXZlQWdlbnRDb25uZWN0b3JzUmVzcG9uc2UgPSB7XG4gIGFnZW50X2lkOiBzdHJpbmdcbiAgY29ubmVjdG9yX3NsdWdzOiBzdHJpbmdbXVxuICByZXF1aXJlc19hdXRoPzogUGVuZGluZ0Nvbm5lY3RvckF1dGhvcml6YXRpb25bXVxuICBhdXRoX2Vycm9ycz86IENvbm5lY3RvckF1dGhFcnJvcltdXG59XG5cbmV4cG9ydCBjb25zdCBnZXRBdmFpbGFibGVDb25uZWN0b3JzID0gYXN5bmMgKCk6IFByb21pc2U8Q2F0YWxvZ0Nvbm5lY3RvcltdPiA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICBwYXRoOiAnY29ubmVjdG9ycycsXG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggY29ubmVjdG9ycycpXG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG59XG5cbmV4cG9ydCBjb25zdCBnZXRBZ2VudENvbm5lY3RvcnMgPSBhc3luYyAoYWdlbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBZ2VudENvbm5lY3RvcltdPiA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICBwYXRoOiBgYWdlbnRzLyR7YWdlbnRJZH0vY29ubmVjdG9yc2AsXG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggYWdlbnQgY29ubmVjdG9ycycpXG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG59XG5cbmV4cG9ydCBjb25zdCBzYXZlQWdlbnRDb25uZWN0b3JzID0gYXN5bmMgKFxuICBhZ2VudElkOiBzdHJpbmcsXG4gIGNvbm5lY3RvclNsdWdzOiBzdHJpbmdbXVxuKTogUHJvbWlzZTxTYXZlQWdlbnRDb25uZWN0b3JzUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgIHBhdGg6IGBhZ2VudHMvJHthZ2VudElkfS9jb25uZWN0b3JzYCxcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBib2R5OiB7XG4gICAgICBjb25uZWN0b3Jfc2x1Z3M6IGNvbm5lY3RvclNsdWdzLFxuICAgIH0sXG4gIH0pXG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHNhdmUgYWdlbnQgY29ubmVjdG9ycycpXG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG59XG5cbmV4cG9ydCBjb25zdCBvcGVuQ29ubmVjdG9yQXV0aG9yaXphdGlvbldpbmRvd3MgPSAoXG4gIGF1dGhvcml6YXRpb25zOiBQZW5kaW5nQ29ubmVjdG9yQXV0aG9yaXphdGlvbltdLFxuICBwb3B1cFdpbmRvdz86IFdpbmRvdyB8IG51bGxcbik6IFdpbmRvdyB8IG51bGwgPT4ge1xuICBpZiAoIWF1dGhvcml6YXRpb25zLmxlbmd0aCkge1xuICAgIGlmIChwb3B1cFdpbmRvdyAmJiAhcG9wdXBXaW5kb3cuY2xvc2VkKSB7XG4gICAgICBwb3B1cFdpbmRvdy5jbG9zZSgpXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBbZmlyc3RBdXRob3JpemF0aW9uLCAuLi5yZW1haW5pbmdBdXRob3JpemF0aW9uc10gPSBhdXRob3JpemF0aW9uc1xuXG4gIGxldCBvcGVuZWQ6IFdpbmRvdyB8IG51bGwgPSBudWxsXG4gIGlmIChwb3B1cFdpbmRvdyAmJiAhcG9wdXBXaW5kb3cuY2xvc2VkKSB7XG4gICAgLy8gTmF2ZWdhciBlbCBwb3B1cCBxdWUgeWEgYWJyaW1vcyBlbiBlbCBjbGljayBkZWwgdXN1YXJpbzogc2kgbG8gYWJyacOpcmFtb3NcbiAgICAvLyBhY8OhLCBlbCBicm93c2VyIGxvIGJsb3F1ZWFyw61hIHBvciBubyB2ZW5pciBkZSB1biBnZXN0by5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICBwb3B1cFdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZmlyc3RBdXRob3JpemF0aW9uLmF1dGhfdXJsXG4gICAgb3BlbmVkID0gcG9wdXBXaW5kb3dcbiAgfSBlbHNlIHtcbiAgICBvcGVuZWQgPSB3aW5kb3cub3BlbihmaXJzdEF1dGhvcml6YXRpb24uYXV0aF91cmwsICdfYmxhbmsnLCAncG9wdXA9eWVzLHdpZHRoPTU2MCxoZWlnaHQ9NzYwJylcbiAgfVxuXG4gIHJlbWFpbmluZ0F1dGhvcml6YXRpb25zLmZvckVhY2goYXV0aG9yaXphdGlvbiA9PiB7XG4gICAgd2luZG93Lm9wZW4oYXV0aG9yaXphdGlvbi5hdXRoX3VybCwgJ19ibGFuaycsICdwb3B1cD15ZXMsd2lkdGg9NTYwLGhlaWdodD03NjAnKVxuICB9KVxuXG4gIHJldHVybiBvcGVuZWRcbn1cblxuY29uc3QgaXNDb25uZWN0b3JPQXV0aE1lc3NhZ2UgPSAoXG4gIGRhdGE6IHVua25vd25cbik6IGRhdGEgaXMgeyB0eXBlOiBzdHJpbmc7IHN0YXR1czogc3RyaW5nOyBzbHVnPzogc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nIH0gPT5cbiAgISFkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAndHlwZScgaW4gZGF0YSAmJiAoZGF0YSBhcyB7IHR5cGU6IHN0cmluZyB9KS50eXBlID09PSAnY29ubmVjdG9yLW9hdXRoJ1xuXG4vKiogV2FpdHMgdW50aWwgdGhlIE9BdXRoIHBvcHVwIGZpbmlzaGVzLCB0aGVuIGNvbmZpcm1zIHRoZSBjb21wYW55IHRva2VuIHZpYSBHRVQuICovXG5leHBvcnQgY29uc3Qgd2FpdEZvckNvbm5lY3RvckF1dGhvcml6YXRpb24gPSBhc3luYyAoe1xuICBhZ2VudElkLFxuICBzbHVncyxcbiAgcG9wdXAsXG4gIHRpbWVvdXRNcyA9IDE4MF8wMDAsXG59OiB7XG4gIGFnZW50SWQ6IHN0cmluZ1xuICBzbHVnczogc3RyaW5nW11cbiAgcG9wdXA/OiBXaW5kb3cgfCBudWxsXG4gIHRpbWVvdXRNcz86IG51bWJlclxufSk6IFByb21pc2U8eyBhdXRob3JpemVkOiBzdHJpbmdbXTsgZXJyb3I/OiBzdHJpbmcgfT4gPT4ge1xuICBpZiAoIXNsdWdzLmxlbmd0aCkge1xuICAgIHJldHVybiB7IGF1dGhvcml6ZWQ6IFtdIH1cbiAgfVxuXG4gIGNvbnN0IHBlbmRpbmcgPSBuZXcgU2V0KHNsdWdzKVxuICBsZXQgb2F1dGhFcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgY29uc3QgYXV0aG9yaXplZFNsdWdzID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3RvcnMgPSBhd2FpdCBnZXRBZ2VudENvbm5lY3RvcnMoYWdlbnRJZClcbiAgICByZXR1cm4gY29ubmVjdG9yc1xuICAgICAgLmZpbHRlcihjb25uZWN0b3IgPT4gcGVuZGluZy5oYXMoY29ubmVjdG9yLnNsdWcpICYmIGNvbm5lY3Rvci51c2VyX2F1dGhvcml6ZWQpXG4gICAgICAubWFwKGNvbm5lY3RvciA9PiBjb25uZWN0b3Iuc2x1ZylcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICBsZXQgZmluaXNoZWQgPSBmYWxzZVxuICAgIC8vIERlY2xhcmFkb3MgYW50ZXMgcG9ycXVlIGBmaW5pc2hgIGxvcyBsaW1waWEgeSBhIHN1IHZleiBsb3MgdHJlcyBsbyBpbnZvY2FuLlxuICAgIC8vIFBhcmEgY3VhbmRvIGFsZ3VubyBwdWVkZSBkaXNwYXJhciwgZWwgYmxvcXVlIGRlIGFiYWpvIHlhIGxvcyBhc2lnbsOzLlxuICAgIGxldCBvbk1lc3NhZ2U6IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB2b2lkXG4gICAgbGV0IHBvbGw6IG51bWJlclxuICAgIGxldCB0aW1lcjogbnVtYmVyXG5cbiAgICBjb25zdCBmaW5pc2ggPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoZmluaXNoZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBmaW5pc2hlZCA9IHRydWVcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgb25NZXNzYWdlKVxuICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwocG9sbClcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXIpXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBhdXRob3JpemVkID0gYXdhaXQgYXV0aG9yaXplZFNsdWdzKClcbiAgICAgICAgcmVzb2x2ZSh7IGF1dGhvcml6ZWQsIGVycm9yOiBhdXRob3JpemVkLmxlbmd0aCA/IHVuZGVmaW5lZCA6IG9hdXRoRXJyb3IgfSlcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXNvbHZlKHsgYXV0aG9yaXplZDogW10sIGVycm9yOiBvYXV0aEVycm9yIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgb25NZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIGlmICghaXNDb25uZWN0b3JPQXV0aE1lc3NhZ2UoZXZlbnQuZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGF0YS5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICAgICAgb2F1dGhFcnJvciA9IGV2ZW50LmRhdGEubWVzc2FnZVxuICAgICAgfVxuICAgICAgZmluaXNoKClcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIG9uTWVzc2FnZSlcblxuICAgIHBvbGwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHBvcHVwICYmIHBvcHVwLmNsb3NlZCkge1xuICAgICAgICBmaW5pc2goKVxuICAgICAgfVxuICAgIH0sIDQwMClcblxuICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb2F1dGhFcnJvciA9IG9hdXRoRXJyb3IgfHwgJ3RpbWVvdXQnXG4gICAgICBmaW5pc2goKVxuICAgIH0sIHRpbWVvdXRNcylcbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IGNvbm5lY3RvckF1dGhFcnJvck1lc3NhZ2UgPSAoZXJyb3I6IENvbm5lY3RvckF1dGhFcnJvcik6IHN0cmluZyA9PiB7XG4gIGlmIChlcnJvci5zbHVnID09PSAnbmV0c3VpdGUnKSB7XG4gICAgcmV0dXJuIGVycm9yLm1lc3NhZ2VcbiAgfVxuICByZXR1cm4gYCR7ZXJyb3IubmFtZX06ICR7ZXJyb3IubWVzc2FnZX1gXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsU0FBU0EsU0FBUyxRQUFRLFdBQVc7QUFvQ3JDLE9BQU8sSUFBTUMsc0JBQXNCO0VBQUEsSUFBQUMsSUFBQSxHQUFBQyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUcsU0FBQUMsUUFBQTtJQUFBLElBQUFDLFFBQUE7SUFBQSxPQUFBSCxtQkFBQSxDQUFBSSxJQUFBLFdBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtRQUFBO1VBQUFGLFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BQ2JYLFNBQVMsQ0FBQztZQUMvQlksSUFBSSxFQUFFLFlBQVk7WUFDbEJDLE1BQU0sRUFBRTtVQUNWLENBQUMsQ0FBQztRQUFBO1VBSElOLFFBQVEsR0FBQUUsUUFBQSxDQUFBSyxJQUFBO1VBQUEsSUFLVFAsUUFBUSxDQUFDUSxFQUFFO1lBQUFOLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQSxNQUNSLElBQUlLLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQztRQUFBO1VBQUEsT0FBQVAsUUFBQSxD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
|
|
300
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaE1haWEiLCJnZXRBdmFpbGFibGVDb25uZWN0b3JzIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInBhdGgiLCJtZXRob2QiLCJzZW50Iiwib2siLCJFcnJvciIsImFicnVwdCIsImpzb24iLCJzdG9wIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJnZXRBZ2VudENvbm5lY3RvcnMiLCJfcmVmMiIsIl9jYWxsZWUyIiwiYWdlbnRJZCIsIl9jb250ZXh0MiIsImNvbmNhdCIsIl94IiwiYXV0aG9yaXplQ29ubmVjdG9yIiwiX3JlZjMiLCJfY2FsbGVlMyIsInNsdWciLCJwYXlsb2FkIiwiX2NvbnRleHQzIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiYXV0aF91cmwiLCJfeDIiLCJzYXZlQWdlbnRDb25uZWN0b3JzIiwiX3JlZjQiLCJfY2FsbGVlNCIsImNvbm5lY3RvclNsdWdzIiwiX2NvbnRleHQ0IiwiYm9keSIsImNvbm5lY3Rvcl9zbHVncyIsIl94MyIsIl94NCIsIm9wZW5Db25uZWN0b3JBdXRob3JpemF0aW9uV2luZG93cyIsImF1dGhvcml6YXRpb25zIiwicG9wdXBXaW5kb3ciLCJsZW5ndGgiLCJjbG9zZWQiLCJjbG9zZSIsIl9hdXRob3JpemF0aW9ucyIsIl90b0FycmF5IiwiZmlyc3RBdXRob3JpemF0aW9uIiwicmVtYWluaW5nQXV0aG9yaXphdGlvbnMiLCJfYXJyYXlMaWtlVG9BcnJheSIsInNsaWNlIiwib3BlbmVkIiwibG9jYXRpb24iLCJocmVmIiwid2luZG93Iiwib3BlbiIsImZvckVhY2giLCJhdXRob3JpemF0aW9uIiwiaXNDb25uZWN0b3JPQXV0aE1lc3NhZ2UiLCJkYXRhIiwiX3R5cGVvZiIsInR5cGUiLCJ3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbiIsIl9yZWY2IiwiX2NhbGxlZTciLCJfcmVmNSIsInNsdWdzIiwicG9wdXAiLCJfcmVmNSR0aW1lb3V0TXMiLCJ0aW1lb3V0TXMiLCJwZW5kaW5nIiwib2F1dGhFcnJvciIsImF1dGhvcml6ZWRTbHVncyIsIl9jb250ZXh0NyIsImF1dGhvcml6ZWQiLCJTZXQiLCJfcmVmNyIsIl9jYWxsZWU1IiwiY29ubmVjdG9ycyIsIl9jb250ZXh0NSIsImZpbHRlciIsImNvbm5lY3RvciIsImhhcyIsInVzZXJfYXV0aG9yaXplZCIsIm1hcCIsIlByb21pc2UiLCJyZXNvbHZlIiwiZmluaXNoZWQiLCJvbk1lc3NhZ2UiLCJwb2xsIiwidGltZXIiLCJmaW5pc2giLCJfcmVmOCIsIl9jYWxsZWU2IiwiX3QiLCJfY29udGV4dDYiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY2xlYXJJbnRlcnZhbCIsImNsZWFyVGltZW91dCIsImVycm9yIiwidW5kZWZpbmVkIiwiZXZlbnQiLCJzdGF0dXMiLCJtZXNzYWdlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNldEludGVydmFsIiwic2V0VGltZW91dCIsIl94NSIsImNvbm5lY3RvckF1dGhFcnJvck1lc3NhZ2UiLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvQWdlbnRzL2Nvbm5lY3RvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vY2xpZW50J1xuXG5leHBvcnQgdHlwZSBDYXRhbG9nQ29ubmVjdG9yID0ge1xuICBpZDogbnVtYmVyXG4gIHNsdWc6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgaWNvbl91cmw/OiBzdHJpbmdcbiAgcmVxdWlyZXNfYXV0aDogYm9vbGVhblxuICBpc19hY3RpdmU6IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgQ29ubmVjdG9yQ29ubmVjdGlvblN0YXR1cyA9ICdvaycgfCAnbmVlZHNfYXR0ZW50aW9uJyB8ICdlcnJvcidcblxuZXhwb3J0IHR5cGUgQWdlbnRDb25uZWN0b3IgPSBDYXRhbG9nQ29ubmVjdG9yICYge1xuICBlbmFibGVkX2Zvcl9hZ2VudDogYm9vbGVhblxuICB1c2VyX2F1dGhvcml6ZWQ6IGJvb2xlYW5cbiAgY29ubmVjdGlvbl9zdGF0dXM/OiBDb25uZWN0b3JDb25uZWN0aW9uU3RhdHVzXG59XG5cbmV4cG9ydCB0eXBlIFBlbmRpbmdDb25uZWN0b3JBdXRob3JpemF0aW9uID0ge1xuICBzbHVnOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGF1dGhfdXJsOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ29ubmVjdG9yQXV0aEVycm9yID0ge1xuICBzbHVnOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIG1lc3NhZ2U6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBTYXZlQWdlbnRDb25uZWN0b3JzUmVzcG9uc2UgPSB7XG4gIGFnZW50X2lkOiBzdHJpbmdcbiAgY29ubmVjdG9yX3NsdWdzOiBzdHJpbmdbXVxuICByZXF1aXJlc19hdXRoPzogUGVuZGluZ0Nvbm5lY3RvckF1dGhvcml6YXRpb25bXVxuICBhdXRoX2Vycm9ycz86IENvbm5lY3RvckF1dGhFcnJvcltdXG59XG5cbmV4cG9ydCBjb25zdCBnZXRBdmFpbGFibGVDb25uZWN0b3JzID0gYXN5bmMgKCk6IFByb21pc2U8Q2F0YWxvZ0Nvbm5lY3RvcltdPiA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICBwYXRoOiAnY29ubmVjdG9ycycsXG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggY29ubmVjdG9ycycpXG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG59XG5cbmV4cG9ydCBjb25zdCBnZXRBZ2VudENvbm5lY3RvcnMgPSBhc3luYyAoYWdlbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBZ2VudENvbm5lY3RvcltdPiA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICBwYXRoOiBgYWdlbnRzLyR7YWdlbnRJZH0vY29ubmVjdG9yc2AsXG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggYWdlbnQgY29ubmVjdG9ycycpXG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG59XG5cbi8qKiBGZXRjaCBhIGZyZXNoIE9BdXRoIFVSTCBvbiBjbGljazogaXRzIHN0YXRlIGV4cGlyZXMgYWZ0ZXIgdGVuIG1pbnV0ZXMuICovXG5leHBvcnQgY29uc3QgYXV0aG9yaXplQ29ubmVjdG9yID0gYXN5bmMgKHNsdWc6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICBwYXRoOiBgY29ubmVjdG9ycy8ke2VuY29kZVVSSUNvbXBvbmVudChzbHVnKX0vYXV0aG9yaXplYCxcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gc3RhcnQgY29ubmVjdG9yIGF1dGhvcml6YXRpb24nKVxuICB9XG5cbiAgY29uc3QgcGF5bG9hZDogeyBhdXRoX3VybDogc3RyaW5nIH0gPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgaWYgKCFwYXlsb2FkLmF1dGhfdXJsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb25uZWN0b3IgYXV0aG9yaXphdGlvbiBVUkwgaXMgbWlzc2luZycpXG4gIH1cbiAgcmV0dXJuIHBheWxvYWQuYXV0aF91cmxcbn1cblxuZXhwb3J0IGNvbnN0IHNhdmVBZ2VudENvbm5lY3RvcnMgPSBhc3luYyAoXG4gIGFnZW50SWQ6IHN0cmluZyxcbiAgY29ubmVjdG9yU2x1Z3M6IHN0cmluZ1tdXG4pOiBQcm9taXNlPFNhdmVBZ2VudENvbm5lY3RvcnNSZXNwb25zZT4gPT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgcGF0aDogYGFnZW50cy8ke2FnZW50SWR9L2Nvbm5lY3RvcnNgLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGJvZHk6IHtcbiAgICAgIGNvbm5lY3Rvcl9zbHVnczogY29ubmVjdG9yU2x1Z3MsXG4gICAgfSxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gc2F2ZSBhZ2VudCBjb25uZWN0b3JzJylcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZS5qc29uKClcbn1cblxuZXhwb3J0IGNvbnN0IG9wZW5Db25uZWN0b3JBdXRob3JpemF0aW9uV2luZG93cyA9IChcbiAgYXV0aG9yaXphdGlvbnM6IFBlbmRpbmdDb25uZWN0b3JBdXRob3JpemF0aW9uW10sXG4gIHBvcHVwV2luZG93PzogV2luZG93IHwgbnVsbFxuKTogV2luZG93IHwgbnVsbCA9PiB7XG4gIGlmICghYXV0aG9yaXphdGlvbnMubGVuZ3RoKSB7XG4gICAgaWYgKHBvcHVwV2luZG93ICYmICFwb3B1cFdpbmRvdy5jbG9zZWQpIHtcbiAgICAgIHBvcHVwV2luZG93LmNsb3NlKClcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IFtmaXJzdEF1dGhvcml6YXRpb24sIC4uLnJlbWFpbmluZ0F1dGhvcml6YXRpb25zXSA9IGF1dGhvcml6YXRpb25zXG5cbiAgbGV0IG9wZW5lZDogV2luZG93IHwgbnVsbCA9IG51bGxcbiAgaWYgKHBvcHVwV2luZG93ICYmICFwb3B1cFdpbmRvdy5jbG9zZWQpIHtcbiAgICAvLyBOYXZlZ2FyIGVsIHBvcHVwIHF1ZSB5YSBhYnJpbW9zIGVuIGVsIGNsaWNrIGRlbCB1c3VhcmlvOiBzaSBsbyBhYnJpw6lyYW1vc1xuICAgIC8vIGFjw6EsIGVsIGJyb3dzZXIgbG8gYmxvcXVlYXLDrWEgcG9yIG5vIHZlbmlyIGRlIHVuIGdlc3RvLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIHBvcHVwV2luZG93LmxvY2F0aW9uLmhyZWYgPSBmaXJzdEF1dGhvcml6YXRpb24uYXV0aF91cmxcbiAgICBvcGVuZWQgPSBwb3B1cFdpbmRvd1xuICB9IGVsc2Uge1xuICAgIG9wZW5lZCA9IHdpbmRvdy5vcGVuKGZpcnN0QXV0aG9yaXphdGlvbi5hdXRoX3VybCwgJ19ibGFuaycsICdwb3B1cD15ZXMsd2lkdGg9NTYwLGhlaWdodD03NjAnKVxuICB9XG5cbiAgcmVtYWluaW5nQXV0aG9yaXphdGlvbnMuZm9yRWFjaChhdXRob3JpemF0aW9uID0+IHtcbiAgICB3aW5kb3cub3BlbihhdXRob3JpemF0aW9uLmF1dGhfdXJsLCAnX2JsYW5rJywgJ3BvcHVwPXllcyx3aWR0aD01NjAsaGVpZ2h0PTc2MCcpXG4gIH0pXG5cbiAgcmV0dXJuIG9wZW5lZFxufVxuXG5jb25zdCBpc0Nvbm5lY3Rvck9BdXRoTWVzc2FnZSA9IChcbiAgZGF0YTogdW5rbm93blxuKTogZGF0YSBpcyB7IHR5cGU6IHN0cmluZzsgc3RhdHVzOiBzdHJpbmc7IHNsdWc/OiBzdHJpbmc7IG1lc3NhZ2U/OiBzdHJpbmcgfSA9PlxuICAhIWRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICd0eXBlJyBpbiBkYXRhICYmIChkYXRhIGFzIHsgdHlwZTogc3RyaW5nIH0pLnR5cGUgPT09ICdjb25uZWN0b3Itb2F1dGgnXG5cbi8qKiBXYWl0cyB1bnRpbCB0aGUgT0F1dGggcG9wdXAgZmluaXNoZXMsIHRoZW4gY29uZmlybXMgdGhlIGNvbXBhbnkgdG9rZW4gdmlhIEdFVC4gKi9cbmV4cG9ydCBjb25zdCB3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbiA9IGFzeW5jICh7XG4gIGFnZW50SWQsXG4gIHNsdWdzLFxuICBwb3B1cCxcbiAgdGltZW91dE1zID0gMTgwXzAwMCxcbn06IHtcbiAgYWdlbnRJZDogc3RyaW5nXG4gIHNsdWdzOiBzdHJpbmdbXVxuICBwb3B1cD86IFdpbmRvdyB8IG51bGxcbiAgdGltZW91dE1zPzogbnVtYmVyXG59KTogUHJvbWlzZTx7IGF1dGhvcml6ZWQ6IHN0cmluZ1tdOyBlcnJvcj86IHN0cmluZyB9PiA9PiB7XG4gIGlmICghc2x1Z3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHsgYXV0aG9yaXplZDogW10gfVxuICB9XG5cbiAgY29uc3QgcGVuZGluZyA9IG5ldyBTZXQoc2x1Z3MpXG4gIGxldCBvYXV0aEVycm9yOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBjb25zdCBhdXRob3JpemVkU2x1Z3MgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY29ubmVjdG9ycyA9IGF3YWl0IGdldEFnZW50Q29ubmVjdG9ycyhhZ2VudElkKVxuICAgIHJldHVybiBjb25uZWN0b3JzXG4gICAgICAuZmlsdGVyKGNvbm5lY3RvciA9PiBwZW5kaW5nLmhhcyhjb25uZWN0b3Iuc2x1ZykgJiYgY29ubmVjdG9yLnVzZXJfYXV0aG9yaXplZClcbiAgICAgIC5tYXAoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5zbHVnKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgIGxldCBmaW5pc2hlZCA9IGZhbHNlXG4gICAgLy8gRGVjbGFyYWRvcyBhbnRlcyBwb3JxdWUgYGZpbmlzaGAgbG9zIGxpbXBpYSB5IGEgc3UgdmV6IGxvcyB0cmVzIGxvIGludm9jYW4uXG4gICAgLy8gUGFyYSBjdWFuZG8gYWxndW5vIHB1ZWRlIGRpc3BhcmFyLCBlbCBibG9xdWUgZGUgYWJham8geWEgbG9zIGFzaWduw7MuXG4gICAgbGV0IG9uTWVzc2FnZTogKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHZvaWRcbiAgICBsZXQgcG9sbDogbnVtYmVyXG4gICAgbGV0IHRpbWVyOiBudW1iZXJcblxuICAgIGNvbnN0IGZpbmlzaCA9IGFzeW5jICgpID0+IHtcbiAgICAgIGlmIChmaW5pc2hlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGZpbmlzaGVkID0gdHJ1ZVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBvbk1lc3NhZ2UpXG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChwb2xsKVxuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGF1dGhvcml6ZWQgPSBhd2FpdCBhdXRob3JpemVkU2x1Z3MoKVxuICAgICAgICByZXNvbHZlKHsgYXV0aG9yaXplZCwgZXJyb3I6IGF1dGhvcml6ZWQubGVuZ3RoID8gdW5kZWZpbmVkIDogb2F1dGhFcnJvciB9KVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJlc29sdmUoeyBhdXRob3JpemVkOiBbXSwgZXJyb3I6IG9hdXRoRXJyb3IgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgaWYgKCFpc0Nvbm5lY3Rvck9BdXRoTWVzc2FnZShldmVudC5kYXRhKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5kYXRhLnN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgICAgICBvYXV0aEVycm9yID0gZXZlbnQuZGF0YS5tZXNzYWdlXG4gICAgICB9XG4gICAgICBmaW5pc2goKVxuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgb25NZXNzYWdlKVxuXG4gICAgcG9sbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAocG9wdXAgJiYgcG9wdXAuY2xvc2VkKSB7XG4gICAgICAgIGZpbmlzaCgpXG4gICAgICB9XG4gICAgfSwgNDAwKVxuXG4gICAgdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvYXV0aEVycm9yID0gb2F1dGhFcnJvciB8fCAndGltZW91dCdcbiAgICAgIGZpbmlzaCgpXG4gICAgfSwgdGltZW91dE1zKVxuICB9KVxufVxuXG5leHBvcnQgY29uc3QgY29ubmVjdG9yQXV0aEVycm9yTWVzc2FnZSA9IChlcnJvcjogQ29ubmVjdG9yQXV0aEVycm9yKTogc3RyaW5nID0+IHtcbiAgaWYgKGVycm9yLnNsdWcgPT09ICduZXRzdWl0ZScpIHtcbiAgICByZXR1cm4gZXJyb3IubWVzc2FnZVxuICB9XG4gIHJldHVybiBgJHtlcnJvci5uYW1lfTogJHtlcnJvci5tZXNzYWdlfWBcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxTQUFTQSxTQUFTLFFBQVEsV0FBVztBQXVDckMsT0FBTyxJQUFNQyxzQkFBc0I7RUFBQSxJQUFBQyxJQUFBLEdBQUFDLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBRyxTQUFBQyxRQUFBO0lBQUEsSUFBQUMsUUFBQTtJQUFBLE9BQUFILG1CQUFBLENBQUFJLElBQUEsV0FBQUMsUUFBQTtNQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1FBQUE7VUFBQUYsUUFBQSxDQUFBRSxJQUFBO1VBQUEsT0FDYlgsU0FBUyxDQUFDO1lBQy9CWSxJQUFJLEVBQUUsWUFBWTtZQUNsQkMsTUFBTSxFQUFFO1VBQ1YsQ0FBQyxDQUFDO1FBQUE7VUFISU4sUUFBUSxHQUFBRSxRQUFBLENBQUFLLElBQUE7VUFBQSxJQUtUUCxRQUFRLENBQUNRLEVBQUU7WUFBQU4sUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUFBLE1BQ1IsSUFBSUssS0FBSyxDQUFDLDRCQUE0QixDQUFDO1FBQUE7VUFBQSxPQUFBUCxRQUFBLENBQUFRLE1BQUEsV0FHeENWLFFBQVEsQ0FBQ1csSUFBSSxDQUFDLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQVQsUUFBQSxDQUFBVSxJQUFBO01BQUE7SUFBQSxHQUFBYixPQUFBO0VBQUEsQ0FDdkI7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
|