stream-chat-angular 4.45.1 → 4.46.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/assets/version.d.ts +1 -1
- package/bundles/stream-chat-angular.umd.js +67 -1
- package/bundles/stream-chat-angular.umd.js.map +1 -1
- package/esm2015/assets/version.js +2 -2
- package/esm2015/lib/channel.service.js +33 -1
- package/esm2015/lib/chat-client.service.js +38 -2
- package/fesm2015/stream-chat-angular.js +75 -7
- package/fesm2015/stream-chat-angular.js.map +1 -1
- package/lib/channel.service.d.ts +2 -1
- package/lib/chat-client.service.d.ts +2 -1
- package/package.json +1 -1
- package/src/assets/version.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject, ReplaySubject } from 'rxjs';
|
|
3
|
+
import { BehaviorSubject, ReplaySubject, take } from 'rxjs';
|
|
4
4
|
import { StreamChat } from 'stream-chat';
|
|
5
5
|
import { version } from '../assets/version';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -66,6 +66,7 @@ export class ChatClientService {
|
|
|
66
66
|
this.pendingInvitesSubject.next(channels);
|
|
67
67
|
this.appSettingsSubject.next(undefined);
|
|
68
68
|
this.subscriptions.push(this.chatClient.on((e) => {
|
|
69
|
+
this.updateUser(e);
|
|
69
70
|
this.updatePendingInvites(e);
|
|
70
71
|
this.notificationSubject.next({
|
|
71
72
|
eventType: e.type,
|
|
@@ -160,6 +161,41 @@ export class ChatClientService {
|
|
|
160
161
|
}
|
|
161
162
|
}
|
|
162
163
|
}
|
|
164
|
+
updateUser(e) {
|
|
165
|
+
var _a;
|
|
166
|
+
if (typeof e.total_unread_count !== 'undefined') {
|
|
167
|
+
let user;
|
|
168
|
+
this.userSubject.pipe(take(1)).subscribe((u) => {
|
|
169
|
+
user = u;
|
|
170
|
+
});
|
|
171
|
+
if (user && user.total_unread_count !== e.total_unread_count) {
|
|
172
|
+
this.userSubject.next(Object.assign(Object.assign({}, user), { total_unread_count: e.total_unread_count }));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (typeof e.unread_channels !== 'undefined') {
|
|
176
|
+
let user;
|
|
177
|
+
this.userSubject.pipe(take(1)).subscribe((u) => {
|
|
178
|
+
user = u;
|
|
179
|
+
});
|
|
180
|
+
if (user && user.unread_channels !== e.unread_channels) {
|
|
181
|
+
this.userSubject.next(Object.assign(Object.assign({}, user), { unread_channels: e.unread_channels }));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (typeof e.unread_count !== 'undefined') {
|
|
185
|
+
let user;
|
|
186
|
+
this.userSubject.pipe(take(1)).subscribe((u) => {
|
|
187
|
+
user = u;
|
|
188
|
+
});
|
|
189
|
+
if (user && user.unread_count !== e.unread_count) {
|
|
190
|
+
this.userSubject.next(Object.assign(Object.assign({}, user), { unread_count: e.unread_count }));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (e.type === 'user.updated' &&
|
|
194
|
+
this.chatClient.user &&
|
|
195
|
+
((_a = e.user) === null || _a === void 0 ? void 0 : _a.id) === this.chatClient.user.id) {
|
|
196
|
+
this.userSubject.next(Object.assign({}, this.chatClient.user));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
163
199
|
}
|
|
164
200
|
ChatClientService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChatClientService, deps: [{ token: i0.NgZone }, { token: i1.NotificationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
165
201
|
ChatClientService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChatClientService, providedIn: 'root' });
|
|
@@ -169,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
169
205
|
providedIn: 'root',
|
|
170
206
|
}]
|
|
171
207
|
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.NotificationService }]; } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBV2xFLE9BQU8sRUFBc0IsVUFBVSxFQUFtQixNQUFNLGFBQWEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVc1Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUF5QzVCLFlBQ1UsTUFBYyxFQUNkLG1CQUF3QztRQUR4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWIxQyx3QkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBaUIsQ0FBQyxDQUFDLENBQUM7UUFDM0QsMkJBQXNCLEdBQUcsSUFBSSxhQUFhLENBQXVCLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUM5QyxTQUFTLENBQ1YsQ0FBQztRQUNNLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUVqRCxFQUFFLENBQUMsQ0FBQztRQUNFLGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBQThCLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLGtCQUFhLEdBQWtDLEVBQUUsQ0FBQztRQU14RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25FLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxD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QUFDLElBQUksMENBQUUsRUFBRSxDQUFBLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUNoRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLHNCQUFzQixFQUFFO2dCQUNyQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxjQUFjLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDakU7aUJBQU0sSUFDTCxDQUFDLENBQUMsSUFBSSxLQUFLLDhCQUE4QjtnQkFDekMsQ0FBQyxDQUFDLElBQUksS0FBSyw4QkFBOEIsRUFDekM7Z0JBQ0EsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FDcEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxXQUFDLE9BQUEsQ0FBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsR0FBRyxPQUFLLE1BQUEsQ0FBQyxDQUFDLE9BQU8sMENBQUUsR0FBRyxDQUFBLENBQUEsRUFBQSxDQUNqQyxDQUFDO2dCQUNGLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUNoQixjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQztpQkFDdEQ7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7OEdBNU1VLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDaGFubmVsLFxuICBDaGFubmVsRmlsdGVycyxcbiAgQ2hhbm5lbFJlc3BvbnNlLFxuICBDb25uZWN0QVBJUmVzcG9uc2UsXG4gIE93blVzZXJSZXNwb25zZSxcbiAgU3RyZWFtQ2hhdE9wdGlvbnMsXG4gIFVzZXJGaWx0ZXJzLFxuICBVc2VyUmVzcG9uc2UsXG59IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IEFwcFNldHRpbmdzLCBFdmVudCwgU3RyZWFtQ2hhdCwgVG9rZW5PclByb3ZpZGVyIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4uL2Fzc2V0cy92ZXJzaW9uJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgQ2xpZW50RXZlbnQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgZXZlbnRUeXBlOiBzdHJpbmc7XG4gIGV2ZW50OiBFdmVudDxUPjtcbn07XG5cbi8qKlxuICogVGhlIGBDaGF0Q2xpZW50YCBzZXJ2aWNlIGNvbm5lY3RzIHRoZSB1c2VyIHRvIHRoZSBTdHJlYW0gY2hhdC5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENoYXRDbGllbnRTZXJ2aWNlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4ge1xuICAvKipcbiAgICogVGhlIFtTdHJlYW1DaGF0IGNsaWVudF0oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1qcy9ibG9iL21hc3Rlci9zcmMvY2xpZW50LnRzKSBpbnN0YW5jZS4gSW4gZ2VuZXJhbCB5b3Ugc2hvdWxkbid0IG5lZWQgdG8gYWNjZXNzIHRoZSBjbGllbnQsIGJ1dCBpdCdzIHRoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBpdC5cbiAgICovXG4gIGNoYXRDbGllbnQhOiBTdHJlYW1DaGF0PFQ+O1xuICAvKipcbiAgICogRW1pdHMgW2BDbGllbnRFdmVudGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtYW5ndWxhci9ibG9iL21hc3Rlci9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvY2hhdC1jbGllbnQuc2VydmljZS50cykgZXZlbnRzLiBUaGUgcGxhdGZvcm0gZG9jdW1lbnRhdGlvbiBjb3ZlcnMgW3RoZSBsaXN0IG9mIGNsaWVudCwgdXNlciBwcmVzZW5jZSBhbmQgbm90aWZpY2F0aW9uIGV2ZW50c10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvZXZlbnRfb2JqZWN0Lz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAgICogOjo6aW1wb3J0YW50XG4gICAqIEZvciBwZXJmb3JtYW5jZSByZWFzb25zIHRoaXMgT2JzZXJ2YWJsZSBvcGVyYXRlcyBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIGNoYW5nZSBkZXRlY3Rpb24gem9uZS4gSWYgeW91IHN1YnNjcmliZSB0byBpdCwgeW91IG5lZWQgdG8gbWFudWFsbHkgcmVlbnRlciBBbmd1bGFyJ3MgY2hhbmdlIGRldGVjdGlvbiB6b25lLCBvdXIgW0NoYW5nZSBkZXRlY3Rpb24gZ3VpZGVdKC4uL2NvbmNlcHRzL2NoYW5nZS1kZXRlY3Rpb24ubWR4KSBleHBsYWlucyB0aGlzIGluIGRldGFpbC5cbiAgICogOjo6XG4gICAqL1xuICBldmVudHMkOiBPYnNlcnZhYmxlPENsaWVudEV2ZW50PFQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXJyZW50IFthcHBsaWNhdGlvbiBzZXR0aW5nc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvYXBwX3NldHRpbmdfb3ZlcnZpZXcvP2xhbmd1YWdlPWphdmFzY3JpcHQpLiBTaW5jZSBnZXR0aW5nIHRoZSBhcHBsaWNhdGlvbiBzZXR0aW5ncyBpcyBhbiBleHBlbnNpdmUgQVBJIGNhbGwgYW5kIHdlIGRvbid0IGFsd2F5cyBuZWVkIHRoZSByZXN1bHQsIHRoaXMgaXMgbm90IGluaXRpYWxpemVkIGJ5IGRlZmF1bHQsIHlvdSBuZWVkIHRvIGNhbGwgYGdldEFwcGxpY2F0aW9uU2V0dGluZ3NgIHRvIGxvYWQgdGhlbS5cbiAgICovXG4gIGFwcFNldHRpbmdzJDogT2JzZXJ2YWJsZTxBcHBTZXR0aW5ncyB8IHVuZGVmaW5lZD47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgY3VycmVudCBjb25uZWN0aW9uIHN0YXRlIG9mIHRoZSB1c2VyIChgb25saW5lYCBvciBgb2ZmbGluZWApXG4gICAqL1xuICBjb25uZWN0aW9uU3RhdGUkOiBPYnNlcnZhYmxlPCdvZmZsaW5lJyB8ICdvbmxpbmUnPjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBsaXN0IG9mIHBlbmRpbmcgaW52aXRlcyBvZiB0aGUgdXNlci4gSXQgZW1pdHMgZXZlcnkgcGVuZGluZyBpbnZpdGF0aW9uIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBleHRlbmRzIHRoZSBsaXN0IHdoZW4gYSBuZXcgaW52aXRlIGlzIHJlY2VpdmVkLiBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgW2NoYW5uZWwgaW52aXRhdGlvbnNdKC4uL2NvZGUtZXhhbXBsZXMvY2hhbm5lbC1pbnZpdGVzLm1keCkgZ3VpZGUuXG4gICAqL1xuICBwZW5kaW5nSW52aXRlcyQ6IE9ic2VydmFibGU8KENoYW5uZWxSZXNwb25zZTxUPiB8IENoYW5uZWw8VD4pW10+O1xuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgY2hhdCB1c2VyXG4gICAqL1xuICB1c2VyJDogT2JzZXJ2YWJsZTxVc2VyUmVzcG9uc2U8VD4gfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIG5vdGlmaWNhdGlvblN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxDbGllbnRFdmVudDxUPj4oMSk7XG4gIHByaXZhdGUgY29ubmVjdGlvblN0YXRlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PCdvZmZsaW5lJyB8ICdvbmxpbmUnPigxKTtcbiAgcHJpdmF0ZSBhcHBTZXR0aW5nc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFwcFNldHRpbmdzIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgcHJpdmF0ZSBwZW5kaW5nSW52aXRlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIChDaGFubmVsUmVzcG9uc2U8VD4gfCBDaGFubmVsPFQ+KVtdXG4gID4oW10pO1xuICBwcml2YXRlIHVzZXJTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8VXNlclJlc3BvbnNlPFQ+IHwgdW5kZWZpbmVkPigxKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiB7IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkIH1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZXZlbnRzJCA9IHRoaXMubm90aWZpY2F0aW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZSQgPSB0aGlzLmNvbm5lY3Rpb25TdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5hcHBTZXR0aW5ncyQgPSB0aGlzLmFwcFNldHRpbmdzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnBlbmRpbmdJbnZpdGVzJCA9IHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMudXNlciQgPSB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBbYFN0cmVhbUNoYXRgXShodHRwczovL2dpdGh1Yi5jb20vR2V0U3RyZWFtL3N0cmVhbS1jaGF0LWpzL2Jsb2IvNjY4YjNlNTUyMTMzOWY0ZTE0ZmM2NTc4MzQ1MzFiNGM4YmY4MTc2Yi9zcmMvY2xpZW50LnRzI0wxMjQpIGluc3RhbmNlIHVzaW5nIHRoZSBwcm92aWRlZCBgYXBpS2V5YCwgYW5kIGNvbm5lY3RzIGEgdXNlciB3aXRoIHRoZSBnaXZlbiBtZXRhIGRhdGEgYW5kIHRva2VuLiBNb3JlIGluZm8gYWJvdXQgW2Nvbm5lY3RpbmcgdXNlcnNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2luaXRfYW5kX3VzZXJzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KSBjYW4gYmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGRvY3VtZW50YXRpb24uXG4gICAqIEBwYXJhbSBhcGlLZXlcbiAgICogQHBhcmFtIHVzZXJPcklkIHlvdSBjYW4gZW1pdCB0aGlzIGZvciBhbm9ueW1vdXMgbG9naW5zXG4gICAqIEBwYXJhbSB1c2VyVG9rZW5PclByb3ZpZGVyIFlvdSBjYW4gcHJvdmlkZTo8dWw+XG4gICAqICA8bGk+IGEgdG9rZW4sIDwvbGk+XG4gICAqICA8bGk+IHRoZSBrZXl3b3JkICdndWVzdCcgdG8gY29ubmVjdCBhcyBbZ3Vlc3QgdXNlcl0oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvYXV0aGxlc3NfdXNlcnMvP2xhbmd1YWdlPWphdmFzY3JpcHQjZ3Vlc3QtdXNlcnMpIDwvbGk+XG4gICAqICA8bGk+IHRoZSBrZXl3b3JkICdhbm9ueW1vdXMnIHRvIGNvbm5lY3QgYXMgW2Fub255bW91cyB1c2VyXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9hdXRobGVzc191c2Vycy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCNhbm9ueW1vdXMtdXNlcnMpIDwvbGk+XG4gICAqICA8L3VsPlxuICAgKiBAcGFyYW0gY2xpZW50T3B0aW9ucyBTZXR0aW5nIHRvIHByb3ZpZGUgdG8gdGhlIFN0cmVhbSBjbGllbnQgaW5zdGFuY2VcbiAgICovXG4gIGFzeW5jIGluaXQoXG4gICAgYXBpS2V5OiBzdHJpbmcsXG4gICAgdXNlck9ySWQ6IHN0cmluZyB8IE93blVzZXJSZXNwb25zZTxUPiB8IFVzZXJSZXNwb25zZTxUPiB8IHVuZGVmaW5lZCxcbiAgICB1c2VyVG9rZW5PclByb3ZpZGVyOiBUb2tlbk9yUHJvdmlkZXIgfCAnYW5vbnltb3VzJyB8ICdndWVzdCcsXG4gICAgY2xpZW50T3B0aW9ucz86IFN0cmVhbUNoYXRPcHRpb25zXG4gICk6IENvbm5lY3RBUElSZXNwb25zZTxUPiB7XG4gICAgdGhpcy5jaGF0Q2xpZW50ID0gU3RyZWFtQ2hhdC5nZXRJbnN0YW5jZTxUPihhcGlLZXksIGNsaWVudE9wdGlvbnMpO1xuICAgIHRoaXMuY2hhdENsaWVudC5kZXZUb2tlbjtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGF3YWl0IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0eXBlb2YgdXNlck9ySWQgPT09ICdzdHJpbmcnID8geyBpZDogdXNlck9ySWQgfSA6IHVzZXJPcklkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGd1ZXN0OiAoKSA9PiB0aGlzLmNoYXRDbGllbnQuc2V0R3Vlc3RVc2VyKHVzZXIhKSxcbiAgICAgICAgICAgIGFub255bW91czogKCkgPT4gdGhpcy5jaGF0Q2xpZW50LmNvbm5lY3RBbm9ueW1vdXNVc2VyKCksXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgfVtgJHt1c2VyVG9rZW5PclByb3ZpZGVyfWBdID8/XG4gICAgICAgICAgKCgpID0+IHRoaXMuY2hhdENsaWVudC5jb25uZWN0VXNlcih1c2VyISwgdXNlclRva2VuT3JQcm92aWRlcikpXG4gICAgICAgICkoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRQZXJtYW5lbnROb3RpZmljYXRpb24oXG4gICAgICAgICAgJ3N0cmVhbUNoYXQuRXJyb3IgY29ubmVjdGluZyB0byBjaGF0LCByZWZyZXNoIHRoZSBwYWdlIHRvIHRyeSBhZ2Fpbi4nLFxuICAgICAgICAgICdlcnJvcidcbiAgICAgICAgKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICB0aGlzLnVzZXJTdWJqZWN0Lm5leHQoXG4gICAgICAgIHRoaXMuY2hhdENsaWVudC51c2VyID8geyAuLi50aGlzLmNoYXRDbGllbnQudXNlciB9IDogdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgY29uc3Qgc2RrUHJlZml4ID0gJ3N0cmVhbS1jaGF0LWFuZ3VsYXInO1xuICAgICAgaWYgKCF0aGlzLmNoYXRDbGllbnQuZ2V0VXNlckFnZW50KCkuaW5jbHVkZXMoc2RrUHJlZml4KSkge1xuICAgICAgICB0aGlzLmNoYXRDbGllbnQuc2V0VXNlckFnZW50KFxuICAgICAgICAgIGAke3Nka1ByZWZpeH0tJHt2ZXJzaW9ufS0ke3RoaXMuY2hhdENsaWVudC5nZXRVc2VyQWdlbnQoKX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY2hhbm5lbHMgPSBhd2FpdCB0aGlzLmNoYXRDbGllbnQucXVlcnlDaGFubmVscyhcbiAgICAgIHsgaW52aXRlOiAncGVuZGluZycgfSBhcyBhbnkgYXMgQ2hhbm5lbEZpbHRlcnM8VD4sIC8vIFRPRE86IGZpbmQgb3V0IHdoeSB3ZSBuZWVkIHRoaXMgdHlwZWNhc3RcbiAgICAgIHt9LFxuICAgICAgeyB1c2VyX2lkOiB0aGlzLmNoYXRDbGllbnQudXNlcj8uaWQgfVxuICAgICk7XG4gICAgdGhpcy5wZW5kaW5nSW52aXRlc1N1YmplY3QubmV4dChjaGFubmVscyk7XG4gICAgdGhpcy5hcHBTZXR0aW5nc1N1YmplY3QubmV4dCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGF0Q2xpZW50Lm9uKChlKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUGVuZGluZ0ludml0ZXMoZSk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICBldmVudFR5cGU6IGUudHlwZSxcbiAgICAgICAgICBldmVudDogZSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgbGV0IHJlbW92ZU5vdGlmaWNhdGlvbjogdW5kZWZpbmVkIHwgRnVuY3Rpb247XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYXRDbGllbnQub24oJ2Nvbm5lY3Rpb24uY2hhbmdlZCcsIChlKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNPbmxpbmUgPSBlLm9ubGluZTtcbiAgICAgICAgICBpZiAoaXNPbmxpbmUpIHtcbiAgICAgICAgICAgIGlmIChyZW1vdmVOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgcmVtb3ZlTm90aWZpY2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvbiA9XG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRQZXJtYW5lbnROb3RpZmljYXRpb24oXG4gICAgICAgICAgICAgICAgJ3N0cmVhbUNoYXQuQ29ubmVjdGlvbiBmYWlsdXJlLCByZWNvbm5lY3Rpbmcgbm93Li4uJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZVN1YmplY3QubmV4dChpc09ubGluZSA/ICdvbmxpbmUnIDogJ29mZmxpbmUnKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNjb25uZWN0cyB0aGUgY3VycmVudCB1c2VyLCBhbmQgY2xvc2VzIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4gVXNlZnVsIHdoZW4gZGlzY29ubmVjdGluZyBhIGNoYXQgdXNlciwgdXNlIGluIGNvbWJpbmF0aW9uIHdpdGggW2ByZXNldGBdKC4vQ2hhbm5lbFNlcnZpY2UubWR4LyNyZXNldCkuXG4gICAqL1xuICBhc3luYyBkaXNjb25uZWN0VXNlcigpIHtcbiAgICB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5uZXh0KFtdKTtcbiAgICBhd2FpdCB0aGlzLmNoYXRDbGllbnQuZGlzY29ubmVjdFVzZXIoKTtcbiAgICB0aGlzLnVzZXJTdWJqZWN0Lm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgY3VycmVudCBbYXBwbGljYXRpb24gc2V0dGluZ3NdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2FwcF9zZXR0aW5nX292ZXJ2aWV3Lz9sYW5ndWFnZT1qYXZhc2NyaXB0KSwgaWYgdGhlIGFwcGxpY2F0aW9uIHNldHRpbmdzIGhhdmUgYWxyZWFkeSBiZWVuIGxvYWRlZCwgaXQgZG9lcyBub3RoaW5nLlxuICAgKi9cbiAgYXN5bmMgZ2V0QXBwU2V0dGluZ3MoKSB7XG4gICAgaWYgKHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0LmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2V0dGluZ3MgPSBhd2FpdCB0aGlzLmNoYXRDbGllbnQuZ2V0QXBwU2V0dGluZ3MoKTtcbiAgICB0aGlzLmFwcFNldHRpbmdzU3ViamVjdC5uZXh0KChzZXR0aW5ncy5hcHAgYXMgQXBwU2V0dGluZ3MpIHx8IHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGbGFnIHRoZSBtZXNzYWdlIHdpdGggdGhlIGdpdmVuIElELiBJZiB5b3Ugd2FudCB0byBrbm93IFttb3JlIGFib3V0IGZsYWdzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9tb2RlcmF0aW9uLz9sYW5ndWFnZT1qYXZhc2NyaXB0KSBjaGVjayBvdXQgdGhlIHBsYXRmb3JtIGRvY3VtZW50YXRpb24uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWRcbiAgICovXG4gIGFzeW5jIGZsYWdNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50LmZsYWdNZXNzYWdlKG1lc3NhZ2VJZCk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoZXMgZm9yIHVzZXJzIGluIHRoZSBhcHBsaWNhdGlvbiB0aGF0IGhhdmUgSUQgb3IgbmFtZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgc2VhcmNoIHRlcm1cbiAgICogQHBhcmFtIHNlYXJjaFRlcm1cbiAgICogQHJldHVybnMgVGhlIHVzZXJzIG1hdGNoaW5nIHRoZSBzZWFyY2hcbiAgICovXG4gIGFzeW5jIGF1dG9jb21wbGV0ZVVzZXJzKHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIGlmICghc2VhcmNoVGVybSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNoYXRDbGllbnQucXVlcnlVc2Vycyh7XG4gICAgICAkb3I6IFtcbiAgICAgICAgeyBpZDogeyAkYXV0b2NvbXBsZXRlOiBzZWFyY2hUZXJtIH0gfSxcbiAgICAgICAgeyBuYW1lOiB7ICRhdXRvY29tcGxldGU6IHNlYXJjaFRlcm0gfSB9LFxuICAgICAgXSxcbiAgICAgIGlkOiB7ICRuZTogdGhpcy5jaGF0Q2xpZW50LnVzZXJJRCEgfSxcbiAgICB9IGFzIFVzZXJGaWx0ZXJzPFQ+KTsgLy8gVE9ETzogZmluZCBvdXQgd2h5IHdlIG5lZWQgdGhpcyB0eXBlY2FzdFxuICAgIHJldHVybiByZXN1bHQudXNlcnM7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBlbmRpbmdJbnZpdGVzKGU6IEV2ZW50PFQ+KSB7XG4gICAgaWYgKGUubWVtYmVyPy51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50LnVzZXI/LmlkICYmIGUuY2hhbm5lbCkge1xuICAgICAgY29uc3QgcGVuZGluZ0ludml0ZXMgPSB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKGUudHlwZSA9PT0gJ25vdGlmaWNhdGlvbi5pbnZpdGVkJykge1xuICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5uZXh0KFsuLi5wZW5kaW5nSW52aXRlcywgZS5jaGFubmVsXSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlX2FjY2VwdGVkJyB8fFxuICAgICAgICBlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlX3JlamVjdGVkJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGVuZGluZ0ludml0ZXMuZmluZEluZGV4KFxuICAgICAgICAgIChpKSA9PiBpPy5jaWQgPT09IGUuY2hhbm5lbD8uY2lkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBwZW5kaW5nSW52aXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoWy4uLnBlbmRpbmdJbnZpdGVzXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVd4RSxPQUFPLEVBQXNCLFVBQVUsRUFBbUIsTUFBTSxhQUFhLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFXNUM7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBMkM1QixZQUNVLE1BQWMsRUFDZCxtQkFBd0M7UUFEeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFmMUMsd0JBQW1CLEdBQUcsSUFBSSxhQUFhLENBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQzNELDJCQUFzQixHQUFHLElBQUksYUFBYSxDQUF1QixDQUFDLENBQUMsQ0FBQztRQUNwRSx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FDOUMsU0FBUyxDQUNWLENBQUM7UUFDTSwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FFakQsRUFBRSxDQUFDLENBQUM7UUFDRSxnQkFBVyxHQUFHLElBQUksYUFBYSxDQUVyQyxDQUFDLENBQUMsQ0FBQztRQUNHLGtCQUFhLEdBQWtDLEVBQUUsQ0FBQztRQU14RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25FLElBQUksQ0FBQyxZQUFZLEdB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QUNoQixJQUFJLEtBQ1AsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZLElBQzVCLENBQUM7YUFDSjtTQUNGO1FBQ0QsSUFDRSxDQUFDLENBQUMsSUFBSSxLQUFLLGNBQWM7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJO1lBQ3BCLENBQUEsTUFBQSxDQUFDLENBQUMsSUFBSSwwQ0FBRSxFQUFFLE1BQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUN0QztZQUNBLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxtQkFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQzs7OEdBN1BVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDaGFubmVsLFxuICBDaGFubmVsRmlsdGVycyxcbiAgQ2hhbm5lbFJlc3BvbnNlLFxuICBDb25uZWN0QVBJUmVzcG9uc2UsXG4gIE93blVzZXJSZXNwb25zZSxcbiAgU3RyZWFtQ2hhdE9wdGlvbnMsXG4gIFVzZXJGaWx0ZXJzLFxuICBVc2VyUmVzcG9uc2UsXG59IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IEFwcFNldHRpbmdzLCBFdmVudCwgU3RyZWFtQ2hhdCwgVG9rZW5PclByb3ZpZGVyIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4uL2Fzc2V0cy92ZXJzaW9uJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgQ2xpZW50RXZlbnQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgZXZlbnRUeXBlOiBzdHJpbmc7XG4gIGV2ZW50OiBFdmVudDxUPjtcbn07XG5cbi8qKlxuICogVGhlIGBDaGF0Q2xpZW50YCBzZXJ2aWNlIGNvbm5lY3RzIHRoZSB1c2VyIHRvIHRoZSBTdHJlYW0gY2hhdC5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENoYXRDbGllbnRTZXJ2aWNlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4ge1xuICAvKipcbiAgICogVGhlIFtTdHJlYW1DaGF0IGNsaWVudF0oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1qcy9ibG9iL21hc3Rlci9zcmMvY2xpZW50LnRzKSBpbnN0YW5jZS4gSW4gZ2VuZXJhbCB5b3Ugc2hvdWxkbid0IG5lZWQgdG8gYWNjZXNzIHRoZSBjbGllbnQsIGJ1dCBpdCdzIHRoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBpdC5cbiAgICovXG4gIGNoYXRDbGllbnQhOiBTdHJlYW1DaGF0PFQ+O1xuICAvKipcbiAgICogRW1pdHMgW2BDbGllbnRFdmVudGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtYW5ndWxhci9ibG9iL21hc3Rlci9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvY2hhdC1jbGllbnQuc2VydmljZS50cykgZXZlbnRzLiBUaGUgcGxhdGZvcm0gZG9jdW1lbnRhdGlvbiBjb3ZlcnMgW3RoZSBsaXN0IG9mIGNsaWVudCwgdXNlciBwcmVzZW5jZSBhbmQgbm90aWZpY2F0aW9uIGV2ZW50c10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvZXZlbnRfb2JqZWN0Lz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAgICogOjo6aW1wb3J0YW50XG4gICAqIEZvciBwZXJmb3JtYW5jZSByZWFzb25zIHRoaXMgT2JzZXJ2YWJsZSBvcGVyYXRlcyBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIGNoYW5nZSBkZXRlY3Rpb24gem9uZS4gSWYgeW91IHN1YnNjcmliZSB0byBpdCwgeW91IG5lZWQgdG8gbWFudWFsbHkgcmVlbnRlciBBbmd1bGFyJ3MgY2hhbmdlIGRldGVjdGlvbiB6b25lLCBvdXIgW0NoYW5nZSBkZXRlY3Rpb24gZ3VpZGVdKC4uL2NvbmNlcHRzL2NoYW5nZS1kZXRlY3Rpb24ubWR4KSBleHBsYWlucyB0aGlzIGluIGRldGFpbC5cbiAgICogOjo6XG4gICAqL1xuICBldmVudHMkOiBPYnNlcnZhYmxlPENsaWVudEV2ZW50PFQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXJyZW50IFthcHBsaWNhdGlvbiBzZXR0aW5nc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvYXBwX3NldHRpbmdfb3ZlcnZpZXcvP2xhbmd1YWdlPWphdmFzY3JpcHQpLiBTaW5jZSBnZXR0aW5nIHRoZSBhcHBsaWNhdGlvbiBzZXR0aW5ncyBpcyBhbiBleHBlbnNpdmUgQVBJIGNhbGwgYW5kIHdlIGRvbid0IGFsd2F5cyBuZWVkIHRoZSByZXN1bHQsIHRoaXMgaXMgbm90IGluaXRpYWxpemVkIGJ5IGRlZmF1bHQsIHlvdSBuZWVkIHRvIGNhbGwgYGdldEFwcGxpY2F0aW9uU2V0dGluZ3NgIHRvIGxvYWQgdGhlbS5cbiAgICovXG4gIGFwcFNldHRpbmdzJDogT2JzZXJ2YWJsZTxBcHBTZXR0aW5ncyB8IHVuZGVmaW5lZD47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgY3VycmVudCBjb25uZWN0aW9uIHN0YXRlIG9mIHRoZSB1c2VyIChgb25saW5lYCBvciBgb2ZmbGluZWApXG4gICAqL1xuICBjb25uZWN0aW9uU3RhdGUkOiBPYnNlcnZhYmxlPCdvZmZsaW5lJyB8ICdvbmxpbmUnPjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBsaXN0IG9mIHBlbmRpbmcgaW52aXRlcyBvZiB0aGUgdXNlci4gSXQgZW1pdHMgZXZlcnkgcGVuZGluZyBpbnZpdGF0aW9uIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBleHRlbmRzIHRoZSBsaXN0IHdoZW4gYSBuZXcgaW52aXRlIGlzIHJlY2VpdmVkLiBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgW2NoYW5uZWwgaW52aXRhdGlvbnNdKC4uL2NvZGUtZXhhbXBsZXMvY2hhbm5lbC1pbnZpdGVzLm1keCkgZ3VpZGUuXG4gICAqL1xuICBwZW5kaW5nSW52aXRlcyQ6IE9ic2VydmFibGU8KENoYW5uZWxSZXNwb25zZTxUPiB8IENoYW5uZWw8VD4pW10+O1xuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgY2hhdCB1c2VyXG4gICAqL1xuICB1c2VyJDogT2JzZXJ2YWJsZTxPd25Vc2VyUmVzcG9uc2U8VD4gfCBVc2VyUmVzcG9uc2U8VD4gfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIG5vdGlmaWNhdGlvblN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxDbGllbnRFdmVudDxUPj4oMSk7XG4gIHByaXZhdGUgY29ubmVjdGlvblN0YXRlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PCdvZmZsaW5lJyB8ICdvbmxpbmUnPigxKTtcbiAgcHJpdmF0ZSBhcHBTZXR0aW5nc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFwcFNldHRpbmdzIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgcHJpdmF0ZSBwZW5kaW5nSW52aXRlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIChDaGFubmVsUmVzcG9uc2U8VD4gfCBDaGFubmVsPFQ+KVtdXG4gID4oW10pO1xuICBwcml2YXRlIHVzZXJTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8XG4gICAgT3duVXNlclJlc3BvbnNlPFQ+IHwgVXNlclJlc3BvbnNlPFQ+IHwgdW5kZWZpbmVkXG4gID4oMSk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmV2ZW50cyQgPSB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdGUkID0gdGhpcy5jb25uZWN0aW9uU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3MkID0gdGhpcy5hcHBTZXR0aW5nc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5wZW5kaW5nSW52aXRlcyQgPSB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnVzZXIkID0gdGhpcy51c2VyU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgW2BTdHJlYW1DaGF0YF0oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1qcy9ibG9iLzY2OGIzZTU1MjEzMzlmNGUxNGZjNjU3ODM0NTMxYjRjOGJmODE3NmIvc3JjL2NsaWVudC50cyNMMTI0KSBpbnN0YW5jZSB1c2luZyB0aGUgcHJvdmlkZWQgYGFwaUtleWAsIGFuZCBjb25uZWN0cyBhIHVzZXIgd2l0aCB0aGUgZ2l2ZW4gbWV0YSBkYXRhIGFuZCB0b2tlbi4gTW9yZSBpbmZvIGFib3V0IFtjb25uZWN0aW5nIHVzZXJzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9pbml0X2FuZF91c2Vycy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkgY2FuIGJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uLlxuICAgKiBAcGFyYW0gYXBpS2V5XG4gICAqIEBwYXJhbSB1c2VyT3JJZCB5b3UgY2FuIGVtaXQgdGhpcyBmb3IgYW5vbnltb3VzIGxvZ2luc1xuICAgKiBAcGFyYW0gdXNlclRva2VuT3JQcm92aWRlciBZb3UgY2FuIHByb3ZpZGU6PHVsPlxuICAgKiAgPGxpPiBhIHRva2VuLCA8L2xpPlxuICAgKiAgPGxpPiB0aGUga2V5d29yZCAnZ3Vlc3QnIHRvIGNvbm5lY3QgYXMgW2d1ZXN0IHVzZXJdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2F1dGhsZXNzX3VzZXJzLz9sYW5ndWFnZT1qYXZhc2NyaXB0I2d1ZXN0LXVzZXJzKSA8L2xpPlxuICAgKiAgPGxpPiB0aGUga2V5d29yZCAnYW5vbnltb3VzJyB0byBjb25uZWN0IGFzIFthbm9ueW1vdXMgdXNlcl0oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvYXV0aGxlc3NfdXNlcnMvP2xhbmd1YWdlPWphdmFzY3JpcHQjYW5vbnltb3VzLXVzZXJzKSA8L2xpPlxuICAgKiAgPC91bD5cbiAgICogQHBhcmFtIGNsaWVudE9wdGlvbnMgU2V0dGluZyB0byBwcm92aWRlIHRvIHRoZSBTdHJlYW0gY2xpZW50IGluc3RhbmNlXG4gICAqL1xuICBhc3luYyBpbml0KFxuICAgIGFwaUtleTogc3RyaW5nLFxuICAgIHVzZXJPcklkOiBzdHJpbmcgfCBPd25Vc2VyUmVzcG9uc2U8VD4gfCBVc2VyUmVzcG9uc2U8VD4gfCB1bmRlZmluZWQsXG4gICAgdXNlclRva2VuT3JQcm92aWRlcjogVG9rZW5PclByb3ZpZGVyIHwgJ2Fub255bW91cycgfCAnZ3Vlc3QnLFxuICAgIGNsaWVudE9wdGlvbnM/OiBTdHJlYW1DaGF0T3B0aW9uc1xuICApOiBDb25uZWN0QVBJUmVzcG9uc2U8VD4ge1xuICAgIHRoaXMuY2hhdENsaWVudCA9IFN0cmVhbUNoYXQuZ2V0SW5zdGFuY2U8VD4oYXBpS2V5LCBjbGllbnRPcHRpb25zKTtcbiAgICB0aGlzLmNoYXRDbGllbnQuZGV2VG9rZW47XG4gICAgbGV0IHJlc3VsdDtcbiAgICBhd2FpdCB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdHlwZW9mIHVzZXJPcklkID09PSAnc3RyaW5nJyA/IHsgaWQ6IHVzZXJPcklkIH0gOiB1c2VyT3JJZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBndWVzdDogKCkgPT4gdGhpcy5jaGF0Q2xpZW50LnNldEd1ZXN0VXNlcih1c2VyISksXG4gICAgICAgICAgICBhbm9ueW1vdXM6ICgpID0+IHRoaXMuY2hhdENsaWVudC5jb25uZWN0QW5vbnltb3VzVXNlcigpLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIH1bYCR7dXNlclRva2VuT3JQcm92aWRlcn1gXSA/P1xuICAgICAgICAgICgoKSA9PiB0aGlzLmNoYXRDbGllbnQuY29ubmVjdFVzZXIodXNlciEsIHVzZXJUb2tlbk9yUHJvdmlkZXIpKVxuICAgICAgICApKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkUGVybWFuZW50Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICdzdHJlYW1DaGF0LkVycm9yIGNvbm5lY3RpbmcgdG8gY2hhdCwgcmVmcmVzaCB0aGUgcGFnZSB0byB0cnkgYWdhaW4uJyxcbiAgICAgICAgICAnZXJyb3InXG4gICAgICAgICk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KFxuICAgICAgICB0aGlzLmNoYXRDbGllbnQudXNlciA/IHsgLi4udGhpcy5jaGF0Q2xpZW50LnVzZXIgfSA6IHVuZGVmaW5lZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNka1ByZWZpeCA9ICdzdHJlYW0tY2hhdC1hbmd1bGFyJztcbiAgICAgIGlmICghdGhpcy5jaGF0Q2xpZW50LmdldFVzZXJBZ2VudCgpLmluY2x1ZGVzKHNka1ByZWZpeCkpIHtcbiAgICAgICAgdGhpcy5jaGF0Q2xpZW50LnNldFVzZXJBZ2VudChcbiAgICAgICAgICBgJHtzZGtQcmVmaXh9LSR7dmVyc2lvbn0tJHt0aGlzLmNoYXRDbGllbnQuZ2V0VXNlckFnZW50KCl9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGNoYW5uZWxzID0gYXdhaXQgdGhpcy5jaGF0Q2xpZW50LnF1ZXJ5Q2hhbm5lbHMoXG4gICAgICB7IGludml0ZTogJ3BlbmRpbmcnIH0gYXMgYW55IGFzIENoYW5uZWxGaWx0ZXJzPFQ+LCAvLyBUT0RPOiBmaW5kIG91dCB3aHkgd2UgbmVlZCB0aGlzIHR5cGVjYXN0XG4gICAgICB7fSxcbiAgICAgIHsgdXNlcl9pZDogdGhpcy5jaGF0Q2xpZW50LnVzZXI/LmlkIH1cbiAgICApO1xuICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoY2hhbm5lbHMpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0Lm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhdENsaWVudC5vbigoZSkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVVzZXIoZSk7XG4gICAgICAgIHRoaXMudXBkYXRlUGVuZGluZ0ludml0ZXMoZSk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICBldmVudFR5cGU6IGUudHlwZSxcbiAgICAgICAgICBldmVudDogZSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgbGV0IHJlbW92ZU5vdGlmaWNhdGlvbjogdW5kZWZpbmVkIHwgRnVuY3Rpb247XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYXRDbGllbnQub24oJ2Nvbm5lY3Rpb24uY2hhbmdlZCcsIChlKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNPbmxpbmUgPSBlLm9ubGluZTtcbiAgICAgICAgICBpZiAoaXNPbmxpbmUpIHtcbiAgICAgICAgICAgIGlmIChyZW1vdmVOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgcmVtb3ZlTm90aWZpY2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvbiA9XG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRQZXJtYW5lbnROb3RpZmljYXRpb24oXG4gICAgICAgICAgICAgICAgJ3N0cmVhbUNoYXQuQ29ubmVjdGlvbiBmYWlsdXJlLCByZWNvbm5lY3Rpbmcgbm93Li4uJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZVN1YmplY3QubmV4dChpc09ubGluZSA/ICdvbmxpbmUnIDogJ29mZmxpbmUnKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNjb25uZWN0cyB0aGUgY3VycmVudCB1c2VyLCBhbmQgY2xvc2VzIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4gVXNlZnVsIHdoZW4gZGlzY29ubmVjdGluZyBhIGNoYXQgdXNlciwgdXNlIGluIGNvbWJpbmF0aW9uIHdpdGggW2ByZXNldGBdKC4vQ2hhbm5lbFNlcnZpY2UubWR4LyNyZXNldCkuXG4gICAqL1xuICBhc3luYyBkaXNjb25uZWN0VXNlcigpIHtcbiAgICB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5uZXh0KFtdKTtcbiAgICBhd2FpdCB0aGlzLmNoYXRDbGllbnQuZGlzY29ubmVjdFVzZXIoKTtcbiAgICB0aGlzLnVzZXJTdWJqZWN0Lm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgY3VycmVudCBbYXBwbGljYXRpb24gc2V0dGluZ3NdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2FwcF9zZXR0aW5nX292ZXJ2aWV3Lz9sYW5ndWFnZT1qYXZhc2NyaXB0KSwgaWYgdGhlIGFwcGxpY2F0aW9uIHNldHRpbmdzIGhhdmUgYWxyZWFkeSBiZWVuIGxvYWRlZCwgaXQgZG9lcyBub3RoaW5nLlxuICAgKi9cbiAgYXN5bmMgZ2V0QXBwU2V0dGluZ3MoKSB7XG4gICAgaWYgKHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0LmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2V0dGluZ3MgPSBhd2FpdCB0aGlzLmNoYXRDbGllbnQuZ2V0QXBwU2V0dGluZ3MoKTtcbiAgICB0aGlzLmFwcFNldHRpbmdzU3ViamVjdC5uZXh0KChzZXR0aW5ncy5hcHAgYXMgQXBwU2V0dGluZ3MpIHx8IHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGbGFnIHRoZSBtZXNzYWdlIHdpdGggdGhlIGdpdmVuIElELiBJZiB5b3Ugd2FudCB0byBrbm93IFttb3JlIGFib3V0IGZsYWdzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9tb2RlcmF0aW9uLz9sYW5ndWFnZT1qYXZhc2NyaXB0KSBjaGVjayBvdXQgdGhlIHBsYXRmb3JtIGRvY3VtZW50YXRpb24uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWRcbiAgICovXG4gIGFzeW5jIGZsYWdNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50LmZsYWdNZXNzYWdlKG1lc3NhZ2VJZCk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoZXMgZm9yIHVzZXJzIGluIHRoZSBhcHBsaWNhdGlvbiB0aGF0IGhhdmUgSUQgb3IgbmFtZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgc2VhcmNoIHRlcm1cbiAgICogQHBhcmFtIHNlYXJjaFRlcm1cbiAgICogQHJldHVybnMgVGhlIHVzZXJzIG1hdGNoaW5nIHRoZSBzZWFyY2hcbiAgICovXG4gIGFzeW5jIGF1dG9jb21wbGV0ZVVzZXJzKHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIGlmICghc2VhcmNoVGVybSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNoYXRDbGllbnQucXVlcnlVc2Vycyh7XG4gICAgICAkb3I6IFtcbiAgICAgICAgeyBpZDogeyAkYXV0b2NvbXBsZXRlOiBzZWFyY2hUZXJtIH0gfSxcbiAgICAgICAgeyBuYW1lOiB7ICRhdXRvY29tcGxldGU6IHNlYXJjaFRlcm0gfSB9LFxuICAgICAgXSxcbiAgICAgIGlkOiB7ICRuZTogdGhpcy5jaGF0Q2xpZW50LnVzZXJJRCEgfSxcbiAgICB9IGFzIFVzZXJGaWx0ZXJzPFQ+KTsgLy8gVE9ETzogZmluZCBvdXQgd2h5IHdlIG5lZWQgdGhpcyB0eXBlY2FzdFxuICAgIHJldHVybiByZXN1bHQudXNlcnM7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBlbmRpbmdJbnZpdGVzKGU6IEV2ZW50PFQ+KSB7XG4gICAgaWYgKGUubWVtYmVyPy51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50LnVzZXI/LmlkICYmIGUuY2hhbm5lbCkge1xuICAgICAgY29uc3QgcGVuZGluZ0ludml0ZXMgPSB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKGUudHlwZSA9PT0gJ25vdGlmaWNhdGlvbi5pbnZpdGVkJykge1xuICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5uZXh0KFsuLi5wZW5kaW5nSW52aXRlcywgZS5jaGFubmVsXSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlX2FjY2VwdGVkJyB8fFxuICAgICAgICBlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlX3JlamVjdGVkJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGVuZGluZ0ludml0ZXMuZmluZEluZGV4KFxuICAgICAgICAgIChpKSA9PiBpPy5jaWQgPT09IGUuY2hhbm5lbD8uY2lkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBwZW5kaW5nSW52aXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoWy4uLnBlbmRpbmdJbnZpdGVzXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVVzZXIoZTogRXZlbnQ8VD4pIHtcbiAgICBpZiAodHlwZW9mIGUudG90YWxfdW5yZWFkX2NvdW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbGV0IHVzZXI6IE93blVzZXJSZXNwb25zZTxUPiB8IFVzZXJSZXNwb25zZTxUPiB8IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudXNlclN1YmplY3QucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHUpID0+IHtcbiAgICAgICAgdXNlciA9IHU7XG4gICAgICB9KTtcbiAgICAgIGlmICh1c2VyICYmIHVzZXIudG90YWxfdW5yZWFkX2NvdW50ICE9PSBlLnRvdGFsX3VucmVhZF9jb3VudCkge1xuICAgICAgICB0aGlzLnVzZXJTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgdG90YWxfdW5yZWFkX2NvdW50OiBlLnRvdGFsX3VucmVhZF9jb3VudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZS51bnJlYWRfY2hhbm5lbHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZXQgdXNlcjogT3duVXNlclJlc3BvbnNlPFQ+IHwgVXNlclJlc3BvbnNlPFQ+IHwgdW5kZWZpbmVkO1xuICAgICAgdGhpcy51c2VyU3ViamVjdC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodSkgPT4ge1xuICAgICAgICB1c2VyID0gdTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHVzZXIgJiYgdXNlci51bnJlYWRfY2hhbm5lbHMgIT09IGUudW5yZWFkX2NoYW5uZWxzKSB7XG4gICAgICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh7XG4gICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICB1bnJlYWRfY2hhbm5lbHM6IGUudW5yZWFkX2NoYW5uZWxzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlLnVucmVhZF9jb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxldCB1c2VyOiBPd25Vc2VyUmVzcG9uc2U8VD4gfCBVc2VyUmVzcG9uc2U8VD4gfCB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnVzZXJTdWJqZWN0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCh1KSA9PiB7XG4gICAgICAgIHVzZXIgPSB1O1xuICAgICAgfSk7XG4gICAgICBpZiAodXNlciAmJiB1c2VyLnVucmVhZF9jb3VudCAhPT0gZS51bnJlYWRfY291bnQpIHtcbiAgICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgIHVucmVhZF9jb3VudDogZS51bnJlYWRfY291bnQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBlLnR5cGUgPT09ICd1c2VyLnVwZGF0ZWQnICYmXG4gICAgICB0aGlzLmNoYXRDbGllbnQudXNlciAmJlxuICAgICAgZS51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50LnVzZXIuaWRcbiAgICApIHtcbiAgICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh7IC4uLnRoaXMuY2hhdENsaWVudC51c2VyIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { Injectable, Component, Input, EventEmitter, Output, ViewChild, InjectionToken, Directive, HostBinding, Inject, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
4
|
-
import { BehaviorSubject, ReplaySubject, combineLatest, Subject, timer } from 'rxjs';
|
|
4
|
+
import { BehaviorSubject, ReplaySubject, take, combineLatest, Subject, timer } from 'rxjs';
|
|
5
5
|
import { StreamChat } from 'stream-chat';
|
|
6
|
-
import { shareReplay, map, take, first, filter, tap, distinctUntilChanged, debounceTime } from 'rxjs/operators';
|
|
6
|
+
import { shareReplay, map, take as take$1, first, filter, tap, distinctUntilChanged, debounceTime } from 'rxjs/operators';
|
|
7
7
|
import { v4 } from 'uuid';
|
|
8
8
|
import * as i9 from '@ngx-translate/core';
|
|
9
9
|
import { TranslateModule } from '@ngx-translate/core';
|
|
@@ -20,7 +20,7 @@ import transliterate from '@stream-io/transliterate';
|
|
|
20
20
|
import * as i8 from 'angular-mentions';
|
|
21
21
|
import { MentionModule } from 'angular-mentions';
|
|
22
22
|
|
|
23
|
-
const version = '4.
|
|
23
|
+
const version = '4.46.0';
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* The `NotificationService` can be used to add or remove notifications. By default the [`NotificationList`](../components/NotificationListComponent.mdx) component displays the currently active notifications.
|
|
@@ -159,6 +159,7 @@ class ChatClientService {
|
|
|
159
159
|
this.pendingInvitesSubject.next(channels);
|
|
160
160
|
this.appSettingsSubject.next(undefined);
|
|
161
161
|
this.subscriptions.push(this.chatClient.on((e) => {
|
|
162
|
+
this.updateUser(e);
|
|
162
163
|
this.updatePendingInvites(e);
|
|
163
164
|
this.notificationSubject.next({
|
|
164
165
|
eventType: e.type,
|
|
@@ -253,6 +254,41 @@ class ChatClientService {
|
|
|
253
254
|
}
|
|
254
255
|
}
|
|
255
256
|
}
|
|
257
|
+
updateUser(e) {
|
|
258
|
+
var _a;
|
|
259
|
+
if (typeof e.total_unread_count !== 'undefined') {
|
|
260
|
+
let user;
|
|
261
|
+
this.userSubject.pipe(take(1)).subscribe((u) => {
|
|
262
|
+
user = u;
|
|
263
|
+
});
|
|
264
|
+
if (user && user.total_unread_count !== e.total_unread_count) {
|
|
265
|
+
this.userSubject.next(Object.assign(Object.assign({}, user), { total_unread_count: e.total_unread_count }));
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
if (typeof e.unread_channels !== 'undefined') {
|
|
269
|
+
let user;
|
|
270
|
+
this.userSubject.pipe(take(1)).subscribe((u) => {
|
|
271
|
+
user = u;
|
|
272
|
+
});
|
|
273
|
+
if (user && user.unread_channels !== e.unread_channels) {
|
|
274
|
+
this.userSubject.next(Object.assign(Object.assign({}, user), { unread_channels: e.unread_channels }));
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
if (typeof e.unread_count !== 'undefined') {
|
|
278
|
+
let user;
|
|
279
|
+
this.userSubject.pipe(take(1)).subscribe((u) => {
|
|
280
|
+
user = u;
|
|
281
|
+
});
|
|
282
|
+
if (user && user.unread_count !== e.unread_count) {
|
|
283
|
+
this.userSubject.next(Object.assign(Object.assign({}, user), { unread_count: e.unread_count }));
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (e.type === 'user.updated' &&
|
|
287
|
+
this.chatClient.user &&
|
|
288
|
+
((_a = e.user) === null || _a === void 0 ? void 0 : _a.id) === this.chatClient.user.id) {
|
|
289
|
+
this.userSubject.next(Object.assign({}, this.chatClient.user));
|
|
290
|
+
}
|
|
291
|
+
}
|
|
256
292
|
}
|
|
257
293
|
ChatClientService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChatClientService, deps: [{ token: i0.NgZone }, { token: NotificationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
258
294
|
ChatClientService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChatClientService, providedIn: 'root' });
|
|
@@ -854,7 +890,7 @@ class ChannelService {
|
|
|
854
890
|
: this.activeChannelMessagesSubject.next([...channel.state.messages]);
|
|
855
891
|
let messages;
|
|
856
892
|
(isThreadReply ? this.activeThreadMessages$ : this.activeChannelMessages$)
|
|
857
|
-
.pipe(take(1))
|
|
893
|
+
.pipe(take$1(1))
|
|
858
894
|
.subscribe((m) => (messages = m));
|
|
859
895
|
const newMessage = messages[messages.length - 1];
|
|
860
896
|
return newMessage;
|
|
@@ -872,7 +908,7 @@ class ChannelService {
|
|
|
872
908
|
: this.activeChannelMessagesSubject.next([...channel.state.messages]);
|
|
873
909
|
let messages;
|
|
874
910
|
(isThreadReply ? this.activeThreadMessages$ : this.activeChannelMessages$)
|
|
875
|
-
.pipe(take(1))
|
|
911
|
+
.pipe(take$1(1))
|
|
876
912
|
.subscribe((m) => (messages = m));
|
|
877
913
|
const newMessage = messages[messages.length - 1];
|
|
878
914
|
return newMessage;
|
|
@@ -964,7 +1000,7 @@ class ChannelService {
|
|
|
964
1000
|
this.setChannelState(this.activeChannelSubject.getValue());
|
|
965
1001
|
let messages;
|
|
966
1002
|
this.activeChannelMessages$
|
|
967
|
-
.pipe(take(1))
|
|
1003
|
+
.pipe(take$1(1))
|
|
968
1004
|
.subscribe((m) => (messages = m));
|
|
969
1005
|
const updatedMessageToQuote = messages.find((m) => m.id === (messageToQuote === null || messageToQuote === void 0 ? void 0 : messageToQuote.id));
|
|
970
1006
|
if (updatedMessageToQuote) {
|
|
@@ -1010,6 +1046,38 @@ class ChannelService {
|
|
|
1010
1046
|
this.handleRemovedFromChannelNotification(clientEvent);
|
|
1011
1047
|
}
|
|
1012
1048
|
});
|
|
1049
|
+
break;
|
|
1050
|
+
}
|
|
1051
|
+
case 'user.updated': {
|
|
1052
|
+
this.ngZone.run(() => {
|
|
1053
|
+
var _a;
|
|
1054
|
+
const updatedChannels = (_a = this.channelsSubject.getValue()) === null || _a === void 0 ? void 0 : _a.map((c) => {
|
|
1055
|
+
if (this.chatClientService.chatClient.activeChannels[c.cid]) {
|
|
1056
|
+
return this.chatClientService.chatClient.activeChannels[c.cid];
|
|
1057
|
+
}
|
|
1058
|
+
else {
|
|
1059
|
+
return c;
|
|
1060
|
+
}
|
|
1061
|
+
});
|
|
1062
|
+
this.channelsSubject.next(updatedChannels);
|
|
1063
|
+
const activeChannel = this.activeChannelSubject.getValue();
|
|
1064
|
+
if (activeChannel) {
|
|
1065
|
+
this.activeChannelSubject.next(this.chatClientService.chatClient.activeChannels[activeChannel.cid] || activeChannel);
|
|
1066
|
+
this.activeChannelMessagesSubject.next(activeChannel.state.messages.map((m) => {
|
|
1067
|
+
m.readBy = getReadBy(m, activeChannel);
|
|
1068
|
+
return Object.assign({}, m);
|
|
1069
|
+
}));
|
|
1070
|
+
const activeParentMessage = this.activeParentMessageIdSubject.getValue();
|
|
1071
|
+
if (activeParentMessage) {
|
|
1072
|
+
const messages = activeChannel.state.threads[activeParentMessage];
|
|
1073
|
+
this.activeThreadMessagesSubject.next([...messages]);
|
|
1074
|
+
}
|
|
1075
|
+
this.activeChannelPinnedMessagesSubject.next([
|
|
1076
|
+
...activeChannel.state.pinnedMessages,
|
|
1077
|
+
]);
|
|
1078
|
+
}
|
|
1079
|
+
});
|
|
1080
|
+
break;
|
|
1013
1081
|
}
|
|
1014
1082
|
}
|
|
1015
1083
|
}
|
|
@@ -3531,7 +3599,7 @@ class MessageInputComponent {
|
|
|
3531
3599
|
startCooldown(cooldown) {
|
|
3532
3600
|
this.textareaPlaceholder = this.slowModeTextareaPlaceholder;
|
|
3533
3601
|
this.isCooldownInProgress = true;
|
|
3534
|
-
this.cooldown$ = timer(0, 1000).pipe(take(cooldown + 1), map((v) => cooldown - v), tap((v) => {
|
|
3602
|
+
this.cooldown$ = timer(0, 1000).pipe(take$1(cooldown + 1), map((v) => cooldown - v), tap((v) => {
|
|
3535
3603
|
if (v === 0) {
|
|
3536
3604
|
this.stopCooldown();
|
|
3537
3605
|
}
|