tango-app-ui-shared 3.0.64-dev → 3.0.66-dev

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.
@@ -12,7 +12,7 @@ import * as i5 from "../../../../pipes/customDate.pipe";
12
12
  const enterTransition = transition(':enter', [
13
13
  style({
14
14
  opacity: 0,
15
- transform: 'translateX(50px)'
15
+ // transform: 'translateX(50px)'
16
16
  }),
17
17
  animate('1s ease-in', style({
18
18
  opacity: 1
@@ -21,7 +21,7 @@ const enterTransition = transition(':enter', [
21
21
  const leaveTrans = transition(':leave', [
22
22
  style({
23
23
  opacity: 1,
24
- transform: 'translateX(-50px)'
24
+ // transform: 'translateX(-50px)'
25
25
  }),
26
26
  animate('1s ease-out', style({
27
27
  opacity: 0,
@@ -109,7 +109,9 @@ export class NavbarComponent {
109
109
  item._score = true;
110
110
  setTimeout(() => {
111
111
  item._score = false;
112
- this.notificationPushUpdate(item);
112
+ this.service.notificationPushUpdate(item).pipe(takeUntil(this.destroy$)).subscribe((res) => {
113
+ });
114
+ // this.notificationPushUpdate(item,'');
113
115
  }, 6000);
114
116
  });
115
117
  }
@@ -126,35 +128,93 @@ export class NavbarComponent {
126
128
  }
127
129
  });
128
130
  }
129
- notificationPushUpdate(data) {
131
+ notificationPushUpdate(data, btnDetails) {
130
132
  this.service.notificationPushUpdate(data).pipe(takeUntil(this.destroy$)).subscribe((res) => {
131
133
  if (res && res.code == 200) {
134
+ if (btnDetails && btnDetails?.redirectionUrl != '' && !['remind', 'subscribed'].includes(btnDetails?.redirectionUrl)) {
135
+ this.router.navigateByUrl(btnDetails.redirectionUrl);
136
+ }
137
+ if (btnDetails && btnDetails?.redirectionUrl == 'remind') {
138
+ this.service.updateRemind(data._id).pipe(takeUntil(this.destroy$)).subscribe(() => { });
139
+ if (!this.showNotification) {
140
+ this.service.triggerReload();
141
+ }
142
+ this.service.notificationUpdate(data._id).pipe(takeUntil(this.destroy$)).subscribe();
143
+ }
144
+ if (btnDetails && btnDetails?.redirectionUrl == 'subscribed') {
145
+ let params = {
146
+ clientId: btnDetails?.clientId,
147
+ products: [
148
+ {
149
+ name: btnDetails.product,
150
+ productName: btnDetails.name,
151
+ type: "subscription",
152
+ content: "new"
153
+ }
154
+ ]
155
+ };
156
+ this.service.updateSubscription(params).pipe(takeUntil(this.destroy$)).subscribe((res) => {
157
+ if (res && res.code == 200) {
158
+ this.service.notificationUpdate(data._id).pipe(takeUntil(this.destroy$)).subscribe();
159
+ if (!this.showNotification) {
160
+ this.service.triggerReload();
161
+ }
162
+ }
163
+ });
164
+ }
165
+ this.cd.detectChanges();
132
166
  setTimeout(() => {
133
167
  this.notificationList();
134
168
  }, 1000);
135
169
  }
136
170
  });
137
171
  }
138
- handleNotification() {
139
- this.service.updateNotificationReceived(true);
140
- }
141
- viewAll(type) {
142
- this.router.navigateByUrl('/notifications/alerts');
143
- }
144
- updateNotification(data, url) {
172
+ updateNotification(data, btnDetails) {
173
+ this.loading = true;
145
174
  this.service.notificationUpdate(data._id).pipe(takeUntil(this.destroy$)).subscribe((res) => {
146
175
  if (res && res.code == 200) {
147
- this.toast.getPrimaryToast(res.message);
176
+ if (!btnDetails || btnDetails?.redirectionUrl != 'subscribed')
177
+ this.toast.getSuccessToast(res.message);
148
178
  setTimeout(() => {
149
179
  this.notificationList();
150
180
  }, 1000);
151
- this.cd.detectChanges();
152
- if (url != '') {
153
- this.router.navigateByUrl(url);
181
+ if (btnDetails && btnDetails?.redirectionUrl != '' && !['remind', 'subscribed'].includes(btnDetails?.redirectionUrl)) {
182
+ this.router.navigateByUrl(btnDetails.redirectionUrl);
183
+ }
184
+ if (btnDetails && btnDetails?.redirectionUrl == 'remind') {
185
+ this.service.updateRemind(data._id).pipe(takeUntil(this.destroy$)).subscribe(() => { });
186
+ }
187
+ if (btnDetails && btnDetails?.redirectionUrl == 'subscribed') {
188
+ let params = {
189
+ clientId: btnDetails?.clientId,
190
+ products: [
191
+ {
192
+ name: btnDetails.product,
193
+ productName: btnDetails.name,
194
+ type: "subscription",
195
+ content: "new"
196
+ }
197
+ ]
198
+ };
199
+ this.service.updateSubscription(params).pipe(takeUntil(this.destroy$)).subscribe((res) => {
200
+ if (res && res.code == 200) {
201
+ this.toast.getSuccessToast('Product Subscribed Successfully');
202
+ }
203
+ });
154
204
  }
205
+ this.cd.detectChanges();
155
206
  }
207
+ }, (error) => {
208
+ this.loading = false;
209
+ this.noData = true;
156
210
  });
157
211
  }
212
+ handleNotification() {
213
+ this.service.updateNotificationReceived(true);
214
+ }
215
+ viewAll(type) {
216
+ this.router.navigateByUrl('/notifications/alerts');
217
+ }
158
218
  onClick(event) {
159
219
  const target = event.target;
160
220
  if (!target.closest('.app-navbar')) {
@@ -162,7 +222,7 @@ export class NavbarComponent {
162
222
  }
163
223
  }
164
224
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NavbarComponent, deps: [{ token: i1.NotificationService }, { token: i2.Router }, { token: i3.ToastService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
165
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: NavbarComponent, selector: "lib-navbar", inputs: { appHeaderDefaulMenuDisplay: "appHeaderDefaulMenuDisplay", isRtl: "isRtl" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<!--begin::Notifications-->\r\n<div class=\"app-navbar-item\" [ngClass]=\"itemClass\" *ngIf=\"showNotification\">\r\n <!--begin::Menu- wrapper-->\r\n <div [ngClass]=\"btnClass\" (click)=\"showDropdown = !showDropdown\">\r\n <span *ngIf=\"!notification.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"24\" viewBox=\"0 0 20 24\" fill=\"none\">\r\n <path\r\n d=\"M10.6779 2.4V3.00688L11.2715 3.1335C14.1674 3.75125 16.3919 6.45842 16.3919 9.75V10.6313C16.3919 13.0131 17.2249 15.3087 18.7338 17.0963L18.7352 17.0979L19.0636 17.4846C19.0639 17.485 19.0642 17.4853 19.0645 17.4857C19.2557 17.7136 19.3048 18.0393 19.185 18.3174C19.0641 18.5983 18.8153 18.75 18.5704 18.75H1.42848C1.1825 18.75 0.933931 18.5974 0.815017 18.3193C0.695108 18.0388 0.744592 17.7123 0.933996 17.4853C0.934445 17.4848 0.934894 17.4843 0.935344 17.4837L1.26312 17.0985L1.26473 17.0966C2.77599 15.3086 3.60697 13.0127 3.60697 10.6313V9.75C3.60697 6.45434 5.79488 3.75145 8.72559 3.13388L9.32094 3.00843V2.4V1.5C9.32094 1.05052 9.65806 0.75 9.99944 0.75C10.3408 0.75 10.6779 1.05052 10.6779 1.5V2.4ZM9.99944 23.25C9.44983 23.25 8.91726 23.023 8.52034 22.6062C8.29649 22.3712 8.12457 22.0708 8.01769 21.75H11.9812C11.8743 22.0708 11.7024 22.3712 11.4785 22.6062C11.0856 23.0188 10.5146 23.25 9.99944 23.25Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.5\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"notification.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"24\" viewBox=\"0 0 20 24\" fill=\"none\">\r\n <path\r\n d=\"M11.4279 2.4V1.5C11.4279 0.671719 10.7896 0 9.99944 0C9.2093 0 8.57094 0.671719 8.57094 1.5V2.4C5.27202 3.09516 2.85697 6.12188 2.85697 9.75V10.6313C2.85697 12.8391 2.08648 14.9625 0.691915 16.6125L0.360862 17.0016C-0.0128805 17.4469 -0.10505 18.075 0.125384 18.6141C0.355818 19.1531 0.866013 19.5 1.42848 19.5H18.5704C19.1329 19.5 19.6418 19.1531 19.8739 18.6141C20.106 18.075 20.0123 17.4469 19.6373 17.0016L19.307 16.6125C17.9142 14.9625 17.1419 12.8391 17.1419 10.6313V9.75C17.1419 9.39947 17.119 9.05455 17.0746 8.71681C16.5845 8.8999 16.054 9 15.5 9C13.0147 9 11 6.98528 11 4.5C11 3.74877 11.1841 3.04054 11.5096 2.41795C11.4824 2.4118 11.4552 2.40582 11.4279 2.4Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M7.97723 23.1234C8.51291 23.6859 9.24055 24 9.99944 24C10.7181 24 11.486 23.6859 12.0216 23.1234C12.5573 22.5609 12.8564 21.7547 12.8564 21H7.14245C7.14245 21.7547 7.44154 22.5609 7.97723 23.1234Z\"\r\n fill=\"#00A3FF\" />\r\n <circle cx=\"16\" cy=\"4\" r=\"4\" fill=\"#F04438\" />\r\n </svg>\r\n </span>\r\n <div class=\"menu menu-sub menu-sub-dropdown menu-column w-450px w-lg-425px notificationMenu\" *ngIf=\"showDropdown\">\r\n <div class=\"card topbar\">\r\n <div class=\"card-header\">\r\n <h3 class=\"title-notify mt-10 mb-6\">\r\n Notifications\r\n </h3>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData && !loading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/noNotification.svg\" alt=\"\">\r\n <span class=\"notificationAlign mt-10\">No New Notification</span>\r\n <span class=\"noNotification mt-2\">Any new notification will be shown here.</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alertscroll\" *ngIf=\"notification.length\">\r\n <div *ngFor=\"let item of notification\" class=\"mh-200px ng-star-inserted\" style=\"overflow: auto;\">\r\n <div class=\"d-flex flex-stack py-3 mx-4 ng-star-inserted\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px me-4\"><span class=\"symbol-label bg-light-primary\"><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"></span><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"\r\n version=\"1.1\" class=\"ng-star-inserted\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon points=\"0 0 24 0 24 24 0 24\"></polygon>\r\n <path\r\n d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\" opacity=\"0.3\"></path>\r\n <path\r\n d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\"></path>\r\n </g>\r\n </svg></span></span></div>\r\n <div class=\"mb-0 me-2\" style=\"text-align: left;\">\r\n <div class=\"alert-title\">{{ item._source.title }}</div>\r\n <div class=\"alt-desc\">{{ item._source.description }}</div>\r\n </div>\r\n </div><span class=\"badge badge-light fs-9\">{{ item._source.date|customDateFormat }}</span>\r\n </div>\r\n </div>\r\n <div class=\"text-center border-top\">\r\n <a (click)=\"viewAll('alerts')\" class=\"btn btn-color-gray-600 btn-active-color-primary my-2\">\r\n View All\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"w-450px position-fixed end-0 bottom-0 transition\">\r\n <div class=\"mb-4\" *ngFor=\"let item of pushNotificationList;let i = index\">\r\n <div class=\"alertbg card\" *ngIf=\"item._score\" @fadeIn @fadeOut>\r\n <div class=\"row m-2\">\r\n <div class=\"col-1 align-items-start mt-1\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12254_112653)\">\r\n <path\r\n d=\"M9.99935 13.3334V10M9.99935 6.66669H10.0077M18.3327 10C18.3327 14.6024 14.6017 18.3334 9.99935 18.3334C5.39698 18.3334 1.66602 14.6024 1.66602 10C1.66602 5.39765 5.39698 1.66669 9.99935 1.66669C14.6017 1.66669 18.3327 5.39765 18.3327 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12254_112653\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"col-10 align-items-start\">\r\n <span class=\"alert-title\">\r\n Notification\r\n </span>\r\n <div>\r\n {{item._source.description}}\r\n </div>\r\n </div>\r\n <div class=\"col-1 align-items-start cursor-pointer\" (click)=\"notificationPushUpdate(item)\">\r\n <span><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"d-flex my-2\" style=\"justify-content: space-around;\">\r\n <div [ngClass]=\"button.redirectionUrl !== 'remind' ? '' : 'mt-2'\" *ngFor=\"let button of item._source?.alertCta\">\r\n <button *ngIf=\"button.redirectionUrl !== 'remind'\" (click)=\"updateNotification(item,button.redirectionUrl)\"\r\n type=\"button\" tabindex=\"0\" class=\"btn btn-sm btn-primary mx-4 ng-star-inserted w-100\"\r\n style=\"white-space: nowrap;\"><span class=\"submit\">{{ button.buttonName }} </span></button>\r\n <span *ngIf=\"button.redirectionUrl === 'remind'\" (click)=\"updateNotification(item,'')\"\r\n class=\"text-primary mx-6 remindlatertext cursor-pointer\">{{ button.buttonName }} </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".nav-line-tabs .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;border-bottom:none!important;width:100%!important}.nav-line-tabs.nav-line-tabs-2x{background:var(--Gray-50, #F9FAFB)!important;padding:6px!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important}.title-name{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.title-desc{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.title-notify{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-weight:500!important;line-height:30px}.alert-title{color:var(--Gray-900, #101828);font-size:14px;font-style:normal;font-weight:600;line-height:28px;text-align:left}.alt-desc{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px;width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alertscroll{max-height:300px;overflow-y:scroll}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.notificationAlign{color:var(--Gray-900, #101828);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:24px}.noNotification{color:var(--Gray-500, #667085);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.border-value{padding:16px!important;border-radius:12px!important;border:1.095px solid var(--Gray-200, #EAECF0)!important;background:var(--White, #FFF)!important}.buttonsec{border-radius:8px;margin:0;background:var(--gray-50, white);width:100%;height:fit-content;padding:5px}.submenu{background:var(--gray-50, white)!important;color:var(--gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;outline:none!important}.text-primary{color:var(--primary-700, #009BF3)!important;font-size:16px;font-weight:500}.alertdot{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}.remindlatertext{color:var(--Primary-700, #009BF3);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline;text-transform:capitalize}.submit{font-size:16px;font-weight:600;line-height:24px;text-align:left;color:#fff}.alerticon{margin-bottom:35%!important}.alertbg{gap:0px;opacity:0px;border-left:7px solid var(--Primary-500, #33B5FF);border-top-left-radius:15px;border-bottom-left-radius:15px}.notificationMenu{display:block!important;z-index:105;position:fixed;inset:0 0 auto auto;margin:0;transform:translate3d(-30.2222px,72.8889px,0)}.transition{transition:5s ease-in!important;right:-450px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.CustomDateFormatPipe, name: "customDateFormat" }], animations: [
225
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: NavbarComponent, selector: "lib-navbar", inputs: { appHeaderDefaulMenuDisplay: "appHeaderDefaulMenuDisplay", isRtl: "isRtl" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<!--begin::Notifications-->\r\n<div class=\"app-navbar-item\" [ngClass]=\"itemClass\" *ngIf=\"showNotification\">\r\n <!--begin::Menu- wrapper-->\r\n <div [ngClass]=\"btnClass\" (click)=\"showDropdown = !showDropdown\">\r\n <span *ngIf=\"!notification.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"24\" viewBox=\"0 0 20 24\" fill=\"none\">\r\n <path\r\n d=\"M10.6779 2.4V3.00688L11.2715 3.1335C14.1674 3.75125 16.3919 6.45842 16.3919 9.75V10.6313C16.3919 13.0131 17.2249 15.3087 18.7338 17.0963L18.7352 17.0979L19.0636 17.4846C19.0639 17.485 19.0642 17.4853 19.0645 17.4857C19.2557 17.7136 19.3048 18.0393 19.185 18.3174C19.0641 18.5983 18.8153 18.75 18.5704 18.75H1.42848C1.1825 18.75 0.933931 18.5974 0.815017 18.3193C0.695108 18.0388 0.744592 17.7123 0.933996 17.4853C0.934445 17.4848 0.934894 17.4843 0.935344 17.4837L1.26312 17.0985L1.26473 17.0966C2.77599 15.3086 3.60697 13.0127 3.60697 10.6313V9.75C3.60697 6.45434 5.79488 3.75145 8.72559 3.13388L9.32094 3.00843V2.4V1.5C9.32094 1.05052 9.65806 0.75 9.99944 0.75C10.3408 0.75 10.6779 1.05052 10.6779 1.5V2.4ZM9.99944 23.25C9.44983 23.25 8.91726 23.023 8.52034 22.6062C8.29649 22.3712 8.12457 22.0708 8.01769 21.75H11.9812C11.8743 22.0708 11.7024 22.3712 11.4785 22.6062C11.0856 23.0188 10.5146 23.25 9.99944 23.25Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.5\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"notification.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"24\" viewBox=\"0 0 20 24\" fill=\"none\">\r\n <path\r\n d=\"M11.4279 2.4V1.5C11.4279 0.671719 10.7896 0 9.99944 0C9.2093 0 8.57094 0.671719 8.57094 1.5V2.4C5.27202 3.09516 2.85697 6.12188 2.85697 9.75V10.6313C2.85697 12.8391 2.08648 14.9625 0.691915 16.6125L0.360862 17.0016C-0.0128805 17.4469 -0.10505 18.075 0.125384 18.6141C0.355818 19.1531 0.866013 19.5 1.42848 19.5H18.5704C19.1329 19.5 19.6418 19.1531 19.8739 18.6141C20.106 18.075 20.0123 17.4469 19.6373 17.0016L19.307 16.6125C17.9142 14.9625 17.1419 12.8391 17.1419 10.6313V9.75C17.1419 9.39947 17.119 9.05455 17.0746 8.71681C16.5845 8.8999 16.054 9 15.5 9C13.0147 9 11 6.98528 11 4.5C11 3.74877 11.1841 3.04054 11.5096 2.41795C11.4824 2.4118 11.4552 2.40582 11.4279 2.4Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M7.97723 23.1234C8.51291 23.6859 9.24055 24 9.99944 24C10.7181 24 11.486 23.6859 12.0216 23.1234C12.5573 22.5609 12.8564 21.7547 12.8564 21H7.14245C7.14245 21.7547 7.44154 22.5609 7.97723 23.1234Z\"\r\n fill=\"#00A3FF\" />\r\n <circle cx=\"16\" cy=\"4\" r=\"4\" fill=\"#F04438\" />\r\n </svg>\r\n </span>\r\n <div class=\"menu menu-sub menu-sub-dropdown menu-column w-450px w-lg-425px notificationMenu\" *ngIf=\"showDropdown\">\r\n <div class=\"card topbar\">\r\n <div class=\"card-header\">\r\n <h3 class=\"title-notify mt-10 mb-6\">\r\n Notifications\r\n </h3>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData && !loading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/noNotification.svg\" alt=\"\">\r\n <span class=\"notificationAlign mt-10\">No New Notification</span>\r\n <span class=\"noNotification mt-2\">Any new notification will be shown here.</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alertscroll\" *ngIf=\"notification.length\">\r\n <div *ngFor=\"let item of notification\" class=\"mh-200px ng-star-inserted\" style=\"overflow: auto;\">\r\n <div class=\"d-flex flex-stack py-3 mx-4 ng-star-inserted\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px me-4\"><span class=\"symbol-label bg-light-primary\"><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"></span><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"\r\n version=\"1.1\" class=\"ng-star-inserted\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon points=\"0 0 24 0 24 24 0 24\"></polygon>\r\n <path\r\n d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\" opacity=\"0.3\"></path>\r\n <path\r\n d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\"></path>\r\n </g>\r\n </svg></span></span></div>\r\n <div class=\"mb-0 me-2\" style=\"text-align: left;\">\r\n <div class=\"alert-title\">{{ item._source.title }}</div>\r\n <div class=\"alt-desc\">{{ item._source.description }}</div>\r\n </div>\r\n </div><span class=\"badge badge-light fs-9\">{{ item._source.date|customDateFormat }}</span>\r\n </div>\r\n </div>\r\n <div class=\"text-center border-top\">\r\n <a (click)=\"viewAll('alerts')\" class=\"btn btn-color-gray-600 btn-active-color-primary my-2\">\r\n View All\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"w-450px position-fixed end-0 bottom-0 transition\">\r\n <div class=\"mb-4\" *ngFor=\"let item of pushNotificationList;let i = index\">\r\n <div class=\"alertbg card\" *ngIf=\"item._score\" @fadeIn @fadeOut>\r\n <div class=\"row m-2\">\r\n <div class=\"col-1 align-items-start mt-1\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12254_112653)\">\r\n <path\r\n d=\"M9.99935 13.3334V10M9.99935 6.66669H10.0077M18.3327 10C18.3327 14.6024 14.6017 18.3334 9.99935 18.3334C5.39698 18.3334 1.66602 14.6024 1.66602 10C1.66602 5.39765 5.39698 1.66669 9.99935 1.66669C14.6017 1.66669 18.3327 5.39765 18.3327 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12254_112653\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"col-10 align-items-start\">\r\n <span class=\"alert-title\">\r\n Notification\r\n </span>\r\n <div>\r\n {{item._source.description}}\r\n </div>\r\n </div>\r\n <div class=\"col-1 align-items-start cursor-pointer\" (click)=\"notificationPushUpdate(item,'')\">\r\n <span><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"d-flex my-2\" style=\"justify-content: space-around;\">\r\n <div [ngClass]=\"button.redirectionUrl !== 'remind' ? '' : 'mt-2'\" *ngFor=\"let button of item._source?.alertCta\">\r\n <button *ngIf=\"button.redirectionUrl !== 'remind'\" (click)=\"notificationPushUpdate(item,button)\"\r\n type=\"button\" tabindex=\"0\" class=\"btn btn-sm btn-primary mx-4 ng-star-inserted w-100\"\r\n style=\"white-space: nowrap;\"><span class=\"submit\">{{ button.buttonName }} </span></button>\r\n <span *ngIf=\"button.redirectionUrl === 'remind'\" (click)=\"notificationPushUpdate(item,button)\"\r\n class=\"text-primary mx-6 remindlatertext cursor-pointer\">{{ button.buttonName }} </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".nav-line-tabs .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;border-bottom:none!important;width:100%!important}.nav-line-tabs.nav-line-tabs-2x{background:var(--Gray-50, #F9FAFB)!important;padding:6px!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important}.title-name{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.title-desc{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.title-notify{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-weight:500!important;line-height:30px}.alert-title{color:var(--Gray-900, #101828);font-size:14px;font-style:normal;font-weight:600;line-height:28px;text-align:left}.alt-desc{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px;width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alertscroll{max-height:300px;overflow-y:scroll}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.notificationAlign{color:var(--Gray-900, #101828);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:24px}.noNotification{color:var(--Gray-500, #667085);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.border-value{padding:16px!important;border-radius:12px!important;border:1.095px solid var(--Gray-200, #EAECF0)!important;background:var(--White, #FFF)!important}.buttonsec{border-radius:8px;margin:0;background:var(--gray-50, white);width:100%;height:fit-content;padding:5px}.submenu{background:var(--gray-50, white)!important;color:var(--gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;outline:none!important}.text-primary{color:var(--primary-700, #009BF3)!important;font-size:16px;font-weight:500}.alertdot{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}.remindlatertext{color:var(--Primary-700, #009BF3);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline;text-transform:capitalize}.submit{font-size:16px;font-weight:600;line-height:24px;text-align:left;color:#fff}.alerticon{margin-bottom:35%!important}.alertbg{gap:0px;opacity:0px;border-left:7px solid var(--Primary-500, #33B5FF);border-top-left-radius:15px;border-bottom-left-radius:15px}.notificationMenu{display:block!important;z-index:105;position:fixed;inset:0 0 auto auto;margin:0;transform:translate3d(-30.2222px,72.8889px,0)}.transition{transition:5s ease-in!important;right:-450px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.CustomDateFormatPipe, name: "customDateFormat" }], animations: [
166
226
  fadeIn,
167
227
  fadeOut
168
228
  ] });
@@ -172,7 +232,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
172
232
  args: [{ selector: 'lib-navbar', animations: [
173
233
  fadeIn,
174
234
  fadeOut
175
- ], template: "<!--begin::Notifications-->\r\n<div class=\"app-navbar-item\" [ngClass]=\"itemClass\" *ngIf=\"showNotification\">\r\n <!--begin::Menu- wrapper-->\r\n <div [ngClass]=\"btnClass\" (click)=\"showDropdown = !showDropdown\">\r\n <span *ngIf=\"!notification.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"24\" viewBox=\"0 0 20 24\" fill=\"none\">\r\n <path\r\n d=\"M10.6779 2.4V3.00688L11.2715 3.1335C14.1674 3.75125 16.3919 6.45842 16.3919 9.75V10.6313C16.3919 13.0131 17.2249 15.3087 18.7338 17.0963L18.7352 17.0979L19.0636 17.4846C19.0639 17.485 19.0642 17.4853 19.0645 17.4857C19.2557 17.7136 19.3048 18.0393 19.185 18.3174C19.0641 18.5983 18.8153 18.75 18.5704 18.75H1.42848C1.1825 18.75 0.933931 18.5974 0.815017 18.3193C0.695108 18.0388 0.744592 17.7123 0.933996 17.4853C0.934445 17.4848 0.934894 17.4843 0.935344 17.4837L1.26312 17.0985L1.26473 17.0966C2.77599 15.3086 3.60697 13.0127 3.60697 10.6313V9.75C3.60697 6.45434 5.79488 3.75145 8.72559 3.13388L9.32094 3.00843V2.4V1.5C9.32094 1.05052 9.65806 0.75 9.99944 0.75C10.3408 0.75 10.6779 1.05052 10.6779 1.5V2.4ZM9.99944 23.25C9.44983 23.25 8.91726 23.023 8.52034 22.6062C8.29649 22.3712 8.12457 22.0708 8.01769 21.75H11.9812C11.8743 22.0708 11.7024 22.3712 11.4785 22.6062C11.0856 23.0188 10.5146 23.25 9.99944 23.25Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.5\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"notification.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"24\" viewBox=\"0 0 20 24\" fill=\"none\">\r\n <path\r\n d=\"M11.4279 2.4V1.5C11.4279 0.671719 10.7896 0 9.99944 0C9.2093 0 8.57094 0.671719 8.57094 1.5V2.4C5.27202 3.09516 2.85697 6.12188 2.85697 9.75V10.6313C2.85697 12.8391 2.08648 14.9625 0.691915 16.6125L0.360862 17.0016C-0.0128805 17.4469 -0.10505 18.075 0.125384 18.6141C0.355818 19.1531 0.866013 19.5 1.42848 19.5H18.5704C19.1329 19.5 19.6418 19.1531 19.8739 18.6141C20.106 18.075 20.0123 17.4469 19.6373 17.0016L19.307 16.6125C17.9142 14.9625 17.1419 12.8391 17.1419 10.6313V9.75C17.1419 9.39947 17.119 9.05455 17.0746 8.71681C16.5845 8.8999 16.054 9 15.5 9C13.0147 9 11 6.98528 11 4.5C11 3.74877 11.1841 3.04054 11.5096 2.41795C11.4824 2.4118 11.4552 2.40582 11.4279 2.4Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M7.97723 23.1234C8.51291 23.6859 9.24055 24 9.99944 24C10.7181 24 11.486 23.6859 12.0216 23.1234C12.5573 22.5609 12.8564 21.7547 12.8564 21H7.14245C7.14245 21.7547 7.44154 22.5609 7.97723 23.1234Z\"\r\n fill=\"#00A3FF\" />\r\n <circle cx=\"16\" cy=\"4\" r=\"4\" fill=\"#F04438\" />\r\n </svg>\r\n </span>\r\n <div class=\"menu menu-sub menu-sub-dropdown menu-column w-450px w-lg-425px notificationMenu\" *ngIf=\"showDropdown\">\r\n <div class=\"card topbar\">\r\n <div class=\"card-header\">\r\n <h3 class=\"title-notify mt-10 mb-6\">\r\n Notifications\r\n </h3>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData && !loading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/noNotification.svg\" alt=\"\">\r\n <span class=\"notificationAlign mt-10\">No New Notification</span>\r\n <span class=\"noNotification mt-2\">Any new notification will be shown here.</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alertscroll\" *ngIf=\"notification.length\">\r\n <div *ngFor=\"let item of notification\" class=\"mh-200px ng-star-inserted\" style=\"overflow: auto;\">\r\n <div class=\"d-flex flex-stack py-3 mx-4 ng-star-inserted\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px me-4\"><span class=\"symbol-label bg-light-primary\"><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"></span><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"\r\n version=\"1.1\" class=\"ng-star-inserted\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon points=\"0 0 24 0 24 24 0 24\"></polygon>\r\n <path\r\n d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\" opacity=\"0.3\"></path>\r\n <path\r\n d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\"></path>\r\n </g>\r\n </svg></span></span></div>\r\n <div class=\"mb-0 me-2\" style=\"text-align: left;\">\r\n <div class=\"alert-title\">{{ item._source.title }}</div>\r\n <div class=\"alt-desc\">{{ item._source.description }}</div>\r\n </div>\r\n </div><span class=\"badge badge-light fs-9\">{{ item._source.date|customDateFormat }}</span>\r\n </div>\r\n </div>\r\n <div class=\"text-center border-top\">\r\n <a (click)=\"viewAll('alerts')\" class=\"btn btn-color-gray-600 btn-active-color-primary my-2\">\r\n View All\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"w-450px position-fixed end-0 bottom-0 transition\">\r\n <div class=\"mb-4\" *ngFor=\"let item of pushNotificationList;let i = index\">\r\n <div class=\"alertbg card\" *ngIf=\"item._score\" @fadeIn @fadeOut>\r\n <div class=\"row m-2\">\r\n <div class=\"col-1 align-items-start mt-1\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12254_112653)\">\r\n <path\r\n d=\"M9.99935 13.3334V10M9.99935 6.66669H10.0077M18.3327 10C18.3327 14.6024 14.6017 18.3334 9.99935 18.3334C5.39698 18.3334 1.66602 14.6024 1.66602 10C1.66602 5.39765 5.39698 1.66669 9.99935 1.66669C14.6017 1.66669 18.3327 5.39765 18.3327 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12254_112653\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"col-10 align-items-start\">\r\n <span class=\"alert-title\">\r\n Notification\r\n </span>\r\n <div>\r\n {{item._source.description}}\r\n </div>\r\n </div>\r\n <div class=\"col-1 align-items-start cursor-pointer\" (click)=\"notificationPushUpdate(item)\">\r\n <span><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"d-flex my-2\" style=\"justify-content: space-around;\">\r\n <div [ngClass]=\"button.redirectionUrl !== 'remind' ? '' : 'mt-2'\" *ngFor=\"let button of item._source?.alertCta\">\r\n <button *ngIf=\"button.redirectionUrl !== 'remind'\" (click)=\"updateNotification(item,button.redirectionUrl)\"\r\n type=\"button\" tabindex=\"0\" class=\"btn btn-sm btn-primary mx-4 ng-star-inserted w-100\"\r\n style=\"white-space: nowrap;\"><span class=\"submit\">{{ button.buttonName }} </span></button>\r\n <span *ngIf=\"button.redirectionUrl === 'remind'\" (click)=\"updateNotification(item,'')\"\r\n class=\"text-primary mx-6 remindlatertext cursor-pointer\">{{ button.buttonName }} </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".nav-line-tabs .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;border-bottom:none!important;width:100%!important}.nav-line-tabs.nav-line-tabs-2x{background:var(--Gray-50, #F9FAFB)!important;padding:6px!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important}.title-name{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.title-desc{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.title-notify{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-weight:500!important;line-height:30px}.alert-title{color:var(--Gray-900, #101828);font-size:14px;font-style:normal;font-weight:600;line-height:28px;text-align:left}.alt-desc{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px;width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alertscroll{max-height:300px;overflow-y:scroll}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.notificationAlign{color:var(--Gray-900, #101828);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:24px}.noNotification{color:var(--Gray-500, #667085);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.border-value{padding:16px!important;border-radius:12px!important;border:1.095px solid var(--Gray-200, #EAECF0)!important;background:var(--White, #FFF)!important}.buttonsec{border-radius:8px;margin:0;background:var(--gray-50, white);width:100%;height:fit-content;padding:5px}.submenu{background:var(--gray-50, white)!important;color:var(--gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;outline:none!important}.text-primary{color:var(--primary-700, #009BF3)!important;font-size:16px;font-weight:500}.alertdot{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}.remindlatertext{color:var(--Primary-700, #009BF3);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline;text-transform:capitalize}.submit{font-size:16px;font-weight:600;line-height:24px;text-align:left;color:#fff}.alerticon{margin-bottom:35%!important}.alertbg{gap:0px;opacity:0px;border-left:7px solid var(--Primary-500, #33B5FF);border-top-left-radius:15px;border-bottom-left-radius:15px}.notificationMenu{display:block!important;z-index:105;position:fixed;inset:0 0 auto auto;margin:0;transform:translate3d(-30.2222px,72.8889px,0)}.transition{transition:5s ease-in!important;right:-450px}\n"] }]
235
+ ], template: "<!--begin::Notifications-->\r\n<div class=\"app-navbar-item\" [ngClass]=\"itemClass\" *ngIf=\"showNotification\">\r\n <!--begin::Menu- wrapper-->\r\n <div [ngClass]=\"btnClass\" (click)=\"showDropdown = !showDropdown\">\r\n <span *ngIf=\"!notification.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"24\" viewBox=\"0 0 20 24\" fill=\"none\">\r\n <path\r\n d=\"M10.6779 2.4V3.00688L11.2715 3.1335C14.1674 3.75125 16.3919 6.45842 16.3919 9.75V10.6313C16.3919 13.0131 17.2249 15.3087 18.7338 17.0963L18.7352 17.0979L19.0636 17.4846C19.0639 17.485 19.0642 17.4853 19.0645 17.4857C19.2557 17.7136 19.3048 18.0393 19.185 18.3174C19.0641 18.5983 18.8153 18.75 18.5704 18.75H1.42848C1.1825 18.75 0.933931 18.5974 0.815017 18.3193C0.695108 18.0388 0.744592 17.7123 0.933996 17.4853C0.934445 17.4848 0.934894 17.4843 0.935344 17.4837L1.26312 17.0985L1.26473 17.0966C2.77599 15.3086 3.60697 13.0127 3.60697 10.6313V9.75C3.60697 6.45434 5.79488 3.75145 8.72559 3.13388L9.32094 3.00843V2.4V1.5C9.32094 1.05052 9.65806 0.75 9.99944 0.75C10.3408 0.75 10.6779 1.05052 10.6779 1.5V2.4ZM9.99944 23.25C9.44983 23.25 8.91726 23.023 8.52034 22.6062C8.29649 22.3712 8.12457 22.0708 8.01769 21.75H11.9812C11.8743 22.0708 11.7024 22.3712 11.4785 22.6062C11.0856 23.0188 10.5146 23.25 9.99944 23.25Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.5\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"notification.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"24\" viewBox=\"0 0 20 24\" fill=\"none\">\r\n <path\r\n d=\"M11.4279 2.4V1.5C11.4279 0.671719 10.7896 0 9.99944 0C9.2093 0 8.57094 0.671719 8.57094 1.5V2.4C5.27202 3.09516 2.85697 6.12188 2.85697 9.75V10.6313C2.85697 12.8391 2.08648 14.9625 0.691915 16.6125L0.360862 17.0016C-0.0128805 17.4469 -0.10505 18.075 0.125384 18.6141C0.355818 19.1531 0.866013 19.5 1.42848 19.5H18.5704C19.1329 19.5 19.6418 19.1531 19.8739 18.6141C20.106 18.075 20.0123 17.4469 19.6373 17.0016L19.307 16.6125C17.9142 14.9625 17.1419 12.8391 17.1419 10.6313V9.75C17.1419 9.39947 17.119 9.05455 17.0746 8.71681C16.5845 8.8999 16.054 9 15.5 9C13.0147 9 11 6.98528 11 4.5C11 3.74877 11.1841 3.04054 11.5096 2.41795C11.4824 2.4118 11.4552 2.40582 11.4279 2.4Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M7.97723 23.1234C8.51291 23.6859 9.24055 24 9.99944 24C10.7181 24 11.486 23.6859 12.0216 23.1234C12.5573 22.5609 12.8564 21.7547 12.8564 21H7.14245C7.14245 21.7547 7.44154 22.5609 7.97723 23.1234Z\"\r\n fill=\"#00A3FF\" />\r\n <circle cx=\"16\" cy=\"4\" r=\"4\" fill=\"#F04438\" />\r\n </svg>\r\n </span>\r\n <div class=\"menu menu-sub menu-sub-dropdown menu-column w-450px w-lg-425px notificationMenu\" *ngIf=\"showDropdown\">\r\n <div class=\"card topbar\">\r\n <div class=\"card-header\">\r\n <h3 class=\"title-notify mt-10 mb-6\">\r\n Notifications\r\n </h3>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData && !loading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/noNotification.svg\" alt=\"\">\r\n <span class=\"notificationAlign mt-10\">No New Notification</span>\r\n <span class=\"noNotification mt-2\">Any new notification will be shown here.</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alertscroll\" *ngIf=\"notification.length\">\r\n <div *ngFor=\"let item of notification\" class=\"mh-200px ng-star-inserted\" style=\"overflow: auto;\">\r\n <div class=\"d-flex flex-stack py-3 mx-4 ng-star-inserted\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px me-4\"><span class=\"symbol-label bg-light-primary\"><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"></span><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"\r\n version=\"1.1\" class=\"ng-star-inserted\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon points=\"0 0 24 0 24 24 0 24\"></polygon>\r\n <path\r\n d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\" opacity=\"0.3\"></path>\r\n <path\r\n d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\"></path>\r\n </g>\r\n </svg></span></span></div>\r\n <div class=\"mb-0 me-2\" style=\"text-align: left;\">\r\n <div class=\"alert-title\">{{ item._source.title }}</div>\r\n <div class=\"alt-desc\">{{ item._source.description }}</div>\r\n </div>\r\n </div><span class=\"badge badge-light fs-9\">{{ item._source.date|customDateFormat }}</span>\r\n </div>\r\n </div>\r\n <div class=\"text-center border-top\">\r\n <a (click)=\"viewAll('alerts')\" class=\"btn btn-color-gray-600 btn-active-color-primary my-2\">\r\n View All\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"w-450px position-fixed end-0 bottom-0 transition\">\r\n <div class=\"mb-4\" *ngFor=\"let item of pushNotificationList;let i = index\">\r\n <div class=\"alertbg card\" *ngIf=\"item._score\" @fadeIn @fadeOut>\r\n <div class=\"row m-2\">\r\n <div class=\"col-1 align-items-start mt-1\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12254_112653)\">\r\n <path\r\n d=\"M9.99935 13.3334V10M9.99935 6.66669H10.0077M18.3327 10C18.3327 14.6024 14.6017 18.3334 9.99935 18.3334C5.39698 18.3334 1.66602 14.6024 1.66602 10C1.66602 5.39765 5.39698 1.66669 9.99935 1.66669C14.6017 1.66669 18.3327 5.39765 18.3327 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12254_112653\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"col-10 align-items-start\">\r\n <span class=\"alert-title\">\r\n Notification\r\n </span>\r\n <div>\r\n {{item._source.description}}\r\n </div>\r\n </div>\r\n <div class=\"col-1 align-items-start cursor-pointer\" (click)=\"notificationPushUpdate(item,'')\">\r\n <span><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"d-flex my-2\" style=\"justify-content: space-around;\">\r\n <div [ngClass]=\"button.redirectionUrl !== 'remind' ? '' : 'mt-2'\" *ngFor=\"let button of item._source?.alertCta\">\r\n <button *ngIf=\"button.redirectionUrl !== 'remind'\" (click)=\"notificationPushUpdate(item,button)\"\r\n type=\"button\" tabindex=\"0\" class=\"btn btn-sm btn-primary mx-4 ng-star-inserted w-100\"\r\n style=\"white-space: nowrap;\"><span class=\"submit\">{{ button.buttonName }} </span></button>\r\n <span *ngIf=\"button.redirectionUrl === 'remind'\" (click)=\"notificationPushUpdate(item,button)\"\r\n class=\"text-primary mx-6 remindlatertext cursor-pointer\">{{ button.buttonName }} </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".nav-line-tabs .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;border-bottom:none!important;width:100%!important}.nav-line-tabs.nav-line-tabs-2x{background:var(--Gray-50, #F9FAFB)!important;padding:6px!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important}.title-name{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.title-desc{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.title-notify{color:var(--Gray-900, #101828)!important;font-size:20px!important;font-weight:500!important;line-height:30px}.alert-title{color:var(--Gray-900, #101828);font-size:14px;font-style:normal;font-weight:600;line-height:28px;text-align:left}.alt-desc{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px;width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alertscroll{max-height:300px;overflow-y:scroll}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.notificationAlign{color:var(--Gray-900, #101828);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:24px}.noNotification{color:var(--Gray-500, #667085);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.border-value{padding:16px!important;border-radius:12px!important;border:1.095px solid var(--Gray-200, #EAECF0)!important;background:var(--White, #FFF)!important}.buttonsec{border-radius:8px;margin:0;background:var(--gray-50, white);width:100%;height:fit-content;padding:5px}.submenu{background:var(--gray-50, white)!important;color:var(--gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;outline:none!important}.text-primary{color:var(--primary-700, #009BF3)!important;font-size:16px;font-weight:500}.alertdot{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}.remindlatertext{color:var(--Primary-700, #009BF3);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline;text-transform:capitalize}.submit{font-size:16px;font-weight:600;line-height:24px;text-align:left;color:#fff}.alerticon{margin-bottom:35%!important}.alertbg{gap:0px;opacity:0px;border-left:7px solid var(--Primary-500, #33B5FF);border-top-left-radius:15px;border-bottom-left-radius:15px}.notificationMenu{display:block!important;z-index:105;position:fixed;inset:0 0 auto auto;margin:0;transform:translate3d(-30.2222px,72.8889px,0)}.transition{transition:5s ease-in!important;right:-450px}\n"] }]
176
236
  }], ctorParameters: () => [{ type: i1.NotificationService }, { type: i2.Router }, { type: i3.ToastService }, { type: i0.ChangeDetectorRef }], propDecorators: { appHeaderDefaulMenuDisplay: [{
177
237
  type: Input
178
238
  }], isRtl: [{
@@ -181,4 +241,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
181
241
  type: HostListener,
182
242
  args: ['document:click', ['$event']]
183
243
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9oZWFkZXIvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hcHAtc2hhcmVkL3NyYy9saWIvbW9kdWxlcy9sYXlvdXQvaGVhZGVyL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUFlLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQXdCLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxPQUFPLEVBQVMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQUNqRixNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFO0lBQzNDLEtBQUssQ0FBQztRQUNKLE9BQU8sRUFBRSxDQUFDO1FBQ1YsU0FBUyxFQUFFLGtCQUFrQjtLQUM5QixDQUFDO0lBQ0YsT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUM7UUFDMUIsT0FBTyxFQUFFLENBQUM7S0FDWCxDQUFDLENBQUM7Q0FDSixDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFO0lBQ3RDLEtBQUssQ0FBQztRQUNKLE9BQU8sRUFBRSxDQUFDO1FBQ1YsU0FBUyxFQUFFLG1CQUFtQjtLQUMvQixDQUFDO0lBQ0Ys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R0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFHeEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFFMUIsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hCLElBQUcsR0FBRyxJQUFJLEVBQUUsRUFBRTtvQkFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDaEM7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUdELE9BQU8sQ0FBRSxLQUFpQjtRQUN4QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUMzQyxJQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUMzQjtJQUNILENBQUM7d0dBMUlVLGVBQWU7NEZBQWYsZUFBZSxzTUM1QzVCLHloVEFnSkEsa3BIRDFHYztZQUNWLE1BQU07WUFDTixPQUFPO1NBRVI7OzRGQUVVLGVBQWU7a0JBVjNCLFNBQVM7K0JBQ0UsWUFBWSxjQUdWO3dCQUNWLE1BQU07d0JBQ04sT0FBTztxQkFFUjt3S0FHUSwwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQW1JTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJvdXRlcixBY3RpdmF0ZWRSb3V0ZSxOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5jb25zdCBlbnRlclRyYW5zaXRpb24gPSB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgc3R5bGUoe1xyXG4gICAgb3BhY2l0eTogMCxcclxuICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoNTBweCknXHJcbiAgfSksXHJcbiAgYW5pbWF0ZSgnMXMgZWFzZS1pbicsIHN0eWxlKHtcclxuICAgIG9wYWNpdHk6IDFcclxuICB9KSlcclxuXSk7XHJcbiBcclxuY29uc3QgbGVhdmVUcmFucyA9IHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICBzdHlsZSh7XHJcbiAgICBvcGFjaXR5OiAxLFxyXG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtNTBweCknXHJcbiAgfSksXHJcbiAgYW5pbWF0ZSgnMXMgZWFzZS1vdXQnLCBzdHlsZSh7XHJcbiAgICBvcGFjaXR5OiAwLFxyXG4gIH0pKVxyXG5dKVxyXG4gXHJcbmNvbnN0IGZhZGVJbiA9IHRyaWdnZXIoJ2ZhZGVJbicsIFtcclxuICBlbnRlclRyYW5zaXRpb25cclxuXSk7XHJcbiBcclxuY29uc3QgZmFkZU91dCA9IHRyaWdnZXIoJ2ZhZGVPdXQnLCBbXHJcbiAgbGVhdmVUcmFuc1xyXG5dKVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1uYXZiYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZiYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25hdmJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIGZhZGVJbixcclxuICAgIGZhZGVPdXRcclxuXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2YmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgYXBwSGVhZGVyRGVmYXVsTWVudURpc3BsYXk6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaXNSdGw6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGl0ZW1DbGFzczogc3RyaW5nID0gJ21zLTEgbXMtbGctMyc7XHJcbiAgYnRuQ2xhc3M6IHN0cmluZyA9ICdidG4gYnRuLWljb24gYnRuLWN1c3RvbSBidG4taWNvbi1tdXRlZCBidG4tYWN0aXZlLWxpZ2h0IGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeSB3LTM1cHggaC0zNXB4IHctbWQtNDBweCBoLW1kLTQwcHgnO1xyXG4gIGJ0bkNsYXNzMTogc3RyaW5nO1xyXG4gIHVzZXJBdmF0YXJDbGFzczogc3RyaW5nID0gJ3N5bWJvbC0zNXB4IHN5bWJvbC1tZC00MHB4JztcclxuICBidG5JY29uQ2xhc3M6IHN0cmluZyA9ICdmcy0yIGZzLW1kLTEnO1xyXG4gIG5vdGlmaWNhdGlvblJlY2VpdmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbm90aWZpY2F0aW9uOmFueSA9IFtdO1xyXG4gIHB1c2hOb3RpZmljYXRpb25MaXN0OmFueSA9IFtdO1xyXG4gIGFjdGl2ZVRhYklkOnN0cmluZyA9ICdhbGVydHMnO1xyXG4gIGxvYWRpbmc6Ym9vbGVhbiA9IHRydWU7XHJcbiAgbm9EYXRhOmJvb2xlYW4gPSBmYWxzZTtcclxuICB1cmw6YW55O1xyXG4gIHNob3dOb3RpZmljYXRpb246Ym9vbGVhbiA9IHRydWU7XHJcbiAgc2hvd0Ryb3Bkb3duOmJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBub3RpZmljYXRpb25Ecm9wRG93bkNsYXNzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOk5vdGlmaWNhdGlvblNlcnZpY2UscHJpdmF0ZSByb3V0ZXI6Um91dGVyLHByaXZhdGUgdG9hc3Q6VG9hc3RTZXJ2aWNlLHByaXZhdGUgY2Q6Q2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIFxyXG4gIH1cclxuICBcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dOb3RpZmljYXRpb25JY29uKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2hvd05vdGlmaWNhdGlvbkljb24oKTtcclxuICAgXHJcbiAgfVxyXG4gXHJcbiAgc2hvd05vdGlmaWNhdGlvbkljb24gKCkge1xyXG4gICAgbGV0IHVybCA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpO1xyXG4gICAgaWYodXJsLmluY2x1ZGVzKCdub3RpZmljYXRpb25zJykpIHtcclxuICAgICAgdGhpcy5zaG93Tm90aWZpY2F0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93Tm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMubm90aWZpY2F0aW9uTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlVXNlckRyb3BEb3duKCkge1xyXG4gICAgdGhpcy5ub3RpZmljYXRpb25Ecm9wRG93bkNsYXNzID0gIXRoaXMubm90aWZpY2F0aW9uRHJvcERvd25DbGFzcztcclxuICB9XHJcbiAgc2V0QWN0aXZlVGFiSWQodGFiSWQ6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVUYWJJZCA9IHRhYklkO1xyXG4gIH1cclxuXHJcbiAgbm90aWZpY2F0aW9uTGlzdCgpIHtcclxuICAgIHRoaXMucHVzaE5vdGlmaWNhdGlvbkxpc3QgPSBbXTsgXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIGxpbWl0OiAxMCxcclxuICAgICAgb2Zmc2V0OiAxXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZXJ2aWNlLm5vdGlmaWNhdGlvbkxpc3QoZGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IHJlcy5kYXRhLnJlc3VsdC5zbGljZSgwLDUpO1xyXG4gICAgICAgICAgICB0aGlzLnB1c2hOb3RpZmljYXRpb25MaXN0ID0gcmVzLmRhdGEucmVzdWx0LmZpbHRlcigoaXRlbTphbnkpID0+IGl0ZW0uX3NvdXJjZS5zaG93UHVzaE5vdGlmaWNhdGlvbik7XHJcbiAgICAgICAgICAgIHRoaXMucHVzaE5vdGlmaWNhdGlvbkxpc3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaXRlbS5fc2NvcmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5fc2NvcmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uUHVzaFVwZGF0ZShpdGVtKTtcclxuICAgICAgICAgICAgICB9LCA2MDAwKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24gPSBbXTsgXHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24gPSBbXTsgXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgIG5vdGlmaWNhdGlvblB1c2hVcGRhdGUoZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2Uubm90aWZpY2F0aW9uUHVzaFVwZGF0ZShkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25MaXN0KCk7XHJcbiAgICAgICAgfSwxMDAwKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGhhbmRsZU5vdGlmaWNhdGlvbigpIHtcclxuICAgIHRoaXMuc2VydmljZS51cGRhdGVOb3RpZmljYXRpb25SZWNlaXZlZCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHZpZXdBbGwodHlwZTphbnkpe1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL25vdGlmaWNhdGlvbnMvYWxlcnRzJylcclxuICB9XHJcblxyXG4gIHVwZGF0ZU5vdGlmaWNhdGlvbihkYXRhOiBhbnksIHVybDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2Uubm90aWZpY2F0aW9uVXBkYXRlKGRhdGEuX2lkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KHJlcy5tZXNzYWdlKTtcclxuXHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25MaXN0KCk7XHJcblxyXG4gICAgICAgIH0sMTAwMCk7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYodXJsICE9ICcnKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uQ2xpY2sgKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZighdGFyZ2V0LmNsb3Nlc3QoJy5hcHAtbmF2YmFyJykpIHtcclxuICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPCEtLWJlZ2luOjpOb3RpZmljYXRpb25zLS0+XHJcbjxkaXYgY2xhc3M9XCJhcHAtbmF2YmFyLWl0ZW1cIiBbbmdDbGFzc109XCJpdGVtQ2xhc3NcIiAqbmdJZj1cInNob3dOb3RpZmljYXRpb25cIj5cclxuICA8IS0tYmVnaW46Ok1lbnUtIHdyYXBwZXItLT5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cImJ0bkNsYXNzXCIgKGNsaWNrKT1cInNob3dEcm9wZG93biA9ICFzaG93RHJvcGRvd25cIj5cclxuICAgIDxzcGFuICpuZ0lmPVwiIW5vdGlmaWNhdGlvbi5sZW5ndGhcIj5cclxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyMCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNMTAuNjc3OSAyLjRWMy4wMDY4OEwxMS4yNzE1IDMuMTMzNUMxNC4xNjc0IDMuNzUxMjUgMTYuMzkxOSA2LjQ1ODQyIDE2LjM5MTkgOS43NVYxMC42MzEzQzE2LjM5MTkgMTMuMDEzMSAxNy4yMjQ5IDE1LjMwODcgMTguNzMzOCAxNy4wOTYzTDE4LjczNTIgMTcuMDk3OUwxOS4wNjM2IDE3LjQ4NDZDMTkuMDYzOSAxNy40ODUgMTkuMDY0MiAxNy40ODUzIDE5LjA2NDUgMTcuNDg1N0MxOS4yNTU3IDE3LjcxMzYgMTkuMzA0OCAxOC4wMzkzIDE5LjE4NSAxOC4zMTc0QzE5LjA2NDEgMTguNTk4MyAxOC44MTUzIDE4Ljc1IDE4LjU3MDQgMTguNzVIMS40Mjg0OEMxLjE4MjUgMTguNzUgMC45MzM5MzEgMTguNTk3NCAwLjgxNTAxNyAxOC4zMTkzQzAuNjk1MTA4IDE4LjAzODggMC43NDQ1OTIgMTcuNzEyMyAwLjkzMzk5NiAxNy40ODUzQzAuOTM0NDQ1IDE3LjQ4NDggMC45MzQ4OTQgMTcuNDg0MyAwLjkzNTM0NCAxNy40ODM3TDEuMjYzMTIgMTcuMDk4NUwxLjI2NDczIDE3LjA5NjZDMi43NzU5OSAxNS4zMDg2IDMuNjA2OTcgMTMuMDEyNyAzLjYwNjk3IDEwLjYzMTNWOS43NUMzLjYwNjk3IDYuNDU0MzQgNS43OTQ4OCAzLjc1MTQ1IDguNzI1NTkgMy4xMzM4OEw5LjMyMDk0IDMuMDA4NDNWMi40VjEuNUM5LjMyMDk0IDEuMDUwNTIgOS42NTgwNiAwLjc1IDkuOTk5NDQgMC43NUMxMC4zNDA4IDAuNzUgMTAuNjc3OSAxLjA1MDUyIDEwLjY3NzkgMS41VjIuNFpNOS45OTk0NCAyMy4yNUM5LjQ0OTgzIDIzLjI1IDguOTE3MjYgMjMuMDIzIDguNTIwMzQgMjIuNjA2MkM4LjI5NjQ5IDIyLjM3MTIgOC4xMjQ1NyAyMi4wNzA4IDguMDE3NjkgMjEuNzVIMTEuOTgxMkMxMS44NzQzIDIyLjA3MDggMTEuNzAyNCAyMi4zNzEyIDExLjQ3ODUgMjIuNjA2MkMxMS4wODU2IDIzLjAxODggMTAuNTE0NiAyMy4yNSA5Ljk5OTQ0IDIzLjI1WlwiXHJcbiAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cIm5vdGlmaWNhdGlvbi5sZW5ndGhcIj5cclxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyMCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNMTEuNDI3OSAyLjRWMS41QzExLjQyNzkgMC42NzE3MTkgMTAuNzg5NiAwIDkuOTk5NDQgMEM5LjIwOTMgMCA4LjU3MDk0IDAuNjcxNzE5IDguNTcwOTQgMS41VjIuNEM1LjI3MjAyIDMuMDk1MTYgMi44NTY5NyA2LjEyMTg4IDIuODU2OTcgOS43NVYxMC42MzEzQzIuODU2OTcgMTIuODM5MSAyLjA4NjQ4IDE0Ljk2MjUgMC42OTE5MTUgMTYuNjEyNUwwLjM2MDg2MiAxNy4wMDE2Qy0wLjAxMjg4MDUgMTcuNDQ2OSAtMC4xMDUwNSAxOC4wNzUgMC4xMjUzODQgMTguNjE0MUMwLjM1NTgxOCAxOS4xNTMxIDAuODY2MDEzIDE5LjUgMS40Mjg0OCAxOS41SDE4LjU3MDRDMTkuMTMyOSAxOS41IDE5LjY0MTggMTkuMTUzMSAxOS44NzM5IDE4LjYxNDFDMjAuMTA2IDE4LjA3NSAyMC4wMTIzIDE3LjQ0NjkgMTkuNjM3MyAxNy4wMDE2TDE5LjMwNyAxNi42MTI1QzE3LjkxNDIgMTQuOTYyNSAxNy4xNDE5IDEyLjgzOTEgMTcuMTQxOSAxMC42MzEzVjkuNzVDMTcuMTQxOSA5LjM5OTQ3IDE3LjExOSA5LjA1NDU1IDE3LjA3NDYgOC43MTY4MUMxNi41ODQ1IDguODk5OSAxNi4wNTQgOSAxNS41IDlDMTMuMDE0NyA5IDExIDYuOTg1MjggMTEgNC41QzExIDMuNzQ4NzcgMTEuMTg0MSAzLjA0MDU0IDExLjUwOTYgMi40MTc5NUMxMS40ODI0IDIuNDExOCAxMS40NTUyIDIuNDA1ODIgMTEuNDI3OSAyLjRaXCJcclxuICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk03Ljk3NzIzIDIzLjEyMzRDOC41MTI5MSAyMy42ODU5IDkuMjQwNTUgMjQgOS45OTk0NCAyNEMxMC43MTgxIDI0IDExLjQ4NiAyMy42ODU5IDEyLjAyMTYgMjMuMTIzNEMxMi41NTczIDIyLjU2MDkgMTIuODU2NCAyMS43NTQ3IDEyLjg1NjQgMjFINy4xNDI0NUM3LjE0MjQ1IDIxLjc1NDcgNy40NDE1NCAyMi41NjA5IDcuOTc3MjMgMjMuMTIzNFpcIlxyXG4gICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxyXG4gICAgICAgIDxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiNFwiIHI9XCI0XCIgZmlsbD1cIiNGMDQ0MzhcIiAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51IG1lbnUtc3ViIG1lbnUtc3ViLWRyb3Bkb3duIG1lbnUtY29sdW1uIHctNDUwcHggdy1sZy00MjVweCBub3RpZmljYXRpb25NZW51XCIgKm5nSWY9XCJzaG93RHJvcGRvd25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgdG9wYmFyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJ0aXRsZS1ub3RpZnkgbXQtMTAgbWItNlwiPlxyXG4gICAgICAgICAgICBOb3RpZmljYXRpb25zXHJcbiAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub0RhdGEgJiYgIWxvYWRpbmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9ub05vdGlmaWNhdGlvbi5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm90aWZpY2F0aW9uQWxpZ24gbXQtMTBcIj5ObyBOZXcgTm90aWZpY2F0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub05vdGlmaWNhdGlvbiBtdC0yXCI+QW55IG5ldyBub3RpZmljYXRpb24gd2lsbCBiZSBzaG93biBoZXJlLjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0c2Nyb2xsXCIgKm5nSWY9XCJub3RpZmljYXRpb24ubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIG5vdGlmaWNhdGlvblwiIGNsYXNzPVwibWgtMjAwcHggbmctc3Rhci1pbnNlcnRlZFwiIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBweS0zIG14LTQgbmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IG1lLTRcIj48c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMiBzdmctaWNvbi1wcmltYXJ5XCI+PC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTIgc3ZnLWljb24tcHJpbWFyeVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1cIjEuMVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBzdHJva2U9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjAgMCAyNCAwIDI0IDI0IDAgMjRcIj48L3BvbHlnb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIsMTEgQzkuNzkwODYxLDExIDgsOS4yMDkxMzkgOCw3IEM4LDQuNzkwODYxIDkuNzkwODYxLDMgMTIsMyBDMTQuMjA5MTM5LDMgMTYsNC43OTA4NjEgMTYsNyBDMTYsOS4yMDkxMzkgMTQuMjA5MTM5LDExIDEyLDExIFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMDlFRjdcIiBmaWxsLXJ1bGU9XCJub256ZXJvXCIgb3BhY2l0eT1cIjAuM1wiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjAwMDY1MTY4LDIwLjE5OTIwNTUgQzMuMzg4MjU4NTIsMTUuNDI2NTE1OSA3LjI2MTkxMjM1LDEzIDExLjk4MzM0MTMsMTMgQzE2Ljc3MTIxNjQsMTMgMjAuNzA0ODgzNywxNS4yOTMxOTI5IDIwLjk5NzkxNDMsMjAuMiBDMjEuMDA5NTg3OSwyMC4zOTU0NzQxIDIwLjk5NzkxNDMsMjEgMjAuMjQ2Njk5OSwyMSBDMTYuNTQxMTI0LDIxIDExLjAzNDcyNDcsMjEgMy43Mjc1MDIyMywyMSBDMy40NzY3MTIxNSwyMSAyLjk3OTUzODI1LDIwLjQ1OTE4IDMuMDAwNjUxNjgsMjAuMTk5MjA1NSBaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDA5RUY3XCIgZmlsbC1ydWxlPVwibm9uemVyb1wiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0wIG1lLTJcIiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydC10aXRsZVwiPnt7IGl0ZW0uX3NvdXJjZS50aXRsZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWx0LWRlc2NcIj57eyBpdGVtLl9zb3VyY2UuZGVzY3JpcHRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgZnMtOVwiPnt7IGl0ZW0uX3NvdXJjZS5kYXRlfGN1c3RvbURhdGVGb3JtYXQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgYm9yZGVyLXRvcFwiPlxyXG4gICAgICAgICAgICA8YSAoY2xpY2spPVwidmlld0FsbCgnYWxlcnRzJylcIiBjbGFzcz1cImJ0biBidG4tY29sb3ItZ3JheS02MDAgYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5IG15LTJcIj5cclxuICAgICAgICAgICAgICBWaWV3IEFsbFxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwidy00NTBweCBwb3NpdGlvbi1maXhlZCBlbmQtMCBib3R0b20tMCB0cmFuc2l0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItNFwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHB1c2hOb3RpZmljYXRpb25MaXN0O2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0YmcgY2FyZFwiICpuZ0lmPVwiaXRlbS5fc2NvcmVcIiBAZmFkZUluIEBmYWRlT3V0PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IG0tMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBhbGlnbi1pdGVtcy1zdGFydCBtdC0xXCI+XHJcbiAgICAgICAgICA8c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzEyMjU0XzExMjY1MylcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNOS45OTkzNSAxMy4zMzM0VjEwTTkuOTk5MzUgNi42NjY2OUgxMC4wMDc3TTE4LjMzMjcgMTBDMTguMzMyNyAxNC42MDI0IDE0LjYwMTcgMTguMzMzNCA5Ljk5OTM1IDE4LjMzMzRDNS4zOTY5OCAxOC4zMzM0IDEuNjY2MDIgMTQuNjAyNCAxLjY2NjAyIDEwQzEuNjY2MDIgNS4zOTc2NSA1LjM5Njk4IDEuNjY2NjkgOS45OTkzNSAxLjY2NjY5QzE0LjYwMTcgMS42NjY2OSAxOC4zMzI3IDUuMzk3NjUgMTguMzMyNyAxMFpcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTIyNTRfMTEyNjUzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMCBhbGlnbi1pdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbGVydC10aXRsZVwiPlxyXG4gICAgICAgICAgICBOb3RpZmljYXRpb25cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIHt7aXRlbS5fc291cmNlLmRlc2NyaXB0aW9ufX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBhbGlnbi1pdGVtcy1zdGFydCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJub3RpZmljYXRpb25QdXNoVXBkYXRlKGl0ZW0pXCI+XHJcbiAgICAgICAgICA8c3Bhbj48c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDVMNSAxNU01IDVMMTUgMTVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG15LTJcIiBzdHlsZT1cImp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1wiPlxyXG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJidXR0b24ucmVkaXJlY3Rpb25VcmwgIT09ICdyZW1pbmQnID8gJycgOiAnbXQtMidcIiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGl0ZW0uX3NvdXJjZT8uYWxlcnRDdGFcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImJ1dHRvbi5yZWRpcmVjdGlvblVybCAhPT0gJ3JlbWluZCdcIiAoY2xpY2spPVwidXBkYXRlTm90aWZpY2F0aW9uKGl0ZW0sYnV0dG9uLnJlZGlyZWN0aW9uVXJsKVwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBteC00IG5nLXN0YXItaW5zZXJ0ZWQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj48c3BhbiBjbGFzcz1cInN1Ym1pdFwiPnt7IGJ1dHRvbi5idXR0b25OYW1lIH19IDwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJidXR0b24ucmVkaXJlY3Rpb25VcmwgPT09ICdyZW1pbmQnXCIgKGNsaWNrKT1cInVwZGF0ZU5vdGlmaWNhdGlvbihpdGVtLCcnKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgbXgtNiByZW1pbmRsYXRlcnRleHQgY3Vyc29yLXBvaW50ZXJcIj57eyBidXR0b24uYnV0dG9uTmFtZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9oZWFkZXIvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hcHAtc2hhcmVkL3NyYy9saWIvbW9kdWxlcy9sYXlvdXQvaGVhZGVyL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUFlLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQXdCLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxPQUFPLEVBQVMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQUNqRixNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFO0lBQzNDLEtBQUssQ0FBQztRQUNKLE9BQU8sRUFBRSxDQUFDO1FBQ1YsZ0NBQWdDO0tBQ2pDLENBQUM7SUFDRixPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQztRQUMxQixPQUFPLEVBQUUsQ0FBQztLQUNYLENBQUMsQ0FBQztDQUNKLENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUU7SUFDdEMsS0FBSyxDQUFDO1FBQ0osT0FBTyxFQUFFLENBQUM7UUFDVixpQ0FBaUM7S0FDbEMsQ0FBQztJQUNGLE9BQU8sQ0FBQyxhQUFhLEVBQUUs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QkFBa0I7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVE7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFHRCxPQUFPLENBQUUsS0FBaUI7UUFDeEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsSUFBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO3dHQXJNVSxlQUFlOzRGQUFmLGVBQWUsc01DNUM1Qix5aFRBZ0pBLGtwSEQxR2M7WUFDVixNQUFNO1lBQ04sT0FBTztTQUVSOzs0RkFFVSxlQUFlO2tCQVYzQixTQUFTOytCQUNFLFlBQVksY0FHVjt3QkFDVixNQUFNO3dCQUNOLE9BQU87cUJBRVI7d0tBR1EsMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkE4TE4sT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsQWN0aXZhdGVkUm91dGUsTmF2aWdhdGlvbkVuZCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0cmlnZ2VyLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIGFuaW1hdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuY29uc3QgZW50ZXJUcmFuc2l0aW9uID0gdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gIHN0eWxlKHtcclxuICAgIG9wYWNpdHk6IDAsXHJcbiAgICAvLyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDUwcHgpJ1xyXG4gIH0pLFxyXG4gIGFuaW1hdGUoJzFzIGVhc2UtaW4nLCBzdHlsZSh7XHJcbiAgICBvcGFjaXR5OiAxXHJcbiAgfSkpXHJcbl0pO1xyXG4gXHJcbmNvbnN0IGxlYXZlVHJhbnMgPSB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgc3R5bGUoe1xyXG4gICAgb3BhY2l0eTogMSxcclxuICAgIC8vIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwcHgpJ1xyXG4gIH0pLFxyXG4gIGFuaW1hdGUoJzFzIGVhc2Utb3V0Jywgc3R5bGUoe1xyXG4gICAgb3BhY2l0eTogMCxcclxuICB9KSlcclxuXSlcclxuIFxyXG5jb25zdCBmYWRlSW4gPSB0cmlnZ2VyKCdmYWRlSW4nLCBbXHJcbiAgZW50ZXJUcmFuc2l0aW9uXHJcbl0pO1xyXG4gXHJcbmNvbnN0IGZhZGVPdXQgPSB0cmlnZ2VyKCdmYWRlT3V0JywgW1xyXG4gIGxlYXZlVHJhbnNcclxuXSlcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbmF2YmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmF2YmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uYXZiYXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICBmYWRlSW4sXHJcbiAgICBmYWRlT3V0XHJcblxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGFwcEhlYWRlckRlZmF1bE1lbnVEaXNwbGF5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGlzUnRsOiBib29sZWFuO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBpdGVtQ2xhc3M6IHN0cmluZyA9ICdtcy0xIG1zLWxnLTMnO1xyXG4gIGJ0bkNsYXNzOiBzdHJpbmcgPSAnYnRuIGJ0bi1pY29uIGJ0bi1jdXN0b20gYnRuLWljb24tbXV0ZWQgYnRuLWFjdGl2ZS1saWdodCBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnkgdy0zNXB4IGgtMzVweCB3LW1kLTQwcHggaC1tZC00MHB4JztcclxuICBidG5DbGFzczE6IHN0cmluZztcclxuICB1c2VyQXZhdGFyQ2xhc3M6IHN0cmluZyA9ICdzeW1ib2wtMzVweCBzeW1ib2wtbWQtNDBweCc7XHJcbiAgYnRuSWNvbkNsYXNzOiBzdHJpbmcgPSAnZnMtMiBmcy1tZC0xJztcclxuICBub3RpZmljYXRpb25SZWNlaXZlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5vdGlmaWNhdGlvbjphbnkgPSBbXTtcclxuICBwdXNoTm90aWZpY2F0aW9uTGlzdDphbnkgPSBbXTtcclxuICBhY3RpdmVUYWJJZDpzdHJpbmcgPSAnYWxlcnRzJztcclxuICBsb2FkaW5nOmJvb2xlYW4gPSB0cnVlO1xyXG4gIG5vRGF0YTpib29sZWFuID0gZmFsc2U7XHJcbiAgdXJsOmFueTtcclxuICBzaG93Tm90aWZpY2F0aW9uOmJvb2xlYW4gPSB0cnVlO1xyXG4gIHNob3dEcm9wZG93bjpib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgbm90aWZpY2F0aW9uRHJvcERvd25DbGFzczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTpOb3RpZmljYXRpb25TZXJ2aWNlLHByaXZhdGUgcm91dGVyOlJvdXRlcixwcml2YXRlIHRvYXN0OlRvYXN0U2VydmljZSxwcml2YXRlIGNkOkNoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICBcclxuICB9XHJcbiAgXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zaG93Tm90aWZpY2F0aW9uSWNvbigpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNob3dOb3RpZmljYXRpb25JY29uKCk7XHJcbiAgIFxyXG4gIH1cclxuIFxyXG4gIHNob3dOb3RpZmljYXRpb25JY29uICgpIHtcclxuICAgIGxldCB1cmwgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcclxuICAgIGlmKHVybC5pbmNsdWRlcygnbm90aWZpY2F0aW9ucycpKSB7XHJcbiAgICAgIHRoaXMuc2hvd05vdGlmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd05vdGlmaWNhdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVVzZXJEcm9wRG93bigpIHtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uRHJvcERvd25DbGFzcyA9ICF0aGlzLm5vdGlmaWNhdGlvbkRyb3BEb3duQ2xhc3M7XHJcbiAgfVxyXG4gIHNldEFjdGl2ZVRhYklkKHRhYklkOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlVGFiSWQgPSB0YWJJZDtcclxuICB9XHJcblxyXG4gIG5vdGlmaWNhdGlvbkxpc3QoKSB7XHJcbiAgICB0aGlzLnB1c2hOb3RpZmljYXRpb25MaXN0ID0gW107IFxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBsaW1pdDogMTAsXHJcbiAgICAgIG9mZnNldDogMVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2VydmljZS5ub3RpZmljYXRpb25MaXN0KGRhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24gPSByZXMuZGF0YS5yZXN1bHQuc2xpY2UoMCw1KTtcclxuICAgICAgICAgICAgdGhpcy5wdXNoTm90aWZpY2F0aW9uTGlzdCA9IHJlcy5kYXRhLnJlc3VsdC5maWx0ZXIoKGl0ZW06YW55KSA9PiBpdGVtLl9zb3VyY2Uuc2hvd1B1c2hOb3RpZmljYXRpb24pO1xyXG4gICAgICAgICAgICB0aGlzLnB1c2hOb3RpZmljYXRpb25MaXN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGl0ZW0uX3Njb3JlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uX3Njb3JlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uubm90aWZpY2F0aW9uUHVzaFVwZGF0ZShpdGVtKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlICgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm5vdGlmaWNhdGlvblB1c2hVcGRhdGUoaXRlbSwnJyk7XHJcbiAgICAgICAgICAgICAgfSwgNjAwMCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uID0gW107IFxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uID0gW107IFxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gICBub3RpZmljYXRpb25QdXNoVXBkYXRlKGRhdGE6IGFueSxidG5EZXRhaWxzOmFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLm5vdGlmaWNhdGlvblB1c2hVcGRhdGUoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgaWYoYnRuRGV0YWlscyAmJiBidG5EZXRhaWxzPy5yZWRpcmVjdGlvblVybCAhPSAnJyAmJiAhWydyZW1pbmQnLCdzdWJzY3JpYmVkJ10uaW5jbHVkZXMoYnRuRGV0YWlscz8ucmVkaXJlY3Rpb25VcmwpKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGJ0bkRldGFpbHMucmVkaXJlY3Rpb25VcmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihidG5EZXRhaWxzICYmIGJ0bkRldGFpbHM/LnJlZGlyZWN0aW9uVXJsID09ICdyZW1pbmQnKSB7XHJcbiAgICAgICAgICB0aGlzLnNlcnZpY2UudXBkYXRlUmVtaW5kKGRhdGEuX2lkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHt9KVxyXG4gICAgICAgICAgaWYoIXRoaXMuc2hvd05vdGlmaWNhdGlvbil7XHJcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS50cmlnZ2VyUmVsb2FkKCk7XHJcbiAgICAgICAgICB9IFxyXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLm5vdGlmaWNhdGlvblVwZGF0ZShkYXRhLl9pZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGJ0bkRldGFpbHMgJiYgYnRuRGV0YWlscz8ucmVkaXJlY3Rpb25VcmwgPT0gJ3N1YnNjcmliZWQnKSB7XHJcbiAgICAgICAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICAgICAgICBjbGllbnRJZDogYnRuRGV0YWlscz8uY2xpZW50SWQsXHJcbiAgICAgICAgICAgIHByb2R1Y3RzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYnRuRGV0YWlscy5wcm9kdWN0LFxyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3ROYW1lOiBidG5EZXRhaWxzLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdWJzY3JpcHRpb25cIixcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIm5ld1wiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2VydmljZS51cGRhdGVTdWJzY3JpcHRpb24ocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6YW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uubm90aWZpY2F0aW9uVXBkYXRlKGRhdGEuX2lkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKClcclxuICAgICAgICAgICAgICBpZighdGhpcy5zaG93Tm90aWZpY2F0aW9uKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS50cmlnZ2VyUmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uTGlzdCgpO1xyXG4gICAgICAgIH0sMTAwMCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB1cGRhdGVOb3RpZmljYXRpb24oZGF0YTogYW55LCBidG5EZXRhaWxzOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlcnZpY2Uubm90aWZpY2F0aW9uVXBkYXRlKGRhdGEuX2lkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIGlmKCFidG5EZXRhaWxzIHx8IGJ0bkRldGFpbHM/LnJlZGlyZWN0aW9uVXJsICE9ICdzdWJzY3JpYmVkJylcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KHJlcy5tZXNzYWdlKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uTGlzdCgpO1xyXG4gICAgICAgIH0sMTAwMCk7XHJcbiAgICAgICAgaWYoYnRuRGV0YWlscyAmJiBidG5EZXRhaWxzPy5yZWRpcmVjdGlvblVybCAhPSAnJyAmJiAhWydyZW1pbmQnLCdzdWJzY3JpYmVkJ10uaW5jbHVkZXMoYnRuRGV0YWlscz8ucmVkaXJlY3Rpb25VcmwpKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGJ0bkRldGFpbHMucmVkaXJlY3Rpb25VcmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihidG5EZXRhaWxzICYmIGJ0bkRldGFpbHM/LnJlZGlyZWN0aW9uVXJsID09ICdyZW1pbmQnKSB7XHJcbiAgICAgICAgICB0aGlzLnNlcnZpY2UudXBkYXRlUmVtaW5kKGRhdGEuX2lkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHt9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihidG5EZXRhaWxzICYmIGJ0bkRldGFpbHM/LnJlZGlyZWN0aW9uVXJsID09ICdzdWJzY3JpYmVkJykge1xyXG4gICAgICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IGJ0bkRldGFpbHM/LmNsaWVudElkLFxyXG4gICAgICAgICAgICBwcm9kdWN0czogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGJ0bkRldGFpbHMucHJvZHVjdCxcclxuICAgICAgICAgICAgICAgICAgICBwcm9kdWN0TmFtZTogYnRuRGV0YWlscy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3Vic2NyaXB0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJuZXdcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlcnZpY2UudXBkYXRlU3Vic2NyaXB0aW9uKHBhcmFtcykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOmFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZihyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoJ1Byb2R1Y3QgU3Vic2NyaWJlZCBTdWNjZXNzZnVsbHknKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0sKGVycm9yOmFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGhhbmRsZU5vdGlmaWNhdGlvbigpIHtcclxuICAgIHRoaXMuc2VydmljZS51cGRhdGVOb3RpZmljYXRpb25SZWNlaXZlZCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHZpZXdBbGwodHlwZTphbnkpe1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL25vdGlmaWNhdGlvbnMvYWxlcnRzJylcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrIChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYoIXRhcmdldC5jbG9zZXN0KCcuYXBwLW5hdmJhcicpKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjwhLS1iZWdpbjo6Tm90aWZpY2F0aW9ucy0tPlxyXG48ZGl2IGNsYXNzPVwiYXBwLW5hdmJhci1pdGVtXCIgW25nQ2xhc3NdPVwiaXRlbUNsYXNzXCIgKm5nSWY9XCJzaG93Tm90aWZpY2F0aW9uXCI+XHJcbiAgPCEtLWJlZ2luOjpNZW51LSB3cmFwcGVyLS0+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJidG5DbGFzc1wiIChjbGljayk9XCJzaG93RHJvcGRvd24gPSAhc2hvd0Ryb3Bkb3duXCI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFub3RpZmljYXRpb24ubGVuZ3RoXCI+XHJcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjAgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTEwLjY3NzkgMi40VjMuMDA2ODhMMTEuMjcxNSAzLjEzMzVDMTQuMTY3NCAzLjc1MTI1IDE2LjM5MTkgNi40NTg0MiAxNi4zOTE5IDkuNzVWMTAuNjMxM0MxNi4zOTE5IDEzLjAxMzEgMTcuMjI0OSAxNS4zMDg3IDE4LjczMzggMTcuMDk2M0wxOC43MzUyIDE3LjA5NzlMMTkuMDYzNiAxNy40ODQ2QzE5LjA2MzkgMTcuNDg1IDE5LjA2NDIgMTcuNDg1MyAxOS4wNjQ1IDE3LjQ4NTdDMTkuMjU1NyAxNy43MTM2IDE5LjMwNDggMTguMDM5MyAxOS4xODUgMTguMzE3NEMxOS4wNjQxIDE4LjU5ODMgMTguODE1MyAxOC43NSAxOC41NzA0IDE4Ljc1SDEuNDI4NDhDMS4xODI1IDE4Ljc1IDAuOTMzOTMxIDE4LjU5NzQgMC44MTUwMTcgMTguMzE5M0MwLjY5NTEwOCAxOC4wMzg4IDAuNzQ0NTkyIDE3LjcxMjMgMC45MzM5OTYgMTcuNDg1M0MwLjkzNDQ0NSAxNy40ODQ4IDAuOTM0ODk0IDE3LjQ4NDMgMC45MzUzNDQgMTcuNDgzN0wxLjI2MzEyIDE3LjA5ODVMMS4yNjQ3MyAxNy4wOTY2QzIuNzc1OTkgMTUuMzA4NiAzLjYwNjk3IDEzLjAxMjcgMy42MDY5NyAxMC42MzEzVjkuNzVDMy42MDY5NyA2LjQ1NDM0IDUuNzk0ODggMy43NTE0NSA4LjcyNTU5IDMuMTMzODhMOS4zMjA5NCAzLjAwODQzVjIuNFYxLjVDOS4zMjA5NCAxLjA1MDUyIDkuNjU4MDYgMC43NSA5Ljk5OTQ0IDAuNzVDMTAuMzQwOCAwLjc1IDEwLjY3NzkgMS4wNTA1MiAxMC42Nzc5IDEuNVYyLjRaTTkuOTk5NDQgMjMuMjVDOS40NDk4MyAyMy4yNSA4LjkxNzI2IDIzLjAyMyA4LjUyMDM0IDIyLjYwNjJDOC4yOTY0OSAyMi4zNzEyIDguMTI0NTcgMjIuMDcwOCA4LjAxNzY5IDIxLjc1SDExLjk4MTJDMTEuODc0MyAyMi4wNzA4IDExLjcwMjQgMjIuMzcxMiAxMS40Nzg1IDIyLjYwNjJDMTEuMDg1NiAyMy4wMTg4IDEwLjUxNDYgMjMuMjUgOS45OTk0NCAyMy4yNVpcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJub3RpZmljYXRpb24ubGVuZ3RoXCI+XHJcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjAgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTExLjQyNzkgMi40VjEuNUMxMS40Mjc5IDAuNjcxNzE5IDEwLjc4OTYgMCA5Ljk5OTQ0IDBDOS4yMDkzIDAgOC41NzA5NCAwLjY3MTcxOSA4LjU3MDk0IDEuNVYyLjRDNS4yNzIwMiAzLjA5NTE2IDIuODU2OTcgNi4xMjE4OCAyLjg1Njk3IDkuNzVWMTAuNjMxM0MyLjg1Njk3IDEyLjgzOTEgMi4wODY0OCAxNC45NjI1IDAuNjkxOTE1IDE2LjYxMjVMMC4zNjA4NjIgMTcuMDAxNkMtMC4wMTI4ODA1IDE3LjQ0NjkgLTAuMTA1MDUgMTguMDc1IDAuMTI1Mzg0IDE4LjYxNDFDMC4zNTU4MTggMTkuMTUzMSAwLjg2NjAxMyAxOS41IDEuNDI4NDggMTkuNUgxOC41NzA0QzE5LjEzMjkgMTkuNSAxOS42NDE4IDE5LjE1MzEgMTkuODczOSAxOC42MTQxQzIwLjEwNiAxOC4wNzUgMjAuMDEyMyAxNy40NDY5IDE5LjYzNzMgMTcuMDAxNkwxOS4zMDcgMTYuNjEyNUMxNy45MTQyIDE0Ljk2MjUgMTcuMTQxOSAxMi44MzkxIDE3LjE0MTkgMTAuNjMxM1Y5Ljc1QzE3LjE0MTkgOS4zOTk0NyAxNy4xMTkgOS4wNTQ1NSAxNy4wNzQ2IDguNzE2ODFDMTYuNTg0NSA4Ljg5OTkgMTYuMDU0IDkgMTUuNSA5QzEzLjAxNDcgOSAxMSA2Ljk4NTI4IDExIDQuNUMxMSAzLjc0ODc3IDExLjE4NDEgMy4wNDA1NCAxMS41MDk2IDIuNDE3OTVDMTEuNDgyNCAyLjQxMTggMTEuNDU1MiAyLjQwNTgyIDExLjQyNzkgMi40WlwiXHJcbiAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNNy45NzcyMyAyMy4xMjM0QzguNTEyOTEgMjMuNjg1OSA5LjI0MDU1IDI0IDkuOTk5NDQgMjRDMTAuNzE4MSAyNCAxMS40ODYgMjMuNjg1OSAxMi4wMjE2IDIzLjEyMzRDMTIuNTU3MyAyMi41NjA5IDEyLjg1NjQgMjEuNzU0NyAxMi44NTY0IDIxSDcuMTQyNDVDNy4xNDI0NSAyMS43NTQ3IDcuNDQxNTQgMjIuNTYwOSA3Ljk3NzIzIDIzLjEyMzRaXCJcclxuICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cclxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjRcIiByPVwiNFwiIGZpbGw9XCIjRjA0NDM4XCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudSBtZW51LXN1YiBtZW51LXN1Yi1kcm9wZG93biBtZW51LWNvbHVtbiB3LTQ1MHB4IHctbGctNDI1cHggbm90aWZpY2F0aW9uTWVudVwiICpuZ0lmPVwic2hvd0Ryb3Bkb3duXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHRvcGJhclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwidGl0bGUtbm90aWZ5IG10LTEwIG1iLTZcIj5cclxuICAgICAgICAgICAgTm90aWZpY2F0aW9uc1xyXG4gICAgICAgICAgPC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9EYXRhICYmICFsb2FkaW5nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYyB3LTI1XCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvbm9Ob3RpZmljYXRpb24uc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vdGlmaWNhdGlvbkFsaWduIG10LTEwXCI+Tm8gTmV3IE5vdGlmaWNhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm9Ob3RpZmljYXRpb24gbXQtMlwiPkFueSBuZXcgbm90aWZpY2F0aW9uIHdpbGwgYmUgc2hvd24gaGVyZS48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydHNjcm9sbFwiICpuZ0lmPVwibm90aWZpY2F0aW9uLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBub3RpZmljYXRpb25cIiBjbGFzcz1cIm1oLTIwMHB4IG5nLXN0YXItaW5zZXJ0ZWRcIiBzdHlsZT1cIm92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgcHktMyBteC00IG5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBtZS00XCI+PHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTIgc3ZnLWljb24tcHJpbWFyeVwiPjwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIHN2Zy1pY29uLXByaW1hcnlcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249XCIxLjFcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjFcIiBmaWxsPVwibm9uZVwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCIwIDAgMjQgMCAyNCAyNCAwIDI0XCI+PC9wb2x5Z29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLDExIEM5Ljc5MDg2MSwxMSA4LDkuMjA5MTM5IDgsNyBDOCw0Ljc5MDg2MSA5Ljc5MDg2MSwzIDEyLDMgQzE0LjIwOTEzOSwzIDE2LDQuNzkwODYxIDE2LDcgQzE2LDkuMjA5MTM5IDE0LjIwOTEzOSwxMSAxMiwxMSBaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDA5RUY3XCIgZmlsbC1ydWxlPVwibm9uemVyb1wiIG9wYWNpdHk9XCIwLjNcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMy4wMDA2NTE2OCwyMC4xOTkyMDU1IEMzLjM4ODI1ODUyLDE1LjQyNjUxNTkgNy4yNjE5MTIzNSwxMyAxMS45ODMzNDEzLDEzIEMxNi43NzEyMTY0LDEzIDIwLjcwNDg4MzcsMTUuMjkzMTkyOSAyMC45OTc5MTQzLDIwLjIgQzIxLjAwOTU4NzksMjAuMzk1NDc0MSAyMC45OTc5MTQzLDIxIDIwLjI0NjY5OTksMjEgQzE2LjU0MTEyNCwyMSAxMS4wMzQ3MjQ3LDIxIDMuNzI3NTAyMjMsMjEgQzMuNDc2NzEyMTUsMjEgMi45Nzk1MzgyNSwyMC40NTkxOCAzLjAwMDY1MTY4LDIwLjE5OTIwNTUgWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwOUVGN1wiIGZpbGwtcnVsZT1cIm5vbnplcm9cIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMCBtZS0yXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQtdGl0bGVcIj57eyBpdGVtLl9zb3VyY2UudGl0bGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsdC1kZXNjXCI+e3sgaXRlbS5fc291cmNlLmRlc2NyaXB0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0IGZzLTlcIj57eyBpdGVtLl9zb3VyY2UuZGF0ZXxjdXN0b21EYXRlRm9ybWF0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGJvcmRlci10b3BcIj5cclxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cInZpZXdBbGwoJ2FsZXJ0cycpXCIgY2xhc3M9XCJidG4gYnRuLWNvbG9yLWdyYXktNjAwIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeSBteS0yXCI+XHJcbiAgICAgICAgICAgICAgVmlldyBBbGxcclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cInctNDUwcHggcG9zaXRpb24tZml4ZWQgZW5kLTAgYm90dG9tLTAgdHJhbnNpdGlvblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwdXNoTm90aWZpY2F0aW9uTGlzdDtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhbGVydGJnIGNhcmRcIiAqbmdJZj1cIml0ZW0uX3Njb3JlXCIgQGZhZGVJbiBAZmFkZU91dD5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBtLTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgYWxpZ24taXRlbXMtc3RhcnQgbXQtMVwiPlxyXG4gICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xMjI1NF8xMTI2NTMpXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTkuOTk5MzUgMTMuMzMzNFYxME05Ljk5OTM1IDYuNjY2NjlIMTAuMDA3N00xOC4zMzI3IDEwQzE4LjMzMjcgMTQuNjAyNCAxNC42MDE3IDE4LjMzMzQgOS45OTkzNSAxOC4zMzM0QzUuMzk2OTggMTguMzMzNCAxLjY2NjAyIDE0LjYwMjQgMS42NjYwMiAxMEMxLjY2NjAyIDUuMzk3NjUgNS4zOTY5OCAxLjY2NjY5IDkuOTk5MzUgMS42NjY2OUMxNC42MDE3IDEuNjY2NjkgMTguMzMyNyA1LjM5NzY1IDE4LjMzMjcgMTBaXCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzEyMjU0XzExMjY1M1wiPlxyXG4gICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTAgYWxpZ24taXRlbXMtc3RhcnRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWxlcnQtdGl0bGVcIj5cclxuICAgICAgICAgICAgTm90aWZpY2F0aW9uXHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICB7e2l0ZW0uX3NvdXJjZS5kZXNjcmlwdGlvbn19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgYWxpZ24taXRlbXMtc3RhcnQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwibm90aWZpY2F0aW9uUHVzaFVwZGF0ZShpdGVtLCcnKVwiPlxyXG4gICAgICAgICAgPHNwYW4+PHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA1TDUgMTVNNSA1TDE1IDE1XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBteS0yXCIgc3R5bGU9XCJqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcIj5cclxuICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiYnV0dG9uLnJlZGlyZWN0aW9uVXJsICE9PSAncmVtaW5kJyA/ICcnIDogJ210LTInXCIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBpdGVtLl9zb3VyY2U/LmFsZXJ0Q3RhXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJidXR0b24ucmVkaXJlY3Rpb25VcmwgIT09ICdyZW1pbmQnXCIgKGNsaWNrKT1cIm5vdGlmaWNhdGlvblB1c2hVcGRhdGUoaXRlbSxidXR0b24pXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IG14LTQgbmctc3Rhci1pbnNlcnRlZCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiPjxzcGFuIGNsYXNzPVwic3VibWl0XCI+e3sgYnV0dG9uLmJ1dHRvbk5hbWUgfX0gPC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImJ1dHRvbi5yZWRpcmVjdGlvblVybCA9PT0gJ3JlbWluZCdcIiAoY2xpY2spPVwibm90aWZpY2F0aW9uUHVzaFVwZGF0ZShpdGVtLGJ1dHRvbilcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IG14LTYgcmVtaW5kbGF0ZXJ0ZXh0IGN1cnNvci1wb2ludGVyXCI+e3sgYnV0dG9uLmJ1dHRvbk5hbWUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=