genassist-chat-react 1.0.17 → 1.0.19

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.
@@ -5,6 +5,7 @@ export declare class ChatService {
5
5
  private metadata;
6
6
  private conversationId;
7
7
  private conversationCreateTime;
8
+ private guestToken;
8
9
  private isFinalized;
9
10
  private webSocket;
10
11
  private messageHandler;
@@ -21,6 +22,10 @@ export declare class ChatService {
21
22
  private agentId;
22
23
  constructor(baseUrl: string, apiKey: string, metadata?: Record<string, any>, tenant?: string);
23
24
  private getStorageKey;
25
+ /**
26
+ * Get headers for API requests, including authorization if guest token is available
27
+ */
28
+ private getHeaders;
24
29
  setMessageHandler(handler: (message: ChatMessage) => void): void;
25
30
  setTakeoverHandler(handler: () => void): void;
26
31
  setFinalizedHandler(handler: () => void): void;
@@ -51,6 +51,7 @@ var ChatService = /** @class */ (function () {
51
51
  function ChatService(baseUrl, apiKey, metadata, tenant) {
52
52
  this.conversationId = null;
53
53
  this.conversationCreateTime = null; // Track conversation start time
54
+ this.guestToken = null; // Guest token for authorization
54
55
  this.isFinalized = false;
55
56
  this.webSocket = null;
56
57
  this.messageHandler = null;
@@ -74,6 +75,25 @@ var ChatService = /** @class */ (function () {
74
75
  // Pointer to current conversation metadata for this apiKey
75
76
  return "".concat(this.storageKeyBase, ":").concat(this.apiKey);
76
77
  };
78
+ /**
79
+ * Get headers for API requests, including authorization if guest token is available
80
+ */
81
+ ChatService.prototype.getHeaders = function (contentType) {
82
+ if (contentType === void 0) { contentType = "application/json"; }
83
+ var headers = {
84
+ "x-api-key": this.apiKey,
85
+ "Content-Type": contentType,
86
+ };
87
+ // Add tenant header if provided
88
+ if (this.tenant) {
89
+ headers["x-tenant-id"] = this.tenant;
90
+ }
91
+ // Add authorization header if guest token is available
92
+ if (this.guestToken) {
93
+ headers["Authorization"] = "Bearer ".concat(this.guestToken);
94
+ }
95
+ return headers;
96
+ };
77
97
  ChatService.prototype.setMessageHandler = function (handler) {
78
98
  this.messageHandler = handler;
79
99
  };
@@ -109,10 +129,11 @@ var ChatService = /** @class */ (function () {
109
129
  savedConversation = localStorage.getItem(this.storageKeyBase);
110
130
  }
111
131
  if (savedConversation) {
112
- var _a = JSON.parse(savedConversation), conversationId = _a.conversationId, createTime = _a.createTime, isFinalized = _a.isFinalized, possibleQueries = _a.possibleQueries, welcomeData = _a.welcomeData, thinkingConfig = _a.thinkingConfig, agentId = _a.agentId;
132
+ var _a = JSON.parse(savedConversation), conversationId = _a.conversationId, createTime = _a.createTime, isFinalized = _a.isFinalized, possibleQueries = _a.possibleQueries, welcomeData = _a.welcomeData, thinkingConfig = _a.thinkingConfig, agentId = _a.agentId, guestToken = _a.guestToken;
113
133
  this.conversationId = conversationId;
114
134
  this.conversationCreateTime = createTime;
115
135
  this.isFinalized = isFinalized || false;
136
+ this.guestToken = guestToken || null;
116
137
  this.possibleQueries = Array.isArray(possibleQueries)
117
138
  ? possibleQueries
118
139
  : [];
@@ -157,6 +178,7 @@ var ChatService = /** @class */ (function () {
157
178
  : this.welcomeData.imageUrl || null }),
158
179
  thinkingConfig: this.thinkingConfig,
159
180
  agentId: this.agentId,
181
+ guestToken: this.guestToken,
160
182
  };
161
183
  localStorage.setItem(this.getStorageKey(), JSON.stringify(conversationData));
162
184
  }
@@ -177,6 +199,7 @@ var ChatService = /** @class */ (function () {
177
199
  // Clear the conversation ID
178
200
  this.conversationId = null;
179
201
  this.conversationCreateTime = null;
202
+ this.guestToken = null;
180
203
  this.isFinalized = false;
181
204
  // Clear possible queries
182
205
  this.possibleQueries = [];
@@ -229,7 +252,7 @@ var ChatService = /** @class */ (function () {
229
252
  requestBody.metadata = this.metadata;
230
253
  }
231
254
  return [4 /*yield*/, axios.post("".concat(this.baseUrl, "/api/conversations/in-progress/start"), requestBody, {
232
- headers: __assign({ "x-api-key": this.apiKey, "Content-Type": "application/json" }, (this.tenant ? { "X-Tenant-Id": this.tenant } : {})),
255
+ headers: this.getHeaders(),
233
256
  })];
234
257
  case 1:
235
258
  response = _a.sent();
@@ -238,6 +261,8 @@ var ChatService = /** @class */ (function () {
238
261
  this.conversationCreateTime = response.data.create_time
239
262
  ? response.data.create_time / 1000
240
263
  : Date.now() / 1000;
264
+ // Store guest token if provided
265
+ this.guestToken = response.data.guest_token || null;
241
266
  this.isFinalized = false;
242
267
  // Store possible queries if available
243
268
  if (response.data.agent_possible_queries &&
@@ -329,7 +354,7 @@ var ChatService = /** @class */ (function () {
329
354
  requestBody.metadata = mergedMetadata;
330
355
  }
331
356
  return [4 /*yield*/, axios.patch("".concat(this.baseUrl, "/api/conversations/in-progress/update/").concat(this.conversationId), requestBody, {
332
- headers: __assign({ "x-api-key": this.apiKey, "Content-Type": "application/json" }, (this.tenant ? { "X-Tenant-Id": this.tenant } : {})),
357
+ headers: this.getHeaders(),
333
358
  })];
334
359
  case 2:
335
360
  _a.sent();
@@ -376,7 +401,7 @@ var ChatService = /** @class */ (function () {
376
401
  case 1:
377
402
  _a.trys.push([1, 3, , 4]);
378
403
  return [4 /*yield*/, axios.post("".concat(this.baseUrl, "/api/genagent/knowledge/upload-chat-file"), formData, {
379
- headers: __assign({ "x-api-key": this.apiKey, "Content-Type": "multipart/form-data" }, (this.tenant ? { "X-Tenant-Id": this.tenant } : {})),
404
+ headers: this.getHeaders("multipart/form-data"),
380
405
  })];
381
406
  case 2:
382
407
  response = _a.sent();
@@ -402,7 +427,7 @@ var ChatService = /** @class */ (function () {
402
427
  var wsUrl = "".concat(this.baseUrl.replace("http", "ws"), "/api/conversations/ws/").concat(this.conversationId, "?api_key=").concat(this.apiKey, "&lang=en&topics=message&topics=takeover&topics=finalize");
403
428
  // Add tenant as query parameter if provided
404
429
  if (this.tenant) {
405
- wsUrl += "&X-Tenant-Id=".concat(encodeURIComponent(this.tenant));
430
+ wsUrl += "&x-tenant-id=".concat(encodeURIComponent(this.tenant));
406
431
  }
407
432
  // Use native browser WebSocket factory
408
433
  this.webSocket = createWebSocket(wsUrl);
@@ -525,7 +550,7 @@ var ChatService = /** @class */ (function () {
525
550
  case 0:
526
551
  _a.trys.push([0, 2, , 3]);
527
552
  return [4 /*yield*/, axios.get("".concat(this.baseUrl, "/api/genagent/agents/configs/").concat(agentId, "/welcome-image"), {
528
- headers: __assign({ "x-api-key": this.apiKey }, (this.tenant ? { "X-Tenant-Id": this.tenant } : {})),
553
+ headers: this.getHeaders(),
529
554
  responseType: "blob",
530
555
  })];
531
556
  case 1:
@@ -567,7 +592,7 @@ var ChatService = /** @class */ (function () {
567
592
  payload.feedback_message = feedback_message;
568
593
  }
569
594
  return [4 /*yield*/, axios.patch(url, payload, {
570
- headers: __assign({ "x-api-key": this.apiKey, "Content-Type": "application/json" }, (this.tenant ? { "X-Tenant-Id": this.tenant } : {})),
595
+ headers: this.getHeaders(),
571
596
  })];
572
597
  case 2:
573
598
  _c.sent();
@@ -595,4 +620,4 @@ var ChatService = /** @class */ (function () {
595
620
  return ChatService;
596
621
  }());
597
622
  export { ChatService };
598
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvY2hhdFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFRMUIsT0FBTyxFQUNMLGVBQWUsRUFDZix5QkFBeUIsR0FDMUIsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QjtJQXVCRSxxQkFDRSxPQUFlLEVBQ2YsTUFBYyxFQUNkLFFBQThCLEVBQzlCLE1BQWU7UUF2QlQsbUJBQWMsR0FBa0IsSUFBSSxDQUFDO1FBQ3JDLDJCQUFzQixHQUFrQixJQUFJLENBQUMsQ0FBQyxnQ0FBZ0M7UUFDOUUsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsY0FBUyxHQUFxQixJQUFJLENBQUM7UUFDbkMsbUJBQWMsR0FBNEMsSUFBSSxDQUFDO1FBQy9ELG9CQUFlLEdBQXdCLElBQUksQ0FBQztRQUM1QyxxQkFBZ0IsR0FBd0IsSUFBSSxDQUFDO1FBQzdDLDJCQUFzQixHQUVuQixJQUFJLENBQUM7UUFDUix1QkFBa0IsR0FBOEMsSUFBSSxDQUFDO1FBQ3JFLG1CQUFjLEdBQUcsd0JBQXdCLENBQUM7UUFDMUMsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFDL0IsZ0JBQVcsR0FBcUIsRUFBRSxDQUFDO1FBQ25DLG1CQUFjLEdBQXdCLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDckUscUJBQWdCLEdBQWtCLElBQUksQ0FBQyxDQUFDLHFCQUFxQjtRQVVuRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFD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QUssQ0FBQyxRQUFRLDBDQUFFLE1BQU07eUJBQy9CLENBQUMsQ0FBQzt3QkFDSCxNQUFNLE9BQUssQ0FBQzs7Ozs7S0FFZjtJQUVELDRFQUE0RTtJQUNwRSw2Q0FBdUIsR0FBL0IsVUFBZ0MsT0FBb0I7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCw2QkFDSyxPQUFPLEtBQ1YsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUM1RCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLElBQ3hEO0lBQ0osQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQXRuQkQsSUFzbkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHtcbiAgQ2hhdE1lc3NhZ2UsXG4gIFN0YXJ0Q29udmVyc2F0aW9uUmVzcG9uc2UsXG4gIEF0dGFjaG1lbnQsXG4gIEFnZW50VGhpbmtpbmdDb25maWcsXG4gIEFnZW50V2VsY29tZURhdGEsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlV2ViU29ja2V0LFxuICBjcmVhdGVXZWJTb2NrZXREaWFnbm9zdGljLFxufSBmcm9tIFwiLi4vdXRpbHMvd2Vic29ja2V0XCI7XG5cbmV4cG9ydCBjbGFzcyBDaGF0U2VydmljZSB7XG4gIHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuICBwcml2YXRlIGFwaUtleTogc3RyaW5nO1xuICBwcml2YXRlIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjb252ZXJzYXRpb25DcmVhdGVUaW1lOiBudW1iZXIgfCBudWxsID0gbnVsbDsgLy8gVHJhY2sgY29udmVyc2F0aW9uIHN0YXJ0IHRpbWVcbiAgcHJpdmF0ZSBpc0ZpbmFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIHdlYlNvY2tldDogV2ViU29ja2V0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbWVzc2FnZUhhbmRsZXI6ICgobWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdGFrZW92ZXJIYW5kbGVyOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBmaW5hbGl6ZWRIYW5kbGVyOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjb25uZWN0aW9uU3RhdGVIYW5kbGVyOlxuICAgIHwgKChzdGF0ZTogXCJjb25uZWN0aW5nXCIgfCBcImNvbm5lY3RlZFwiIHwgXCJkaXNjb25uZWN0ZWRcIikgPT4gdm9pZClcbiAgICB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHdlbGNvbWVEYXRhSGFuZGxlcjogKChkYXRhOiBBZ2VudFdlbGNvbWVEYXRhKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0b3JhZ2VLZXlCYXNlID0gXCJnZW5hc3Npc3RfY29udmVyc2F0aW9uXCI7XG4gIHByaXZhdGUgcG9zc2libGVRdWVyaWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHdlbGNvbWVEYXRhOiBBZ2VudFdlbGNvbWVEYXRhID0ge307XG4gIHByaXZhdGUgdGhpbmtpbmdDb25maWc6IEFnZW50VGhpbmtpbmdDb25maWcgPSB7IHBocmFzZXM6IFtdLCBkZWxheU1zOiAxMDAwIH07XG4gIHByaXZhdGUgd2VsY29tZU9iamVjdFVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIHRvIHJldm9rZSBvbiByZXNldFxuICBwcml2YXRlIHRlbmFudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGFnZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgYXBpS2V5OiBzdHJpbmcsXG4gICAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHRlbmFudD86IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsLmVuZHNXaXRoKFwiL1wiKSA/IGJhc2VVcmwuc2xpY2UoMCwgLTEpIDogYmFzZVVybDtcbiAgICB0aGlzLmFwaUtleSA9IGFwaUtleTtcbiAgICB0aGlzLm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gICAgdGhpcy50ZW5hbnQgPSB0ZW5hbnQ7XG4gICAgLy8gVHJ5IHRvIGxvYWQgYSBzYXZlZCBjb252ZXJzYXRpb24gZm9yIHRoaXMgYXBpS2V5IGZyb20gbG9jYWxTdG9yYWdlXG4gICAgdGhpcy5sb2FkU2F2ZWRDb252ZXJzYXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RvcmFnZUtleSgpOiBzdHJpbmcge1xuICAgIC8vIFBvaW50ZXIgdG8gY3VycmVudCBjb252ZXJzYXRpb24gbWV0YWRhdGEgZm9yIHRoaXMgYXBpS2V5XG4gICAgcmV0dXJuIGAke3RoaXMuc3RvcmFnZUtleUJhc2V9OiR7dGhpcy5hcGlLZXl9YDtcbiAgfVxuXG4gIHNldE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXI6IChtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4gdm9pZCkge1xuICAgIHRoaXMubWVzc2FnZUhhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgc2V0VGFrZW92ZXJIYW5kbGVyKGhhbmRsZXI6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLnRha2VvdmVySGFuZGxlciA9IGhhbmRsZXI7XG4gIH1cblxuICBzZXRGaW5hbGl6ZWRIYW5kbGVyKGhhbmRsZXI6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLmZpbmFsaXplZEhhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgc2V0Q29ubmVjdGlvblN0YXRlSGFuZGxlcihcbiAgICBoYW5kbGVyOiAoc3RhdGU6IFwiY29ubmVjdGluZ1wiIHwgXCJjb25uZWN0ZWRcIiB8IFwiZGlzY29ubmVjdGVkXCIpID0+IHZvaWRcbiAgKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIHNldFdlbGNvbWVEYXRhSGFuZGxlcihoYW5kbGVyOiAoKGRhdGE6IEFnZW50V2VsY29tZURhdGEpID0+IHZvaWQpIHwgbnVsbCkge1xuICAgIHRoaXMud2VsY29tZURhdGFIYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldFBvc3NpYmxlUXVlcmllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucG9zc2libGVRdWVyaWVzO1xuICB9XG5cbiAgZ2V0V2VsY29tZURhdGEoKTogQWdlbnRXZWxjb21lRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMud2VsY29tZURhdGE7XG4gIH1cblxuICBnZXRUaGlua2luZ0NvbmZpZygpOiBBZ2VudFRoaW5raW5nQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy50aGlua2luZ0NvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEgc2F2ZWQgY29udmVyc2F0aW9uIElEIGZyb20gbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwcml2YXRlIGxvYWRTYXZlZENvbnZlcnNhdGlvbigpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbGV0IHNhdmVkQ29udmVyc2F0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5nZXRTdG9yYWdlS2V5KCkpO1xuICAgICAgLy8gQmFja3dhcmQtY29tcGF0OiBjaGVjayBvbGQgdW5zY29wZWQga2V5IGlmIHNjb3BlZCBvbmUgbWlzc2luZ1xuICAgICAgaWYgKCFzYXZlZENvbnZlcnNhdGlvbikge1xuICAgICAgICBzYXZlZENvbnZlcnNhdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleUJhc2UpO1xuICAgICAgfVxuICAgICAgaWYgKHNhdmVkQ29udmVyc2F0aW9uKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBjb252ZXJzYXRpb25JZCxcbiAgICAgICAgICBjcmVhdGVUaW1lLFxuICAgICAgICAgIGlzRmluYWxpemVkLFxuICAgICAgICAgIHBvc3NpYmxlUXVlcmllcyxcbiAgICAgICAgICB3ZWxjb21lRGF0YSxcbiAgICAgICAgICB0aGlua2luZ0NvbmZpZyxcbiAgICAgICAgICBhZ2VudElkLFxuICAgICAgICB9ID0gSlNPTi5wYXJzZShzYXZlZENvbnZlcnNhdGlvbik7XG4gICAgICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSBjb252ZXJzYXRpb25JZDtcbiAgICAgICAgdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lID0gY3JlYXRlVGltZTtcbiAgICAgICAgdGhpcy5pc0ZpbmFsaXplZCA9IGlzRmluYWxpemVkIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLnBvc3NpYmxlUXVlcmllcyA9IEFycmF5LmlzQXJyYXkocG9zc2libGVRdWVyaWVzKVxuICAgICAgICAgID8gcG9zc2libGVRdWVyaWVzXG4gICAgICAgICAgOiBbXTtcbiAgICAgICAgdGhpcy53ZWxjb21lRGF0YSA9IHdlbGNvbWVEYXRhIHx8IHt9O1xuICAgICAgICBpZiAoIXRoaXMud2VsY29tZURhdGEucG9zc2libGVRdWVyaWVzKSB7XG4gICAgICAgICAgdGhpcy53ZWxjb21lRGF0YS5wb3NzaWJsZVF1ZXJpZXMgPSB0aGlzLnBvc3NpYmxlUXVlcmllcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoaW5raW5nQ29uZmlnID0ge1xuICAgICAgICAgIHBocmFzZXM6ICh0aGlua2luZ0NvbmZpZyAmJiB0aGlua2luZ0NvbmZpZy5waHJhc2VzKSB8fCBbXSxcbiAgICAgICAgICBkZWxheU1zOlxuICAgICAgICAgICAgdGhpbmtpbmdDb25maWcgJiYgdHlwZW9mIHRoaW5raW5nQ29uZmlnLmRlbGF5TXMgPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgICAgPyB0aGlua2luZ0NvbmZpZy5kZWxheU1zXG4gICAgICAgICAgICAgIDogMTAwMCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hZ2VudElkID0gYWdlbnRJZDtcbiAgICAgICAgaWYgKCF0aGlzLndlbGNvbWVEYXRhLmltYWdlVXJsICYmIHRoaXMuYWdlbnRJZCkge1xuICAgICAgICAgIHRoaXMuZmV0Y2hXZWxjb21lSW1hZ2UodGhpcy5hZ2VudElkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy53ZWxjb21lRGF0YUhhbmRsZXIpIHtcbiAgICAgICAgICB0aGlzLndlbGNvbWVEYXRhSGFuZGxlcih0aGlzLndlbGNvbWVEYXRhKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgY3VycmVudCBjb252ZXJzYXRpb24gSUQgdG8gbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwcml2YXRlIHNhdmVDb252ZXJzYXRpb24oKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmNvbnZlcnNhdGlvbklkICYmIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSkge1xuICAgICAgICBjb25zdCBjb252ZXJzYXRpb25EYXRhID0ge1xuICAgICAgICAgIGNvbnZlcnNhdGlvbklkOiB0aGlzLmNvbnZlcnNhdGlvbklkLFxuICAgICAgICAgIGNyZWF0ZVRpbWU6IHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSxcbiAgICAgICAgICBpc0ZpbmFsaXplZDogdGhpcy5pc0ZpbmFsaXplZCxcbiAgICAgICAgICBwb3NzaWJsZVF1ZXJpZXM6IHRoaXMucG9zc2libGVRdWVyaWVzLFxuICAgICAgICAgIHdlbGNvbWVEYXRhOiB7XG4gICAgICAgICAgICAuLi50aGlzLndlbGNvbWVEYXRhLFxuICAgICAgICAgICAgaW1hZ2VVcmw6XG4gICAgICAgICAgICAgIHRoaXMud2VsY29tZU9iamVjdFVybCAmJlxuICAgICAgICAgICAgICB0aGlzLndlbGNvbWVEYXRhLmltYWdlVXJsICYmXG4gICAgICAgICAgICAgIHRoaXMud2VsY29tZURhdGEuaW1hZ2VVcmwuc3RhcnRzV2l0aChcImJsb2I6XCIpXG4gICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgOiB0aGlzLndlbGNvbWVEYXRhLmltYWdlVXJsIHx8IG51bGwsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlua2luZ0NvbmZpZzogdGhpcy50aGlua2luZ0NvbmZpZyxcbiAgICAgICAgICBhZ2VudElkOiB0aGlzLmFnZW50SWQsXG4gICAgICAgIH07XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuZ2V0U3RvcmFnZUtleSgpLCBKU09OLnN0cmluZ2lmeShjb252ZXJzYXRpb25EYXRhKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIGlnbm9yZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgY3VycmVudCBjb252ZXJzYXRpb24gYnkgY2xlYXJpbmcgdGhlIElEIGFuZCB3ZWJzb2NrZXRcbiAgICovXG4gIHJlc2V0Q29udmVyc2F0aW9uKCk6IHZvaWQge1xuICAgIC8vIENsb3NlIHRoZSBjdXJyZW50IHdlYnNvY2tldCBjb25uZWN0aW9uIGlmIGl0IGV4aXN0c1xuICAgIGlmICh0aGlzLndlYlNvY2tldCkge1xuICAgICAgdGhpcy53ZWJTb2NrZXQuY2xvc2UoKTtcbiAgICAgIHRoaXMud2ViU29ja2V0ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBDbGVhciB0aGUgY29udmVyc2F0aW9uIElEXG4gICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IG51bGw7XG4gICAgdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lID0gbnVsbDtcbiAgICB0aGlzLmlzRmluYWxpemVkID0gZmFsc2U7XG5cbiAgICAvLyBDbGVhciBwb3NzaWJsZSBxdWVyaWVzXG4gICAgdGhpcy5wb3NzaWJsZVF1ZXJpZXMgPSBbXTtcbiAgICB0aGlzLndlbGNvbWVEYXRhID0ge307XG4gICAgdGhpcy50aGlua2luZ0NvbmZpZyA9IHsgcGhyYXNlczogW10sIGRlbGF5TXM6IDEwMDAgfTtcbiAgICBpZiAodGhpcy53ZWxjb21lT2JqZWN0VXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMud2VsY29tZU9iamVjdFVybCk7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgICB0aGlzLndlbGNvbWVPYmplY3RVcmwgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmFnZW50SWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBSZW1vdmUgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuZ2V0U3RvcmFnZUtleSgpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZXJlJ3MgYSBjdXJyZW50IGNvbnZlcnNhdGlvblxuICAgKi9cbiAgaGFzQWN0aXZlQ29udmVyc2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY29udmVyc2F0aW9uSWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiBJRFxuICAgKi9cbiAgZ2V0Q29udmVyc2F0aW9uSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29udmVyc2F0aW9uSWQ7XG4gIH1cblxuICBpc0NvbnZlcnNhdGlvbkZpbmFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0ZpbmFsaXplZDtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0Q29udmVyc2F0aW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcXVlc3RCb2R5OiBhbnkgPSB7XG4gICAgICAgIG1lc3NhZ2VzOiBbXSxcbiAgICAgICAgcmVjb3JkZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgZGF0YV9zb3VyY2VfaWQ6IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRhZGF0YSkge1xuICAgICAgICByZXF1ZXN0Qm9keS5tZXRhZGF0YSA9IHRoaXMubWV0YWRhdGE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdDxTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlPihcbiAgICAgICAgYCR7dGhpcy5iYXNlVXJsfS9hcGkvY29udmVyc2F0aW9ucy9pbi1wcm9ncmVzcy9zdGFydGAsXG4gICAgICAgIHJlcXVlc3RCb2R5LFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgXCJ4LWFwaS1rZXlcIjogdGhpcy5hcGlLZXksXG4gICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgIC4uLih0aGlzLnRlbmFudCA/IHsgXCJYLVRlbmFudC1JZFwiOiB0aGlzLnRlbmFudCB9IDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSByZXNwb25zZS5kYXRhLmNvbnZlcnNhdGlvbl9pZDtcbiAgICAgIC8vIFN0b3JlIGNvbnZlcnNhdGlvbiBjcmVhdGUgdGltZSAodXNlIGZyb20gcmVzcG9uc2UgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgY3VycmVudCB0aW1lKVxuICAgICAgdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lID0gcmVzcG9uc2UuZGF0YS5jcmVhdGVfdGltZVxuICAgICAgICA/IHJlc3BvbnNlLmRhdGEuY3JlYXRlX3RpbWUgLyAxMDAwXG4gICAgICAgIDogRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgICB0aGlzLmlzRmluYWxpemVkID0gZmFsc2U7XG5cbiAgICAgIC8vIFN0b3JlIHBvc3NpYmxlIHF1ZXJpZXMgaWYgYXZhaWxhYmxlXG4gICAgICBpZiAoXG4gICAgICAgIHJlc3BvbnNlLmRhdGEuYWdlbnRfcG9zc2libGVfcXVlcmllcyAmJlxuICAgICAgICByZXNwb25zZS5kYXRhLmFnZW50X3Bvc3NpYmxlX3F1ZXJpZXMubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucG9zc2libGVRdWVyaWVzID0gcmVzcG9uc2UuZGF0YS5hZ2VudF9wb3NzaWJsZV9xdWVyaWVzLmZpbHRlcihcbiAgICAgICAgICAocXVlcnkpID0+IHR5cGVvZiBxdWVyeSA9PT0gXCJzdHJpbmdcIiAmJiBxdWVyeS50cmltKCkubGVuZ3RoID4gMFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhbnlEYXRhOiBhbnkgPSByZXNwb25zZS5kYXRhIGFzIGFueTtcbiAgICAgIGNvbnN0IGFnZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGFueURhdGEuYWdlbnRfaWQ7XG4gICAgICB0aGlzLmFnZW50SWQgPSBhZ2VudElkO1xuICAgICAgY29uc3Qgd2VsY29tZVRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBhbnlEYXRhLmFnZW50X3dlbGNvbWVfdGl0bGU7XG4gICAgICBjb25zdCB3ZWxjb21lSW1hZ2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICAgIGFueURhdGEuYWdlbnRfd2VsY29tZV9pbWFnZV91cmw7XG4gICAgICBjb25zdCB0aGlua2luZ1BocmFzZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkID1cbiAgICAgICAgYW55RGF0YS5hZ2VudF90aGlua2luZ19waHJhc2VzO1xuICAgICAgY29uc3QgdGhpbmtpbmdEZWxheVNlYzogbnVtYmVyIHwgdW5kZWZpbmVkID1cbiAgICAgICAgYW55RGF0YS5hZ2VudF90aGlua2luZ19waHJhc2VfZGVsYXk7XG5cbiAgICAgIHRoaXMud2VsY29tZURhdGEgPSB7XG4gICAgICAgIHRpdGxlOiB3ZWxjb21lVGl0bGUgfHwgbnVsbCxcbiAgICAgICAgbWVzc2FnZTogbnVsbCxcbiAgICAgICAgaW1hZ2VVcmw6IHdlbGNvbWVJbWFnZVVybCB8fCBudWxsLFxuICAgICAgICBwb3NzaWJsZVF1ZXJpZXM6IHRoaXMucG9zc2libGVRdWVyaWVzLFxuICAgICAgfTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpbmtpbmdQaHJhc2VzKSAmJiB0aGlua2luZ1BocmFzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnRoaW5raW5nQ29uZmlnLnBocmFzZXMgPSB0aGlua2luZ1BocmFzZXM7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHRoaW5raW5nRGVsYXlTZWMgPT09IFwibnVtYmVyXCIgJiYgdGhpbmtpbmdEZWxheVNlYyA+PSAwKSB7XG4gICAgICAgIHRoaXMudGhpbmtpbmdDb25maWcuZGVsYXlNcyA9IE1hdGgubWF4KFxuICAgICAgICAgIDI1MCxcbiAgICAgICAgICBNYXRoLnJvdW5kKHRoaW5raW5nRGVsYXlTZWMgKiAxMDAwKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMud2VsY29tZURhdGEuaW1hZ2VVcmwgJiYgYWdlbnRJZCkge1xuICAgICAgICBhd2FpdCB0aGlzLmZldGNoV2VsY29tZUltYWdlKGFnZW50SWQpO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIGFnZW50IHdlbGNvbWUgbWVzc2FnZSBpZiBhdmFpbGFibGVcbiAgICAgIGlmIChyZXNwb25zZS5kYXRhLmFnZW50X3dlbGNvbWVfbWVzc2FnZSAmJiB0aGlzLm1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCkgLyAxMDAwO1xuICAgICAgICBjb25zdCB3ZWxjb21lTWVzc2FnZTogQ2hhdE1lc3NhZ2UgPSB7XG4gICAgICAgICAgY3JlYXRlX3RpbWU6IG5vdyxcbiAgICAgICAgICBzdGFydF90aW1lOiBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUsIC8vIFJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICAgICAgICAgIGVuZF90aW1lOiBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgKyAwLjAxLCAvLyBSZWxhdGl2ZSB0byBjb252ZXJzYXRpb24gc3RhcnRcbiAgICAgICAgICBzcGVha2VyOiBcImFnZW50XCIsXG4gICAgICAgICAgdGV4dDogcmVzcG9uc2UuZGF0YS5hZ2VudF93ZWxjb21lX21lc3NhZ2UsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMud2VsY29tZURhdGEubWVzc2FnZSA9IHJlc3BvbnNlLmRhdGEuYWdlbnRfd2VsY29tZV9tZXNzYWdlO1xuICAgICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyKHdlbGNvbWVNZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMud2VsY29tZURhdGFIYW5kbGVyKSB7XG4gICAgICAgIHRoaXMud2VsY29tZURhdGFIYW5kbGVyKHRoaXMud2VsY29tZURhdGEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNhdmVDb252ZXJzYXRpb24oKTtcbiAgICAgIHRoaXMuY29ubmVjdFdlYlNvY2tldCgpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuY29udmVyc2F0aW9uX2lkO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzZW5kTWVzc2FnZShcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50W10sXG4gICAgZXh0cmFNZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbnZlcnNhdGlvbklkIHx8ICF0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbnZlcnNhdGlvbiBub3Qgc3RhcnRlZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpIC8gMTAwMDtcbiAgICBjb25zdCBjaGF0TWVzc2FnZTogQ2hhdE1lc3NhZ2UgPSB7XG4gICAgICBjcmVhdGVfdGltZTogbm93LFxuICAgICAgc3RhcnRfdGltZTogbm93IC0gdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lLCAvLyBSZWxhdGl2ZSB0byBjb252ZXJzYXRpb24gc3RhcnRcbiAgICAgIGVuZF90aW1lOiBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgKyAwLjAxLCAvLyBSZWxhdGl2ZSB0byBjb252ZXJzYXRpb24gc3RhcnRcbiAgICAgIHNwZWFrZXI6IFwiY3VzdG9tZXJcIixcbiAgICAgIHRleHQ6IG1lc3NhZ2UsXG4gICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyKGNoYXRNZXNzYWdlKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdEJvZHk6IGFueSA9IHtcbiAgICAgICAgbWVzc2FnZXM6IFtjaGF0TWVzc2FnZV0sXG4gICAgICAgIHJlY29yZGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9O1xuXG4gICAgICAvLyBJbmNsdWRlIG1ldGFkYXRhXG4gICAgICBjb25zdCBtZXJnZWRNZXRhZGF0YSA9IHtcbiAgICAgICAgLi4uKHRoaXMubWV0YWRhdGEgfHwge30pLFxuICAgICAgICAuLi4oZXh0cmFNZXRhZGF0YSB8fCB7fSksXG4gICAgICB9O1xuICAgICAgaWYgKE9iamVjdC5rZXlzKG1lcmdlZE1ldGFkYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlcXVlc3RCb2R5Lm1ldGFkYXRhID0gbWVyZ2VkTWV0YWRhdGE7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGF4aW9zLnBhdGNoKFxuICAgICAgICBgJHt0aGlzLmJhc2VVcmx9L2FwaS9jb252ZXJzYXRpb25zL2luLXByb2dyZXNzL3VwZGF0ZS8ke3RoaXMuY29udmVyc2F0aW9uSWR9YCxcbiAgICAgICAgcmVxdWVzdEJvZHksXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIngtYXBpLWtleVwiOiB0aGlzLmFwaUtleSxcbiAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgLi4uKHRoaXMudGVuYW50ID8geyBcIlgtVGVuYW50LUlkXCI6IHRoaXMudGVuYW50IH0gOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIHRoZSBhZ2VudCBpbmFjdGl2ZSBlcnJvclxuICAgICAgaWYgKFxuICAgICAgICBlcnJvci5yZXNwb25zZSAmJlxuICAgICAgICBlcnJvci5yZXNwb25zZS5kYXRhICYmXG4gICAgICAgIGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3Jfa2V5ID09PSBcIkFHRU5UX0lOQUNUSVZFXCJcbiAgICAgICkge1xuICAgICAgICAvLyBDcmVhdGUgYSBjdXN0b20gbWVzc2FnZSBmb3IgdGhlIGFnZW50IGluYWN0aXZlIGVycm9yXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcbiAgICAgICAgICAgIGNyZWF0ZV90aW1lOiBub3csXG4gICAgICAgICAgICBzdGFydF90aW1lOiBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUsXG4gICAgICAgICAgICBlbmRfdGltZTogbm93IC0gdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lICsgMC4wMSxcbiAgICAgICAgICAgIHNwZWFrZXI6IFwic3BlY2lhbFwiLFxuICAgICAgICAgICAgdGV4dDogXCJUaGUgYWdlbnQgaXMgY3VycmVudGx5IG9mZmxpbmUsIHBsZWFzZSBjaGVjayBiYWNrIGxhdGVyLiBUaGFuayB5b3UhXCIsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyKGVycm9yTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRG9uJ3QgdGhyb3cgdGhlIGVycm9yIHNpbmNlIHdlIGhhbmRsZWQgaXQgd2l0aCBhIG1lc3NhZ2VcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGxvYWRGaWxlKGNoYXRJZDogc3RyaW5nLCBmaWxlOiBGaWxlKTogUHJvbWlzZTx7IGZpbGVVcmw6IHN0cmluZyB9PiB7XG4gICAgaWYgKCF0aGlzLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb252ZXJzYXRpb24gbm90IHN0YXJ0ZWRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJjaGF0X2lkXCIsIGNoYXRJZCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKFwiZmlsZVwiLCBmaWxlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3Q8eyBmaWxlVXJsOiBzdHJpbmcgfT4oXG4gICAgICAgIGAke3RoaXMuYmFzZVVybH0vYXBpL2dlbmFnZW50L2tub3dsZWRnZS91cGxvYWQtY2hhdC1maWxlYCxcbiAgICAgICAgZm9ybURhdGEsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIngtYXBpLWtleVwiOiB0aGlzLmFwaUtleSxcbiAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiLFxuICAgICAgICAgICAgLi4uKHRoaXMudGVuYW50ID8geyBcIlgtVGVuYW50LUlkXCI6IHRoaXMudGVuYW50IH0gOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBjb25uZWN0V2ViU29ja2V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLndlYlNvY2tldCkge1xuICAgICAgdGhpcy53ZWJTb2NrZXQuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29udmVyc2F0aW9uSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbnZlcnNhdGlvbiBJRCBpcyByZXF1aXJlZCBmb3IgV2ViU29ja2V0IGNvbm5lY3Rpb25cIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcikgdGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyKFwiY29ubmVjdGluZ1wiKTtcbiAgICBsZXQgd3NVcmwgPSBgJHt0aGlzLmJhc2VVcmwucmVwbGFjZShcImh0dHBcIiwgXCJ3c1wiKX0vYXBpL2NvbnZlcnNhdGlvbnMvd3MvJHtcbiAgICAgIHRoaXMuY29udmVyc2F0aW9uSWRcbiAgICB9P2FwaV9rZXk9JHtcbiAgICAgIHRoaXMuYXBpS2V5XG4gICAgfSZsYW5nPWVuJnRvcGljcz1tZXNzYWdlJnRvcGljcz10YWtlb3ZlciZ0b3BpY3M9ZmluYWxpemVgO1xuICAgIFxuICAgIC8vIEFkZCB0ZW5hbnQgYXMgcXVlcnkgcGFyYW1ldGVyIGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMudGVuYW50KSB7XG4gICAgICB3c1VybCArPSBgJlgtVGVuYW50LUlkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMudGVuYW50KX1gO1xuICAgIH1cbiAgICBcbiAgICAvLyBVc2UgbmF0aXZlIGJyb3dzZXIgV2ViU29ja2V0IGZhY3RvcnlcbiAgICB0aGlzLndlYlNvY2tldCA9IGNyZWF0ZVdlYlNvY2tldCh3c1VybCk7XG5cblxuICAgIHRoaXMud2ViU29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0ZUhhbmRsZXIpIHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcihcImNvbm5lY3RlZFwiKTtcbiAgICB9O1xuXG4gICAgdGhpcy53ZWJTb2NrZXQub25tZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEgYXMgc3RyaW5nKTtcbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gXCJtZXNzYWdlXCIgJiYgdGhpcy5tZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEucGF5bG9hZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gZGF0YS5wYXlsb2FkIGFzIENoYXRNZXNzYWdlW107XG4gICAgICAgICAgICAvLyBBZGp1c3QgdGltZXN0YW1wcyB0byBiZSByZWxhdGl2ZSB0byBjb252ZXJzYXRpb24gc3RhcnRcbiAgICAgICAgICAgIC8vIEFsc28gbm9ybWFsaXplIG1lc3NhZ2VfaWQgZmllbGQgKGJhY2tlbmQgbWlnaHQgc2VuZCAnaWQnIGluc3RlYWQgb2YgJ21lc3NhZ2VfaWQnKVxuICAgICAgICAgICAgY29uc3QgYWRqdXN0ZWRNZXNzYWdlcyA9IG1lc3NhZ2VzXG4gICAgICAgICAgICAgIC5tYXAoKG1zZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkanVzdGVkID0gdGhpcy5hZGp1c3RNZXNzYWdlVGltZXN0YW1wcyhtc2cpO1xuICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZTogaWYgYmFja2VuZCBzZW5kcyAnaWQnLCB1c2UgaXQgYXMgJ21lc3NhZ2VfaWQnXG4gICAgICAgICAgICAgICAgaWYgKCFhZGp1c3RlZC5tZXNzYWdlX2lkICYmIChtc2cgYXMgYW55KS5pZCkge1xuICAgICAgICAgICAgICAgICAgYWRqdXN0ZWQubWVzc2FnZV9pZCA9IChtc2cgYXMgYW55KS5pZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFkanVzdGVkO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZmlsdGVyKChtc2cpID0+IG1zZy5zcGVha2VyICE9PSBcImN1c3RvbWVyXCIpO1xuICAgICAgICAgICAgYWRqdXN0ZWRNZXNzYWdlcy5mb3JFYWNoKHRoaXMubWVzc2FnZUhhbmRsZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhZGp1c3RlZE1lc3NhZ2UgPSB0aGlzLmFkanVzdE1lc3NhZ2VUaW1lc3RhbXBzKFxuICAgICAgICAgICAgICBkYXRhLnBheWxvYWQgYXMgQ2hhdE1lc3NhZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBOb3JtYWxpemU6IGlmIGJhY2tlbmQgc2VuZHMgJ2lkJywgdXNlIGl0IGFzICdtZXNzYWdlX2lkJ1xuICAgICAgICAgICAgaWYgKCFhZGp1c3RlZE1lc3NhZ2UubWVzc2FnZV9pZCAmJiAoZGF0YS5wYXlsb2FkIGFzIGFueSkuaWQpIHtcbiAgICAgICAgICAgICAgYWRqdXN0ZWRNZXNzYWdlLm1lc3NhZ2VfaWQgPSAoZGF0YS5wYXlsb2FkIGFzIGFueSkuaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWRqdXN0ZWRNZXNzYWdlLnNwZWFrZXIgIT09IFwiY3VzdG9tZXJcIikge1xuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyKGFkanVzdGVkTWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PT0gXCJ0YWtlb3ZlclwiKSB7XG4gICAgICAgICAgLy8gSGFuZGxlIHRha2VvdmVyIGV2ZW50XG4gICAgICAgICAgLy8gQ3JlYXRlIHNwZWNpYWwgbWVzc2FnZSBmb3IgdGhlIHRha2VvdmVyIGluZGljYXRvclxuICAgICAgICAgIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpIC8gMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IHRha2VvdmVyTWVzc2FnZTogQ2hhdE1lc3NhZ2UgPSB7XG4gICAgICAgICAgICAgIGNyZWF0ZV90aW1lOiBub3csXG4gICAgICAgICAgICAgIHN0YXJ0X3RpbWU6IHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZVxuICAgICAgICAgICAgICAgID8gbm93IC0gdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lXG4gICAgICAgICAgICAgICAgOiAwLFxuICAgICAgICAgICAgICBlbmRfdGltZTogdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lXG4gICAgICAgICAgICAgICAgPyBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgKyAwLjAxXG4gICAgICAgICAgICAgICAgOiAwLjAxLFxuICAgICAgICAgICAgICBzcGVha2VyOiBcInNwZWNpYWxcIixcbiAgICAgICAgICAgICAgdGV4dDogXCJTdXBlcnZpc29yIHRvb2sgb3ZlclwiLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIodGFrZW92ZXJNZXNzYWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDYWxsIHRoZSB0YWtlb3ZlciBoYW5kbGVyIGlmIHByb3ZpZGVkXG4gICAgICAgICAgaWYgKHRoaXMudGFrZW92ZXJIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnRha2VvdmVySGFuZGxlcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT09IFwiZmluYWxpemVcIikge1xuICAgICAgICAgIC8vIEhhbmRsZSBmaW5hbGl6ZWQgZXZlbnRcbiAgICAgICAgICAvLyBDcmVhdGUgc3BlY2lhbCBtZXNzYWdlIGZvciB0aGUgZmluYWxpemVkIGluZGljYXRvclxuICAgICAgICAgIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpIC8gMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsaXplZE1lc3NhZ2U6IENoYXRNZXNzYWdlID0ge1xuICAgICAgICAgICAgICBjcmVhdGVfdGltZTogbm93LFxuICAgICAgICAgICAgICBzdGFydF90aW1lOiB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWVcbiAgICAgICAgICAgICAgICA/IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZVxuICAgICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICAgICAgZW5kX3RpbWU6IHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZVxuICAgICAgICAgICAgICAgID8gbm93IC0gdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lICsgMC4wMVxuICAgICAgICAgICAgICAgIDogMC4wMSxcbiAgICAgICAgICAgICAgc3BlYWtlcjogXCJzcGVjaWFsXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiQ29udmVyc2F0aW9uIEZpbmFsaXplZFwiLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIoZmluYWxpemVkTWVzc2FnZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2FsbCB0aGUgZmluYWxpemVkIGhhbmRsZXIgaWYgcHJvdmlkZWRcbiAgICAgICAgICBpZiAodGhpcy5maW5hbGl6ZWRIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmZpbmFsaXplZEhhbmRsZXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc0ZpbmFsaXplZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zYXZlQ29udmVyc2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIGlnbm9yZVxuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLndlYlNvY2tldC5vbmVycm9yID0gKGVycm9yOiBFdmVudCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcilcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyKFwiZGlzY29ubmVjdGVkXCIpO1xuICAgICAgXG4gICAgICAvLyBMb2cgZGlhZ25vc3RpY1xuICAgICAgY29uc3QgZGlhZ25vc3RpYyA9IGNyZWF0ZVdlYlNvY2tldERpYWdub3N0aWMoZXJyb3IsIHdzVXJsKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtHZW5Bc3Npc3QgQ2hhdF0gJHtkaWFnbm9zdGljfWApO1xuICAgIH07XG5cbiAgICB0aGlzLndlYlNvY2tldC5vbmNsb3NlID0gKGV2ZW50OiBDbG9zZUV2ZW50KSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyKVxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZUhhbmRsZXIoXCJkaXNjb25uZWN0ZWRcIik7XG4gICAgICBcbiAgICAgIC8vIExvZyBkaWFnbm9zdGljXG4gICAgICBpZiAoIWV2ZW50Lndhc0NsZWFuKSB7XG4gICAgICAgIGNvbnN0IGRpYWdub3N0aWMgPSBjcmVhdGVXZWJTb2NrZXREaWFnbm9zdGljKGV2ZW50LCB3c1VybCk7XG4gICAgICAgIGNvbnNvbGUud2FybihgW0dlbkFzc2lzdCBDaGF0XSAke2RpYWdub3N0aWN9YCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGRpc2Nvbm5lY3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMud2ViU29ja2V0KSB7XG4gICAgICB0aGlzLndlYlNvY2tldC5jbG9zZSgpO1xuICAgICAgdGhpcy53ZWJTb2NrZXQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hXZWxjb21lSW1hZ2UoYWdlbnRJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGltYWdlUmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoXG4gICAgICAgIGAke3RoaXMuYmFzZVVybH0vYXBpL2dlbmFnZW50L2FnZW50cy9jb25maWdzLyR7YWdlbnRJZH0vd2VsY29tZS1pbWFnZWAsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIngtYXBpLWtleVwiOiB0aGlzLmFwaUtleSxcbiAgICAgICAgICAgIC4uLih0aGlzLnRlbmFudCA/IHsgXCJYLVRlbmFudC1JZFwiOiB0aGlzLnRlbmFudCB9IDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiBcImJsb2JcIixcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGltYWdlUmVzcG9uc2UuZGF0YSk7XG4gICAgICB0aGlzLndlbGNvbWVPYmplY3RVcmwgPSBibG9iVXJsO1xuICAgICAgdGhpcy53ZWxjb21lRGF0YS5pbWFnZVVybCA9IGJsb2JVcmw7XG4gICAgICBpZiAodGhpcy53ZWxjb21lRGF0YUhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy53ZWxjb21lRGF0YUhhbmRsZXIodGhpcy53ZWxjb21lRGF0YSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gIH1cblxuICAvLyBBZGQgZmVlZGJhY2sgdG8gYSBzcGVjaWZpYyBhZ2VudCBtZXNzYWdlIGluIHRoZSBjb252ZXJzYXRpb25cbiAgYXN5bmMgYWRkRmVlZGJhY2soXG4gICAgbWVzc2FnZUlkOiBzdHJpbmcsXG4gICAgZmVlZGJhY2s6IFwiZ29vZFwiIHwgXCJiYWRcIixcbiAgICBmZWVkYmFja19tZXNzYWdlPzogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghbWVzc2FnZUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXNzYWdlIElEIGlzIHJlcXVpcmVkIGZvciBmZWVkYmFja1wiKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gVXNlIG1lc3NhZ2UgSUQgaW4gdGhlIFVSTCBwYXRoLCBub3QgY29udmVyc2F0aW9uIElEXG4gICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2FwaS9jb252ZXJzYXRpb25zL21lc3NhZ2UvYWRkLWZlZWRiYWNrLyR7bWVzc2FnZUlkfWA7XG4gICAgICAvLyBCb2R5IHNob3VsZCBvbmx5IGNvbnRhaW4gZmVlZGJhY2sgYW5kIGZlZWRiYWNrX21lc3NhZ2UgKG5vIG1lc3NhZ2VfaWQpXG4gICAgICBjb25zdCBwYXlsb2FkOiB7XG4gICAgICAgIGZlZWRiYWNrOiBcImdvb2RcIiB8IFwiYmFkXCI7XG4gICAgICAgIGZlZWRiYWNrX21lc3NhZ2U/OiBzdHJpbmc7XG4gICAgICB9ID0ge1xuICAgICAgICBmZWVkYmFjayxcbiAgICAgIH07XG4gICAgICBcbiAgICAgIGlmIChmZWVkYmFja19tZXNzYWdlKSB7XG4gICAgICAgIHBheWxvYWQuZmVlZGJhY2tfbWVzc2FnZSA9IGZlZWRiYWNrX21lc3NhZ2U7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGF3YWl0IGF4aW9zLnBhdGNoKHVybCwgcGF5bG9hZCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgXCJ4LWFwaS1rZXlcIjogdGhpcy5hcGlLZXksXG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgLi4uKHRoaXMudGVuYW50ID8geyBcIlgtVGVuYW50LUlkXCI6IHRoaXMudGVuYW50IH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIFxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZlZWRiYWNrIEFQSSBjYWxsIGZhaWxlZDonLCB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgIHJlc3BvbnNlOiBlcnJvci5yZXNwb25zZT8uZGF0YSxcbiAgICAgICAgc3RhdHVzOiBlcnJvci5yZXNwb25zZT8uc3RhdHVzLFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGFkanVzdCBtZXNzYWdlIHRpbWVzdGFtcHMgcmVsYXRpdmUgdG8gY29udmVyc2F0aW9uIHN0YXJ0XG4gIHByaXZhdGUgYWRqdXN0TWVzc2FnZVRpbWVzdGFtcHMobWVzc2FnZTogQ2hhdE1lc3NhZ2UpOiBDaGF0TWVzc2FnZSB7XG4gICAgaWYgKCF0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5tZXNzYWdlLFxuICAgICAgc3RhcnRfdGltZTogbWVzc2FnZS5zdGFydF90aW1lIC0gdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lLFxuICAgICAgZW5kX3RpbWU6IG1lc3NhZ2UuZW5kX3RpbWUgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUsXG4gICAgfTtcbiAgfVxufVxuIl19
623
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvY2hhdFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFRMUIsT0FBTyxFQUNMLGVBQWUsRUFDZix5QkFBeUIsR0FDMUIsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QjtJQXdCRSxxQkFDRSxPQUFlLEVBQ2YsTUFBYyxFQUNkLFFBQThCLEVBQzlCLE1BQWU7UUF4QlQsbUJBQWMsR0FBa0IsSUFBSSxDQUFDO1FBQ3JDLDJCQUFzQixHQUFrQixJQUFJLENBQUMsQ0FBQyxnQ0FBZ0M7UUFDOUUsZUFBVSxHQUFrQixJQUFJLENBQUMsQ0FBQyxnQ0FBZ0M7UUFDbEUsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsY0FBUyxHQUFxQixJQUFJLENBQUM7UUFDbkMsbUJBQWMsR0FBNEMsSUFBSSxDQUFDO1FBQy9ELG9CQUFlLEdBQXdCLElBQUksQ0FBQztRQUM1QyxxQkFBZ0IsR0FBd0IsSUFBSSxDQUFDO1FBQzdDLDJCQUFzQixHQUVuQixJQUFJLENBQUM7UUFDUix1QkFBa0IsR0FBOEMsSUFBSSxDQUFDO1FBQ3JFLG1CQUFjLEdBQUcsd0JBQXdCLENBQUM7UUFDMUMsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFDL0IsZ0JBQVcsR0FBcUIsRUFBRSxDQUFDO1FBQ25DLG1CQUFjLEdBQXdCLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDckUscUJBQWdCLEdBQWtCLElBQUksQ0FBQyxDQUFDLHFCQUFxQjtRQVVuRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMs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QUk7NEJBQzlCLE1BQU0sRUFBRSxNQUFBLE9BQUssQ0FBQyxRQUFRLDBDQUFFLE1BQU07eUJBQy9CLENBQUMsQ0FBQzt3QkFDSCxNQUFNLE9BQUssQ0FBQzs7Ozs7S0FFZjtJQUVELDRFQUE0RTtJQUNwRSw2Q0FBdUIsR0FBL0IsVUFBZ0MsT0FBb0I7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCw2QkFDSyxPQUFPLEtBQ1YsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUM1RCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLElBQ3hEO0lBQ0osQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQWhvQkQsSUFnb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHtcbiAgQ2hhdE1lc3NhZ2UsXG4gIFN0YXJ0Q29udmVyc2F0aW9uUmVzcG9uc2UsXG4gIEF0dGFjaG1lbnQsXG4gIEFnZW50VGhpbmtpbmdDb25maWcsXG4gIEFnZW50V2VsY29tZURhdGEsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlV2ViU29ja2V0LFxuICBjcmVhdGVXZWJTb2NrZXREaWFnbm9zdGljLFxufSBmcm9tIFwiLi4vdXRpbHMvd2Vic29ja2V0XCI7XG5cbmV4cG9ydCBjbGFzcyBDaGF0U2VydmljZSB7XG4gIHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuICBwcml2YXRlIGFwaUtleTogc3RyaW5nO1xuICBwcml2YXRlIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjb252ZXJzYXRpb25DcmVhdGVUaW1lOiBudW1iZXIgfCBudWxsID0gbnVsbDsgLy8gVHJhY2sgY29udmVyc2F0aW9uIHN0YXJ0IHRpbWVcbiAgcHJpdmF0ZSBndWVzdFRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDsgLy8gR3Vlc3QgdG9rZW4gZm9yIGF1dGhvcml6YXRpb25cbiAgcHJpdmF0ZSBpc0ZpbmFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIHdlYlNvY2tldDogV2ViU29ja2V0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbWVzc2FnZUhhbmRsZXI6ICgobWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdGFrZW92ZXJIYW5kbGVyOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBmaW5hbGl6ZWRIYW5kbGVyOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjb25uZWN0aW9uU3RhdGVIYW5kbGVyOlxuICAgIHwgKChzdGF0ZTogXCJjb25uZWN0aW5nXCIgfCBcImNvbm5lY3RlZFwiIHwgXCJkaXNjb25uZWN0ZWRcIikgPT4gdm9pZClcbiAgICB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHdlbGNvbWVEYXRhSGFuZGxlcjogKChkYXRhOiBBZ2VudFdlbGNvbWVEYXRhKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0b3JhZ2VLZXlCYXNlID0gXCJnZW5hc3Npc3RfY29udmVyc2F0aW9uXCI7XG4gIHByaXZhdGUgcG9zc2libGVRdWVyaWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHdlbGNvbWVEYXRhOiBBZ2VudFdlbGNvbWVEYXRhID0ge307XG4gIHByaXZhdGUgdGhpbmtpbmdDb25maWc6IEFnZW50VGhpbmtpbmdDb25maWcgPSB7IHBocmFzZXM6IFtdLCBkZWxheU1zOiAxMDAwIH07XG4gIHByaXZhdGUgd2VsY29tZU9iamVjdFVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIHRvIHJldm9rZSBvbiByZXNldFxuICBwcml2YXRlIHRlbmFudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGFnZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgYXBpS2V5OiBzdHJpbmcsXG4gICAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHRlbmFudD86IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsLmVuZHNXaXRoKFwiL1wiKSA/IGJhc2VVcmwuc2xpY2UoMCwgLTEpIDogYmFzZVVybDtcbiAgICB0aGlzLmFwaUtleSA9IGFwaUtleTtcbiAgICB0aGlzLm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gICAgdGhpcy50ZW5hbnQgPSB0ZW5hbnQ7XG4gICAgLy8gVHJ5IHRvIGxvYWQgYSBzYXZlZCBjb252ZXJzYXRpb24gZm9yIHRoaXMgYXBpS2V5IGZyb20gbG9jYWxTdG9yYWdlXG4gICAgdGhpcy5sb2FkU2F2ZWRDb252ZXJzYXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RvcmFnZUtleSgpOiBzdHJpbmcge1xuICAgIC8vIFBvaW50ZXIgdG8gY3VycmVudCBjb252ZXJzYXRpb24gbWV0YWRhdGEgZm9yIHRoaXMgYXBpS2V5XG4gICAgcmV0dXJuIGAke3RoaXMuc3RvcmFnZUtleUJhc2V9OiR7dGhpcy5hcGlLZXl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaGVhZGVycyBmb3IgQVBJIHJlcXVlc3RzLCBpbmNsdWRpbmcgYXV0aG9yaXphdGlvbiBpZiBndWVzdCB0b2tlbiBpcyBhdmFpbGFibGVcbiAgICovXG4gIHByaXZhdGUgZ2V0SGVhZGVycyhjb250ZW50VHlwZTogc3RyaW5nID0gXCJhcHBsaWNhdGlvbi9qc29uXCIpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgXCJ4LWFwaS1rZXlcIjogdGhpcy5hcGlLZXksXG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBjb250ZW50VHlwZSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIHRlbmFudCBoZWFkZXIgaWYgcHJvdmlkZWRcbiAgICBpZiAodGhpcy50ZW5hbnQpIHtcbiAgICAgIGhlYWRlcnNbXCJ4LXRlbmFudC1pZFwiXSA9IHRoaXMudGVuYW50O1xuICAgIH1cblxuICAgIC8vIEFkZCBhdXRob3JpemF0aW9uIGhlYWRlciBpZiBndWVzdCB0b2tlbiBpcyBhdmFpbGFibGVcbiAgICBpZiAodGhpcy5ndWVzdFRva2VuKSB7XG4gICAgICBoZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCZWFyZXIgJHt0aGlzLmd1ZXN0VG9rZW59YDtcbiAgICB9XG5cbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIHNldE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXI6IChtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4gdm9pZCkge1xuICAgIHRoaXMubWVzc2FnZUhhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgc2V0VGFrZW92ZXJIYW5kbGVyKGhhbmRsZXI6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLnRha2VvdmVySGFuZGxlciA9IGhhbmRsZXI7XG4gIH1cblxuICBzZXRGaW5hbGl6ZWRIYW5kbGVyKGhhbmRsZXI6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLmZpbmFsaXplZEhhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgc2V0Q29ubmVjdGlvblN0YXRlSGFuZGxlcihcbiAgICBoYW5kbGVyOiAoc3RhdGU6IFwiY29ubmVjdGluZ1wiIHwgXCJjb25uZWN0ZWRcIiB8IFwiZGlzY29ubmVjdGVkXCIpID0+IHZvaWRcbiAgKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIHNldFdlbGNvbWVEYXRhSGFuZGxlcihoYW5kbGVyOiAoKGRhdGE6IEFnZW50V2VsY29tZURhdGEpID0+IHZvaWQpIHwgbnVsbCkge1xuICAgIHRoaXMud2VsY29tZURhdGFIYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldFBvc3NpYmxlUXVlcmllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucG9zc2libGVRdWVyaWVzO1xuICB9XG5cbiAgZ2V0V2VsY29tZURhdGEoKTogQWdlbnRXZWxjb21lRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMud2VsY29tZURhdGE7XG4gIH1cblxuICBnZXRUaGlua2luZ0NvbmZpZygpOiBBZ2VudFRoaW5raW5nQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy50aGlua2luZ0NvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEgc2F2ZWQgY29udmVyc2F0aW9uIElEIGZyb20gbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwcml2YXRlIGxvYWRTYXZlZENvbnZlcnNhdGlvbigpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbGV0IHNhdmVkQ29udmVyc2F0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5nZXRTdG9yYWdlS2V5KCkpO1xuICAgICAgLy8gQmFja3dhcmQtY29tcGF0OiBjaGVjayBvbGQgdW5zY29wZWQga2V5IGlmIHNjb3BlZCBvbmUgbWlzc2luZ1xuICAgICAgaWYgKCFzYXZlZENvbnZlcnNhdGlvbikge1xuICAgICAgICBzYXZlZENvbnZlcnNhdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleUJhc2UpO1xuICAgICAgfVxuICAgICAgaWYgKHNhdmVkQ29udmVyc2F0aW9uKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBjb252ZXJzYXRpb25JZCxcbiAgICAgICAgICBjcmVhdGVUaW1lLFxuICAgICAgICAgIGlzRmluYWxpemVkLFxuICAgICAgICAgIHBvc3NpYmxlUXVlcmllcyxcbiAgICAgICAgICB3ZWxjb21lRGF0YSxcbiAgICAgICAgICB0aGlua2luZ0NvbmZpZyxcbiAgICAgICAgICBhZ2VudElkLFxuICAgICAgICAgIGd1ZXN0VG9rZW4sXG4gICAgICAgIH0gPSBKU09OLnBhcnNlKHNhdmVkQ29udmVyc2F0aW9uKTtcbiAgICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IGNvbnZlcnNhdGlvbklkO1xuICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgPSBjcmVhdGVUaW1lO1xuICAgICAgICB0aGlzLmlzRmluYWxpemVkID0gaXNGaW5hbGl6ZWQgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMuZ3Vlc3RUb2tlbiA9IGd1ZXN0VG9rZW4gfHwgbnVsbDtcbiAgICAgICAgdGhpcy5wb3NzaWJsZVF1ZXJpZXMgPSBBcnJheS5pc0FycmF5KHBvc3NpYmxlUXVlcmllcylcbiAgICAgICAgICA/IHBvc3NpYmxlUXVlcmllc1xuICAgICAgICAgIDogW107XG4gICAgICAgIHRoaXMud2VsY29tZURhdGEgPSB3ZWxjb21lRGF0YSB8fCB7fTtcbiAgICAgICAgaWYgKCF0aGlzLndlbGNvbWVEYXRhLnBvc3NpYmxlUXVlcmllcykge1xuICAgICAgICAgIHRoaXMud2VsY29tZURhdGEucG9zc2libGVRdWVyaWVzID0gdGhpcy5wb3NzaWJsZVF1ZXJpZXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aGlua2luZ0NvbmZpZyA9IHtcbiAgICAgICAgICBwaHJhc2VzOiAodGhpbmtpbmdDb25maWcgJiYgdGhpbmtpbmdDb25maWcucGhyYXNlcykgfHwgW10sXG4gICAgICAgICAgZGVsYXlNczpcbiAgICAgICAgICAgIHRoaW5raW5nQ29uZmlnICYmIHR5cGVvZiB0aGlua2luZ0NvbmZpZy5kZWxheU1zID09PSBcIm51bWJlclwiXG4gICAgICAgICAgICAgID8gdGhpbmtpbmdDb25maWcuZGVsYXlNc1xuICAgICAgICAgICAgICA6IDEwMDAsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYWdlbnRJZCA9IGFnZW50SWQ7XG4gICAgICAgIGlmICghdGhpcy53ZWxjb21lRGF0YS5pbWFnZVVybCAmJiB0aGlzLmFnZW50SWQpIHtcbiAgICAgICAgICB0aGlzLmZldGNoV2VsY29tZUltYWdlKHRoaXMuYWdlbnRJZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMud2VsY29tZURhdGFIYW5kbGVyKSB7XG4gICAgICAgICAgdGhpcy53ZWxjb21lRGF0YUhhbmRsZXIodGhpcy53ZWxjb21lRGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgdGhlIGN1cnJlbnQgY29udmVyc2F0aW9uIElEIHRvIGxvY2FsU3RvcmFnZVxuICAgKi9cbiAgcHJpdmF0ZSBzYXZlQ29udmVyc2F0aW9uKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5jb252ZXJzYXRpb25JZCAmJiB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUpIHtcbiAgICAgICAgY29uc3QgY29udmVyc2F0aW9uRGF0YSA9IHtcbiAgICAgICAgICBjb252ZXJzYXRpb25JZDogdGhpcy5jb252ZXJzYXRpb25JZCxcbiAgICAgICAgICBjcmVhdGVUaW1lOiB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUsXG4gICAgICAgICAgaXNGaW5hbGl6ZWQ6IHRoaXMuaXNGaW5hbGl6ZWQsXG4gICAgICAgICAgcG9zc2libGVRdWVyaWVzOiB0aGlzLnBvc3NpYmxlUXVlcmllcyxcbiAgICAgICAgICB3ZWxjb21lRGF0YToge1xuICAgICAgICAgICAgLi4udGhpcy53ZWxjb21lRGF0YSxcbiAgICAgICAgICAgIGltYWdlVXJsOlxuICAgICAgICAgICAgICB0aGlzLndlbGNvbWVPYmplY3RVcmwgJiZcbiAgICAgICAgICAgICAgdGhpcy53ZWxjb21lRGF0YS5pbWFnZVVybCAmJlxuICAgICAgICAgICAgICB0aGlzLndlbGNvbWVEYXRhLmltYWdlVXJsLnN0YXJ0c1dpdGgoXCJibG9iOlwiKVxuICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgIDogdGhpcy53ZWxjb21lRGF0YS5pbWFnZVVybCB8fCBudWxsLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGhpbmtpbmdDb25maWc6IHRoaXMudGhpbmtpbmdDb25maWcsXG4gICAgICAgICAgYWdlbnRJZDogdGhpcy5hZ2VudElkLFxuICAgICAgICAgIGd1ZXN0VG9rZW46IHRoaXMuZ3Vlc3RUb2tlbixcbiAgICAgICAgfTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5nZXRTdG9yYWdlS2V5KCksIEpTT04uc3RyaW5naWZ5KGNvbnZlcnNhdGlvbkRhdGEpKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiBieSBjbGVhcmluZyB0aGUgSUQgYW5kIHdlYnNvY2tldFxuICAgKi9cbiAgcmVzZXRDb252ZXJzYXRpb24oKTogdm9pZCB7XG4gICAgLy8gQ2xvc2UgdGhlIGN1cnJlbnQgd2Vic29ja2V0IGNvbm5lY3Rpb24gaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMud2ViU29ja2V0KSB7XG4gICAgICB0aGlzLndlYlNvY2tldC5jbG9zZSgpO1xuICAgICAgdGhpcy53ZWJTb2NrZXQgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIENsZWFyIHRoZSBjb252ZXJzYXRpb24gSURcbiAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gbnVsbDtcbiAgICB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgPSBudWxsO1xuICAgIHRoaXMuZ3Vlc3RUb2tlbiA9IG51bGw7XG4gICAgdGhpcy5pc0ZpbmFsaXplZCA9IGZhbHNlO1xuXG4gICAgLy8gQ2xlYXIgcG9zc2libGUgcXVlcmllc1xuICAgIHRoaXMucG9zc2libGVRdWVyaWVzID0gW107XG4gICAgdGhpcy53ZWxjb21lRGF0YSA9IHt9O1xuICAgIHRoaXMudGhpbmtpbmdDb25maWcgPSB7IHBocmFzZXM6IFtdLCBkZWxheU1zOiAxMDAwIH07XG4gICAgaWYgKHRoaXMud2VsY29tZU9iamVjdFVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLndlbGNvbWVPYmplY3RVcmwpO1xuICAgICAgfSBjYXRjaCB7fVxuICAgICAgdGhpcy53ZWxjb21lT2JqZWN0VXJsID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5hZ2VudElkID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gUmVtb3ZlIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmdldFN0b3JhZ2VLZXkoKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIGlnbm9yZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGVyZSdzIGEgY3VycmVudCBjb252ZXJzYXRpb25cbiAgICovXG4gIGhhc0FjdGl2ZUNvbnZlcnNhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbnZlcnNhdGlvbklkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBjb252ZXJzYXRpb24gSURcbiAgICovXG4gIGdldENvbnZlcnNhdGlvbklkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvbnZlcnNhdGlvbklkO1xuICB9XG5cbiAgaXNDb252ZXJzYXRpb25GaW5hbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNGaW5hbGl6ZWQ7XG4gIH1cblxuICBhc3luYyBzdGFydENvbnZlcnNhdGlvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0Qm9keTogYW55ID0ge1xuICAgICAgICBtZXNzYWdlczogW10sXG4gICAgICAgIHJlY29yZGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGRhdGFfc291cmNlX2lkOiBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0YWRhdGEpIHtcbiAgICAgICAgcmVxdWVzdEJvZHkubWV0YWRhdGEgPSB0aGlzLm1ldGFkYXRhO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3Q8U3RhcnRDb252ZXJzYXRpb25SZXNwb25zZT4oXG4gICAgICAgIGAke3RoaXMuYmFzZVVybH0vYXBpL2NvbnZlcnNhdGlvbnMvaW4tcHJvZ3Jlc3Mvc3RhcnRgLFxuICAgICAgICByZXF1ZXN0Qm9keSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gcmVzcG9uc2UuZGF0YS5jb252ZXJzYXRpb25faWQ7XG4gICAgICAvLyBTdG9yZSBjb252ZXJzYXRpb24gY3JlYXRlIHRpbWUgKHVzZSBmcm9tIHJlc3BvbnNlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGN1cnJlbnQgdGltZSlcbiAgICAgIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSA9IHJlc3BvbnNlLmRhdGEuY3JlYXRlX3RpbWVcbiAgICAgICAgPyByZXNwb25zZS5kYXRhLmNyZWF0ZV90aW1lIC8gMTAwMFxuICAgICAgICA6IERhdGUubm93KCkgLyAxMDAwO1xuICAgICAgLy8gU3RvcmUgZ3Vlc3QgdG9rZW4gaWYgcHJvdmlkZWRcbiAgICAgIHRoaXMuZ3Vlc3RUb2tlbiA9IHJlc3BvbnNlLmRhdGEuZ3Vlc3RfdG9rZW4gfHwgbnVsbDtcbiAgICAgIHRoaXMuaXNGaW5hbGl6ZWQgPSBmYWxzZTtcblxuICAgICAgLy8gU3RvcmUgcG9zc2libGUgcXVlcmllcyBpZiBhdmFpbGFibGVcbiAgICAgIGlmIChcbiAgICAgICAgcmVzcG9uc2UuZGF0YS5hZ2VudF9wb3NzaWJsZV9xdWVyaWVzICYmXG4gICAgICAgIHJlc3BvbnNlLmRhdGEuYWdlbnRfcG9zc2libGVfcXVlcmllcy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5wb3NzaWJsZVF1ZXJpZXMgPSByZXNwb25zZS5kYXRhLmFnZW50X3Bvc3NpYmxlX3F1ZXJpZXMuZmlsdGVyKFxuICAgICAgICAgIChxdWVyeSkgPT4gdHlwZW9mIHF1ZXJ5ID09PSBcInN0cmluZ1wiICYmIHF1ZXJ5LnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFueURhdGE6IGFueSA9IHJlc3BvbnNlLmRhdGEgYXMgYW55O1xuICAgICAgY29uc3QgYWdlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gYW55RGF0YS5hZ2VudF9pZDtcbiAgICAgIHRoaXMuYWdlbnRJZCA9IGFnZW50SWQ7XG4gICAgICBjb25zdCB3ZWxjb21lVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGFueURhdGEuYWdlbnRfd2VsY29tZV90aXRsZTtcbiAgICAgIGNvbnN0IHdlbGNvbWVJbWFnZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkID1cbiAgICAgICAgYW55RGF0YS5hZ2VudF93ZWxjb21lX2ltYWdlX3VybDtcbiAgICAgIGNvbnN0IHRoaW5raW5nUGhyYXNlczogc3RyaW5nW10gfCB1bmRlZmluZWQgPVxuICAgICAgICBhbnlEYXRhLmFnZW50X3RoaW5raW5nX3BocmFzZXM7XG4gICAgICBjb25zdCB0aGlua2luZ0RlbGF5U2VjOiBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgICBhbnlEYXRhLmFnZW50X3RoaW5raW5nX3BocmFzZV9kZWxheTtcblxuICAgICAgdGhpcy53ZWxjb21lRGF0YSA9IHtcbiAgICAgICAgdGl0bGU6IHdlbGNvbWVUaXRsZSB8fCBudWxsLFxuICAgICAgICBtZXNzYWdlOiBudWxsLFxuICAgICAgICBpbWFnZVVybDogd2VsY29tZUltYWdlVXJsIHx8IG51bGwsXG4gICAgICAgIHBvc3NpYmxlUXVlcmllczogdGhpcy5wb3NzaWJsZVF1ZXJpZXMsXG4gICAgICB9O1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlua2luZ1BocmFzZXMpICYmIHRoaW5raW5nUGhyYXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudGhpbmtpbmdDb25maWcucGhyYXNlcyA9IHRoaW5raW5nUGhyYXNlcztcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdGhpbmtpbmdEZWxheVNlYyA9PT0gXCJudW1iZXJcIiAmJiB0aGlua2luZ0RlbGF5U2VjID49IDApIHtcbiAgICAgICAgdGhpcy50aGlua2luZ0NvbmZpZy5kZWxheU1zID0gTWF0aC5tYXgoXG4gICAgICAgICAgMjUwLFxuICAgICAgICAgIE1hdGgucm91bmQodGhpbmtpbmdEZWxheVNlYyAqIDEwMDApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy53ZWxjb21lRGF0YS5pbWFnZVVybCAmJiBhZ2VudElkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hXZWxjb21lSW1hZ2UoYWdlbnRJZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgYWdlbnQgd2VsY29tZSBtZXNzYWdlIGlmIGF2YWlsYWJsZVxuICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuYWdlbnRfd2VsY29tZV9tZXNzYWdlICYmIHRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgICAgIGNvbnN0IHdlbGNvbWVNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcbiAgICAgICAgICBjcmVhdGVfdGltZTogbm93LFxuICAgICAgICAgIHN0YXJ0X3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSwgLy8gUmVsYXRpdmUgdG8gY29udmVyc2F0aW9uIHN0YXJ0XG4gICAgICAgICAgZW5kX3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSArIDAuMDEsIC8vIFJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICAgICAgICAgIHNwZWFrZXI6IFwiYWdlbnRcIixcbiAgICAgICAgICB0ZXh0OiByZXNwb25zZS5kYXRhLmFnZW50X3dlbGNvbWVfbWVzc2FnZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy53ZWxjb21lRGF0YS5tZXNzYWdlID0gcmVzcG9uc2UuZGF0YS5hZ2VudF93ZWxjb21lX21lc3NhZ2U7XG4gICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIod2VsY29tZU1lc3NhZ2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy53ZWxjb21lRGF0YUhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy53ZWxjb21lRGF0YUhhbmRsZXIodGhpcy53ZWxjb21lRGF0YSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2F2ZUNvbnZlcnNhdGlvbigpO1xuICAgICAgdGhpcy5jb25uZWN0V2ViU29ja2V0KCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5jb252ZXJzYXRpb25faWQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmRNZXNzYWdlKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRbXSxcbiAgICBleHRyYU1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29udmVyc2F0aW9uSWQgfHwgIXRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29udmVyc2F0aW9uIG5vdCBzdGFydGVkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCkgLyAxMDAwO1xuICAgIGNvbnN0IGNoYXRNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcbiAgICAgIGNyZWF0ZV90aW1lOiBub3csXG4gICAgICBzdGFydF90aW1lOiBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUsIC8vIFJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICAgICAgZW5kX3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSArIDAuMDEsIC8vIFJlbGF0aXZlIHRvIGNvbnZlcnNhdGlvbiBzdGFydFxuICAgICAgc3BlYWtlcjogXCJjdXN0b21lclwiLFxuICAgICAgdGV4dDogbWVzc2FnZSxcbiAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIoY2hhdE1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0Qm9keTogYW55ID0ge1xuICAgICAgICBtZXNzYWdlczogW2NoYXRNZXNzYWdlXSxcbiAgICAgICAgcmVjb3JkZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH07XG5cbiAgICAgIC8vIEluY2x1ZGUgbWV0YWRhdGFcbiAgICAgIGNvbnN0IG1lcmdlZE1ldGFkYXRhID0ge1xuICAgICAgICAuLi4odGhpcy5tZXRhZGF0YSB8fCB7fSksXG4gICAgICAgIC4uLihleHRyYU1ldGFkYXRhIHx8IHt9KSxcbiAgICAgIH07XG4gICAgICBpZiAoT2JqZWN0LmtleXMobWVyZ2VkTWV0YWRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVxdWVzdEJvZHkubWV0YWRhdGEgPSBtZXJnZWRNZXRhZGF0YTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgYXhpb3MucGF0Y2goXG4gICAgICAgIGAke3RoaXMuYmFzZVVybH0vYXBpL2NvbnZlcnNhdGlvbnMvaW4tcHJvZ3Jlc3MvdXBkYXRlLyR7dGhpcy5jb252ZXJzYXRpb25JZH1gLFxuICAgICAgICByZXF1ZXN0Qm9keSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgdGhlIGFnZW50IGluYWN0aXZlIGVycm9yXG4gICAgICBpZiAoXG4gICAgICAgIGVycm9yLnJlc3BvbnNlICYmXG4gICAgICAgIGVycm9yLnJlc3BvbnNlLmRhdGEgJiZcbiAgICAgICAgZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcl9rZXkgPT09IFwiQUdFTlRfSU5BQ1RJVkVcIlxuICAgICAgKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIGN1c3RvbSBtZXNzYWdlIGZvciB0aGUgYWdlbnQgaW5hY3RpdmUgZXJyb3JcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2U6IENoYXRNZXNzYWdlID0ge1xuICAgICAgICAgICAgY3JlYXRlX3RpbWU6IG5vdyxcbiAgICAgICAgICAgIHN0YXJ0X3RpbWU6IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSxcbiAgICAgICAgICAgIGVuZF90aW1lOiBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUgKyAwLjAxLFxuICAgICAgICAgICAgc3BlYWtlcjogXCJzcGVjaWFsXCIsXG4gICAgICAgICAgICB0ZXh0OiBcIlRoZSBhZ2VudCBpcyBjdXJyZW50bHkgb2ZmbGluZSwgcGxlYXNlIGNoZWNrIGJhY2sgbGF0ZXIuIFRoYW5rIHlvdSFcIixcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEb24ndCB0aHJvdyB0aGUgZXJyb3Igc2luY2Ugd2UgaGFuZGxlZCBpdCB3aXRoIGEgbWVzc2FnZVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGUoY2hhdElkOiBzdHJpbmcsIGZpbGU6IEZpbGUpOiBQcm9taXNlPHsgZmlsZVVybDogc3RyaW5nIH0+IHtcbiAgICBpZiAoIXRoaXMuY29udmVyc2F0aW9uSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbnZlcnNhdGlvbiBub3Qgc3RhcnRlZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZChcImNoYXRfaWRcIiwgY2hhdElkKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlXCIsIGZpbGUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdDx7IGZpbGVVcmw6IHN0cmluZyB9PihcbiAgICAgICAgYCR7dGhpcy5iYXNlVXJsfS9hcGkvZ2VuYWdlbnQva25vd2xlZGdlL3VwbG9hZC1jaGF0LWZpbGVgLFxuICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycyhcIm11bHRpcGFydC9mb3JtLWRhdGFcIiksXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgY29ubmVjdFdlYlNvY2tldCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53ZWJTb2NrZXQpIHtcbiAgICAgIHRoaXMud2ViU29ja2V0LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb252ZXJzYXRpb24gSUQgaXMgcmVxdWlyZWQgZm9yIFdlYlNvY2tldCBjb25uZWN0aW9uXCIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0ZUhhbmRsZXIpIHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcihcImNvbm5lY3RpbmdcIik7XG4gICAgbGV0IHdzVXJsID0gYCR7dGhpcy5iYXNlVXJsLnJlcGxhY2UoXCJodHRwXCIsIFwid3NcIil9L2FwaS9jb252ZXJzYXRpb25zL3dzLyR7XG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbklkXG4gICAgfT9hcGlfa2V5PSR7XG4gICAgICB0aGlzLmFwaUtleVxuICAgIH0mbGFuZz1lbiZ0b3BpY3M9bWVzc2FnZSZ0b3BpY3M9dGFrZW92ZXImdG9waWNzPWZpbmFsaXplYDtcbiAgICBcbiAgICAvLyBBZGQgdGVuYW50IGFzIHF1ZXJ5IHBhcmFtZXRlciBpZiBwcm92aWRlZFxuICAgIGlmICh0aGlzLnRlbmFudCkge1xuICAgICAgd3NVcmwgKz0gYCZ4LXRlbmFudC1pZD0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLnRlbmFudCl9YDtcbiAgICB9XG4gICAgXG4gICAgLy8gVXNlIG5hdGl2ZSBicm93c2VyIFdlYlNvY2tldCBmYWN0b3J5XG4gICAgdGhpcy53ZWJTb2NrZXQgPSBjcmVhdGVXZWJTb2NrZXQod3NVcmwpO1xuXG5cbiAgICB0aGlzLndlYlNvY2tldC5vbm9wZW4gPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyKSB0aGlzLmNvbm5lY3Rpb25TdGF0ZUhhbmRsZXIoXCJjb25uZWN0ZWRcIik7XG4gICAgfTtcblxuICAgIHRoaXMud2ViU29ja2V0Lm9ubWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShldmVudC5kYXRhIGFzIHN0cmluZyk7XG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT09IFwibWVzc2FnZVwiICYmIHRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLnBheWxvYWQpKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlcyA9IGRhdGEucGF5bG9hZCBhcyBDaGF0TWVzc2FnZVtdO1xuICAgICAgICAgICAgLy8gQWRqdXN0IHRpbWVzdGFtcHMgdG8gYmUgcmVsYXRpdmUgdG8gY29udmVyc2F0aW9uIHN0YXJ0XG4gICAgICAgICAgICAvLyBBbHNvIG5vcm1hbGl6ZSBtZXNzYWdlX2lkIGZpZWxkIChiYWNrZW5kIG1pZ2h0IHNlbmQgJ2lkJyBpbnN0ZWFkIG9mICdtZXNzYWdlX2lkJylcbiAgICAgICAgICAgIGNvbnN0IGFkanVzdGVkTWVzc2FnZXMgPSBtZXNzYWdlc1xuICAgICAgICAgICAgICAubWFwKChtc2cpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGp1c3RlZCA9IHRoaXMuYWRqdXN0TWVzc2FnZVRpbWVzdGFtcHMobXNnKTtcbiAgICAgICAgICAgICAgICAvLyBOb3JtYWxpemU6IGlmIGJhY2tlbmQgc2VuZHMgJ2lkJywgdXNlIGl0IGFzICdtZXNzYWdlX2lkJ1xuICAgICAgICAgICAgICAgIGlmICghYWRqdXN0ZWQubWVzc2FnZV9pZCAmJiAobXNnIGFzIGFueSkuaWQpIHtcbiAgICAgICAgICAgICAgICAgIGFkanVzdGVkLm1lc3NhZ2VfaWQgPSAobXNnIGFzIGFueSkuaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhZGp1c3RlZDtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZpbHRlcigobXNnKSA9PiBtc2cuc3BlYWtlciAhPT0gXCJjdXN0b21lclwiKTtcbiAgICAgICAgICAgIGFkanVzdGVkTWVzc2FnZXMuZm9yRWFjaCh0aGlzLm1lc3NhZ2VIYW5kbGVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYWRqdXN0ZWRNZXNzYWdlID0gdGhpcy5hZGp1c3RNZXNzYWdlVGltZXN0YW1wcyhcbiAgICAgICAgICAgICAgZGF0YS5wYXlsb2FkIGFzIENoYXRNZXNzYWdlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gTm9ybWFsaXplOiBpZiBiYWNrZW5kIHNlbmRzICdpZCcsIHVzZSBpdCBhcyAnbWVzc2FnZV9pZCdcbiAgICAgICAgICAgIGlmICghYWRqdXN0ZWRNZXNzYWdlLm1lc3NhZ2VfaWQgJiYgKGRhdGEucGF5bG9hZCBhcyBhbnkpLmlkKSB7XG4gICAgICAgICAgICAgIGFkanVzdGVkTWVzc2FnZS5tZXNzYWdlX2lkID0gKGRhdGEucGF5bG9hZCBhcyBhbnkpLmlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFkanVzdGVkTWVzc2FnZS5zcGVha2VyICE9PSBcImN1c3RvbWVyXCIpIHtcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlcihhZGp1c3RlZE1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT09IFwidGFrZW92ZXJcIikge1xuICAgICAgICAgIC8vIEhhbmRsZSB0YWtlb3ZlciBldmVudFxuICAgICAgICAgIC8vIENyZWF0ZSBzcGVjaWFsIG1lc3NhZ2UgZm9yIHRoZSB0YWtlb3ZlciBpbmRpY2F0b3JcbiAgICAgICAgICBpZiAodGhpcy5tZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgICAgICAgICBjb25zdCB0YWtlb3Zlck1lc3NhZ2U6IENoYXRNZXNzYWdlID0ge1xuICAgICAgICAgICAgICBjcmVhdGVfdGltZTogbm93LFxuICAgICAgICAgICAgICBzdGFydF90aW1lOiB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWVcbiAgICAgICAgICAgICAgICA/IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZVxuICAgICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICAgICAgZW5kX3RpbWU6IHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZVxuICAgICAgICAgICAgICAgID8gbm93IC0gdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lICsgMC4wMVxuICAgICAgICAgICAgICAgIDogMC4wMSxcbiAgICAgICAgICAgICAgc3BlYWtlcjogXCJzcGVjaWFsXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiU3VwZXJ2aXNvciB0b29rIG92ZXJcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyKHRha2VvdmVyTWVzc2FnZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2FsbCB0aGUgdGFrZW92ZXIgaGFuZGxlciBpZiBwcm92aWRlZFxuICAgICAgICAgIGlmICh0aGlzLnRha2VvdmVySGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy50YWtlb3ZlckhhbmRsZXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YS50eXBlID09PSBcImZpbmFsaXplXCIpIHtcbiAgICAgICAgICAvLyBIYW5kbGUgZmluYWxpemVkIGV2ZW50XG4gICAgICAgICAgLy8gQ3JlYXRlIHNwZWNpYWwgbWVzc2FnZSBmb3IgdGhlIGZpbmFsaXplZCBpbmRpY2F0b3JcbiAgICAgICAgICBpZiAodGhpcy5tZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgICAgICAgICBjb25zdCBmaW5hbGl6ZWRNZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcbiAgICAgICAgICAgICAgY3JlYXRlX3RpbWU6IG5vdyxcbiAgICAgICAgICAgICAgc3RhcnRfdGltZTogdGhpcy5jb252ZXJzYXRpb25DcmVhdGVUaW1lXG4gICAgICAgICAgICAgICAgPyBub3cgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWVcbiAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICAgIGVuZF90aW1lOiB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWVcbiAgICAgICAgICAgICAgICA/IG5vdyAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSArIDAuMDFcbiAgICAgICAgICAgICAgICA6IDAuMDEsXG4gICAgICAgICAgICAgIHNwZWFrZXI6IFwic3BlY2lhbFwiLFxuICAgICAgICAgICAgICB0ZXh0OiBcIkNvbnZlcnNhdGlvbiBGaW5hbGl6ZWRcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyKGZpbmFsaXplZE1lc3NhZ2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENhbGwgdGhlIGZpbmFsaXplZCBoYW5kbGVyIGlmIHByb3ZpZGVkXG4gICAgICAgICAgaWYgKHRoaXMuZmluYWxpemVkSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5maW5hbGl6ZWRIYW5kbGVyKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNGaW5hbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2F2ZUNvbnZlcnNhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBpZ25vcmVcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy53ZWJTb2NrZXQub25lcnJvciA9IChlcnJvcjogRXZlbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0ZUhhbmRsZXIpXG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcihcImRpc2Nvbm5lY3RlZFwiKTtcbiAgICAgIFxuICAgICAgLy8gTG9nIGRpYWdub3N0aWNcbiAgICAgIGNvbnN0IGRpYWdub3N0aWMgPSBjcmVhdGVXZWJTb2NrZXREaWFnbm9zdGljKGVycm9yLCB3c1VybCk7XG4gICAgICBjb25zb2xlLmVycm9yKGBbR2VuQXNzaXN0IENoYXRdICR7ZGlhZ25vc3RpY31gKTtcbiAgICB9O1xuXG4gICAgdGhpcy53ZWJTb2NrZXQub25jbG9zZSA9IChldmVudDogQ2xvc2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXRlSGFuZGxlcilcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdGVIYW5kbGVyKFwiZGlzY29ubmVjdGVkXCIpO1xuICAgICAgXG4gICAgICAvLyBMb2cgZGlhZ25vc3RpY1xuICAgICAgaWYgKCFldmVudC53YXNDbGVhbikge1xuICAgICAgICBjb25zdCBkaWFnbm9zdGljID0gY3JlYXRlV2ViU29ja2V0RGlhZ25vc3RpYyhldmVudCwgd3NVcmwpO1xuICAgICAgICBjb25zb2xlLndhcm4oYFtHZW5Bc3Npc3QgQ2hhdF0gJHtkaWFnbm9zdGljfWApO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLndlYlNvY2tldCkge1xuICAgICAgdGhpcy53ZWJTb2NrZXQuY2xvc2UoKTtcbiAgICAgIHRoaXMud2ViU29ja2V0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoV2VsY29tZUltYWdlKGFnZW50SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgICBgJHt0aGlzLmJhc2VVcmx9L2FwaS9nZW5hZ2VudC9hZ2VudHMvY29uZmlncy8ke2FnZW50SWR9L3dlbGNvbWUtaW1hZ2VgLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiBcImJsb2JcIixcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGltYWdlUmVzcG9uc2UuZGF0YSk7XG4gICAgICB0aGlzLndlbGNvbWVPYmplY3RVcmwgPSBibG9iVXJsO1xuICAgICAgdGhpcy53ZWxjb21lRGF0YS5pbWFnZVVybCA9IGJsb2JVcmw7XG4gICAgICBpZiAodGhpcy53ZWxjb21lRGF0YUhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy53ZWxjb21lRGF0YUhhbmRsZXIodGhpcy53ZWxjb21lRGF0YSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gIH1cblxuICAvLyBBZGQgZmVlZGJhY2sgdG8gYSBzcGVjaWZpYyBhZ2VudCBtZXNzYWdlIGluIHRoZSBjb252ZXJzYXRpb25cbiAgYXN5bmMgYWRkRmVlZGJhY2soXG4gICAgbWVzc2FnZUlkOiBzdHJpbmcsXG4gICAgZmVlZGJhY2s6IFwiZ29vZFwiIHwgXCJiYWRcIixcbiAgICBmZWVkYmFja19tZXNzYWdlPzogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghbWVzc2FnZUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXNzYWdlIElEIGlzIHJlcXVpcmVkIGZvciBmZWVkYmFja1wiKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gVXNlIG1lc3NhZ2UgSUQgaW4gdGhlIFVSTCBwYXRoLCBub3QgY29udmVyc2F0aW9uIElEXG4gICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2FwaS9jb252ZXJzYXRpb25zL21lc3NhZ2UvYWRkLWZlZWRiYWNrLyR7bWVzc2FnZUlkfWA7XG4gICAgICAvLyBCb2R5IHNob3VsZCBvbmx5IGNvbnRhaW4gZmVlZGJhY2sgYW5kIGZlZWRiYWNrX21lc3NhZ2UgKG5vIG1lc3NhZ2VfaWQpXG4gICAgICBjb25zdCBwYXlsb2FkOiB7XG4gICAgICAgIGZlZWRiYWNrOiBcImdvb2RcIiB8IFwiYmFkXCI7XG4gICAgICAgIGZlZWRiYWNrX21lc3NhZ2U/OiBzdHJpbmc7XG4gICAgICB9ID0ge1xuICAgICAgICBmZWVkYmFjayxcbiAgICAgIH07XG4gICAgICBcbiAgICAgIGlmIChmZWVkYmFja19tZXNzYWdlKSB7XG4gICAgICAgIHBheWxvYWQuZmVlZGJhY2tfbWVzc2FnZSA9IGZlZWRiYWNrX21lc3NhZ2U7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGF3YWl0IGF4aW9zLnBhdGNoKHVybCwgcGF5bG9hZCwge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSxcbiAgICAgIH0pO1xuICAgICAgXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgY29uc29sZS5lcnJvcignRmVlZGJhY2sgQVBJIGNhbGwgZmFpbGVkOicsIHtcbiAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgcmVzcG9uc2U6IGVycm9yLnJlc3BvbnNlPy5kYXRhLFxuICAgICAgICBzdGF0dXM6IGVycm9yLnJlc3BvbnNlPy5zdGF0dXMsXG4gICAgICB9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gYWRqdXN0IG1lc3NhZ2UgdGltZXN0YW1wcyByZWxhdGl2ZSB0byBjb252ZXJzYXRpb24gc3RhcnRcbiAgcHJpdmF0ZSBhZGp1c3RNZXNzYWdlVGltZXN0YW1wcyhtZXNzYWdlOiBDaGF0TWVzc2FnZSk6IENoYXRNZXNzYWdlIHtcbiAgICBpZiAoIXRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSkge1xuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICBzdGFydF90aW1lOiBtZXNzYWdlLnN0YXJ0X3RpbWUgLSB0aGlzLmNvbnZlcnNhdGlvbkNyZWF0ZVRpbWUsXG4gICAgICBlbmRfdGltZTogbWVzc2FnZS5lbmRfdGltZSAtIHRoaXMuY29udmVyc2F0aW9uQ3JlYXRlVGltZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -32,6 +32,7 @@ export interface StartConversationResponse {
32
32
  agent_thinking_phrases?: string[];
33
33
  agent_thinking_phrase_delay?: number;
34
34
  create_time?: number;
35
+ guest_token?: string;
35
36
  }
36
37
  export interface AgentWelcomeData {
37
38
  title?: string | null;
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2kxOG4nO1xuXG4vLyBDaGF0IG1lc3NhZ2UgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUZlZWRiYWNrIHtcbiAgZmVlZGJhY2s6IFwiZ29vZFwiIHwgXCJiYWRcIjtcbiAgZmVlZGJhY2tfdGltZXN0YW1wPzogc3RyaW5nO1xuICBmZWVkYmFja191c2VyX2lkPzogc3RyaW5nO1xuICBmZWVkYmFja19tZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRNZXNzYWdlIHtcbiAgY3JlYXRlX3RpbWU6IG51bWJlcjtcbiAgc3RhcnRfdGltZTogbnVtYmVyO1xuICBlbmRfdGltZTogbnVtYmVyO1xuICBzcGVha2VyOiBcImN1c3RvbWVyXCIgfCBcImFnZW50XCIgfCBcInNwZWNpYWxcIjtcbiAgdGV4dDogc3RyaW5nO1xuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRbXTtcbiAgLy8gT3B0aW9uYWwgbWV0YWRhdGFcbiAgbWVzc2FnZV9pZD86IHN0cmluZztcbiAgZmVlZGJhY2s/OiBNZXNzYWdlRmVlZGJhY2tbXTtcbn1cblxuLy8gQXR0YWNobWVudCB0eXBlXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaG1lbnQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xuICB1cmw6IHN0cmluZztcbn1cblxuLy8gQVBJIFJlc3BvbnNlIHR5cGVzXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0Q29udmVyc2F0aW9uUmVzcG9uc2Uge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGNvbnZlcnNhdGlvbl9pZDogc3RyaW5nO1xuICBhZ2VudF93ZWxjb21lX21lc3NhZ2U/OiBzdHJpbmc7XG4gIGFnZW50X3Bvc3NpYmxlX3F1ZXJpZXM/OiBzdHJpbmdbXTtcbiAgYWdlbnRfd2VsY29tZV90aXRsZT86IHN0cmluZztcbiAgYWdlbnRfd2VsY29tZV9pbWFnZV91cmw/OiBzdHJpbmc7XG4gIGFnZW50X2lkPzogc3RyaW5nO1xuICBhZ2VudF90aGlua2luZ19waHJhc2VzPzogc3RyaW5nW107XG4gIGFnZW50X3RoaW5raW5nX3BocmFzZV9kZWxheT86IG51bWJlcjsgLy8gc2Vjb25kc1xuICBjcmVhdGVfdGltZT86IG51bWJlcjtcbn1cblxuLy8gQWdlbnQgd2VsY29tZS9jb25maWcgaW5mb1xuZXhwb3J0IGludGVyZmFjZSBBZ2VudFdlbGNvbWVEYXRhIHtcbiAgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICBtZXNzYWdlPzogc3RyaW5nIHwgbnVsbDtcbiAgaW1hZ2VVcmw/OiBzdHJpbmcgfCBudWxsO1xuICBwb3NzaWJsZVF1ZXJpZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudFRoaW5raW5nQ29uZmlnIHtcbiAgcGhyYXNlczogc3RyaW5nW107XG4gIGRlbGF5TXM6IG51bWJlcjsgLy8gcm90YXRpb24gZGVsYXkgaW4gbXNcbn1cblxuLy8gSW50ZXJhY3RpdmUgY29udGVudCB0eXBlc1xuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljQ2hhdEl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBpbWFnZT86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHZlbnVlSWQ/OiBzdHJpbmc7XG4gIHNsb3RzPzogc3RyaW5nW107XG4gIHNlbGVjdGVkU2xvdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZyB8IG51bGw7XG4gIHJlc3RhdXJhbnRzOiBEeW5hbWljQ2hhdEl0ZW1bXTtcbn1cblxuZXhwb3J0IHR5cGUgQ2hhdENvbnRlbnRCbG9jayA9XG4gIHwgeyBraW5kOiBcInRleHRcIjsgdGV4dDogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6IFwiaXRlbXNcIjsgaXRlbXM6IER5bmFtaWNDaGF0SXRlbVtdIH1cbiAgfCB7IGtpbmQ6IFwic2NoZWR1bGVcIjsgc2NoZWR1bGU6IFNjaGVkdWxlSXRlbSB9XG4gIHwgeyBraW5kOiBcIm9wdGlvbnNcIjsgb3B0aW9uczogc3RyaW5nW10gfTtcblxuLy8gUHJvcHMgZm9yIHRoZSBHZW5BZ2VudENoYXQgY29tcG9uZW50XG5leHBvcnQgaW50ZXJmYWNlIEdlbkFnZW50Q2hhdFByb3BzIHtcbiAgYmFzZVVybDogc3RyaW5nO1xuICBhcGlLZXk6IHN0cmluZztcbiAgdGVuYW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjsgLy8gRm9yIHBhc3NpbmcgdXNlciBpbmZvcm1hdGlvbiBvciBvdGhlciBtZXRhZGF0YVxuICBvbkVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgb25UYWtlb3Zlcj86ICgpID0+IHZvaWQ7XG4gIG9uRmluYWxpemU/OiAoKSA9PiB2b2lkO1xuICB0aGVtZT86IHtcbiAgICBwcmltYXJ5Q29sb3I/OiBzdHJpbmc7XG4gICAgc2Vjb25kYXJ5Q29sb3I/OiBzdHJpbmc7XG4gICAgZm9udEZhbWlseT86IHN0cmluZztcbiAgICBmb250U2l6ZT86IHN0cmluZztcbiAgICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gICAgdGV4dENvbG9yPzogc3RyaW5nO1xuICB9O1xuICBoZWFkZXJUaXRsZT86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGFnZW50TmFtZT86IHN0cmluZzsgLy8gQ3VzdG9tIGFnZW50IG5hbWUgdG8gZGlzcGxheSBpbnN0ZWFkIG9mIFwiQWdlbnRcIlxuICBsb2dvVXJsPzogc3RyaW5nOyAvLyBDdXN0b20gbG9nbyBVUkwgdG8gZGlzcGxheSBpbiBoZWFkZXIgaW5zdGVhZCBvZiBkZWZhdWx0IGxvZ29cbiAgbW9kZT86IFwiZW1iZWRkZWRcIiB8IFwiZmxvYXRpbmdcIjtcbiAgZmxvYXRpbmdDb25maWc/OiB7XG4gICAgcG9zaXRpb24/OiBcImJvdHRvbS1yaWdodFwiIHwgXCJib3R0b20tbGVmdFwiIHwgXCJ0b3AtcmlnaHRcIiB8IFwidG9wLWxlZnRcIjtcbiAgICBvZmZzZXQ/OiB7IHg/OiBudW1iZXI7IHk/OiBudW1iZXIgfTtcbiAgICB0b2dnbGVCdXR0b25JY29uPzogUmVhY3QuUmVhY3RFbGVtZW50O1xuICAgIGNsb3NlQnV0dG9uSWNvbj86IFJlYWN0LlJlYWN0RWxlbWVudDtcbiAgfTtcbiAgbGFuZ3VhZ2U/OiBzdHJpbmc7IC8vIExhbmd1YWdlIGNvZGUgKGUuZy4sICdlbicsICdlcycsICdmcicpLiBJZiBub3QgcHJvdmlkZWQsIHdpbGwgdXNlIGJyb3dzZXIgbGFuZ3VhZ2VcbiAgdHJhbnNsYXRpb25zPzogUGFydGlhbDxUcmFuc2xhdGlvbnM+OyAvLyBDdXN0b20gdHJhbnNsYXRpb25zLiBJZiBub3QgcHJvdmlkZWQsIHdpbGwgdXNlIGRlZmF1bHQgRW5nbGlzaCB0cmFuc2xhdGlvbnNcbn1cblxuZXhwb3J0IHR5cGUgeyBUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi91dGlscy9pMThuJztcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2kxOG4nO1xuXG4vLyBDaGF0IG1lc3NhZ2UgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUZlZWRiYWNrIHtcbiAgZmVlZGJhY2s6IFwiZ29vZFwiIHwgXCJiYWRcIjtcbiAgZmVlZGJhY2tfdGltZXN0YW1wPzogc3RyaW5nO1xuICBmZWVkYmFja191c2VyX2lkPzogc3RyaW5nO1xuICBmZWVkYmFja19tZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRNZXNzYWdlIHtcbiAgY3JlYXRlX3RpbWU6IG51bWJlcjtcbiAgc3RhcnRfdGltZTogbnVtYmVyO1xuICBlbmRfdGltZTogbnVtYmVyO1xuICBzcGVha2VyOiBcImN1c3RvbWVyXCIgfCBcImFnZW50XCIgfCBcInNwZWNpYWxcIjtcbiAgdGV4dDogc3RyaW5nO1xuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRbXTtcbiAgLy8gT3B0aW9uYWwgbWV0YWRhdGFcbiAgbWVzc2FnZV9pZD86IHN0cmluZztcbiAgZmVlZGJhY2s/OiBNZXNzYWdlRmVlZGJhY2tbXTtcbn1cblxuLy8gQXR0YWNobWVudCB0eXBlXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaG1lbnQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xuICB1cmw6IHN0cmluZztcbn1cblxuLy8gQVBJIFJlc3BvbnNlIHR5cGVzXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0Q29udmVyc2F0aW9uUmVzcG9uc2Uge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGNvbnZlcnNhdGlvbl9pZDogc3RyaW5nO1xuICBhZ2VudF93ZWxjb21lX21lc3NhZ2U/OiBzdHJpbmc7XG4gIGFnZW50X3Bvc3NpYmxlX3F1ZXJpZXM/OiBzdHJpbmdbXTtcbiAgYWdlbnRfd2VsY29tZV90aXRsZT86IHN0cmluZztcbiAgYWdlbnRfd2VsY29tZV9pbWFnZV91cmw/OiBzdHJpbmc7XG4gIGFnZW50X2lkPzogc3RyaW5nO1xuICBhZ2VudF90aGlua2luZ19waHJhc2VzPzogc3RyaW5nW107XG4gIGFnZW50X3RoaW5raW5nX3BocmFzZV9kZWxheT86IG51bWJlcjsgLy8gc2Vjb25kc1xuICBjcmVhdGVfdGltZT86IG51bWJlcjtcbiAgZ3Vlc3RfdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8vIEFnZW50IHdlbGNvbWUvY29uZmlnIGluZm9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRXZWxjb21lRGF0YSB7XG4gIHRpdGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgbWVzc2FnZT86IHN0cmluZyB8IG51bGw7XG4gIGltYWdlVXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgcG9zc2libGVRdWVyaWVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRUaGlua2luZ0NvbmZpZyB7XG4gIHBocmFzZXM6IHN0cmluZ1tdO1xuICBkZWxheU1zOiBudW1iZXI7IC8vIHJvdGF0aW9uIGRlbGF5IGluIG1zXG59XG5cbi8vIEludGVyYWN0aXZlIGNvbnRlbnQgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0NoYXRJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgaW1hZ2U/OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIGNhdGVnb3J5Pzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB2ZW51ZUlkPzogc3RyaW5nO1xuICBzbG90cz86IHN0cmluZ1tdO1xuICBzZWxlY3RlZFNsb3Q/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICByZXN0YXVyYW50czogRHluYW1pY0NoYXRJdGVtW107XG59XG5cbmV4cG9ydCB0eXBlIENoYXRDb250ZW50QmxvY2sgPVxuICB8IHsga2luZDogXCJ0ZXh0XCI7IHRleHQ6IHN0cmluZyB9XG4gIHwgeyBraW5kOiBcIml0ZW1zXCI7IGl0ZW1zOiBEeW5hbWljQ2hhdEl0ZW1bXSB9XG4gIHwgeyBraW5kOiBcInNjaGVkdWxlXCI7IHNjaGVkdWxlOiBTY2hlZHVsZUl0ZW0gfVxuICB8IHsga2luZDogXCJvcHRpb25zXCI7IG9wdGlvbnM6IHN0cmluZ1tdIH07XG5cbi8vIFByb3BzIGZvciB0aGUgR2VuQWdlbnRDaGF0IGNvbXBvbmVudFxuZXhwb3J0IGludGVyZmFjZSBHZW5BZ2VudENoYXRQcm9wcyB7XG4gIGJhc2VVcmw6IHN0cmluZztcbiAgYXBpS2V5OiBzdHJpbmc7XG4gIHRlbmFudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIEZvciBwYXNzaW5nIHVzZXIgaW5mb3JtYXRpb24gb3Igb3RoZXIgbWV0YWRhdGFcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGFrZW92ZXI/OiAoKSA9PiB2b2lkO1xuICBvbkZpbmFsaXplPzogKCkgPT4gdm9pZDtcbiAgdGhlbWU/OiB7XG4gICAgcHJpbWFyeUNvbG9yPzogc3RyaW5nO1xuICAgIHNlY29uZGFyeUNvbG9yPzogc3RyaW5nO1xuICAgIGZvbnRGYW1pbHk/OiBzdHJpbmc7XG4gICAgZm9udFNpemU/OiBzdHJpbmc7XG4gICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgIHRleHRDb2xvcj86IHN0cmluZztcbiAgfTtcbiAgaGVhZGVyVGl0bGU/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBhZ2VudE5hbWU/OiBzdHJpbmc7IC8vIEN1c3RvbSBhZ2VudCBuYW1lIHRvIGRpc3BsYXkgaW5zdGVhZCBvZiBcIkFnZW50XCJcbiAgbG9nb1VybD86IHN0cmluZzsgLy8gQ3VzdG9tIGxvZ28gVVJMIHRvIGRpc3BsYXkgaW4gaGVhZGVyIGluc3RlYWQgb2YgZGVmYXVsdCBsb2dvXG4gIG1vZGU/OiBcImVtYmVkZGVkXCIgfCBcImZsb2F0aW5nXCI7XG4gIGZsb2F0aW5nQ29uZmlnPzoge1xuICAgIHBvc2l0aW9uPzogXCJib3R0b20tcmlnaHRcIiB8IFwiYm90dG9tLWxlZnRcIiB8IFwidG9wLXJpZ2h0XCIgfCBcInRvcC1sZWZ0XCI7XG4gICAgb2Zmc2V0PzogeyB4PzogbnVtYmVyOyB5PzogbnVtYmVyIH07XG4gICAgdG9nZ2xlQnV0dG9uSWNvbj86IFJlYWN0LlJlYWN0RWxlbWVudDtcbiAgICBjbG9zZUJ1dHRvbkljb24/OiBSZWFjdC5SZWFjdEVsZW1lbnQ7XG4gIH07XG4gIGxhbmd1YWdlPzogc3RyaW5nOyAvLyBMYW5ndWFnZSBjb2RlIChlLmcuLCAnZW4nLCAnZXMnLCAnZnInKS4gSWYgbm90IHByb3ZpZGVkLCB3aWxsIHVzZSBicm93c2VyIGxhbmd1YWdlXG4gIHRyYW5zbGF0aW9ucz86IFBhcnRpYWw8VHJhbnNsYXRpb25zPjsgLy8gQ3VzdG9tIHRyYW5zbGF0aW9ucy4gSWYgbm90IHByb3ZpZGVkLCB3aWxsIHVzZSBkZWZhdWx0IEVuZ2xpc2ggdHJhbnNsYXRpb25zXG59XG5cbmV4cG9ydCB0eXBlIHsgVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vdXRpbHMvaTE4bic7XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genassist-chat-react",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "description": "React chat component for GenAssist",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",