stream-chat-angular 2.20.0 → 3.0.0-beta.3

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 (61) hide show
  1. package/assets/version.d.ts +1 -1
  2. package/bundles/stream-chat-angular.umd.js +623 -399
  3. package/bundles/stream-chat-angular.umd.js.map +1 -1
  4. package/esm2015/assets/version.js +2 -2
  5. package/esm2015/lib/attachment-list/attachment-list.component.js +27 -15
  6. package/esm2015/lib/attachment-preview-list/attachment-preview-list.component.js +28 -22
  7. package/esm2015/lib/avatar-placeholder/avatar-placeholder.component.js +41 -0
  8. package/esm2015/lib/channel-header/channel-header.component.js +26 -12
  9. package/esm2015/lib/channel-list/channel-list.component.js +23 -13
  10. package/esm2015/lib/channel-preview/channel-preview.component.js +3 -3
  11. package/esm2015/lib/channel.service.js +1 -1
  12. package/esm2015/lib/custom-templates.service.js +99 -0
  13. package/esm2015/lib/icon-placeholder/icon-placeholder.component.js +34 -0
  14. package/esm2015/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.js +42 -0
  15. package/esm2015/lib/message/message.component.js +73 -23
  16. package/esm2015/lib/message-actions-box/message-actions-box.component.js +123 -95
  17. package/esm2015/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.js +13 -13
  18. package/esm2015/lib/message-input/message-input-config.service.js +1 -1
  19. package/esm2015/lib/message-input/message-input.component.js +43 -45
  20. package/esm2015/lib/message-input/textarea.directive.js +2 -18
  21. package/esm2015/lib/message-input/textarea.interface.js +1 -1
  22. package/esm2015/lib/message-list/message-list.component.js +32 -93
  23. package/esm2015/lib/message-reactions/message-reactions.component.js +3 -3
  24. package/esm2015/lib/modal/modal.component.js +9 -6
  25. package/esm2015/lib/notification/notification.component.js +5 -2
  26. package/esm2015/lib/notification-list/notification-list.component.js +12 -10
  27. package/esm2015/lib/stream-avatar.module.js +5 -4
  28. package/esm2015/lib/stream-chat.module.js +13 -3
  29. package/esm2015/lib/thread/thread.component.js +19 -11
  30. package/esm2015/lib/types.js +1 -1
  31. package/esm2015/public-api.js +5 -1
  32. package/fesm2015/stream-chat-angular.js +570 -318
  33. package/fesm2015/stream-chat-angular.js.map +1 -1
  34. package/lib/attachment-list/attachment-list.component.d.ts +7 -3
  35. package/lib/attachment-preview-list/attachment-preview-list.component.d.ts +17 -7
  36. package/lib/avatar-placeholder/avatar-placeholder.component.d.ts +25 -0
  37. package/lib/channel-header/channel-header.component.d.ts +13 -10
  38. package/lib/channel-list/channel-list.component.d.ts +12 -9
  39. package/lib/channel.service.d.ts +1 -2
  40. package/lib/custom-templates.service.d.ts +92 -0
  41. package/lib/icon-placeholder/icon-placeholder.component.d.ts +22 -0
  42. package/lib/loading-indicator-placeholder/loading-indicator-placeholder.component.d.ts +21 -0
  43. package/lib/message/message.component.d.ts +21 -28
  44. package/lib/message-actions-box/message-actions-box.component.d.ts +20 -25
  45. package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +6 -10
  46. package/lib/message-input/message-input-config.service.d.ts +0 -19
  47. package/lib/message-input/message-input.component.d.ts +15 -25
  48. package/lib/message-input/textarea.directive.d.ts +2 -5
  49. package/lib/message-input/textarea.interface.d.ts +1 -4
  50. package/lib/message-list/message-list.component.d.ts +10 -34
  51. package/lib/message-reactions/message-reactions.component.d.ts +1 -2
  52. package/lib/modal/modal.component.d.ts +7 -3
  53. package/lib/notification/notification.component.d.ts +6 -1
  54. package/lib/notification-list/notification-list.component.d.ts +4 -2
  55. package/lib/stream-avatar.module.d.ts +4 -3
  56. package/lib/stream-chat.module.d.ts +6 -4
  57. package/lib/thread/thread.component.d.ts +6 -3
  58. package/lib/types.d.ts +99 -1
  59. package/package.json +1 -1
  60. package/public-api.d.ts +4 -0
  61. package/src/assets/version.ts +1 -1
@@ -5,27 +5,20 @@ import * as i0 from "@angular/core";
5
5
  import * as i1 from "../channel.service";
6
6
  import * as i2 from "../chat-client.service";
7
7
  import * as i3 from "./image-load.service";
8
- import * as i4 from "../avatar/avatar.component";
9
- import * as i5 from "../message/message.component";
10
- import * as i6 from "@angular/common";
11
- import * as i7 from "@ngx-translate/core";
8
+ import * as i4 from "../custom-templates.service";
9
+ import * as i5 from "../avatar-placeholder/avatar-placeholder.component";
10
+ import * as i6 from "../message/message.component";
11
+ import * as i7 from "@angular/common";
12
+ import * as i8 from "@ngx-translate/core";
12
13
  /**
13
14
  * The `MessageList` component renders a scrollable list of messages.
14
15
  */
