@projectcor/maia-components 2.34.2 → 2.34.3-1

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.
Files changed (60) hide show
  1. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.js +53 -0
  2. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.spec.js +107 -0
  3. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.styles.js +8 -0
  4. package/lib/components/atoms/ContextCompactedNotice/index.js +2 -0
  5. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +12 -1
  6. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +127 -5
  7. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +2 -29
  8. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +24 -33
  9. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +2 -19
  10. package/lib/components/atoms/MAIAInput/MAIAInput.js +192 -17
  11. package/lib/components/atoms/MAIAInput/styles.js +15 -11
  12. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.js +208 -0
  13. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.styles.js +77 -0
  14. package/lib/components/atoms/SkillsDropdown/index.js +2 -0
  15. package/lib/components/atoms/icons/PlusIcon.js +29 -0
  16. package/lib/components/atoms/icons/SkillCreatedByIcon.js +20 -0
  17. package/lib/components/atoms/icons/SkillVisibilityEveryoneIcon.js +23 -0
  18. package/lib/components/atoms/icons/SkillVisibilityOnlyMeIcon.js +23 -0
  19. package/lib/components/atoms/icons/SkillsNavIcon.js +4 -7
  20. package/lib/components/atoms/icons/index.js +5 -1
  21. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +5 -3
  22. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +76 -29
  23. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +56 -18
  24. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +10 -5
  25. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +315 -239
  26. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +131 -104
  27. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +1 -3
  28. package/lib/components/molecules/Sidebar/Sidebar.js +5 -4
  29. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
  30. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +8 -1
  31. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +369 -182
  32. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +126 -66
  33. package/lib/constants/config.js +1 -4
  34. package/lib/constants/formatExtensions.js +8 -7
  35. package/lib/constants/permissions/utils.js +3 -3
  36. package/lib/dev/DevReasoningTimeline.js +50 -8
  37. package/lib/hooks/useChatManager/useChatManager.js +23 -8
  38. package/lib/hooks/useContextMentions.js +96 -56
  39. package/lib/hooks/useEntitySearch.js +92 -278
  40. package/lib/hooks/useMentionAllowedTypes.js +9 -25
  41. package/lib/hooks/useMentionPopover.js +9 -33
  42. package/lib/hooks/useReasoningTrace/reasoningStore.js +39 -8
  43. package/lib/hooks/useSkillsCatalog.js +66 -0
  44. package/lib/lang/br/index.js +41 -9
  45. package/lib/lang/en/index.js +41 -9
  46. package/lib/lang/es/index.js +42 -10
  47. package/lib/lang/fr/index.js +41 -9
  48. package/lib/services/maia/Skills/createSkill.js +1 -1
  49. package/lib/services/maia/Skills/getSkills.js +70 -40
  50. package/lib/services/maia/Skills/updateSkill.js +1 -1
  51. package/lib/services/utils/mapChatMessages.js +12 -7
  52. package/lib/store/sessions/sessionStreamManager.js +47 -44
  53. package/lib/types/Chat.js +1 -1
  54. package/lib/types/contextCompaction.js +48 -0
  55. package/lib/types/jest-dom.d.js +2 -0
  56. package/lib/types/reasoning.js +1 -1
  57. package/lib/types/skill.js +1 -1
  58. package/lib/utils/contextMentionTriggers.js +2 -5
  59. package/lib/utils/renderContextMentions.js +39 -18
  60. package/package.json +3 -2
@@ -166,7 +166,7 @@ var parseSessionSSE = /*#__PURE__*/function () {
166
166
  _context.prev = 2;
167
167
  case 3:
168
168
  if (!true) {
169
- _context.next = 30;
169
+ _context.next = 31;
170
170
  break;
171
171
  }
172
172
  if (!active.isStopped) {
@@ -174,7 +174,7 @@ var parseSessionSSE = /*#__PURE__*/function () {
174
174
  break;
175
175
  }
176
176
  reader.cancel();
177
- return _context.abrupt("continue", 30);
177
+ return _context.abrupt("continue", 31);
178
178
  case 4:
179
179
  _context.next = 5;
180
180
  return reader.read();
@@ -186,14 +186,14 @@ var parseSessionSSE = /*#__PURE__*/function () {
186
186
  _context.next = 6;
187
187
  break;
188
188
  }
189
- return _context.abrupt("continue", 30);
189
+ return _context.abrupt("continue", 31);
190
190
  case 6:
191
191
  if (!active.isStopped) {
192
192
  _context.next = 7;
193
193
  break;
194
194
  }
195
195
  reader.cancel();
196
- return _context.abrupt("continue", 30);
196
+ return _context.abrupt("continue", 31);
197
197
  case 7:
198
198
  buffer += decoder.decode(value, {
199
199
  stream: true
@@ -205,7 +205,7 @@ var parseSessionSSE = /*#__PURE__*/function () {
205
205
  _iterator.s();
206
206
  case 9:
207
207
  if ((_step = _iterator.n()).done) {
208
- _context.next = 26;
208
+ _context.next = 27;
209
209
  break;
210
210
  }
211
211
  line = _step.value;
@@ -213,21 +213,21 @@ var parseSessionSSE = /*#__PURE__*/function () {
213
213
  _context.next = 10;
214
214
  break;
215
215
  }
216
- return _context.abrupt("continue", 25);
216
+ return _context.abrupt("continue", 26);
217
217
  case 10:
218
218
  _line$split = line.split('\n'), _line$split2 = _slicedToArray(_line$split, 2), eventLine = _line$split2[0], dataLine = _line$split2[1];
219
219
  if (!(!eventLine || !dataLine)) {
220
220
  _context.next = 11;
221
221
  break;
222
222
  }
223
- return _context.abrupt("continue", 25);
223
+ return _context.abrupt("continue", 26);
224
224
  case 11:
225
225
  eventType = eventLine.replace('event: ', '').trim();
226
226
  dataStr = dataLine.replace('data: ', '').trim();
227
227
  _context.prev = 12;
228
228
  data = JSON.parse(dataStr);
229
229
  _t = eventType;
230
- _context.next = _t === 'thinking' ? 13 : _t === 'answer_reset' ? 14 : _t === 'reasoning_step' ? 15 : _t === 'token' ? 16 : _t === 'content' ? 17 : _t === 'node' ? 18 : _t === 'complete' ? 19 : _t === 'approval_required' ? 20 : _t === 'error' ? 21 : 22;
230
+ _context.next = _t === 'thinking' ? 13 : _t === 'answer_reset' ? 14 : _t === 'context_compacted' ? 15 : _t === 'reasoning_step' ? 16 : _t === 'token' ? 17 : _t === 'content' ? 18 : _t === 'node' ? 19 : _t === 'complete' ? 20 : _t === 'approval_required' ? 21 : _t === 'error' ? 22 : 23;
231
231
  break;
232
232
  case 13:
233
233
  thinkingDelta = typeof data.delta === 'string' ? data.delta : '';
@@ -244,11 +244,14 @@ var parseSessionSSE = /*#__PURE__*/function () {
244
244
  message: getThinkingLoadingMessage(0, t)
245
245
  });
246
246
  }
247
- return _context.abrupt("continue", 23);
247
+ return _context.abrupt("continue", 24);
248
248
  case 14:
249
249
  clearStreamLikeAnswerReset();
250
- return _context.abrupt("continue", 23);
250
+ return _context.abrupt("continue", 24);
251
251
  case 15:
252
+ reasoningStore.setCompaction(placeholderId, data);
253
+ return _context.abrupt("continue", 24);
254
+ case 16:
252
255
  stepTool = typeof data.tool === 'string' ? data.tool : '';
253
256
  stepType = typeof data.type === 'string' ? data.type : '';
254
257
  if (stepTool && stepType !== 'handoff' && data.status === 'running') {
@@ -270,21 +273,21 @@ var parseSessionSSE = /*#__PURE__*/function () {
270
273
  clearStreamLikeAnswerReset();
271
274
  }
272
275
  }
273
- return _context.abrupt("continue", 23);
274
- case 16:
276
+ return _context.abrupt("continue", 24);
277
+ case 17:
275
278
  chunk = typeof data.content === 'string' ? data.content : '';
276
279
  ensureWritingStarted();
277
280
  applyStreamChunk(chunk);
278
- return _context.abrupt("continue", 23);
279
- case 17:
281
+ return _context.abrupt("continue", 24);
282
+ case 18:
280
283
  _chunk = typeof data.content === 'string' ? data.content : '';
281
284
  ensureWritingStarted();
282
285
  applyStreamChunk(_chunk);
283
286
  if (isCompleteLikeSsePayload(data)) {
284
287
  applyStreamComplete(data);
285
288
  }
286
- return _context.abrupt("continue", 23);
287
- case 18:
289
+ return _context.abrupt("continue", 24);
290
+ case 19:
288
291
  if (data.node === 'agent_transfer') {
289
292
  store().patchMeta(sessionId, {
290
293
  isLoading: true
@@ -297,11 +300,11 @@ var parseSessionSSE = /*#__PURE__*/function () {
297
300
  store().setStatus(sessionId, 'thinking');
298
301
  store().setActivity(sessionId, resolveHitlNodeStreamActivity(data.message, t, hitlExecutionContext !== null && hitlExecutionContext !== void 0 ? hitlExecutionContext : undefined, typeof data.thread_id === 'string' ? data.thread_id : undefined));
299
302
  }
300
- return _context.abrupt("continue", 23);
301
- case 19:
302
- applyStreamComplete(data);
303
- return _context.abrupt("continue", 23);
303
+ return _context.abrupt("continue", 24);
304
304
  case 20:
305
+ applyStreamComplete(data);
306
+ return _context.abrupt("continue", 24);
307
+ case 21:
305
308
  flushPending();
306
309
  // Preaprobado (auto-approve o detección manual): el stream no se corta,
307
310
  // sigue ejecutando las acciones sin esperar decisión del usuario.
@@ -326,8 +329,8 @@ var parseSessionSSE = /*#__PURE__*/function () {
326
329
  store().setStatus(sessionId, 'thinking');
327
330
  store().setActivity(sessionId, resolveInitialHitlStreamActivity(t, hitlExecutionContext !== null && hitlExecutionContext !== void 0 ? hitlExecutionContext : undefined));
328
331
  }
329
- return _context.abrupt("continue", 23);
330
- case 21:
332
+ return _context.abrupt("continue", 24);
333
+ case 22:
331
334
  console.error('SSE Error:', data.error);
332
335
  flushPending();
333
336
  sessionStreamingText.clear(sessionId);
@@ -342,43 +345,43 @@ var parseSessionSSE = /*#__PURE__*/function () {
342
345
  });
343
346
  store().setStatus(sessionId, 'error');
344
347
  (_callbacks$onError = callbacks.onError) === null || _callbacks$onError === void 0 || _callbacks$onError.call(callbacks, (_data$error3 = data.error) === null || _data$error3 === void 0 ? void 0 : _data$error3.type, (_data$error4 = data.error) === null || _data$error4 === void 0 ? void 0 : _data$error4.message);
345
- return _context.abrupt("continue", 23);
346
- case 22:
347
- console.warn('Unknown SSE event type:', eventType);
348
- return _context.abrupt("continue", 23);
348
+ return _context.abrupt("continue", 24);
349
349
  case 23:
350
- _context.next = 25;
351
- break;
350
+ console.warn('Unknown SSE event type:', eventType);
351
+ return _context.abrupt("continue", 24);
352
352
  case 24:
353
- _context.prev = 24;
353
+ _context.next = 26;
354
+ break;
355
+ case 25:
356
+ _context.prev = 25;
354
357
  _t2 = _context["catch"](12);
355
358
  console.error('Error parsing SSE data:', _t2, dataStr);
356
- case 25:
357
- _context.next = 9;
358
- break;
359
359
  case 26:
360
- _context.next = 28;
360
+ _context.next = 9;
361
361
  break;
362
362
  case 27:
363
- _context.prev = 27;
364
- _t3 = _context["catch"](8);
365
- _iterator.e(_t3);
363
+ _context.next = 29;
364
+ break;
366
365
  case 28:
367
366
  _context.prev = 28;
368
- _iterator.f();
369
- return _context.finish(28);
367
+ _t3 = _context["catch"](8);
368
+ _iterator.e(_t3);
370
369
  case 29:
370
+ _context.prev = 29;
371
+ _iterator.f();
372
+ return _context.finish(29);
373
+ case 30:
371
374
  _context.next = 3;
372
375
  break;
373
- case 30:
374
- _context.prev = 30;
375
- flushPending();
376
- return _context.finish(30);
377
376
  case 31:
377
+ _context.prev = 31;
378
+ flushPending();
379
+ return _context.finish(31);
380
+ case 32:
378
381
  case "end":
379
382
  return _context.stop();
380
383
  }
381
- }, _callee, null, [[2,, 30, 31], [8, 27, 28, 29], [12, 24]]);
384
+ }, _callee, null, [[2,, 31, 32], [8, 28, 29, 30], [12, 25]]);
382
385
  }));
383
386
  return function parseSessionSSE(_x, _x2, _x3) {
384
387
  return _ref.apply(this, arguments);
@@ -768,4 +771,4 @@ export var sessionStreamManager = {
768
771
  });
769
772
  }
770
773
  };
