@banta/sdk 4.9.1 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/banta-sdk.mjs +4 -4
- package/{esm2020 → esm2022}/lib/attachment-scraper.mjs +1 -1
- package/esm2022/lib/banta/banta.component.mjs +204 -0
- package/{esm2020 → esm2022}/lib/banta-logo.component.mjs +11 -11
- package/esm2022/lib/banta-sdk.module.mjs +143 -0
- package/esm2022/lib/chat/banta-chat/banta-chat.component.mjs +187 -0
- package/esm2022/lib/chat/chat-message/chat-message.component.mjs +62 -0
- package/esm2022/lib/chat/chat-view/chat-view.component.mjs +170 -0
- package/{esm2020 → esm2022}/lib/chat/chat.module.mjs +51 -51
- package/{esm2020 → esm2022}/lib/chat/index.mjs +5 -5
- package/esm2022/lib/chat/live-chat-message.component.mjs +80 -0
- package/{esm2020 → esm2022}/lib/chat-backend-base.mjs +30 -30
- package/esm2022/lib/chat-backend.mjs +163 -0
- package/{esm2020 → esm2022}/lib/chat-source-base.mjs +1 -1
- package/esm2022/lib/chat-source.mjs +233 -0
- package/esm2022/lib/comments/attachment-button/attachment-button.component.mjs +76 -0
- package/esm2022/lib/comments/attachment-scraper.directive.mjs +107 -0
- package/esm2022/lib/comments/banta-comments/banta-comments.component.mjs +739 -0
- package/esm2022/lib/comments/comment/comment.component.mjs +175 -0
- package/esm2022/lib/comments/comment-field/comment-field.component.mjs +401 -0
- package/esm2022/lib/comments/comment-sort/comment-sort.component.mjs +37 -0
- package/esm2022/lib/comments/comment-view/comment-view.component.mjs +470 -0
- package/esm2022/lib/comments/comments.module.mjs +111 -0
- package/{esm2020 → esm2022}/lib/comments/index.mjs +10 -10
- package/esm2022/lib/comments/live-comment.component.mjs +80 -0
- package/{esm2020 → esm2022}/lib/comments/reply-send-options.directive.mjs +13 -13
- package/esm2022/lib/common/attachment/attachment.component.mjs +112 -0
- package/{esm2020 → esm2022}/lib/common/attachments/attachments.component.mjs +75 -75
- package/{esm2020 → esm2022}/lib/common/common.module.mjs +68 -68
- package/{esm2020 → esm2022}/lib/common/index.mjs +10 -10
- package/{esm2020 → esm2022}/lib/common/lazy-connection.mjs +14 -14
- package/esm2022/lib/common/lightbox/lightbox.component.mjs +31 -0
- package/esm2022/lib/common/markdown-to-html.pipe.mjs +89 -0
- package/esm2022/lib/common/mention-linker.pipe.mjs +35 -0
- package/esm2022/lib/common/timer-pool.service.mjs +83 -0
- package/esm2022/lib/common/timestamp.component.mjs +123 -0
- package/{esm2020 → esm2022}/lib/common/trust-resource-url.pipe.mjs +22 -22
- package/esm2022/lib/emoji/emoji-selector-button.component.mjs +115 -0
- package/esm2022/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +98 -0
- package/{esm2020 → esm2022}/lib/emoji/emoji.module.mjs +55 -55
- package/{esm2020 → esm2022}/lib/emoji/emojis.mjs +6507 -6507
- package/{esm2020 → esm2022}/lib/emoji/index.mjs +4 -4
- package/esm2022/lib/giphy-attachments.mjs +16 -0
- package/{esm2020 → esm2022}/lib/index.mjs +19 -19
- package/{esm2020 → esm2022}/lib/live-message.component.mjs +61 -61
- package/{esm2020 → esm2022}/lib/message-menu-item.mjs +1 -1
- package/{esm2020 → esm2022}/lib/sdk-options.mjs +1 -1
- package/esm2022/lib/static-chat-source.mjs +71 -0
- package/esm2022/lib/tweet-attachments.mjs +13 -0
- package/esm2022/lib/url-attachments.mjs +42 -0
- package/esm2022/lib/youtube-attachments.mjs +29 -0
- package/{esm2020 → esm2022}/public-api.mjs +4 -4
- package/{fesm2020 → fesm2022}/banta-sdk.mjs +10753 -10754
- package/fesm2022/banta-sdk.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/attachment-scraper.d.ts +15 -15
- package/lib/banta/banta.component.d.ts +58 -58
- package/lib/banta-logo.component.d.ts +5 -5
- package/lib/banta-sdk.module.d.ts +31 -31
- package/lib/chat/banta-chat/banta-chat.component.d.ts +70 -70
- package/lib/chat/chat-message/chat-message.component.d.ts +21 -21
- package/lib/chat/chat-view/chat-view.component.d.ts +52 -52
- package/lib/chat/chat.module.d.ts +15 -15
- package/lib/chat/index.d.ts +5 -5
- package/lib/chat/live-chat-message.component.d.ts +23 -23
- package/lib/chat-backend-base.d.ts +36 -36
- package/lib/chat-backend.d.ts +55 -55
- package/lib/chat-source-base.d.ts +44 -44
- package/lib/chat-source.d.ts +65 -65
- package/lib/comments/attachment-button/attachment-button.component.d.ts +17 -17
- package/lib/comments/attachment-scraper.directive.d.ts +21 -21
- package/lib/comments/banta-comments/banta-comments.component.d.ts +196 -196
- package/lib/comments/comment/comment.component.d.ts +72 -72
- package/lib/comments/comment-field/comment-field.component.d.ts +89 -89
- package/lib/comments/comment-sort/comment-sort.component.d.ts +12 -12
- package/lib/comments/comment-view/comment-view.component.d.ts +121 -121
- package/lib/comments/comments.module.d.ts +30 -30
- package/lib/comments/index.d.ts +10 -10
- package/lib/comments/live-comment.component.d.ts +23 -23
- package/lib/comments/reply-send-options.directive.d.ts +5 -5
- package/lib/common/attachment/attachment.component.d.ts +33 -33
- package/lib/common/attachments/attachments.component.d.ts +26 -26
- package/lib/common/common.module.d.ts +19 -19
- package/lib/common/index.d.ts +10 -10
- package/lib/common/lazy-connection.d.ts +6 -6
- package/lib/common/lightbox/lightbox.component.d.ts +14 -14
- package/lib/common/markdown-to-html.pipe.d.ts +15 -15
- package/lib/common/mention-linker.pipe.d.ts +13 -13
- package/lib/common/timer-pool.service.d.ts +15 -15
- package/lib/common/timestamp.component.d.ts +19 -19
- package/lib/common/trust-resource-url.pipe.d.ts +10 -10
- package/lib/emoji/emoji-selector-button.component.d.ts +30 -30
- package/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.d.ts +26 -26
- package/lib/emoji/emoji.module.d.ts +16 -16
- package/lib/emoji/emojis.d.ts +6507 -6507
- package/lib/emoji/index.d.ts +4 -4
- package/lib/giphy-attachments.d.ts +5 -5
- package/lib/index.d.ts +19 -19
- package/lib/live-message.component.d.ts +22 -22
- package/lib/message-menu-item.d.ts +6 -6
- package/lib/sdk-options.d.ts +5 -5
- package/lib/static-chat-source.d.ts +42 -42
- package/lib/tweet-attachments.d.ts +5 -5
- package/lib/url-attachments.d.ts +14 -14
- package/lib/youtube-attachments.d.ts +5 -5
- package/package.json +14 -20
- package/public-api.d.ts +1 -1
- package/esm2020/lib/banta/banta.component.mjs +0 -204
- package/esm2020/lib/banta-sdk.module.mjs +0 -143
- package/esm2020/lib/chat/banta-chat/banta-chat.component.mjs +0 -187
- package/esm2020/lib/chat/chat-message/chat-message.component.mjs +0 -62
- package/esm2020/lib/chat/chat-view/chat-view.component.mjs +0 -170
- package/esm2020/lib/chat/live-chat-message.component.mjs +0 -80
- package/esm2020/lib/chat-backend.mjs +0 -163
- package/esm2020/lib/chat-source.mjs +0 -233
- package/esm2020/lib/comments/attachment-button/attachment-button.component.mjs +0 -76
- package/esm2020/lib/comments/attachment-scraper.directive.mjs +0 -107
- package/esm2020/lib/comments/banta-comments/banta-comments.component.mjs +0 -740
- package/esm2020/lib/comments/comment/comment.component.mjs +0 -175
- package/esm2020/lib/comments/comment-field/comment-field.component.mjs +0 -401
- package/esm2020/lib/comments/comment-sort/comment-sort.component.mjs +0 -37
- package/esm2020/lib/comments/comment-view/comment-view.component.mjs +0 -470
- package/esm2020/lib/comments/comments.module.mjs +0 -111
- package/esm2020/lib/comments/live-comment.component.mjs +0 -80
- package/esm2020/lib/common/attachment/attachment.component.mjs +0 -112
- package/esm2020/lib/common/lightbox/lightbox.component.mjs +0 -31
- package/esm2020/lib/common/markdown-to-html.pipe.mjs +0 -89
- package/esm2020/lib/common/mention-linker.pipe.mjs +0 -35
- package/esm2020/lib/common/timer-pool.service.mjs +0 -83
- package/esm2020/lib/common/timestamp.component.mjs +0 -123
- package/esm2020/lib/emoji/emoji-selector-button.component.mjs +0 -116
- package/esm2020/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +0 -98
- package/esm2020/lib/giphy-attachments.mjs +0 -16
- package/esm2020/lib/static-chat-source.mjs +0 -71
- package/esm2020/lib/tweet-attachments.mjs +0 -13
- package/esm2020/lib/url-attachments.mjs +0 -42
- package/esm2020/lib/youtube-attachments.mjs +0 -29
- package/fesm2015/banta-sdk.mjs +0 -11181
- package/fesm2015/banta-sdk.mjs.map +0 -1
- package/fesm2020/banta-sdk.mjs.map +0 -1
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ViewChild, HostBinding } from "@angular/core";
|
|
2
|
-
import { Subject, Subscription } from 'rxjs';
|
|
3
|
-
import { Output } from "@angular/core";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../chat-backend-base";
|
|
6
|
-
import * as i2 from "@angular/material/dialog";
|
|
7
|
-
import * as i3 from "@angular/common";
|
|
8
|
-
import * as i4 from "@angular/forms";
|
|
9
|
-
import * as i5 from "../common/timestamp.component";
|
|
10
|
-
import * as i6 from "../comments/comment/comment.component";
|
|
11
|
-
import * as i7 from "../comments/comment-view/comment-view.component";
|
|
12
|
-
import * as i8 from "../comments/banta-comments/banta-comments.component";
|
|
13
|
-
import * as i9 from "../chat/banta-chat/banta-chat.component";
|
|
14
|
-
import * as i10 from "@angular/material/icon";
|
|
15
|
-
import * as i11 from "@angular/material/button";
|
|
16
|
-
import * as i12 from "@angular/material/menu";
|
|
17
|
-
import * as i13 from "../live-message.component";
|
|
18
|
-
/**
|
|
19
|
-
* Unified chat and comments component
|
|
20
|
-
*/
|
|
21
|
-
export class BantaComponent {
|
|
22
|
-
constructor(backend, matDialog) {
|
|
23
|
-
this.backend = backend;
|
|
24
|
-
this.matDialog = matDialog;
|
|
25
|
-
this._subs = new Subscription();
|
|
26
|
-
this.auxOpen = false;
|
|
27
|
-
this.auxTitle = 'Notifications';
|
|
28
|
-
this.auxMode = 'notifications';
|
|
29
|
-
this.mobileFocus = null;
|
|
30
|
-
this.newNotifications = false;
|
|
31
|
-
this.chatLabel = 'Chat';
|
|
32
|
-
this.commentsLabel = 'Comments';
|
|
33
|
-
this._signInSelected = new Subject();
|
|
34
|
-
this.pointOpen = null;
|
|
35
|
-
this.pointSubChat = null;
|
|
36
|
-
this.newPointSubMessage = {};
|
|
37
|
-
this.genericAvatarUrl = 'https://gravatar.com/avatar/915c804e0be607a4ad766ddadea5c48a?s=512&d=https://codepen.io/assets/avatars/user-avatar-512x512-6e240cf350d2f1cc07c2bed234c3a3bb5f1b237023c204c782622e80d6b212ba.png';
|
|
38
|
-
}
|
|
39
|
-
ngOnInit() {
|
|
40
|
-
this._subs.add(this.backend.userChanged.subscribe(user => this.currentUser = user));
|
|
41
|
-
this._subs.add(this.backend.notificationsChanged.subscribe(notifs => this.notifications = notifs));
|
|
42
|
-
this._subs.add(this.backend.newNotification.subscribe(notif => {
|
|
43
|
-
this.newNotifications = true;
|
|
44
|
-
}));
|
|
45
|
-
}
|
|
46
|
-
async sendPointSubMessage() {
|
|
47
|
-
let text = (this.newPointSubMessage.message || '').trim();
|
|
48
|
-
this.newPointSubMessage.message = '';
|
|
49
|
-
if (text === '')
|
|
50
|
-
return;
|
|
51
|
-
let message = {
|
|
52
|
-
user: null,
|
|
53
|
-
sentAt: Date.now(),
|
|
54
|
-
likes: 0,
|
|
55
|
-
message: text
|
|
56
|
-
};
|
|
57
|
-
try {
|
|
58
|
-
await this.pointSubChat.send(message);
|
|
59
|
-
}
|
|
60
|
-
catch (e) {
|
|
61
|
-
console.error(`Failed to send point sub-message:`);
|
|
62
|
-
console.error(e);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
async goToMessage(message) {
|
|
66
|
-
let targetMessage = message;
|
|
67
|
-
if (message.parentMessageId) {
|
|
68
|
-
// jump to the parent message thread...
|
|
69
|
-
let parentMessage;
|
|
70
|
-
try {
|
|
71
|
-
parentMessage = await this.backend.getMessage(message.topicId, message.parentMessageId);
|
|
72
|
-
}
|
|
73
|
-
catch (e) {
|
|
74
|
-
console.error(`Received exception while fetching parent message:`);
|
|
75
|
-
console.error(e);
|
|
76
|
-
}
|
|
77
|
-
if (!parentMessage) {
|
|
78
|
-
console.error(`Failed to look up parent message ${message.topicId}/${message.parentMessageId}`);
|
|
79
|
-
console.error(`Original message was:`);
|
|
80
|
-
console.dir(targetMessage);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
message = parentMessage;
|
|
84
|
-
}
|
|
85
|
-
let viewType = this.getViewType(message);
|
|
86
|
-
if (viewType === 'comment') {
|
|
87
|
-
if (this.pointSubChat) {
|
|
88
|
-
if (this.pointSubChat.close)
|
|
89
|
-
this.pointSubChat.close();
|
|
90
|
-
this.pointSubChat = null;
|
|
91
|
-
}
|
|
92
|
-
this.mobileFocus = 'points';
|
|
93
|
-
this.pointOpen = message;
|
|
94
|
-
this.pointSubChat = await this.backend.getSourceForThread(message.topicId, message.id);
|
|
95
|
-
this.pointOpen = await this.backend.refreshMessage(message);
|
|
96
|
-
this.newPointSubMessage = {};
|
|
97
|
-
}
|
|
98
|
-
else if (viewType === 'chat') {
|
|
99
|
-
this.mobileFocus = 'firehose';
|
|
100
|
-
this.firehose.jumpToMessage(message);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
pointUnfocus() {
|
|
104
|
-
this.pointOpen = null;
|
|
105
|
-
if (this.pointSubChat) {
|
|
106
|
-
if (this.pointSubChat.close)
|
|
107
|
-
this.pointSubChat.close();
|
|
108
|
-
this.pointSubChat = null;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
ngOnDestroy() {
|
|
112
|
-
this._subs.unsubscribe();
|
|
113
|
-
}
|
|
114
|
-
showAux(title, mode) {
|
|
115
|
-
this.auxOpen = true;
|
|
116
|
-
this.auxTitle = title;
|
|
117
|
-
this.auxMode = mode;
|
|
118
|
-
this.mobileFocus = 'aux';
|
|
119
|
-
}
|
|
120
|
-
showNotifications() {
|
|
121
|
-
this.showAux('Notifications', 'notifications');
|
|
122
|
-
}
|
|
123
|
-
get topicID() {
|
|
124
|
-
return this._topicID;
|
|
125
|
-
}
|
|
126
|
-
set topicID(value) {
|
|
127
|
-
this._topicID = value;
|
|
128
|
-
this.close();
|
|
129
|
-
this.connectToTopic(this._topicID);
|
|
130
|
-
}
|
|
131
|
-
async connectToTopic(id) {
|
|
132
|
-
this.firehoseSource = await this.backend.getSourceForTopic(`${id}_firehose`);
|
|
133
|
-
this.pointSource = await this.backend.getSourceForTopic(`${id}_thepoint`);
|
|
134
|
-
}
|
|
135
|
-
get signInSelected() {
|
|
136
|
-
return this._signInSelected;
|
|
137
|
-
}
|
|
138
|
-
showSignIn() {
|
|
139
|
-
this._signInSelected.next();
|
|
140
|
-
}
|
|
141
|
-
close() {
|
|
142
|
-
if (this.firehoseSource) {
|
|
143
|
-
if (this.firehoseSource.close)
|
|
144
|
-
this.firehoseSource.close();
|
|
145
|
-
this.firehoseSource = null;
|
|
146
|
-
}
|
|
147
|
-
if (this.pointSource) {
|
|
148
|
-
if (this.pointSource.close)
|
|
149
|
-
this.pointSource.close();
|
|
150
|
-
this.pointSource = null;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
get hasPoint() {
|
|
154
|
-
return this.pointOpen != null;
|
|
155
|
-
}
|
|
156
|
-
closeAux() {
|
|
157
|
-
this.auxOpen = false;
|
|
158
|
-
this.mobileFocus = 'firehose';
|
|
159
|
-
}
|
|
160
|
-
getViewType(message) {
|
|
161
|
-
if (message.topicId.endsWith('_firehose'))
|
|
162
|
-
return 'chat';
|
|
163
|
-
else if (message.topicId.endsWith('_thepoint'))
|
|
164
|
-
return 'comment';
|
|
165
|
-
return 'comment';
|
|
166
|
-
}
|
|
167
|
-
async upvoteMessage(message) {
|
|
168
|
-
// TODO
|
|
169
|
-
//await this.backend.likeMessage(message.id);
|
|
170
|
-
}
|
|
171
|
-
showProfile(user) {
|
|
172
|
-
this.profileUser = user;
|
|
173
|
-
this.showAux(`@${user.username}'s Profile`, 'profile');
|
|
174
|
-
}
|
|
175
|
-
sendReport(message) {
|
|
176
|
-
this.auxOpen = false;
|
|
177
|
-
alert('would send report');
|
|
178
|
-
}
|
|
179
|
-
reportMessage(message) {
|
|
180
|
-
this.reportedMessage = message;
|
|
181
|
-
this.showAux(`Report message from @${message.user.username}`, 'report');
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
BantaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaComponent, deps: [{ token: i1.ChatBackendBase }, { token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
185
|
-
BantaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: BantaComponent, selector: "banta", inputs: { topicID: "topicID", chatLabel: "chatLabel", commentsLabel: "commentsLabel" }, outputs: { signInSelected: "signInSelected" }, host: { properties: { "class.point-focus": "this.hasPoint" } }, viewQueries: [{ propertyName: "firehose", first: true, predicate: ["firehose"], descendants: true, static: true }], ngImport: i0, template: "\r\n<mat-menu #userMenu=\"matMenu\">\r\n <ng-container *ngIf=\"currentUser\">\r\n <button [disabled]=\"true\" mat-menu-item>{{currentUser.displayName}} (@{{currentUser.username}})</button>\r\n <button mat-menu-item (click)=\"signOut()\">Sign Out</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!currentUser\">\r\n <button mat-menu-item>Sign In</button>\r\n </ng-container>\r\n <button mat-menu-item>Help</button>\r\n</mat-menu>\r\n\r\n<div class=\"tabs\">\r\n <div>\r\n <a mat-button (click)=\"mobileFocus = 'chat'\">{{chatLabel}}</a>\r\n <a mat-button (click)=\"mobileFocus = 'comments'\">{{commentsLabel}}</a>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div>\r\n <ng-container *ngIf=\"currentUser\">\r\n <button mat-button [matMenuTriggerFor]=\"userMenu\">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)=\"showNotifications()\">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf=\"!currentUser\" (click)=\"showSignIn()\">\r\n Sign In\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"firehose\" [class.focus]=\"mobileFocus === 'chat'\">\r\n <header>\r\n <div>\r\n <label (click)=\"mobileFocus = 'chat'\">{{chatLabel}}</label>\r\n <div class=\"spacer\"></div>\r\n\r\n <ng-container *ngIf=\"currentUser\">\r\n <button mat-button [matMenuTriggerFor]=\"userMenu\">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)=\"showNotifications()\">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf=\"!currentUser\" (click)=\"showSignIn()\">\r\n Sign In\r\n </button>\r\n </div>\r\n </header>\r\n <banta-chat \r\n #firehose\r\n [source]=\"firehoseSource\"\r\n (signInSelected)=\"showSignIn()\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n (reported)=\"reportMessage($event)\"\r\n ></banta-chat>\r\n</div>\r\n\r\n<div class=\"aux\" [class.focus]=\"mobileFocus === 'aux'\" [class.open]=\"auxOpen\">\r\n <header>\r\n <div>\r\n <label>{{auxTitle}}</label>\r\n <div class=\"spacer\"></div>\r\n <button mat-icon-button (click)=\"auxOpen = false\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </header>\r\n <div class=\"aux-contents\">\r\n <ng-container *ngIf=\"auxMode === 'profile'\">\r\n <ng-container *ngIf=\"profileUser\">\r\n\r\n <div>\r\n <strong style=\"font-size: 125%;\">\r\n {{profileUser.displayName}}\r\n </strong>\r\n @{{profileUser.username}}\r\n </div>\r\n\r\n <br/>\r\n <strong>Top Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n\r\n <br/>\r\n <strong>Recent Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"auxMode === 'report'\">\r\n <p>Are you sure you want to report this message?</p>\r\n\r\n <banta-live-message [message]=\"reportedMessage\"></banta-live-message>\r\n\r\n <div style=\"text-align: center;\">\r\n <button mat-raised-button color=\"primary\" (click)=\"sendReport(reportedMessage)\">Yes, Report</button>\r\n \r\n <button mat-raised-button color=\"secondary\" (click)=\"auxOpen = false\">No, Cancel</button>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"auxMode === 'notifications'\">\r\n\r\n <div *ngIf=\"!notifications || notifications.length === 0\">\r\n <em>You do not have any notifications yet</em>\r\n </div>\r\n \r\n <div class=\"notifications\">\r\n <div class=\"notification\" *ngFor=\"let notif of notifications\">\r\n <div>\r\n <ng-container *ngIf=\"notif.type === 'upvote'\">\r\n @{{notif.message?.user?.username}} upvoted your post\r\n \r\n <banta-live-message\r\n [message]=\"notif.message\"\r\n (upvoted)=\"upvoteMessage(notif.message)\"\r\n (reported)=\"reportMessage(notif.message)\"\r\n (selected)=\"goToMessage(notif.message)\">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'notice'\">\r\n <div>\r\n {{notif.message}}\r\n </div>\r\n <a mat-button target=\"_blank\" href=\"{{notif.actionUrl}}\">\r\n {{notif.actionLabel}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'mention'\">\r\n You were mentioned by @{{notif.message?.user?.username}}\r\n\r\n <banta-live-message\r\n [message]=\"notif.message\"\r\n (upvoted)=\"upvoteMessage(notif.message)\"\r\n (reported)=\"reportMessage(notif.message)\"\r\n (selected)=\"goToMessage(notif.message)\">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'reply'\">\r\n @{{notif.replyMessage?.user?.username}} replied to your post\r\n \r\n <banta-live-message\r\n [message]=\"notif.replyMessage\"\r\n (upvoted)=\"upvoteMessage(notif.replyMessage)\"\r\n (reported)=\"reportMessage(notif.replyMessage)\"\r\n (selected)=\"goToMessage(notif.replyMessage)\">\r\n </banta-live-message>\r\n </ng-container>\r\n </div>\r\n\r\n <banta-timestamp [value]=\"notif.sentAt\"></banta-timestamp>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<div class=\"points\" [class.focus]=\"mobileFocus === 'points'\">\r\n <header>\r\n <div>\r\n <label>{{commentsLabel}}</label>\r\n </div>\r\n </header>\r\n <div class=\"point-focus\">\r\n <div class=\"actions\">\r\n <button mat-button (click)=\"pointUnfocus()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Back\r\n </button>\r\n\r\n <div class=\"spacer\"></div>\r\n \r\n <ng-container *ngIf=\"pointOpen\">\r\n <div class=\"counted-action\">\r\n <div class=\"count-indicator\"> \r\n {{pointOpen.likes}}\r\n </div>\r\n <button mat-icon-button>\r\n <mat-icon>thumb_up</mat-icon>\r\n </button>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"!pointSubChat\">\r\n Error: No subchat\r\n </div>\r\n \r\n <banta-comment-view\r\n class=\"subcomments\"\r\n *ngIf=\"pointSubChat\"\r\n [newestLast]=\"true\"\r\n [allowReplies]=\"false\"\r\n [source]=\"pointSubChat\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (reported)=\"reportMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n >\r\n \r\n <banta-comment\r\n class=\"focused-comment\"\r\n data-before\r\n *ngIf=\"pointOpen\"\r\n [showReplyAction]=\"false\"\r\n [message]=\"pointOpen\"\r\n [readonly]=\"pointSubChat?.readonly\"\r\n (upvoted)=\"upvoteMessage(pointOpen)\"\r\n (userSelected)=\"showProfile(pointOpen.user)\"\r\n (reported)=\"reportMessage(pointOpen)\"\r\n ></banta-comment>\r\n \r\n <div class=\"message reply\">\r\n Reply:\r\n <form class=\"new-message\" (submit)=\"sendPointSubMessage()\">\r\n <textarea \r\n name=\"message\" \r\n (keydown)=\"newPointSubMessageKeyDown($event)\"\r\n [(ngModel)]=\"newPointSubMessage.message\"></textarea>\r\n \r\n <div class=\"actions\">\r\n <button [disabled]=\"!newPointSubMessage.message\" \r\n mat-raised-button color=\"primary\">Send</button>\r\n </div>\r\n </form>\r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n <div class=\"points-section\">\r\n <banta-comments\r\n [source]=\"pointSource\"\r\n (signInSelected)=\"showSignIn()\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (reported)=\"reportMessage($event)\"\r\n (selected)=\"goToMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n ></banta-comments>\r\n </div>\r\n</div>", styles: [":host{display:flex;flex-direction:row;padding:.5em;height:40em;position:relative}.counted-action{display:flex;align-items:center}.count-indicator{font-size:9pt;padding:0 3px;border-radius:3px;border:1px solid #333}header{position:relative;margin-bottom:1em}header div{display:flex;align-items:center;height:30px}header button{color:#666}header label{text-transform:uppercase;z-index:1;font-size:12pt;letter-spacing:2px;font-weight:100;color:#333;margin:0 auto 0 0;display:block;width:-moz-fit-content;width:fit-content;position:relative;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}header:after{content:\"\";border:1px solid;border-color:#ccc;height:0px;width:100%;display:block;position:relative;z-index:0}.points{width:33%;max-width:50em;display:flex;flex-direction:column}:host.point-focus .points{width:66%;max-width:50em}:host.point-focus .points .points-section{opacity:0;pointer-events:none}:host.point-focus .points .point-focus{opacity:1;pointer-events:initial}:host.point-focus .points .point-focus .actions{display:flex}banta-comments{flex-grow:1}.points{width:33%;margin-left:.5em;font-size:12pt;flex-shrink:0;max-width:30em;transition:.2s width ease-in,.2s max-width ease-in;position:relative}.points .points-section{flex-grow:1;display:flex;flex-direction:column;opacity:1;transition:.2s opacity ease-in;z-index:2}.points .point-focus{position:absolute;width:100%;inset:1.75em 0 0;padding:.5em;opacity:0;transition:.2s opacity ease-in;flex-grow:1;display:flex;flex-direction:column}.firehose{flex-grow:1;font-size:10pt;display:flex;flex-direction:column}form{display:flex;padding:.5em 0;align-items:center}form textarea{font-size:14pt;background:black;color:#fff;border:1px solid #333;min-height:6em;width:100%}form input[type=text]{background:black;color:#fff;border:1px solid #333;width:100%;height:1em}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}.subcomments ::ng-deep banta-comment{font-size:10pt}.subcomments ::ng-deep banta-comment.focused-comment{background:#001321;color:#fff;font-size:12pt}.aux{width:0px;min-width:0px;overflow-x:hidden;transition:.4s width ease-out,.4s min-width ease-out;display:flex;flex-direction:column}.aux.open{width:30em;min-width:18em}.aux .aux-contents{width:30em;min-width:10em;max-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;flex-grow:1}.notifications .notification{border-bottom:1px solid #333;padding:1em}.notifications .notification banta-timestamp{display:block;text-align:right;font-size:9pt;color:#999}.message.reply{padding:1em}.tabs{display:none}@media (max-width: 1015px){:host{flex-direction:column}.tabs{display:flex;position:absolute;top:0;left:0;right:0;width:100%;z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(0,0,0,.5)}.points{width:100%;max-width:100%;margin-left:0}header{display:none}:host.point-focus .points{width:100%;max-width:100%}.aux{width:100%;min-width:0;min-width:initial;max-width:100%}.points,.firehose,.aux{position:absolute;inset:2em 0 0;z-index:0;background:black}.points.focus,.firehose.focus,.aux.focus{z-index:2}}:host-context(.mat-dark-theme) :host{background:#090909;color:#fff}:host-context(.mat-dark-theme) form textarea{background:#ccc;color:#333}:host-context(.mat-dark-theme) header:after{border-color:#222}:host-context(.mat-dark-theme) header label{color:#aaa}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.TimestampComponent, selector: "banta-timestamp", inputs: ["value"] }, { kind: "component", type: i6.CommentComponent, selector: "banta-comment", inputs: ["message", "customMenuItems", "showReplyAction", "maxLength", "permissions", "mine", "editing", "genericAvatarUrl", "readonly"], outputs: ["liked", "unliked", "selected", "edited", "deleted", "editStarted", "editEnded", "shared", "userSelected", "usernameSelected", "avatarSelected", "reported", "loaded"] }, { kind: "component", type: i7.CommentViewComponent, selector: "banta-comment-view", inputs: ["source", "maxMessages", "maxVisibleMessages", "newestLast", "holdNewMessages", "showEmptyState", "allowReplies", "enableHoldOnClick", "enableHoldOnScroll", "customMenuItems", "fixedHeight", "selectedMessage", "genericAvatarUrl"], outputs: ["userSelected", "reported", "liked", "unliked", "usernameSelected", "avatarSelected", "shared", "deleted", "selected", "messageEdited", "sortOrderChanged", "filterModeChanged"] }, { kind: "component", type: i8.BantaCommentsComponent, selector: "banta-comments", inputs: ["customMenuItems", "url", "maxCommentLength", "loadingMessages", "useInlineReplies", "signInLabel", "sendLabel", "signingInLabel", "replyLabel", "sendingLabel", "permissionDeniedLabel", "postCommentLabel", "postReplyLabel", "allowAttachments", "fixedHeight", "maxMessages", "maxVisibleMessages", "genericAvatarUrl", "shouldInterceptMessageSend", "participants", "source", "hashtags", "topicID", "sortOrder", "filterMode"], outputs: ["signInSelected", "editAvatarSelected", "permissionDeniedError", "upvoted", "reported", "selected", "userSelected", "usernameSelected", "avatarSelected", "shared"] }, { kind: "component", type: i9.BantaChatComponent, selector: "banta-chat", inputs: ["shouldInterceptMessageSend", "url", "source", "topicID", "signInLabel", "sendLabel", "permissionDeniedLabel", "messageFieldPlaceholder", "emptyLabel"], outputs: ["selected", "reported", "upvoted", "userSelected", "permissionDeniedError", "signInSelected", "received"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i12.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i13.LiveMessageComponent, selector: "banta-live-message", inputs: ["message"], outputs: ["upvoted", "reported", "selected"] }] });
|
|
186
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaComponent, decorators: [{
|
|
187
|
-
type: Component,
|
|
188
|
-
args: [{ selector: `banta`, template: "\r\n<mat-menu #userMenu=\"matMenu\">\r\n <ng-container *ngIf=\"currentUser\">\r\n <button [disabled]=\"true\" mat-menu-item>{{currentUser.displayName}} (@{{currentUser.username}})</button>\r\n <button mat-menu-item (click)=\"signOut()\">Sign Out</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!currentUser\">\r\n <button mat-menu-item>Sign In</button>\r\n </ng-container>\r\n <button mat-menu-item>Help</button>\r\n</mat-menu>\r\n\r\n<div class=\"tabs\">\r\n <div>\r\n <a mat-button (click)=\"mobileFocus = 'chat'\">{{chatLabel}}</a>\r\n <a mat-button (click)=\"mobileFocus = 'comments'\">{{commentsLabel}}</a>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div>\r\n <ng-container *ngIf=\"currentUser\">\r\n <button mat-button [matMenuTriggerFor]=\"userMenu\">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)=\"showNotifications()\">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf=\"!currentUser\" (click)=\"showSignIn()\">\r\n Sign In\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"firehose\" [class.focus]=\"mobileFocus === 'chat'\">\r\n <header>\r\n <div>\r\n <label (click)=\"mobileFocus = 'chat'\">{{chatLabel}}</label>\r\n <div class=\"spacer\"></div>\r\n\r\n <ng-container *ngIf=\"currentUser\">\r\n <button mat-button [matMenuTriggerFor]=\"userMenu\">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)=\"showNotifications()\">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf=\"!currentUser\" (click)=\"showSignIn()\">\r\n Sign In\r\n </button>\r\n </div>\r\n </header>\r\n <banta-chat \r\n #firehose\r\n [source]=\"firehoseSource\"\r\n (signInSelected)=\"showSignIn()\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n (reported)=\"reportMessage($event)\"\r\n ></banta-chat>\r\n</div>\r\n\r\n<div class=\"aux\" [class.focus]=\"mobileFocus === 'aux'\" [class.open]=\"auxOpen\">\r\n <header>\r\n <div>\r\n <label>{{auxTitle}}</label>\r\n <div class=\"spacer\"></div>\r\n <button mat-icon-button (click)=\"auxOpen = false\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </header>\r\n <div class=\"aux-contents\">\r\n <ng-container *ngIf=\"auxMode === 'profile'\">\r\n <ng-container *ngIf=\"profileUser\">\r\n\r\n <div>\r\n <strong style=\"font-size: 125%;\">\r\n {{profileUser.displayName}}\r\n </strong>\r\n @{{profileUser.username}}\r\n </div>\r\n\r\n <br/>\r\n <strong>Top Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n\r\n <br/>\r\n <strong>Recent Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"auxMode === 'report'\">\r\n <p>Are you sure you want to report this message?</p>\r\n\r\n <banta-live-message [message]=\"reportedMessage\"></banta-live-message>\r\n\r\n <div style=\"text-align: center;\">\r\n <button mat-raised-button color=\"primary\" (click)=\"sendReport(reportedMessage)\">Yes, Report</button>\r\n \r\n <button mat-raised-button color=\"secondary\" (click)=\"auxOpen = false\">No, Cancel</button>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"auxMode === 'notifications'\">\r\n\r\n <div *ngIf=\"!notifications || notifications.length === 0\">\r\n <em>You do not have any notifications yet</em>\r\n </div>\r\n \r\n <div class=\"notifications\">\r\n <div class=\"notification\" *ngFor=\"let notif of notifications\">\r\n <div>\r\n <ng-container *ngIf=\"notif.type === 'upvote'\">\r\n @{{notif.message?.user?.username}} upvoted your post\r\n \r\n <banta-live-message\r\n [message]=\"notif.message\"\r\n (upvoted)=\"upvoteMessage(notif.message)\"\r\n (reported)=\"reportMessage(notif.message)\"\r\n (selected)=\"goToMessage(notif.message)\">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'notice'\">\r\n <div>\r\n {{notif.message}}\r\n </div>\r\n <a mat-button target=\"_blank\" href=\"{{notif.actionUrl}}\">\r\n {{notif.actionLabel}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'mention'\">\r\n You were mentioned by @{{notif.message?.user?.username}}\r\n\r\n <banta-live-message\r\n [message]=\"notif.message\"\r\n (upvoted)=\"upvoteMessage(notif.message)\"\r\n (reported)=\"reportMessage(notif.message)\"\r\n (selected)=\"goToMessage(notif.message)\">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'reply'\">\r\n @{{notif.replyMessage?.user?.username}} replied to your post\r\n \r\n <banta-live-message\r\n [message]=\"notif.replyMessage\"\r\n (upvoted)=\"upvoteMessage(notif.replyMessage)\"\r\n (reported)=\"reportMessage(notif.replyMessage)\"\r\n (selected)=\"goToMessage(notif.replyMessage)\">\r\n </banta-live-message>\r\n </ng-container>\r\n </div>\r\n\r\n <banta-timestamp [value]=\"notif.sentAt\"></banta-timestamp>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<div class=\"points\" [class.focus]=\"mobileFocus === 'points'\">\r\n <header>\r\n <div>\r\n <label>{{commentsLabel}}</label>\r\n </div>\r\n </header>\r\n <div class=\"point-focus\">\r\n <div class=\"actions\">\r\n <button mat-button (click)=\"pointUnfocus()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Back\r\n </button>\r\n\r\n <div class=\"spacer\"></div>\r\n \r\n <ng-container *ngIf=\"pointOpen\">\r\n <div class=\"counted-action\">\r\n <div class=\"count-indicator\"> \r\n {{pointOpen.likes}}\r\n </div>\r\n <button mat-icon-button>\r\n <mat-icon>thumb_up</mat-icon>\r\n </button>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"!pointSubChat\">\r\n Error: No subchat\r\n </div>\r\n \r\n <banta-comment-view\r\n class=\"subcomments\"\r\n *ngIf=\"pointSubChat\"\r\n [newestLast]=\"true\"\r\n [allowReplies]=\"false\"\r\n [source]=\"pointSubChat\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (reported)=\"reportMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n >\r\n \r\n <banta-comment\r\n class=\"focused-comment\"\r\n data-before\r\n *ngIf=\"pointOpen\"\r\n [showReplyAction]=\"false\"\r\n [message]=\"pointOpen\"\r\n [readonly]=\"pointSubChat?.readonly\"\r\n (upvoted)=\"upvoteMessage(pointOpen)\"\r\n (userSelected)=\"showProfile(pointOpen.user)\"\r\n (reported)=\"reportMessage(pointOpen)\"\r\n ></banta-comment>\r\n \r\n <div class=\"message reply\">\r\n Reply:\r\n <form class=\"new-message\" (submit)=\"sendPointSubMessage()\">\r\n <textarea \r\n name=\"message\" \r\n (keydown)=\"newPointSubMessageKeyDown($event)\"\r\n [(ngModel)]=\"newPointSubMessage.message\"></textarea>\r\n \r\n <div class=\"actions\">\r\n <button [disabled]=\"!newPointSubMessage.message\" \r\n mat-raised-button color=\"primary\">Send</button>\r\n </div>\r\n </form>\r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n <div class=\"points-section\">\r\n <banta-comments\r\n [source]=\"pointSource\"\r\n (signInSelected)=\"showSignIn()\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (reported)=\"reportMessage($event)\"\r\n (selected)=\"goToMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n ></banta-comments>\r\n </div>\r\n</div>", styles: [":host{display:flex;flex-direction:row;padding:.5em;height:40em;position:relative}.counted-action{display:flex;align-items:center}.count-indicator{font-size:9pt;padding:0 3px;border-radius:3px;border:1px solid #333}header{position:relative;margin-bottom:1em}header div{display:flex;align-items:center;height:30px}header button{color:#666}header label{text-transform:uppercase;z-index:1;font-size:12pt;letter-spacing:2px;font-weight:100;color:#333;margin:0 auto 0 0;display:block;width:-moz-fit-content;width:fit-content;position:relative;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}header:after{content:\"\";border:1px solid;border-color:#ccc;height:0px;width:100%;display:block;position:relative;z-index:0}.points{width:33%;max-width:50em;display:flex;flex-direction:column}:host.point-focus .points{width:66%;max-width:50em}:host.point-focus .points .points-section{opacity:0;pointer-events:none}:host.point-focus .points .point-focus{opacity:1;pointer-events:initial}:host.point-focus .points .point-focus .actions{display:flex}banta-comments{flex-grow:1}.points{width:33%;margin-left:.5em;font-size:12pt;flex-shrink:0;max-width:30em;transition:.2s width ease-in,.2s max-width ease-in;position:relative}.points .points-section{flex-grow:1;display:flex;flex-direction:column;opacity:1;transition:.2s opacity ease-in;z-index:2}.points .point-focus{position:absolute;width:100%;inset:1.75em 0 0;padding:.5em;opacity:0;transition:.2s opacity ease-in;flex-grow:1;display:flex;flex-direction:column}.firehose{flex-grow:1;font-size:10pt;display:flex;flex-direction:column}form{display:flex;padding:.5em 0;align-items:center}form textarea{font-size:14pt;background:black;color:#fff;border:1px solid #333;min-height:6em;width:100%}form input[type=text]{background:black;color:#fff;border:1px solid #333;width:100%;height:1em}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}.subcomments ::ng-deep banta-comment{font-size:10pt}.subcomments ::ng-deep banta-comment.focused-comment{background:#001321;color:#fff;font-size:12pt}.aux{width:0px;min-width:0px;overflow-x:hidden;transition:.4s width ease-out,.4s min-width ease-out;display:flex;flex-direction:column}.aux.open{width:30em;min-width:18em}.aux .aux-contents{width:30em;min-width:10em;max-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;flex-grow:1}.notifications .notification{border-bottom:1px solid #333;padding:1em}.notifications .notification banta-timestamp{display:block;text-align:right;font-size:9pt;color:#999}.message.reply{padding:1em}.tabs{display:none}@media (max-width: 1015px){:host{flex-direction:column}.tabs{display:flex;position:absolute;top:0;left:0;right:0;width:100%;z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(0,0,0,.5)}.points{width:100%;max-width:100%;margin-left:0}header{display:none}:host.point-focus .points{width:100%;max-width:100%}.aux{width:100%;min-width:0;min-width:initial;max-width:100%}.points,.firehose,.aux{position:absolute;inset:2em 0 0;z-index:0;background:black}.points.focus,.firehose.focus,.aux.focus{z-index:2}}:host-context(.mat-dark-theme) :host{background:#090909;color:#fff}:host-context(.mat-dark-theme) form textarea{background:#ccc;color:#333}:host-context(.mat-dark-theme) header:after{border-color:#222}:host-context(.mat-dark-theme) header label{color:#aaa}\n"] }]
|
|
189
|
-
}], ctorParameters: function () { return [{ type: i1.ChatBackendBase }, { type: i2.MatDialog }]; }, propDecorators: { firehose: [{
|
|
190
|
-
type: ViewChild,
|
|
191
|
-
args: ['firehose', { static: true }]
|
|
192
|
-
}], topicID: [{
|
|
193
|
-
type: Input
|
|
194
|
-
}], chatLabel: [{
|
|
195
|
-
type: Input
|
|
196
|
-
}], commentsLabel: [{
|
|
197
|
-
type: Input
|
|
198
|
-
}], signInSelected: [{
|
|
199
|
-
type: Output
|
|
200
|
-
}], hasPoint: [{
|
|
201
|
-
type: HostBinding,
|
|
202
|
-
args: ['class.point-focus']
|
|
203
|
-
}] } });
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFudGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvYmFudGEvYmFudGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvYmFudGEvYmFudGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RSxPQUFPLEVBQUUsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFJdkM7O0dBRUc7QUFNSCxNQUFNLE9BQU8sY0FBYztJQUN2QixZQUNZLE9BQXlCLEVBQ3pCLFNBQXFCO1FBRHJCLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ3pCLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFRekIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbkMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixhQUFRLEdBQUcsZUFBZSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxlQUFlLENBQUM7UUFVMUIsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUF5RTVCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQStCaEIsY0FBUyxHQUFHLE1BQU0sQ0FBQztRQUNuQixrQkFBYSxHQUFHLFVBQVUsQ0FBQztRQWM1QixvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUE4QjlDLGNBQVMsR0FBaUIsSUFBSSxDQUFDO1FBQy9CLGlCQUFZLEdBQW9CLElBQUksQ0FBQztRQTBDckMsdUJBQWtCLEdBQW9CLEVBQUUsQ0FBQztRQUV6QyxxQkFBZ0IsR0FBRyxpTUFBaU0sQ0FBQztJQXROck4sQ0FBQztJ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c0RqQixRQUFRO3NCQURQLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkE0RW5DLE9BQU87c0JBRFYsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBaUJGLGNBQWM7c0JBRGpCLE1BQU07Z0JBd0JILFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIEhvc3RCaW5kaW5nIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmV3TWVzc2FnZUZvcm0sIENoYXRNZXNzYWdlLCBVc2VyLCBOb3RpZmljYXRpb24gfSBmcm9tICdAYmFudGEvY29tbW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEJhbnRhQ2hhdENvbXBvbmVudCB9IGZyb20gJy4uL2NoYXQnO1xyXG5pbXBvcnQgeyBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDaGF0QmFja2VuZEJhc2UgfSBmcm9tIFwiLi4vY2hhdC1iYWNrZW5kLWJhc2VcIjtcclxuaW1wb3J0IHsgQ2hhdFNvdXJjZUJhc2UgfSBmcm9tIFwiLi4vY2hhdC1zb3VyY2UtYmFzZVwiO1xyXG5cclxuLyoqXHJcbiAqIFVuaWZpZWQgY2hhdCBhbmQgY29tbWVudHMgY29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBgYmFudGFgLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhbnRhLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWyAnLi9iYW50YS5jb21wb25lbnQuc2NzcycgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFudGFDb21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBiYWNrZW5kIDogQ2hhdEJhY2tlbmRCYXNlLFxyXG4gICAgICAgIHByaXZhdGUgbWF0RGlhbG9nIDogTWF0RGlhbG9nXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBmaXJlaG9zZVNvdXJjZSA6IENoYXRTb3VyY2VCYXNlO1xyXG4gICAgcG9pbnRTb3VyY2UgOiBDaGF0U291cmNlQmFzZTtcclxuXHJcbiAgICBwcml2YXRlIF90b3BpY0lEIDogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBfc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgICBhdXhPcGVuID0gZmFsc2U7XHJcbiAgICBhdXhUaXRsZSA9ICdOb3RpZmljYXRpb25zJztcclxuICAgIGF1eE1vZGUgPSAnbm90aWZpY2F0aW9ucyc7XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5hZGQodGhpcy5iYWNrZW5kLnVzZXJDaGFuZ2VkLnN1YnNjcmliZSh1c2VyID0+IHRoaXMuY3VycmVudFVzZXIgPSB1c2VyKSk7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5hZGQodGhpcy5iYWNrZW5kLm5vdGlmaWNhdGlvbnNDaGFuZ2VkLnN1YnNjcmliZShub3RpZnMgPT4gdGhpcy5ub3RpZmljYXRpb25zID0gbm90aWZzKSk7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5hZGQodGhpcy5iYWNrZW5kLm5ld05vdGlmaWNhdGlvbi5zdWJzY3JpYmUobm90aWYgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdOb3RpZmljYXRpb25zID0gdHJ1ZTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIG1vYmlsZUZvY3VzIDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICBhc3luYyBzZW5kUG9pbnRTdWJNZXNzYWdlKCkge1xyXG4gICAgICAgIGxldCB0ZXh0ID0gKHRoaXMubmV3UG9pbnRTdWJNZXNzYWdlLm1lc3NhZ2UgfHwgJycpLnRyaW0oKTtcclxuICAgICAgICB0aGlzLm5ld1BvaW50U3ViTWVzc2FnZS5tZXNzYWdlID0gJyc7XHJcblxyXG4gICAgICAgIGlmICh0ZXh0ID09PSAnJylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBtZXNzYWdlIDogQ2hhdE1lc3NhZ2UgPSB7XHJcbiAgICAgICAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgICAgICAgIHNlbnRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgICAgICAgbGlrZXM6IDAsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRleHRcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBvaW50U3ViQ2hhdC5zZW5kKG1lc3NhZ2UpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHNlbmQgcG9pbnQgc3ViLW1lc3NhZ2U6YCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ZpcmVob3NlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIGZpcmVob3NlIDogQmFudGFDaGF0Q29tcG9uZW50O1xyXG5cclxuICAgIGFzeW5jIGdvVG9NZXNzYWdlKG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkge1xyXG5cclxuICAgICAgICBsZXQgdGFyZ2V0TWVzc2FnZSA9IG1lc3NhZ2U7XHJcblxyXG4gICAgICAgIGlmIChtZXNzYWdlLnBhcmVudE1lc3NhZ2VJZCkge1xyXG4gICAgICAgICAgICAvLyBqdW1wIHRvIHRoZSBwYXJlbnQgbWVzc2FnZSB0aHJlYWQuLi5cclxuXHJcbiAgICAgICAgICAgIGxldCBwYXJlbnRNZXNzYWdlOiBDaGF0TWVzc2FnZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnRNZXNzYWdlID0gYXdhaXQgdGhpcy5iYWNrZW5kLmdldE1lc3NhZ2UobWVzc2FnZS50b3BpY0lkLCBtZXNzYWdlLnBhcmVudE1lc3NhZ2VJZCk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFJlY2VpdmVkIGV4Y2VwdGlvbiB3aGlsZSBmZXRjaGluZyBwYXJlbnQgbWVzc2FnZTpgKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghcGFyZW50TWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGxvb2sgdXAgcGFyZW50IG1lc3NhZ2UgJHttZXNzYWdlLnRvcGljSWR9LyR7bWVzc2FnZS5wYXJlbnRNZXNzYWdlSWR9YCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBPcmlnaW5hbCBtZXNzYWdlIHdhczpgKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGlyKHRhcmdldE1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBtZXNzYWdlID0gcGFyZW50TWVzc2FnZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB2aWV3VHlwZSA9IHRoaXMuZ2V0Vmlld1R5cGUobWVzc2FnZSk7XHJcblxyXG4gICAgICAgIGlmICh2aWV3VHlwZSA9PT0gJ2NvbW1lbnQnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBvaW50U3ViQ2hhdCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucG9pbnRTdWJDaGF0LmNsb3NlKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRTdWJDaGF0LmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50U3ViQ2hhdCA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5tb2JpbGVGb2N1cyA9ICdwb2ludHMnO1xyXG4gICAgICAgICAgICB0aGlzLnBvaW50T3BlbiA9IG1lc3NhZ2U7XHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRTdWJDaGF0ID0gYXdhaXQgdGhpcy5iYWNrZW5kLmdldFNvdXJjZUZvclRocmVhZChtZXNzYWdlLnRvcGljSWQsIG1lc3NhZ2UuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLnBvaW50T3BlbiA9IGF3YWl0IHRoaXMuYmFja2VuZC5yZWZyZXNoTWVzc2FnZShtZXNzYWdlKTtcclxuICAgICAgICAgICAgdGhpcy5uZXdQb2ludFN1Yk1lc3NhZ2UgPSB7fTtcclxuICAgICAgICB9IGVsc2UgaWYgKHZpZXdUeXBlID09PSAnY2hhdCcpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2JpbGVGb2N1cyA9ICdmaXJlaG9zZSc7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyZWhvc2UuanVtcFRvTWVzc2FnZShtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbm90aWZpY2F0aW9ucyA6IE5vdGlmaWNhdGlvbltdO1xyXG4gICAgbmV3Tm90aWZpY2F0aW9ucyA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICBwb2ludFVuZm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5wb2ludE9wZW4gPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLnBvaW50U3ViQ2hhdCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wb2ludFN1YkNoYXQuY2xvc2UpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50U3ViQ2hhdC5jbG9zZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnBvaW50U3ViQ2hhdCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93QXV4KHRpdGxlIDogc3RyaW5nLCBtb2RlIDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5hdXhPcGVuID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmF1eFRpdGxlID0gdGl0bGU7XHJcbiAgICAgICAgdGhpcy5hdXhNb2RlID0gbW9kZTtcclxuICAgICAgICB0aGlzLm1vYmlsZUZvY3VzID0gJ2F1eCc7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd05vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93QXV4KCdOb3RpZmljYXRpb25zJywgJ25vdGlmaWNhdGlvbnMnKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHRvcGljSUQoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RvcGljSUQ7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgY2hhdExhYmVsID0gJ0NoYXQnO1xyXG4gICAgQElucHV0KCkgY29tbWVudHNMYWJlbCA9ICdDb21tZW50cyc7XHJcblxyXG4gICAgc2V0IHRvcGljSUQodmFsdWUpIHtcclxuICAgICAgICB0aGlzLl90b3BpY0lEID0gdmFsdWU7XHJcblxyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB0aGlzLmNvbm5lY3RUb1RvcGljKHRoaXMuX3RvcGljSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgY29ubmVjdFRvVG9waWMoaWQgOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmZpcmVob3NlU291cmNlID0gYXdhaXQgdGhpcy5iYWNrZW5kLmdldFNvdXJjZUZvclRvcGljKGAke2lkfV9maXJlaG9zZWApO1xyXG4gICAgICAgIHRoaXMucG9pbnRTb3VyY2UgPSBhd2FpdCB0aGlzLmJhY2tlbmQuZ2V0U291cmNlRm9yVG9waWMoYCR7aWR9X3RoZXBvaW50YCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2lnbkluU2VsZWN0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgZ2V0IHNpZ25JblNlbGVjdGVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zaWduSW5TZWxlY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2lnbkluKCkge1xyXG4gICAgICAgIHRoaXMuX3NpZ25JblNlbGVjdGVkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5maXJlaG9zZVNvdXJjZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5maXJlaG9zZVNvdXJjZS5jbG9zZSlcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlyZWhvc2VTb3VyY2UuY2xvc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5maXJlaG9zZVNvdXJjZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wb2ludFNvdXJjZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wb2ludFNvdXJjZS5jbG9zZSlcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRTb3VyY2UuY2xvc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5wb2ludFNvdXJjZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MucG9pbnQtZm9jdXMnKVxyXG4gICAgZ2V0IGhhc1BvaW50KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBvaW50T3BlbiAhPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHBvaW50T3BlbiA6IENoYXRNZXNzYWdlID0gbnVsbDtcclxuICAgIHBvaW50U3ViQ2hhdCA6IENoYXRTb3VyY2VCYXNlID0gbnVsbDtcclxuXHJcbiAgICBjbG9zZUF1eCgpIHtcclxuICAgICAgICB0aGlzLmF1eE9wZW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1vYmlsZUZvY3VzID0gJ2ZpcmVob3NlJztcclxuICAgIH1cclxuXHJcbiAgICBnZXRWaWV3VHlwZShtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAobWVzc2FnZS50b3BpY0lkLmVuZHNXaXRoKCdfZmlyZWhvc2UnKSlcclxuICAgICAgICAgICAgcmV0dXJuICdjaGF0JztcclxuICAgICAgICBlbHNlIGlmIChtZXNzYWdlLnRvcGljSWQuZW5kc1dpdGgoJ190aGVwb2ludCcpKVxyXG4gICAgICAgICAgICByZXR1cm4gJ2NvbW1lbnQnO1xyXG5cclxuICAgICAgICByZXR1cm4gJ2NvbW1lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwdm90ZU1lc3NhZ2UobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgLy8gVE9ET1xyXG4gICAgICAgIC8vYXdhaXQgdGhpcy5iYWNrZW5kLmxpa2VNZXNzYWdlKG1lc3NhZ2UuaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dQcm9maWxlKHVzZXIgOiBVc2VyKSB7XHJcbiAgICAgICAgdGhpcy5wcm9maWxlVXNlciA9IHVzZXI7XHJcbiAgICAgICAgdGhpcy5zaG93QXV4KGBAJHt1c2VyLnVzZXJuYW1lfSdzIFByb2ZpbGVgLCAncHJvZmlsZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb2ZpbGVVc2VyIDogVXNlcjtcclxuICAgIFxyXG4gICAgcmVwb3J0ZWRNZXNzYWdlIDogQ2hhdE1lc3NhZ2U7XHJcblxyXG4gICAgc2VuZFJlcG9ydChtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICB0aGlzLmF1eE9wZW4gPSBmYWxzZTtcclxuICAgICAgICBhbGVydCgnd291bGQgc2VuZCByZXBvcnQnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXBvcnRNZXNzYWdlKG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIHRoaXMucmVwb3J0ZWRNZXNzYWdlID0gbWVzc2FnZTtcclxuICAgICAgICB0aGlzLnNob3dBdXgoYFJlcG9ydCBtZXNzYWdlIGZyb20gQCR7bWVzc2FnZS51c2VyLnVzZXJuYW1lfWAsICdyZXBvcnQnKTtcclxuICAgIH1cclxuXHJcbiAgICBjdXJyZW50VXNlciA6IFVzZXI7XHJcblxyXG4gICAgbmV3UG9pbnRTdWJNZXNzYWdlIDogTmV3TWVzc2FnZUZvcm0gPSB7fTtcclxuXHJcbiAgICBnZW5lcmljQXZhdGFyVXJsID0gJ2h0dHBzOi8vZ3JhdmF0YXIuY29tL2F2YXRhci85MTVjODA0ZTBiZTYwN2E0YWQ3NjZkZGFkZWE1YzQ4YT9zPTUxMiZkPWh0dHBzOi8vY29kZXBlbi5pby9hc3NldHMvYXZhdGFycy91c2VyLWF2YXRhci01MTJ4NTEyLTZlMjQwY2YzNTBkMmYxY2MwN2MyYmVkMjM0YzNhM2JiNWYxYjIzNzAyM2MyMDRjNzgyNjIyZTgwZDZiMjEyYmEucG5nJztcclxufSIsIlxyXG48bWF0LW1lbnUgI3VzZXJNZW51PVwibWF0TWVudVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRVc2VyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwidHJ1ZVwiIG1hdC1tZW51LWl0ZW0+e3tjdXJyZW50VXNlci5kaXNwbGF5TmFtZX19IChAe3tjdXJyZW50VXNlci51c2VybmFtZX19KTwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2lnbk91dCgpXCI+U2lnbiBPdXQ8L2J1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXJyZW50VXNlclwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbT5TaWduIEluPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbT5IZWxwPC9idXR0b24+XHJcbjwvbWF0LW1lbnU+XHJcblxyXG48ZGl2IGNsYXNzPVwidGFic1wiPlxyXG4gICAgPGRpdj5cclxuICAgICAgICA8YSBtYXQtYnV0dG9uIChjbGljayk9XCJtb2JpbGVGb2N1cyA9ICdjaGF0J1wiPnt7Y2hhdExhYmVsfX08L2E+XHJcbiAgICAgICAgPGEgbWF0LWJ1dHRvbiAoY2xpY2spPVwibW9iaWxlRm9jdXMgPSAnY29tbWVudHMnXCI+e3tjb21tZW50c0xhYmVsfX08L2E+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzcGFjZXJcIj48L2Rpdj5cclxuICAgIDxkaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRVc2VyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwidXNlck1lbnVcIj5cclxuICAgICAgICAgICAgICAgIEB7e2N1cnJlbnRVc2VyLnVzZXJuYW1lfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzaG93Tm90aWZpY2F0aW9ucygpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+bm90aWZpY2F0aW9uX2ltcG9ydGFudDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAqbmdJZj1cIiFjdXJyZW50VXNlclwiIChjbGljayk9XCJzaG93U2lnbkluKClcIj5cclxuICAgICAgICAgICAgU2lnbiBJblxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImZpcmVob3NlXCIgW2NsYXNzLmZvY3VzXT1cIm1vYmlsZUZvY3VzID09PSAnY2hhdCdcIj5cclxuICAgIDxoZWFkZXI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGxhYmVsIChjbGljayk9XCJtb2JpbGVGb2N1cyA9ICdjaGF0J1wiPnt7Y2hhdExhYmVsfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFVzZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwidXNlck1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICBAe3tjdXJyZW50VXNlci51c2VybmFtZX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzaG93Tm90aWZpY2F0aW9ucygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm5vdGlmaWNhdGlvbl9pbXBvcnRhbnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uICpuZ0lmPVwiIWN1cnJlbnRVc2VyXCIgKGNsaWNrKT1cInNob3dTaWduSW4oKVwiPlxyXG4gICAgICAgICAgICAgICAgU2lnbiBJblxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvaGVhZGVyPlxyXG4gICAgPGJhbnRhLWNoYXQgXHJcbiAgICAgICAgI2ZpcmVob3NlXHJcbiAgICAgICAgW3NvdXJjZV09XCJmaXJlaG9zZVNvdXJjZVwiXHJcbiAgICAgICAgKHNpZ25JblNlbGVjdGVkKT1cInNob3dTaWduSW4oKVwiXHJcbiAgICAgICAgKHVwdm90ZWQpPVwidXB2b3RlTWVzc2FnZSgkZXZlbnQpXCJcclxuICAgICAgICAodXNlclNlbGVjdGVkKT1cInNob3dQcm9maWxlKCRldmVudC51c2VyKVwiXHJcbiAgICAgICAgKHJlcG9ydGVkKT1cInJlcG9ydE1lc3NhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvYmFudGEtY2hhdD5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiYXV4XCIgW2NsYXNzLmZvY3VzXT1cIm1vYmlsZUZvY3VzID09PSAnYXV4J1wiIFtjbGFzcy5vcGVuXT1cImF1eE9wZW5cIj5cclxuICAgIDxoZWFkZXI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGxhYmVsPnt7YXV4VGl0bGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImF1eE9wZW4gPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2hlYWRlcj5cclxuICAgIDxkaXYgY2xhc3M9XCJhdXgtY29udGVudHNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXV4TW9kZSA9PT0gJ3Byb2ZpbGUnXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9maWxlVXNlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBzdHlsZT1cImZvbnQtc2l6ZTogMTI1JTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3twcm9maWxlVXNlci5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgQHt7cHJvZmlsZVVzZXIudXNlcm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGJyLz5cclxuICAgICAgICAgICAgICAgIDxzdHJvbmc+VG9wIE1lc3NhZ2VzPC9zdHJvbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZW0+Tm90IHlldCBhdmFpbGFibGU8L2VtPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGJyLz5cclxuICAgICAgICAgICAgICAgIDxzdHJvbmc+UmVjZW50IE1lc3NhZ2VzPC9zdHJvbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZW0+Tm90IHlldCBhdmFpbGFibGU8L2VtPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXV4TW9kZSA9PT0gJ3JlcG9ydCdcIj5cclxuICAgICAgICAgICAgPHA+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlcG9ydCB0aGlzIG1lc3NhZ2U/PC9wPlxyXG5cclxuICAgICAgICAgICAgPGJhbnRhLWxpdmUtbWVzc2FnZSBbbWVzc2FnZV09XCJyZXBvcnRlZE1lc3NhZ2VcIj48L2JhbnRhLWxpdmUtbWVzc2FnZT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzZW5kUmVwb3J0KHJlcG9ydGVkTWVzc2FnZSlcIj5ZZXMsIFJlcG9ydDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImF1eE9wZW4gPSBmYWxzZVwiPk5vLCBDYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXV4TW9kZSA9PT0gJ25vdGlmaWNhdGlvbnMnXCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW5vdGlmaWNhdGlvbnMgfHwgbm90aWZpY2F0aW9ucy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgICAgICAgIDxlbT5Zb3UgZG8gbm90IGhhdmUgYW55IG5vdGlmaWNhdGlvbnMgeWV0PC9lbT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvblwiICpuZ0Zvcj1cImxldCBub3RpZiBvZiBub3RpZmljYXRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vdGlmLnR5cGUgPT09ICd1cHZvdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAe3tub3RpZi5tZXNzYWdlPy51c2VyPy51c2VybmFtZX19IHVwdm90ZWQgeW91ciBwb3N0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiYW50YS1saXZlLW1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJub3RpZi5tZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXB2b3RlZCk9XCJ1cHZvdGVNZXNzYWdlKG5vdGlmLm1lc3NhZ2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVwb3J0ZWQpPVwicmVwb3J0TWVzc2FnZShub3RpZi5tZXNzYWdlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cImdvVG9NZXNzYWdlKG5vdGlmLm1lc3NhZ2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2JhbnRhLWxpdmUtbWVzc2FnZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm90aWYudHlwZSA9PT0gJ25vdGljZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tub3RpZi5tZXNzYWdlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbWF0LWJ1dHRvbiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3tub3RpZi5hY3Rpb25Vcmx9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bm90aWYuYWN0aW9uTGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vdGlmLnR5cGUgPT09ICdtZW50aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHdlcmUgbWVudGlvbmVkIGJ5IEB7e25vdGlmLm1lc3NhZ2U/LnVzZXI/LnVzZXJuYW1lfX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YmFudGEtbGl2ZS1tZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibm90aWYubWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVwdm90ZWQpPVwidXB2b3RlTWVzc2FnZShub3RpZi5tZXNzYWdlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcG9ydGVkKT1cInJlcG9ydE1lc3NhZ2Uobm90aWYubWVzc2FnZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJnb1RvTWVzc2FnZShub3RpZi5tZXNzYWdlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9iYW50YS1saXZlLW1lc3NhZ2U+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vdGlmLnR5cGUgPT09ICdyZXBseSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEB7e25vdGlmLnJlcGx5TWVzc2FnZT8udXNlcj8udXNlcm5hbWV9fSByZXBsaWVkIHRvIHlvdXIgcG9zdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YmFudGEtbGl2ZS1tZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibm90aWYucmVwbHlNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXB2b3RlZCk9XCJ1cHZvdGVNZXNzYWdlKG5vdGlmLnJlcGx5TWVzc2FnZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXBvcnRlZCk9XCJyZXBvcnRNZXNzYWdlKG5vdGlmLnJlcGx5TWVzc2FnZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJnb1RvTWVzc2FnZShub3RpZi5yZXBseU1lc3NhZ2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2JhbnRhLWxpdmUtbWVzc2FnZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxiYW50YS10aW1lc3RhbXAgW3ZhbHVlXT1cIm5vdGlmLnNlbnRBdFwiPjwvYmFudGEtdGltZXN0YW1wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwicG9pbnRzXCIgW2NsYXNzLmZvY3VzXT1cIm1vYmlsZUZvY3VzID09PSAncG9pbnRzJ1wiPlxyXG4gICAgPGhlYWRlcj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8bGFiZWw+e3tjb21tZW50c0xhYmVsfX08L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9oZWFkZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicG9pbnQtZm9jdXNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInBvaW50VW5mb2N1cygpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICBCYWNrXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvaW50T3BlblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZWQtYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50LWluZGljYXRvclwiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7cG9pbnRPcGVuLmxpa2VzfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRodW1iX3VwPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhcG9pbnRTdWJDaGF0XCI+XHJcbiAgICAgICAgICAgIEVycm9yOiBObyBzdWJjaGF0XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGJhbnRhLWNvbW1lbnQtdmlld1xyXG4gICAgICAgICAgICBjbGFzcz1cInN1YmNvbW1lbnRzXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJwb2ludFN1YkNoYXRcIlxyXG4gICAgICAgICAgICBbbmV3ZXN0TGFzdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2FsbG93UmVwbGllc109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtzb3VyY2VdPVwicG9pbnRTdWJDaGF0XCJcclxuICAgICAgICAgICAgKHVwdm90ZWQpPVwidXB2b3RlTWVzc2FnZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKHJlcG9ydGVkKT1cInJlcG9ydE1lc3NhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICh1c2VyU2VsZWN0ZWQpPVwic2hvd1Byb2ZpbGUoJGV2ZW50LnVzZXIpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGJhbnRhLWNvbW1lbnRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9jdXNlZC1jb21tZW50XCJcclxuICAgICAgICAgICAgICAgIGRhdGEtYmVmb3JlXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInBvaW50T3BlblwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcGx5QWN0aW9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFttZXNzYWdlXT1cInBvaW50T3BlblwiXHJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicG9pbnRTdWJDaGF0Py5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAodXB2b3RlZCk9XCJ1cHZvdGVNZXNzYWdlKHBvaW50T3BlbilcIlxyXG4gICAgICAgICAgICAgICAgKHVzZXJTZWxlY3RlZCk9XCJzaG93UHJvZmlsZShwb2ludE9wZW4udXNlcilcIlxyXG4gICAgICAgICAgICAgICAgKHJlcG9ydGVkKT1cInJlcG9ydE1lc3NhZ2UocG9pbnRPcGVuKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9iYW50YS1jb21tZW50PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZSByZXBseVwiPlxyXG4gICAgICAgICAgICAgICAgUmVwbHk6XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cIm5ldy1tZXNzYWdlXCIgKHN1Ym1pdCk9XCJzZW5kUG9pbnRTdWJNZXNzYWdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJtZXNzYWdlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm5ld1BvaW50U3ViTWVzc2FnZUtleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3UG9pbnRTdWJNZXNzYWdlLm1lc3NhZ2VcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIW5ld1BvaW50U3ViTWVzc2FnZS5tZXNzYWdlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIj5TZW5kPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYmFudGEtY29tbWVudC12aWV3PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicG9pbnRzLXNlY3Rpb25cIj5cclxuICAgICAgICA8YmFudGEtY29tbWVudHNcclxuICAgICAgICAgICAgW3NvdXJjZV09XCJwb2ludFNvdXJjZVwiXHJcbiAgICAgICAgICAgIChzaWduSW5TZWxlY3RlZCk9XCJzaG93U2lnbkluKClcIlxyXG4gICAgICAgICAgICAodXB2b3RlZCk9XCJ1cHZvdGVNZXNzYWdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAocmVwb3J0ZWQpPVwicmVwb3J0TWVzc2FnZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKHNlbGVjdGVkKT1cImdvVG9NZXNzYWdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAodXNlclNlbGVjdGVkKT1cInNob3dQcm9maWxlKCRldmVudC51c2VyKVwiXHJcbiAgICAgICAgICAgID48L2JhbnRhLWNvbW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommentsModule } from './comments';
|
|
3
|
-
import { ChatModule } from './chat';
|
|
4
|
-
import { EmojiModule } from './emoji';
|
|
5
|
-
import { BantaComponent } from './banta/banta.component';
|
|
6
|
-
import { BantaLogoComponent } from './banta-logo.component';
|
|
7
|
-
import { CommonModule } from '@angular/common';
|
|
8
|
-
import { FormsModule } from '@angular/forms';
|
|
9
|
-
import { BantaCommonModule } from './common/common.module';
|
|
10
|
-
import { LiveMessageComponent } from './live-message.component';
|
|
11
|
-
import { MatButtonModule } from "@angular/material/button";
|
|
12
|
-
import { MatIconModule } from "@angular/material/icon";
|
|
13
|
-
import { MatTooltipModule } from "@angular/material/tooltip";
|
|
14
|
-
import { MatMenuModule } from "@angular/material/menu";
|
|
15
|
-
import { MatDialogModule } from "@angular/material/dialog";
|
|
16
|
-
import { MatSnackBarModule } from "@angular/material/snack-bar";
|
|
17
|
-
import { MatFormFieldModule } from "@angular/material/form-field";
|
|
18
|
-
import { MatInputModule } from "@angular/material/input";
|
|
19
|
-
import { MatProgressSpinnerModule } from "@angular/material/progress-spinner";
|
|
20
|
-
import { ChatBackend } from './chat-backend';
|
|
21
|
-
import { BANTA_SDK_OPTIONS } from './sdk-options';
|
|
22
|
-
import { ChatBackendBase } from './chat-backend-base';
|
|
23
|
-
import { OverlayModule } from '@angular/cdk/overlay';
|
|
24
|
-
import { PortalModule } from '@angular/cdk/portal';
|
|
25
|
-
import { UrlAttachmentResolver, UrlAttachmentScraper } from './url-attachments';
|
|
26
|
-
import { YouTubeAttachmentResolver } from './youtube-attachments';
|
|
27
|
-
import { GiphyAttachmentResolver } from './giphy-attachments';
|
|
28
|
-
import { TweetAttachmentResolver } from './tweet-attachments';
|
|
29
|
-
import * as i0 from "@angular/core";
|
|
30
|
-
import * as i1 from "./chat-backend-base";
|
|
31
|
-
import * as i2 from "./common/common.module";
|
|
32
|
-
export class BantaSdkModule {
|
|
33
|
-
constructor(chatBackend) {
|
|
34
|
-
if (typeof window !== 'undefined') {
|
|
35
|
-
if (!document.querySelector('script[src="https://platform.twitter.com/widgets.js"]')) {
|
|
36
|
-
let script = document.createElement('script');
|
|
37
|
-
script.src = 'https://platform.twitter.com/widgets.js';
|
|
38
|
-
script.async = true;
|
|
39
|
-
document.body.appendChild(script);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
chatBackend.registerAttachmentScraper(new UrlAttachmentScraper());
|
|
43
|
-
chatBackend.registerAttachmentResolver(new GiphyAttachmentResolver());
|
|
44
|
-
chatBackend.registerAttachmentResolver(new YouTubeAttachmentResolver());
|
|
45
|
-
chatBackend.registerAttachmentResolver(new TweetAttachmentResolver());
|
|
46
|
-
chatBackend.registerAttachmentResolver(new UrlAttachmentResolver(chatBackend));
|
|
47
|
-
}
|
|
48
|
-
static configure(options) {
|
|
49
|
-
return {
|
|
50
|
-
ngModule: BantaSdkModule,
|
|
51
|
-
providers: [
|
|
52
|
-
{
|
|
53
|
-
provide: BANTA_SDK_OPTIONS,
|
|
54
|
-
useValue: options || {}
|
|
55
|
-
},
|
|
56
|
-
{ provide: ChatBackendBase, useClass: ChatBackend }
|
|
57
|
-
]
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
BantaSdkModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaSdkModule, deps: [{ token: i1.ChatBackendBase }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
62
|
-
BantaSdkModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: BantaSdkModule, declarations: [BantaComponent,
|
|
63
|
-
BantaLogoComponent,
|
|
64
|
-
LiveMessageComponent], imports: [CommonModule,
|
|
65
|
-
FormsModule, i2.BantaCommonModule, CommentsModule,
|
|
66
|
-
ChatModule,
|
|
67
|
-
EmojiModule,
|
|
68
|
-
MatIconModule,
|
|
69
|
-
MatButtonModule,
|
|
70
|
-
MatTooltipModule,
|
|
71
|
-
MatMenuModule,
|
|
72
|
-
MatDialogModule,
|
|
73
|
-
MatFormFieldModule,
|
|
74
|
-
MatInputModule,
|
|
75
|
-
MatProgressSpinnerModule,
|
|
76
|
-
MatSnackBarModule,
|
|
77
|
-
OverlayModule,
|
|
78
|
-
PortalModule], exports: [BantaComponent,
|
|
79
|
-
BantaLogoComponent,
|
|
80
|
-
LiveMessageComponent,
|
|
81
|
-
BantaCommonModule,
|
|
82
|
-
ChatModule,
|
|
83
|
-
CommentsModule,
|
|
84
|
-
EmojiModule] });
|
|
85
|
-
BantaSdkModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaSdkModule, imports: [CommonModule,
|
|
86
|
-
FormsModule,
|
|
87
|
-
BantaCommonModule.forRoot(),
|
|
88
|
-
CommentsModule,
|
|
89
|
-
ChatModule,
|
|
90
|
-
EmojiModule,
|
|
91
|
-
MatIconModule,
|
|
92
|
-
MatButtonModule,
|
|
93
|
-
MatTooltipModule,
|
|
94
|
-
MatMenuModule,
|
|
95
|
-
MatDialogModule,
|
|
96
|
-
MatFormFieldModule,
|
|
97
|
-
MatInputModule,
|
|
98
|
-
MatProgressSpinnerModule,
|
|
99
|
-
MatSnackBarModule,
|
|
100
|
-
OverlayModule,
|
|
101
|
-
PortalModule, BantaCommonModule,
|
|
102
|
-
ChatModule,
|
|
103
|
-
CommentsModule,
|
|
104
|
-
EmojiModule] });
|
|
105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaSdkModule, decorators: [{
|
|
106
|
-
type: NgModule,
|
|
107
|
-
args: [{
|
|
108
|
-
imports: [
|
|
109
|
-
CommonModule,
|
|
110
|
-
FormsModule,
|
|
111
|
-
BantaCommonModule.forRoot(),
|
|
112
|
-
CommentsModule,
|
|
113
|
-
ChatModule,
|
|
114
|
-
EmojiModule,
|
|
115
|
-
MatIconModule,
|
|
116
|
-
MatButtonModule,
|
|
117
|
-
MatTooltipModule,
|
|
118
|
-
MatMenuModule,
|
|
119
|
-
MatDialogModule,
|
|
120
|
-
MatFormFieldModule,
|
|
121
|
-
MatInputModule,
|
|
122
|
-
MatProgressSpinnerModule,
|
|
123
|
-
MatSnackBarModule,
|
|
124
|
-
OverlayModule,
|
|
125
|
-
PortalModule
|
|
126
|
-
],
|
|
127
|
-
declarations: [
|
|
128
|
-
BantaComponent,
|
|
129
|
-
BantaLogoComponent,
|
|
130
|
-
LiveMessageComponent
|
|
131
|
-
],
|
|
132
|
-
exports: [
|
|
133
|
-
BantaComponent,
|
|
134
|
-
BantaLogoComponent,
|
|
135
|
-
LiveMessageComponent,
|
|
136
|
-
BantaCommonModule,
|
|
137
|
-
ChatModule,
|
|
138
|
-
CommentsModule,
|
|
139
|
-
EmojiModule
|
|
140
|
-
]
|
|
141
|
-
}]
|
|
142
|
-
}], ctorParameters: function () { return [{ type: i1.ChatBackendBase }]; } });
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFudGEtc2RrLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2JhbnRhLXNkay5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxj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Y0FBYztRQUNkLHdCQUF3QjtRQUN4QixpQkFBaUI7UUFDakIsYUFBYTtRQUNiLFlBQVksRUFXWixpQkFBaUI7UUFDakIsVUFBVTtRQUNWLGNBQWM7UUFDZCxXQUFXOzRGQUdOLGNBQWM7a0JBcEMxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsaUJBQWlCLENBQUMsT0FBTyxFQUFFO3dCQUMzQixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsV0FBVzt3QkFFWCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLHdCQUF3Qjt3QkFDeEIsaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLFlBQVk7cUJBQ2Y7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixvQkFBb0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixpQkFBaUI7d0JBQ2pCLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxXQUFXO3FCQUNkO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbWVudHNNb2R1bGUgfSBmcm9tICcuL2NvbW1lbnRzJztcclxuaW1wb3J0IHsgQ2hhdE1vZHVsZSB9IGZyb20gJy4vY2hhdCc7XHJcbmltcG9ydCB7IEVtb2ppTW9kdWxlIH0gZnJvbSAnLi9lbW9qaSc7XHJcbmltcG9ydCB7IEJhbnRhQ29tcG9uZW50IH0gZnJvbSAnLi9iYW50YS9iYW50YS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCYW50YUxvZ29Db21wb25lbnQgfSBmcm9tICcuL2JhbnRhLWxvZ28uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJhbnRhQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IExpdmVNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9saXZlLW1lc3NhZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhclwiO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBDaGF0QmFja2VuZCB9IGZyb20gJy4vY2hhdC1iYWNrZW5kJztcclxuaW1wb3J0IHsgU2RrT3B0aW9ucyB9IGZyb20gJy4vc2RrLW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBCQU5UQV9TREtfT1BUSU9OUyB9IGZyb20gJy4vc2RrLW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDaGF0QmFja2VuZEJhc2UgfSBmcm9tICcuL2NoYXQtYmFja2VuZC1iYXNlJztcclxuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IFVybEF0dGFjaG1lbnRSZXNvbHZlciwgVXJsQXR0YWNobWVudFNjcmFwZXIgfSBmcm9tICcuL3VybC1hdHRhY2htZW50cyc7XHJcbmltcG9ydCB7IFlvdVR1YmVBdHRhY2htZW50UmVzb2x2ZXIgfSBmcm9tICcuL3lvdXR1YmUtYXR0YWNobWVudHMnO1xyXG5pbXBvcnQgeyBHaXBoeUF0dGFjaG1lbnRSZXNvbHZlciB9IGZyb20gJy4vZ2lwaHktYXR0YWNobWVudHMnO1xyXG5pbXBvcnQgeyBUd2VldEF0dGFjaG1lbnRSZXNvbHZlciB9IGZyb20gJy4vdHdlZXQtYXR0YWNobWVudHMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAgICAgRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgQmFudGFDb21tb25Nb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgICAgIENvbW1lbnRzTW9kdWxlLFxyXG4gICAgICAgIENoYXRNb2R1bGUsXHJcbiAgICAgICAgRW1vamlNb2R1bGUsXHJcbiAgICAgICAgXHJcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcclxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICAgICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgICAgICBNYXRNZW51TW9kdWxlLFxyXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxyXG4gICAgICAgIE1hdFNuYWNrQmFyTW9kdWxlLFxyXG4gICAgICAgIE92ZXJsYXlNb2R1bGUsXHJcbiAgICAgICAgUG9ydGFsTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgICAgQmFudGFDb21wb25lbnQsXHJcbiAgICAgICAgQmFudGFMb2dvQ29tcG9uZW50LFxyXG4gICAgICAgIExpdmVNZXNzYWdlQ29tcG9uZW50XHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogW1xyXG4gICAgICAgIEJhbnRhQ29tcG9uZW50LFxyXG4gICAgICAgIEJhbnRhTG9nb0NvbXBvbmVudCxcclxuICAgICAgICBMaXZlTWVzc2FnZUNvbXBvbmVudCxcclxuICAgICAgICBCYW50YUNvbW1vbk1vZHVsZSxcclxuICAgICAgICBDaGF0TW9kdWxlLFxyXG4gICAgICAgIENvbW1lbnRzTW9kdWxlLFxyXG4gICAgICAgIEVtb2ppTW9kdWxlXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYW50YVNka01vZHVsZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBjaGF0QmFja2VuZDogQ2hhdEJhY2tlbmRCYXNlXHJcbiAgICApIHtcclxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjPVwiaHR0cHM6Ly9wbGF0Zm9ybS50d2l0dGVyLmNvbS93aWRnZXRzLmpzXCJdJykpIHtcclxuICAgICAgICAgICAgICAgIGxldCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICAgICAgICAgIHNjcmlwdC5zcmMgPSAnaHR0cHM6Ly9wbGF0Zm9ybS50d2l0dGVyLmNvbS93aWRnZXRzLmpzJztcclxuICAgICAgICAgICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNoYXRCYWNrZW5kLnJlZ2lzdGVyQXR0YWNobWVudFNjcmFwZXIobmV3IFVybEF0dGFjaG1lbnRTY3JhcGVyKCkpO1xyXG4gICAgICAgIGNoYXRCYWNrZW5kLnJlZ2lzdGVyQXR0YWNobWVudFJlc29sdmVyKG5ldyBHaXBoeUF0dGFjaG1lbnRSZXNvbHZlcigpKTtcclxuICAgICAgICBjaGF0QmFja2VuZC5yZWdpc3RlckF0dGFjaG1lbnRSZXNvbHZlcihuZXcgWW91VHViZUF0dGFjaG1lbnRSZXNvbHZlcigpKTtcclxuICAgICAgICBjaGF0QmFja2VuZC5yZWdpc3RlckF0dGFjaG1lbnRSZXNvbHZlcihuZXcgVHdlZXRBdHRhY2htZW50UmVzb2x2ZXIoKSk7XHJcbiAgICAgICAgY2hhdEJhY2tlbmQucmVnaXN0ZXJBdHRhY2htZW50UmVzb2x2ZXIobmV3IFVybEF0dGFjaG1lbnRSZXNvbHZlcihjaGF0QmFja2VuZCkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBzdGF0aWMgY29uZmlndXJlKG9wdGlvbnM/OiBTZGtPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVyczxCYW50YVNka01vZHVsZT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5nTW9kdWxlOiBCYW50YVNka01vZHVsZSxcclxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IEJBTlRBX1NES19PUFRJT05TLCBcclxuICAgICAgICAgICAgICAgICAgICB1c2VWYWx1ZTogb3B0aW9ucyB8fCB7fVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogQ2hhdEJhY2tlbmRCYXNlLCB1c2VDbGFzczogQ2hhdEJhY2tlbmQgfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|