ngx-histaff-alpha 2.9.4 → 2.9.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.
@@ -54,6 +54,32 @@ export class SocketService {
54
54
  case EnumSignalRType.LOG_IN:
55
55
  if (isDevMode())
56
56
  this.alertService.info(activity.message, alertOptions);
57
+ if ('Notification' in window) {
58
+ const options = {
59
+ body: activity.message,
60
+ icon: 'assets/icons/icon-72x72.png',
61
+ };
62
+ // Check if notification permissions are granted
63
+ if (Notification.permission === 'granted') {
64
+ // Create and display the notification
65
+ new Notification("Information", options);
66
+ }
67
+ else if (Notification.permission !== 'denied') {
68
+ // Request permission from the user
69
+ Notification.requestPermission().then(permission => {
70
+ if (permission === 'granted') {
71
+ // Create and display the notification
72
+ new Notification("Information", options);
73
+ }
74
+ });
75
+ }
76
+ else {
77
+ console.warn('Notification permissions not granted or denied.');
78
+ }
79
+ }
80
+ else {
81
+ console.warn('Notifications are not supported in this browser.');
82
+ }
57
83
  break;
58
84
  case EnumSignalRType.ENTITY_CHANGED:
59
85
  if (isDevMode())
@@ -144,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
144
170
  providedIn: 'root'
145
171
  }]