771
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYWlhIiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlVG9vbEFjdGlvbkxhYmVsIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInJlYXNvbmluZ1N0b3JlIiwic2Vzc2lvblN0cmVhbWluZ1RleHQiLCJ1c2VTZXNzaW9uc1N0b3JlIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInNlc3Npb25IaXRsQ29udGV4dCIsIk1BWF9DT05DVVJSRU5UX1NUUkVBTVMiLCJTVFJFQU1fVEhST1RUTEVfTVMiLCJhY3RpdmVTdHJlYW1zIiwiTWFwIiwic3RvcmUiLCJnZXRTdGF0ZSIsImlzU3RyZWFtQWN0aXZlIiwic2Vzc2lvbklkIiwiaGFzIiwiZ2V0QWN0aXZlU3RyZWFtQ291bnQiLCJzaXplIiwicGFyc2VTZXNzaW9uU1NFIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJhY3RpdmUiLCJwYXJhbXMiLCJfcGFyYW1zJGhpdGxFeGVjdXRpb24iLCJfcmVzcG9uc2UkYm9keSIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwiX2NhbGxiYWNrcyRvbkVycm9yIiwiX2RhdGEkZXJyb3IzIiwiX2RhdGEkZXJyb3I0IiwicGxhY2Vob2xkZXJJZCIsImNhbGxiYWNrcyIsInQiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsInBlbmRpbmdDb250ZW50IiwidGhyb3R0bGVUaW1lciIsImZsdXNoVG9TdG9yZXMiLCJlbWl0VGhyb3R0bGVkIiwiZmx1c2hQZW5kaW5nIiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiY2xlYXJTdHJlYW1MaWtlQW5zd2VyUmVzZXQiLCJhcHBseVN0cmVhbUNvbXBsZXRlIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsImRhdGEiLCJ0aGlua2luZ0RlbHRhIiwic3RlcFRvb2wiLCJzdGVwVHlwZSIsImxhYmVsIiwiY2h1bmsiLCJfY2h1bmsiLCJfY2FsbGJhY2tzJG9uQXBwcm92YWwiLCJpc1ByZUFwcHJvdmVkIiwiX3JlZjMiLCJfdCIsIl90MiIsIl90MyIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiZ2V0IiwiY29udGVudCIsIl9jYWxsYmFja3Mkb25TdHJlYW1VcCIsInNldFRleHQiLCJvblN0cmVhbVVwZGF0ZSIsImNhbGwiLCJ3aW5kb3ciLCJzZXRUaW1lb3V0IiwidG9FbWl0IiwiY2xlYXJUaW1lb3V0IiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfY2FsbGJhY2tzJG9uU3RhcnRXcmkiLCJwYXRjaE1ldGEiLCJpc0xvYWRpbmciLCJpc1dyaXRpbmciLCJzZXRTdGF0dXMiLCJzZXRBY3Rpdml0eSIsIm9uU3RhcnRXcml0aW5nIiwic3luY0xpdmVOYXJyYXRpb24iLCJtYXJrQW5zd2VyUmVzZXQiLCJwYXlsb2FkIiwiX3BheWxvYWQkYWdlbnRfaWQiLCJfc3ViYWdlbnRSYXckcmVzb2x2ZWQiLCJfcmVmMiIsIl9jYWxsYmFja3Mkb25GaW5pc2hTdCIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsImF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImFnZW50X2lkIiwiYWdlbnRJZCIsImNvbXBsZXRlZEFnZW50SWQiLCJTdHJpbmciLCJ0cmltIiwic3ViYWdlbnRSYXciLCJzdWJhZ2VudCIsInJlc29sdmVkQ29udGV4dCIsInJlc29sdmVkX2NvbnRleHQiLCJyZWFzb25pbmciLCJmaW5pc2giLCJmaW5pc2hQYXlsb2FkIiwib25GaW5pc2hTdHJlYW0iLCJpc1N0b3BwZWQiLCJjYW5jZWwiLCJhYnJ1cHQiLCJyZWFkIiwic2VudCIsImRlY29kZSIsInN0cmVhbSIsInNwbGl0IiwicG9wIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJzIiwibiIsIl9zbGljZWRUb0FycmF5IiwicmVwbGFjZSIsIkpTT04iLCJwYXJzZSIsImRlbHRhIiwiaSIsImFwcGVuZFRoaW5raW5nIiwicGhhc2UiLCJtZXNzYWdlIiwidG9vbCIsInR5cGUiLCJzdGF0dXMiLCJjYXB0dXJlTGVhZGluZ0Zyb21Cb2R5IiwiYXBwbHlTdGVwIiwic2hvdWxkQ2xlYXJTdHJlYW1Gb3JMZWFkaW5nIiwibm9kZSIsInVuZGVmaW5lZCIsInRocmVhZF9pZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsImF1dG9fYXBwcm92ZWQiLCJhcHByb3ZhbF9zdGF0dXMiLCJjbGVhciIsIm9uQXBwcm92YWxSZXF1aXJlZCIsInBlbmRpbmdfYWN0aW9ucyIsImxlbmd0aCIsImNvbnNvbGUiLCJlcnJvciIsInNldEVycm9yIiwib25FcnJvciIsIndhcm4iLCJlIiwiZiIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsImFwcGx5IiwiYXJndW1lbnRzIiwic2Vzc2lvblN0cmVhbU1hbmFnZXIiLCJpc0FjdGl2ZSIsImdldEFjdGl2ZUNvdW50IiwiZ2V0QWN0aXZlU2Vzc2lvbklkcyIsImZyb20iLCJrZXlzIiwic3RhcnRTdHJlYW0iLCJfY2FsbGVlMiIsInJlcXVlc3QiLCJhY3Rpdml0eU9wdGlvbnMiLCJhZ2VudE5hbWUiLCJjb250cm9sbGVyIiwiX2NhbGxiYWNrcyRvbkVycm9yMiIsIl90NCIsIl9jb250ZXh0MiIsInN0YXJ0ZWQiLCJyZWFzb24iLCJBYm9ydENvbnRyb2xsZXIiLCJzZXQiLCJlbnN1cmVTZXNzaW9uIiwiX29iamVjdFNwcmVhZCIsInN0YXJ0IiwiT3JjaGVzdHJhdG9yIiwib3JjaGVzdHJhdG9yIiwic2lnbmFsIiwic3RhcnRDb250aW51ZVN0cmVhbSIsIl9jYWxsZWUzIiwiX3JlZjQiLCJjb250aW51ZVJlcXVlc3QiLCJzc2VQYXJhbXMiLCJfY2FsbGJhY2tzJG9uRXJyb3IzIiwiX3Q1IiwiX2NvbnRleHQzIiwiY29udGludWVUaHJlYWQiLCJvayIsImNvbmNhdCIsInN0YXJ0UmV0cnlTdHJlYW0iLCJfY2FsbGVlNCIsInJldHJ5UmVxdWVzdCIsImRldGFpbCIsIl9jYWxsYmFja3Mkb25FcnJvcjQiLCJfdDYiLCJfdDciLCJfY29udGV4dDQiLCJyZXRyeUNvbXBsZXRpb24iLCJqc29uIiwic3RvcFN0cmVhbSIsIl9jYWxsYmFja3Mkb25TdG9wIiwiYWJvcnQiLCJwYXJ0aWFsVGV4dCIsImdldFNuYXBzaG90IiwidGV4dCIsIm9uU3RvcCIsImFib3J0U2lsZW50bHkiLCJfc3RvcmUkZ2V0TWV0YSIsImdldE1ldGEiLCJhYm9ydEFsbCIsIl90aGlzIiwiZm9yRWFjaCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uU3RyZWFtTWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnN0YW50LWNvbmRpdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB0eXBlIHsgQXBwcm92YWxSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7XG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVUb29sQWN0aW9uTGFiZWwsXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgdHlwZSB7IEhpdGxFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCwgbWVyZ2VTdHJlYW1DaHVuayB9IGZyb20gJy4uLy4uL3V0aWxzL3NzZVN0cmVhbUNvbnRlbnQnXG5pbXBvcnQgeyByZWFzb25pbmdTdG9yZSB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVJlYXNvbmluZ1RyYWNlJ1xuaW1wb3J0IHR5cGUgeyBSZWFzb25pbmdTdGVwUGF5bG9hZCwgUmVhc29uaW5nVHJhY2VQYXlsb2FkIH0gZnJvbSAnLi4vLi4vdHlwZXMvcmVhc29uaW5nJ1xuaW1wb3J0IHsgc2Vzc2lvblN0cmVhbWluZ1RleHQgfSBmcm9tICcuL3Nlc3Npb25TdHJlYW1pbmdUZXh0J1xuaW1wb3J0IHsgdXNlU2Vzc2lvbnNTdG9yZSB9IGZyb20gJy4vdXNlU2Vzc2lvbnNTdG9yZSdcbmltcG9ydCB7IGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQgfSBmcm9tICcuL3Nlc3Npb25Ob3RpZmljYXRpb25zJ1xuaW1wb3J0IHsgc2Vzc2lvbkhpdGxDb250ZXh0IH0gZnJvbSAnLi9zZXNzaW9uSGl0bENvbnRleHQnXG5pbXBvcnQgdHlwZSB7IFNlc3Npb25GaW5pc2hQYXlsb2FkLCBTZXNzaW9uU3RyZWFtQ2FsbGJhY2tzLCBTdGFydFN0cmVhbVJlc3VsdCB9IGZyb20gJy4vc2Vzc2lvbnMudHlwZXMnXG5cbnR5cGUgT3JjaGVzdHJhdG9yUmVxdWVzdCA9IFBhcmFtZXRlcnM8dHlwZW9mIG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcj5bMF1cbnR5cGUgQ29udGludWVUaHJlYWRSZXF1ZXN0ID0gUGFyYW1ldGVyczx0eXBlb2YgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQ+WzBdXG50eXBlIFJldHJ5Q29tcGxldGlvblJlcXVlc3QgPSBQYXJhbWV0ZXJzPHR5cGVvZiBtYWlhLk9yY2hlc3RyYXRvci5yZXRyeUNvbXBsZXRpb24+WzBdXG5cbi8qKiBDb21wYXRpYmxlIGNvbiBlbCBgdGAgZGUgaTE4bmV4dCAodXNvIGRlIHVuYSBzb2xhIGtleSkuICovXG50eXBlIFRyYW5zbGF0ZUZuID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcblxudHlwZSBTdGFydFN0cmVhbVBhcmFtcyA9IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgcGxhY2Vob2xkZXJJZDogc3RyaW5nXG4gIHJlcXVlc3Q6IE9yY2hlc3RyYXRvclJlcXVlc3RcbiAgY2FsbGJhY2tzOiBTZXNzaW9uU3RyZWFtQ2FsbGJhY2tzXG4gIHQ6IFRyYW5zbGF0ZUZuXG4gIGFjdGl2aXR5T3B0aW9ucz86IHtcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaGFzQXR0YWNobWVudHM/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHNDb3VudD86IG51bWJlclxuICB9XG4gIGhpdGxFeGVjdXRpb25Db250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsXG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgYWdlbnROYW1lPzogc3RyaW5nXG59XG5cbnR5cGUgU3RhcnRDb250aW51ZVN0cmVhbVBhcmFtcyA9IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgcGxhY2Vob2xkZXJJZDogc3RyaW5nXG4gIGNvbnRpbnVlUmVxdWVzdDogQ29udGludWVUaHJlYWRSZXF1ZXN0XG4gIGNhbGxiYWNrczogU2Vzc2lvblN0cmVhbUNhbGxiYWNrc1xuICB0OiBUcmFuc2xhdGVGblxuICBoaXRsRXhlY3V0aW9uQ29udGV4dD86IEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbFxuICBhZ2VudElkPzogc3RyaW5nIHwgbnVtYmVyXG4gIGFnZW50TmFtZT86IHN0cmluZ1xufVxuXG50eXBlIFN0YXJ0UmV0cnlTdHJlYW1QYXJhbXMgPSB7XG4gIHNlc3Npb25JZDogc3RyaW5nXG4gIHBsYWNlaG9sZGVySWQ6IHN0cmluZ1xuICByZXRyeVJlcXVlc3Q6IFJldHJ5Q29tcGxldGlvblJlcXVlc3RcbiAgY2FsbGJhY2tzOiBTZXNzaW9uU3RyZWFtQ2FsbGJhY2tzXG4gIHQ6IFRyYW5zbGF0ZUZuXG4gIGFjdGl2aXR5T3B0aW9ucz86IHtcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaGFzQXR0YWNobWVudHM/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHNDb3VudD86IG51bWJlclxuICB9XG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgYWdlbnROYW1lPzogc3RyaW5nXG59XG5cbnR5cGUgQWN0aXZlU3RyZWFtID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBjb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXJcbiAgaXNTdG9wcGVkOiBib29sZWFuXG59XG5cbi8qKlxuICogTcOheGltbyBkZSBzZXNpb25lcyBnZW5lcmFuZG8gZW4gcGFyYWxlbG8uIFByb3RlZ2UgcmVkL3JlY3Vyc29zIGRlbCBjbGllbnRlLlxuICogQWp1c3RhYmxlIGEgZnV0dXJvIHbDrWEgZmxhZyBkZWwgaG9zdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9DT05DVVJSRU5UX1NUUkVBTVMgPSA0XG5cbmNvbnN0IFNUUkVBTV9USFJPVFRMRV9NUyA9IDE2XG5cbmNvbnN0IGFjdGl2ZVN0cmVhbXMgPSBuZXcgTWFwPHN0cmluZywgQWN0aXZlU3RyZWFtPigpXG5cbmNvbnN0IHN0b3JlID0gKCkgPT4gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpXG5cbmNvbnN0IGlzU3RyZWFtQWN0aXZlID0gKHNlc3Npb25JZDogc3RyaW5nKTogYm9vbGVhbiA9PiBhY3RpdmVTdHJlYW1zLmhhcyhzZXNzaW9uSWQpXG5cbmNvbnN0IGdldEFjdGl2ZVN0cmVhbUNvdW50ID0gKCk6IG51bWJlciA9PiBhY3RpdmVTdHJlYW1zLnNpemVcblxuY29uc3QgcGFyc2VTZXNzaW9uU1NFID0gYXN5bmMgKHJlc3BvbnNlOiBSZXNwb25zZSwgYWN0aXZlOiBBY3RpdmVTdHJlYW0sIHBhcmFtczogU3RhcnRTdHJlYW1QYXJhbXMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIGNhbGxiYWNrcywgdCB9ID0gcGFyYW1zXG4gIGNvbnN0IGhpdGxFeGVjdXRpb25Db250ZXh0ID0gcGFyYW1zLmhpdGxFeGVjdXRpb25Db250ZXh0ID8/IHNlc3Npb25IaXRsQ29udGV4dC5nZXQoc2Vzc2lvbklkKVxuXG4gIGxldCBwZW5kaW5nQ29udGVudDogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgbGV0IHRocm90dGxlVGltZXI6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgY29uc3QgZmx1c2hUb1N0b3JlcyA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zZXRUZXh0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY29udGVudClcbiAgICBjYWxsYmFja3Mub25TdHJlYW1VcGRhdGU/Lihjb250ZW50KVxuICB9XG5cbiAgY29uc3QgZW1pdFRocm90dGxlZCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICBwZW5kaW5nQ29udGVudCA9IGNvbnRlbnRcbiAgICBpZiAodGhyb3R0bGVUaW1lciAhPSBudWxsKSByZXR1cm5cbiAgICB0aHJvdHRsZVRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhyb3R0bGVUaW1lciA9IG51bGxcbiAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgICBmbHVzaFRvU3RvcmVzKHRvRW1pdClcbiAgICAgIH1cbiAgICB9LCBTVFJFQU1fVEhST1RUTEVfTVMpXG4gIH1cblxuICBjb25zdCBmbHVzaFBlbmRpbmcgPSAoKSA9PiB7XG4gICAgaWYgKHRocm90dGxlVGltZXIgIT0gbnVsbCkge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aHJvdHRsZVRpbWVyKVxuICAgICAgdGhyb3R0bGVUaW1lciA9IG51bGxcbiAgICB9XG4gICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgIGZsdXNoVG9TdG9yZXModG9FbWl0KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gIGlmICghcmVhZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgfVxuXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICBsZXQgYnVmZmVyID0gJydcbiAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gIGxldCBoYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlXG5cbiAgY29uc3QgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQgPSAoKSA9PiB7XG4gICAgaWYgKGhhc1N0YXJ0ZWRXcml0aW5nKSByZXR1cm5cbiAgICBoYXNTdGFydGVkV3JpdGluZyA9IHRydWVcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlLCBpc1dyaXRpbmc6IHRydWUgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd3cml0aW5nJylcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKVxuICAgIGNhbGxiYWNrcy5vblN0YXJ0V3JpdGluZz8uKClcbiAgfVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQ2h1bmsgPSAoY2h1bms6IHN0cmluZykgPT4ge1xuICAgIGlmICghY2h1bmspIHJldHVyblxuICAgIGFjY3VtdWxhdGVkQ29udGVudCA9IG1lcmdlU3RyZWFtQ2h1bmsoYWNjdW11bGF0ZWRDb250ZW50LCBjaHVuaylcbiAgICByZWFzb25pbmdTdG9yZS5zeW5jTGl2ZU5hcnJhdGlvbihwbGFjZWhvbGRlcklkLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgZW1pdFRocm90dGxlZChhY2N1bXVsYXRlZENvbnRlbnQpXG4gIH1cblxuICBjb25zdCBjbGVhclN0cmVhbUxpa2VBbnN3ZXJSZXNldCA9ICgpID0+IHtcbiAgICBpZiAodGhyb3R0bGVUaW1lciAhPSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRocm90dGxlVGltZXIpXG4gICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgIH1cbiAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICAgIGZsdXNoVG9TdG9yZXMoJycpXG4gICAgcmVhc29uaW5nU3RvcmUubWFya0Fuc3dlclJlc2V0KHBsYWNlaG9sZGVySWQpXG4gIH1cblxuICBjb25zdCBhcHBseVN0cmVhbUNvbXBsZXRlID0gKHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgY29uc3QgZmluYWxDb250ZW50ID0gKHBheWxvYWQuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgIGNvbnN0IHNvdXJjZXMgPSBwYXlsb2FkLnNvdXJjZXMgfHwgbnVsbFxuICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChwYXlsb2FkLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkocGF5bG9hZC5hdHRhY2htZW50cykgPyBwYXlsb2FkLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgIGxldCBzdWdnZXN0aW9uczogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICAgIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdF9yZXBseSkpIHtcbiAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW11cbiAgICB9XG4gICAgY29uc3QgYWdlbnRJZFJhdyA9IHBheWxvYWQuYWdlbnRfaWQgPz8gcGF5bG9hZC5hZ2VudElkXG4gICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9IGFnZW50SWRSYXcgIT0gbnVsbCAmJiBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpICE9PSAnJyA/IFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgOiBudWxsXG4gICAgY29uc3Qgc3ViYWdlbnRSYXcgPSBwYXlsb2FkLnN1YmFnZW50IGFzIHsgcmVzb2x2ZWRfY29udGV4dD86IHVua25vd24gfSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICBjb25zdCByZXNvbHZlZENvbnRleHQgPSBzdWJhZ2VudFJhdz8ucmVzb2x2ZWRfY29udGV4dCA/PyBudWxsXG4gICAgY29uc3QgcmVhc29uaW5nID0gKHBheWxvYWQucmVhc29uaW5nIGFzIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB8IG51bGwpID8/IG51bGxcblxuICAgIHJlYXNvbmluZ1N0b3JlLmZpbmlzaChwbGFjZWhvbGRlcklkLCByZWFzb25pbmcpXG4gICAgZmx1c2hQZW5kaW5nKClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2NvbXBsZXRlJylcblxuICAgIGNvbnN0IGZpbmlzaFBheWxvYWQ6IFNlc3Npb25GaW5pc2hQYXlsb2FkID0ge1xuICAgICAgY29udGVudDogZmluYWxDb250ZW50LFxuICAgICAgc291cmNlcyxcbiAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICBjb21wbGV0ZWRBZ2VudElkLFxuICAgICAgcmVzb2x2ZWRDb250ZXh0LFxuICAgICAgcmVhc29uaW5nLFxuICAgIH1cbiAgICBjYWxsYmFja3Mub25GaW5pc2hTdHJlYW0/LihmaW5pc2hQYXlsb2FkKVxuXG4gICAgLy8gRWwgdGV4dG8gZW4gdml2byBOTyBzZSBsaW1waWEgYWPDoSBhIHByb3DDs3NpdG8uIEVsIHBsYWNlaG9sZGVyIHNlIHZhIGNvbiBlbFxuICAgIC8vIGBkcm9wYCBxdWUgaGFjZSBlbCBjb25zdW1pZG9yLCB5IGNvbiDDqWwgc3Ugc3VzY3JpcGNpw7NuOyB2YWNpYXJsbyBhbnRlcyBsb1xuICAgIC8vIGRlamFiYSBtb250YWRvIHkgc2luIHRleHRvIChhbHR1cmEgMCkgZHVyYW50ZSB+MjVtczogZWwgZmxpY2tlciBkZSBmaW4gZGVcbiAgICAvLyBzdHJlYW0uIE5vIGFsY2FuemEgY29uIGRpZmVyaXJsbywgcG9ycXVlIGVzdGUgY2xlYXIgdmlhamEgZW4gU3luY0xhbmVcbiAgICAvLyAoc3RvcmUgZXh0ZXJubykgeSBlbCBzd2FwIGRlIG1lbnNhamVzIGVuIERlZmF1bHRMYW5lLCBhc8OtIHF1ZSBzaWVtcHJlIHNlXG4gICAgLy8gY3VlbGEgZW4gZWwgbWVkaW8uIEVsIHNsb3Qgc2UgbGliZXJhIGVuIGVsIHByw7N4aW1vIGBzdGFydCgpYCBkZSBsYSBzZXNpw7NuLFxuICAgIC8vIHkgZW4gc3RvcC9lcnJvci9hcHByb3ZhbC9jYW1iaW8gZGUgc2VzacOzbiwgcXVlIHPDrSBsbGFtYW4gYGNsZWFyYC5cbiAgfVxuXG4gIHRyeSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmIChhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICBpZiAoZG9uZSkgYnJlYWtcblxuICAgICAgaWYgKGFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgIGlmIChsaW5lLnRyaW0oKSA9PT0gJycpIGNvbnRpbnVlXG5cbiAgICAgICAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgICAgICAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSBjb250aW51ZVxuXG4gICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICAgICAgICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcblxuICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICd0aGlua2luZyc6IHtcbiAgICAgICAgICAgICAgY29uc3QgdGhpbmtpbmdEZWx0YSA9IHR5cGVvZiBkYXRhLmRlbHRhID09PSAnc3RyaW5nJyA/IGRhdGEuZGVsdGEgOiAnJ1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuaSA9PT0gJ251bWJlcicgJiYgdGhpbmtpbmdEZWx0YSkge1xuICAgICAgICAgICAgICAgIHJlYXNvbmluZ1N0b3JlLmFwcGVuZFRoaW5raW5nKHBsYWNlaG9sZGVySWQsIGRhdGEuaSwgdGhpbmtpbmdEZWx0YSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgeyBwaGFzZTogJ3RoaW5raW5nJywgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEVsIGJhY2tlbmQgZGVzY2FydGEgbG8gZW1pdGlkbyB5IHJlaW5pY2lhIGxhIHJlc3B1ZXN0YSBkZXNkZSBjZXJvLlxuICAgICAgICAgICAgY2FzZSAnYW5zd2VyX3Jlc2V0JzpcbiAgICAgICAgICAgICAgY2xlYXJTdHJlYW1MaWtlQW5zd2VyUmVzZXQoKVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICBjYXNlICdyZWFzb25pbmdfc3RlcCc6IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RlcFRvb2wgPSB0eXBlb2YgZGF0YS50b29sID09PSAnc3RyaW5nJyA/IGRhdGEudG9vbCA6ICcnXG4gICAgICAgICAgICAgIGNvbnN0IHN0ZXBUeXBlID0gdHlwZW9mIGRhdGEudHlwZSA9PT0gJ3N0cmluZycgPyBkYXRhLnR5cGUgOiAnJ1xuICAgICAgICAgICAgICBpZiAoc3RlcFRvb2wgJiYgc3RlcFR5cGUgIT09ICdoYW5kb2ZmJyAmJiBkYXRhLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSByZXNvbHZlVG9vbEFjdGlvbkxhYmVsKHN0ZXBUb29sLCB0LCAncHJlc2VudCcpXG4gICAgICAgICAgICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgeyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IGxhYmVsIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5pID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHJlYXNvbmluZ1N0b3JlLmNhcHR1cmVMZWFkaW5nRnJvbUJvZHkocGxhY2Vob2xkZXJJZCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICAgIHJlYXNvbmluZ1N0b3JlLmFwcGx5U3RlcChwbGFjZWhvbGRlcklkLCBkYXRhIGFzIFJlYXNvbmluZ1N0ZXBQYXlsb2FkKVxuICAgICAgICAgICAgICAgIGlmIChyZWFzb25pbmdTdG9yZS5zaG91bGRDbGVhclN0cmVhbUZvckxlYWRpbmcocGxhY2Vob2xkZXJJZCwgYWNjdW11bGF0ZWRDb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgY2xlYXJTdHJlYW1MaWtlQW5zd2VyUmVzZXQoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICd0b2tlbic6IHtcbiAgICAgICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGRhdGEuY29udGVudCA6ICcnXG4gICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnY29udGVudCc6IHtcbiAgICAgICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGRhdGEuY29udGVudCA6ICcnXG4gICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgaWYgKGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZChkYXRhKSkge1xuICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICAgICAgaWYgKGRhdGEubm9kZSA9PT0gJ2FnZW50X3RyYW5zZmVyJykge1xuICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5tZXNzYWdlICYmIHR5cGVvZiBkYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgdCxcbiAgICAgICAgICAgICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZGF0YS50aHJlYWRfaWQgPT09ICdzdHJpbmcnID8gZGF0YS50aHJlYWRfaWQgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICAgICAgICBhcHBseVN0cmVhbUNvbXBsZXRlKGRhdGEpXG4gICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIGNhc2UgJ2FwcHJvdmFsX3JlcXVpcmVkJzoge1xuICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAvLyBQcmVhcHJvYmFkbyAoYXV0by1hcHByb3ZlIG8gZGV0ZWNjacOzbiBtYW51YWwpOiBlbCBzdHJlYW0gbm8gc2UgY29ydGEsXG4gICAgICAgICAgICAgIC8vIHNpZ3VlIGVqZWN1dGFuZG8gbGFzIGFjY2lvbmVzIHNpbiBlc3BlcmFyIGRlY2lzacOzbiBkZWwgdXN1YXJpby5cbiAgICAgICAgICAgICAgY29uc3QgaXNQcmVBcHByb3ZlZCA9XG4gICAgICAgICAgICAgICAgZGF0YS5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWUgfHxcbiAgICAgICAgICAgICAgICBkYXRhLmF1dG9fYXBwcm92ZWQgPT09IHRydWUgfHxcbiAgICAgICAgICAgICAgICBkYXRhLmFwcHJvdmFsX3N0YXR1cyA9PT0gJ2FwcHJvdmVkJ1xuICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICAgICAgICBpZiAoIWlzUHJlQXBwcm92ZWQpIHtcbiAgICAgICAgICAgICAgICByZWFzb25pbmdTdG9yZS5maW5pc2gocGxhY2Vob2xkZXJJZCwgKGRhdGEucmVhc29uaW5nIGFzIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB8IG51bGwpID8/IG51bGwpXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UgfSlcbiAgICAgICAgICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnYXdhaXRpbmdfYXBwcm92YWwnKVxuICAgICAgICAgICAgICBjYWxsYmFja3Mub25BcHByb3ZhbFJlcXVpcmVkPy4oZGF0YSBhcyBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgaWYgKGlzUHJlQXBwcm92ZWQgJiYgQXJyYXkuaXNBcnJheShkYXRhLnBlbmRpbmdfYWN0aW9ucykgJiYgZGF0YS5wZW5kaW5nX2FjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxFeGVjdXRpb25Db250ZXh0ID8/IHVuZGVmaW5lZCkpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTU0UgRXJyb3I6JywgZGF0YS5lcnJvcilcbiAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgICAgICAgc3RvcmUoKS5zZXRFcnJvcihzZXNzaW9uSWQsIHsgdHlwZTogZGF0YS5lcnJvcj8udHlwZSwgbWVzc2FnZTogZGF0YS5lcnJvcj8ubWVzc2FnZSB9KVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICAgICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oZGF0YS5lcnJvcj8udHlwZSwgZGF0YS5lcnJvcj8ubWVzc2FnZSlcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIFNTRSBldmVudCB0eXBlOicsIGV2ZW50VHlwZSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgZmx1c2hQZW5kaW5nKClcbiAgfVxufVxuXG4vKipcbiAqIE1hbmFnZXIgc2luZ2xldG9uIChtb2R1bGUtbGV2ZWwpIHF1ZSBjb3JyZSBOIHN0cmVhbXMgZGVsIG9yY2hlc3RyYXRvciBlblxuICogcGFyYWxlbG8sIHVubyBwb3IgYHNlc3Npb25JZGAuIFNvYnJldml2ZSBhIGNhbWJpb3MgZGUgdmlzdGEgeSBhbCBjaWVycmUgZGVsXG4gKiBtb2RhbDogbG9zIHN0cmVhbXMgc29sbyBzZSBjYW5jZWxhbiBjb24gc3RvcCBleHBsw61jaXRvIGRlbCB1c3VhcmlvIG8gYWxcbiAqIGNvbXBsZXRhci9lcnJvcmFyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vzc2lvblN0cmVhbU1hbmFnZXIgPSB7XG4gIGlzQWN0aXZlOiBpc1N0cmVhbUFjdGl2ZSxcbiAgZ2V0QWN0aXZlQ291bnQ6IGdldEFjdGl2ZVN0cmVhbUNvdW50LFxuICBnZXRBY3RpdmVTZXNzaW9uSWRzOiAoKTogc3RyaW5nW10gPT4gQXJyYXkuZnJvbShhY3RpdmVTdHJlYW1zLmtleXMoKSksXG5cbiAgYXN5bmMgc3RhcnRTdHJlYW0ocGFyYW1zOiBTdGFydFN0cmVhbVBhcmFtcyk6IFByb21pc2U8U3RhcnRTdHJlYW1SZXN1bHQ+IHtcbiAgICBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkKClcblxuICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCByZXF1ZXN0LCBjYWxsYmFja3MsIHQsIGFjdGl2aXR5T3B0aW9ucywgYWdlbnRJZCwgYWdlbnROYW1lIH0gPSBwYXJhbXNcblxuICAgIGlmIChpc1N0cmVhbUFjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnYWxyZWFkeV9hY3RpdmUnIH1cbiAgICB9XG4gICAgaWYgKGdldEFjdGl2ZVN0cmVhbUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2xpbWl0JyB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIGNvbnN0IGFjdGl2ZTogQWN0aXZlU3RyZWFtID0geyBzZXNzaW9uSWQsIGNvbnRyb2xsZXIsIGlzU3RvcHBlZDogZmFsc2UgfVxuICAgIGFjdGl2ZVN0cmVhbXMuc2V0KHNlc3Npb25JZCwgYWN0aXZlKVxuXG4gICAgc3RvcmUoKS5lbnN1cmVTZXNzaW9uKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHtcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICAuLi4oYWdlbnRJZCAhPSBudWxsID8geyBhZ2VudElkIH0gOiB7fSksXG4gICAgICAuLi4oYWdlbnROYW1lICE9IG51bGwgPyB7IGFnZW50TmFtZSB9IDoge30pLFxuICAgIH0pXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcbiAgICByZWFzb25pbmdTdG9yZS5zdGFydChwbGFjZWhvbGRlcklkKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkodCwgYWN0aXZpdHlPcHRpb25zID8/IHt9KSlcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcihyZXF1ZXN0LCBjb250cm9sbGVyLnNpZ25hbClcbiAgICAgIGF3YWl0IHBhcnNlU2Vzc2lvblNTRShyZXNwb25zZSwgYWN0aXZlLCBwYXJhbXMpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oKVxuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3RhcnRlZDogdHJ1ZSB9XG4gIH0sXG5cbiAgLyoqIFJlc3VtZSBISVRMIChgY29udGludWUtdGhyZWFkYCkga2V5ZWQgcG9yIHNlc3Npb25JZCDigJQgbWlzbW8gbW90b3IgcXVlIG9yY2hlc3RyYXRvci4gKi9cbiAgYXN5bmMgc3RhcnRDb250aW51ZVN0cmVhbShwYXJhbXM6IFN0YXJ0Q29udGludWVTdHJlYW1QYXJhbXMpOiBQcm9taXNlPFN0YXJ0U3RyZWFtUmVzdWx0PiB7XG4gICAgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCgpXG5cbiAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY29udGludWVSZXF1ZXN0LCBjYWxsYmFja3MsIHQsIGhpdGxFeGVjdXRpb25Db250ZXh0LCBhZ2VudElkLCBhZ2VudE5hbWUgfSA9IHBhcmFtc1xuXG4gICAgaWYgKGlzU3RyZWFtQWN0aXZlKHNlc3Npb25JZCkpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdhbHJlYWR5X2FjdGl2ZScgfVxuICAgIH1cbiAgICBpZiAoZ2V0QWN0aXZlU3RyZWFtQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnbGltaXQnIH1cbiAgICB9XG5cbiAgICBpZiAoaGl0bEV4ZWN1dGlvbkNvbnRleHQpIHtcbiAgICAgIHNlc3Npb25IaXRsQ29udGV4dC5zZXQoc2Vzc2lvbklkLCBoaXRsRXhlY3V0aW9uQ29udGV4dClcbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgYWN0aXZlOiBBY3RpdmVTdHJlYW0gPSB7IHNlc3Npb25JZCwgY29udHJvbGxlciwgaXNTdG9wcGVkOiBmYWxzZSB9XG4gICAgYWN0aXZlU3RyZWFtcy5zZXQoc2Vzc2lvbklkLCBhY3RpdmUpXG5cbiAgICBzdG9yZSgpLmVuc3VyZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwge1xuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIC4uLihhZ2VudElkICE9IG51bGwgPyB7IGFnZW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihhZ2VudE5hbWUgIT0gbnVsbCA/IHsgYWdlbnROYW1lIH0gOiB7fSksXG4gICAgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoXG4gICAgICBzZXNzaW9uSWQsXG4gICAgICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSh0LCBoaXRsRXhlY3V0aW9uQ29udGV4dCA/PyBzZXNzaW9uSGl0bENvbnRleHQuZ2V0KHNlc3Npb25JZCkgPz8gdW5kZWZpbmVkKVxuICAgIClcblxuICAgIGNvbnN0IHNzZVBhcmFtczogU3RhcnRTdHJlYW1QYXJhbXMgPSB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgcmVxdWVzdDoge30gYXMgT3JjaGVzdHJhdG9yUmVxdWVzdCxcbiAgICAgIGNhbGxiYWNrcyxcbiAgICAgIHQsXG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dDogaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gc2Vzc2lvbkhpdGxDb250ZXh0LmdldChzZXNzaW9uSWQpLFxuICAgICAgYWdlbnRJZCxcbiAgICAgIGFnZW50TmFtZSxcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5jb250aW51ZVRocmVhZChjb250aW51ZVJlcXVlc3QsIGNvbnRyb2xsZXIuc2lnbmFsKVxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbnRpbnVlLXRocmVhZCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gICAgICB9XG4gICAgICBhd2FpdCBwYXJzZVNlc3Npb25TU0UocmVzcG9uc2UsIGFjdGl2ZSwgc3NlUGFyYW1zKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnZXJyb3InKVxuICAgICAgICBjYWxsYmFja3Mub25FcnJvcj8uKClcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgICAgc2Vzc2lvbkhpdGxDb250ZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydGVkOiB0cnVlIH1cbiAgfSxcblxuICAvKiogUmVnZW5lcmEgbGEgcmVzcHVlc3RhIGRlIHVuIHR1cm5vIChgcmV0cnlfY29tcGxldGlvbmApIOKAlCBtaXNtbyBtb3RvciBTU0UgcXVlIG9yY2hlc3RyYXRvci4gKi9cbiAgYXN5bmMgc3RhcnRSZXRyeVN0cmVhbShwYXJhbXM6IFN0YXJ0UmV0cnlTdHJlYW1QYXJhbXMpOiBQcm9taXNlPFN0YXJ0U3RyZWFtUmVzdWx0PiB7XG4gICAgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCgpXG5cbiAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgcmV0cnlSZXF1ZXN0LCBjYWxsYmFja3MsIHQsIGFjdGl2aXR5T3B0aW9ucywgYWdlbnRJZCwgYWdlbnROYW1lIH0gPSBwYXJhbXNcblxuICAgIGlmIChpc1N0cmVhbUFjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnYWxyZWFkeV9hY3RpdmUnIH1cbiAgICB9XG4gICAgaWYgKGdldEFjdGl2ZVN0cmVhbUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2xpbWl0JyB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIGNvbnN0IGFjdGl2ZTogQWN0aXZlU3RyZWFtID0geyBzZXNzaW9uSWQsIGNvbnRyb2xsZXIsIGlzU3RvcHBlZDogZmFsc2UgfVxuICAgIGFjdGl2ZVN0cmVhbXMuc2V0KHNlc3Npb25JZCwgYWN0aXZlKVxuXG4gICAgc3RvcmUoKS5lbnN1cmVTZXNzaW9uKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHtcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICAuLi4oYWdlbnRJZCAhPSBudWxsID8geyBhZ2VudElkIH0gOiB7fSksXG4gICAgICAuLi4oYWdlbnROYW1lICE9IG51bGwgPyB7IGFnZW50TmFtZSB9IDoge30pLFxuICAgIH0pXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHQsIGFjdGl2aXR5T3B0aW9ucyA/PyB7fSkpXG5cbiAgICBjb25zdCBzc2VQYXJhbXM6IFN0YXJ0U3RyZWFtUGFyYW1zID0ge1xuICAgICAgc2Vzc2lvbklkLFxuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIHJlcXVlc3Q6IHt9IGFzIE9yY2hlc3RyYXRvclJlcXVlc3QsXG4gICAgICBjYWxsYmFja3MsXG4gICAgICB0LFxuICAgICAgYWN0aXZpdHlPcHRpb25zLFxuICAgICAgYWdlbnRJZCxcbiAgICAgIGFnZW50TmFtZSxcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5yZXRyeUNvbXBsZXRpb24ocmV0cnlSZXF1ZXN0LCBjb250cm9sbGVyLnNpZ25hbClcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgbGV0IGRldGFpbDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyB7IGRldGFpbD86IHN0cmluZyB9XG4gICAgICAgICAgICBkZXRhaWwgPSB0eXBlb2YgZGF0YS5kZXRhaWwgPT09ICdzdHJpbmcnID8gZGF0YS5kZXRhaWwgOiB1bmRlZmluZWRcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGRldGFpbCA9IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGV0YWlsID09PSAnVHVybiBub3QgZm91bmQnKSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSwgcGxhY2Vob2xkZXJJZDogbnVsbCB9KVxuICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdpZGxlJylcbiAgICAgICAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICd0dXJuX25vdF9mb3VuZCcgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHJldHJ5X2NvbXBsZXRpb24gZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgICAgfVxuICAgICAgYXdhaXQgcGFyc2VTZXNzaW9uU1NFKHJlc3BvbnNlLCBhY3RpdmUsIHNzZVBhcmFtcylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcbiAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LigpXG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydGVkOiB0cnVlIH1cbiAgfSxcblxuICAvKiogQ2FuY2VsYWNpw7NuIGV4cGzDrWNpdGEgZGVsIHVzdWFyaW8gKG1lbnNhamUgXCJjYW5jZWxhZG9cIikuICovXG4gIHN0b3BTdHJlYW0oc2Vzc2lvbklkOiBzdHJpbmcsIGNhbGxiYWNrcz86IFNlc3Npb25TdHJlYW1DYWxsYmFja3MpIHtcbiAgICBjb25zdCBhY3RpdmUgPSBhY3RpdmVTdHJlYW1zLmdldChzZXNzaW9uSWQpXG4gICAgaWYgKCFhY3RpdmUpIHJldHVyblxuICAgIGFjdGl2ZS5pc1N0b3BwZWQgPSB0cnVlXG4gICAgYWN0aXZlLmNvbnRyb2xsZXIuYWJvcnQoKVxuICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICAvLyBFbCBwYXJjaWFsIHNlIHJlc2NhdGEgYW50ZXMgZGUgbGltcGlhcjogZWwgYmFja2VuZCBsbyBwZXJzaXN0ZSwgcGVybyBzaSBubyBsb1xuICAgIC8vIHBhc2Ftb3MgYWwgY2FsbGJhY2sgZGVzYXBhcmVjZSBkZSBwYW50YWxsYSBoYXN0YSBlbCBwcsOzeGltbyBmZXRjaCBkZSBsYSBzZXNpw7NuLlxuICAgIGNvbnN0IHBhcnRpYWxUZXh0ID0gc2Vzc2lvblN0cmVhbWluZ1RleHQuZ2V0U25hcHNob3Qoc2Vzc2lvbklkKS50ZXh0XG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnY2FuY2VsbGVkJylcbiAgICBjYWxsYmFja3M/Lm9uU3RvcD8uKHBhcnRpYWxUZXh0KVxuICB9LFxuXG4gIC8qKiBBYm9ydGEgc2luIG1hcmNhciBcImNhbmNlbGFkb1wiICh1c28gaW50ZXJubyAvIGxpbXBpZXphKS4gKi9cbiAgYWJvcnRTaWxlbnRseShzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZVN0cmVhbXMuZ2V0KHNlc3Npb25JZClcbiAgICBpZiAoIWFjdGl2ZSkgcmV0dXJuXG4gICAgYWN0aXZlLmlzU3RvcHBlZCA9IHRydWVcbiAgICBhY3RpdmUuY29udHJvbGxlci5hYm9ydCgpXG4gICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgIGlmIChzdG9yZSgpLmdldE1ldGEoc2Vzc2lvbklkKT8uc3RhdHVzICE9PSAnY29tcGxldGUnKSB7XG4gICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdpZGxlJylcbiAgICB9XG4gIH0sXG5cbiAgYWJvcnRBbGwoKSB7XG4gICAgQXJyYXkuZnJvbShhY3RpdmVTdHJlYW1zLmtleXMoKSkuZm9yRWFjaChzZXNzaW9uSWQgPT4gdGhpcy5hYm9ydFNpbGVudGx5KHNlc3Npb25JZCkpXG4gIH0sXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLElBQUksTUFBTSxxQkFBcUI7QUFFdEMsU0FDRUMsd0JBQXdCLEVBQ3hCQyx5QkFBeUIsRUFDekJDLHdCQUF3QixFQUN4QkMsNkJBQTZCLEVBQzdCQyxnQ0FBZ0MsRUFDaENDLHNCQUFzQixRQUNqQixvQ0FBb0M7QUFFM0MsU0FBU0Msd0JBQXdCLEVBQUVDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUN6RixTQUFTQyxjQUFjLFFBQVEsK0JBQStCO0FBRTlELFNBQVNDLG9CQUFvQixRQUFRLHdCQUF3QjtBQUM3RCxTQUFTQyxnQkFBZ0IsUUFBUSxvQkFBb0I7QUFDckQsU0FBU0MscUNBQXFDLFFBQVEsd0JBQXdCO0FBQzlFLFNBQVNDLGtCQUFrQixRQUFRLHNCQUFzQjs7QUFPekQ7O0FBcURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxzQkFBc0IsR0FBRyxDQUFDO0FBRXZDLElBQU1DLGtC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
774
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYWlhIiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlVG9vbEFjdGlvbkxhYmVsIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInJlYXNvbmluZ1N0b3JlIiwic2Vzc2lvblN0cmVhbWluZ1RleHQiLCJ1c2VTZXNzaW9uc1N0b3JlIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInNlc3Npb25IaXRsQ29udGV4dCIsIk1BWF9DT05DVVJSRU5UX1NUUkVBTVMiLCJTVFJFQU1fVEhST1RUTEVfTVMiLCJhY3RpdmVTdHJlYW1zIiwiTWFwIiwic3RvcmUiLCJnZXRTdGF0ZSIsImlzU3RyZWFtQWN0aXZlIiwic2Vzc2lvbklkIiwiaGFzIiwiZ2V0QWN0aXZlU3RyZWFtQ291bnQiLCJzaXplIiwicGFyc2VTZXNzaW9uU1NFIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJhY3RpdmUiLCJwYXJhbXMiLCJfcGFyYW1zJGhpdGxFeGVjdXRpb24iLCJfcmVzcG9uc2UkYm9keSIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwiX2NhbGxiYWNrcyRvbkVycm9yIiwiX2RhdGEkZXJyb3IzIiwiX2RhdGEkZXJyb3I0IiwicGxhY2Vob2xkZXJJZCIsImNhbGxiYWNrcyIsInQiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsInBlbmRpbmdDb250ZW50IiwidGhyb3R0bGVUaW1lciIsImZsdXNoVG9TdG9yZXMiLCJlbWl0VGhyb3R0bGVkIiwiZmx1c2hQZW5kaW5nIiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiY2xlYXJTdHJlYW1MaWtlQW5zd2VyUmVzZXQiLCJhcHBseVN0cmVhbUNvbXBsZXRlIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsImRhdGEiLCJ0aGlua2luZ0RlbHRhIiwic3RlcFRvb2wiLCJzdGVwVHlwZSIsImxhYmVsIiwiY2h1bmsiLCJfY2h1bmsiLCJfY2FsbGJhY2tzJG9uQXBwcm92YWwiLCJpc1ByZUFwcHJvdmVkIiwiX3JlZjMiLCJfdCIsIl90MiIsIl90MyIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiZ2V0IiwiY29udGVudCIsIl9jYWxsYmFja3Mkb25TdHJlYW1VcCIsInNldFRleHQiLCJvblN0cmVhbVVwZGF0ZSIsImNhbGwiLCJ3aW5kb3ciLCJzZXRUaW1lb3V0IiwidG9FbWl0IiwiY2xlYXJUaW1lb3V0IiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfY2FsbGJhY2tzJG9uU3RhcnRXcmkiLCJwYXRjaE1ldGEiLCJpc0xvYWRpbmciLCJpc1dyaXRpbmciLCJzZXRTdGF0dXMiLCJzZXRBY3Rpdml0eSIsIm9uU3RhcnRXcml0aW5nIiwic3luY0xpdmVOYXJyYXRpb24iLCJtYXJrQW5zd2VyUmVzZXQiLCJwYXlsb2FkIiwiX3BheWxvYWQkYWdlbnRfaWQiLCJfc3ViYWdlbnRSYXckcmVzb2x2ZWQiLCJfcmVmMiIsIl9jYWxsYmFja3Mkb25GaW5pc2hTdCIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsImF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImFnZW50X2lkIiwiYWdlbnRJZCIsImNvbXBsZXRlZEFnZW50SWQiLCJTdHJpbmciLCJ0cmltIiwic3ViYWdlbnRSYXciLCJzdWJhZ2VudCIsInJlc29sdmVkQ29udGV4dCIsInJlc29sdmVkX2NvbnRleHQiLCJyZWFzb25pbmciLCJmaW5pc2giLCJmaW5pc2hQYXlsb2FkIiwib25GaW5pc2hTdHJlYW0iLCJpc1N0b3BwZWQiLCJjYW5jZWwiLCJhYnJ1cHQiLCJyZWFkIiwic2VudCIsImRlY29kZSIsInN0cmVhbSIsInNwbGl0IiwicG9wIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJzIiwibiIsIl9zbGljZWRUb0FycmF5IiwicmVwbGFjZSIsIkpTT04iLCJwYXJzZSIsImRlbHRhIiwiaSIsImFwcGVuZFRoaW5raW5nIiwicGhhc2UiLCJtZXNzYWdlIiwic2V0Q29tcGFjdGlvbiIsInRvb2wiLCJ0eXBlIiwic3RhdHVzIiwiY2FwdHVyZUxlYWRpbmdGcm9tQm9keSIsImFwcGx5U3RlcCIsInNob3VsZENsZWFyU3RyZWFtRm9yTGVhZGluZyIsIm5vZGUiLCJ1bmRlZmluZWQiLCJ0aHJlYWRfaWQiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJhdXRvX2FwcHJvdmVkIiwiYXBwcm92YWxfc3RhdHVzIiwiY2xlYXIiLCJvbkFwcHJvdmFsUmVxdWlyZWQiLCJwZW5kaW5nX2FjdGlvbnMiLCJsZW5ndGgiLCJjb25zb2xlIiwiZXJyb3IiLCJzZXRFcnJvciIsIm9uRXJyb3IiLCJ3YXJuIiwiZSIsImYiLCJzdG9wIiwiX3giLCJfeDIiLCJfeDMiLCJhcHBseSIsImFyZ3VtZW50cyIsInNlc3Npb25TdHJlYW1NYW5hZ2VyIiwiaXNBY3RpdmUiLCJnZXRBY3RpdmVDb3VudCIsImdldEFjdGl2ZVNlc3Npb25JZHMiLCJmcm9tIiwia2V5cyIsInN0YXJ0U3RyZWFtIiwiX2NhbGxlZTIiLCJyZXF1ZXN0IiwiYWN0aXZpdHlPcHRpb25zIiwiYWdlbnROYW1lIiwiY29udHJvbGxlciIsIl9jYWxsYmFja3Mkb25FcnJvcjIiLCJfdDQiLCJfY29udGV4dDIiLCJzdGFydGVkIiwicmVhc29uIiwiQWJvcnRDb250cm9sbGVyIiwic2V0IiwiZW5zdXJlU2Vzc2lvbiIsIl9vYmplY3RTcHJlYWQiLCJzdGFydCIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsInNpZ25hbCIsInN0YXJ0Q29udGludWVTdHJlYW0iLCJfY2FsbGVlMyIsIl9yZWY0IiwiY29udGludWVSZXF1ZXN0Iiwic3NlUGFyYW1zIiwiX2NhbGxiYWNrcyRvbkVycm9yMyIsIl90NSIsIl9jb250ZXh0MyIsImNvbnRpbnVlVGhyZWFkIiwib2siLCJjb25jYXQiLCJzdGFydFJldHJ5U3RyZWFtIiwiX2NhbGxlZTQiLCJyZXRyeVJlcXVlc3QiLCJkZXRhaWwiLCJfY2FsbGJhY2tzJG9uRXJyb3I0IiwiX3Q2IiwiX3Q3IiwiX2NvbnRleHQ0IiwicmV0cnlDb21wbGV0aW9uIiwianNvbiIsInN0b3BTdHJlYW0iLCJfY2FsbGJhY2tzJG9uU3RvcCIsImFib3J0IiwicGFydGlhbFRleHQiLCJnZXRTbmFwc2hvdCIsInRleHQiLCJvblN0b3AiLCJhYm9ydFNpbGVudGx5IiwiX3N0b3JlJGdldE1ldGEiLCJnZXRNZXRhIiwiYWJvcnRBbGwiLCJfdGhpcyIsImZvckVhY2giXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvblN0cmVhbU1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29udGludWUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgdHlwZSB7IEFwcHJvdmFsUmVxdWVzdCB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQge1xuICBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHksXG4gIGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UsXG4gIGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlVG9vbEFjdGlvbkxhYmVsLFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHR5cGUgeyBIaXRsRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQsIG1lcmdlU3RyZWFtQ2h1bmsgfSBmcm9tICcuLi8uLi91dGlscy9zc2VTdHJlYW1Db250ZW50J1xuaW1wb3J0IHsgcmVhc29uaW5nU3RvcmUgfSBmcm9tICcuLi8uLi9ob29rcy91c2VSZWFzb25pbmdUcmFjZSdcbmltcG9ydCB0eXBlIHsgUmVhc29uaW5nU3RlcFBheWxvYWQsIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3JlYXNvbmluZydcbmltcG9ydCB0eXBlIHsgQ29udGV4dENvbXBhY3Rpb25QYXlsb2FkIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dENvbXBhY3Rpb24nXG5pbXBvcnQgeyBzZXNzaW9uU3RyZWFtaW5nVGV4dCB9IGZyb20gJy4vc2Vzc2lvblN0cmVhbWluZ1RleHQnXG5pbXBvcnQgeyB1c2VTZXNzaW9uc1N0b3JlIH0gZnJvbSAnLi91c2VTZXNzaW9uc1N0b3JlJ1xuaW1wb3J0IHsgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCB9IGZyb20gJy4vc2Vzc2lvbk5vdGlmaWNhdGlvbnMnXG5pbXBvcnQgeyBzZXNzaW9uSGl0bENvbnRleHQgfSBmcm9tICcuL3Nlc3Npb25IaXRsQ29udGV4dCdcbmltcG9ydCB0eXBlIHsgU2Vzc2lvbkZpbmlzaFBheWxvYWQsIFNlc3Npb25TdHJlYW1DYWxsYmFja3MsIFN0YXJ0U3RyZWFtUmVzdWx0IH0gZnJvbSAnLi9zZXNzaW9ucy50eXBlcydcblxudHlwZSBPcmNoZXN0cmF0b3JSZXF1ZXN0ID0gUGFyYW1ldGVyczx0eXBlb2YgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yPlswXVxudHlwZSBDb250aW51ZVRocmVhZFJlcXVlc3QgPSBQYXJhbWV0ZXJzPHR5cGVvZiBtYWlhLk9yY2hlc3RyYXRvci5jb250aW51ZVRocmVhZD5bMF1cbnR5cGUgUmV0cnlDb21wbGV0aW9uUmVxdWVzdCA9IFBhcmFtZXRlcnM8dHlwZW9mIG1haWEuT3JjaGVzdHJhdG9yLnJldHJ5Q29tcGxldGlvbj5bMF1cblxuLyoqIENvbXBhdGlibGUgY29uIGVsIGB0YCBkZSBpMThuZXh0ICh1c28gZGUgdW5hIHNvbGEga2V5KS4gKi9cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG50eXBlIFN0YXJ0U3RyZWFtUGFyYW1zID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBwbGFjZWhvbGRlcklkOiBzdHJpbmdcbiAgcmVxdWVzdDogT3JjaGVzdHJhdG9yUmVxdWVzdFxuICBjYWxsYmFja3M6IFNlc3Npb25TdHJlYW1DYWxsYmFja3NcbiAgdDogVHJhbnNsYXRlRm5cbiAgYWN0aXZpdHlPcHRpb25zPzoge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBoYXNBdHRhY2htZW50cz86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50c0NvdW50PzogbnVtYmVyXG4gIH1cbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGxcbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bWJlclxuICBhZ2VudE5hbWU/OiBzdHJpbmdcbn1cblxudHlwZSBTdGFydENvbnRpbnVlU3RyZWFtUGFyYW1zID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBwbGFjZWhvbGRlcklkOiBzdHJpbmdcbiAgY29udGludWVSZXF1ZXN0OiBDb250aW51ZVRocmVhZFJlcXVlc3RcbiAgY2FsbGJhY2tzOiBTZXNzaW9uU3RyZWFtQ2FsbGJhY2tzXG4gIHQ6IFRyYW5zbGF0ZUZuXG4gIGhpdGxFeGVjdXRpb25Db250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsXG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgYWdlbnROYW1lPzogc3RyaW5nXG59XG5cbnR5cGUgU3RhcnRSZXRyeVN0cmVhbVBhcmFtcyA9IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgcGxhY2Vob2xkZXJJZDogc3RyaW5nXG4gIHJldHJ5UmVxdWVzdDogUmV0cnlDb21wbGV0aW9uUmVxdWVzdFxuICBjYWxsYmFja3M6IFNlc3Npb25TdHJlYW1DYWxsYmFja3NcbiAgdDogVHJhbnNsYXRlRm5cbiAgYWN0aXZpdHlPcHRpb25zPzoge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBoYXNBdHRhY2htZW50cz86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50c0NvdW50PzogbnVtYmVyXG4gIH1cbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bWJlclxuICBhZ2VudE5hbWU/OiBzdHJpbmdcbn1cblxudHlwZSBBY3RpdmVTdHJlYW0gPSB7XG4gIHNlc3Npb25JZDogc3RyaW5nXG4gIGNvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlclxuICBpc1N0b3BwZWQ6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBNw6F4aW1vIGRlIHNlc2lvbmVzIGdlbmVyYW5kbyBlbiBwYXJhbGVsby4gUHJvdGVnZSByZWQvcmVjdXJzb3MgZGVsIGNsaWVudGUuXG4gKiBBanVzdGFibGUgYSBmdXR1cm8gdsOtYSBmbGFnIGRlbCBob3N0LlxuICovXG5leHBvcnQgY29uc3QgTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyA9IDRcblxuY29uc3QgU1RSRUFNX1RIUk9UVExFX01TID0gMTZcblxuY29uc3QgYWN0aXZlU3RyZWFtcyA9IG5ldyBNYXA8c3RyaW5nLCBBY3RpdmVTdHJlYW0+KClcblxuY29uc3Qgc3RvcmUgPSAoKSA9PiB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKClcblxuY29uc3QgaXNTdHJlYW1BY3RpdmUgPSAoc2Vzc2lvbklkOiBzdHJpbmcpOiBib29sZWFuID0+IGFjdGl2ZVN0cmVhbXMuaGFzKHNlc3Npb25JZClcblxuY29uc3QgZ2V0QWN0aXZlU3RyZWFtQ291bnQgPSAoKTogbnVtYmVyID0+IGFjdGl2ZVN0cmVhbXMuc2l6ZVxuXG5jb25zdCBwYXJzZVNlc3Npb25TU0UgPSBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlLCBhY3RpdmU6IEFjdGl2ZVN0cmVhbSwgcGFyYW1zOiBTdGFydFN0cmVhbVBhcmFtcyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY2FsbGJhY2tzLCB0IH0gPSBwYXJhbXNcbiAgY29uc3QgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPSBwYXJhbXMuaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gc2Vzc2lvbkhpdGxDb250ZXh0LmdldChzZXNzaW9uSWQpXG5cbiAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICBsZXQgdGhyb3R0bGVUaW1lcjogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICBjb25zdCBmbHVzaFRvU3RvcmVzID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnNldFRleHQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCBjb250ZW50KVxuICAgIGNhbGxiYWNrcy5vblN0cmVhbVVwZGF0ZT8uKGNvbnRlbnQpXG4gIH1cblxuICBjb25zdCBlbWl0VGhyb3R0bGVkID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIHBlbmRpbmdDb250ZW50ID0gY29udGVudFxuICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHJldHVyblxuICAgIHRocm90dGxlVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgdG9FbWl0ID0gcGVuZGluZ0NvbnRlbnRcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgIGZsdXNoVG9TdG9yZXModG9FbWl0KVxuICAgICAgfVxuICAgIH0sIFNUUkVBTV9USFJPVFRMRV9NUylcbiAgfVxuXG4gIGNvbnN0IGZsdXNoUGVuZGluZyA9ICgpID0+IHtcbiAgICBpZiAodGhyb3R0bGVUaW1lciAhPSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRocm90dGxlVGltZXIpXG4gICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgIH1cbiAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgY29uc3QgdG9FbWl0ID0gcGVuZGluZ0NvbnRlbnRcbiAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgZmx1c2hUb1N0b3Jlcyh0b0VtaXQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgaWYgKCFyZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICB9XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gIGxldCBidWZmZXIgPSAnJ1xuICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgbGV0IGhhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2VcblxuICBjb25zdCBlbnN1cmVXcml0aW5nU3RhcnRlZCA9ICgpID0+IHtcbiAgICBpZiAoaGFzU3RhcnRlZFdyaXRpbmcpIHJldHVyblxuICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUsIGlzV3JpdGluZzogdHJ1ZSB9KVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3dyaXRpbmcnKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkodCkpXG4gICAgY2FsbGJhY2tzLm9uU3RhcnRXcml0aW5nPy4oKVxuICB9XG5cbiAgY29uc3QgYXBwbHlTdHJlYW1DaHVuayA9IChjaHVuazogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFjaHVuaykgcmV0dXJuXG4gICAgYWNjdW11bGF0ZWRDb250ZW50ID0gbWVyZ2VTdHJlYW1DaHVuayhhY2N1bXVsYXRlZENvbnRlbnQsIGNodW5rKVxuICAgIHJlYXNvbmluZ1N0b3JlLnN5bmNMaXZlTmFycmF0aW9uKHBsYWNlaG9sZGVySWQsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICBlbWl0VGhyb3R0bGVkKGFjY3VtdWxhdGVkQ29udGVudClcbiAgfVxuXG4gIGNvbnN0IGNsZWFyU3RyZWFtTGlrZUFuc3dlclJlc2V0ID0gKCkgPT4ge1xuICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhyb3R0bGVUaW1lcilcbiAgICAgIHRocm90dGxlVGltZXIgPSBudWxsXG4gICAgfVxuICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgIGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gICAgZmx1c2hUb1N0b3JlcygnJylcbiAgICByZWFzb25pbmdTdG9yZS5tYXJrQW5zd2VyUmVzZXQocGxhY2Vob2xkZXJJZClcbiAgfVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQ29tcGxldGUgPSAocGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAocGF5bG9hZC5jb250ZW50IGFzIHN0cmluZykgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgY29uc3Qgc291cmNlcyA9IHBheWxvYWQuc291cmNlcyB8fCBudWxsXG4gICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKHBheWxvYWQubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShwYXlsb2FkLmF0dGFjaG1lbnRzKSA/IHBheWxvYWQuYXR0YWNobWVudHMgOiBudWxsXG4gICAgbGV0IHN1Z2dlc3Rpb25zOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3RfcmVwbHkgYXMgc3RyaW5nW11cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0aW9ucykpIHtcbiAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0aW9ucyBhcyBzdHJpbmdbXVxuICAgIH1cbiAgICBjb25zdCBhZ2VudElkUmF3ID0gcGF5bG9hZC5hZ2VudF9pZCA/PyBwYXlsb2FkLmFnZW50SWRcbiAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID0gYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICBjb25zdCBzdWJhZ2VudFJhdyA9IHBheWxvYWQuc3ViYWdlbnQgYXMgeyByZXNvbHZlZF9jb250ZXh0PzogdW5rbm93biB9IHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgIGNvbnN0IHJlc29sdmVkQ29udGV4dCA9IHN1YmFnZW50UmF3Py5yZXNvbHZlZF9jb250ZXh0ID8/IG51bGxcbiAgICBjb25zdCByZWFzb25pbmcgPSAocGF5bG9hZC5yZWFzb25pbmcgYXMgUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbCkgPz8gbnVsbFxuXG4gICAgcmVhc29uaW5nU3RvcmUuZmluaXNoKHBsYWNlaG9sZGVySWQsIHJlYXNvbmluZylcbiAgICBmbHVzaFBlbmRpbmcoKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnY29tcGxldGUnKVxuXG4gICAgY29uc3QgZmluaXNoUGF5bG9hZDogU2Vzc2lvbkZpbmlzaFBheWxvYWQgPSB7XG4gICAgICBjb250ZW50OiBmaW5hbENvbnRlbnQsXG4gICAgICBzb3VyY2VzLFxuICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgYXR0YWNobWVudHMsXG4gICAgICBzdWdnZXN0aW9ucyxcbiAgICAgIGNvbXBsZXRlZEFnZW50SWQsXG4gICAgICByZXNvbHZlZENvbnRleHQsXG4gICAgICByZWFzb25pbmcsXG4gICAgfVxuICAgIGNhbGxiYWNrcy5vbkZpbmlzaFN0cmVhbT8uKGZpbmlzaFBheWxvYWQpXG5cbiAgICAvLyBFbCB0ZXh0byBlbiB2aXZvIE5PIHNlIGxpbXBpYSBhY8OhIGEgcHJvcMOzc2l0by4gRWwgcGxhY2Vob2xkZXIgc2UgdmEgY29uIGVsXG4gICAgLy8gYGRyb3BgIHF1ZSBoYWNlIGVsIGNvbnN1bWlkb3IsIHkgY29uIMOpbCBzdSBzdXNjcmlwY2nDs247IHZhY2lhcmxvIGFudGVzIGxvXG4gICAgLy8gZGVqYWJhIG1vbnRhZG8geSBzaW4gdGV4dG8gKGFsdHVyYSAwKSBkdXJhbnRlIH4yNW1zOiBlbCBmbGlja2VyIGRlIGZpbiBkZVxuICAgIC8vIHN0cmVhbS4gTm8gYWxjYW56YSBjb24gZGlmZXJpcmxvLCBwb3JxdWUgZXN0ZSBjbGVhciB2aWFqYSBlbiBTeW5jTGFuZVxuICAgIC8vIChzdG9yZSBleHRlcm5vKSB5IGVsIHN3YXAgZGUgbWVuc2FqZXMgZW4gRGVmYXVsdExhbmUsIGFzw60gcXVlIHNpZW1wcmUgc2VcbiAgICAvLyBjdWVsYSBlbiBlbCBtZWRpby4gRWwgc2xvdCBzZSBsaWJlcmEgZW4gZWwgcHLDs3hpbW8gYHN0YXJ0KClgIGRlIGxhIHNlc2nDs24sXG4gICAgLy8geSBlbiBzdG9wL2Vycm9yL2FwcHJvdmFsL2NhbWJpbyBkZSBzZXNpw7NuLCBxdWUgc8OtIGxsYW1hbiBgY2xlYXJgLlxuICB9XG5cbiAgdHJ5IHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgIGlmIChkb25lKSBicmVha1xuXG4gICAgICBpZiAoYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgaWYgKGxpbmUudHJpbSgpID09PSAnJykgY29udGludWVcblxuICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIGNvbnRpbnVlXG5cbiAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuXG4gICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3RoaW5raW5nJzoge1xuICAgICAgICAgICAgICBjb25zdCB0aGlua2luZ0RlbHRhID0gdHlwZW9mIGRhdGEuZGVsdGEgPT09ICdzdHJpbmcnID8gZGF0YS5kZWx0YSA6ICcnXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5pID09PSAnbnVtYmVyJyAmJiB0aGlua2luZ0RlbHRhKSB7XG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuYXBwZW5kVGhpbmtpbmcocGxhY2Vob2xkZXJJZCwgZGF0YS5pLCB0aGlua2luZ0RlbHRhKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICghaGFzU3RhcnRlZFdyaXRpbmcpIHtcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCB7IHBoYXNlOiAndGhpbmtpbmcnLCBtZXNzYWdlOiBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlKDAsIHQpIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRWwgYmFja2VuZCBkZXNjYXJ0YSBsbyBlbWl0aWRvIHkgcmVpbmljaWEgbGEgcmVzcHVlc3RhIGRlc2RlIGNlcm8uXG4gICAgICAgICAgICBjYXNlICdhbnN3ZXJfcmVzZXQnOlxuICAgICAgICAgICAgICBjbGVhclN0cmVhbUxpa2VBbnN3ZXJSZXNldCgpXG4gICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIC8vIE1BSUEgcmVjb3J0w7MgZWwgY29udGV4dG8gcGFyYSBxdWUgZWwgcmVxdWVzdCBlbnRyYXJhLiBTw7NsbyBsbGVnYVxuICAgICAgICAgICAgLy8gY3VhbmRvIGVsIHJlY29ydGUgc2Ugbm90YSAoaW3DoWdlbmVzIHZpZWphcywgdHVybm9zIGVudGVyb3MgbyBlbFxuICAgICAgICAgICAgLy8gdGV4dG8gbGl0ZXJhbCBkZSB0dXJub3Mgdmllam9zKSwgeSB2aWFqYSBqdW50byBhIGxhIHRyYXphIHBvcnF1ZVxuICAgICAgICAgICAgLy8gY29tcGFydGUgc3UgY2ljbG8gZGUgdmlkYTogbWlzbW8gcGxhY2Vob2xkZXIsIG1pc21vIHJlbmFtZS5cbiAgICAgICAgICAgIGNhc2UgJ2NvbnRleHRfY29tcGFjdGVkJzpcbiAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuc2V0Q29tcGFjdGlvbihwbGFjZWhvbGRlcklkLCBkYXRhIGFzIENvbnRleHRDb21wYWN0aW9uUGF5bG9hZClcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSAncmVhc29uaW5nX3N0ZXAnOiB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0ZXBUb29sID0gdHlwZW9mIGRhdGEudG9vbCA9PT0gJ3N0cmluZycgPyBkYXRhLnRvb2wgOiAnJ1xuICAgICAgICAgICAgICBjb25zdCBzdGVwVHlwZSA9IHR5cGVvZiBkYXRhLnR5cGUgPT09ICdzdHJpbmcnID8gZGF0YS50eXBlIDogJydcbiAgICAgICAgICAgICAgaWYgKHN0ZXBUb29sICYmIHN0ZXBUeXBlICE9PSAnaGFuZG9mZicgJiYgZGF0YS5zdGF0dXMgPT09ICdydW5uaW5nJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcmVzb2x2ZVRvb2xBY3Rpb25MYWJlbChzdGVwVG9vbCwgdCwgJ3ByZXNlbnQnKVxuICAgICAgICAgICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiBsYWJlbCB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuaSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICByZWFzb25pbmdTdG9yZS5jYXB0dXJlTGVhZGluZ0Zyb21Cb2R5KHBsYWNlaG9sZGVySWQsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgICByZWFzb25pbmdTdG9yZS5hcHBseVN0ZXAocGxhY2Vob2xkZXJJZCwgZGF0YSBhcyBSZWFzb25pbmdTdGVwUGF5bG9hZClcbiAgICAgICAgICAgICAgICBpZiAocmVhc29uaW5nU3RvcmUuc2hvdWxkQ2xlYXJTdHJlYW1Gb3JMZWFkaW5nKHBsYWNlaG9sZGVySWQsIGFjY3VtdWxhdGVkQ29udGVudCkpIHtcbiAgICAgICAgICAgICAgICAgIGNsZWFyU3RyZWFtTGlrZUFuc3dlclJlc2V0KClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAndG9rZW4nOiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICBlbnN1cmVXcml0aW5nU3RhcnRlZCgpXG4gICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ2h1bmsoY2h1bmspXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICBlbnN1cmVXcml0aW5nU3RhcnRlZCgpXG4gICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ2h1bmsoY2h1bmspXG4gICAgICAgICAgICAgIGlmIChpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUNvbXBsZXRlKGRhdGEpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnbm9kZSc6XG4gICAgICAgICAgICAgIGlmIChkYXRhLm5vZGUgPT09ICdhZ2VudF90cmFuc2ZlcicpIHtcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEubWVzc2FnZSAmJiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0ID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGRhdGEudGhyZWFkX2lkID09PSAnc3RyaW5nJyA/IGRhdGEudGhyZWFkX2lkIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlJzpcbiAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICBjYXNlICdhcHByb3ZhbF9yZXF1aXJlZCc6IHtcbiAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgLy8gUHJlYXByb2JhZG8gKGF1dG8tYXBwcm92ZSBvIGRldGVjY2nDs24gbWFudWFsKTogZWwgc3RyZWFtIG5vIHNlIGNvcnRhLFxuICAgICAgICAgICAgICAvLyBzaWd1ZSBlamVjdXRhbmRvIGxhcyBhY2Npb25lcyBzaW4gZXNwZXJhciBkZWNpc2nDs24gZGVsIHVzdWFyaW8uXG4gICAgICAgICAgICAgIGNvbnN0IGlzUHJlQXBwcm92ZWQgPVxuICAgICAgICAgICAgICAgIGRhdGEubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkID09PSB0cnVlIHx8XG4gICAgICAgICAgICAgICAgZGF0YS5hdXRvX2FwcHJvdmVkID09PSB0cnVlIHx8XG4gICAgICAgICAgICAgICAgZGF0YS5hcHByb3ZhbF9zdGF0dXMgPT09ICdhcHByb3ZlZCdcbiAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICAgICAgICAgICAgaWYgKCFpc1ByZUFwcHJvdmVkKSB7XG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuZmluaXNoKHBsYWNlaG9sZGVySWQsIChkYXRhLnJlYXNvbmluZyBhcyBSZWFzb25pbmdUcmFjZVBheWxvYWQgfCBudWxsKSA/PyBudWxsKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlIH0pXG4gICAgICAgICAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2F3YWl0aW5nX2FwcHJvdmFsJylcbiAgICAgICAgICAgICAgY2FsbGJhY2tzLm9uQXBwcm92YWxSZXF1aXJlZD8uKGRhdGEgYXMgQXBwcm92YWxSZXF1ZXN0LCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgIGlmIChpc1ByZUFwcHJvdmVkICYmIEFycmF5LmlzQXJyYXkoZGF0YS5wZW5kaW5nX2FjdGlvbnMpICYmIGRhdGEucGVuZGluZ19hY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSh0LCBoaXRsRXhlY3V0aW9uQ29udGV4dCA/PyB1bmRlZmluZWQpKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGRhdGEuZXJyb3IpXG4gICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgICAgICAgIHN0b3JlKCkuc2V0RXJyb3Ioc2Vzc2lvbklkLCB7IHR5cGU6IGRhdGEuZXJyb3I/LnR5cGUsIG1lc3NhZ2U6IGRhdGEuZXJyb3I/Lm1lc3NhZ2UgfSlcbiAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnZXJyb3InKVxuICAgICAgICAgICAgICBjYWxsYmFja3Mub25FcnJvcj8uKGRhdGEuZXJyb3I/LnR5cGUsIGRhdGEuZXJyb3I/Lm1lc3NhZ2UpXG4gICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignVW5rbm93biBTU0UgZXZlbnQgdHlwZTonLCBldmVudFR5cGUpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGZsdXNoUGVuZGluZygpXG4gIH1cbn1cblxuLyoqXG4gKiBNYW5hZ2VyIHNpbmdsZXRvbiAobW9kdWxlLWxldmVsKSBxdWUgY29ycmUgTiBzdHJlYW1zIGRlbCBvcmNoZXN0cmF0b3IgZW5cbiAqIHBhcmFsZWxvLCB1bm8gcG9yIGBzZXNzaW9uSWRgLiBTb2JyZXZpdmUgYSBjYW1iaW9zIGRlIHZpc3RhIHkgYWwgY2llcnJlIGRlbFxuICogbW9kYWw6IGxvcyBzdHJlYW1zIHNvbG8gc2UgY2FuY2VsYW4gY29uIHN0b3AgZXhwbMOtY2l0byBkZWwgdXN1YXJpbyBvIGFsXG4gKiBjb21wbGV0YXIvZXJyb3Jhci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlc3Npb25TdHJlYW1NYW5hZ2VyID0ge1xuICBpc0FjdGl2ZTogaXNTdHJlYW1BY3RpdmUsXG4gIGdldEFjdGl2ZUNvdW50OiBnZXRBY3RpdmVTdHJlYW1Db3VudCxcbiAgZ2V0QWN0aXZlU2Vzc2lvbklkczogKCk6IHN0cmluZ1tdID0+IEFycmF5LmZyb20oYWN0aXZlU3RyZWFtcy5rZXlzKCkpLFxuXG4gIGFzeW5jIHN0YXJ0U3RyZWFtKHBhcmFtczogU3RhcnRTdHJlYW1QYXJhbXMpOiBQcm9taXNlPFN0YXJ0U3RyZWFtUmVzdWx0PiB7XG4gICAgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCgpXG5cbiAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgcmVxdWVzdCwgY2FsbGJhY2tzLCB0LCBhY3Rpdml0eU9wdGlvbnMsIGFnZW50SWQsIGFnZW50TmFtZSB9ID0gcGFyYW1zXG5cbiAgICBpZiAoaXNTdHJlYW1BY3RpdmUoc2Vzc2lvbklkKSkge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2FscmVhZHlfYWN0aXZlJyB9XG4gICAgfVxuICAgIGlmIChnZXRBY3RpdmVTdHJlYW1Db3VudCgpID49IE1BWF9DT05DVVJSRU5UX1NUUkVBTVMpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdsaW1pdCcgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICBjb25zdCBhY3RpdmU6IEFjdGl2ZVN0cmVhbSA9IHsgc2Vzc2lvbklkLCBjb250cm9sbGVyLCBpc1N0b3BwZWQ6IGZhbHNlIH1cbiAgICBhY3RpdmVTdHJlYW1zLnNldChzZXNzaW9uSWQsIGFjdGl2ZSlcblxuICAgIHN0b3JlKCkuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSWQpXG4gICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7XG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICBpc0xvYWRpbmc6IHRydWUsXG4gICAgICBpc1dyaXRpbmc6IGZhbHNlLFxuICAgICAgLi4uKGFnZW50SWQgIT0gbnVsbCA/IHsgYWdlbnRJZCB9IDoge30pLFxuICAgICAgLi4uKGFnZW50TmFtZSAhPSBudWxsID8geyBhZ2VudE5hbWUgfSA6IHt9KSxcbiAgICB9KVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zdGFydChzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG4gICAgcmVhc29uaW5nU3RvcmUuc3RhcnQocGxhY2Vob2xkZXJJZClcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHQsIGFjdGl2aXR5T3B0aW9ucyA/PyB7fSkpXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5vcmNoZXN0cmF0b3IocmVxdWVzdCwgY29udHJvbGxlci5zaWduYWwpXG4gICAgICBhd2FpdCBwYXJzZVNlc3Npb25TU0UocmVzcG9uc2UsIGFjdGl2ZSwgcGFyYW1zKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnZXJyb3InKVxuICAgICAgICBjYWxsYmFja3Mub25FcnJvcj8uKClcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXJ0ZWQ6IHRydWUgfVxuICB9LFxuXG4gIC8qKiBSZXN1bWUgSElUTCAoYGNvbnRpbnVlLXRocmVhZGApIGtleWVkIHBvciBzZXNzaW9uSWQg4oCUIG1pc21vIG1vdG9yIHF1ZSBvcmNoZXN0cmF0b3IuICovXG4gIGFzeW5jIHN0YXJ0Q29udGludWVTdHJlYW0ocGFyYW1zOiBTdGFydENvbnRpbnVlU3RyZWFtUGFyYW1zKTogUHJvbWlzZTxTdGFydFN0cmVhbVJlc3VsdD4ge1xuICAgIGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQoKVxuXG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIGNvbnRpbnVlUmVxdWVzdCwgY2FsbGJhY2tzLCB0LCBoaXRsRXhlY3V0aW9uQ29udGV4dCwgYWdlbnRJZCwgYWdlbnROYW1lIH0gPSBwYXJhbXNcblxuICAgIGlmIChpc1N0cmVhbUFjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnYWxyZWFkeV9hY3RpdmUnIH1cbiAgICB9XG4gICAgaWYgKGdldEFjdGl2ZVN0cmVhbUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2xpbWl0JyB9XG4gICAgfVxuXG4gICAgaWYgKGhpdGxFeGVjdXRpb25Db250ZXh0KSB7XG4gICAgICBzZXNzaW9uSGl0bENvbnRleHQuc2V0KHNlc3Npb25JZCwgaGl0bEV4ZWN1dGlvbkNvbnRleHQpXG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIGNvbnN0IGFjdGl2ZTogQWN0aXZlU3RyZWFtID0geyBzZXNzaW9uSWQsIGNvbnRyb2xsZXIsIGlzU3RvcHBlZDogZmFsc2UgfVxuICAgIGFjdGl2ZVN0cmVhbXMuc2V0KHNlc3Npb25JZCwgYWN0aXZlKVxuXG4gICAgc3RvcmUoKS5lbnN1cmVTZXNzaW9uKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHtcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICAuLi4oYWdlbnRJZCAhPSBudWxsID8geyBhZ2VudElkIH0gOiB7fSksXG4gICAgICAuLi4oYWdlbnROYW1lICE9IG51bGwgPyB7IGFnZW50TmFtZSB9IDoge30pLFxuICAgIH0pXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KFxuICAgICAgc2Vzc2lvbklkLFxuICAgICAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkodCwgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gc2Vzc2lvbkhpdGxDb250ZXh0LmdldChzZXNzaW9uSWQpID8/IHVuZGVmaW5lZClcbiAgICApXG5cbiAgICBjb25zdCBzc2VQYXJhbXM6IFN0YXJ0U3RyZWFtUGFyYW1zID0ge1xuICAgICAgc2Vzc2lvbklkLFxuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIHJlcXVlc3Q6IHt9IGFzIE9yY2hlc3RyYXRvclJlcXVlc3QsXG4gICAgICBjYWxsYmFja3MsXG4gICAgICB0LFxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHQ6IGhpdGxFeGVjdXRpb25Db250ZXh0ID8/IHNlc3Npb25IaXRsQ29udGV4dC5nZXQoc2Vzc2lvbklkKSxcbiAgICAgIGFnZW50SWQsXG4gICAgICBhZ2VudE5hbWUsXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQoY29udGludWVSZXF1ZXN0LCBjb250cm9sbGVyLnNpZ25hbClcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb250aW51ZS10aHJlYWQgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgICAgfVxuICAgICAgYXdhaXQgcGFyc2VTZXNzaW9uU1NFKHJlc3BvbnNlLCBhY3RpdmUsIHNzZVBhcmFtcylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcbiAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LigpXG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICAgIHNlc3Npb25IaXRsQ29udGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3RhcnRlZDogdHJ1ZSB9XG4gIH0sXG5cbiAgLyoqIFJlZ2VuZXJhIGxhIHJlc3B1ZXN0YSBkZSB1biB0dXJubyAoYHJldHJ5X2NvbXBsZXRpb25gKSDigJQgbWlzbW8gbW90b3IgU1NFIHF1ZSBvcmNoZXN0cmF0b3IuICovXG4gIGFzeW5jIHN0YXJ0UmV0cnlTdHJlYW0ocGFyYW1zOiBTdGFydFJldHJ5U3RyZWFtUGFyYW1zKTogUHJvbWlzZTxTdGFydFN0cmVhbVJlc3VsdD4ge1xuICAgIGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQoKVxuXG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIHJldHJ5UmVxdWVzdCwgY2FsbGJhY2tzLCB0LCBhY3Rpdml0eU9wdGlvbnMsIGFnZW50SWQsIGFnZW50TmFtZSB9ID0gcGFyYW1zXG5cbiAgICBpZiAoaXNTdHJlYW1BY3RpdmUoc2Vzc2lvbklkKSkge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2FscmVhZHlfYWN0aXZlJyB9XG4gICAgfVxuICAgIGlmIChnZXRBY3RpdmVTdHJlYW1Db3VudCgpID49IE1BWF9DT05DVVJSRU5UX1NUUkVBTVMpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdsaW1pdCcgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICBjb25zdCBhY3RpdmU6IEFjdGl2ZVN0cmVhbSA9IHsgc2Vzc2lvbklkLCBjb250cm9sbGVyLCBpc1N0b3BwZWQ6IGZhbHNlIH1cbiAgICBhY3RpdmVTdHJlYW1zLnNldChzZXNzaW9uSWQsIGFjdGl2ZSlcblxuICAgIHN0b3JlKCkuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSWQpXG4gICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7XG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICBpc0xvYWRpbmc6IHRydWUsXG4gICAgICBpc1dyaXRpbmc6IGZhbHNlLFxuICAgICAgLi4uKGFnZW50SWQgIT0gbnVsbCA/IHsgYWdlbnRJZCB9IDoge30pLFxuICAgICAgLi4uKGFnZW50TmFtZSAhPSBudWxsID8geyBhZ2VudE5hbWUgfSA6IHt9KSxcbiAgICB9KVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zdGFydChzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSh0LCBhY3Rpdml0eU9wdGlvbnMgPz8ge30pKVxuXG4gICAgY29uc3Qgc3NlUGFyYW1zOiBTdGFydFN0cmVhbVBhcmFtcyA9IHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICByZXF1ZXN0OiB7fSBhcyBPcmNoZXN0cmF0b3JSZXF1ZXN0LFxuICAgICAgY2FsbGJhY2tzLFxuICAgICAgdCxcbiAgICAgIGFjdGl2aXR5T3B0aW9ucyxcbiAgICAgIGFnZW50SWQsXG4gICAgICBhZ2VudE5hbWUsXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IucmV0cnlDb21wbGV0aW9uKHJldHJ5UmVxdWVzdCwgY29udHJvbGxlci5zaWduYWwpXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgIGxldCBkZXRhaWw6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgeyBkZXRhaWw/OiBzdHJpbmcgfVxuICAgICAgICAgICAgZGV0YWlsID0gdHlwZW9mIGRhdGEuZGV0YWlsID09PSAnc3RyaW5nJyA/IGRhdGEuZGV0YWlsIDogdW5kZWZpbmVkXG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICBkZXRhaWwgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRldGFpbCA9PT0gJ1R1cm4gbm90IGZvdW5kJykge1xuICAgICAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UsIHBsYWNlaG9sZGVySWQ6IG51bGwgfSlcbiAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnaWRsZScpXG4gICAgICAgICAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgICAgICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAndHVybl9ub3RfZm91bmQnIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZXRyeV9jb21wbGV0aW9uIGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICAgIH1cbiAgICAgIGF3YWl0IHBhcnNlU2Vzc2lvblNTRShyZXNwb25zZSwgYWN0aXZlLCBzc2VQYXJhbXMpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oKVxuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3RhcnRlZDogdHJ1ZSB9XG4gIH0sXG5cbiAgLyoqIENhbmNlbGFjacOzbiBleHBsw61jaXRhIGRlbCB1c3VhcmlvIChtZW5zYWplIFwiY2FuY2VsYWRvXCIpLiAqL1xuICBzdG9wU3RyZWFtKHNlc3Npb25JZDogc3RyaW5nLCBjYWxsYmFja3M/OiBTZXNzaW9uU3RyZWFtQ2FsbGJhY2tzKSB7XG4gICAgY29uc3QgYWN0aXZlID0gYWN0aXZlU3RyZWFtcy5nZXQoc2Vzc2lvbklkKVxuICAgIGlmICghYWN0aXZlKSByZXR1cm5cbiAgICBhY3RpdmUuaXNTdG9wcGVkID0gdHJ1ZVxuICAgIGFjdGl2ZS5jb250cm9sbGVyLmFib3J0KClcbiAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgLy8gRWwgcGFyY2lhbCBzZSByZXNjYXRhIGFudGVzIGRlIGxpbXBpYXI6IGVsIGJhY2tlbmQgbG8gcGVyc2lzdGUsIHBlcm8gc2kgbm8gbG9cbiAgICAvLyBwYXNhbW9zIGFsIGNhbGxiYWNrIGRlc2FwYXJlY2UgZGUgcGFudGFsbGEgaGFzdGEgZWwgcHLDs3hpbW8gZmV0Y2ggZGUgbGEgc2VzacOzbi5cbiAgICBjb25zdCBwYXJ0aWFsVGV4dCA9IHNlc3Npb25TdHJlYW1pbmdUZXh0LmdldFNuYXBzaG90KHNlc3Npb25JZCkudGV4dFxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2NhbmNlbGxlZCcpXG4gICAgY2FsbGJhY2tzPy5vblN0b3A/LihwYXJ0aWFsVGV4dClcbiAgfSxcblxuICAvKiogQWJvcnRhIHNpbiBtYXJjYXIgXCJjYW5jZWxhZG9cIiAodXNvIGludGVybm8gLyBsaW1waWV6YSkuICovXG4gIGFib3J0U2lsZW50bHkoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhY3RpdmUgPSBhY3RpdmVTdHJlYW1zLmdldChzZXNzaW9uSWQpXG4gICAgaWYgKCFhY3RpdmUpIHJldHVyblxuICAgIGFjdGl2ZS5pc1N0b3BwZWQgPSB0cnVlXG4gICAgYWN0aXZlLmNvbnRyb2xsZXIuYWJvcnQoKVxuICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICBpZiAoc3RvcmUoKS5nZXRNZXRhKHNlc3Npb25JZCk/LnN0YXR1cyAhPT0gJ2NvbXBsZXRlJykge1xuICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnaWRsZScpXG4gICAgfVxuICB9LFxuXG4gIGFib3J0QWxsKCkge1xuICAgIEFycmF5LmZyb20oYWN0aXZlU3RyZWFtcy5rZXlzKCkpLmZvckVhY2goc2Vzc2lvbklkID0+IHRoaXMuYWJvcnRTaWxlbnRseShzZXNzaW9uSWQpKVxuICB9LFxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxJQUFJLE1BQU0scUJBQXFCO0FBRXRDLFNBQ0VDLHdCQUF3QixFQUN4QkMseUJBQXlCLEVBQ3pCQyx3QkFBd0IsRUFDeEJDLDZCQUE2QixFQUM3QkMsZ0NBQWdDLEVBQ2hDQyxzQkFBc0IsUUFDakIsb0NBQW9DO0FBRTNDLFNBQVNDLHdCQUF3QixFQUFFQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDekYsU0FBU0MsY0FBYyxRQUFRLCtCQUErQjtBQUc5RCxTQUFTQyxvQkFBb0IsUUFBUSx3QkFBd0I7QUFDN0QsU0FBU0MsZ0JBQWdCLFFBQVEsb0JBQW9CO0FBQ3JELFNBQVNDLHFDQUFxQyxRQUFRLHdCQUF3QjtBQUM5RSxTQUFTQyxrQkFBa0IsUUFBUSxzQkFBc0I7O0FBT3pEOztBQXFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUMsc0JBQXNCLEdBQUcsQ0FBQztBQUV2QyxJQUFNQyxrQkFBa0IsR0FBRyxFQUFFO0FBRTdCLElBQU1DLGFBQWEsR0FBRyxJQUFJQyxHQUFHLENBQXVCLENBQUM7QUFFckQsSUFBTUMsS0FBSyxHQUFHLFNBQVJBLEtBQUtBLENBQUE7RUFBQSxPQUFTUCxnQkFBZ0IsQ0FBQ1EsUUFBUSxDQUFDLENBQUM7QUFBQTtBQUUvQyxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUlDLFNBQWlCO0VBQUEsT0FBY0wsYUFBYSxDQUFDTSxHQUFHLENBQUNELFNBQVMsQ0FBQztBQUFBO0FBRW5GLElBQU1FLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUE7RUFBQSxPQUFpQlAsYUFBYSxDQUFDUSxJQUFJO0FBQUE7QUFFN0QsSUFBTUMsZUFB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
package/lib/types/Chat.js CHANGED
@@ -7,4 +7,4 @@ export var ChatHistoryRole = /*#__PURE__*/function (ChatHistoryRole) {
7
7
  }({});