15
16
  export class MessageListComponent {
16
- constructor(channelService, chatClientService, imageLoadService) {
17
+ constructor(channelService, chatClientService, imageLoadService, customTemplatesService) {
17
18
  this.channelService = channelService;
18
19
  this.chatClientService = chatClientService;
19
20
  this.imageLoadService = imageLoadService;
20
- /**
21
- * @deprecated use [channel capabilities](https://getstream.io/chat/docs/javascript/channel_capabilities/?language=javascript) instead. If true, the message reactions are displayed. Users can also react to messages if they have the necessary [channel capability](https://getstream.io/chat/docs/javascript/channel_capabilities/?language=javascript).
22
- */
23
- this.areReactionsEnabled = undefined;
24
- /**
25
- * @deprecated use [channel capabilities](https://getstream.io/chat/docs/javascript/channel_capabilities/?language=javascript) instead. The list of [actions that are enabled](./MessageActionsBoxComponent.mdx), please note that the user also has to have the necessary [channel capabilities](https://getstream.io/chat/docs/javascript/channel_capabilities/?language=javascript) for actions to work. Unathorized actions won't be displayed on the UI. The `MessgaeList` component makes the necessary checks before passing the actions to the `Message` component.
26
- */
27
- /* eslint-disable-next-line @angular-eslint/no-input-rename */
28
- this.enabledMessageActionsInput = undefined;
21
+ this.customTemplatesService = customTemplatesService;
29
22
  /**
30
23
  * Determines if the message list should display channel messages or [thread messages](https://getstream.io/chat/docs/javascript/threads/?language=javascript).
31
24
  */
@@ -34,7 +27,6 @@ export class MessageListComponent {
34
27
  this.class = 'str-chat-angular__main-panel-inner str-chat-angular__message-list-host';
35
28
  this.unreadMessageCount = 0;
36
29
  this.groupStyles = [];
37
- this.authorizedMessageActions = ['flag'];
38
30
  this.isUserScrolledUpThreshold = 300;
39
31
  this.subscriptions = [];
40
32
  this.subscriptions.push(this.channelService.activeChannel$.subscribe((channel) => {
@@ -42,39 +34,7 @@ export class MessageListComponent {
42
34
  this.resetScrollState();
43
35
  const capabilites = (_a = channel === null || channel === void 0 ? void 0 : channel.data) === null || _a === void 0 ? void 0 : _a.own_capabilities;
44
36
  if (capabilites) {
45
- this.canReactToMessage = capabilites.indexOf('send-reaction') !== -1;
46
- this.canReceiveReadEvents = capabilites.indexOf('read-events') !== -1;
47
- this.authorizedMessageActions = [];
48
- if (this.canReactToMessage) {
49
- this.authorizedMessageActions.push('send-reaction');
50
- }
51
- if (this.canReceiveReadEvents) {
52
- this.authorizedMessageActions.push('read-events');
53
- }
54
- if (capabilites.indexOf('flag-message') !== -1) {
55
- this.authorizedMessageActions.push('flag');
56
- }
57
- if (capabilites.indexOf('update-own-message') !== -1) {
58
- this.authorizedMessageActions.push('edit');
59
- }
60
- if (capabilites.indexOf('update-any-message') !== -1) {
61
- this.authorizedMessageActions.push('edit');
62
- this.authorizedMessageActions.push('edit-any');
63
- }
64
- if (capabilites.indexOf('delete-own-message') !== -1) {
65
- this.authorizedMessageActions.push('delete');
66
- }
67
- if (capabilites.indexOf('delete-any-message') !== -1) {
68
- this.authorizedMessageActions.push('delete');
69
- this.authorizedMessageActions.push('delete-any');
70
- }
71
- if (capabilites.indexOf('send-reply') !== -1) {
72
- this.authorizedMessageActions.push('send-reply');
73
- }
74
- if (capabilites.indexOf('quote-message') !== -1) {
75
- this.authorizedMessageActions.push('quote-message');
76
- }
77
- this.setEnabledActions();
37
+ this.enabledMessageActions = capabilites;
78
38
  }
79
39
  }));
80
40
  this.subscriptions.push(this.imageLoadService.imageLoad$.subscribe(() => {
@@ -95,6 +55,8 @@ export class MessageListComponent {
95
55
  }
96
56
  this.parentMessage = message;
97
57
  }));
58
+ this.subscriptions.push(this.customTemplatesService.messageTemplate$.subscribe((template) => (this.messageTemplate = template)));
59
+ this.subscriptions.push(this.customTemplatesService.typingIndicatorTemplate$.subscribe((template) => (this.typingIndicatorTemplate = template)));
98
60
  this.usersTypingInChannel$ = this.channelService.usersTypingInChannel$;
99
61
  this.usersTypingInThread$ = this.channelService.usersTypingInThread$;
100
62
  }
@@ -102,9 +64,6 @@ export class MessageListComponent {
102
64
  this.setMessages$();
103
65
  }
104
66
  ngOnChanges(changes) {
105
- if (changes.enabledMessageActionsInput) {
106
- this.setEnabledActions();
107
- }
108
67
  if (changes.mode) {
109
68
  this.setMessages$();
110
69
  }
@@ -136,11 +95,6 @@ export class MessageListComponent {
136
95
  ngOnDestroy() {
137
96
  this.subscriptions.forEach((s) => s.unsubscribe());
138
97
  }
139
- get usersTyping$() {
140
- return this.mode === 'thread'
141
- ? this.usersTypingInThread$
142
- : this.usersTypingInChannel$;
143
- }
144
98
  trackByMessageId(index, item) {
145
99
  return item.id;
146
100
  }
@@ -173,31 +127,24 @@ export class MessageListComponent {
173
127
  }
174
128
  this.prevScrollTop = this.scrollContainer.nativeElement.scrollTop;
175
129
  }
130
+ getTypingIndicatorContext() {
131
+ return {
132
+ usersTyping$: this.usersTyping$,
133
+ };
134
+ }
135
+ getMessageContext(message) {
136
+ return {
137
+ message,
138
+ isLastSentMessage: !!(this.lastSentMessageId && (message === null || message === void 0 ? void 0 : message.id) === this.lastSentMessageId),
139
+ enabledMessageActions: this.enabledMessageActions,
140
+ mode: this.mode,
141
+ };
142
+ }
176
143
  preserveScrollbarPosition() {
177
144
  this.scrollContainer.nativeElement.scrollTop =
178
145
  (this.prevScrollTop || 0) +
179
146
  (this.scrollContainer.nativeElement.scrollHeight - this.containerHeight);
180
147
  }
181
- setEnabledActions() {
182
- this.enabledMessageActions = [];
183
- if (!this.enabledMessageActionsInput) {
184
- this.enabledMessageActions = this.authorizedMessageActions;
185
- return;
186
- }
187
- this.enabledMessageActionsInput = [
188
- ...this.enabledMessageActionsInput,
189
- 'send-reaction',
190
- 'read-events',
191
- 'send-reply',
192
- 'quote-message',
193
- ];
194
- this.enabledMessageActionsInput.forEach((action) => {
195
- const isAuthorized = this.authorizedMessageActions.indexOf(action) !== -1;
196
- if (isAuthorized) {
197
- this.enabledMessageActions.push(action);
198
- }
199
- });
200
- }
201
148
  setMessages$() {
202
149
  this.messages$ = (this.mode === 'main'
203
150
  ? this.channelService.activeChannelMessages$
@@ -250,9 +197,14 @@ export class MessageListComponent {
250
197
  this.prevScrollTop = undefined;
251
198
  this.isNewMessageSentByUser = undefined;
252
199
  }
200
+ get usersTyping$() {
201
+ return this.mode === 'thread'
202
+ ? this.usersTypingInThread$
203
+ : this.usersTypingInChannel$;
204
+ }
253
205
  }
254
- MessageListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageListComponent, deps: [{ token: i1.ChannelService }, { token: i2.ChatClientService }, { token: i3.ImageLoadService }], target: i0.ɵɵFactoryTarget.Component });
255
- MessageListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageListComponent, selector: "stream-message-list", inputs: { messageTemplate: "messageTemplate", messageInputTemplate: "messageInputTemplate", mentionTemplate: "mentionTemplate", typingIndicatorTemplate: "typingIndicatorTemplate", areReactionsEnabled: "areReactionsEnabled", enabledMessageActionsInput: ["enabledMessageActions", "enabledMessageActionsInput"], mode: "mode" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }, { propertyName: "parentMessageElement", first: true, predicate: ["parentMessageElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #scrollContainer\n data-testid=\"scroll-container\"\n class=\"str-chat__list\"\n (scroll)=\"scrolled()\"\n>\n <div class=\"str-chat__reverse-infinite-scroll\">\n <ul class=\"str-chat__ul\">\n <li\n #parentMessageElement\n *ngIf=\"mode === 'thread'\"\n data-testid=\"parent-message\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplateContainer;\n context: { message: parentMessage }\n \"\n ></ng-container>\n <div class=\"str-chat__thread-start\" translate>\n streamChat.Start of a new thread\n </div>\n </li>\n <li\n data-testclass=\"message\"\n *ngFor=\"\n let message of messages$ | async;\n let i = index;\n trackBy: trackByMessageId\n \"\n class=\"str-chat__li str-chat__li--{{ groupStyles[i] }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplateContainer;\n context: { message: message }\n \"\n ></ng-container>\n </li>\n </ul>\n <ng-container *ngIf=\"typingIndicatorTemplate; else defaultTypingIndicator\">\n <ng-container\n *ngTemplateOutlet=\"\n typingIndicatorTemplate;\n context: { usersTyping$: usersTyping$ }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultTypingIndicator>\n <div\n *ngIf=\"(usersTyping$ | async)?.length\"\n data-testid=\"typing-indicator\"\n class=\"str-chat__typing-indicator str-chat__typing-indicator--typing\"\n >\n <stream-avatar\n *ngFor=\"let user of usersTyping$ | async; trackBy: trackByUserId\"\n [name]=\"user.name || user.id\"\n [imageUrl]=\"user.image\"\n ></stream-avatar>\n <div class=\"str-chat__typing-indicator__dots\">\n <span class=\"str-chat__typing-indicator__dot\"></span>\n <span class=\"str-chat__typing-indicator__dot\"></span>\n <span class=\"str-chat__typing-indicator__dot\"></span>\n </div>\n </div>\n </ng-template>\n </div>\n</div>\n<div class=\"str-chat__list-notifications\">\n <button\n data-testid=\"scroll-to-bottom\"\n *ngIf=\"isUserScrolledUp\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-right\n str-chat__message-notification-scroll-down\n \"\n (keyup.enter)=\"scrollToBottom()\"\n (click)=\"scrollToBottom()\"\n >\n <div\n *ngIf=\"unreadMessageCount > 0\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-scroll-down-unread-count\n \"\n >\n {{ unreadMessageCount }}\n </div>\n </button>\n</div>\n\n<ng-template #messageTemplateContainer let-message=\"message\">\n <ng-container *ngIf=\"messageTemplate; else defaultMessageTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplate;\n context: {\n message: message,\n areReactionsEnabled: areReactionsEnabled,\n canReactToMessage: canReactToMessage,\n lastSentMessageId: !!(\n lastSentMessageId && message?.id === lastSentMessageId\n ),\n canReceiveReadEvents: canReceiveReadEvents,\n messageInputTemplate: messageInputTemplate,\n mentionTemplate: mentionTemplate,\n mode: mode\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultMessageTemplate>\n <stream-message\n [message]=\"message\"\n [areReactionsEnabled]=\"areReactionsEnabled\"\n [canReactToMessage]=\"canReactToMessage\"\n [isLastSentMessage]=\"\n !!(lastSentMessageId && message?.id === lastSentMessageId)\n \"\n [enabledMessageActions]=\"enabledMessageActions\"\n [canReceiveReadEvents]=\"canReceiveReadEvents\"\n [messageInputTemplate]=\"messageInputTemplate\"\n [mentionTemplate]=\"mentionTemplate\"\n [mode]=\"mode\"\n ></stream-message>\n </ng-template>\n</ng-template>\n", components: [{ type: i4.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }, { type: i5.MessageComponent, selector: "stream-message", inputs: ["messageInputTemplate", "mentionTemplate", "message", "enabledMessageActions", "areReactionsEnabled", "canReactToMessage", "isLastSentMessage", "canReceiveReadEvents", "mode"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i6.AsyncPipe } });
206
+ MessageListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageListComponent, deps: [{ token: i1.ChannelService }, { token: i2.ChatClientService }, { token: i3.ImageLoadService }, { token: i4.CustomTemplatesService }], target: i0.ɵɵFactoryTarget.Component });
207
+ MessageListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageListComponent, selector: "stream-message-list", inputs: { mode: "mode" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }, { propertyName: "parentMessageElement", first: true, predicate: ["parentMessageElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #scrollContainer\n data-testid=\"scroll-container\"\n class=\"str-chat__list\"\n (scroll)=\"scrolled()\"\n>\n <div class=\"str-chat__reverse-infinite-scroll\">\n <ul class=\"str-chat__ul\">\n <li\n #parentMessageElement\n *ngIf=\"mode === 'thread'\"\n data-testid=\"parent-message\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplateContainer;\n context: { message: parentMessage }\n \"\n ></ng-container>\n <div class=\"str-chat__thread-start\" translate>\n streamChat.Start of a new thread\n </div>\n </li>\n <li\n data-testclass=\"message\"\n *ngFor=\"\n let message of messages$ | async;\n let i = index;\n trackBy: trackByMessageId\n \"\n class=\"str-chat__li str-chat__li--{{ groupStyles[i] }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplateContainer;\n context: { message: message }\n \"\n ></ng-container>\n </li>\n </ul>\n <ng-template #defaultTypingIndicator let-usersTyping$=\"usersTyping$\">\n <div\n *ngIf=\"$any(usersTyping$ | async)?.length\"\n data-testid=\"typing-indicator\"\n class=\"str-chat__typing-indicator str-chat__typing-indicator--typing\"\n >\n <stream-avatar-placeholder\n *ngFor=\"let user of usersTyping$ | async; trackBy: trackByUserId\"\n [name]=\"user.name || user.id\"\n [imageUrl]=\"user.image\"\n ></stream-avatar-placeholder>\n <div class=\"str-chat__typing-indicator__dots\">\n <span class=\"str-chat__typing-indicator__dot\"></span>\n <span class=\"str-chat__typing-indicator__dot\"></span>\n <span class=\"str-chat__typing-indicator__dot\"></span>\n </div>\n </div>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n typingIndicatorTemplate || defaultTypingIndicator;\n context: getTypingIndicatorContext()\n \"\n ></ng-container>\n </div>\n</div>\n<div class=\"str-chat__list-notifications\">\n <button\n data-testid=\"scroll-to-bottom\"\n *ngIf=\"isUserScrolledUp\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-right\n str-chat__message-notification-scroll-down\n \"\n (keyup.enter)=\"scrollToBottom()\"\n (click)=\"scrollToBottom()\"\n >\n <div\n *ngIf=\"unreadMessageCount > 0\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-scroll-down-unread-count\n \"\n >\n {{ unreadMessageCount }}\n </div>\n </button>\n</div>\n\n<ng-template #messageTemplateContainer let-message=\"message\">\n <ng-template\n #defaultMessageTemplate\n let-messageInput=\"message\"\n let-isLastSentMessage=\"isLastSentMessage\"\n let-enabledMessageActions=\"enabledMessageActions\"\n let-mode=\"mode\"\n >\n <stream-message\n [message]=\"messageInput\"\n [isLastSentMessage]=\"isLastSentMessage\"\n [enabledMessageActions]=\"enabledMessageActions\"\n [mode]=\"mode\"\n ></stream-message>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplate || defaultMessageTemplate;\n context: getMessageContext(message)\n \"\n ></ng-container>\n</ng-template>\n", components: [{ type: i5.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size"] }, { type: i6.MessageComponent, selector: "stream-message", inputs: ["message", "enabledMessageActions", "isLastSentMessage", "mode"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i7.AsyncPipe } });
256
208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageListComponent, decorators: [{
257
209
  type: Component,
258
210
  args: [{
@@ -260,20 +212,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
260
212
  templateUrl: './message-list.component.html',
261
213
  styles: [],
262
214
  }]
263
- }], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i2.ChatClientService }, { type: i3.ImageLoadService }]; }, propDecorators: { messageTemplate: [{
264
- type: Input
265
- }], messageInputTemplate: [{
266
- type: Input
267
- }], mentionTemplate: [{
268
- type: Input
269
- }], typingIndicatorTemplate: [{
270
- type: Input
271
- }], areReactionsEnabled: [{
272
- type: Input
273
- }], enabledMessageActionsInput: [{
274
- type: Input,
275
- args: ['enabledMessageActions']
276
- }], mode: [{
215
+ }], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i2.ChatClientService }, { type: i3.ImageLoadService }, { type: i4.CustomTemplatesService }]; }, propDecorators: { mode: [{
277
216
  type: Input
278
217
  }], class: [{
279
218
  type: HostBinding,
@@ -285,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
285
224
  type: ViewChild,
286
225
  args: ['parentMessageElement']
287
226
  }] } });
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFNTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBSTVEOztHQUVHO0FBTUgsTUFBTSxPQUFPLG9CQUFvQjtJQWdFL0IsWUFDVSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsZ0JBQWtDO1FBRmxDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE5QzVDOztXQUVHO1FBQ00sd0JBQW1CLEdBQXdCLFNBQVMsQ0FBQztRQUM5RDs7V0FFRztRQUNILDhEQUE4RDtRQUM5QiwrQkFBMEIsR0FFMUMsU0FBUyxDQUFDO1FBQzFCOztXQUVHO1FBQ00sU0FBSSxHQUFzQixNQUFNLENBQUM7UUFJMUMsMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBQ1AsVUFBSyxHQUNqQyx3RUFBd0UsQ0FBQztRQUMzRSx1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFFdkIsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBYXZCLDZCQUF3QixHQUFhLENBQUMsTUFBTSxDQUFDLENB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QjtRQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDL0IsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQztJQUMxQyxDQUFDOztpSEF6VFUsb0JBQW9CO3FHQUFwQixvQkFBb0IseXFCQzlCakMsMi9IQWdJQTsyRkRsR2Esb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLE1BQU0sRUFBRSxFQUFFO2lCQUNYO29LQU9VLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSUcsdUJBQXVCO3NCQUEvQixLQUFLO2dCQU1HLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFLMEIsMEJBQTBCO3NCQUF6RCxLQUFLO3VCQUFDLHVCQUF1QjtnQkFNckIsSUFBSTtzQkFBWixLQUFLO2dCQUt3QixLQUFLO3NCQUFsQyxXQUFXO3VCQUFDLE9BQU87Z0JBUVosZUFBZTtzQkFEdEIsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBR3BCLG9CQUFvQjtzQkFEM0IsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERlZmF1bHRVc2VyVHlwZSwgU3RyZWFtTWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRHcm91cFN0eWxlcywgR3JvdXBTdHlsZSB9IGZyb20gJy4vZ3JvdXAtc3R5bGVzJztcbmltcG9ydCB7IEltYWdlTG9hZFNlcnZpY2UgfSBmcm9tICcuL2ltYWdlLWxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5cbi8qKlxuICogVGhlIGBNZXNzYWdlTGlzdGAgY29tcG9uZW50IHJlbmRlcnMgYSBzY3JvbGxhYmxlIGxpc3Qgb2YgbWVzc2FnZXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tZXNzYWdlLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUxpc3RDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgW2RlZmF1bHQgbWVzc2FnZSBjb21wb25lbnRdKC4vTWVzc2FnZUNvbXBvbmVudC5tZHgpIGlzIHVzZWQuIFRvIGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhlIG1lc3NhZ2UsIHByb3ZpZGUgW3lvdXIgb3duIGN1c3RvbSBtZXNzYWdlIHRlbXBsYXRlXSguL01lc3NhZ2VDb21wb25lbnQubWR4LyNjdXN0b21pemF0aW9uKS5cbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBpbnB1dCB1c2VkIGZvciBtZXNzYWdlIGVkaXQuIEJ5IGRlZmF1bHQsIHRoZSBbZGVmYXVsdCBtZXNzYWdlIGlucHV0IGNvbXBvbmVudF0oLi9NZXNzYWdlSW5wdXRDb21wb25lbnQubWR4KSBpcyB1c2VkLiBUbyBjaGFuZ2UgdGhlIGlucHV0IGZvciBtZXNzYWdlIGVkaXQsIHByb3ZpZGUgW3lvdXIgb3duIGN1c3RvbSB0ZW1wbGF0ZV0oLi9NZXNzYWdlSW5wdXRDb21wb25lbnQubWR4LyNjdXN0b21pemF0aW9uKS5cbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2VJbnB1dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIHVzZWQgdG8gZGlzcGxheSBhIG1lbnRpb24gaW4gYSBtZXNzYWdlLiBJdCByZWNlaXZlcyB0aGUgbWVudGlvbmVkIHVzZXIgaW4gYSB2YXJpYWJsZSBjYWxsZWQgYHVzZXJgIHdpdGggdGhlIHR5cGUgW2BVc2VyUmVzcG9uc2VgXShodHRwczovL2dpdGh1Yi5jb20vR2V0U3RyZWFtL3N0cmVhbS1jaGF0LWpzL2Jsb2IvbWFzdGVyL3NyYy90eXBlcy50cykuIFlvdSBjYW4gcHJvdmlkZSB5b3VyIG93biB0ZW1wbGF0ZSBpZiB5b3Ugd2FudCB0byBbYWRkIGFjdGlvbnMgdG8gbWVudGlvbnNdKC4uL2NvZGUtZXhhbXBsZXMvbWVudGlvbi1hY3Rpb25zLm1keCkuXG4gICAqL1xuICBASW5wdXQoKSBtZW50aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBZb3UgY2FuIHByb3ZpZGUgeW91ciBvd24gdHlwaW5nIGluZGljYXRvciB0ZW1wbGF0ZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IG9uZS5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGluZ0luZGljYXRvclRlbXBsYXRlOlxuICAgIHwgVGVtcGxhdGVSZWY8eyB1c2Vyc1R5cGluZyQ6IE9ic2VydmFibGU8VXNlclJlc3BvbnNlPERlZmF1bHRVc2VyVHlwZT5bXT4gfT5cbiAgICB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBbY2hhbm5lbCBjYXBhYmlsaXRpZXNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KSBpbnN0ZWFkLiBJZiB0cnVlLCB0aGUgbWVzc2FnZSByZWFjdGlvbnMgYXJlIGRpc3BsYXllZC4gVXNlcnMgY2FuIGFsc28gcmVhY3QgdG8gbWVzc2FnZXMgaWYgdGhleSBoYXZlIHRoZSBuZWNlc3NhcnkgW2NoYW5uZWwgY2FwYWJpbGl0eV0oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvY2hhbm5lbF9jYXBhYmlsaXRpZXMvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICAgKi9cbiAgQElucHV0KCkgYXJlUmVhY3Rpb25zRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBbY2hhbm5lbCBjYXBhYmlsaXRpZXNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KSBpbnN0ZWFkLiBUaGUgbGlzdCBvZiBbYWN0aW9ucyB0aGF0IGFyZSBlbmFibGVkXSguL01lc3NhZ2VBY3Rpb25zQm94Q29tcG9uZW50Lm1keCksIHBsZWFzZSBub3RlIHRoYXQgdGhlIHVzZXIgYWxzbyBoYXMgdG8gaGF2ZSB0aGUgbmVjZXNzYXJ5IFtjaGFubmVsIGNhcGFiaWxpdGllc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvY2hhbm5lbF9jYXBhYmlsaXRpZXMvP2xhbmd1YWdlPWphdmFzY3JpcHQpIGZvciBhY3Rpb25zIHRvIHdvcmsuIFVuYXRob3JpemVkIGFjdGlvbnMgd29uJ3QgYmUgZGlzcGxheWVkIG9uIHRoZSBVSS4gVGhlIGBNZXNzZ2FlTGlzdGAgY29tcG9uZW50IG1ha2VzIHRoZSBuZWNlc3NhcnkgY2hlY2tzIGJlZm9yZSBwYXNzaW5nIHRoZSBhY3Rpb25zIHRvIHRoZSBgTWVzc2FnZWAgY29tcG9uZW50LlxuICAgKi9cbiAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWUgKi9cbiAgQElucHV0KCdlbmFibGVkTWVzc2FnZUFjdGlvbnMnKSBlbmFibGVkTWVzc2FnZUFjdGlvbnNJbnB1dDpcbiAgICB8IHN0cmluZ1tdXG4gICAgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBtZXNzYWdlIGxpc3Qgc2hvdWxkIGRpc3BsYXkgY2hhbm5lbCBtZXNzYWdlcyBvciBbdGhyZWFkIG1lc3NhZ2VzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC90aHJlYWRzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6ICdtYWluJyB8ICd0aHJlYWQnID0gJ21haW4nO1xuICBtZXNzYWdlcyQhOiBPYnNlcnZhYmxlPFN0cmVhbU1lc3NhZ2VbXT47XG4gIGNhblJlYWN0VG9NZXNzYWdlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBjYW5SZWNlaXZlUmVhZEV2ZW50czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHJpdmF0ZSBjbGFzcyA9XG4gICAgJ3N0ci1jaGF0LWFuZ3VsYXJfX21haW4tcGFuZWwtaW5uZXIgc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1saXN0LWhvc3QnO1xuICB1bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICBpc1VzZXJTY3JvbGxlZFVwOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBncm91cFN0eWxlczogR3JvdXBTdHlsZVtdID0gW107XG4gIGxhc3RTZW50TWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBhcmVudE1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRhaW5lcicpXG4gIHByaXZhdGUgc2Nyb2xsQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3BhcmVudE1lc3NhZ2VFbGVtZW50JylcbiAgcHJpdmF0ZSBwYXJlbnRNZXNzYWdlRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIGxhdGVzdE1lc3NhZ2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhhc05ld01lc3NhZ2VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNvbnRhaW5lckhlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9sZGVzdE1lc3NhZ2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9sZGVyTWFzc2FnZXNMb2FkZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaXNOZXdNZXNzYWdlU2VudEJ5VXNlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBhdXRob3JpemVkTWVzc2FnZUFjdGlvbnM6IHN0cmluZ1tdID0gWydmbGFnJ107XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNVc2VyU2Nyb2xsZWRVcFRocmVzaG9sZCA9IDMwMDtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIHByZXZTY3JvbGxUb3A6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSB1c2Vyc1R5cGluZ0luQ2hhbm5lbCQhOiBPYnNlcnZhYmxlPFVzZXJSZXNwb25zZTxEZWZhdWx0VXNlclR5cGU+W10+O1xuICBwcml2YXRlIHVzZXJzVHlwaW5nSW5UaHJlYWQkITogT2JzZXJ2YWJsZTxVc2VyUmVzcG9uc2U8RGVmYXVsdFVzZXJUeXBlPltdPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIGltYWdlTG9hZFNlcnZpY2U6IEltYWdlTG9hZFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoY2hhbm5lbCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsU3RhdGUoKTtcbiAgICAgICAgY29uc3QgY2FwYWJpbGl0ZXMgPSBjaGFubmVsPy5kYXRhPy5vd25fY2FwYWJpbGl0aWVzIGFzIHN0cmluZ1tdO1xuICAgICAgICBpZiAoY2FwYWJpbGl0ZXMpIHtcbiAgICAgICAgICB0aGlzLmNhblJlYWN0VG9NZXNzYWdlID0gY2FwYWJpbGl0ZXMuaW5kZXhPZignc2VuZC1yZWFjdGlvbicpICE9PSAtMTtcbiAgICAgICAgICB0aGlzLmNhblJlY2VpdmVSZWFkRXZlbnRzID0gY2FwYWJpbGl0ZXMuaW5kZXhPZigncmVhZC1ldmVudHMnKSAhPT0gLTE7XG4gICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMgPSBbXTtcbiAgICAgICAgICBpZiAodGhpcy5jYW5SZWFjdFRvTWVzc2FnZSkge1xuICAgICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgnc2VuZC1yZWFjdGlvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5jYW5SZWNlaXZlUmVhZEV2ZW50cykge1xuICAgICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgncmVhZC1ldmVudHMnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNhcGFiaWxpdGVzLmluZGV4T2YoJ2ZsYWctbWVzc2FnZScpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgnZmxhZycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2FwYWJpbGl0ZXMuaW5kZXhPZigndXBkYXRlLW93bi1tZXNzYWdlJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdlZGl0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjYXBhYmlsaXRlcy5pbmRleE9mKCd1cGRhdGUtYW55LW1lc3NhZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2VkaXQnKTtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2VkaXQtYW55Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjYXBhYmlsaXRlcy5pbmRleE9mKCdkZWxldGUtb3duLW1lc3NhZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2RlbGV0ZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2FwYWJpbGl0ZXMuaW5kZXhPZignZGVsZXRlLWFueS1tZXNzYWdlJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdkZWxldGUnKTtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2RlbGV0ZS1hbnknKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNhcGFiaWxpdGVzLmluZGV4T2YoJ3NlbmQtcmVwbHknKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ3NlbmQtcmVwbHknKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNhcGFiaWxpdGVzLmluZGV4T2YoJ3F1b3RlLW1lc3NhZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ3F1b3RlLW1lc3NhZ2UnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZXRFbmFibGVkQWN0aW9ucygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmltYWdlTG9hZFNlcnZpY2UuaW1hZ2VMb2FkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcCkge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgICAvLyBIYWNreSBhbmQgdW5yZWxpYWJsZSB3b3JrYXJvdW5kIHRvIHNjcm9sbCBkb3duIGFmdGVyIGxvYWRlZCBpbWFnZXMgbW92ZSB0aGUgc2Nyb2xsYmFyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVQYXJlbnRNZXNzYWdlJC5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1lc3NhZ2UgJiZcbiAgICAgICAgICB0aGlzLnBhcmVudE1lc3NhZ2UgJiZcbiAgICAgICAgICBtZXNzYWdlLmlkICE9PSB0aGlzLnBhcmVudE1lc3NhZ2UuaWQgJiZcbiAgICAgICAgICB0aGlzLm1vZGUgPT09ICd0aHJlYWQnXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMucmVzZXRTY3JvbGxTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFyZW50TWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy51c2Vyc1R5cGluZ0luQ2hhbm5lbCQgPSB0aGlzLmNoYW5uZWxTZXJ2aWNlLnVzZXJzVHlwaW5nSW5DaGFubmVsJDtcbiAgICB0aGlzLnVzZXJzVHlwaW5nSW5UaHJlYWQkID0gdGhpcy5jaGFubmVsU2VydmljZS51c2Vyc1R5cGluZ0luVGhyZWFkJDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0TWVzc2FnZXMkKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQpIHtcbiAgICAgIHRoaXMuc2V0RW5hYmxlZEFjdGlvbnMoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubW9kZSkge1xuICAgICAgdGhpcy5zZXRNZXNzYWdlcyQoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgaWYgKHRoaXMuaGFzTmV3TWVzc2FnZXMpIHtcbiAgICAgIGlmICghdGhpcy5pc1VzZXJTY3JvbGxlZFVwIHx8IHRoaXMuaXNOZXdNZXNzYWdlU2VudEJ5VXNlcikge1xuICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgIC8vIEhhY2t5IGFuZCB1bnJlbGlhYmxlIHdvcmthcm91bmQgdG8gc2Nyb2xsIGRvd24gYWZ0ZXIgbG9hZGVkIGltYWdlcyBtb3ZlIHRoZSBzY3JvbGxiYXJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgICAgdGhpcy5oYXNOZXdNZXNzYWdlcyA9IGZhbHNlO1xuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCkge1xuICAgICAgdGhpcy5wcmVzZXJ2ZVNjcm9sbGJhclBvc2l0aW9uKCk7XG4gICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgdGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0IDwgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgJiZcbiAgICAgICF0aGlzLmlzVXNlclNjcm9sbGVkVXBcbiAgICApIHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBnZXQgdXNlcnNUeXBpbmckKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICd0aHJlYWQnXG4gICAgICA/IHRoaXMudXNlcnNUeXBpbmdJblRocmVhZCRcbiAgICAgIDogdGhpcy51c2Vyc1R5cGluZ0luQ2hhbm5lbCQ7XG4gIH1cblxuICB0cmFja0J5TWVzc2FnZUlkKGluZGV4OiBudW1iZXIsIGl0ZW06IFN0cmVhbU1lc3NhZ2UpIHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbiAgfVxuXG4gIHRyYWNrQnlVc2VySWQoaW5kZXg6IG51bWJlciwgdXNlcjogVXNlclJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIHVzZXIuaWQ7XG4gIH1cblxuICBzY3JvbGxUb0JvdHRvbSgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgfVxuXG4gIHNjcm9sbGVkKCkge1xuICAgIHRoaXMuaXNVc2VyU2Nyb2xsZWRVcCA9XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAtXG4gICAgICAgICh0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCArXG4gICAgICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpID5cbiAgICAgIHRoaXMuaXNVc2VyU2Nyb2xsZWRVcFRocmVzaG9sZDtcbiAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcCkge1xuICAgICAgdGhpcy51bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA8PVxuICAgICAgICAodGhpcy5wYXJlbnRNZXNzYWdlRWxlbWVudD8ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgfHwgMCkgJiZcbiAgICAgICh0aGlzLnByZXZTY3JvbGxUb3AgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICB0aGlzLnByZXZTY3JvbGxUb3AgPlxuICAgICAgICAgICh0aGlzLnBhcmVudE1lc3NhZ2VFbGVtZW50Py5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCB8fCAwKSlcbiAgICApIHtcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICB0aGlzLm1vZGUgPT09ICdtYWluJ1xuICAgICAgICA/IHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5sb2FkTW9yZU1lc3NhZ2VzKClcbiAgICAgICAgOiB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UubG9hZE1vcmVUaHJlYWRSZXBsaWVzKCk7XG4gICAgfVxuICAgIHRoaXMucHJldlNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVzZXJ2ZVNjcm9sbGJhclBvc2l0aW9uKCkge1xuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgICh0aGlzLnByZXZTY3JvbGxUb3AgfHwgMCkgK1xuICAgICAgKHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5jb250YWluZXJIZWlnaHQhKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RW5hYmxlZEFjdGlvbnMoKSB7XG4gICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMgPSBbXTtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQpIHtcbiAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zID0gdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnM7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQgPSBbXG4gICAgICAuLi50aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9uc0lucHV0LFxuICAgICAgJ3NlbmQtcmVhY3Rpb24nLFxuICAgICAgJ3JlYWQtZXZlbnRzJyxcbiAgICAgICdzZW5kLXJlcGx5JyxcbiAgICAgICdxdW90ZS1tZXNzYWdlJyxcbiAgICBdO1xuICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBpc0F1dGhvcml6ZWQgPSB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKGFjdGlvbikgIT09IC0xO1xuICAgICAgaWYgKGlzQXV0aG9yaXplZCkge1xuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldE1lc3NhZ2VzJCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VzJCA9IChcbiAgICAgIHRoaXMubW9kZSA9PT0gJ21haW4nXG4gICAgICAgID8gdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsTWVzc2FnZXMkXG4gICAgICAgIDogdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVUaHJlYWRNZXNzYWdlcyRcbiAgICApLnBpcGUoXG4gICAgICB0YXAoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudExhdGVzdE1lc3NhZ2VEYXRlID1cbiAgICAgICAgICBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXS5jcmVhdGVkX2F0O1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMubGF0ZXN0TWVzc2FnZURhdGUgfHxcbiAgICAgICAgICB0aGlzLmxhdGVzdE1lc3NhZ2VEYXRlPy5nZXRUaW1lKCkgPCBjdXJyZW50TGF0ZXN0TWVzc2FnZURhdGUuZ2V0VGltZSgpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZURhdGUgPSBjdXJyZW50TGF0ZXN0TWVzc2FnZURhdGU7XG4gICAgICAgICAgdGhpcy5oYXNOZXdNZXNzYWdlcyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyID1cbiAgICAgICAgICAgIG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdLnVzZXI/LmlkID09PVxuICAgICAgICAgICAgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py51c2VyPy5pZDtcbiAgICAgICAgICBpZiAodGhpcy5pc1VzZXJTY3JvbGxlZFVwKSB7XG4gICAgICAgICAgICB0aGlzLnVucmVhZE1lc3NhZ2VDb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50T2xkZXN0TWVzc2FnZURhdGUgPSBtZXNzYWdlc1swXS5jcmVhdGVkX2F0O1xuICAgICAgICBpZiAoIXRoaXMub2xkZXN0TWVzc2FnZURhdGUpIHtcbiAgICAgICAgICB0aGlzLm9sZGVzdE1lc3NhZ2VEYXRlID0gY3VycmVudE9sZGVzdE1lc3NhZ2VEYXRlO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIHRoaXMub2xkZXN0TWVzc2FnZURhdGU/LmdldFRpbWUoKSA+IGN1cnJlbnRPbGRlc3RNZXNzYWdlRGF0ZS5nZXRUaW1lKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5vbGRlc3RNZXNzYWdlRGF0ZSA9IGN1cnJlbnRPbGRlc3RNZXNzYWdlRGF0ZTtcbiAgICAgICAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRhcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5ncm91cFN0eWxlcyA9IG1lc3NhZ2VzLm1hcCgobSwgaSkgPT5cbiAgICAgICAgICBnZXRHcm91cFN0eWxlcyhtLCBtZXNzYWdlc1tpIC0gMV0sIG1lc3NhZ2VzW2kgKyAxXSlcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKFxuICAgICAgICAobWVzc2FnZXMpID0+XG4gICAgICAgICAgKHRoaXMubGFzdFNlbnRNZXNzYWdlSWQgPSBbLi4ubWVzc2FnZXNdXG4gICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgICAgKG0pID0+XG4gICAgICAgICAgICAgICAgbS51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py51c2VyPy5pZCAmJlxuICAgICAgICAgICAgICAgIG0uc3RhdHVzICE9PSAnc2VuZGluZydcbiAgICAgICAgICAgICk/LmlkKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0U2Nyb2xsU3RhdGUoKSB7XG4gICAgdGhpcy5sYXRlc3RNZXNzYWdlRGF0ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmhhc05ld01lc3NhZ2VzID0gdHJ1ZTtcbiAgICB0aGlzLmlzVXNlclNjcm9sbGVkVXAgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSBmYWxzZTtcbiAgICB0aGlzLm9sZGVzdE1lc3NhZ2VEYXRlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudW5yZWFkTWVzc2FnZUNvdW50ID0gMDtcbiAgICB0aGlzLnByZXZTY3JvbGxUb3AgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyID0gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8ZGl2XG4gICNzY3JvbGxDb250YWluZXJcbiAgZGF0YS10ZXN0aWQ9XCJzY3JvbGwtY29udGFpbmVyXCJcbiAgY2xhc3M9XCJzdHItY2hhdF9fbGlzdFwiXG4gIChzY3JvbGwpPVwic2Nyb2xsZWQoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcmV2ZXJzZS1pbmZpbml0ZS1zY3JvbGxcIj5cbiAgICA8dWwgY2xhc3M9XCJzdHItY2hhdF9fdWxcIj5cbiAgICAgIDxsaVxuICAgICAgICAjcGFyZW50TWVzc2FnZUVsZW1lbnRcbiAgICAgICAgKm5nSWY9XCJtb2RlID09PSAndGhyZWFkJ1wiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwicGFyZW50LW1lc3NhZ2VcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIG1lc3NhZ2VUZW1wbGF0ZUNvbnRhaW5lcjtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgbWVzc2FnZTogcGFyZW50TWVzc2FnZSB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3RocmVhZC1zdGFydFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICBzdHJlYW1DaGF0LlN0YXJ0IG9mIGEgbmV3IHRocmVhZFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGlcbiAgICAgICAgZGF0YS10ZXN0Y2xhc3M9XCJtZXNzYWdlXCJcbiAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgbGV0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMkIHwgYXN5bmM7XG4gICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5TWVzc2FnZUlkXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2xpIHN0ci1jaGF0X19saS0te3sgZ3JvdXBTdHlsZXNbaV0gfX1cIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIG1lc3NhZ2VUZW1wbGF0ZUNvbnRhaW5lcjtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgbWVzc2FnZTogbWVzc2FnZSB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBpbmdJbmRpY2F0b3JUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0VHlwaW5nSW5kaWNhdG9yXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgdHlwaW5nSW5kaWNhdG9yVGVtcGxhdGU7XG4gICAgICAgICAgY29udGV4dDogeyB1c2Vyc1R5cGluZyQ6IHVzZXJzVHlwaW5nJCB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VHlwaW5nSW5kaWNhdG9yPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIih1c2Vyc1R5cGluZyQgfCBhc3luYyk/Lmxlbmd0aFwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwidHlwaW5nLWluZGljYXRvclwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3Igc3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3ItLXR5cGluZ1wiXG4gICAgICA+XG4gICAgICAgIDxzdHJlYW0tYXZhdGFyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHVzZXIgb2YgdXNlcnNUeXBpbmckIHwgYXN5bmM7IHRyYWNrQnk6IHRyYWNrQnlVc2VySWRcIlxuICAgICAgICAgIFtuYW1lXT1cInVzZXIubmFtZSB8fCB1c2VyLmlkXCJcbiAgICAgICAgICBbaW1hZ2VVcmxdPVwidXNlci5pbWFnZVwiXG4gICAgICAgID48L3N0cmVhbS1hdmF0YXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fZG90c1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3JfX2RvdFwiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ci1jaGF0X190eXBpbmctaW5kaWNhdG9yX19kb3RcIj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fZG90XCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xpc3Qtbm90aWZpY2F0aW9uc1wiPlxuICA8YnV0dG9uXG4gICAgZGF0YS10ZXN0aWQ9XCJzY3JvbGwtdG8tYm90dG9tXCJcbiAgICAqbmdJZj1cImlzVXNlclNjcm9sbGVkVXBcIlxuICAgIGNsYXNzPVwiXG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb25cbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvbi1yaWdodFxuICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uLXNjcm9sbC1kb3duXG4gICAgXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwic2Nyb2xsVG9Cb3R0b20oKVwiXG4gICAgKGNsaWNrKT1cInNjcm9sbFRvQm90dG9tKClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJ1bnJlYWRNZXNzYWdlQ291bnQgPiAwXCJcbiAgICAgIGNsYXNzPVwiXG4gICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvblxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb24tc2Nyb2xsLWRvd24tdW5yZWFkLWNvdW50XG4gICAgICBcIlxuICAgID5cbiAgICAgIHt7IHVucmVhZE1lc3NhZ2VDb3VudCB9fVxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21lc3NhZ2VUZW1wbGF0ZUNvbnRhaW5lciBsZXQtbWVzc2FnZT1cIm1lc3NhZ2VcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0TWVzc2FnZVRlbXBsYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgbWVzc2FnZVRlbXBsYXRlO1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICBhcmVSZWFjdGlvbnNFbmFibGVkOiBhcmVSZWFjdGlvbnNFbmFibGVkLFxuICAgICAgICAgIGNhblJlYWN0VG9NZXNzYWdlOiBjYW5SZWFjdFRvTWVzc2FnZSxcbiAgICAgICAgICBsYXN0U2VudE1lc3NhZ2VJZDogISEoXG4gICAgICAgICAgICBsYXN0U2VudE1lc3NhZ2VJZCAmJiBtZXNzYWdlPy5pZCA9PT0gbGFzdFNlbnRNZXNzYWdlSWRcbiAgICAgICAgICApLFxuICAgICAgICAgIGNhblJlY2VpdmVSZWFkRXZlbnRzOiBjYW5SZWNlaXZlUmVhZEV2ZW50cyxcbiAgICAgICAgICBtZXNzYWdlSW5wdXRUZW1wbGF0ZTogbWVzc2FnZUlucHV0VGVtcGxhdGUsXG4gICAgICAgICAgbWVudGlvblRlbXBsYXRlOiBtZW50aW9uVGVtcGxhdGUsXG4gICAgICAgICAgbW9kZTogbW9kZVxuICAgICAgICB9XG4gICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE1lc3NhZ2VUZW1wbGF0ZT5cbiAgICA8c3RyZWFtLW1lc3NhZ2VcbiAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VcIlxuICAgICAgW2FyZVJlYWN0aW9uc0VuYWJsZWRdPVwiYXJlUmVhY3Rpb25zRW5hYmxlZFwiXG4gICAgICBbY2FuUmVhY3RUb01lc3NhZ2VdPVwiY2FuUmVhY3RUb01lc3NhZ2VcIlxuICAgICAgW2lzTGFzdFNlbnRNZXNzYWdlXT1cIlxuICAgICAgICAhIShsYXN0U2VudE1lc3NhZ2VJZCAmJiBtZXNzYWdlPy5pZCA9PT0gbGFzdFNlbnRNZXNzYWdlSWQpXG4gICAgICBcIlxuICAgICAgW2VuYWJsZWRNZXNzYWdlQWN0aW9uc109XCJlbmFibGVkTWVzc2FnZUFjdGlvbnNcIlxuICAgICAgW2NhblJlY2VpdmVSZWFkRXZlbnRzXT1cImNhblJlY2VpdmVSZWFkRXZlbnRzXCJcbiAgICAgIFttZXNzYWdlSW5wdXRUZW1wbGF0ZV09XCJtZXNzYWdlSW5wdXRUZW1wbGF0ZVwiXG4gICAgICBbbWVudGlvblRlbXBsYXRlXT1cIm1lbnRpb25UZW1wbGF0ZVwiXG4gICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICA+PC9zdHJlYW0tbWVzc2FnZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFNTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXJDLE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQUs1RDs7R0FFRztBQU1ILE1BQU0sT0FBTyxvQkFBb0I7SUFrQy9CLFlBQ1UsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLGdCQUFrQyxFQUNsQyxzQkFBOEM7UUFIOUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBbkN4RDs7V0FFRztRQUNNLFNBQUksR0FBc0IsTUFBTSxDQUFDO1FBSTFDLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztRQUNQLFVBQUssR0FDakMsd0VBQXdFLENBQUM7UUFDM0UsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBRXZCLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQWFkLDhCQUF5QixHQUFHLEdBQUcsQ0FBQztRQUN6QyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFXekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJ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QkFDNUMsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7eU1BT1UsSUFBSTtzQkFBWixLQUFLO2dCQUt3QixLQUFLO3NCQUFsQyxXQUFXO3VCQUFDLE9BQU87Z0JBUVosZUFBZTtzQkFEdEIsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBR3BCLG9CQUFvQjtzQkFEM0IsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIERlZmF1bHRVc2VyVHlwZSxcbiAgTWVzc2FnZUNvbnRleHQsXG4gIFN0cmVhbU1lc3NhZ2UsXG4gIFR5cGluZ0luZGljYXRvckNvbnRleHQsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRHcm91cFN0eWxlcywgR3JvdXBTdHlsZSB9IGZyb20gJy4vZ3JvdXAtc3R5bGVzJztcbmltcG9ydCB7IEltYWdlTG9hZFNlcnZpY2UgfSBmcm9tICcuL2ltYWdlLWxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcblxuLyoqXG4gKiBUaGUgYE1lc3NhZ2VMaXN0YCBjb21wb25lbnQgcmVuZGVycyBhIHNjcm9sbGFibGUgbGlzdCBvZiBtZXNzYWdlcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlTGlzdENvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIG1lc3NhZ2UgbGlzdCBzaG91bGQgZGlzcGxheSBjaGFubmVsIG1lc3NhZ2VzIG9yIFt0aHJlYWQgbWVzc2FnZXNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L3RocmVhZHMvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICAgKi9cbiAgQElucHV0KCkgbW9kZTogJ21haW4nIHwgJ3RocmVhZCcgPSAnbWFpbic7XG4gIHR5cGluZ0luZGljYXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxUeXBpbmdJbmRpY2F0b3JDb250ZXh0PiB8IHVuZGVmaW5lZDtcbiAgbWVzc2FnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxNZXNzYWdlQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2VzJCE6IE9ic2VydmFibGU8U3RyZWFtTWVzc2FnZVtdPjtcbiAgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHJpdmF0ZSBjbGFzcyA9XG4gICAgJ3N0ci1jaGF0LWFuZ3VsYXJfX21haW4tcGFuZWwtaW5uZXIgc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1saXN0LWhvc3QnO1xuICB1bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICBpc1VzZXJTY3JvbGxlZFVwOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBncm91cFN0eWxlczogR3JvdXBTdHlsZVtdID0gW107XG4gIGxhc3RTZW50TWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBhcmVudE1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRhaW5lcicpXG4gIHByaXZhdGUgc2Nyb2xsQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3BhcmVudE1lc3NhZ2VFbGVtZW50JylcbiAgcHJpdmF0ZSBwYXJlbnRNZXNzYWdlRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIGxhdGVzdE1lc3NhZ2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhhc05ld01lc3NhZ2VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNvbnRhaW5lckhlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9sZGVzdE1lc3NhZ2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9sZGVyTWFzc2FnZXNMb2FkZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaXNOZXdNZXNzYWdlU2VudEJ5VXNlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBpc1VzZXJTY3JvbGxlZFVwVGhyZXNob2xkID0gMzAwO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgcHJldlNjcm9sbFRvcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHVzZXJzVHlwaW5nSW5DaGFubmVsJCE6IE9ic2VydmFibGU8VXNlclJlc3BvbnNlPERlZmF1bHRVc2VyVHlwZT5bXT47XG4gIHByaXZhdGUgdXNlcnNUeXBpbmdJblRocmVhZCQhOiBPYnNlcnZhYmxlPFVzZXJSZXNwb25zZTxEZWZhdWx0VXNlclR5cGU+W10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1hZ2VMb2FkU2VydmljZTogSW1hZ2VMb2FkU2VydmljZSxcbiAgICBwcml2YXRlIGN1c3RvbVRlbXBsYXRlc1NlcnZpY2U6IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoY2hhbm5lbCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsU3RhdGUoKTtcbiAgICAgICAgY29uc3QgY2FwYWJpbGl0ZXMgPSBjaGFubmVsPy5kYXRhPy5vd25fY2FwYWJpbGl0aWVzIGFzIHN0cmluZ1tdO1xuICAgICAgICBpZiAoY2FwYWJpbGl0ZXMpIHtcbiAgICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyA9IGNhcGFiaWxpdGVzO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmltYWdlTG9hZFNlcnZpY2UuaW1hZ2VMb2FkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcCkge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgICAvLyBIYWNreSBhbmQgdW5yZWxpYWJsZSB3b3JrYXJvdW5kIHRvIHNjcm9sbCBkb3duIGFmdGVyIGxvYWRlZCBpbWFnZXMgbW92ZSB0aGUgc2Nyb2xsYmFyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVQYXJlbnRNZXNzYWdlJC5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1lc3NhZ2UgJiZcbiAgICAgICAgICB0aGlzLnBhcmVudE1lc3NhZ2UgJiZcbiAgICAgICAgICBtZXNzYWdlLmlkICE9PSB0aGlzLnBhcmVudE1lc3NhZ2UuaWQgJiZcbiAgICAgICAgICB0aGlzLm1vZGUgPT09ICd0aHJlYWQnXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMucmVzZXRTY3JvbGxTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFyZW50TWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubWVzc2FnZVRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMubWVzc2FnZVRlbXBsYXRlID0gdGVtcGxhdGUpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS50eXBpbmdJbmRpY2F0b3JUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+ICh0aGlzLnR5cGluZ0luZGljYXRvclRlbXBsYXRlID0gdGVtcGxhdGUpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnVzZXJzVHlwaW5nSW5DaGFubmVsJCA9IHRoaXMuY2hhbm5lbFNlcnZpY2UudXNlcnNUeXBpbmdJbkNoYW5uZWwkO1xuICAgIHRoaXMudXNlcnNUeXBpbmdJblRocmVhZCQgPSB0aGlzLmNoYW5uZWxTZXJ2aWNlLnVzZXJzVHlwaW5nSW5UaHJlYWQkO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRNZXNzYWdlcyQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5tb2RlKSB7XG4gICAgICB0aGlzLnNldE1lc3NhZ2VzJCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICBpZiAodGhpcy5oYXNOZXdNZXNzYWdlcykge1xuICAgICAgaWYgKCF0aGlzLmlzVXNlclNjcm9sbGVkVXAgfHwgdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgLy8gSGFja3kgYW5kIHVucmVsaWFibGUgd29ya2Fyb3VuZCB0byBzY3JvbGwgZG93biBhZnRlciBsb2FkZWQgaW1hZ2VzIG1vdmUgdGhlIHNjcm9sbGJhclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG4gICAgICB0aGlzLmhhc05ld01lc3NhZ2VzID0gZmFsc2U7XG4gICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkKSB7XG4gICAgICB0aGlzLnByZXNlcnZlU2Nyb2xsYmFyUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPCB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAmJlxuICAgICAgIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcFxuICAgICkge1xuICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHRyYWNrQnlNZXNzYWdlSWQoaW5kZXg6IG51bWJlciwgaXRlbTogU3RyZWFtTWVzc2FnZSkge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgdHJhY2tCeVVzZXJJZChpbmRleDogbnVtYmVyLCB1c2VyOiBVc2VyUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gdXNlci5pZDtcbiAgfVxuXG4gIHNjcm9sbFRvQm90dG9tKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICB9XG5cbiAgc2Nyb2xsZWQoKSB7XG4gICAgdGhpcy5pc1VzZXJTY3JvbGxlZFVwID1cbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC1cbiAgICAgICAgKHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wICtcbiAgICAgICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCkgPlxuICAgICAgdGhpcy5pc1VzZXJTY3JvbGxlZFVwVGhyZXNob2xkO1xuICAgIGlmICghdGhpcy5pc1VzZXJTY3JvbGxlZFVwKSB7XG4gICAgICB0aGlzLnVucmVhZE1lc3NhZ2VDb3VudCA9IDA7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wIDw9XG4gICAgICAgICh0aGlzLnBhcmVudE1lc3NhZ2VFbGVtZW50Py5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCB8fCAwKSAmJlxuICAgICAgKHRoaXMucHJldlNjcm9sbFRvcCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHRoaXMucHJldlNjcm9sbFRvcCA+XG4gICAgICAgICAgKHRoaXMucGFyZW50TWVzc2FnZUVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDApKVxuICAgICkge1xuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIHRoaXMubW9kZSA9PT0gJ21haW4nXG4gICAgICAgID8gdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmxvYWRNb3JlTWVzc2FnZXMoKVxuICAgICAgICA6IHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5sb2FkTW9yZVRocmVhZFJlcGxpZXMoKTtcbiAgICB9XG4gICAgdGhpcy5wcmV2U2Nyb2xsVG9wID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A7XG4gIH1cblxuICBnZXRUeXBpbmdJbmRpY2F0b3JDb250ZXh0KCk6IFR5cGluZ0luZGljYXRvckNvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICB1c2Vyc1R5cGluZyQ6IHRoaXMudXNlcnNUeXBpbmckLFxuICAgIH07XG4gIH1cblxuICBnZXRNZXNzYWdlQ29udGV4dChtZXNzYWdlOiBTdHJlYW1NZXNzYWdlKTogTWVzc2FnZUNvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlLFxuICAgICAgaXNMYXN0U2VudE1lc3NhZ2U6ICEhKFxuICAgICAgICB0aGlzLmxhc3RTZW50TWVzc2FnZUlkICYmIG1lc3NhZ2U/LmlkID09PSB0aGlzLmxhc3RTZW50TWVzc2FnZUlkXG4gICAgICApLFxuICAgICAgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVzZXJ2ZVNjcm9sbGJhclBvc2l0aW9uKCkge1xuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgICh0aGlzLnByZXZTY3JvbGxUb3AgfHwgMCkgK1xuICAgICAgKHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5jb250YWluZXJIZWlnaHQhKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWVzc2FnZXMkKCkge1xuICAgIHRoaXMubWVzc2FnZXMkID0gKFxuICAgICAgdGhpcy5tb2RlID09PSAnbWFpbidcbiAgICAgICAgPyB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWxNZXNzYWdlcyRcbiAgICAgICAgOiB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZVRocmVhZE1lc3NhZ2VzJFxuICAgICkucGlwZShcbiAgICAgIHRhcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50TGF0ZXN0TWVzc2FnZURhdGUgPVxuICAgICAgICAgIG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdLmNyZWF0ZWRfYXQ7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5sYXRlc3RNZXNzYWdlRGF0ZSB8fFxuICAgICAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZURhdGU/LmdldFRpbWUoKSA8IGN1cnJlbnRMYXRlc3RNZXNzYWdlRGF0ZS5nZXRUaW1lKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlRGF0ZSA9IGN1cnJlbnRMYXRlc3RNZXNzYWdlRGF0ZTtcbiAgICAgICAgICB0aGlzLmhhc05ld01lc3NhZ2VzID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIgPVxuICAgICAgICAgICAgbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV0udXNlcj8uaWQgPT09XG4gICAgICAgICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQ/LnVzZXI/LmlkO1xuICAgICAgICAgIGlmICh0aGlzLmlzVXNlclNjcm9sbGVkVXApIHtcbiAgICAgICAgICAgIHRoaXMudW5yZWFkTWVzc2FnZUNvdW50Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPbGRlc3RNZXNzYWdlRGF0ZSA9IG1lc3NhZ2VzWzBdLmNyZWF0ZWRfYXQ7XG4gICAgICAgIGlmICghdGhpcy5vbGRlc3RNZXNzYWdlRGF0ZSkge1xuICAgICAgICAgIHRoaXMub2xkZXN0TWVzc2FnZURhdGUgPSBjdXJyZW50T2xkZXN0TWVzc2FnZURhdGU7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgdGhpcy5vbGRlc3RNZXNzYWdlRGF0ZT8uZ2V0VGltZSgpID4gY3VycmVudE9sZGVzdE1lc3NhZ2VEYXRlLmdldFRpbWUoKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLm9sZGVzdE1lc3NhZ2VEYXRlID0gY3VycmVudE9sZGVzdE1lc3NhZ2VEYXRlO1xuICAgICAgICAgIHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFwKChtZXNzYWdlcykgPT4ge1xuICAgICAgICB0aGlzLmdyb3VwU3R5bGVzID0gbWVzc2FnZXMubWFwKChtLCBpKSA9PlxuICAgICAgICAgIGdldEdyb3VwU3R5bGVzKG0sIG1lc3NhZ2VzW2kgLSAxXSwgbWVzc2FnZXNbaSArIDFdKVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICB0YXAoXG4gICAgICAgIChtZXNzYWdlcykgPT5cbiAgICAgICAgICAodGhpcy5sYXN0U2VudE1lc3NhZ2VJZCA9IFsuLi5tZXNzYWdlc11cbiAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgIC5maW5kKFxuICAgICAgICAgICAgICAobSkgPT5cbiAgICAgICAgICAgICAgICBtLnVzZXI/LmlkID09PSB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQ/LnVzZXI/LmlkICYmXG4gICAgICAgICAgICAgICAgbS5zdGF0dXMgIT09ICdzZW5kaW5nJ1xuICAgICAgICAgICAgKT8uaWQpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTY3JvbGxTdGF0ZSgpIHtcbiAgICB0aGlzLmxhdGVzdE1lc3NhZ2VEYXRlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSB0cnVlO1xuICAgIHRoaXMuaXNVc2VyU2Nyb2xsZWRVcCA9IGZhbHNlO1xuICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMub2xkZXN0TWVzc2FnZURhdGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy51bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICAgIHRoaXMucHJldlNjcm9sbFRvcCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldCB1c2Vyc1R5cGluZyQoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3RocmVhZCdcbiAgICAgID8gdGhpcy51c2Vyc1R5cGluZ0luVGhyZWFkJFxuICAgICAgOiB0aGlzLnVzZXJzVHlwaW5nSW5DaGFubmVsJDtcbiAgfVxufVxuIiwiPGRpdlxuICAjc2Nyb2xsQ29udGFpbmVyXG4gIGRhdGEtdGVzdGlkPVwic2Nyb2xsLWNvbnRhaW5lclwiXG4gIGNsYXNzPVwic3RyLWNoYXRfX2xpc3RcIlxuICAoc2Nyb2xsKT1cInNjcm9sbGVkKClcIlxuPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3JldmVyc2UtaW5maW5pdGUtc2Nyb2xsXCI+XG4gICAgPHVsIGNsYXNzPVwic3RyLWNoYXRfX3VsXCI+XG4gICAgICA8bGlcbiAgICAgICAgI3BhcmVudE1lc3NhZ2VFbGVtZW50XG4gICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3RocmVhZCdcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInBhcmVudC1tZXNzYWdlXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBtZXNzYWdlVGVtcGxhdGVDb250YWluZXI7XG4gICAgICAgICAgICBjb250ZXh0OiB7IG1lc3NhZ2U6IHBhcmVudE1lc3NhZ2UgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190aHJlYWQtc3RhcnRcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgc3RyZWFtQ2hhdC5TdGFydCBvZiBhIG5ldyB0aHJlYWRcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGRhdGEtdGVzdGNsYXNzPVwibWVzc2FnZVwiXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzJCB8IGFzeW5jO1xuICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeU1lc3NhZ2VJZFxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19saSBzdHItY2hhdF9fbGktLXt7IGdyb3VwU3R5bGVzW2ldIH19XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBtZXNzYWdlVGVtcGxhdGVDb250YWluZXI7XG4gICAgICAgICAgICBjb250ZXh0OiB7IG1lc3NhZ2U6IG1lc3NhZ2UgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUeXBpbmdJbmRpY2F0b3IgbGV0LXVzZXJzVHlwaW5nJD1cInVzZXJzVHlwaW5nJFwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiRhbnkodXNlcnNUeXBpbmckIHwgYXN5bmMpPy5sZW5ndGhcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInR5cGluZy1pbmRpY2F0b3JcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X190eXBpbmctaW5kaWNhdG9yIHN0ci1jaGF0X190eXBpbmctaW5kaWNhdG9yLS10eXBpbmdcIlxuICAgICAgPlxuICAgICAgICA8c3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlclxuICAgICAgICAgICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJzVHlwaW5nJCB8IGFzeW5jOyB0cmFja0J5OiB0cmFja0J5VXNlcklkXCJcbiAgICAgICAgICBbbmFtZV09XCJ1c2VyLm5hbWUgfHwgdXNlci5pZFwiXG4gICAgICAgICAgW2ltYWdlVXJsXT1cInVzZXIuaW1hZ2VcIlxuICAgICAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3JfX2RvdHNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ci1jaGF0X190eXBpbmctaW5kaWNhdG9yX19kb3RcIj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fZG90XCI+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3JfX2RvdFwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIHR5cGluZ0luZGljYXRvclRlbXBsYXRlIHx8IGRlZmF1bHRUeXBpbmdJbmRpY2F0b3I7XG4gICAgICAgIGNvbnRleHQ6IGdldFR5cGluZ0luZGljYXRvckNvbnRleHQoKVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xpc3Qtbm90aWZpY2F0aW9uc1wiPlxuICA8YnV0dG9uXG4gICAgZGF0YS10ZXN0aWQ9XCJzY3JvbGwtdG8tYm90dG9tXCJcbiAgICAqbmdJZj1cImlzVXNlclNjcm9sbGVkVXBcIlxuICAgIGNsYXNzPVwiXG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb25cbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvbi1yaWdodFxuICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uLXNjcm9sbC1kb3duXG4gICAgXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwic2Nyb2xsVG9Cb3R0b20oKVwiXG4gICAgKGNsaWNrKT1cInNjcm9sbFRvQm90dG9tKClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJ1bnJlYWRNZXNzYWdlQ291bnQgPiAwXCJcbiAgICAgIGNsYXNzPVwiXG4gICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvblxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb24tc2Nyb2xsLWRvd24tdW5yZWFkLWNvdW50XG4gICAgICBcIlxuICAgID5cbiAgICAgIHt7IHVucmVhZE1lc3NhZ2VDb3VudCB9fVxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21lc3NhZ2VUZW1wbGF0ZUNvbnRhaW5lciBsZXQtbWVzc2FnZT1cIm1lc3NhZ2VcIj5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI2RlZmF1bHRNZXNzYWdlVGVtcGxhdGVcbiAgICBsZXQtbWVzc2FnZUlucHV0PVwibWVzc2FnZVwiXG4gICAgbGV0LWlzTGFzdFNlbnRNZXNzYWdlPVwiaXNMYXN0U2VudE1lc3NhZ2VcIlxuICAgIGxldC1lbmFibGVkTWVzc2FnZUFjdGlvbnM9XCJlbmFibGVkTWVzc2FnZUFjdGlvbnNcIlxuICAgIGxldC1tb2RlPVwibW9kZVwiXG4gID5cbiAgICA8c3RyZWFtLW1lc3NhZ2VcbiAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VJbnB1dFwiXG4gICAgICBbaXNMYXN0U2VudE1lc3NhZ2VdPVwiaXNMYXN0U2VudE1lc3NhZ2VcIlxuICAgICAgW2VuYWJsZWRNZXNzYWdlQWN0aW9uc109XCJlbmFibGVkTWVzc2FnZUFjdGlvbnNcIlxuICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgPjwvc3RyZWFtLW1lc3NhZ2U+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgbWVzc2FnZVRlbXBsYXRlIHx8IGRlZmF1bHRNZXNzYWdlVGVtcGxhdGU7XG4gICAgICBjb250ZXh0OiBnZXRNZXNzYWdlQ29udGV4dChtZXNzYWdlKVxuICAgIFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../channel.service";
4
- import * as i2 from "../avatar/avatar.component";
4
+ import * as i2 from "../avatar-placeholder/avatar-placeholder.component";
5
5
  import * as i3 from "@angular/common";
6
6
  const emojiReactionsMapping = {
7
7
  like: '👍',
@@ -122,7 +122,7 @@ export class MessageReactionsComponent {
122
122
  }
123
123
  }
124
124
  MessageReactionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageReactionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ChannelService }], target: i0.ɵɵFactoryTarget.Component });
