qqsl-agent 0.0.3 → 0.0.5

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.
@@ -0,0 +1,228 @@
1
+ import { Component, inject, Input, NgZone, ViewChild } from '@angular/core';
2
+ import { trigger, state, style, transition, animate } from '@angular/animations';
3
+ import { MarkdownStreamService } from '../services/markdown-stream.service';
4
+ import { HttpService } from '../services/http.service';
5
+ import { SseService } from '../services/sse.service';
6
+ import { StoreService } from '../store/store.service';
7
+ import { DomSanitizer } from '@angular/platform-browser';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "ng-zorro-antd/popover";
11
+ import * as i3 from "../chat-input/chat-input.component";
12
+ import * as i4 from "../chat-messages/chat-messages.component";
13
+ import * as i5 from "../chat-sidebar/chat-sidebar.component";
14
+ export class FloatingChatComponent {
15
+ constructor() {
16
+ // 状态变量,用于控制组件的显示和动画
17
+ this.isExpanded = false;
18
+ // 标题
19
+ this.title = 'AI-青清水利';
20
+ /**
21
+ * 接口baseUrl配置
22
+ */
23
+ this.baseUrl = 'http://39.102.56.254:8082';
24
+ this.token = '';
25
+ this.md = inject(MarkdownStreamService);
26
+ this.httpService = inject(HttpService);
27
+ this.sseService = inject(SseService);
28
+ this.storeService = inject(StoreService);
29
+ this.sanitizer = inject(DomSanitizer);
30
+ this.ngZone = inject(NgZone);
31
+ this.messages = []; // 消息数组
32
+ // 历史对话
33
+ this.modelPopoverVisible = false;
34
+ }
35
+ /**
36
+ * 切换聊天框的展开/收起状态
37
+ */
38
+ toggleChatBox() {
39
+ this.isExpanded = !this.isExpanded;
40
+ }
41
+ ngOnInit() {
42
+ this.storeService.setToken(this.token);
43
+ this.storeService.setBaseUrl(this.baseUrl);
44
+ this.sseService.conversationICode$.subscribe(iCodeObj => {
45
+ if (iCodeObj) {
46
+ const currentMsg = this.messages[this.messages.length - 1];
47
+ currentMsg.iCode = iCodeObj.question;
48
+ currentMsg.answers[currentMsg.answerIndex].iCode = iCodeObj.answer;
49
+ }
50
+ });
51
+ this.sseService.thinking$.subscribe(text => {
52
+ if (this.messages.length > 0) {
53
+ const currentMsg = this.messages[this.messages.length - 1];
54
+ currentMsg.answers[currentMsg.answerIndex].think = text;
55
+ }
56
+ });
57
+ this.sseService.currentMessage$.subscribe(text => {
58
+ if (this.messages.length > 0) {
59
+ const currentMsg = this.messages[this.messages.length - 1];
60
+ currentMsg.answers[currentMsg.answerIndex].content = text;
61
+ }
62
+ });
63
+ this.storeService.currentConversation$.subscribe(conversation => {
64
+ if (!conversation) {
65
+ this.messages = [];
66
+ return;
67
+ }
68
+ this.httpService
69
+ .get(`${this.storeService.getBaseUrl()}/api/ChatModel/conversation/questions`, { iCode: conversation?.iCode })
70
+ .subscribe((res) => {
71
+ this.messages = res.map(item => {
72
+ item.answerIndex = 0;
73
+ item.answers.forEach(answer => {
74
+ answer.thinkExpand = true;
75
+ });
76
+ return item;
77
+ });
78
+ });
79
+ });
80
+ }
81
+ ngAfterViewInit() {
82
+ this.resizeObserver = new ResizeObserver(entries => {
83
+ for (let entry of entries) {
84
+ const newHeight = entry.contentRect.height;
85
+ this.ngZone.run(() => {
86
+ this.chatMessagesRef.inputHeight = newHeight + 60;
87
+ });
88
+ }
89
+ });
90
+ // 开始监听输入框元素
91
+ this.resizeObserver.observe(this.chatInputRef.chatInputWrapper.nativeElement);
92
+ }
93
+ modelVisibleChange(value) {
94
+ this.modelPopoverVisible = value;
95
+ }
96
+ // 打开新对话
97
+ openNewChat() {
98
+ this.storeService.setCurrentConversation(null);
99
+ }
100
+ // 重新生成回答(仅最新的回答允许重新生成)
101
+ regenerateAnswer(msg) {
102
+ this.chatInputRef.regenerateSend(msg);
103
+ }
104
+ // 发起提问请求
105
+ onSendMessage(event) {
106
+ if (!event.isRegenerate) {
107
+ // 推入一个新问答,iCode在流接收到补上
108
+ const qa = {
109
+ iCode: '',
110
+ question: event.message.question,
111
+ answers: [
112
+ {
113
+ iCode: '',
114
+ think: '',
115
+ content: '',
116
+ thinkExpand: true,
117
+ },
118
+ ],
119
+ answerIndex: 0,
120
+ };
121
+ this.messages.push(qa);
122
+ }
123
+ else {
124
+ const latestMessage = this.messages[this.messages.length - 1];
125
+ latestMessage.answers.push({
126
+ iCode: '',
127
+ think: '',
128
+ content: '',
129
+ thinkExpand: true,
130
+ });
131
+ latestMessage.answerIndex = latestMessage.answers.length - 1;
132
+ }
133
+ this.sseService.streamChat(event.message).then(res => {
134
+ // 开启新对话,刷新左侧历史对话
135
+ if (!event.message.conversation) {
136
+ this.chatSidebarRef.getHistory(true);
137
+ }
138
+ });
139
+ }
140
+ }
141
+ FloatingChatComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FloatingChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
142
+ FloatingChatComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FloatingChatComponent, selector: "ngx-agent-floating-chat", inputs: { title: "title", baseUrl: "baseUrl", token: "token" }, viewQueries: [{ propertyName: "chatSidebarRef", first: true, predicate: ["chatSidebarRef"], descendants: true }, { propertyName: "chatMessagesRef", first: true, predicate: ["chatMessagesRef"], descendants: true }, { propertyName: "chatInputRef", first: true, predicate: ["chatInputRef"], descendants: true }], ngImport: i0, template: "<div class=\"floating-chat-container\">\n <div class=\"chat-box\" [@chatBoxState]=\"isExpanded ? 'expanded' : 'collapsed'\">\n <header class=\"chat-header\">\n <div class=\"header-content\">\n <span\n class=\"icon menu-icon\"\n nz-popover\n [nzPopoverContent]=\"historyTpl\"\n nzPopoverTrigger=\"click\"\n nzPopoverOverlayClassName=\"params-select-popover\"\n nzPopoverPlacement=\"rightTop\"\n [nzPopoverVisible]=\"modelPopoverVisible\"\n (nzPopoverVisibleChange)=\"modelVisibleChange($event)\"\n >\n <img src=\"/assets/images/floating/history-menu.png\" style=\"width: 16px\" />\n </span>\n <h3 class=\"chat-title\">{{ title }}</h3>\n <img src=\"/assets/images/floating/new-chat.png\" style=\"width: 20px; cursor: pointer\" (click)=\"openNewChat()\" />\n </div>\n </header>\n\n <div class=\"chat-main\">\n <ngx-chat-messages\n #chatMessagesRef\n [messages]=\"messages\"\n (regenerateAnswer)=\"regenerateAnswer($event)\"\n ></ngx-chat-messages>\n <ngx-chat-input\n #chatInputRef\n [messages]=\"messages\"\n mode=\"card\"\n (sendMessage)=\"onSendMessage($event)\"\n ></ngx-chat-input>\n </div>\n </div>\n\n <button class=\"toggle-button\" (click)=\"toggleChatBox()\">\n <span class=\"button-icon\" [@buttonIconState]=\"isExpanded ? 'expanded' : 'collapsed'\">\n <img src=\"/assets/images/logo.png\" style=\"width: 36px\" *ngIf=\"!isExpanded\" />\n <img src=\"/assets/images/floating/arrow-down.png\" style=\"width: 24px\" *ngIf=\"isExpanded\" />\n </span>\n </button>\n</div>\n\n<!-- \u5386\u53F2\u5BF9\u8BDD -->\n<ng-template #historyTpl>\n <div style=\"width: 100%; max-height: 600px\">\n <!-- <div class=\"select-title\"> -->\n <!-- <div class=\"section-title\"> -->\n <!-- <img src=\"assets/images/sidebar/history-chat.png\" /> -->\n <!-- <span>\u5386\u53F2\u5BF9\u8BDD</span> -->\n <!-- </div> -->\n <!-- <i nz-icon nzType=\"close\" style=\"color: #999\" (click)=\"modelVisibleChange(false)\"></i> -->\n <!-- </div> -->\n <ngx-chat-sidebar #chatSidebarRef mode=\"card\"></ngx-chat-sidebar>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host ::ng-deep ::-webkit-scrollbar{width:6px}:host ::ng-deep ::-webkit-scrollbar-track{background:transparent}:host ::ng-deep ::-webkit-scrollbar-thumb{background:#d1d1d1;border-radius:8px}:host ::ng-deep ::-webkit-scrollbar-thumb:hover{background:#b0b0b0}.floating-chat-container{position:fixed;bottom:20px;right:20px;z-index:9998;display:flex;flex-direction:column;align-items:flex-end}.chat-box{width:660px;height:82vh;background-color:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026;margin-bottom:10px;overflow:hidden;display:flex;flex-direction:column}.chat-header{background-color:#fff;color:#fff;padding:12px 15px;border-top-left-radius:8px;border-top-right-radius:8px}.header-content{display:flex;justify-content:space-between;align-items:center}.chat-title{margin:0;font-size:16px;font-weight:500;flex-grow:1;text-align:center}.icon{font-size:18px;cursor:pointer}.chat-main{flex-grow:1;display:flex;flex-direction:column;overflow-y:auto;background-color:#fff}.welcome-message{text-align:center;padding-top:50px}.chat-icon{color:#409eff;margin-bottom:10px}.chat-icon svg{fill:#409eff}.welcome-text{color:#333;font-size:14px}.chat-footer{border-top:1px solid #eee;padding:10px 15px;background-color:#fff}.input-area-placeholder{display:flex;align-items:center;border:1px solid #ddd;border-radius:20px;margin-bottom:8px;overflow:hidden}.input-area-placeholder input{flex-grow:1;border:none;padding:8px 12px;outline:none;background-color:#fff;cursor:default}.input-area-placeholder .send-btn{background:none;border:none;padding:6px 10px;cursor:default;color:#bbb}.input-area-placeholder .send-btn svg{fill:#bbb}.bottom-controls{display:flex;justify-content:space-between;font-size:12px;color:#888}.control-item{cursor:default}.send-btn-placeholder{color:#409eff;font-weight:700;font-size:14px}.toggle-button{width:50px;height:50px;border-radius:50%;background-color:#fff;border:none;box-shadow:0 4px 8px #00000026;cursor:pointer;display:flex;justify-content:center;align-items:center;outline:none;color:#2157ff;order:2}.button-icon{display:block}.button-icon svg{fill:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NzPopoverDirective, selector: "[nz-popover]", inputs: ["nzPopoverArrowPointAtCenter", "nzPopoverTitle", "nzPopoverContent", "nz-popover", "nzPopoverTrigger", "nzPopoverPlacement", "nzPopoverOrigin", "nzPopoverVisible", "nzPopoverMouseEnterDelay", "nzPopoverMouseLeaveDelay", "nzPopoverOverlayClassName", "nzPopoverOverlayStyle", "nzPopoverBackdrop"], outputs: ["nzPopoverVisibleChange"], exportAs: ["nzPopover"] }, { kind: "component", type: i3.ChatInputComponent, selector: "ngx-chat-input", inputs: ["messages", "mode"], outputs: ["sendMessage", "messageChange", "enter", "paste"] }, { kind: "component", type: i4.ChatMessagesComponent, selector: "ngx-chat-messages", inputs: ["messages"], outputs: ["regenerateAnswer"] }, { kind: "component", type: i5.ChatSidebarComponent, selector: "ngx-chat-sidebar", inputs: ["mode"] }], animations: [
143
+ // 定义容器的展开/收起动画
144
+ trigger('chatBoxState', [
145
+ state('collapsed', style({
146
+ opacity: 0,
147
+ transform: 'scale(0.8) translateY(20px)',
148
+ display: 'none',
149
+ // visibility: 'hidden',
150
+ width: '660px',
151
+ height: '82vh', // 保持高度一致,但不可见
152
+ })),
153
+ state('expanded', style({
154
+ opacity: 1,
155
+ transform: 'scale(1) translateY(0)',
156
+ display: 'flex',
157
+ // visibility: 'visible',
158
+ width: '660px',
159
+ height: '82vh',
160
+ })),
161
+ transition('collapsed <=> expanded', [
162
+ animate('300ms cubic-bezier(0.4, 0.0, 0.2, 1)'), // 贝塞尔曲线提供更自然的动画
163
+ ]),
164
+ ]),
165
+ // 定义悬浮按钮的旋转动画
166
+ trigger('buttonIconState', [
167
+ state('collapsed', style({
168
+ transform: 'rotate(0deg)',
169
+ })),
170
+ state('expanded', style({
171
+ transform: 'rotate(0deg)', // 展开时,X图标旋转45度
172
+ })),
173
+ transition('collapsed <=> expanded', [animate('300ms cubic-bezier(0.4, 0.0, 0.2, 1)')]),
174
+ ]),
175
+ ] });
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FloatingChatComponent, decorators: [{
177
+ type: Component,
178
+ args: [{ selector: 'ngx-agent-floating-chat', animations: [
179
+ // 定义容器的展开/收起动画
180
+ trigger('chatBoxState', [
181
+ state('collapsed', style({
182
+ opacity: 0,
183
+ transform: 'scale(0.8) translateY(20px)',
184
+ display: 'none',
185
+ // visibility: 'hidden',
186
+ width: '660px',
187
+ height: '82vh', // 保持高度一致,但不可见
188
+ })),
189
+ state('expanded', style({
190
+ opacity: 1,
191
+ transform: 'scale(1) translateY(0)',
192
+ display: 'flex',
193
+ // visibility: 'visible',
194
+ width: '660px',
195
+ height: '82vh',
196
+ })),
197
+ transition('collapsed <=> expanded', [
198
+ animate('300ms cubic-bezier(0.4, 0.0, 0.2, 1)'), // 贝塞尔曲线提供更自然的动画
199
+ ]),
200
+ ]),
201
+ // 定义悬浮按钮的旋转动画
202
+ trigger('buttonIconState', [
203
+ state('collapsed', style({
204
+ transform: 'rotate(0deg)',
205
+ })),
206
+ state('expanded', style({
207
+ transform: 'rotate(0deg)', // 展开时,X图标旋转45度
208
+ })),
209
+ transition('collapsed <=> expanded', [animate('300ms cubic-bezier(0.4, 0.0, 0.2, 1)')]),
210
+ ]),
211
+ ], template: "<div class=\"floating-chat-container\">\n <div class=\"chat-box\" [@chatBoxState]=\"isExpanded ? 'expanded' : 'collapsed'\">\n <header class=\"chat-header\">\n <div class=\"header-content\">\n <span\n class=\"icon menu-icon\"\n nz-popover\n [nzPopoverContent]=\"historyTpl\"\n nzPopoverTrigger=\"click\"\n nzPopoverOverlayClassName=\"params-select-popover\"\n nzPopoverPlacement=\"rightTop\"\n [nzPopoverVisible]=\"modelPopoverVisible\"\n (nzPopoverVisibleChange)=\"modelVisibleChange($event)\"\n >\n <img src=\"/assets/images/floating/history-menu.png\" style=\"width: 16px\" />\n </span>\n <h3 class=\"chat-title\">{{ title }}</h3>\n <img src=\"/assets/images/floating/new-chat.png\" style=\"width: 20px; cursor: pointer\" (click)=\"openNewChat()\" />\n </div>\n </header>\n\n <div class=\"chat-main\">\n <ngx-chat-messages\n #chatMessagesRef\n [messages]=\"messages\"\n (regenerateAnswer)=\"regenerateAnswer($event)\"\n ></ngx-chat-messages>\n <ngx-chat-input\n #chatInputRef\n [messages]=\"messages\"\n mode=\"card\"\n (sendMessage)=\"onSendMessage($event)\"\n ></ngx-chat-input>\n </div>\n </div>\n\n <button class=\"toggle-button\" (click)=\"toggleChatBox()\">\n <span class=\"button-icon\" [@buttonIconState]=\"isExpanded ? 'expanded' : 'collapsed'\">\n <img src=\"/assets/images/logo.png\" style=\"width: 36px\" *ngIf=\"!isExpanded\" />\n <img src=\"/assets/images/floating/arrow-down.png\" style=\"width: 24px\" *ngIf=\"isExpanded\" />\n </span>\n </button>\n</div>\n\n<!-- \u5386\u53F2\u5BF9\u8BDD -->\n<ng-template #historyTpl>\n <div style=\"width: 100%; max-height: 600px\">\n <!-- <div class=\"select-title\"> -->\n <!-- <div class=\"section-title\"> -->\n <!-- <img src=\"assets/images/sidebar/history-chat.png\" /> -->\n <!-- <span>\u5386\u53F2\u5BF9\u8BDD</span> -->\n <!-- </div> -->\n <!-- <i nz-icon nzType=\"close\" style=\"color: #999\" (click)=\"modelVisibleChange(false)\"></i> -->\n <!-- </div> -->\n <ngx-chat-sidebar #chatSidebarRef mode=\"card\"></ngx-chat-sidebar>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host ::ng-deep ::-webkit-scrollbar{width:6px}:host ::ng-deep ::-webkit-scrollbar-track{background:transparent}:host ::ng-deep ::-webkit-scrollbar-thumb{background:#d1d1d1;border-radius:8px}:host ::ng-deep ::-webkit-scrollbar-thumb:hover{background:#b0b0b0}.floating-chat-container{position:fixed;bottom:20px;right:20px;z-index:9998;display:flex;flex-direction:column;align-items:flex-end}.chat-box{width:660px;height:82vh;background-color:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026;margin-bottom:10px;overflow:hidden;display:flex;flex-direction:column}.chat-header{background-color:#fff;color:#fff;padding:12px 15px;border-top-left-radius:8px;border-top-right-radius:8px}.header-content{display:flex;justify-content:space-between;align-items:center}.chat-title{margin:0;font-size:16px;font-weight:500;flex-grow:1;text-align:center}.icon{font-size:18px;cursor:pointer}.chat-main{flex-grow:1;display:flex;flex-direction:column;overflow-y:auto;background-color:#fff}.welcome-message{text-align:center;padding-top:50px}.chat-icon{color:#409eff;margin-bottom:10px}.chat-icon svg{fill:#409eff}.welcome-text{color:#333;font-size:14px}.chat-footer{border-top:1px solid #eee;padding:10px 15px;background-color:#fff}.input-area-placeholder{display:flex;align-items:center;border:1px solid #ddd;border-radius:20px;margin-bottom:8px;overflow:hidden}.input-area-placeholder input{flex-grow:1;border:none;padding:8px 12px;outline:none;background-color:#fff;cursor:default}.input-area-placeholder .send-btn{background:none;border:none;padding:6px 10px;cursor:default;color:#bbb}.input-area-placeholder .send-btn svg{fill:#bbb}.bottom-controls{display:flex;justify-content:space-between;font-size:12px;color:#888}.control-item{cursor:default}.send-btn-placeholder{color:#409eff;font-weight:700;font-size:14px}.toggle-button{width:50px;height:50px;border-radius:50%;background-color:#fff;border:none;box-shadow:0 4px 8px #00000026;cursor:pointer;display:flex;justify-content:center;align-items:center;outline:none;color:#2157ff;order:2}.button-icon{display:block}.button-icon svg{fill:#fff}\n"] }]
212
+ }], propDecorators: { title: [{
213
+ type: Input
214
+ }], baseUrl: [{
215
+ type: Input
216
+ }], token: [{
217
+ type: Input
218
+ }], chatSidebarRef: [{
219
+ type: ViewChild,
220
+ args: ['chatSidebarRef']
221
+ }], chatMessagesRef: [{
222
+ type: ViewChild,
223
+ args: ['chatMessagesRef']
224
+ }], chatInputRef: [{
225
+ type: ViewChild,
226
+ args: ['chatInputRef']
227
+ }] } });
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmctY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZ2VudC9jaGF0L2Zsb2F0aW5nLWNoYXQvZmxvYXRpbmctY2hhdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZ2VudC9jaGF0L2Zsb2F0aW5nLWNoYXQvZmxvYXRpbmctY2hhdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFJL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBd0R6RCxNQUFNLE9BQU8scUJBQXFCO0lBcERsQztRQXFERSxvQkFBb0I7UUFDcEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixLQUFLO1FBQ0ksVUFBSyxHQUFHLFNBQVMsQ0FBQztRQVEzQjs7V0FFRztRQUNNLFlBQU8sR0FBRywyQkFBMkIsQ0FBQztRQUN0QyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBS1osT0FBRSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25DLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFD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cHV0LCBOZ1pvbmUsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0cmlnZ2VyLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIGFuaW1hdGUsIGdyb3VwLCBxdWVyeSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ2hhdFNpZGViYXJDb21wb25lbnQgfSBmcm9tICcuLi9jaGF0LXNpZGViYXIvY2hhdC1zaWRlYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGF0TWVzc2FnZXNDb21wb25lbnQgfSBmcm9tICcuLi9jaGF0LW1lc3NhZ2VzL2NoYXQtbWVzc2FnZXMuY29tcG9uZW50JztcbmltcG9ydCB7IENoYXRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2NoYXQtaW5wdXQvY2hhdC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWFya2Rvd25TdHJlYW1TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWFya2Rvd24tc3RyZWFtLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3NlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NzZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3N0b3JlL3N0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAnLi4vbW9kZWxzL21lc3NhZ2UubW9kZWwnO1xuaW1wb3J0IHsgSVNlbmRNZXNzYWdlIH0gZnJvbSAnLi4vbW9kZWxzL3NlbmQtbWVzc2FnZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1hZ2VudC1mbG9hdGluZy1jaGF0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb2F0aW5nLWNoYXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mbG9hdGluZy1jaGF0LmNvbXBvbmVudC5zY3NzJ10sXG4gIC8vIOWumuS5ieWKqOeUu1xuICBhbmltYXRpb25zOiBbXG4gICAgLy8g5a6a5LmJ5a655Zmo55qE5bGV5byAL+aUtui1t+WKqOeUu1xuICAgIHRyaWdnZXIoJ2NoYXRCb3hTdGF0ZScsIFtcbiAgICAgIHN0YXRlKFxuICAgICAgICAnY29sbGFwc2VkJyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoMC44KSB0cmFuc2xhdGVZKDIwcHgpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgICAgICAgLy8gdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICAgICAgd2lkdGg6ICc2NjBweCcsIC8vIOehruS/neWcqOaUtui1t+eKtuaAgeS4i++8jOWuveW6puS4jeS8muW9seWTjeaMiemSrlxuICAgICAgICAgIGhlaWdodDogJzgydmgnLCAvLyDkv53mjIHpq5jluqbkuIDoh7TvvIzkvYbkuI3lj6/op4FcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgc3RhdGUoXG4gICAgICAgICdleHBhbmRlZCcsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDEpIHRyYW5zbGF0ZVkoMCknLFxuICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAvLyB2aXNpYmlsaXR5OiAndmlzaWJsZScsXG4gICAgICAgICAgd2lkdGg6ICc2NjBweCcsXG4gICAgICAgICAgaGVpZ2h0OiAnODJ2aCcsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA8PT4gZXhwYW5kZWQnLCBbXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpLCAvLyDotJ3loZ7lsJTmm7Lnur/mj5Dkvpvmm7Toh6rnhLbnmoTliqjnlLtcbiAgICAgIF0pLFxuICAgIF0pLFxuICAgIC8vIOWumuS5ieaCrOa1ruaMiemSrueahOaXi+i9rOWKqOeUu1xuICAgIHRyaWdnZXIoJ2J1dHRvbkljb25TdGF0ZScsIFtcbiAgICAgIHN0YXRlKFxuICAgICAgICAnY29sbGFwc2VkJyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIHRyYW5zZm9ybTogJ3JvdGF0ZSgwZGVnKScsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHN0YXRlKFxuICAgICAgICAnZXhwYW5kZWQnLFxuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgdHJhbnNmb3JtOiAncm90YXRlKDBkZWcpJywgLy8g5bGV5byA5pe277yMWOWbvuagh+aXi+i9rDQ15bqmXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA8PT4gZXhwYW5kZWQnLCBbYW5pbWF0ZSgnMzAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJyldKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmxvYXRpbmdDaGF0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgLy8g54q25oCB5Y+Y6YeP77yM55So5LqO5o6n5Yi257uE5Lu255qE5pi+56S65ZKM5Yqo55S7XG4gIGlzRXhwYW5kZWQgPSBmYWxzZTtcblxuICAvLyDmoIfpophcbiAgQElucHV0KCkgdGl0bGUgPSAnQUkt6Z2S5riF5rC05YipJztcbiAgLyoqXG4gICAqIOWIh+aNouiBiuWkqeahhueahOWxleW8gC/mlLbotbfnirbmgIFcbiAgICovXG4gIHRvZ2dsZUNoYXRCb3goKSB7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiDmjqXlj6NiYXNlVXJs6YWN572uXG4gICAqL1xuICBASW5wdXQoKSBiYXNlVXJsID0gJ2h0dHA6Ly8zOS4xMDIuNTYuMjU0OjgwODInO1xuICBASW5wdXQoKSB0b2tlbiA9ICcnO1xuICBAVmlld0NoaWxkKCdjaGF0U2lkZWJhclJlZicpIGNoYXRTaWRlYmFyUmVmITogQ2hhdFNpZGViYXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2NoYXRNZXNzYWdlc1JlZicpIGNoYXRNZXNzYWdlc1JlZiE6IENoYXRNZXNzYWdlc0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnY2hhdElucHV0UmVmJykgY2hhdElucHV0UmVmITogQ2hhdElucHV0Q29tcG9uZW50O1xuXG4gIHByaXZhdGUgbWQgPSBpbmplY3QoTWFya2Rvd25TdHJlYW1TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBodHRwU2VydmljZSA9IGluamVjdChIdHRwU2VydmljZSk7XG4gIHByaXZhdGUgc3NlU2VydmljZSA9IGluamVjdChTc2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzdG9yZVNlcnZpY2UgPSBpbmplY3QoU3RvcmVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIG1lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTsgLy8g5raI5oGv5pWw57uEXG4gIC8vIOWOhuWPsuWvueivnVxuICBtb2RlbFBvcG92ZXJWaXNpYmxlID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZVNlcnZpY2Uuc2V0VG9rZW4odGhpcy50b2tlbik7XG4gICAgdGhpcy5zdG9yZVNlcnZpY2Uuc2V0QmFzZVVybCh0aGlzLmJhc2VVcmwpO1xuICAgIHRoaXMuc3NlU2VydmljZS5jb252ZXJzYXRpb25JQ29kZSQuc3Vic2NyaWJlKGlDb2RlT2JqID0+IHtcbiAgICAgIGlmIChpQ29kZU9iaikge1xuICAgICAgICBjb25zdCBjdXJyZW50TXNnID0gdGhpcy5tZXNzYWdlc1t0aGlzLm1lc3NhZ2VzLmxlbmd0aCAtIDFdO1xuICAgICAgICBjdXJyZW50TXNnLmlDb2RlID0gaUNvZGVPYmoucXVlc3Rpb247XG4gICAgICAgIGN1cnJlbnRNc2cuYW5zd2Vyc1tjdXJyZW50TXNnLmFuc3dlckluZGV4XS5pQ29kZSA9IGlDb2RlT2JqLmFuc3dlcjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNzZVNlcnZpY2UudGhpbmtpbmckLnN1YnNjcmliZSh0ZXh0ID0+IHtcbiAgICAgIGlmICh0aGlzLm1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgY3VycmVudE1zZyA9IHRoaXMubWVzc2FnZXNbdGhpcy5tZXNzYWdlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgY3VycmVudE1zZy5hbnN3ZXJzW2N1cnJlbnRNc2cuYW5zd2VySW5kZXhdLnRoaW5rID0gdGV4dDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNzZVNlcnZpY2UuY3VycmVudE1lc3NhZ2UkLnN1YnNjcmliZSh0ZXh0ID0+IHtcbiAgICAgIGlmICh0aGlzLm1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgY3VycmVudE1zZyA9IHRoaXMubWVzc2FnZXNbdGhpcy5tZXNzYWdlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgY3VycmVudE1zZy5hbnN3ZXJzW2N1cnJlbnRNc2cuYW5zd2VySW5kZXhdLmNvbnRlbnQgPSB0ZXh0O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdG9yZVNlcnZpY2UuY3VycmVudENvbnZlcnNhdGlvbiQuc3Vic2NyaWJlKGNvbnZlcnNhdGlvbiA9PiB7XG4gICAgICBpZiAoIWNvbnZlcnNhdGlvbikge1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaHR0cFNlcnZpY2VcbiAgICAgICAgLmdldChgJHt0aGlzLnN0b3JlU2VydmljZS5nZXRCYXNlVXJsKCl9L2FwaS9DaGF0TW9kZWwvY29udmVyc2F0aW9uL3F1ZXN0aW9uc2AsIHsgaUNvZGU6IGNvbnZlcnNhdGlvbj8uaUNvZGUgfSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzOiBNZXNzYWdlW10pID0+IHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gcmVzLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0uYW5zd2VySW5kZXggPSAwO1xuICAgICAgICAgICAgaXRlbS5hbnN3ZXJzLmZvckVhY2goYW5zd2VyID0+IHtcbiAgICAgICAgICAgICAgYW5zd2VyLnRoaW5rRXhwYW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgIGNvbnN0IG5ld0hlaWdodCA9IGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodDtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNoYXRNZXNzYWdlc1JlZi5pbnB1dEhlaWdodCA9IG5ld0hlaWdodCArIDYwO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyDlvIDlp4vnm5HlkKzovpPlhaXmoYblhYPntKBcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5jaGF0SW5wdXRSZWYuY2hhdElucHV0V3JhcHBlci5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIG1vZGVsVmlzaWJsZUNoYW5nZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubW9kZWxQb3BvdmVyVmlzaWJsZSA9IHZhbHVlO1xuICB9XG5cbiAgLy8g5omT5byA5paw5a+56K+dXG4gIG9wZW5OZXdDaGF0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmVTZXJ2aWNlLnNldEN1cnJlbnRDb252ZXJzYXRpb24obnVsbCk7XG4gIH1cblxuICAvLyDph43mlrDnlJ/miJDlm57nrZQo5LuF5pyA5paw55qE5Zue562U5YWB6K646YeN5paw55Sf5oiQKVxuICByZWdlbmVyYXRlQW5zd2VyKG1zZzogTWVzc2FnZSk6IHZvaWQge1xuICAgIHRoaXMuY2hhdElucHV0UmVmLnJlZ2VuZXJhdGVTZW5kKG1zZyk7XG4gIH1cblxuICAvLyDlj5Hotbfmj5Dpl67or7fmsYJcbiAgb25TZW5kTWVzc2FnZShldmVudDogeyBtZXNzYWdlOiBJU2VuZE1lc3NhZ2U7IGlzUmVnZW5lcmF0ZTogYm9vbGVhbiB9KSB7XG4gICAgaWYgKCFldmVudC5pc1JlZ2VuZXJhdGUpIHtcbiAgICAgIC8vIOaOqOWFpeS4gOS4quaWsOmXruetlCxpQ29kZeWcqOa1geaOpeaUtuWIsOihpeS4ilxuICAgICAgY29uc3QgcWE6IE1lc3NhZ2UgPSB7XG4gICAgICAgIGlDb2RlOiAnJyxcbiAgICAgICAgcXVlc3Rpb246IGV2ZW50Lm1lc3NhZ2UucXVlc3Rpb24sXG4gICAgICAgIGFuc3dlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpQ29kZTogJycsXG4gICAgICAgICAgICB0aGluazogJycsXG4gICAgICAgICAgICBjb250ZW50OiAnJyxcbiAgICAgICAgICAgIHRoaW5rRXhwYW5kOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFuc3dlckluZGV4OiAwLFxuICAgICAgfTtcbiAgICAgIHRoaXMubWVzc2FnZXMucHVzaChxYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxhdGVzdE1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VzW3RoaXMubWVzc2FnZXMubGVuZ3RoIC0gMV07XG4gICAgICBsYXRlc3RNZXNzYWdlLmFuc3dlcnMucHVzaCh7XG4gICAgICAgIGlDb2RlOiAnJyxcbiAgICAgICAgdGhpbms6ICcnLFxuICAgICAgICBjb250ZW50OiAnJyxcbiAgICAgICAgdGhpbmtFeHBhbmQ6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIGxhdGVzdE1lc3NhZ2UuYW5zd2VySW5kZXggPSBsYXRlc3RNZXNzYWdlLmFuc3dlcnMubGVuZ3RoIC0gMTtcbiAgICB9XG4gICAgdGhpcy5zc2VTZXJ2aWNlLnN0cmVhbUNoYXQoZXZlbnQubWVzc2FnZSkudGhlbihyZXMgPT4ge1xuICAgICAgLy8g5byA5ZCv5paw5a+56K+d77yM5Yi35paw5bem5L6n5Y6G5Y+y5a+56K+dXG4gICAgICBpZiAoIWV2ZW50Lm1lc3NhZ2UuY29udmVyc2F0aW9uKSB7XG4gICAgICAgIHRoaXMuY2hhdFNpZGViYXJSZWYuZ2V0SGlzdG9yeSh0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsb2F0aW5nLWNoYXQtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJjaGF0LWJveFwiIFtAY2hhdEJveFN0YXRlXT1cImlzRXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cbiAgICA8aGVhZGVyIGNsYXNzPVwiY2hhdC1oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY29udGVudFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiaWNvbiBtZW51LWljb25cIlxuICAgICAgICAgIG56LXBvcG92ZXJcbiAgICAgICAgICBbbnpQb3BvdmVyQ29udGVudF09XCJoaXN0b3J5VHBsXCJcbiAgICAgICAgICBuelBvcG92ZXJUcmlnZ2VyPVwiY2xpY2tcIlxuICAgICAgICAgIG56UG9wb3Zlck92ZXJsYXlDbGFzc05hbWU9XCJwYXJhbXMtc2VsZWN0LXBvcG92ZXJcIlxuICAgICAgICAgIG56UG9wb3ZlclBsYWNlbWVudD1cInJpZ2h0VG9wXCJcbiAgICAgICAgICBbbnpQb3BvdmVyVmlzaWJsZV09XCJtb2RlbFBvcG92ZXJWaXNpYmxlXCJcbiAgICAgICAgICAobnpQb3BvdmVyVmlzaWJsZUNoYW5nZSk9XCJtb2RlbFZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2Zsb2F0aW5nL2hpc3RvcnktbWVudS5wbmdcIiBzdHlsZT1cIndpZHRoOiAxNnB4XCIgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aDMgY2xhc3M9XCJjaGF0LXRpdGxlXCI+e3sgdGl0bGUgfX08L2gzPlxuICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2Zsb2F0aW5nL25ldy1jaGF0LnBuZ1wiIHN0eWxlPVwid2lkdGg6IDIwcHg7IGN1cnNvcjogcG9pbnRlclwiIChjbGljayk9XCJvcGVuTmV3Q2hhdCgpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImNoYXQtbWFpblwiPlxuICAgICAgPG5neC1jaGF0LW1lc3NhZ2VzXG4gICAgICAgICNjaGF0TWVzc2FnZXNSZWZcbiAgICAgICAgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzXCJcbiAgICAgICAgKHJlZ2VuZXJhdGVBbnN3ZXIpPVwicmVnZW5lcmF0ZUFuc3dlcigkZXZlbnQpXCJcbiAgICAgID48L25neC1jaGF0LW1lc3NhZ2VzPlxuICAgICAgPG5neC1jaGF0LWlucHV0XG4gICAgICAgICNjaGF0SW5wdXRSZWZcbiAgICAgICAgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzXCJcbiAgICAgICAgbW9kZT1cImNhcmRcIlxuICAgICAgICAoc2VuZE1lc3NhZ2UpPVwib25TZW5kTWVzc2FnZSgkZXZlbnQpXCJcbiAgICAgID48L25neC1jaGF0LWlucHV0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVDaGF0Qm94KClcIj5cbiAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbi1pY29uXCIgW0BidXR0b25JY29uU3RhdGVdPVwiaXNFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiPlxuICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9sb2dvLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDM2cHhcIiAqbmdJZj1cIiFpc0V4cGFuZGVkXCIgLz5cbiAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvZmxvYXRpbmcvYXJyb3ctZG93bi5wbmdcIiBzdHlsZT1cIndpZHRoOiAyNHB4XCIgKm5nSWY9XCJpc0V4cGFuZGVkXCIgLz5cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjwhLS0g5Y6G5Y+y5a+56K+dIC0tPlxuPG5nLXRlbXBsYXRlICNoaXN0b3J5VHBsPlxuICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IG1heC1oZWlnaHQ6IDYwMHB4XCI+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwic2VsZWN0LXRpdGxlXCI+IC0tPlxuICAgIDwhLS0gICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPiAtLT5cbiAgICA8IS0tICAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvc2lkZWJhci9oaXN0b3J5LWNoYXQucG5nXCIgLz4gLS0+XG4gICAgPCEtLSAgICAgPHNwYW4+5Y6G5Y+y5a+56K+dPC9zcGFuPiAtLT5cbiAgICA8IS0tICAgPC9kaXY+IC0tPlxuICAgIDwhLS0gICA8aSBuei1pY29uIG56VHlwZT1cImNsb3NlXCIgc3R5bGU9XCJjb2xvcjogIzk5OVwiIChjbGljayk9XCJtb2RlbFZpc2libGVDaGFuZ2UoZmFsc2UpXCI+PC9pPiAtLT5cbiAgICA8IS0tIDwvZGl2PiAtLT5cbiAgICA8bmd4LWNoYXQtc2lkZWJhciAjY2hhdFNpZGViYXJSZWYgbW9kZT1cImNhcmRcIj48L25neC1jaGF0LXNpZGViYXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25vd2xlZGdlLWxpc3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZ2VudC9jaGF0L21vZGVscy9rbm93bGVkZ2UtbGlzdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDlj6/pgInnn6Xor4blupPliJfooahcbiAqL1xuZXhwb3J0IHR5cGUgSUtub3dsZWRnZUxpc3QgPSBJS25vd2xlZGdlW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUtub3dsZWRnZSB7XG4gIGlDb2RlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY2hlY2tlZD86IGJvb2xlYW47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25vd2xlZGdlLWxpc3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZ2VudC9jaGF0L21vZGVscy9rbm93bGVkZ2UtbGlzdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDlj6/pgInnn6Xor4blupPliJfooahcbiAqL1xuZXhwb3J0IHR5cGUgSUtub3dsZWRnZUxpc3QgPSBJS25vd2xlZGdlW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUtub3dsZWRnZSB7XG4gIGlDb2RlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY2hlY2tlZD86IGJvb2xlYW47XG59XG5cbi8vIOefpeivhuW6k+WIhuexu1xuZXhwb3J0IGludGVyZmFjZSBJS25vd2xlZGdlVHlwZSB7XG4gIHR5cGU6IHN0cmluZztcbiAgdHlwZUM6IHN0cmluZztcbn1cblxuLy8g55+l6K+G5bqT55uu5b2VXG5leHBvcnQgaW50ZXJmYWNlIElLbm93bGVkZ2VDYXRlZ29yeSB7XG4gIGlDb2RlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY2hpbGRyZW46IElLbm93bGVkZ2VDYXRlZ29yeVtdO1xufVxuXG4vLyDnn6Xor4blupPmoIfnrb5cbmV4cG9ydCBpbnRlcmZhY2UgSUtub3dsZWRnZVRhZyB7XG4gIGlDb2RlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY2hpbGRyZW46IElLbm93bGVkZ2VUYWdbXTtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1tZXNzYWdlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWdlbnQvY2hhdC9tb2RlbHMvc2VuZC1tZXNzYWdlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOS6uuW3peaPkOmXruWPguaVsFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTZW5kTWVzc2FnZSB7XG4gICAgLyoqXG4gICAgICog5Lya6K+d5ZSv5LiA57yW56CBXG4gICAgICovXG4gICAgY29udmVyc2F0aW9uPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIOmXrumimOWUr+S4gOe8lueggSjph43mlrDnlJ/miJDlm57nrZTlv4XloaspXG4gICAgICovXG4gICAgcXVlc3Rpb25JQ29kZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiDmqKHlnovllK/kuIDnvJbnoIFcbiAgICAgKi9cbiAgICBtb2RlbDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIOaYr+WQpumcgOimgea3seW6puaAneiAg1xuICAgICAqL1xuICAgIHRoaW5rOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIOmXrumimOWGheWuuVxuICAgICAqL1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICog5piv5ZCm566h55CG55+l6K+G5bqTXG4gICAgICovXG4gICAga25vd2xlZGdlOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIOWFs+iBlOeahOefpeivhuW6k1xuICAgICAqL1xuICAgIGtub3dsZWRnZUxpc3Q6IHN0cmluZ1tdO1xufSJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1tZXNzYWdlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWdlbnQvY2hhdC9tb2RlbHMvc2VuZC1tZXNzYWdlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOS6uuW3peaPkOmXruWPguaVsFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTZW5kTWVzc2FnZSB7XG4gIC8qKlxuICAgKiDkvJror53llK/kuIDnvJbnoIFcbiAgICovXG4gIGNvbnZlcnNhdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIOmXrumimOWUr+S4gOe8lueggSjph43mlrDnlJ/miJDlm57nrZTlv4XloaspXG4gICAqL1xuICBxdWVzdGlvbklDb2RlPzogc3RyaW5nO1xuICAvKipcbiAgICog5qih5Z6L5ZSv5LiA57yW56CBXG4gICAqL1xuICBtb2RlbDogc3RyaW5nO1xuICAvKipcbiAgICog5piv5ZCm6ZyA6KaB5rex5bqm5oCd6ICDXG4gICAqL1xuICB0aGluazogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOmXrumimOWGheWuuVxuICAgKi9cbiAgcXVlc3Rpb246IHN0cmluZztcblxuICAvKipcbiAgICog55+l6K+G5bqT6YCJ5oupXG4gICAqL1xuICBwYXJhbWV0ZXI/OiB7XG4gICAgLyoqXG4gICAgICog6LWE5rqQ57G75Z6LXG4gICAgICovXG4gICAgdHlwZTogc3RyaW5nW107XG4gICAgLyoqXG4gICAgICog6LWE5rqQ55uu5b2VXG4gICAgICovXG4gICAgY2F0YWxvZ3M6IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIOi1hOa6kOagh+etvlxuICAgICAqL1xuICAgIHRhZ3M6IHN0cmluZ1tdO1xuICB9O1xufVxuIl19
@@ -1,3 +1,4 @@
1
1
  export * from './chat.module';
2
2
  export * from './chat.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FnZW50L2NoYXQvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgKiBmcm9tICcuL2NoYXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY2hhdC5jb21wb25lbnQnIl19
3
+ export * from './floating-chat/floating-chat.component';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FnZW50L2NoYXQvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMseUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NoYXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY2hhdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mbG9hdGluZy1jaGF0L2Zsb2F0aW5nLWNoYXQuY29tcG9uZW50JztcbiJdfQ==