8
8
 
9
9
  // Backend pending_approval format (before transformation)
10
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGF0SGlzdG9yeVJvbGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvQ2hhdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgUmVhc29uaW5nVHJhY2UsIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB9IGZyb20gJy4vcmVhc29uaW5nJ1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4vUHJvamVjdCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuL2NvbnRleHRNZW50aW9uJ1xuXG5leHBvcnQgdHlwZSBDaGF0SXRlbSA9IHtcbiAgY2hhdF9pZDogc3RyaW5nXG4gIGNoYXRfc3RhdHVzOiBzdHJpbmdcbiAgbGFzdF9xdWVzdGlvbjogc3RyaW5nXG4gIGxhc3RfcXVlc3Rpb25fZGF0ZTogc3RyaW5nXG4gIG1lc3NhZ2VfaWQ6IHN0cmluZ1xuICBxX2Fuc3dlcnM6IG51bWJlclxuICBnZW5lcmFsX3JhdGluZzogbnVtYmVyXG4gIHVzZXJfaWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBDaGF0UmVzcG9uc2UgPSB7XG4gIGl0ZW1zOiBDaGF0SXRlbVtdXG4gIGxhc3RfZXZhbHVhdGVkX2tleTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIENoYXQgPSB7XG4gIGlkOiBzdHJpbmdcbiAgdGl0bGU6IHN0cmluZ1xuICBkYXRlOiBEYXRlXG4gIGFnZW50X3R5cGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ2hhdE1lc3NhZ2VVc2VyID0ge1xuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBhdmF0YXI/OiBzdHJpbmdcbiAgYXZhdGFySWNvbj86IFJlYWN0Tm9kZVxufVxuXG5leHBvcnQgZW51bSBDaGF0SGlzdG9yeVJvbGUge1xuICBVU0VSID0gJ3VzZXInLFxuICBBU1NJU1RBTlQgPSAnYXNzaXN0YW50Jyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZW5kaW5nQWN0aW9uIHtcbiAgdG9vbF9uYW1lOiBzdHJpbmdcbiAgdG9vbF9jYWxsX2lkOiBzdHJpbmdcbiAgdG9vbF9hcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgYW55W11cbiAgdGhyZWFkX2lkOiBzdHJpbmcgLy8gRWFjaCBhY3Rpb24gaGFzIGl0cyBvd24gdW5pcXVlIHRocmVhZF9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcHJvdmFsUmVxdWVzdCB7XG4gIHR5cGU6ICdhcHByb3ZhbF9yZXF1aXJlZCdcbiAgcGVuZGluZ19hY3Rpb25zOiBQZW5kaW5nQWN0aW9uW11cbiAgdG90YWxfYWN0aW9uczogbnVtYmVyXG4gIG9yaWdpbmFsX3RocmVhZF9pZDogc3RyaW5nIC8vIE9yaWdpbmFsIGNoZWNrcG9pbnQgdGhyZWFkX2lkXG4gIHNlc3Npb25faWQ6IHN0cmluZ1xuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PlxuICBtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQ/OiBib29sZWFuXG4gIHdhcm5pbmdfbWVzc2FnZT86IHN0cmluZ1xuICBhdXRvX2FwcHJvdmVkPzogYm9vbGVhblxuICBhcHByb3ZhbF9zdGF0dXM/OiAncGVuZGluZycgfCAnYXBwcm92ZWQnXG4gIHJlYXNvbmluZz86IFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB8IG51bGxcbn1cblxuLy8gQmFja2VuZCBwZW5kaW5nX2FwcHJvdmFsIGZvcm1hdCAoYmVmb3JlIHRyYW5zZm9ybWF0aW9uKVxuZXhwb3J0IGludGVyZmFjZSBCYWNrZW5kUGVuZGluZ0FwcHJvdmFsIHtcbiAgdHlwZTogJ2FwcHJvdmFsX3JlcXVpcmVkJ1xuICB0b29sX2NhbGxfaWQ6IHN0cmluZ1xuICB0b29sX25hbWU/OiBzdHJpbmdcbiAgdG9vbF9hcmdzPzogUmVjb3JkPHN0cmluZywgYW55PiB8IGFueVtdXG4gIG9yaWdpbmFsX3RocmVhZF9pZDogc3RyaW5nXG4gIHNlc3Npb25faWQ6IHN0cmluZ1xuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PlxuICBtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQ/OiBib29sZWFuXG4gIHdhcm5pbmdfbWVzc2FnZT86IHN0cmluZ1xuICBhdXRvX2FwcHJvdmVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZSA9IHtcbiAgaWQ6IHN0cmluZ1xuICBtZXNzYWdlOiBzdHJpbmdcbiAgZGF0ZTogRGF0ZVxuICBpc0Vycm9yPzogYm9vbGVhblxuICBpc19jYW5jZWxsZWQ/OiBib29sZWFuXG4gIGlzRnJvbnRlbmRDYW5jZWxsZWQ/OiBib29sZWFuXG4gIHVzZXI6IENoYXRNZXNzYWdlVXNlclxuICBwcm9qZWN0SWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgY2xpZW50TmFtZT86IHN0cmluZ1xuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG4gIHByb2plY3Q/OiBQcm9qZWN0XG4gIGFnZW50SWQ/OiBzdHJpbmdcbiAgb3B0aW9ucz86IHtcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gICAgbmFtZT86IHN0cmluZ1xuICB9W11cbiAgcm9sZT86IENoYXRIaXN0b3J5Um9sZVxuICBzb3VyY2VzPzogYW55XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICB3YXNIZWxwZnVsPzogYm9vbGVhbiB8IG51bGxcbiAgbWVtb3J5U2Vzc2lvbklkPzogc3RyaW5nXG4gIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gIC8qKiBUcmFzIGFwcm9iYXIgY3JlYXRlX2FnZW50OiBhY2Npb25lcyByw6FwaWRhcyBlbiBlbCBtZW5zYWplIGZpbmFsOyByZXF1aWVyZSBhZ2VudElkIGRldGVjdGFkbyBlbiBlbCB0ZXh0byAqL1xuICBjcmVhdGVBZ2VudEZvbGxvd1VwPzogeyBhZ2VudElkOiBzdHJpbmcgfSB8IG51bGxcbiAgYXBwcm92YWw/OiBBcHByb3ZhbFJlcXVlc3RcbiAgYXBwcm92YWxTdGF0dXM/OiAncGVuZGluZycgfCAnYXBwcm92ZWQnIHwgJ3JlamVjdGVkJ1xuICBwcm9qZWN0TWV0YWRhdGE/OiB7XG4gICAgaXNfZGVsZXRlZD86IGJvb2xlYW4gfCBudWxsXG4gIH1cbiAgLyoqXG4gICAqIEVudGlkYWRlcyBtZW5jaW9uYWRhcyBjb24gYEBgIGVuIEVTRSBtZW5zYWplIHB1bnR1YWwuIE5vIHNlIHByb3BhZ2EgYWxcbiAgICogY29udGV4dG8gZ2xvYmFsIG5pIGEgb3Ryb3MgdHVybm9zOyBzw7NsbyB2aXZlIGFjw6EgcGFyYSBxdWUgZWwgcmVuZGVyZXJcbiAgICogcHVlZGEgcGludGFyIGNoaXBzIHkgcGFyYSBtYW5kYXJsbyBhbCBvcmNoZXN0cmF0b3IgdsOtYSBtZXRhZGF0YS5cbiAgICovXG4gIGNvbnRleHRNZXNzYWdlPzogQ29udGV4dE1lc3NhZ2VcbiAgcmVhc29uaW5nPzogUmVhc29uaW5nVHJhY2UgfCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIENoYXRNZXNzYWdlSXRlbSA9IHtcbiAgY2hhdElkOiBzdHJpbmdcbiAgY2hhdFN0YXR1czogc3RyaW5nXG4gIGxhc3RRdWVzdGlvbjogc3RyaW5nXG4gIGxhc3RRdWVzdGlvbkRhdGU6IHN0cmluZ1xuICBtZXNzYWdlSWQ6IHN0cmluZ1xuICBxQW5zd2VyczogbnVtYmVyXG4gIGdlbmVyYWxSYXRpbmc6IG51bWJlclxuICB1c2VySWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZUl0ZW1SZXNwb25zZSA9IHtcbiAgYWdlbnRfaWQ6IHN0cmluZ1xuICB1c2VyX2lkOiBzdHJpbmdcbiAgYW5zd2VyOiBzdHJpbmdcbiAgZGF0ZTogc3RyaW5nXG4gIHRpbWVzdGFtcDogc3RyaW5nXG4gIHF1ZXN0aW9uOiBzdHJpbmdcbiAgd2FzX2hlbHBmdWw6IGJvb2xlYW4gfCBudWxsXG4gIG1lc3NhZ2VfaWQ6IHN0cmluZ1xuICBtZW1vcnlfc2Vzc2lvbl9pZDogc3RyaW5nXG4gIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gIHN1Z2dlc3RfcmVwbHk/OiBzdHJpbmdbXSB8IG51bGxcbiAgaXNfY2FuY2VsbGVkPzogYm9vbGVhblxuICByZWFzb25pbmc/OiBSZWFzb25pbmdUcmFjZVBheWxvYWQgfCBudWxsXG4gIHByb2plY3RfbWV0YWRhdGE/OiB7XG4gICAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGlzX2RlbGV0ZWQ/OiBib29sZWFuIHwgbnVsbFxuICB9XG4gIGNsaWVudF9tZXRhZGF0YT86IHtcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgdGFza19tZXRhZGF0YT86IHtcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgcHJvamVjdF9pZD86IG51bWJlclxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgc291cmNlcz86IHsgc291cmNlOiBzdHJpbmc7IHJlZmVyZW5jZTogc3RyaW5nIH1bXVxuICBzdGF0dXM/OiBzdHJpbmdcbiAgcGVuZGluZ19hcHByb3ZhbD86IEJhY2tlbmRQZW5kaW5nQXBwcm92YWxcbiAgdGhyZWFkX2lkPzogc3RyaW5nXG4gIC8qKiBTZXQgZGUgZW50aWRhZGVzIG1lbmNpb25hZGFzIGNvbiBgQGAgcXVlIGVsIHVzdWFyaW8gZW52acOzIGVuIGVzZSBtZW5zYWplICovXG4gIGNvbnRleHRfbWVzc2FnZT86IENvbnRleHRNZXNzYWdlXG59XG5cbmV4cG9ydCB0eXBlIENoYXRNZXNzYWdlc1Jlc3BvbnNlU2NoZW1hID0ge1xuICBpdGVtczogQ2hhdE1lc3NhZ2VJdGVtUmVzcG9uc2VbXVxuICBsYXN0X2V2YWx1YXRlZF9rZXk6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRIaXN0b3J5IHtcbiAgY29udGVudDogc3RyaW5nXG4gIHJvbGU6IENoYXRIaXN0b3J5Um9sZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRJdGVtUmVzcG9uc2Uge1xuICBhZ2VudF9uYW1lOiBzdHJpbmdcbiAgYWdlbnRfaWQ6IG51bWJlclxuICBhZ2VudF90eXBlPzogc3RyaW5nXG4gIGVtb2ppOiBzdHJpbmcgfCBudWxsXG4gIGlkOiBudW1iZXJcbiAgbGFzdF9xdWVzdGlvbjogc3RyaW5nXG4gIGxhc3RfcXVlc3Rpb25fZGF0ZTogc3RyaW5nXG4gIHNlc3Npb25fZXh0ZXJuYWxfaWQ6IHN0cmluZ1xuICB0aXRsZTogc3RyaW5nIHwgbnVsbFxuICBpc19yZWFkPzogYm9vbGVhblxuICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICBwcm9qZWN0X21ldGFkYXRhPzoge1xuICAgIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgfVxuICBjbGllbnRfbWV0YWRhdGE/OiB7XG4gICAgaWQ6IG51bWJlclxuICAgIG5hbWU6IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdHNSZXNwb25zZVNjaGVtYSB7XG4gIGRhdGE6IENoYXRJdGVtUmVzcG9uc2VbXVxuICBoYXNfbW9yZTogYm9vbGVhblxuICBuZXh0X29mZnNldDogc3RyaW5nIHwgbnVsbFxuICB1bnJlYWRfY291bnQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYXNrSW5mbyB7XG4gIGlkOiBzdHJpbmdcbiAgdGl0bGU6IHN0cmluZ1xuICB1cmw6IHN0cmluZ1xuICBwcm9qZWN0TmFtZT86IHN0cmluZ1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFxQ0EsV0FBWUEsZUFBZSwwQkFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBQSxPQUFmQSxlQUFlO0FBQUE7O0FBMEIzQiIsImlnbm9yZUxpc3QiOltdfQ==
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGF0SGlzdG9yeVJvbGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvQ2hhdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgUmVhc29uaW5nVHJhY2UsIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB9IGZyb20gJy4vcmVhc29uaW5nJ1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0Q29tcGFjdGlvbiB9IGZyb20gJy4vY29udGV4dENvbXBhY3Rpb24nXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi9Qcm9qZWN0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4vY29udGV4dE1lbnRpb24nXG5cbmV4cG9ydCB0eXBlIENoYXRJdGVtID0ge1xuICBjaGF0X2lkOiBzdHJpbmdcbiAgY2hhdF9zdGF0dXM6IHN0cmluZ1xuICBsYXN0X3F1ZXN0aW9uOiBzdHJpbmdcbiAgbGFzdF9xdWVzdGlvbl9kYXRlOiBzdHJpbmdcbiAgbWVzc2FnZV9pZDogc3RyaW5nXG4gIHFfYW5zd2VyczogbnVtYmVyXG4gIGdlbmVyYWxfcmF0aW5nOiBudW1iZXJcbiAgdXNlcl9pZDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIENoYXRSZXNwb25zZSA9IHtcbiAgaXRlbXM6IENoYXRJdGVtW11cbiAgbGFzdF9ldmFsdWF0ZWRfa2V5OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ2hhdCA9IHtcbiAgaWQ6IHN0cmluZ1xuICB0aXRsZTogc3RyaW5nXG4gIGRhdGU6IERhdGVcbiAgYWdlbnRfdHlwZT86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZVVzZXIgPSB7XG4gIGlkOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGF2YXRhcj86IHN0cmluZ1xuICBhdmF0YXJJY29uPzogUmVhY3ROb2RlXG59XG5cbmV4cG9ydCBlbnVtIENoYXRIaXN0b3J5Um9sZSB7XG4gIFVTRVIgPSAndXNlcicsXG4gIEFTU0lTVEFOVCA9ICdhc3Npc3RhbnQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlbmRpbmdBY3Rpb24ge1xuICB0b29sX25hbWU6IHN0cmluZ1xuICB0b29sX2NhbGxfaWQ6IHN0cmluZ1xuICB0b29sX2FyZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBhbnlbXVxuICB0aHJlYWRfaWQ6IHN0cmluZyAvLyBFYWNoIGFjdGlvbiBoYXMgaXRzIG93biB1bmlxdWUgdGhyZWFkX2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwcm92YWxSZXF1ZXN0IHtcbiAgdHlwZTogJ2FwcHJvdmFsX3JlcXVpcmVkJ1xuICBwZW5kaW5nX2FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXVxuICB0b3RhbF9hY3Rpb25zOiBudW1iZXJcbiAgb3JpZ2luYWxfdGhyZWFkX2lkOiBzdHJpbmcgLy8gT3JpZ2luYWwgY2hlY2twb2ludCB0aHJlYWRfaWRcbiAgc2Vzc2lvbl9pZDogc3RyaW5nXG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gIG1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZD86IGJvb2xlYW5cbiAgd2FybmluZ19tZXNzYWdlPzogc3RyaW5nXG4gIGF1dG9fYXBwcm92ZWQ/OiBib29sZWFuXG4gIGFwcHJvdmFsX3N0YXR1cz86ICdwZW5kaW5nJyB8ICdhcHByb3ZlZCdcbiAgcmVhc29uaW5nPzogUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbFxufVxuXG4vLyBCYWNrZW5kIHBlbmRpbmdfYXBwcm92YWwgZm9ybWF0IChiZWZvcmUgdHJhbnNmb3JtYXRpb24pXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tlbmRQZW5kaW5nQXBwcm92YWwge1xuICB0eXBlOiAnYXBwcm92YWxfcmVxdWlyZWQnXG4gIHRvb2xfY2FsbF9pZDogc3RyaW5nXG4gIHRvb2xfbmFtZT86IHN0cmluZ1xuICB0b29sX2FyZ3M/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgYW55W11cbiAgb3JpZ2luYWxfdGhyZWFkX2lkOiBzdHJpbmdcbiAgc2Vzc2lvbl9pZDogc3RyaW5nXG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gIG1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZD86IGJvb2xlYW5cbiAgd2FybmluZ19tZXNzYWdlPzogc3RyaW5nXG4gIGF1dG9fYXBwcm92ZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIENoYXRNZXNzYWdlID0ge1xuICBpZDogc3RyaW5nXG4gIG1lc3NhZ2U6IHN0cmluZ1xuICBkYXRlOiBEYXRlXG4gIGlzRXJyb3I/OiBib29sZWFuXG4gIGlzX2NhbmNlbGxlZD86IGJvb2xlYW5cbiAgaXNGcm9udGVuZENhbmNlbGxlZD86IGJvb2xlYW5cbiAgdXNlcjogQ2hhdE1lc3NhZ2VVc2VyXG4gIHByb2plY3RJZD86IG51bWJlciB8IHN0cmluZ1xuICBwcm9qZWN0TmFtZT86IHN0cmluZ1xuICBjbGllbnRJZD86IG51bWJlciB8IHN0cmluZ1xuICBjbGllbnROYW1lPzogc3RyaW5nXG4gIGlzQ2hhbmdlUHJvamVjdD86IGJvb2xlYW5cbiAgcHJvamVjdD86IFByb2plY3RcbiAgYWdlbnRJZD86IHN0cmluZ1xuICBvcHRpb25zPzoge1xuICAgIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgICBuYW1lPzogc3RyaW5nXG4gIH1bXVxuICByb2xlPzogQ2hhdEhpc3RvcnlSb2xlXG4gIHNvdXJjZXM/OiBhbnlcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIHdhc0hlbHBmdWw/OiBib29sZWFuIHwgbnVsbFxuICBtZW1vcnlTZXNzaW9uSWQ/OiBzdHJpbmdcbiAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGxcbiAgLyoqIFRyYXMgYXByb2JhciBjcmVhdGVfYWdlbnQ6IGFjY2lvbmVzIHLDoXBpZGFzIGVuIGVsIG1lbnNhamUgZmluYWw7IHJlcXVpZXJlIGFnZW50SWQgZGV0ZWN0YWRvIGVuIGVsIHRleHRvICovXG4gIGNyZWF0ZUFnZW50Rm9sbG93VXA/OiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgbnVsbFxuICBhcHByb3ZhbD86IEFwcHJvdmFsUmVxdWVzdFxuICBhcHByb3ZhbFN0YXR1cz86ICdwZW5kaW5nJyB8ICdhcHByb3ZlZCcgfCAncmVqZWN0ZWQnXG4gIHByb2plY3RNZXRhZGF0YT86IHtcbiAgICBpc19kZWxldGVkPzogYm9vbGVhbiB8IG51bGxcbiAgfVxuICAvKipcbiAgICogRW50aWRhZGVzIG1lbmNpb25hZGFzIGNvbiBgQGAgZW4gRVNFIG1lbnNhamUgcHVudHVhbC4gTm8gc2UgcHJvcGFnYSBhbFxuICAgKiBjb250ZXh0byBnbG9iYWwgbmkgYSBvdHJvcyB0dXJub3M7IHPDs2xvIHZpdmUgYWPDoSBwYXJhIHF1ZSBlbCByZW5kZXJlclxuICAgKiBwdWVkYSBwaW50YXIgY2hpcHMgeSBwYXJhIG1hbmRhcmxvIGFsIG9yY2hlc3RyYXRvciB2w61hIG1ldGFkYXRhLlxuICAgKi9cbiAgY29udGV4dE1lc3NhZ2U/OiBDb250ZXh0TWVzc2FnZVxuICByZWFzb25pbmc/OiBSZWFzb25pbmdUcmFjZSB8IG51bGxcbiAgLyoqIENvbXBhY3RhY2nDs24gZGUgZXN0ZSB0dXJubywgcGVyc2lzdGlkYS4gRWwgc3RvcmUgZW4gdml2byBwaXNhIGVzdG8gbWllbnRyYXMgc3RyZW1lYS4gKi9cbiAgY29tcGFjdGlvbj86IENvbnRleHRDb21wYWN0aW9uIHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZUl0ZW0gPSB7XG4gIGNoYXRJZDogc3RyaW5nXG4gIGNoYXRTdGF0dXM6IHN0cmluZ1xuICBsYXN0UXVlc3Rpb246IHN0cmluZ1xuICBsYXN0UXVlc3Rpb25EYXRlOiBzdHJpbmdcbiAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgcUFuc3dlcnM6IG51bWJlclxuICBnZW5lcmFsUmF0aW5nOiBudW1iZXJcbiAgdXNlcklkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ2hhdE1lc3NhZ2VJdGVtUmVzcG9uc2UgPSB7XG4gIGFnZW50X2lkOiBzdHJpbmdcbiAgdXNlcl9pZDogc3RyaW5nXG4gIGFuc3dlcjogc3RyaW5nXG4gIGRhdGU6IHN0cmluZ1xuICB0aW1lc3RhbXA6IHN0cmluZ1xuICBxdWVzdGlvbjogc3RyaW5nXG4gIHdhc19oZWxwZnVsOiBib29sZWFuIHwgbnVsbFxuICBtZXNzYWdlX2lkOiBzdHJpbmdcbiAgbWVtb3J5X3Nlc3Npb25faWQ6IHN0cmluZ1xuICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbFxuICBzdWdnZXN0X3JlcGx5Pzogc3RyaW5nW10gfCBudWxsXG4gIGlzX2NhbmNlbGxlZD86IGJvb2xlYW5cbiAgcmVhc29uaW5nPzogUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbFxuICBwcm9qZWN0X21ldGFkYXRhPzoge1xuICAgIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBpc19kZWxldGVkPzogYm9vbGVhbiB8IG51bGxcbiAgfVxuICBjbGllbnRfbWV0YWRhdGE/OiB7XG4gICAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICB9XG4gIHRhc2tfbWV0YWRhdGE/OiB7XG4gICAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICB9XG4gIHByb2plY3RfaWQ/OiBudW1iZXJcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIHNvdXJjZXM/OiB7IHNvdXJjZTogc3RyaW5nOyByZWZlcmVuY2U6IHN0cmluZyB9W11cbiAgc3RhdHVzPzogc3RyaW5nXG4gIHBlbmRpbmdfYXBwcm92YWw/OiBCYWNrZW5kUGVuZGluZ0FwcHJvdmFsXG4gIHRocmVhZF9pZD86IHN0cmluZ1xuICAvKiogU2V0IGRlIGVudGlkYWRlcyBtZW5jaW9uYWRhcyBjb24gYEBgIHF1ZSBlbCB1c3VhcmlvIGVudmnDsyBlbiBlc2UgbWVuc2FqZSAqL1xuICBjb250ZXh0X21lc3NhZ2U/OiBDb250ZXh0TWVzc2FnZVxufVxuXG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZXNSZXNwb25zZVNjaGVtYSA9IHtcbiAgaXRlbXM6IENoYXRNZXNzYWdlSXRlbVJlc3BvbnNlW11cbiAgbGFzdF9ldmFsdWF0ZWRfa2V5OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0SGlzdG9yeSB7XG4gIGNvbnRlbnQ6IHN0cmluZ1xuICByb2xlOiBDaGF0SGlzdG9yeVJvbGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0SXRlbVJlc3BvbnNlIHtcbiAgYWdlbnRfbmFtZTogc3RyaW5nXG4gIGFnZW50X2lkOiBudW1iZXJcbiAgYWdlbnRfdHlwZT86IHN0cmluZ1xuICBlbW9qaTogc3RyaW5nIHwgbnVsbFxuICBpZDogbnVtYmVyXG4gIGxhc3RfcXVlc3Rpb246IHN0cmluZ1xuICBsYXN0X3F1ZXN0aW9uX2RhdGU6IHN0cmluZ1xuICBzZXNzaW9uX2V4dGVybmFsX2lkOiBzdHJpbmdcbiAgdGl0bGU6IHN0cmluZyB8IG51bGxcbiAgaXNfcmVhZD86IGJvb2xlYW5cbiAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgcHJvamVjdF9tZXRhZGF0YT86IHtcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgY2xpZW50X21ldGFkYXRhPzoge1xuICAgIGlkOiBudW1iZXJcbiAgICBuYW1lOiBzdHJpbmdcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRzUmVzcG9uc2VTY2hlbWEge1xuICBkYXRhOiBDaGF0SXRlbVJlc3BvbnNlW11cbiAgaGFzX21vcmU6IGJvb2xlYW5cbiAgbmV4dF9vZmZzZXQ6IHN0cmluZyB8IG51bGxcbiAgdW5yZWFkX2NvdW50PzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFza0luZm8ge1xuICBpZDogc3RyaW5nXG4gIHRpdGxlOiBzdHJpbmdcbiAgdXJsOiBzdHJpbmdcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBc0NBLFdBQVlBLGVBQWUsMEJBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQUEsT0FBZkEsZUFBZTtBQUFBOztBQTBCM0IiLCJpZ25vcmVMaXN0IjpbXX0=