125
- MessageReactionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageReactionsComponent, selector: "stream-message-reactions", inputs: { messageId: "messageId", messageReactionCounts: "messageReactionCounts", isSelectorOpen: "isSelectorOpen", latestReactions: "latestReactions", ownReactions: "ownReactions" }, outputs: { isSelectorOpenChange: "isSelectorOpenChange" }, viewQueries: [{ propertyName: "selectorContainer", first: true, predicate: ["selectorContainer"], descendants: true }, { propertyName: "selectorTooltip", first: true, predicate: ["selectorTooltip"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"existingReactions.length > 0 && !isSelectorOpen\"\n class=\"str-chat__reaction-list\"\n [class.str-chat__reaction-list--reverse]=\"true\"\n data-testid=\"reaction-list\"\n>\n <ul>\n <li\n *ngFor=\"\n let reactionType of existingReactions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji\"\n >\n <span class=\"emoji\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n &nbsp;\n </li>\n <li>\n <span\n data-testid=\"reactions-count\"\n class=\"str-chat__reaction-list--counter\"\n >{{ reactionsCount }}</span\n >\n </li>\n </ul>\n</div>\n\n<div\n #selectorContainer\n class=\"str-chat__reaction-selector\"\n *ngIf=\"isSelectorOpen\"\n data-testid=\"reaction-selector\"\n>\n <div\n *ngIf=\"tooltipText\"\n data-testid=\"tooltip\"\n #selectorTooltip\n class=\"str-chat__reaction-selector-tooltip\"\n [ngStyle]=\"{\n left: tooltipPositions?.tooltip + 'px',\n visibility: tooltipPositions ? 'visible' : 'hidden'\n }\"\n >\n <div\n class=\"arrow\"\n [ngStyle]=\"{ left: tooltipPositions?.arrow + 'px' }\"\n ></div>\n <span class=\"latest-user-username\">\n {{ tooltipText }}\n </span>\n </div>\n <ul class=\"str-chat__message-reactions-list\">\n <li\n class=\"str-chat__message-reactions-list-item str-chat__emoji\"\n *ngFor=\"\n let reactionType of reactionOptions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji-option\"\n (click)=\"react(reactionType)\"\n (keyup.enter)=\"react(reactionType)\"\n >\n <div\n *ngIf=\"getLatestUserByReaction(reactionType) as user\"\n class=\"latest-user\"\n (click)=\"hideTooltip()\"\n (keyup.enter)=\"hideTooltip()\"\n (mouseenter)=\"showTooltip($event, reactionType)\"\n (mouseleave)=\"hideTooltip()\"\n attr.data-testid=\"{{ reactionType }}-last-user\"\n >\n <stream-avatar\n attr.data-testid=\"{{ reactionType }}-avatar\"\n [imageUrl]=\"user.image\"\n [name]=\"user.name || user.id\"\n [size]=\"20\"\n ></stream-avatar>\n </div>\n <span class=\"emoji\" style=\"width: 20px; height: 20px; top: 10px\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n <span\n *ngIf=\"\n messageReactionCounts[reactionType] &&\n messageReactionCounts[reactionType]! > 0\n \"\n class=\"str-chat__message-reactions-list-item__count\"\n attr.data-testid=\"{{ reactionType }}-reaction-count\"\n >\n {{ messageReactionCounts[reactionType] }}\n </span>\n </li>\n </ul>\n</div>\n", styles: [".emoji {position: relative; display: inline-block; }"], components: [{ type: i2.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
125
+ MessageReactionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageReactionsComponent, selector: "stream-message-reactions", inputs: { messageId: "messageId", messageReactionCounts: "messageReactionCounts", isSelectorOpen: "isSelectorOpen", latestReactions: "latestReactions", ownReactions: "ownReactions" }, outputs: { isSelectorOpenChange: "isSelectorOpenChange" }, viewQueries: [{ propertyName: "selectorContainer", first: true, predicate: ["selectorContainer"], descendants: true }, { propertyName: "selectorTooltip", first: true, predicate: ["selectorTooltip"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"existingReactions.length > 0 && !isSelectorOpen\"\n class=\"str-chat__reaction-list\"\n [class.str-chat__reaction-list--reverse]=\"true\"\n data-testid=\"reaction-list\"\n>\n <ul>\n <li\n *ngFor=\"\n let reactionType of existingReactions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji\"\n >\n <span class=\"emoji\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n &nbsp;\n </li>\n <li>\n <span\n data-testid=\"reactions-count\"\n class=\"str-chat__reaction-list--counter\"\n >{{ reactionsCount }}</span\n >\n </li>\n </ul>\n</div>\n\n<div\n #selectorContainer\n class=\"str-chat__reaction-selector\"\n *ngIf=\"isSelectorOpen\"\n data-testid=\"reaction-selector\"\n>\n <div\n *ngIf=\"tooltipText\"\n data-testid=\"tooltip\"\n #selectorTooltip\n class=\"str-chat__reaction-selector-tooltip\"\n [ngStyle]=\"{\n left: tooltipPositions?.tooltip + 'px',\n visibility: tooltipPositions ? 'visible' : 'hidden'\n }\"\n >\n <div\n class=\"arrow\"\n [ngStyle]=\"{ left: tooltipPositions?.arrow + 'px' }\"\n ></div>\n <span class=\"latest-user-username\">\n {{ tooltipText }}\n </span>\n </div>\n <ul class=\"str-chat__message-reactions-list\">\n <li\n class=\"str-chat__message-reactions-list-item str-chat__emoji\"\n *ngFor=\"\n let reactionType of reactionOptions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji-option\"\n (click)=\"react(reactionType)\"\n (keyup.enter)=\"react(reactionType)\"\n >\n <div\n *ngIf=\"getLatestUserByReaction(reactionType) as user\"\n class=\"latest-user\"\n (click)=\"hideTooltip()\"\n (keyup.enter)=\"hideTooltip()\"\n (mouseenter)=\"showTooltip($event, reactionType)\"\n (mouseleave)=\"hideTooltip()\"\n attr.data-testid=\"{{ reactionType }}-last-user\"\n >\n <stream-avatar-placeholder\n attr.data-testid=\"{{ reactionType }}-avatar\"\n [imageUrl]=\"user.image\"\n [name]=\"user.name || user.id\"\n [size]=\"20\"\n ></stream-avatar-placeholder>\n </div>\n <span class=\"emoji\" style=\"width: 20px; height: 20px; top: 10px\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n <span\n *ngIf=\"\n messageReactionCounts[reactionType] &&\n messageReactionCounts[reactionType]! > 0\n \"\n class=\"str-chat__message-reactions-list-item__count\"\n attr.data-testid=\"{{ reactionType }}-reaction-count\"\n >\n {{ messageReactionCounts[reactionType] }}\n </span>\n </li>\n </ul>\n</div>\n", styles: [".emoji {position: relative; display: inline-block; }"], components: [{ type: i2.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
126
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageReactionsComponent, decorators: [{
127
127
  type: Component,
128
128
  args: [{
@@ -149,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
149
149
  type: ViewChild,
150
150
  args: ['selectorTooltip']
151
151
  }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXJlYWN0aW9ucy9tZXNzYWdlLXJlYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFhdkIsTUFBTSxxQkFBcUIsR0FBNkM7SUFDdEUsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsSUFBSTtJQUNYLElBQUksRUFBRSxJQUFJO0lBQ1YsSUFBSSxFQUFFLElBQUk7SUFDVixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0NBQ1YsQ0FBQztBQUVGOztHQUVHO0FBTUgsTUFBTSxPQUFPLHlCQUF5QjtJQTBDcEMsWUFDVSxLQUF3QixFQUN4QixjQUE4QjtRQUQ5QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUF2Q3hDOztXQUVHO1FBQ00sMEJBQXFCLEdBQzVCLEVBQUUsQ0FBQztRQUNMOztXQUVHO1FBQ00sbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDekM7O1dBRUc7UUFDTSxvQkFBZSxHQUdsQixFQUFFLENBQUM7UUFDVDs7V0FFRztRQUNNLGlCQUFZLEdBR2YsRUFBRSxDQUFDO1FBQ1Q7O1dBRUc7UUFDZ0IseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQXNGOUQsaUJBQVksR0FBRyxDQUFDLEtBQVks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clJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aW9uUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBEZWZhdWx0UmVhY3Rpb25UeXBlLCBEZWZhdWx0VXNlclR5cGUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VSZWFjdGlvblR5cGUgPVxuICB8ICdhbmdyeSdcbiAgfCAnaGFoYSdcbiAgfCAnbGlrZSdcbiAgfCAnbG92ZSdcbiAgfCAnc2FkJ1xuICB8ICd3b3cnO1xuXG5jb25zdCBlbW9qaVJlYWN0aW9uc01hcHBpbmc6IHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXTogc3RyaW5nIH0gPSB7XG4gIGxpa2U6ICfwn5GNJyxcbiAgYW5ncnk6ICfwn5igJyxcbiAgbG92ZTogJ+KdpO+4jycsXG4gIGhhaGE6ICfwn5iCJyxcbiAgd293OiAn8J+YricsXG4gIHNhZDogJ/CfmJ4nLFxufTtcblxuLyoqXG4gKiBUaGUgYE1lc3NhZ2VSZWFjdGlvbnNgIGNvbXBvbmVudCBkaXNwbGF5cyB0aGUgcmVhY3Rpb25zIG9mIGEgbWVzc2FnZSwgdGhlIGN1cnJlbnQgdXNlciBjYW4gYWRkIGFuZCByZW1vdmUgcmVhY3Rpb25zLiBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCBbbWVzc2FnZSByZWFjdGlvbnNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L3NlbmRfcmVhY3Rpb24vP2xhbmd1YWdlPWphdmFzY3JpcHQpIGluIHRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZS1yZWFjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFsnLmVtb2ppIHtwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlUmVhY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgbWVzc2FnZSB0aGUgcmVhY3Rpb25zIGJlbG9uZyB0b1xuICAgKi9cbiAgQElucHV0KCkgbWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHJlYWN0aW9ucyBncm91cGVkIGJ5IFtyZWFjdGlvbiB0eXBlc10oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1hbmd1bGFyL3RyZWUvbWFzdGVyL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXJlYWN0aW9ucy9tZXNzYWdlLXJlYWN0aW9ucy5jb21wb25lbnQudHMpXG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXT86IG51bWJlciB9ID1cbiAgICB7fTtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIG9wZW5lZCBvciBjbG9zZWQuIEFkZGluZyBhIFVJIGVsZW1lbnQgdG8gb3BlbiBhbmQgY2xvc2UgdGhlIHNlbGVjdG9yIGlzIHRoZSBwYXJlbnQncyBjb21wb25lbnQgcmVzcG9uc2liaWxpdHkuXG4gICAqL1xuICBASW5wdXQoKSBpc1NlbGVjdG9yT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAvKipcbiAgICogTGlzdCBvZiByZWFjdGlvbnMgb2YgYSBbbWVzc2FnZV0oLi4vdHlwZXMvc3RyZWFtLW1lc3NhZ2UubWR4KSwgdXNlZCB0byBkaXNwbGF5IHRoZSB1c2VycyBvZiBhIHJlYWN0aW9uIHR5cGUuXG4gICAqL1xuICBASW5wdXQoKSBsYXRlc3RSZWFjdGlvbnM6IFJlYWN0aW9uUmVzcG9uc2U8XG4gICAgRGVmYXVsdFJlYWN0aW9uVHlwZSxcbiAgICBEZWZhdWx0VXNlclR5cGVcbiAgPltdID0gW107XG4gIC8qKlxuICAgKiBMaXN0IG9mIHRoZSB1c2VyJ3Mgb3duIHJlYWN0aW9ucyBvZiBhIFttZXNzYWdlXSguLi90eXBlcy9zdHJlYW0tbWVzc2FnZS5tZHgpLCB1c2VkIHRvIGRpc3BsYXkgdGhlIHVzZXJzIG9mIGEgcmVhY3Rpb24gdHlwZS5cbiAgICovXG4gIEBJbnB1dCgpIG93blJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxcbiAgICBEZWZhdWx0UmVhY3Rpb25UeXBlLFxuICAgIERlZmF1bHRVc2VyVHlwZVxuICA+W10gPSBbXTtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIG9wZW5lZCBvciBjbG9zZWQuIEFkZGluZyBhIFVJIGVsZW1lbnQgdG8gb3BlbiBhbmQgY2xvc2UgdGhlIHNlbGVjdG9yIGlzIHRoZSBwYXJlbnQncyBjb21wb25lbnQgcmVzcG9uc2liaWxpdHkuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgaXNTZWxlY3Rvck9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHRvb2x0aXBQb3NpdGlvbnM6IHsgYXJyb3c6IG51bWJlcjsgdG9vbHRpcDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG4gIHRvb2x0aXBUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdG9yQ29udGFpbmVyJykgcHJpdmF0ZSBzZWxlY3RvckNvbnRhaW5lcjpcbiAgICB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdG9yVG9vbHRpcCcpIHByaXZhdGUgc2VsZWN0b3JUb29sdGlwOlxuICAgIHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFRvb2x0aXBUYXJnZXQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaXNTZWxlY3Rvck9wZW4pIHtcbiAgICAgIHRoaXMuaXNTZWxlY3Rvck9wZW5cbiAgICAgICAgPyBzZXRUaW1lb3V0KCgpID0+IHRoaXMud2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCkpIC8vIHNldFRpbWVvdXQ6IHdhaXQgZm9yIGN1cnJlbnQgY2xpY2sgdG8gYnViYmxlIHVwLCBhbmQgb25seSB3YXRjaCBmb3IgY2xpY2tzIGFmdGVyIHRoYXRcbiAgICAgICAgOiB0aGlzLnN0b3BXYXRjaEZvck91dHNpZGVDbGlja3MoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbHRpcFRleHQgJiYgIXRoaXMudG9vbHRpcFBvc2l0aW9ucykge1xuICAgICAgdGhpcy5zZXRUb29sdGlwUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBleGlzdGluZ1JlYWN0aW9ucygpOiBNZXNzYWdlUmVhY3Rpb25UeXBlW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1lc3NhZ2VSZWFjdGlvbkNvdW50cykuZmlsdGVyKFxuICAgICAgKGspID0+IHRoaXMubWVzc2FnZVJlYWN0aW9uQ291bnRzW2sgYXMgTWVzc2FnZVJlYWN0aW9uVHlwZV0hID4gMFxuICAgICkgYXMgTWVzc2FnZVJlYWN0aW9uVHlwZVtdO1xuICB9XG5cbiAgZ2V0IHJlYWN0aW9uc0NvdW50KCkge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMubWVzc2FnZVJlYWN0aW9uQ291bnRzKS5yZWR1Y2UoXG4gICAgICAodG90YWwsIGNvdW50KSA9PiB0b3RhbCArIGNvdW50LFxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICBnZXQgcmVhY3Rpb25PcHRpb25zKCk6IE1lc3NhZ2VSZWFjdGlvblR5cGVbXSB7XG4gICAgcmV0dXJuIFsnbGlrZScsICdsb3ZlJywgJ2hhaGEnLCAnd293JywgJ3NhZCcsICdhbmdyeSddO1xuICB9XG5cbiAgZ2V0TGF0ZXN0VXNlckJ5UmVhY3Rpb24ocmVhY3Rpb25UeXBlOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMubGF0ZXN0UmVhY3Rpb25zLmZpbmQoKHIpID0+IHIudHlwZSA9PT0gcmVhY3Rpb25UeXBlICYmIHIudXNlcilcbiAgICAgID8udXNlcjtcbiAgfVxuXG4gIGdldEVtb2ppQnlSZWFjdGlvbihyZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gZW1vamlSZWFjdGlvbnNNYXBwaW5nW3JlYWN0aW9uVHlwZV07XG4gIH1cblxuICBnZXRVc2Vyc0J5UmVhY3Rpb24ocmVhY3Rpb25UeXBlOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMubGF0ZXN0UmVhY3Rpb25zXG4gICAgICAuZmlsdGVyKChyKSA9PiByLnR5cGUgPT09IHJlYWN0aW9uVHlwZSlcbiAgICAgIC5tYXAoKHIpID0+IHIudXNlcj8ubmFtZSB8fCByLnVzZXI/LmlkKVxuICAgICAgLmZpbHRlcigoaSkgPT4gISFpKVxuICAgICAgLmpvaW4oJywgJyk7XG4gIH1cblxuICBzaG93VG9vbHRpcChldmVudDogRXZlbnQsIHJlYWN0aW9uVHlwZTogTWVzc2FnZVJlYWN0aW9uVHlwZSkge1xuICAgIHRoaXMuY3VycmVudFRvb2x0aXBUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy50b29sdGlwVGV4dCA9IHRoaXMuZ2V0VXNlcnNCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZSk7XG4gIH1cblxuICBoaWRlVG9vbHRpcCgpIHtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFRvb2x0aXBUYXJnZXQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50b29sdGlwUG9zaXRpb25zID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdHJhY2tCeU1lc3NhZ2VSZWFjdGlvbihpbmRleDogbnVtYmVyLCBpdGVtOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICByZWFjdCh0eXBlOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgdGhpcy5vd25SZWFjdGlvbnMuZmluZCgocikgPT4gci50eXBlID09PSB0eXBlKVxuICAgICAgPyB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UucmVtb3ZlUmVhY3Rpb24odGhpcy5tZXNzYWdlSWQhLCB0eXBlKVxuICAgICAgOiB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWRkUmVhY3Rpb24odGhpcy5tZXNzYWdlSWQhLCB0eXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgZXZlbnRIYW5kbGVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmICghdGhpcy5zZWxlY3RvckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgIHRoaXMuaXNTZWxlY3Rvck9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgd2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZXZlbnRIYW5kbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcFdhdGNoRm9yT3V0c2lkZUNsaWNrcygpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmV2ZW50SGFuZGxlcik7XG4gIH1cblxuICBwcml2YXRlIHNldFRvb2x0aXBQb3NpdGlvbigpIHtcbiAgICBjb25zdCB0b29sdGlwID0gdGhpcy5zZWxlY3RvclRvb2x0aXA/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5jdXJyZW50VG9vbHRpcFRhcmdldD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBjb250YWluZXIgPVxuICAgICAgdGhpcy5zZWxlY3RvckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGlmICghdG9vbHRpcCB8fCAhdGFyZ2V0IHx8ICFjb250YWluZXIpIHJldHVybjtcblxuICAgIGNvbnN0IHRvb2x0aXBQb3NpdGlvbiA9XG4gICAgICB0b29sdGlwLndpZHRoID09PSBjb250YWluZXIud2lkdGggfHwgdG9vbHRpcC54IDwgY29udGFpbmVyLnhcbiAgICAgICAgPyAwXG4gICAgICAgIDogdGFyZ2V0LmxlZnQgKyB0YXJnZXQud2lkdGggLyAyIC0gY29udGFpbmVyLmxlZnQgLSB0b29sdGlwLndpZHRoIC8gMjtcblxuICAgIGNvbnN0IGFycm93UG9zaXRpb24gPVxuICAgICAgdGFyZ2V0LnggLSB0b29sdGlwLnggKyB0YXJnZXQud2lkdGggLyAyIC0gdG9vbHRpcFBvc2l0aW9uO1xuXG4gICAgdGhpcy50b29sdGlwUG9zaXRpb25zID0ge1xuICAgICAgdG9vbHRpcDogdG9vbHRpcFBvc2l0aW9uLFxuICAgICAgYXJyb3c6IGFycm93UG9zaXRpb24sXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cImV4aXN0aW5nUmVhY3Rpb25zLmxlbmd0aCA+IDAgJiYgIWlzU2VsZWN0b3JPcGVuXCJcbiAgY2xhc3M9XCJzdHItY2hhdF9fcmVhY3Rpb24tbGlzdFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fcmVhY3Rpb24tbGlzdC0tcmV2ZXJzZV09XCJ0cnVlXCJcbiAgZGF0YS10ZXN0aWQ9XCJyZWFjdGlvbi1saXN0XCJcbj5cbiAgPHVsPlxuICAgIDxsaVxuICAgICAgKm5nRm9yPVwiXG4gICAgICAgIGxldCByZWFjdGlvblR5cGUgb2YgZXhpc3RpbmdSZWFjdGlvbnM7XG4gICAgICAgIHRyYWNrQnk6IHRyYWNrQnlNZXNzYWdlUmVhY3Rpb25cbiAgICAgIFwiXG4gICAgICBkYXRhLXRlc3RjbGFzcz1cImVtb2ppXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImVtb2ppXCI+XG4gICAgICAgIHt7IGdldEVtb2ppQnlSZWFjdGlvbihyZWFjdGlvblR5cGUpIH19XG4gICAgICA8L3NwYW4+XG4gICAgICAmbmJzcDtcbiAgICA8L2xpPlxuICAgIDxsaT5cbiAgICAgIDxzcGFuXG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVhY3Rpb25zLWNvdW50XCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fcmVhY3Rpb24tbGlzdC0tY291bnRlclwiXG4gICAgICAgID57eyByZWFjdGlvbnNDb3VudCB9fTwvc3BhblxuICAgICAgPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cblxuPGRpdlxuICAjc2VsZWN0b3JDb250YWluZXJcbiAgY2xhc3M9XCJzdHItY2hhdF9fcmVhY3Rpb24tc2VsZWN0b3JcIlxuICAqbmdJZj1cImlzU2VsZWN0b3JPcGVuXCJcbiAgZGF0YS10ZXN0aWQ9XCJyZWFjdGlvbi1zZWxlY3RvclwiXG4+XG4gIDxkaXZcbiAgICAqbmdJZj1cInRvb2x0aXBUZXh0XCJcbiAgICBkYXRhLXRlc3RpZD1cInRvb2x0aXBcIlxuICAgICNzZWxlY3RvclRvb2x0aXBcbiAgICBjbGFzcz1cInN0ci1jaGF0X19yZWFjdGlvbi1zZWxlY3Rvci10b29sdGlwXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICBsZWZ0OiB0b29sdGlwUG9zaXRpb25zPy50b29sdGlwICsgJ3B4JyxcbiAgICAgIHZpc2liaWxpdHk6IHRvb2x0aXBQb3NpdGlvbnMgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1xuICAgIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJhcnJvd1wiXG4gICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IHRvb2x0aXBQb3NpdGlvbnM/LmFycm93ICsgJ3B4JyB9XCJcbiAgICA+PC9kaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJsYXRlc3QtdXNlci11c2VybmFtZVwiPlxuICAgICAge3sgdG9vbHRpcFRleHQgfX1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuICA8dWwgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtbGlzdFwiPlxuICAgIDxsaVxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtbGlzdC1pdGVtIHN0ci1jaGF0X19lbW9qaVwiXG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IHJlYWN0aW9uVHlwZSBvZiByZWFjdGlvbk9wdGlvbnM7XG4gICAgICAgIHRyYWNrQnk6IHRyYWNrQnlNZXNzYWdlUmVhY3Rpb25cbiAgICAgIFwiXG4gICAgICBkYXRhLXRlc3RjbGFzcz1cImVtb2ppLW9wdGlvblwiXG4gICAgICAoY2xpY2spPVwicmVhY3QocmVhY3Rpb25UeXBlKVwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwicmVhY3QocmVhY3Rpb25UeXBlKVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImdldExhdGVzdFVzZXJCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZSkgYXMgdXNlclwiXG4gICAgICAgIGNsYXNzPVwibGF0ZXN0LXVzZXJcIlxuICAgICAgICAoY2xpY2spPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJoaWRlVG9vbHRpcCgpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwic2hvd1Rvb2x0aXAoJGV2ZW50LCByZWFjdGlvblR5cGUpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgICAgIGF0dHIuZGF0YS10ZXN0aWQ9XCJ7eyByZWFjdGlvblR5cGUgfX0tbGFzdC11c2VyXCJcbiAgICAgID5cbiAgICAgICAgPHN0cmVhbS1hdmF0YXJcbiAgICAgICAgICBhdHRyLmRhdGEtdGVzdGlkPVwie3sgcmVhY3Rpb25UeXBlIH19LWF2YXRhclwiXG4gICAgICAgICAgW2ltYWdlVXJsXT1cInVzZXIuaW1hZ2VcIlxuICAgICAgICAgIFtuYW1lXT1cInVzZXIubmFtZSB8fCB1c2VyLmlkXCJcbiAgICAgICAgICBbc2l6ZV09XCIyMFwiXG4gICAgICAgID48L3N0cmVhbS1hdmF0YXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZW1vamlcIiBzdHlsZT1cIndpZHRoOiAyMHB4OyBoZWlnaHQ6IDIwcHg7IHRvcDogMTBweFwiPlxuICAgICAgICB7eyBnZXRFbW9qaUJ5UmVhY3Rpb24ocmVhY3Rpb25UeXBlKSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBtZXNzYWdlUmVhY3Rpb25Db3VudHNbcmVhY3Rpb25UeXBlXSAmJlxuICAgICAgICAgIG1lc3NhZ2VSZWFjdGlvbkNvdW50c1tyZWFjdGlvblR5cGVdISA+IDBcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtbGlzdC1pdGVtX19jb3VudFwiXG4gICAgICAgIGF0dHIuZGF0YS10ZXN0aWQ9XCJ7eyByZWFjdGlvblR5cGUgfX0tcmVhY3Rpb24tY291bnRcIlxuICAgICAgPlxuICAgICAgICB7eyBtZXNzYWdlUmVhY3Rpb25Db3VudHNbcmVhY3Rpb25UeXBlXSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXJlYWN0aW9ucy9tZXNzYWdlLXJlYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTdkIsTUFBTSxxQkFBcUIsR0FBNkM7SUFDdEUsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsSUFBSTtJQUNYLElBQUksRUFBRSxJQUFJO0lBQ1YsSUFBSSxFQUFFLElBQUk7SUFDVixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0NBQ1YsQ0FBQztBQUVGOztHQUVHO0FBTUgsTUFBTSxPQUFPLHlCQUF5QjtJQTBDcEMsWUFDVSxLQUF3QixFQUN4QixjQUE4QjtRQUQ5QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUF2Q3hDOztXQUVHO1FBQ00sMEJBQXFCLEdBQzVCLEVBQUUsQ0FBQztRQUNMOztXQUVHO1FBQ00sbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDekM7O1dBRUc7UUFDTSxvQkFBZSxHQUdsQixFQUFFLENBQUM7UUFDVDs7V0FFRztRQUNNLGlCQUFZLEdBR2YsRUFBRSxDQUFDO1FBQ1Q7O1dBRUc7UUFDZ0IseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQXNGOUQsaUJBQVksR0FBRyxDQUFDLEtBQVks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clJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aW9uUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQge1xuICBEZWZhdWx0UmVhY3Rpb25UeXBlLFxuICBEZWZhdWx0VXNlclR5cGUsXG4gIE1lc3NhZ2VSZWFjdGlvblR5cGUsXG59IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgZW1vamlSZWFjdGlvbnNNYXBwaW5nOiB7IFtrZXkgaW4gTWVzc2FnZVJlYWN0aW9uVHlwZV06IHN0cmluZyB9ID0ge1xuICBsaWtlOiAn8J+RjScsXG4gIGFuZ3J5OiAn8J+YoCcsXG4gIGxvdmU6ICfinaTvuI8nLFxuICBoYWhhOiAn8J+YgicsXG4gIHdvdzogJ/CfmK4nLFxuICBzYWQ6ICfwn5ieJyxcbn07XG5cbi8qKlxuICogVGhlIGBNZXNzYWdlUmVhY3Rpb25zYCBjb21wb25lbnQgZGlzcGxheXMgdGhlIHJlYWN0aW9ucyBvZiBhIG1lc3NhZ2UsIHRoZSBjdXJyZW50IHVzZXIgY2FuIGFkZCBhbmQgcmVtb3ZlIHJlYWN0aW9ucy4gWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgW21lc3NhZ2UgcmVhY3Rpb25zXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9zZW5kX3JlYWN0aW9uLz9sYW5ndWFnZT1qYXZhc2NyaXB0KSBpbiB0aGUgcGxhdGZvcm0gZG9jdW1lbnRhdGlvbi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UtcmVhY3Rpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbJy5lbW9qaSB7cG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0nXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVJlYWN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIG1lc3NhZ2UgdGhlIHJlYWN0aW9ucyBiZWxvbmcgdG9cbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiByZWFjdGlvbnMgZ3JvdXBlZCBieSBbcmVhY3Rpb24gdHlwZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtYW5ndWxhci90cmVlL21hc3Rlci9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1yZWFjdGlvbnMvbWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50LnRzKVxuICAgKi9cbiAgQElucHV0KCkgbWVzc2FnZVJlYWN0aW9uQ291bnRzOiB7IFtrZXkgaW4gTWVzc2FnZVJlYWN0aW9uVHlwZV0/OiBudW1iZXIgfSA9XG4gICAge307XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHNlbGVjdG9yIHNob3VsZCBiZSBvcGVuZWQgb3IgY2xvc2VkLiBBZGRpbmcgYSBVSSBlbGVtZW50IHRvIG9wZW4gYW5kIGNsb3NlIHRoZSBzZWxlY3RvciBpcyB0aGUgcGFyZW50J3MgY29tcG9uZW50IHJlc3BvbnNpYmlsaXR5LlxuICAgKi9cbiAgQElucHV0KCkgaXNTZWxlY3Rvck9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgcmVhY3Rpb25zIG9mIGEgW21lc3NhZ2VdKC4uL3R5cGVzL3N0cmVhbS1tZXNzYWdlLm1keCksIHVzZWQgdG8gZGlzcGxheSB0aGUgdXNlcnMgb2YgYSByZWFjdGlvbiB0eXBlLlxuICAgKi9cbiAgQElucHV0KCkgbGF0ZXN0UmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPFxuICAgIERlZmF1bHRSZWFjdGlvblR5cGUsXG4gICAgRGVmYXVsdFVzZXJUeXBlXG4gID5bXSA9IFtdO1xuICAvKipcbiAgICogTGlzdCBvZiB0aGUgdXNlcidzIG93biByZWFjdGlvbnMgb2YgYSBbbWVzc2FnZV0oLi4vdHlwZXMvc3RyZWFtLW1lc3NhZ2UubWR4KSwgdXNlZCB0byBkaXNwbGF5IHRoZSB1c2VycyBvZiBhIHJlYWN0aW9uIHR5cGUuXG4gICAqL1xuICBASW5wdXQoKSBvd25SZWFjdGlvbnM6IFJlYWN0aW9uUmVzcG9uc2U8XG4gICAgRGVmYXVsdFJlYWN0aW9uVHlwZSxcbiAgICBEZWZhdWx0VXNlclR5cGVcbiAgPltdID0gW107XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHNlbGVjdG9yIHNob3VsZCBiZSBvcGVuZWQgb3IgY2xvc2VkLiBBZGRpbmcgYSBVSSBlbGVtZW50IHRvIG9wZW4gYW5kIGNsb3NlIHRoZSBzZWxlY3RvciBpcyB0aGUgcGFyZW50J3MgY29tcG9uZW50IHJlc3BvbnNpYmlsaXR5LlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGlzU2VsZWN0b3JPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICB0b29sdGlwUG9zaXRpb25zOiB7IGFycm93OiBudW1iZXI7IHRvb2x0aXA6IG51bWJlciB9IHwgdW5kZWZpbmVkO1xuICB0b29sdGlwVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBAVmlld0NoaWxkKCdzZWxlY3RvckNvbnRhaW5lcicpIHByaXZhdGUgc2VsZWN0b3JDb250YWluZXI6XG4gICAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuICBAVmlld0NoaWxkKCdzZWxlY3RvclRvb2x0aXAnKSBwcml2YXRlIHNlbGVjdG9yVG9vbHRpcDpcbiAgICB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRUb29sdGlwVGFyZ2V0OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmlzU2VsZWN0b3JPcGVuKSB7XG4gICAgICB0aGlzLmlzU2VsZWN0b3JPcGVuXG4gICAgICAgID8gc2V0VGltZW91dCgoKSA9PiB0aGlzLndhdGNoRm9yT3V0c2lkZUNsaWNrcygpKSAvLyBzZXRUaW1lb3V0OiB3YWl0IGZvciBjdXJyZW50IGNsaWNrIHRvIGJ1YmJsZSB1cCwgYW5kIG9ubHkgd2F0Y2ggZm9yIGNsaWNrcyBhZnRlciB0aGF0XG4gICAgICAgIDogdGhpcy5zdG9wV2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2x0aXBUZXh0ICYmICF0aGlzLnRvb2x0aXBQb3NpdGlvbnMpIHtcbiAgICAgIHRoaXMuc2V0VG9vbHRpcFBvc2l0aW9uKCk7XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZXhpc3RpbmdSZWFjdGlvbnMoKTogTWVzc2FnZVJlYWN0aW9uVHlwZVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5tZXNzYWdlUmVhY3Rpb25Db3VudHMpLmZpbHRlcihcbiAgICAgIChrKSA9PiB0aGlzLm1lc3NhZ2VSZWFjdGlvbkNvdW50c1trIGFzIE1lc3NhZ2VSZWFjdGlvblR5cGVdISA+IDBcbiAgICApIGFzIE1lc3NhZ2VSZWFjdGlvblR5cGVbXTtcbiAgfVxuXG4gIGdldCByZWFjdGlvbnNDb3VudCgpIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLm1lc3NhZ2VSZWFjdGlvbkNvdW50cykucmVkdWNlKFxuICAgICAgKHRvdGFsLCBjb3VudCkgPT4gdG90YWwgKyBjb3VudCxcbiAgICAgIDBcbiAgICApO1xuICB9XG5cbiAgZ2V0IHJlYWN0aW9uT3B0aW9ucygpOiBNZXNzYWdlUmVhY3Rpb25UeXBlW10ge1xuICAgIHJldHVybiBbJ2xpa2UnLCAnbG92ZScsICdoYWhhJywgJ3dvdycsICdzYWQnLCAnYW5ncnknXTtcbiAgfVxuXG4gIGdldExhdGVzdFVzZXJCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZTogTWVzc2FnZVJlYWN0aW9uVHlwZSkge1xuICAgIHJldHVybiB0aGlzLmxhdGVzdFJlYWN0aW9ucy5maW5kKChyKSA9PiByLnR5cGUgPT09IHJlYWN0aW9uVHlwZSAmJiByLnVzZXIpXG4gICAgICA/LnVzZXI7XG4gIH1cblxuICBnZXRFbW9qaUJ5UmVhY3Rpb24ocmVhY3Rpb25UeXBlOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgcmV0dXJuIGVtb2ppUmVhY3Rpb25zTWFwcGluZ1tyZWFjdGlvblR5cGVdO1xuICB9XG5cbiAgZ2V0VXNlcnNCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZTogTWVzc2FnZVJlYWN0aW9uVHlwZSkge1xuICAgIHJldHVybiB0aGlzLmxhdGVzdFJlYWN0aW9uc1xuICAgICAgLmZpbHRlcigocikgPT4gci50eXBlID09PSByZWFjdGlvblR5cGUpXG4gICAgICAubWFwKChyKSA9PiByLnVzZXI/Lm5hbWUgfHwgci51c2VyPy5pZClcbiAgICAgIC5maWx0ZXIoKGkpID0+ICEhaSlcbiAgICAgIC5qb2luKCcsICcpO1xuICB9XG5cbiAgc2hvd1Rvb2x0aXAoZXZlbnQ6IEV2ZW50LCByZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICB0aGlzLmN1cnJlbnRUb29sdGlwVGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSB0aGlzLmdldFVzZXJzQnlSZWFjdGlvbihyZWFjdGlvblR5cGUpO1xuICB9XG5cbiAgaGlkZVRvb2x0aXAoKSB7XG4gICAgdGhpcy50b29sdGlwVGV4dCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmN1cnJlbnRUb29sdGlwVGFyZ2V0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudG9vbHRpcFBvc2l0aW9ucyA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRyYWNrQnlNZXNzYWdlUmVhY3Rpb24oaW5kZXg6IG51bWJlciwgaXRlbTogTWVzc2FnZVJlYWN0aW9uVHlwZSkge1xuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgcmVhY3QodHlwZTogTWVzc2FnZVJlYWN0aW9uVHlwZSkge1xuICAgIHRoaXMub3duUmVhY3Rpb25zLmZpbmQoKHIpID0+IHIudHlwZSA9PT0gdHlwZSlcbiAgICAgID8gdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLnJlbW92ZVJlYWN0aW9uKHRoaXMubWVzc2FnZUlkISwgdHlwZSlcbiAgICAgIDogdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFkZFJlYWN0aW9uKHRoaXMubWVzc2FnZUlkISwgdHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGV2ZW50SGFuZGxlciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0b3JDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICB0aGlzLmlzU2VsZWN0b3JPcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHdhdGNoRm9yT3V0c2lkZUNsaWNrcygpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmV2ZW50SGFuZGxlcik7XG4gIH1cblxuICBwcml2YXRlIHN0b3BXYXRjaEZvck91dHNpZGVDbGlja3MoKSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5ldmVudEhhbmRsZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUb29sdGlwUG9zaXRpb24oKSB7XG4gICAgY29uc3QgdG9vbHRpcCA9IHRoaXMuc2VsZWN0b3JUb29sdGlwPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuY3VycmVudFRvb2x0aXBUYXJnZXQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgY29udGFpbmVyID1cbiAgICAgIHRoaXMuc2VsZWN0b3JDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBpZiAoIXRvb2x0aXAgfHwgIXRhcmdldCB8fCAhY29udGFpbmVyKSByZXR1cm47XG5cbiAgICBjb25zdCB0b29sdGlwUG9zaXRpb24gPVxuICAgICAgdG9vbHRpcC53aWR0aCA9PT0gY29udGFpbmVyLndpZHRoIHx8IHRvb2x0aXAueCA8IGNvbnRhaW5lci54XG4gICAgICAgID8gMFxuICAgICAgICA6IHRhcmdldC5sZWZ0ICsgdGFyZ2V0LndpZHRoIC8gMiAtIGNvbnRhaW5lci5sZWZ0IC0gdG9vbHRpcC53aWR0aCAvIDI7XG5cbiAgICBjb25zdCBhcnJvd1Bvc2l0aW9uID1cbiAgICAgIHRhcmdldC54IC0gdG9vbHRpcC54ICsgdGFyZ2V0LndpZHRoIC8gMiAtIHRvb2x0aXBQb3NpdGlvbjtcblxuICAgIHRoaXMudG9vbHRpcFBvc2l0aW9ucyA9IHtcbiAgICAgIHRvb2x0aXA6IHRvb2x0aXBQb3NpdGlvbixcbiAgICAgIGFycm93OiBhcnJvd1Bvc2l0aW9uLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJleGlzdGluZ1JlYWN0aW9ucy5sZW5ndGggPiAwICYmICFpc1NlbGVjdG9yT3BlblwiXG4gIGNsYXNzPVwic3RyLWNoYXRfX3JlYWN0aW9uLWxpc3RcIlxuICBbY2xhc3Muc3RyLWNoYXRfX3JlYWN0aW9uLWxpc3QtLXJldmVyc2VdPVwidHJ1ZVwiXG4gIGRhdGEtdGVzdGlkPVwicmVhY3Rpb24tbGlzdFwiXG4+XG4gIDx1bD5cbiAgICA8bGlcbiAgICAgICpuZ0Zvcj1cIlxuICAgICAgICBsZXQgcmVhY3Rpb25UeXBlIG9mIGV4aXN0aW5nUmVhY3Rpb25zO1xuICAgICAgICB0cmFja0J5OiB0cmFja0J5TWVzc2FnZVJlYWN0aW9uXG4gICAgICBcIlxuICAgICAgZGF0YS10ZXN0Y2xhc3M9XCJlbW9qaVwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJlbW9qaVwiPlxuICAgICAgICB7eyBnZXRFbW9qaUJ5UmVhY3Rpb24ocmVhY3Rpb25UeXBlKSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgJm5ic3A7XG4gICAgPC9saT5cbiAgICA8bGk+XG4gICAgICA8c3BhblxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlYWN0aW9ucy1jb3VudFwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3JlYWN0aW9uLWxpc3QtLWNvdW50ZXJcIlxuICAgICAgICA+e3sgcmVhY3Rpb25zQ291bnQgfX08L3NwYW5cbiAgICAgID5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9kaXY+XG5cbjxkaXZcbiAgI3NlbGVjdG9yQ29udGFpbmVyXG4gIGNsYXNzPVwic3RyLWNoYXRfX3JlYWN0aW9uLXNlbGVjdG9yXCJcbiAgKm5nSWY9XCJpc1NlbGVjdG9yT3BlblwiXG4gIGRhdGEtdGVzdGlkPVwicmVhY3Rpb24tc2VsZWN0b3JcIlxuPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJ0b29sdGlwVGV4dFwiXG4gICAgZGF0YS10ZXN0aWQ9XCJ0b29sdGlwXCJcbiAgICAjc2VsZWN0b3JUb29sdGlwXG4gICAgY2xhc3M9XCJzdHItY2hhdF9fcmVhY3Rpb24tc2VsZWN0b3ItdG9vbHRpcFwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgbGVmdDogdG9vbHRpcFBvc2l0aW9ucz8udG9vbHRpcCArICdweCcsXG4gICAgICB2aXNpYmlsaXR5OiB0b29sdGlwUG9zaXRpb25zID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcbiAgICB9XCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYXJyb3dcIlxuICAgICAgW25nU3R5bGVdPVwieyBsZWZ0OiB0b29sdGlwUG9zaXRpb25zPy5hcnJvdyArICdweCcgfVwiXG4gICAgPjwvZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwibGF0ZXN0LXVzZXItdXNlcm5hbWVcIj5cbiAgICAgIHt7IHRvb2x0aXBUZXh0IH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbiAgPHVsIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWxpc3RcIj5cbiAgICA8bGlcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWxpc3QtaXRlbSBzdHItY2hhdF9fZW1vamlcIlxuICAgICAgKm5nRm9yPVwiXG4gICAgICAgIGxldCByZWFjdGlvblR5cGUgb2YgcmVhY3Rpb25PcHRpb25zO1xuICAgICAgICB0cmFja0J5OiB0cmFja0J5TWVzc2FnZVJlYWN0aW9uXG4gICAgICBcIlxuICAgICAgZGF0YS10ZXN0Y2xhc3M9XCJlbW9qaS1vcHRpb25cIlxuICAgICAgKGNsaWNrKT1cInJlYWN0KHJlYWN0aW9uVHlwZSlcIlxuICAgICAgKGtleXVwLmVudGVyKT1cInJlYWN0KHJlYWN0aW9uVHlwZSlcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJnZXRMYXRlc3RVc2VyQnlSZWFjdGlvbihyZWFjdGlvblR5cGUpIGFzIHVzZXJcIlxuICAgICAgICBjbGFzcz1cImxhdGVzdC11c2VyXCJcbiAgICAgICAgKGNsaWNrKT1cImhpZGVUb29sdGlwKClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInNob3dUb29sdGlwKCRldmVudCwgcmVhY3Rpb25UeXBlKVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cImhpZGVUb29sdGlwKClcIlxuICAgICAgICBhdHRyLmRhdGEtdGVzdGlkPVwie3sgcmVhY3Rpb25UeXBlIH19LWxhc3QtdXNlclwiXG4gICAgICA+XG4gICAgICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICAgICAgYXR0ci5kYXRhLXRlc3RpZD1cInt7IHJlYWN0aW9uVHlwZSB9fS1hdmF0YXJcIlxuICAgICAgICAgIFtpbWFnZVVybF09XCJ1c2VyLmltYWdlXCJcbiAgICAgICAgICBbbmFtZV09XCJ1c2VyLm5hbWUgfHwgdXNlci5pZFwiXG4gICAgICAgICAgW3NpemVdPVwiMjBcIlxuICAgICAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImVtb2ppXCIgc3R5bGU9XCJ3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4OyB0b3A6IDEwcHhcIj5cbiAgICAgICAge3sgZ2V0RW1vamlCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZSkgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgbWVzc2FnZVJlYWN0aW9uQ291bnRzW3JlYWN0aW9uVHlwZV0gJiZcbiAgICAgICAgICBtZXNzYWdlUmVhY3Rpb25Db3VudHNbcmVhY3Rpb25UeXBlXSEgPiAwXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWxpc3QtaXRlbV9fY291bnRcIlxuICAgICAgICBhdHRyLmRhdGEtdGVzdGlkPVwie3sgcmVhY3Rpb25UeXBlIH19LXJlYWN0aW9uLWNvdW50XCJcbiAgICAgID5cbiAgICAgICAge3sgbWVzc2FnZVJlYWN0aW9uQ291bnRzW3JlYWN0aW9uVHlwZV0gfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9kaXY+XG4iXX0=
@@ -1,7 +1,8 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "../icon/icon.component";
3
+ import * as i1 from "../icon-placeholder/icon-placeholder.component";
4
4
  import * as i2 from "@ngx-translate/core";
5
+ import * as i3 from "@angular/common";
5
6
  /**
6
7
  * The `Modal` component displays its content in an overlay. The modal can be closed with a close button, if the user clicks outside of the modal content, or if the escape button is pressed. The modal can also be closed from outside.
7
8
  */
@@ -25,7 +26,7 @@ export class ModalComponent {
25
26
  };
26
27
  this.watchForOutsideClicks = (event) => {
27
28
  var _a;
28
- if (!((_a = this.content) === null || _a === void 0 ? void 0 : _a.nativeElement.contains(event.target))) {
29
+ if (!((_a = this.innerContainer) === null || _a === void 0 ? void 0 : _a.nativeElement.contains(event.target))) {
29
30
  this.close();
30
31
  }
31
32
  };
@@ -53,7 +54,7 @@ export class ModalComponent {
53
54
  }
54
55
  }
55
56
  ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
56
- ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ModalComponent, selector: "stream-modal", inputs: { isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n data-testid=\"modal\"\n class=\"str-chat__modal str-chat__modal--{{ isOpen ? 'open' : 'close' }}\"\n>\n <div\n data-testid=\"close\"\n class=\"str-chat__modal__close-button\"\n (click)=\"close()\"\n (keyup.enter)=\"close()\"\n translate\n >\n streamChat.Close\n <stream-icon icon=\"close\"></stream-icon>\n </div>\n <div class=\"str-chat__modal__inner\" #content>\n <ng-content></ng-content>\n </div>\n</div>\n", components: [{ type: i1.IconComponent, selector: "stream-icon", inputs: ["icon", "size"] }], directives: [{ type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] });
57
+ ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ModalComponent, selector: "stream-modal", inputs: { isOpen: "isOpen", content: "content" }, outputs: { isOpenChange: "isOpenChange" }, viewQueries: [{ propertyName: "innerContainer", first: true, predicate: ["modalInner"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n data-testid=\"modal\"\n class=\"str-chat__modal str-chat__modal--{{ isOpen ? 'open' : 'close' }}\"\n>\n <div\n data-testid=\"close\"\n class=\"str-chat__modal__close-button\"\n (click)=\"close()\"\n (keyup.enter)=\"close()\"\n translate\n >\n streamChat.Close\n <stream-icon-placeholder icon=\"close\"></stream-icon-placeholder>\n </div>\n <div class=\"str-chat__modal__inner\" #modalInner>\n <ng-container *ngIf=\"content; else elseContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #elseContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", components: [{ type: i1.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon", "size"] }], directives: [{ type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
57
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ModalComponent, decorators: [{
58
59
  type: Component,
59
60
  args: [{
@@ -63,10 +64,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
63
64
  }]
64
65
  }], ctorParameters: function () { return []; }, propDecorators: { isOpen: [{
65
66
  type: Input
67
+ }], content: [{
68
+ type: Input
66
69
  }], isOpenChange: [{
67
70
  type: Output
68
- }], content: [{
71
+ }], innerContainer: [{
69
72
  type: ViewChild,
70
- args: ['content']
73
+ args: ['modalInner']
71
74
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21vZGFsL21vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tb2RhbC9tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7OztBQUV2Qjs7R0FFRztBQU1ILE1BQU0sT0FBTyxjQUFjO0lBV3pCO1FBVkE7O1dBRUc7UUFDTSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCOztXQUVHO1FBQ2dCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQTJCdEQscUJBQWdCLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDbEQsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUM7UUFFTSx5QkFBb0IsR0FBRyxHQUFHLEVBQUU7WUFDbEMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUM7UUFFTSwwQkFBcUIsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFOztZQUMvQyxJQUFJLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQWMsQ0FBQyxDQUFBLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDO0lBdENhLENBQUM7SUFFaEIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDeEQsVUFBVSxDQUNSLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQ2xFLENBQUMsQ0FDRixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFrQk8seUJBQXlCO1FBQy9CLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbEUsQ0FBQzs7MkdBckRVLGNBQWM7K0ZBQWQsY0FBYyxzUENuQjNCLGtjQWtCQTsyRkRDYSxjQUFjO2tCQUwxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixXQUFXLEVBQUUsd0JBQXdCO29CQUNyQyxNQUFNLEVBQUUsRUFBRTtpQkFDWDswRUFLVSxNQUFNO3NCQUFkLEtBQUs7Z0JBSWEsWUFBWTtzQkFBOUIsTUFBTTtnQkFDdUIsT0FBTztzQkFBcEMsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUaGUgYE1vZGFsYCBjb21wb25lbnQgZGlzcGxheXMgaXRzIGNvbnRlbnQgaW4gYW4gb3ZlcmxheS4gVGhlIG1vZGFsIGNhbiBiZSBjbG9zZWQgd2l0aCBhIGNsb3NlIGJ1dHRvbiwgaWYgdGhlIHVzZXIgY2xpY2tzIG91dHNpZGUgb2YgdGhlIG1vZGFsIGNvbnRlbnQsIG9yIGlmIHRoZSBlc2NhcGUgYnV0dG9uIGlzIHByZXNzZWQuIFRoZSBtb2RhbCBjYW4gYWxzbyBiZSBjbG9zZWQgZnJvbSBvdXRzaWRlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgdGhlIG1vZGFsIHdpbGwgYmUgZGlzcGxheWVkLCBpZiBgZmFsc2VgIHRoZSBtb2RhbCB3aWxsIGJlIGhpZGRlblxuICAgKi9cbiAgQElucHV0KCkgaXNPcGVuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBFbWl0cyBgdHJ1ZWAgaWYgdGhlIG1vZGFsIGJlY29tZXMgdmlzaWJsZSwgYW5kIGBmYWxzZWAgaWYgdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBpc09wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnKSBwcml2YXRlIGNvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaXNPcGVuKSB7XG4gICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy53YXRjaEZvckVzY1ByZXNzKTtcbiAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLndhdGNoRm9yT3V0c2lkZUNsaWNrcyksXG4gICAgICAgICAgMFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdG9wV2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCk7XG4gICAgICAgIHRoaXMuc3RvcFdhdGNoRm9yRXNjUHJlc3MoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuc3RvcFdhdGNoRm9yT3V0c2lkZUNsaWNrcygpO1xuICAgIHRoaXMuc3RvcFdhdGNoRm9yRXNjUHJlc3MoKTtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hGb3JFc2NQcmVzcyA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc3RvcFdhdGNoRm9yRXNjUHJlc3MgPSAoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy53YXRjaEZvckVzY1ByZXNzKTtcbiAgfTtcblxuICBwcml2YXRlIHdhdGNoRm9yT3V0c2lkZUNsaWNrcyA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICBpZiAoIXRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzdG9wV2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMud2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKTtcbiAgfVxufVxuIiwiPGRpdlxuICBkYXRhLXRlc3RpZD1cIm1vZGFsXCJcbiAgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWwgc3RyLWNoYXRfX21vZGFsLS17eyBpc09wZW4gPyAnb3BlbicgOiAnY2xvc2UnIH19XCJcbj5cbiAgPGRpdlxuICAgIGRhdGEtdGVzdGlkPVwiY2xvc2VcIlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19jbG9zZS1idXR0b25cIlxuICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwiY2xvc2UoKVwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBzdHJlYW1DaGF0LkNsb3NlXG4gICAgPHN0cmVhbS1pY29uIGljb249XCJjbG9zZVwiPjwvc3RyZWFtLWljb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19pbm5lclwiICNjb250ZW50PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21vZGFsL21vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tb2RhbC9tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFFdkI7O0dBRUc7QUFNSCxNQUFNLE9BQU8sY0FBYztJQWlCekI7UUFoQkE7O1dBRUc7UUFDTSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBS3hCOztXQUVHO1FBQ2dCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQTZCdEQscUJBQWdCLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDbEQsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUM7UUFFTSx5QkFBb0IsR0FBRyxHQUFHLEVBQUU7WUFDbEMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUM7UUFFTSwwQkFBcUIsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFOztZQUMvQyxJQUFJLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxjQUFjLDBDQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQWMsQ0FBQyxDQUFBLEVBQUU7Z0JBQ3RFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDO0lBdENhLENBQUM7SUFFaEIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDeEQsVUFBVSxDQUNSLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQ2xFLENBQUMsQ0FDRixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFrQk8seUJBQXlCO1FBQy9CLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbEUsQ0FBQzs7MkdBM0RVLGNBQWM7K0ZBQWQsY0FBYyxvUkNwQjNCLG1xQkF1QkE7MkZESGEsY0FBYztrQkFMMUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsV0FBVyxFQUFFLHdCQUF3QjtvQkFDckMsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7MEVBS1UsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLE9BQU87c0JBQWYsS0FBSztnQkFJYSxZQUFZO3NCQUE5QixNQUFNO2dCQUMwQixjQUFjO3NCQUE5QyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUaGUgYE1vZGFsYCBjb21wb25lbnQgZGlzcGxheXMgaXRzIGNvbnRlbnQgaW4gYW4gb3ZlcmxheS4gVGhlIG1vZGFsIGNhbiBiZSBjbG9zZWQgd2l0aCBhIGNsb3NlIGJ1dHRvbiwgaWYgdGhlIHVzZXIgY2xpY2tzIG91dHNpZGUgb2YgdGhlIG1vZGFsIGNvbnRlbnQsIG9yIGlmIHRoZSBlc2NhcGUgYnV0dG9uIGlzIHByZXNzZWQuIFRoZSBtb2RhbCBjYW4gYWxzbyBiZSBjbG9zZWQgZnJvbSBvdXRzaWRlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgdGhlIG1vZGFsIHdpbGwgYmUgZGlzcGxheWVkLCBpZiBgZmFsc2VgIHRoZSBtb2RhbCB3aWxsIGJlIGhpZGRlblxuICAgKi9cbiAgQElucHV0KCkgaXNPcGVuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgbW9kYWwgIChjYW4gYWxzbyBiZSBwcm92aWRlZCB1c2luZyBgbmctY29udGVudGApXG4gICAqL1xuICBASW5wdXQoKSBjb250ZW50OiBUZW1wbGF0ZVJlZjx2b2lkPiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEVtaXRzIGB0cnVlYCBpZiB0aGUgbW9kYWwgYmVjb21lcyB2aXNpYmxlLCBhbmQgYGZhbHNlYCBpZiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQFZpZXdDaGlsZCgnbW9kYWxJbm5lcicpIHByaXZhdGUgaW5uZXJDb250YWluZXI6XG4gICAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaXNPcGVuKSB7XG4gICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy53YXRjaEZvckVzY1ByZXNzKTtcbiAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLndhdGNoRm9yT3V0c2lkZUNsaWNrcyksXG4gICAgICAgICAgMFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdG9wV2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCk7XG4gICAgICAgIHRoaXMuc3RvcFdhdGNoRm9yRXNjUHJlc3MoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuc3RvcFdhdGNoRm9yT3V0c2lkZUNsaWNrcygpO1xuICAgIHRoaXMuc3RvcFdhdGNoRm9yRXNjUHJlc3MoKTtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hGb3JFc2NQcmVzcyA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc3RvcFdhdGNoRm9yRXNjUHJlc3MgPSAoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy53YXRjaEZvckVzY1ByZXNzKTtcbiAgfTtcblxuICBwcml2YXRlIHdhdGNoRm9yT3V0c2lkZUNsaWNrcyA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICBpZiAoIXRoaXMuaW5uZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc3RvcFdhdGNoRm9yT3V0c2lkZUNsaWNrcygpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLndhdGNoRm9yT3V0c2lkZUNsaWNrcyk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZGF0YS10ZXN0aWQ9XCJtb2RhbFwiXG4gIGNsYXNzPVwic3RyLWNoYXRfX21vZGFsIHN0ci1jaGF0X19tb2RhbC0te3sgaXNPcGVuID8gJ29wZW4nIDogJ2Nsb3NlJyB9fVwiXG4+XG4gIDxkaXZcbiAgICBkYXRhLXRlc3RpZD1cImNsb3NlXCJcbiAgICBjbGFzcz1cInN0ci1jaGF0X19tb2RhbF9fY2xvc2UtYnV0dG9uXCJcbiAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgKGtleXVwLmVudGVyKT1cImNsb3NlKClcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgc3RyZWFtQ2hhdC5DbG9zZVxuICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlciBpY29uPVwiY2xvc2VcIj48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tb2RhbF9faW5uZXJcIiAjbW9kYWxJbm5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudDsgZWxzZSBlbHNlQ29udGVudFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2Vsc2VDb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
3
4
  /**
4
5
  * The `Notification` component displays a notification within the [`NotificationList`](./NotificationListComponent.mdx)
5
6
  */
@@ -7,7 +8,7 @@ export class NotificationComponent {
7
8
  constructor() { }
8
9
  }
9
10
  NotificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- NotificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: NotificationComponent, selector: "stream-notification", inputs: { type: "type" }, ngImport: i0, template: "<div\n class=\"str-chat__custom-notification notification-{{ type }}\"\n data-testid=\"custom-notification\"\n>\n <ng-content></ng-content>\n</div>\n" });
11
+ NotificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: NotificationComponent, selector: "stream-notification", inputs: { type: "type", content: "content" }, ngImport: i0, template: "<div\n class=\"str-chat__custom-notification notification-{{ type }}\"\n data-testid=\"custom-notification\"\n>\n <ng-container *ngIf=\"content; else elseContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #elseContent>\n <ng-content></ng-content>\n </ng-template>\n</div>\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
11
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NotificationComponent, decorators: [{
12
13
  type: Component,
13
14
  args: [{
@@ -17,5 +18,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
17
18
  }]
18
19
  }], ctorParameters: function () { return []; }, propDecorators: { type: [{
19
20
  type: Input
21
+ }], content: [{
22
+ type: Input
20
23
  }] } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUdqRDs7R0FFRztBQU1ILE1BQU0sT0FBTyxxQkFBcUI7SUFNaEMsZ0JBQWUsQ0FBQzs7a0hBTkwscUJBQXFCO3NHQUFyQixxQkFBcUIscUZDWGxDLDBKQU1BOzJGREthLHFCQUFxQjtrQkFMakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixXQUFXLEVBQUUsK0JBQStCO29CQUM1QyxNQUFNLEVBQUUsRUFBRTtpQkFDWDswRUFLVSxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25UeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIFRoZSBgTm90aWZpY2F0aW9uYCBjb21wb25lbnQgZGlzcGxheXMgYSBub3RpZmljYXRpb24gd2l0aGluIHRoZSBbYE5vdGlmaWNhdGlvbkxpc3RgXSguL05vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQubWR4KVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbm90aWZpY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgbm90aWZpY2F0aW9uXG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBOb3RpZmljYXRpb25UeXBlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzdHItY2hhdF9fY3VzdG9tLW5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24te3sgdHlwZSB9fVwiXG4gIGRhdGEtdGVzdGlkPVwiY3VzdG9tLW5vdGlmaWNhdGlvblwiXG4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDOzs7QUFHOUQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8scUJBQXFCO0lBVWhDLGdCQUFlLENBQUM7O2tIQVZMLHFCQUFxQjtzR0FBckIscUJBQXFCLHlHQ1hsQyxzVkFXQTsyRkRBYSxxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLCtCQUErQjtvQkFDNUMsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7MEVBS1UsSUFBSTtzQkFBWixLQUFLO2dCQUlHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25UeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIFRoZSBgTm90aWZpY2F0aW9uYCBjb21wb25lbnQgZGlzcGxheXMgYSBub3RpZmljYXRpb24gd2l0aGluIHRoZSBbYE5vdGlmaWNhdGlvbkxpc3RgXSguL05vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQubWR4KVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbm90aWZpY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgbm90aWZpY2F0aW9uXG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBOb3RpZmljYXRpb25UeXBlIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIG5vdGlmaWNhdGlvbiAoY2FuIGFsc28gYmUgcHJvdmlkZWQgdXNpbmcgYG5nLWNvbnRlbnRgKVxuICAgKi9cbiAgQElucHV0KCkgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInN0ci1jaGF0X19jdXN0b20tbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbi17eyB0eXBlIH19XCJcbiAgZGF0YS10ZXN0aWQ9XCJjdXN0b20tbm90aWZpY2F0aW9uXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ7IGVsc2UgZWxzZUNvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNlbHNlQ29udGVudD5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==