wsuite-notification
Version:
Toast notification for angular 2,4,5,6,7,8+ version.
101 lines • 24.9 kB
JavaScript
import { __decorate } from "tslib";
import { Component } from '@angular/core';
import { NotificationService } from '../../services/notification.service';
import { NotificationType } from '../../model/notification';
import { DomSanitizer } from '@angular/platform-browser';
import { trigger, transition, style, animate } from '@angular/animations';
let NotificationComponent = class NotificationComponent {
constructor(notificationSvc, domSanitizer) {
this.notificationSvc = notificationSvc;
this.domSanitizer = domSanitizer;
this.notifications = [];
}
_addNotification(notification) {
this.notifications.push(notification);
if (notification.timeout !== 0) {
setTimeout(() => this.close(notification), notification.timeout);
}
}
ngOnInit() {
this.subscription = this.notificationSvc.getObservable().subscribe(notification => this._addNotification(notification));
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
close(notification) {
this.notifications = this.notifications.filter(notif => notif.id !== notification.id);
}
className(notification) {
let style;
switch (notification.type) {
case NotificationType.success:
style = 'wsuite-alert-success';
break;
case NotificationType.warning:
style = 'wsuite-alert-warning';
break;
case NotificationType.error:
style = 'wsuite-alert-error';
break;
case NotificationType.darkgray:
style = 'wsuite-alert-darkgray';
break;
case NotificationType.blue:
style = 'wsuite-alert-blue';
break;
default:
style = 'info';
break;
}
return style;
}
setIcon(notification) {
let icon;
switch (notification.type) {
case NotificationType.success:
icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxMC43NjkiIHZpZXdCb3g9IjAgMCAxNCAxMC43NjkiPjxkZWZzPjxzdHlsZT4uYXtmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGNsYXNzPSJhIiBkPSJNLjE2Miw4LjkyM2EuNTIxLjUyMSwwLDAsMSwwLS43NTRsLjc1NC0uNzU0YS41MjEuNTIxLDAsMCwxLC43NTQsMGwuMDU0LjA1NCwyLjk2MiwzLjE3N2EuMjYuMjYsMCwwLDAsLjM3NywwbDcuMjE1LTcuNDg1aC4wNTRhLjUyMS41MjEsMCwwLDEsLjc1NCwwbC43NTQuNzU0YS41MjEuNTIxLDAsMCwxLDAsLjc1NGgwTDUuMjIzLDEzLjYwOGEuNTIxLjUyMSwwLDAsMS0uNzU0LDBMLjI2OSw5LjA4NS4xNjIsOC45MjNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIC0zKSIvPjwvc3ZnPg==';
break;
case NotificationType.warning:
icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNS40NzkiIHZpZXdCb3g9IjAgMCAxOCAxNS40NzkiPjxkZWZzPjxzdHlsZT4uYXtmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTM1Ljg1NykiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMzUuODU3KSI+PHBhdGggY2xhc3M9ImEiIGQ9Ik0xNy43NjgsNDguODg0LDEwLjM4NCwzNi42MzlhMS42MTcsMS42MTcsMCwwLDAtMi43NywwTC4yMzEsNDguODg0YTEuNjE3LDEuNjE3LDAsMCwwLDEuMzg1LDIuNDUySDE2LjM4M2ExLjYxNywxLjYxNywwLDAsMCwxLjM4NS0yLjQ1MlptLTEsMS4wNTRhLjQ0Ni40NDYsMCwwLDEtLjM4OC4yMjZIMS42MTZhLjQ0NS40NDUsMCwwLDEtLjM4MS0uNjc1TDguNjE4LDM3LjI0NGEuNDQ1LjQ0NSwwLDAsMSwuNzYyLDBsNy4zODMsMTIuMjQ1QS40NDYuNDQ2LDAsMCwxLDE2Ljc3LDQ5LjkzOFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTM1Ljg1NykiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC4yNzIgNDAuODg5KSI+PHBhdGggY2xhc3M9ImEiIGQ9Ik0yMzQuMzEsMTczLjAwNWMtLjQxMSwwLS43MzIuMjIxLS43MzIuNjEyLDAsMS4xOTQuMTQsMi45MS4xNCw0LjEsMCwuMzExLjI3MS40NDEuNTkyLjQ0MS4yNDEsMCwuNTgyLS4xMy41ODItLjQ0MSwwLTEuMTk0LjE0LTIuOTEuMTQtNC4xQS42NDUuNjQ1LDAsMCwwLDIzNC4zMSwxNzMuMDA1WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIzMy41NzggLTE3My4wMDUpIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguMjQzIDQ3LjEyMikiPjxwYXRoIGNsYXNzPSJhIiBkPSJNMjMzLjQyNCwzNTMuMzA2YS43NzMuNzczLDAsMCwwLDAsMS41NDUuNzczLjc3MywwLDAsMCwwLTEuNTQ1WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIzMi42NTEgLTM1My4zMDYpIi8+PC9nPjwvZz48L3N2Zz4=';
break;
case NotificationType.error:
icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNC44MjgiIGhlaWdodD0iMTQuODI4IiB2aWV3Qm94PSIwIDAgMTQuODI4IDE0LjgyOCI+PGRlZnM+PHN0eWxlPi5he2ZpbGw6bm9uZTtzdHJva2U6I2ZmZjtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2Utd2lkdGg6MnB4O308L3N0eWxlPjwvZGVmcz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTMyNS4yMDUgLTExLjIwNSkiPjxsaW5lIGNsYXNzPSJhIiB4Mj0iMTIiIHkyPSIxMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMyNi42MTkgMTIuNjE5KSIvPjxsaW5lIGNsYXNzPSJhIiB4MT0iMTIiIHkyPSIxMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMyNi42MTkgMTIuNjE5KSIvPjwvZz48L3N2Zz4=';
break;
case NotificationType.darkgray:
icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2LjQzOSIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDYuNDM5IDE0Ij48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjcpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNykiPjxwYXRoIGNsYXNzPSJhIiBkPSJNMzEuOTIzLDBhMS4zMDksMS4zMDksMCwwLDEsMS40MDYsMS4zNywxLjg0MSwxLjg0MSwwLDAsMS0xLjg3NSwxLjc1OCwxLjI1NSwxLjI1NSwwLDAsMS0xLjM4Mi0xLjM5M0ExLjgsMS44LDAsMCwxLDMxLjkyMywwWk0yOS4wMzYsMTRjLS43NCwwLTEuMjgzLS40NTctLjc2NS0yLjQ2NmwuODUtMy41NjRjLjE0OC0uNTcxLjE3Mi0uOCwwLS44YTUuNTkyLDUuNTkyLDAsMCwwLTEuNzUxLjc4M0wyNyw3LjMzN0E5Ljc4Miw5Ljc4MiwwLDAsMSwzMS43NjEsNC45MWMuNzQsMCwuODY0Ljg5MS40OTMsMi4yNjFsLS45NzMsMy43NDZjLS4xNzMuNjYyLS4xLjg5LjA3NC44OWEzLjgxMywzLjgxMywwLDAsMCwxLjY2NS0uODQ2bC40Mi41NzFBNy43LDcuNywwLDAsMSwyOS4wMzYsMTRaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjcpIi8+PC9nPjwvZz48L3N2Zz4=';
break;
case NotificationType.blue:
icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2LjQzOSIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDYuNDM5IDE0Ij48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjcpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNykiPjxwYXRoIGNsYXNzPSJhIiBkPSJNMzEuOTIzLDBhMS4zMDksMS4zMDksMCwwLDEsMS40MDYsMS4zNywxLjg0MSwxLjg0MSwwLDAsMS0xLjg3NSwxLjc1OCwxLjI1NSwxLjI1NSwwLDAsMS0xLjM4Mi0xLjM5M0ExLjgsMS44LDAsMCwxLDMxLjkyMywwWk0yOS4wMzYsMTRjLS43NCwwLTEuMjgzLS40NTctLjc2NS0yLjQ2NmwuODUtMy41NjRjLjE0OC0uNTcxLjE3Mi0uOCwwLS44YTUuNTkyLDUuNTkyLDAsMCwwLTEuNzUxLjc4M0wyNyw3LjMzN0E5Ljc4Miw5Ljc4MiwwLDAsMSwzMS43NjEsNC45MWMuNzQsMCwuODY0Ljg5MS40OTMsMi4yNjFsLS45NzMsMy43NDZjLS4xNzMuNjYyLS4xLjg5LjA3NC44OWEzLjgxMywzLjgxMywwLDAsMCwxLjY2NS0uODQ2bC40Mi41NzFBNy43LDcuNywwLDAsMSwyOS4wMzYsMTRaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjcpIi8+PC9nPjwvZz48L3N2Zz4=';
break;
default:
icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2LjQzOSIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDYuNDM5IDE0Ij48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjcpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNykiPjxwYXRoIGNsYXNzPSJhIiBkPSJNMzEuOTIzLDBhMS4zMDksMS4zMDksMCwwLDEsMS40MDYsMS4zNywxLjg0MSwxLjg0MSwwLDAsMS0xLjg3NSwxLjc1OCwxLjI1NSwxLjI1NSwwLDAsMS0xLjM4Mi0xLjM5M0ExLjgsMS44LDAsMCwxLDMxLjkyMywwWk0yOS4wMzYsMTRjLS43NCwwLTEuMjgzLS40NTctLjc2NS0yLjQ2NmwuODUtMy41NjRjLjE0OC0uNTcxLjE3Mi0uOCwwLS44YTUuNTkyLDUuNTkyLDAsMCwwLTEuNzUxLjc4M0wyNyw3LjMzN0E5Ljc4Miw5Ljc4MiwwLDAsMSwzMS43NjEsNC45MWMuNzQsMCwuODY0Ljg5MS40OTMsMi4yNjFsLS45NzMsMy43NDZjLS4xNzMuNjYyLS4xLjg5LjA3NC44OWEzLjgxMywzLjgxMywwLDAsMCwxLjY2NS0uODQ2bC40Mi41NzFBNy43LDcuNywwLDAsMSwyOS4wMzYsMTRaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjcpIi8+PC9nPjwvZz48L3N2Zz4=';
break;
}
return this.domSanitizer.bypassSecurityTrustResourceUrl(icon);
}
};
NotificationComponent.ctorParameters = () => [
{ type: NotificationService },
{ type: DomSanitizer }
];
NotificationComponent = __decorate([
Component({
selector: 'wsuite-notification',
template: "<div class=\"wsuite-notifications\">\n <div class=\"wsuite-alert wsuite-alert-dismissible w-350\" [ngClass]=\"className(notification)\"\n *ngFor=\"let notification of notifications\" role=\"wsuite-alert\" @fade>\n <span class=\"info\"> <img [src]=\"setIcon(notification)\" alt=\"\"> </span>\n <div class=\"wsuite-alert-body\">\n <p class=\"n1\">{{notification.title}}</p>\n <small [innerHtml]=\"notification.message | wsuiteSafeHtml\"></small>\n </div>\n <button type=\"button\" class=\"close\" (click)=\"close(notification)\" aria-label=\"Close\"> <span\n aria-hidden=\"true\">×</span>\n </button>\n </div>\n</div>",
animations: [
trigger('fade', [
transition('void => *', [
style({ opacity: 0 }),
animate(500, style({ opacity: 1 }))
]),
transition('* => void', [
style({ opacity: 1 }),
animate(500, style({ opacity: 0 }))
])
])
],
styles: [".wsuite-notifications{position:fixed;top:60px;right:0;z-index:99999999;left:50%;margin-left:-175px}.wsuite-alert .info{width:39px;display:flex;align-items:center;justify-content:center}.wsuite-alert-body{padding:4px 34px 4px 13px;flex:1;display:flex;flex-direction:column;justify-content:center}.wsuite-alert-body p{line-height:17px}.wsuite-alert-body small{font-size:10px;color:#868686;line-height:14px;display:block}.wsuite-alert{display:flex;align-items:stretch;box-shadow:0 3px 6px rgba(0,0,0,.16);margin:5px;left:50%;background-color:#fff;border-radius:.25rem;min-height:40px}.wsuite-alert .close{align-self:flex-start;margin-right:5px}.wsuite-alert-darkgray{border:1px solid #404040;padding:0}.wsuite-alert-darkgray .info{background-color:#404040}.wsuite-alert-blue{border:1px solid #41a3f3;padding:0}.wsuite-alert-blue .info{background-color:#41a3f3}.wsuite-alert-warning{border:1px solid #f5b829;padding:0}.wsuite-alert-warning .info{background-color:#f5b829}.wsuite-alert-error{border:1px solid #ff5c5c;padding:0}.wsuite-alert-error .info{background-color:#ff5c5c}.wsuite-alert-success{border:1px solid #5abe2b;padding:0}.wsuite-alert-success .info{background-color:#5abe2b}.w-250{max-width:250px}.w-350{max-width:350px}.wsuite-alert-example .wsuite-alert{margin-bottom:38px}"]
})
], NotificationComponent);
export { NotificationComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3dzdWl0ZS1ub3RpZmljYXRpb24vIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQWdCLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQW1CMUUsSUFBYSxxQkFBcUIsR0FBbEMsTUFBYSxxQkFBcUI7SUFLaEMsWUFDVSxlQUFvQyxFQUNwQyxZQUEwQjtRQUQxQixvQkFBZSxHQUFmLGVBQWUsQ0FBcUI7UUFDcEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFMcEMsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBTS9CLENBQUM7SUFFRyxnQkFBZ0IsQ0FBQyxZQUEwQjtRQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV0QyxJQUFJLFlBQVksQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFO1lBQzlCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUVsRTtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMs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O0dBQ1cscUJBQXFCLENBK0ZqQztTQS9GWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb24sIE5vdGlmaWNhdGlvblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbC9ub3RpZmljYXRpb24nO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyB0cmlnZ2VyLCB0cmFuc2l0aW9uLCBzdHlsZSwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3c3VpdGUtbm90aWZpY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vdGlmaWNhdGlvbi5jb21wb25lbnQuY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlJywgW1xuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoNTAwLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxIH0pLFxuICAgICAgICBhbmltYXRlKDUwMCwgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxuICAgICAgXSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25bXSA9IFtdO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU3ZjOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7IH1cblxuICBwcml2YXRlIF9hZGROb3RpZmljYXRpb24obm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMucHVzaChub3RpZmljYXRpb24pO1xuXG4gICAgaWYgKG5vdGlmaWNhdGlvbi50aW1lb3V0ICE9PSAwKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xvc2Uobm90aWZpY2F0aW9uKSwgbm90aWZpY2F0aW9uLnRpbWVvdXQpO1xuXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLm5vdGlmaWNhdGlvblN2Yy5nZXRPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKG5vdGlmaWNhdGlvbiA9PiB0aGlzLl9hZGROb3RpZmljYXRpb24obm90aWZpY2F0aW9uKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgY2xvc2Uobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmID0+IG5vdGlmLmlkICE9PSBub3RpZmljYXRpb24uaWQpO1xuICB9XG5cblxuICBjbGFzc05hbWUobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pOiBzdHJpbmcge1xuXG4gICAgbGV0IHN0eWxlOiBzdHJpbmc7XG4gICAgc3dpdGNoIChub3RpZmljYXRpb24udHlwZSkge1xuXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuc3VjY2VzczpcbiAgICAgICAgc3R5bGUgPSAnd3N1aXRlLWFsZXJ0LXN1Y2Nlc3MnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLndhcm5pbmc6XG4gICAgICAgIHN0eWxlID0gJ3dzdWl0ZS1hbGVydC13YXJuaW5nJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5lcnJvcjpcbiAgICAgICAgc3R5bGUgPSAnd3N1aXRlLWFsZXJ0LWVycm9yJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5kYXJrZ3JheTpcbiAgICAgICAgc3R5bGUgPSAnd3N1aXRlLWFsZXJ0LWRhcmtncmF5JztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5ibHVlOlxuICAgICAgICBzdHlsZSA9ICd3c3VpdGUtYWxlcnQtYmx1ZSc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzdHlsZSA9ICdpbmZvJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZTtcbiAgfVxuXG4gIHNldEljb24obm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pOiBhbnkge1xuICAgIGxldCBpY29uOiBhbnk7XG4gICAgc3dpdGNoIChub3RpZmljYXRpb24udHlwZSkge1xuXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuc3VjY2VzczpcbiAgICAgICAgaWNvbiA9ICdkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGRwWkhSb1BTSXhOQ0lnYUdWcFoyaDBQU0l4TUM0M05qa2lJSFpwWlhkQ2IzZzlJakFnTUNBeE5DQXhNQzQzTmpraVBqeGtaV1p6UGp4emRIbHNaVDR1WVh0bWFXeHNPaU5tWm1ZN2ZUd3ZjM1I1YkdVK1BDOWtaV1p6UGp4d1lYUm9JR05zWVhOelBTSmhJaUJrUFNKTkxqRTJNaXc0TGpreU0yRXVOVEl4TGpVeU1Td3dMREFzTVN3d0xTNDNOVFJzTGpjMU5DMHVOelUwWVM0MU1qRXVOVEl4TERBc01Dd3hMQzQzTlRRc01Hd3VNRFUwTGpBMU5Dd3lMamsyTWl3ekxqRTNOMkV1TWpZdU1qWXNNQ3d3TERBc0xqTTNOeXd3YkRjdU1qRTFMVGN1TkRnMWFDNHdOVFJoTGpVeU1TNDFNakVzTUN3d0xERXNMamMxTkN3d2JDNDNOVFF1TnpVMFlTNDFNakV1TlRJeExEQXNNQ3d4TERBc0xqYzFOR2d3VERVdU1qSXpMREV6TGpZd09HRXVOVEl4TGpVeU1Td3dMREFzTVMwdU56VTBMREJNTGpJMk9TdzVMakE0TlM0eE5qSXNPQzQ1TWpOYUlpQjBjbUZ1YzJadmNtMDlJblJ5WVc1emJHRjBaU2d3SUMwektTSXZQand2YzNablBnPT0nO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLndhcm5pbmc6XG4gICAgICAgIGljb24gPSAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhkcFpIUm9QU0l4T0NJZ2FHVnBaMmgwUFNJeE5TNDBOemtpSUhacFpYZENiM2c5SWpBZ01DQXhPQ0F4TlM0ME56a2lQanhrWldaelBqeHpkSGxzWlQ0dVlYdG1hV3hzT2lObVptWTdmVHd2YzNSNWJHVStQQzlrWldaelBqeG5JSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0RBZ0xUTTFMamcxTnlraVBqeG5JSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0RBZ016VXVPRFUzS1NJK1BIQmhkR2dnWTJ4aGMzTTlJbUVpSUdROUlrMHhOeTQzTmpnc05EZ3VPRGcwTERFd0xqTTROQ3d6Tmk0Mk16bGhNUzQyTVRjc01TNDJNVGNzTUN3d0xEQXRNaTQzTnl3d1RDNHlNekVzTkRndU9EZzBZVEV1TmpFM0xERXVOakUzTERBc01Dd3dMREV1TXpnMUxESXVORFV5U0RFMkxqTTRNMkV4TGpZeE55d3hMall4Tnl3d0xEQXNNQ3d4TGpNNE5TMHlMalExTWxwdExURXNNUzR3TlRSaExqUTBOaTQwTkRZc01Dd3dMREV0TGpNNE9DNHlNalpJTVM0Mk1UWmhMalEwTlM0ME5EVXNNQ3d3TERFdExqTTRNUzB1TmpjMVREZ3VOakU0TERNM0xqSTBOR0V1TkRRMUxqUTBOU3d3TERBc01Td3VOell5TERCc055NHpPRE1zTVRJdU1qUTFRUzQwTkRZdU5EUTJMREFzTUN3eExERTJMamMzTERRNUxqa3pPRm9pSUhSeVlXNXpabTl5YlQwaWRISmhibk5zWVhSbEtEQWdMVE0xTGpnMU55a2lMejQ4TDJjK1BHY2dkSEpoYm5ObWIzSnRQU0owY21GdWMyeGhkR1VvT0M0eU56SWdOREF1T0RnNUtTSStQSEJoZEdnZ1kyeGhjM005SW1FaUlHUTlJazB5TXpRdU16RXNNVGN6TGpBd05XTXRMalF4TVN3d0xTNDNNekl1TWpJeExTNDNNekl1TmpFeUxEQXNNUzR4T1RRdU1UUXNNaTQ1TVM0eE5DdzBMakVzTUN3dU16RXhMakkzTVM0ME5ERXVOVGt5TGpRME1TNHlOREVzTUN3dU5UZ3lMUzR4TXk0MU9ESXRMalEwTVN3d0xURXVNVGswTGpFMExUSXVPVEV1TVRRdE5DNHhRUzQyTkRVdU5qUTFMREFzTUN3d0xESXpOQzR6TVN3eE56TXVNREExV2lJZ2RISmhibk5tYjNKdFBTSjBjbUZ1YzJ4aGRHVW9MVEl6TXk0MU56Z2dMVEUzTXk0d01EVXBJaTgrUEM5blBqeG5JSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0RndU1qUXpJRFEzTGpFeU1pa2lQanh3WVhSb0lHTnNZWE56UFNKaElpQmtQU0pOTWpNekxqUXlOQ3d6TlRNdU16QTJZUzQzTnpNdU56Y3pMREFzTUN3d0xEQXNNUzQxTkRVdU56Y3pMamMzTXl3d0xEQXNNQ3d3TFRFdU5UUTFXaUlnZEhKaGJuTm1iM0p0UFNKMGNtRnVjMnhoZEdVb0xUSXpNaTQyTlRFZ0xUTTFNeTR6TURZcElpOCtQQzluUGp3dlp6NDhMM04yWno0PSc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuZXJyb3I6XG4gICAgICAgIGljb24gPSAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhkcFpIUm9QU0l4TkM0NE1qZ2lJR2hsYVdkb2REMGlNVFF1T0RJNElpQjJhV1YzUW05NFBTSXdJREFnTVRRdU9ESTRJREUwTGpneU9DSStQR1JsWm5NK1BITjBlV3hsUGk1aGUyWnBiR3c2Ym05dVpUdHpkSEp2YTJVNkkyWm1aanR6ZEhKdmEyVXRiR2x1WldOaGNEcHliM1Z1WkR0emRISnZhMlV0ZDJsa2RHZzZNbkI0TzMwOEwzTjBlV3hsUGp3dlpHVm1jejQ4WnlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3RNVE15TlM0eU1EVWdMVEV4TGpJd05Ta2lQanhzYVc1bElHTnNZWE56UFNKaElpQjRNajBpTVRJaUlIa3lQU0l4TWlJZ2RISmhibk5tYjNKdFBTSjBjbUZ1YzJ4aGRHVW9NVE15Tmk0Mk1Ua2dNVEl1TmpFNUtTSXZQanhzYVc1bElHTnNZWE56UFNKaElpQjRNVDBpTVRJaUlIa3lQU0l4TWlJZ2RISmhibk5tYjNKdFBTSjBjbUZ1YzJ4aGRHVW9NVE15Tmk0Mk1Ua2dNVEl1TmpFNUtTSXZQand2Wno0OEwzTjJaejQ9JztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5kYXJrZ3JheTpcbiAgICAgICAgaWNvbiA9ICdkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGRwWkhSb1BTSTJMalF6T1NJZ2FHVnBaMmgwUFNJeE5DSWdkbWxsZDBKdmVEMGlNQ0F3SURZdU5ETTVJREUwSWo0OFpHVm1jejQ4YzNSNWJHVStMbUY3Wm1sc2JEb2pabVptTzMwOEwzTjBlV3hsUGp3dlpHVm1jejQ4WnlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3RNamNwSWo0OFp5QjBjbUZ1YzJadmNtMDlJblJ5WVc1emJHRjBaU2d5TnlraVBqeHdZWFJvSUdOc1lYTnpQU0poSWlCa1BTSk5NekV1T1RJekxEQmhNUzR6TURrc01TNHpNRGtzTUN3d0xERXNNUzQwTURZc01TNHpOeXd4TGpnME1Td3hMamcwTVN3d0xEQXNNUzB4TGpnM05Td3hMamMxT0N3eExqSTFOU3d4TGpJMU5Td3dMREFzTVMweExqTTRNaTB4TGpNNU0wRXhMamdzTVM0NExEQXNNQ3d4TERNeExqa3lNeXd3V2sweU9TNHdNellzTVRSakxTNDNOQ3d3TFRFdU1qZ3pMUzQwTlRjdExqYzJOUzB5TGpRMk5td3VPRFV0TXk0MU5qUmpMakUwT0MwdU5UY3hMakUzTWkwdU9Dd3dMUzQ0WVRVdU5Ua3lMRFV1TlRreUxEQXNNQ3d3TFRFdU56VXhMamM0TTB3eU55dzNMak16TjBFNUxqYzRNaXc1TGpjNE1pd3dMREFzTVN3ek1TNDNOakVzTkM0NU1XTXVOelFzTUN3dU9EWTBMamc1TVM0ME9UTXNNaTR5TmpGc0xTNDVOek1zTXk0M05EWmpMUzR4TnpNdU5qWXlMUzR4TGpnNUxqQTNOQzQ0T1dFekxqZ3hNeXd6TGpneE15d3dMREFzTUN3eExqWTJOUzB1T0RRMmJDNDBNaTQxTnpGQk55NDNMRGN1Tnl3d0xEQXNNU3d5T1M0d016WXNNVFJhSWlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3RNamNwSWk4K1BDOW5Qand2Wno0OEwzTjJaejQ9JztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5ibHVlOlxuICAgICAgICBpY29uID0gJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIZHBaSFJvUFNJMkxqUXpPU0lnYUdWcFoyaDBQU0l4TkNJZ2RtbGxkMEp2ZUQwaU1DQXdJRFl1TkRNNUlERTBJajQ4WkdWbWN6NDhjM1I1YkdVK0xtRjdabWxzYkRvalptWm1PMzA4TDNOMGVXeGxQand2WkdWbWN6NDhaeUIwY21GdWMyWnZjbTA5SW5SeVlXNXpiR0YwWlNndE1qY3BJajQ4WnlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3lOeWtpUGp4d1lYUm9JR05zWVhOelBTSmhJaUJrUFNKTk16RXVPVEl6TERCaE1TNHpNRGtzTVM0ek1Ea3NNQ3d3TERFc01TNDBNRFlzTVM0ek55d3hMamcwTVN3eExqZzBNU3d3TERBc01TMHhMamczTlN3eExqYzFPQ3d4TGpJMU5Td3hMakkxTlN3d0xEQXNNUzB4TGpNNE1pMHhMak01TTBFeExqZ3NNUzQ0TERBc01Dd3hMRE14TGpreU15d3dXazB5T1M0d016WXNNVFJqTFM0M05Dd3dMVEV1TWpnekxTNDBOVGN0TGpjMk5TMHlMalEyTm13dU9EVXRNeTQxTmpSakxqRTBPQzB1TlRjeExqRTNNaTB1T0N3d0xTNDRZVFV1TlRreUxEVXVOVGt5TERBc01Dd3dMVEV1TnpVeExqYzRNMHd5Tnl3M0xqTXpOMEU1TGpjNE1pdzVMamM0TWl3d0xEQXNNU3d6TVM0M05qRXNOQzQ1TVdNdU56UXNNQ3d1T0RZMExqZzVNUzQwT1RNc01pNHlOakZzTFM0NU56TXNNeTQzTkRaakxTNHhOek11TmpZeUxTNHhMamc1TGpBM05DNDRPV0V6TGpneE15d3pMamd4TXl3d0xEQXNNQ3d4TGpZMk5TMHVPRFEyYkM0ME1pNDFOekZCTnk0M0xEY3VOeXd3TERBc01Td3lPUzR3TXpZc01UUmFJaUIwY21GdWMyWnZjbTA5SW5SeVlXNXpiR0YwWlNndE1qY3BJaTgrUEM5blBqd3ZaejQ4TDNOMlp6ND0nO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWNvbiA9ICdkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGRwWkhSb1BTSTJMalF6T1NJZ2FHVnBaMmgwUFNJeE5DSWdkbWxsZDBKdmVEMGlNQ0F3SURZdU5ETTVJREUwSWo0OFpHVm1jejQ4YzNSNWJHVStMbUY3Wm1sc2JEb2pabVptTzMwOEwzTjBlV3hsUGp3dlpHVm1jejQ4WnlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3RNamNwSWo0OFp5QjBjbUZ1YzJadmNtMDlJblJ5WVc1emJHRjBaU2d5TnlraVBqeHdZWFJvSUdOc1lYTnpQU0poSWlCa1BTSk5NekV1T1RJekxEQmhNUzR6TURrc01TNHpNRGtzTUN3d0xERXNNUzQwTURZc01TNHpOeXd4TGpnME1Td3hMamcwTVN3d0xEQXNNUzB4TGpnM05Td3hMamMxT0N3eExqSTFOU3d4TGpJMU5Td3dMREFzTVMweExqTTRNaTB4TGpNNU0wRXhMamdzTVM0NExEQXNNQ3d4TERNeExqa3lNeXd3V2sweU9TNHdNellzTVRSakxTNDNOQ3d3TFRFdU1qZ3pMUzQwTlRjdExqYzJOUzB5TGpRMk5td3VPRFV0TXk0MU5qUmpMakUwT0MwdU5UY3hMakUzTWkwdU9Dd3dMUzQ0WVRVdU5Ua3lMRFV1TlRreUxEQXNNQ3d3TFRFdU56VXhMamM0TTB3eU55dzNMak16TjBFNUxqYzRNaXc1TGpjNE1pd3dMREFzTVN3ek1TNDNOakVzTkM0NU1XTXVOelFzTUN3dU9EWTBMamc1TVM0ME9UTXNNaTR5TmpGc0xTNDVOek1zTXk0M05EWmpMUzR4TnpNdU5qWXlMUzR4TGpnNUxqQTNOQzQ0T1dFekxqZ3hNeXd6TGpneE15d3dMREFzTUN3eExqWTJOUzB1T0RRMmJDNDBNaTQxTnpGQk55NDNMRGN1Tnl3d0xEQXNNU3d5T1M0d016WXNNVFJhSWlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3RNamNwSWk4K1BDOW5Qand2Wno0OEwzTjJaejQ9JztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoaWNvbik7XG4gIH1cblxufVxuIl19