146
172
  }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.UserActivityService }, { type: i3.HubConnectionService }, { type: i4.AppConfigService }, { type: i5.AlertService }, { type: i6.Router }, { type: i7.LongTaskService }] });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9zb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBTW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQU0xRCxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUNVLFdBQXdCLEVBQ3hCLG1CQUF3QyxFQUN4QyxvQkFBMEMsRUFDMUMsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxlQUFnQztRQU5oQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQ3RDLENBQUM7SUFFTCxtQkFBbUI7UUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNsQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLFVBQVUsR0FBa0Is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T0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUE7cUJBQ2xDO3lCQUFNO3dCQUNMLEVBQUUsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO3FCQUM3QjtpQkFDRjtxQkFBTTtvQkFDTCxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtpQkFDN0I7Z0JBQ0QsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO2FBQ25CO1FBQ0gsQ0FBQyxDQUFBO1FBRUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUM1QixNQUFNLEtBQUssRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFBO1FBRUYsd0JBQXdCO1FBQ3hCLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQzs4R0FsSlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9odWItY29ubmVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHViQ29ubmVjdGlvbiwgSHViQ29ubmVjdGlvbkJ1aWxkZXIsIExvZ0xldmVsIH0gZnJvbSAnQG1pY3Jvc29mdC9zaWduYWxyJztcclxuaW1wb3J0IHsgSVVzZXJBY3Rpdml0eURhdGEsIFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuL3VzZXItYWN0aXZpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lIdWJDb25uZWN0aW9uQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9saWJyYXJpZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IExvbmdUYXNrU2VydmljZSB9IGZyb20gJy4uL2xpYnJhcmllcy9zZXJ2aWNlcy9sb25nLXRhc2suc2VydmljZSc7XHJcbmltcG9ydCB7IGFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBFbnVtU2lnbmFsUlR5cGUgfSBmcm9tICcuLi9lbnVtL0VudW1TaWduYWxSVHlwZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTb2NrZXRTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlckFjdGl2aXR5U2VydmljZTogVXNlckFjdGl2aXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgaHViQ29ubmVjdGlvblNlcnZpY2U6IEh1YkNvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGxvbmdUYXNrU2VydmljZTogTG9uZ1Rhc2tTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgY3JlYXRlSHViQ29ubmVjdGlvbigpIHtcclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8udG9rZW47XHJcbiAgICBpZiAoISEhdG9rZW4pIHtcclxuICAgICAgY29uc29sZS53YXJuKFwiTm8gdXNlciBsb2dnZWQgaW5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uID0gbmV3IEh1YkNvbm5lY3Rpb25CdWlsZGVyKClcclxuICAgICAgLndpdGhVcmwodGhpcy5hcHBDb25maWdTZXJ2aWNlLkJBU0VfVVJMICsgJy9odWJzL3NpZ25hbCcsIHtcclxuICAgICAgICAvLyAud2l0aFVybCgnaHR0cHM6Ly90YW5sZWljYS5jb20vaHVicy9zaWduYWwnLCB7XHJcbiAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1wiOiB0cnVlLFxyXG4gICAgICAgICAgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5cIjogdHJ1ZSxcclxuICAgICAgICB9IGFzIGFueSxcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxyXG4gICAgICAgIGFjY2Vzc1Rva2VuRmFjdG9yeTogKCkgPT4gdG9rZW4sXHJcbiAgICAgIH0pXHJcbiAgICAgIC5jb25maWd1cmVMb2dnaW5nKExvZ0xldmVsLk5vbmUpXHJcbiAgICAgIC5idWlsZCgpXHJcblxyXG4gICAgY29ubmVjdGlvbi5vbihcIlJlY2VpdmVTeXN0ZW1NZXNzYWdlXCIsIG1lc3NhZ2UgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlN5c3RlbSBtZXNzYWdlOiBcIiwgbWVzc2FnZSlcclxuICAgIH0pXHJcblxyXG4gICAgY29ubmVjdGlvbi5vbihcIlJlY2VpdmVNZXNzYWdlXCIsIChhY3Rpdml0eTogSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSkgPT4ge1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJNT05JVE9SSU5HOiBcIiwgYWN0aXZpdHkpO1xyXG4gICAgICBpZiAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkRFQlVHX0VOQUJMRUQpIGRlYnVnZ2VyXHJcblxyXG4gICAgICBzd2l0Y2ggKGFjdGl2aXR5LnNpZ25hbFR5cGUpIHtcclxuICAgICAgICBjYXNlIEVudW1TaWduYWxSVHlwZS5UQVNLX1BST0dSRVNTOlxyXG4gICAgICAgICAgdGhpcy5sb25nVGFza1NlcnZpY2UubWVzc2FnZSQubmV4dChhY3Rpdml0eS5tZXNzYWdlKVxyXG4gICAgICAgICAgdGhpcy5sb25nVGFza1NlcnZpY2UuZGF0YSQubmV4dCgoYWN0aXZpdHkgYXMgYW55KS5kYXRhKVxyXG4gICAgICAgICAgdGhpcy5sb25nVGFza1NlcnZpY2UuZXJyb3IkLm5leHQoKGFjdGl2aXR5IGFzIGFueSkuZXJyb3IpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEVudW1TaWduYWxSVHlwZS5MT0dfSU46XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oYWN0aXZpdHkubWVzc2FnZSwgYWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBFbnVtU2lnbmFsUlR5cGUuRU5USVRZX0NIQU5HRUQ6XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oYWN0aXZpdHkubWVzc2FnZSwgYWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBFbnVtU2lnbmFsUlR5cGUuQUNUSVZJVFk6XHJcbiAgICAgICAgICBjb25zdCB7IGxvZ2luVGltZSB9ID0gYWN0aXZpdHk7XHJcbiAgICAgICAgICBjb25zdCB7IHNpZCwgdXNlcm5hbWUsIHBhdGhuYW1lLCBhdmF0YXIsIGh1YkNvbm5lY3Rpb25JZCwgYWNjZXNzVGltZSwgdXNlckFjdGl2aXR5IH0gPSBhY3Rpdml0eS5kYXRhO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5mdWxsTmFtZTtcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmdyb3VwKFwiQUNUSVZJVFlcIilcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiaXNEZXZNb2RlKClcIiwgaXNEZXZNb2RlKCkpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJJbmNvbWluZyBsb2dpblRpbWVcIiwgbG9naW5UaW1lKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiWW91ciBsb2dpblRpbWVcIiwgdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lISk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkluY29taW5nIHNpZFwiLCBzaWQpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJZb3VyIHNpZFwiLCBjdXJyZW50U2lkKTtcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcblxyXG4gICAgICAgICAgaWYgKGxvZ2luVGltZSA8IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmxvZ2luVGltZSEgJiYgc2lkID09PSBjdXJyZW50U2lkIC8qJiYgaXNEZXZNb2RlKCkqLykge1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgYFRyb25nIG3DtGkgdHLGsOG7nW5nIERldiwgdMOgaSBraG/huqNuICgke3NpZH0pIMSRw6MgxJHGsOG7o2MgZMO5bmcgdHLGsOG7m2MgcuG7k2kgbmjDqS4gWGluIMSRxINuZyBuaOG6rXAgYuG6sW5nIHTDoGkga2hv4bqjbiBraMOhY2AsXHJcbiAgICAgICAgICAgICAgICB7IC4uLmFsZXJ0T3B0aW9ucywgYXV0b0Nsb3NlOiBmYWxzZSB9XHJcbiAgICAgICAgICAgICAgKVxyXG5cclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXNlckxvZ291dCgpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucG9zdExvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9LCAzMDAwKVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IHRoaXMudXNlckFjdGl2aXR5U2VydmljZS5tZXJnZUFjdGl2aXRpZXModXNlckFjdGl2aXR5KVxyXG4gICAgICAgICAgY29uc3QgZm91bmQgPSBtZXJnZWQuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zaWQgPT09IHNpZClcclxuICAgICAgICAgIGlmIChmb3VuZC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3U3RhdGU6IElVc2VyQWN0aXZpdHlEYXRhID0geyBzaWQsIHVzZXJuYW1lLCBwYXRobmFtZSwgYXZhdGFyLCBodWJDb25uZWN0aW9uSWQsIGFjY2Vzc1RpbWUgfVxyXG4gICAgICAgICAgICBtZXJnZWQuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zaWQgIT09IHNpZCkucHVzaChuZXdTdGF0ZSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lcmdlZC5wdXNoKHsgc2lkLCB1c2VybmFtZSwgcGF0aG5hbWUsIGF2YXRhciwgaHViQ29ubmVjdGlvbklkLCBhY2Nlc3NUaW1lIH0pXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy51c2VyQWN0aXZpdHlTZXJ2aWNlLnVzZXJBY3Rpdml0eSQubmV4dChtZXJnZWQpO1xyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRW51bVNpZ25hbFJUeXBlLkFDVElWSVRZX0hJU1RPUllfUkVTRVQ6XHJcbiAgICAgICAgICB0aGlzLnVzZXJBY3Rpdml0eVNlcnZpY2UudXNlckFjdGl2aXR5JC5uZXh0KFtdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSlcclxuXHJcbiAgICBjb25zdCBzdGFydCA9IGFzeW5jICgpID0+IHtcclxuICAgICAgbGV0IGlkXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5tZXNzYWdlID0gXCJIdWJDb25uZWN0aW9uIGNyZWF0aW5nIHJlcXVlc3RlZC5cIlxyXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uc3RhcnQoKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIvCfn6Lwn5+i8J+foiBTaWduYWxSIENvbm5lY3RlZC5cIik7XHJcbiAgICAgICAgdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5tZXNzYWdlID0gXCJIdWJDb25uZWN0aW9uIGNyZWF0ZWQuXCI7XHJcbiAgICAgICAgdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5odWJDb25uZWN0aW9uJC5uZXh0KGNvbm5lY3Rpb24pO1xyXG5cclxuICAgICAgICBpZiAoaWQpIGNsZWFyVGltZW91dChpZClcclxuXHJcbiAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5ncm91cChg8J+UtPCflLTwn5S0IEhVQiBDT05ORUNUSU9OIFBST0JMRU0gPT09PT09PT09PT09PT09PT09PT1gKVxyXG4gICAgICAgIHRoaXMuaHViQ29ubmVjdGlvblNlcnZpY2UubWVzc2FnZSA9IGVycjtcclxuICAgICAgICBjb25zb2xlLndhcm4oXCJodWJDb25uZWN0aW9uIHN0YXJ0KCkgZXJyb3I6IFwiLCBlcnIpXHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgaWYgKGVyci5pbmRleE9mKGBTdGF0dXMgY29kZSAnNDAxJ2ApID49IDApIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVGhlIHRva2VuIGV4cGlyZWRcIilcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlkID0gc2V0VGltZW91dChzdGFydCwgNTAwMClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWQgPSBzZXRUaW1lb3V0KHN0YXJ0LCA1MDAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKClcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbm5lY3Rpb24ub25jbG9zZShhc3luYyAoKSA9PiB7XHJcbiAgICAgIGF3YWl0IHN0YXJ0KCk7XHJcbiAgICB9KVxyXG5cclxuICAgIC8vIFN0YXJ0IHRoZSBjb25uZWN0aW9uLlxyXG4gICAgc3RhcnQoKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9zb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBTW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQU0xRCxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUNVLFdBQXdCLEVBQ3hCLG1CQUF3QyxFQUN4QyxvQkFBMEMsRUFDMUMsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxlQUFnQztRQU5oQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQ3RDLENBQUM7SUFFTCxtQkFBbUI7UUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNsQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLFVBQVUsR0FBa0Is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LEtBQUssSUFBSSxFQUFFO1lBQzVCLE1BQU0sS0FBSyxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUE7UUFFRix3QkFBd0I7UUFDeEIsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDOzhHQTdLVSxhQUFhO2tIQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHViQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuL2h1Yi1jb25uZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJDb25uZWN0aW9uLCBIdWJDb25uZWN0aW9uQnVpbGRlciwgTG9nTGV2ZWwgfSBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xyXG5pbXBvcnQgeyBJVXNlckFjdGl2aXR5RGF0YSwgVXNlckFjdGl2aXR5U2VydmljZSB9IGZyb20gJy4vdXNlci1hY3Rpdml0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4vYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2xpYnJhcmllcy9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9uZ1Rhc2tTZXJ2aWNlIH0gZnJvbSAnLi4vbGlicmFyaWVzL3NlcnZpY2VzL2xvbmctdGFzay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IEVudW1TaWduYWxSVHlwZSB9IGZyb20gJy4uL2VudW0vRW51bVNpZ25hbFJUeXBlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNvY2tldFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyQWN0aXZpdHlTZXJ2aWNlOiBVc2VyQWN0aXZpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodWJDb25uZWN0aW9uU2VydmljZTogSHViQ29ubmVjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgbG9uZ1Rhc2tTZXJ2aWNlOiBMb25nVGFza1NlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBjcmVhdGVIdWJDb25uZWN0aW9uKCkge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy50b2tlbjtcclxuICAgIGlmICghISF0b2tlbikge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJObyB1c2VyIGxvZ2dlZCBpblwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24gPSBuZXcgSHViQ29ubmVjdGlvbkJ1aWxkZXIoKVxyXG4gICAgICAud2l0aFVybCh0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQkFTRV9VUkwgKyAnL2h1YnMvc2lnbmFsJywge1xyXG4gICAgICAgIC8vIC53aXRoVXJsKCdodHRwczovL3RhbmxlaWNhLmNvbS9odWJzL3NpZ25hbCcsIHtcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICBcIkFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzXCI6IHRydWUsXHJcbiAgICAgICAgICBcIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpblwiOiB0cnVlLFxyXG4gICAgICAgIH0gYXMgYW55LFxyXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXHJcbiAgICAgICAgYWNjZXNzVG9rZW5GYWN0b3J5OiAoKSA9PiB0b2tlbixcclxuICAgICAgfSlcclxuICAgICAgLmNvbmZpZ3VyZUxvZ2dpbmcoTG9nTGV2ZWwuTm9uZSlcclxuICAgICAgLmJ1aWxkKClcclxuXHJcbiAgICBjb25uZWN0aW9uLm9uKFwiUmVjZWl2ZVN5c3RlbU1lc3NhZ2VcIiwgbWVzc2FnZSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiU3lzdGVtIG1lc3NhZ2U6IFwiLCBtZXNzYWdlKVxyXG4gICAgfSlcclxuXHJcbiAgICBjb25uZWN0aW9uLm9uKFwiUmVjZWl2ZU1lc3NhZ2VcIiwgKGFjdGl2aXR5OiBJSHViQ29ubmVjdGlvbkFjdGl2aXR5KSA9PiB7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIk1PTklUT1JJTkc6IFwiLCBhY3Rpdml0eSk7XHJcbiAgICAgIGlmICh0aGlzLmFwcENvbmZpZ1NlcnZpY2UuREVCVUdfRU5BQkxFRCkgZGVidWdnZXJcclxuXHJcbiAgICAgIHN3aXRjaCAoYWN0aXZpdHkuc2lnbmFsVHlwZSkge1xyXG4gICAgICAgIGNhc2UgRW51bVNpZ25hbFJUeXBlLlRBU0tfUFJPR1JFU1M6XHJcbiAgICAgICAgICB0aGlzLmxvbmdUYXNrU2VydmljZS5tZXNzYWdlJC5uZXh0KGFjdGl2aXR5Lm1lc3NhZ2UpXHJcbiAgICAgICAgICB0aGlzLmxvbmdUYXNrU2VydmljZS5kYXRhJC5uZXh0KChhY3Rpdml0eSBhcyBhbnkpLmRhdGEpXHJcbiAgICAgICAgICB0aGlzLmxvbmdUYXNrU2VydmljZS5lcnJvciQubmV4dCgoYWN0aXZpdHkgYXMgYW55KS5lcnJvcilcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRW51bVNpZ25hbFJUeXBlLkxPR19JTjpcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyhhY3Rpdml0eS5tZXNzYWdlLCBhbGVydE9wdGlvbnMpXHJcblxyXG4gICAgICAgICAgICBpZiAoJ05vdGlmaWNhdGlvbicgaW4gd2luZG93KSB7XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICBib2R5OiBhY3Rpdml0eS5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogJ2Fzc2V0cy9pY29ucy9pY29uLTcyeDcyLnBuZycsXHJcbiAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgbm90aWZpY2F0aW9uIHBlcm1pc3Npb25zIGFyZSBncmFudGVkXHJcbiAgICAgICAgICAgICAgaWYgKE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uID09PSAnZ3JhbnRlZCcpIHtcclxuICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhbmQgZGlzcGxheSB0aGUgbm90aWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICBuZXcgTm90aWZpY2F0aW9uKFwiSW5mb3JtYXRpb25cIiwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChOb3RpZmljYXRpb24ucGVybWlzc2lvbiAhPT0gJ2RlbmllZCcpIHtcclxuICAgICAgICAgICAgICAgIC8vIFJlcXVlc3QgcGVybWlzc2lvbiBmcm9tIHRoZSB1c2VyXHJcbiAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKS50aGVuKHBlcm1pc3Npb24gPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocGVybWlzc2lvbiA9PT0gJ2dyYW50ZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuZCBkaXNwbGF5IHRoZSBub3RpZmljYXRpb25cclxuICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWZpY2F0aW9uKFwiSW5mb3JtYXRpb25cIiwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ05vdGlmaWNhdGlvbiBwZXJtaXNzaW9ucyBub3QgZ3JhbnRlZCBvciBkZW5pZWQuJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignTm90aWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXIuJyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEVudW1TaWduYWxSVHlwZS5FTlRJVFlfQ0hBTkdFRDpcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyhhY3Rpdml0eS5tZXNzYWdlLCBhbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEVudW1TaWduYWxSVHlwZS5BQ1RJVklUWTpcclxuICAgICAgICAgIGNvbnN0IHsgbG9naW5UaW1lIH0gPSBhY3Rpdml0eTtcclxuICAgICAgICAgIGNvbnN0IHsgc2lkLCB1c2VybmFtZSwgcGF0aG5hbWUsIGF2YXRhciwgaHViQ29ubmVjdGlvbklkLCBhY2Nlc3NUaW1lLCB1c2VyQWN0aXZpdHkgfSA9IGFjdGl2aXR5LmRhdGE7XHJcblxyXG4gICAgICAgICAgY29uc3QgY3VycmVudFNpZCA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmZ1bGxOYW1lO1xyXG5cclxuICAgICAgICAgIGNvbnNvbGUuZ3JvdXAoXCJBQ1RJVklUWVwiKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJpc0Rldk1vZGUoKVwiLCBpc0Rldk1vZGUoKSk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkluY29taW5nIGxvZ2luVGltZVwiLCBsb2dpblRpbWUpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJZb3VyIGxvZ2luVGltZVwiLCB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUhKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiSW5jb21pbmcgc2lkXCIsIHNpZCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIllvdXIgc2lkXCIsIGN1cnJlbnRTaWQpO1xyXG5cclxuICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuXHJcbiAgICAgICAgICBpZiAobG9naW5UaW1lIDwgdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lISAmJiBzaWQgPT09IGN1cnJlbnRTaWQgLyomJiBpc0Rldk1vZGUoKSovKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgVHJvbmcgbcO0aSB0csaw4budbmcgRGV2LCB0w6BpIGtob+G6o24gKCR7c2lkfSkgxJHDoyDEkcaw4bujYyBkw7luZyB0csaw4bubYyBy4buTaSBuaMOpLiBYaW4gxJHEg25nIG5o4bqtcCBi4bqxbmcgdMOgaSBraG/huqNuIGtow6FjYCxcclxuICAgICAgICAgICAgICAgIHsgLi4uYWxlcnRPcHRpb25zLCBhdXRvQ2xvc2U6IGZhbHNlIH1cclxuICAgICAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS51c2VyTG9nb3V0KCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5wb3N0TG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0sIDMwMDApXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3QgbWVyZ2VkID0gdGhpcy51c2VyQWN0aXZpdHlTZXJ2aWNlLm1lcmdlQWN0aXZpdGllcyh1c2VyQWN0aXZpdHkpXHJcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IG1lcmdlZC5maWx0ZXIoaXRlbSA9PiBpdGVtLnNpZCA9PT0gc2lkKVxyXG4gICAgICAgICAgaWYgKGZvdW5kLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdTdGF0ZTogSVVzZXJBY3Rpdml0eURhdGEgPSB7IHNpZCwgdXNlcm5hbWUsIHBhdGhuYW1lLCBhdmF0YXIsIGh1YkNvbm5lY3Rpb25JZCwgYWNjZXNzVGltZSB9XHJcbiAgICAgICAgICAgIG1lcmdlZC5maWx0ZXIoaXRlbSA9PiBpdGVtLnNpZCAhPT0gc2lkKS5wdXNoKG5ld1N0YXRlKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVyZ2VkLnB1c2goeyBzaWQsIHVzZXJuYW1lLCBwYXRobmFtZSwgYXZhdGFyLCBodWJDb25uZWN0aW9uSWQsIGFjY2Vzc1RpbWUgfSlcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnVzZXJBY3Rpdml0eVNlcnZpY2UudXNlckFjdGl2aXR5JC5uZXh0KG1lcmdlZCk7XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBFbnVtU2lnbmFsUlR5cGUuQUNUSVZJVFlfSElTVE9SWV9SRVNFVDpcclxuICAgICAgICAgIHRoaXMudXNlckFjdGl2aXR5U2VydmljZS51c2VyQWN0aXZpdHkkLm5leHQoW10pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IHN0YXJ0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICBsZXQgaWRcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLm1lc3NhZ2UgPSBcIkh1YkNvbm5lY3Rpb24gY3JlYXRpbmcgcmVxdWVzdGVkLlwiXHJcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5zdGFydCgpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi8J+fovCfn6Lwn5+iIFNpZ25hbFIgQ29ubmVjdGVkLlwiKTtcclxuICAgICAgICB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLm1lc3NhZ2UgPSBcIkh1YkNvbm5lY3Rpb24gY3JlYXRlZC5cIjtcclxuICAgICAgICB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLmh1YkNvbm5lY3Rpb24kLm5leHQoY29ubmVjdGlvbik7XHJcblxyXG4gICAgICAgIGlmIChpZCkgY2xlYXJUaW1lb3V0KGlkKVxyXG5cclxuICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcclxuICAgICAgICBjb25zb2xlLmdyb3VwKGDwn5S08J+UtPCflLQgSFVCIENPTk5FQ1RJT04gUFJPQkxFTSA9PT09PT09PT09PT09PT09PT09PWApXHJcbiAgICAgICAgdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5tZXNzYWdlID0gZXJyO1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcImh1YkNvbm5lY3Rpb24gc3RhcnQoKSBlcnJvcjogXCIsIGVycilcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBpZiAoZXJyLmluZGV4T2YoYFN0YXR1cyBjb2RlICc0MDEnYCkgPj0gMCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJUaGUgdG9rZW4gZXhwaXJlZFwiKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWQgPSBzZXRUaW1lb3V0KHN0YXJ0LCA1MDAwKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZCA9IHNldFRpbWVvdXQoc3RhcnQsIDUwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29ubmVjdGlvbi5vbmNsb3NlKGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgc3RhcnQoKTtcclxuICAgIH0pXHJcblxyXG4gICAgLy8gU3RhcnQgdGhlIGNvbm5lY3Rpb24uXHJcbiAgICBzdGFydCgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -4343,6 +4343,32 @@ class SocketService {
4343
4343
  case EnumSignalRType.LOG_IN:
4344
4344
  if (isDevMode())
4345
4345
  this.alertService.info(activity.message, alertOptions);
4346
+ if ('Notification' in window) {
4347
+ const options = {
4348
+ body: activity.message,
4349
+ icon: 'assets/icons/icon-72x72.png',
4350
+ };
4351
+ // Check if notification permissions are granted
4352
+ if (Notification.permission === 'granted') {
4353
+ // Create and display the notification
4354
+ new Notification("Information", options);
4355
+ }
4356
+ else if (Notification.permission !== 'denied') {
4357
+ // Request permission from the user
4358
+ Notification.requestPermission().then(permission => {
4359
+ if (permission === 'granted') {
4360
+ // Create and display the notification
4361
+ new Notification("Information", options);
4362
+ }
4363
+ });
4364
+ }
4365
+ else {
4366
+ console.warn('Notification permissions not granted or denied.');
4367
+ }
4368
+ }
4369
+ else {
4370
+ console.warn('Notifications are not supported in this browser.');
4371
+ }
4346
4372
  break;
4347
4373
  case EnumSignalRType.ENTITY_CHANGED:
4348
4374
  if (isDevMode())