@ieeesa-npm/dashboard 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/event-group-card/event-group-card.component.mjs +3 -3
- package/esm2022/lib/components/meeting-attendance-row/meeting-attendance-row.component.mjs +3 -3
- package/esm2022/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.mjs +46 -87
- package/esm2022/lib/dashboard.component.mjs +32 -4
- package/esm2022/lib/models/event-meeting-list-item.model.mjs +1 -1
- package/esm2022/lib/models/upcoming-summary.model.mjs +2 -0
- package/esm2022/lib/services/dashboard.service.mjs +23 -6
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ieeesa-npm-dashboard.mjs +115 -110
- package/fesm2022/ieeesa-npm-dashboard.mjs.map +1 -1
- package/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.d.ts +22 -44
- package/lib/dashboard.component.d.ts +17 -6
- package/lib/models/event-meeting-list-item.model.d.ts +7 -0
- package/lib/models/upcoming-summary.model.d.ts +16 -0
- package/lib/services/dashboard.service.d.ts +5 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -77,6 +77,17 @@ export class DashboardComponent {
|
|
|
77
77
|
this.dashboardNavigate = new EventEmitter();
|
|
78
78
|
/** The user's upcoming events, bound to the upcoming section (Req 13.1, 13.2). */
|
|
79
79
|
this.upcomingEvents = [];
|
|
80
|
+
/** Server-provided summary counts (paginator length + collapsed-summary counts). */
|
|
81
|
+
this.upcomingSummary = {
|
|
82
|
+
totalRecords: 0,
|
|
83
|
+
eventCount: 0,
|
|
84
|
+
standaloneMeetingCount: 0,
|
|
85
|
+
standaloneMeetingsOpenForAttendanceCount: 0,
|
|
86
|
+
};
|
|
87
|
+
/** Zero-based page index of the upcoming section's server-paged list. */
|
|
88
|
+
this.upcomingPageIndex = 0;
|
|
89
|
+
/** Page size of the upcoming section's server-paged list. */
|
|
90
|
+
this.upcomingPageSize = 10;
|
|
80
91
|
/** The user's groups, bound to the groups section (Req 13.1, 13.2). */
|
|
81
92
|
this.groups = [];
|
|
82
93
|
/** The upcoming-events section's load/empty/error state (Req 13.1, 13.2, 13.5). */
|
|
@@ -350,6 +361,9 @@ export class DashboardComponent {
|
|
|
350
361
|
this.dashboardService.upcomingEvents$
|
|
351
362
|
.pipe(takeUntil(this.destroy$))
|
|
352
363
|
.subscribe((events) => (this.upcomingEvents = events));
|
|
364
|
+
this.dashboardService.upcomingSummary$
|
|
365
|
+
.pipe(takeUntil(this.destroy$))
|
|
366
|
+
.subscribe((summary) => (this.upcomingSummary = summary));
|
|
353
367
|
this.dashboardService.groups$
|
|
354
368
|
.pipe(takeUntil(this.destroy$))
|
|
355
369
|
.subscribe((groups) => {
|
|
@@ -390,12 +404,26 @@ export class DashboardComponent {
|
|
|
390
404
|
*/
|
|
391
405
|
loadUpcomingEvents() {
|
|
392
406
|
this.dashboardService
|
|
393
|
-
.loadUpcomingEvents()
|
|
407
|
+
.loadUpcomingEvents(this.upcomingPageIndex + 1, this.upcomingPageSize)
|
|
394
408
|
.pipe(takeUntil(this.destroy$))
|
|
395
409
|
.subscribe({
|
|
396
410
|
error: () => (this.upcomingState = DashboardSectionState.ERROR),
|
|
397
411
|
});
|
|
398
412
|
}
|
|
413
|
+
/**
|
|
414
|
+
* Handles the upcoming section's paginator change by requesting the matching
|
|
415
|
+
* server page. The list endpoint is server-paged, so the paginator length is
|
|
416
|
+
* the response `totalRecords`; page/size are converted to the one-based API
|
|
417
|
+
* page and a fresh page is loaded (no client-side slicing) (Req 3.x).
|
|
418
|
+
* @param {PageChange} page - The requested zero-based page index and size.
|
|
419
|
+
* @return {void}
|
|
420
|
+
* @memberof DashboardComponent
|
|
421
|
+
*/
|
|
422
|
+
onUpcomingPageChange(page) {
|
|
423
|
+
this.upcomingPageIndex = page.pageIndex;
|
|
424
|
+
this.upcomingPageSize = page.pageSize;
|
|
425
|
+
this.loadUpcomingEvents();
|
|
426
|
+
}
|
|
399
427
|
/**
|
|
400
428
|
* Triggers the groups load, setting the section to `ERROR` on failure so only
|
|
401
429
|
* the section error region renders. Isolated from the upcoming-events load so
|
|
@@ -438,7 +466,7 @@ export class DashboardComponent {
|
|
|
438
466
|
});
|
|
439
467
|
}
|
|
440
468
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardComponent, deps: [{ token: i1.DashboardService }, { token: i2.UserPermissionsService }, { token: i3.BreakpointObserverService }, { token: i4.AlertsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
441
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DashboardComponent, isStandalone: true, selector: "ieeesa-dashboard", inputs: { routePaths: "routePaths", apiBaseURL: "apiBaseURL", userInfo: "userInfo", userPermissions: "userPermissions" }, outputs: { dashboardNavigate: "dashboardNavigate" }, providers: [AlertsService], viewQueries: [{ propertyName: "upcomingSection", first: true, predicate: ["upcomingSection"], descendants: true, read: ElementRef }, { propertyName: "groupsSection", first: true, predicate: ["groupsSection"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\r\n class=\"ieeesa-dashboard\"\r\n [ngClass]=\"{ 'ieeesa-dashboard--mobile': isMobileView }\"\r\n>\r\n <ieeesa-dashboard-welcome-header\r\n class=\"ieeesa-dashboard__welcome\"\r\n [userName]=\"userInfo?.name ?? ''\"\r\n [meetingsCount]=\"meetingsCount\"\r\n [groupsCount]=\"groupsCount\"\r\n (shortcutSelected)=\"onJumpToShortcut($event)\"\r\n ></ieeesa-dashboard-welcome-header>\r\n\r\n <main class=\"ieeesa-dashboard__content\">\r\n <ieeesa-upcoming-meetings-events\r\n #upcomingSection\r\n class=\"ieeesa-dashboard__upcoming\"\r\n [(expanded)]=\"meetingsExpanded\"\r\n [events]=\"upcomingEvents\"\r\n [sectionState]=\"upcomingState\"\r\n [permissions]=\"attendancePermissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n (viewAll)=\"onViewAllEvents()\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (loadEventMeetings)=\"onLoadEventMeetings($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-upcoming-meetings-events>\r\n\r\n <ieeesa-your-groups\r\n #groupsSection\r\n [(expanded)]=\"groupsExpanded\"\r\n [groups]=\"groups\"\r\n [sectionState]=\"groupsState\"\r\n [totalGroups]=\"groups.length\"\r\n [pageIndex]=\"groupsPageIndex\"\r\n [pageSize]=\"groupsPageSize\"\r\n (viewAllGroups)=\"onViewAllGroups()\"\r\n (pageChange)=\"onGroupsPageChange($event)\"\r\n ></ieeesa-your-groups>\r\n </main>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-dashboard{display:flex;flex-direction:column;gap:24px;padding:16px;height:100vh;max-height:100vh;overflow:hidden}.ieeesa-dashboard__welcome{display:block;flex:0 0 auto}.ieeesa-dashboard__content{display:flex;flex-direction:column;gap:24px;flex:1 1 auto;overflow-y:auto;padding-right:4px}.ieeesa-dashboard__upcoming,.ieeesa-dashboard__groups,.ieeesa-dashboard__footer{display:block}.ieeesa-dashboard--mobile{padding:8px;gap:16px}.ieeesa-dashboard--mobile .ieeesa-dashboard__content{gap:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: UpcomingMeetingsEventsComponent, selector: "ieeesa-upcoming-meetings-events", inputs: ["events", "sectionState", "permissions", "attendanceStates", "inFlightMeetingIds", "isMobileView", "expanded"], outputs: ["viewAll", "viewEvent", "openMeeting", "logAttendance", "leaveMeeting", "meetingPageChange", "loadEventMeetings", "navigateToMeeting", "expandedChange"] }, { kind: "component", type: YourGroupsComponent, selector: "ieeesa-your-groups", inputs: ["groups", "sectionState", "totalGroups", "pageIndex", "pageSize", "expanded"], outputs: ["viewAllGroups", "pageChange", "expandedChange"] }, { kind: "component", type: DashboardWelcomeHeaderComponent, selector: "ieeesa-dashboard-welcome-header", inputs: ["userName", "meetingsCount", "groupsCount"], outputs: ["shortcutSelected"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
469
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DashboardComponent, isStandalone: true, selector: "ieeesa-dashboard", inputs: { routePaths: "routePaths", apiBaseURL: "apiBaseURL", userInfo: "userInfo", userPermissions: "userPermissions" }, outputs: { dashboardNavigate: "dashboardNavigate" }, providers: [AlertsService], viewQueries: [{ propertyName: "upcomingSection", first: true, predicate: ["upcomingSection"], descendants: true, read: ElementRef }, { propertyName: "groupsSection", first: true, predicate: ["groupsSection"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\r\n class=\"ieeesa-dashboard\"\r\n [ngClass]=\"{ 'ieeesa-dashboard--mobile': isMobileView }\"\r\n>\r\n <ieeesa-dashboard-welcome-header\r\n class=\"ieeesa-dashboard__welcome\"\r\n [userName]=\"userInfo?.name ?? ''\"\r\n [meetingsCount]=\"meetingsCount\"\r\n [groupsCount]=\"groupsCount\"\r\n (shortcutSelected)=\"onJumpToShortcut($event)\"\r\n ></ieeesa-dashboard-welcome-header>\r\n\r\n <main class=\"ieeesa-dashboard__content\">\r\n <ieeesa-upcoming-meetings-events\r\n #upcomingSection\r\n class=\"ieeesa-dashboard__upcoming\"\r\n [(expanded)]=\"meetingsExpanded\"\r\n [events]=\"upcomingEvents\"\r\n [sectionState]=\"upcomingState\"\r\n [permissions]=\"attendancePermissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n [totalRecords]=\"upcomingSummary.totalRecords\"\r\n [eventCount]=\"upcomingSummary.eventCount\"\r\n [standaloneMeetingCount]=\"upcomingSummary.standaloneMeetingCount\"\r\n [standaloneMeetingsOpenForAttendanceCount]=\"upcomingSummary.standaloneMeetingsOpenForAttendanceCount\"\r\n [pageIndex]=\"upcomingPageIndex\"\r\n [pageSize]=\"upcomingPageSize\"\r\n (viewAll)=\"onViewAllEvents()\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (loadEventMeetings)=\"onLoadEventMeetings($event)\"\r\n (sectionPageChange)=\"onUpcomingPageChange($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-upcoming-meetings-events>\r\n\r\n <ieeesa-your-groups\r\n #groupsSection\r\n [(expanded)]=\"groupsExpanded\"\r\n [groups]=\"groups\"\r\n [sectionState]=\"groupsState\"\r\n [totalGroups]=\"groups.length\"\r\n [pageIndex]=\"groupsPageIndex\"\r\n [pageSize]=\"groupsPageSize\"\r\n (viewAllGroups)=\"onViewAllGroups()\"\r\n (pageChange)=\"onGroupsPageChange($event)\"\r\n ></ieeesa-your-groups>\r\n </main>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-dashboard{display:flex;flex-direction:column;gap:24px;padding:16px;height:100vh;max-height:100vh;overflow:hidden}.ieeesa-dashboard__welcome{display:block;flex:0 0 auto}.ieeesa-dashboard__content{display:flex;flex-direction:column;gap:24px;flex:1 1 auto;overflow-y:auto;padding-right:4px}.ieeesa-dashboard__upcoming,.ieeesa-dashboard__groups,.ieeesa-dashboard__footer{display:block}.ieeesa-dashboard--mobile{padding:8px;gap:16px}.ieeesa-dashboard--mobile .ieeesa-dashboard__content{gap:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: UpcomingMeetingsEventsComponent, selector: "ieeesa-upcoming-meetings-events", inputs: ["events", "sectionState", "permissions", "attendanceStates", "inFlightMeetingIds", "isMobileView", "totalRecords", "eventCount", "standaloneMeetingCount", "standaloneMeetingsOpenForAttendanceCount", "pageIndex", "pageSize", "expanded"], outputs: ["viewAll", "viewEvent", "openMeeting", "logAttendance", "leaveMeeting", "meetingPageChange", "loadEventMeetings", "navigateToMeeting", "sectionPageChange", "expandedChange"] }, { kind: "component", type: YourGroupsComponent, selector: "ieeesa-your-groups", inputs: ["groups", "sectionState", "totalGroups", "pageIndex", "pageSize", "expanded"], outputs: ["viewAllGroups", "pageChange", "expandedChange"] }, { kind: "component", type: DashboardWelcomeHeaderComponent, selector: "ieeesa-dashboard-welcome-header", inputs: ["userName", "meetingsCount", "groupsCount"], outputs: ["shortcutSelected"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
442
470
|
}
|
|
443
471
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardComponent, decorators: [{
|
|
444
472
|
type: Component,
|
|
@@ -447,7 +475,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
447
475
|
UpcomingMeetingsEventsComponent,
|
|
448
476
|
YourGroupsComponent,
|
|
449
477
|
DashboardWelcomeHeaderComponent
|
|
450
|
-
], encapsulation: ViewEncapsulation.None, providers: [AlertsService], template: "<div\r\n class=\"ieeesa-dashboard\"\r\n [ngClass]=\"{ 'ieeesa-dashboard--mobile': isMobileView }\"\r\n>\r\n <ieeesa-dashboard-welcome-header\r\n class=\"ieeesa-dashboard__welcome\"\r\n [userName]=\"userInfo?.name ?? ''\"\r\n [meetingsCount]=\"meetingsCount\"\r\n [groupsCount]=\"groupsCount\"\r\n (shortcutSelected)=\"onJumpToShortcut($event)\"\r\n ></ieeesa-dashboard-welcome-header>\r\n\r\n <main class=\"ieeesa-dashboard__content\">\r\n <ieeesa-upcoming-meetings-events\r\n #upcomingSection\r\n class=\"ieeesa-dashboard__upcoming\"\r\n [(expanded)]=\"meetingsExpanded\"\r\n [events]=\"upcomingEvents\"\r\n [sectionState]=\"upcomingState\"\r\n [permissions]=\"attendancePermissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n (viewAll)=\"onViewAllEvents()\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (loadEventMeetings)=\"onLoadEventMeetings($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-upcoming-meetings-events>\r\n\r\n <ieeesa-your-groups\r\n #groupsSection\r\n [(expanded)]=\"groupsExpanded\"\r\n [groups]=\"groups\"\r\n [sectionState]=\"groupsState\"\r\n [totalGroups]=\"groups.length\"\r\n [pageIndex]=\"groupsPageIndex\"\r\n [pageSize]=\"groupsPageSize\"\r\n (viewAllGroups)=\"onViewAllGroups()\"\r\n (pageChange)=\"onGroupsPageChange($event)\"\r\n ></ieeesa-your-groups>\r\n </main>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-dashboard{display:flex;flex-direction:column;gap:24px;padding:16px;height:100vh;max-height:100vh;overflow:hidden}.ieeesa-dashboard__welcome{display:block;flex:0 0 auto}.ieeesa-dashboard__content{display:flex;flex-direction:column;gap:24px;flex:1 1 auto;overflow-y:auto;padding-right:4px}.ieeesa-dashboard__upcoming,.ieeesa-dashboard__groups,.ieeesa-dashboard__footer{display:block}.ieeesa-dashboard--mobile{padding:8px;gap:16px}.ieeesa-dashboard--mobile .ieeesa-dashboard__content{gap:16px}\n"] }]
|
|
478
|
+
], encapsulation: ViewEncapsulation.None, providers: [AlertsService], template: "<div\r\n class=\"ieeesa-dashboard\"\r\n [ngClass]=\"{ 'ieeesa-dashboard--mobile': isMobileView }\"\r\n>\r\n <ieeesa-dashboard-welcome-header\r\n class=\"ieeesa-dashboard__welcome\"\r\n [userName]=\"userInfo?.name ?? ''\"\r\n [meetingsCount]=\"meetingsCount\"\r\n [groupsCount]=\"groupsCount\"\r\n (shortcutSelected)=\"onJumpToShortcut($event)\"\r\n ></ieeesa-dashboard-welcome-header>\r\n\r\n <main class=\"ieeesa-dashboard__content\">\r\n <ieeesa-upcoming-meetings-events\r\n #upcomingSection\r\n class=\"ieeesa-dashboard__upcoming\"\r\n [(expanded)]=\"meetingsExpanded\"\r\n [events]=\"upcomingEvents\"\r\n [sectionState]=\"upcomingState\"\r\n [permissions]=\"attendancePermissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n [totalRecords]=\"upcomingSummary.totalRecords\"\r\n [eventCount]=\"upcomingSummary.eventCount\"\r\n [standaloneMeetingCount]=\"upcomingSummary.standaloneMeetingCount\"\r\n [standaloneMeetingsOpenForAttendanceCount]=\"upcomingSummary.standaloneMeetingsOpenForAttendanceCount\"\r\n [pageIndex]=\"upcomingPageIndex\"\r\n [pageSize]=\"upcomingPageSize\"\r\n (viewAll)=\"onViewAllEvents()\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (loadEventMeetings)=\"onLoadEventMeetings($event)\"\r\n (sectionPageChange)=\"onUpcomingPageChange($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-upcoming-meetings-events>\r\n\r\n <ieeesa-your-groups\r\n #groupsSection\r\n [(expanded)]=\"groupsExpanded\"\r\n [groups]=\"groups\"\r\n [sectionState]=\"groupsState\"\r\n [totalGroups]=\"groups.length\"\r\n [pageIndex]=\"groupsPageIndex\"\r\n [pageSize]=\"groupsPageSize\"\r\n (viewAllGroups)=\"onViewAllGroups()\"\r\n (pageChange)=\"onGroupsPageChange($event)\"\r\n ></ieeesa-your-groups>\r\n </main>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-dashboard{display:flex;flex-direction:column;gap:24px;padding:16px;height:100vh;max-height:100vh;overflow:hidden}.ieeesa-dashboard__welcome{display:block;flex:0 0 auto}.ieeesa-dashboard__content{display:flex;flex-direction:column;gap:24px;flex:1 1 auto;overflow-y:auto;padding-right:4px}.ieeesa-dashboard__upcoming,.ieeesa-dashboard__groups,.ieeesa-dashboard__footer{display:block}.ieeesa-dashboard--mobile{padding:8px;gap:16px}.ieeesa-dashboard--mobile .ieeesa-dashboard__content{gap:16px}\n"] }]
|
|
451
479
|
}], ctorParameters: function () { return [{ type: i1.DashboardService }, { type: i2.UserPermissionsService }, { type: i3.BreakpointObserverService }, { type: i4.AlertsService }]; }, propDecorators: { routePaths: [{
|
|
452
480
|
type: Input
|
|
453
481
|
}], apiBaseURL: [{
|
|
@@ -465,4 +493,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
465
493
|
type: ViewChild,
|
|
466
494
|
args: ['groupsSection', { read: ElementRef }]
|
|
467
495
|
}] } });
|
|
468
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC9zcmMvbGliL2Rhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBa0IsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFPL0UsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDM0gsT0FBTyxLQUFLLFNBQVMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLCtCQUErQixHQUNoQyxNQUFNLGdFQUFnRSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7O0FBaUJyRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFnQkgsTUFBTSxPQUFPLGtCQUFrQjtJQThEN0I7Ozs7O09BS0c7SUFDSCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUMvQixDQUFDLEtBQUssRUFBRSxLQUFLLEVB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RUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBR2xELGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSB9IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7IEFsZXJ0VHlwZSwgVXNlclBlcm1pc3Npb24gfSBmcm9tICdAaWVlZXNhLW5wbS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBBbGVydHNTZXJ2aWNlIH0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7IEF0dGVuZGFuY2VBY3Rpb25QZXJtaXNzaW9ucyB9IGZyb20gJy4vbW9kZWxzL2F0dGVuZGFuY2UtYWN0aW9uLXBlcm1pc3Npb25zLm1vZGVsJztcclxuaW1wb3J0IHsgQXR0ZW5kYW5jZVN0YXRlIH0gZnJvbSAnLi9tb2RlbHMvYXR0ZW5kYW5jZS1zdGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IERhc2hib2FyZFJvdXRlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvZGFzaGJvYXJkLXJvdXRlLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlY3Rpb25TdGF0ZSB9IGZyb20gJy4vbW9kZWxzL2Rhc2hib2FyZC1zZWN0aW9uLXN0YXRlLm1vZGVsJztcclxuaW1wb3J0IHsgRGFzaGJvYXJkVXNlckluZm8gfSBmcm9tICcuL21vZGVscy9kYXNoYm9hcmQtdXNlci1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBSb3cgfSBmcm9tICcuL21vZGVscy9ncm91cC1yb3cubW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlQ2hhbmdlIH0gZnJvbSAnLi9tb2RlbHMvcGFnZS1jaGFuZ2UubW9kZWwnO1xyXG5pbXBvcnQgeyBVcGNvbWluZ0V2ZW50IH0gZnJvbSAnLi9tb2RlbHMvdXBjb21pbmctZXZlbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9kYXNoYm9hcmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3VzZXItcGVybWlzc2lvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IFVwY29taW5nTWVldGluZ3NFdmVudHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdXBjb21pbmctbWVldGluZ3MtZXZlbnRzL3VwY29taW5nLW1lZXRpbmdzLWV2ZW50cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQge1xyXG4gIERhc2hib2FyZEp1bXBUYXJnZXQsXHJcbiAgRGFzaGJvYXJkV2VsY29tZUhlYWRlckNvbXBvbmVudCxcclxufSBmcm9tICcuL2NvbXBvbmVudHMvd2VsY29tZS1oZWFkZXIvZGFzaGJvYXJkLXdlbGNvbWUtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFlvdXJHcm91cHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMveW91ci1ncm91cHMveW91ci1ncm91cHMuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBBIG5hdmlnYXRpb24gaW50ZW50IGVtaXR0ZWQgYnkge0BsaW5rIERhc2hib2FyZENvbXBvbmVudH0gZm9yIHRoZSBob3N0XHJcbiAqIGFwcGxpY2F0aW9uIHRvIGFjdCBvbi4gVGhlIGxpYnJhcnkgbmV2ZXIgcGVyZm9ybXMgbmF2aWdhdGlvbiBpdHNlbGY7IGl0IGVtaXRzXHJcbiAqIHRoZSByZXNvbHZlZCB0YXJnZXQgYHBhdGhgIChmcm9tIHRoZSB7QGxpbmsgRGFzaGJvYXJkUm91dGVDb25maWd9KSB0b2dldGhlclxyXG4gKiB3aXRoIHRoZSB0cmlnZ2VyaW5nIGlkZW50aWZpZXIgc28gdGhlIGhvc3QgY2FuIHJvdXRlIGFjY29yZGluZ2x5IChSZXEgMTEuMSkuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZE5hdmlnYXRpb25JbnRlbnQge1xyXG4gIC8qKiBUaGUgcmVzb2x2ZWQgdGFyZ2V0IHJvdXRlIHBhdGggZnJvbSB0aGUgYWN0aXZlIHtAbGluayBEYXNoYm9hcmRSb3V0ZUNvbmZpZ30uICovXHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIC8qKiBUaGUgaWRlbnRpZmllciB0aGF0IHRyaWdnZXJlZCB0aGUgbmF2aWdhdGlvbiAoZXZlbnQvbWVldGluZy9ncm91cCBpZCksIHdoZW4gYXBwbGljYWJsZS4gKi9cclxuICBpZD86IHN0cmluZztcclxuICAvKiogUXVlcnkgcGFyYW1zIHRvIGF0dGFjaCB0byB0aGUgbmF2aWdhdGlvbiAoZS5nLiBldmVudElkL21lZXRpbmdJZC9hY3Rpb25UeXBlKS4gKi9cclxuICBxdWVyeVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEYXNoYm9hcmQgKGBpZWVlc2EtZGFzaGJvYXJkYCkgaXMgdGhlIHJvb3QgY29udGFpbmVyIGFuZCBzaW5nbGUgaG9zdCBlbnRyeVxyXG4gKiBwb2ludCBmb3IgdGhlIFwiTkVTQyBSZXZpc2lvbiBDeWNsZVwiIGRhc2hib2FyZCBsYW5kaW5nIHBhZ2UuIEl0IG93bnMgdGhlXHJcbiAqIGhvc3Qtc3VwcGxpZWQgY29uZmlndXJhdGlvbiAoYHJvdXRlUGF0aHNgLCBgYXBpQmFzZVVSTGAsIGB1c2VySW5mb2AsXHJcbiAqIGB1c2VyUGVybWlzc2lvbnNgKSwgY29tcG9zZXMgdGhlIGZvdXIgcmVnaW9ucyDigJQgd2VsY29tZSBoZWFkZXIsIHVwY29taW5nXHJcbiAqIG1lZXRpbmdzICYgZXZlbnRzLCB5b3VyIGdyb3VwcywgYW5kIGZvb3RlciDigJQgYW5kIG9yY2hlc3RyYXRlcyBkYXRhIGxvYWRpbmdcclxuICogYW5kIGF0dGVuZGFuY2UgYWN0aW9ucyB0aHJvdWdoIHRoZSB7QGxpbmsgRGFzaGJvYXJkU2VydmljZX0uXHJcbiAqXHJcbiAqIFRoZSBjb21wb25lbnQgaXMgY29tcG9zaXRpb24tZmlyc3QgYW5kIGhvc3QtYWdub3N0aWM6IGl0IHN1YnNjcmliZXMgdG8gdGhlXHJcbiAqIHNlcnZpY2Ugb2JzZXJ2YWJsZXMgKGB1cGNvbWluZ0V2ZW50cyRgLCBgZ3JvdXBzJGAsIHRoZSBwZXItc2VjdGlvbiBzdGF0ZXMsIHRoZVxyXG4gKiBhdHRlbmRhbmNlLXN0YXRlIG1hcCwgYW5kIHRoZSBpbi1mbGlnaHQgc2V0KSB3aXRoIGB0YWtlVW50aWwoZGVzdHJveSQpYCBhbmRcclxuICogdHJhY2tzIGBpc01vYmlsZVZpZXdgIGZyb20gdGhlIFByZXNlbnRhdGlvbl9MaWJyYXJ5XHJcbiAqIHtAbGluayBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlfSAoUmVxIDEzLjEsIDEzLjIsIDEzLjUsIDE1LjEsIDE1LjIpLiBDaGlsZFxyXG4gKiBuYXZpZ2F0aW9uIGBAT3V0cHV0KClgcyBhcmUgY29tcG9zZWQgaW50byBhIHNpbmdsZSB7QGxpbmsgZGFzaGJvYXJkTmF2aWdhdGV9XHJcbiAqIHN0cmVhbSBvZiBgeyBwYXRoLCBpZCB9YCBpbnRlbnRzIHJlc29sdmVkIGZyb20gYHJvdXRlUGF0aHNgIChmYWxsaW5nIGJhY2sgdG9cclxuICogdGhlIGRlZmF1bHQgcm91dGUgY29uZmlndXJhdGlvbiBpbiBgY29uc3RhbnRzLmpzb25gIHdoZW4gYHJvdXRlUGF0aHNgIGlzXHJcbiAqIG9taXR0ZWQpIChSZXEgNS4yLCA2LjQsIDcuNCwgOC4yLCA4LjcsIDExLjEsIDExLjUpLiBBdHRlbmRhbmNlIGBAT3V0cHV0KClgc1xyXG4gKiBhcmUgZGVsZWdhdGVkIHRvIHRoZSBzZXJ2aWNlLCBhbmQgb24gZmFpbHVyZSB0aGUgYXR0ZW5kYW5jZS1hY3Rpb24gZXJyb3JcclxuICogbWVzc2FnZSBmcm9tIGBjb25zdGFudHMuanNvbmAgaXMgc3VyZmFjZWQgdmlhIHRoZSBzaGFyZWQge0BsaW5rIEFsZXJ0c1NlcnZpY2V9XHJcbiAqIChSZXEgNy43LCA3LjgsIDEzLjcpLiBQZXItcm93IHtAbGluayBBdHRlbmRhbmNlQWN0aW9uUGVybWlzc2lvbnN9IGFyZSBjb21wdXRlZFxyXG4gKiBmcm9tIGB1c2VyUGVybWlzc2lvbnNgIGFuZCBwYXNzZWQgZG93biB0byB0aGUgcm93cyAoUmVxIDEyLjMpLlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBEYXNoYm9hcmRDb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtZGFzaGJvYXJkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFVwY29taW5nTWVldGluZ3NFdmVudHNDb21wb25lbnQsXHJcbiAgICBZb3VyR3JvdXBzQ29tcG9uZW50LFxyXG4gICAgRGFzaGJvYXJkV2VsY29tZUhlYWRlckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGFzaGJvYXJkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBwcm92aWRlcnM6IFtBbGVydHNTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvKiogVXNlci1mYWNpbmcgc3RyaW5ncyBhbmQgdGhlIGRlZmF1bHQgcm91dGUgY29uZmlnIHNvdXJjZWQgZnJvbSBgY29uc3RhbnRzLmpzb25gLiAqL1xyXG4gIGNvbnN0YW50cyA9IGNvbnN0YW50cztcclxuXHJcbiAgLyoqIEhvc3QgbmF2aWdhdGlvbiBwYXRoczsgZmFsbHMgYmFjayB0byB0aGUgYGNvbnN0YW50cy5qc29uYCBkZWZhdWx0IHdoZW4gb21pdHRlZCAoUmVxIDExLjEsIDExLjUpLiAqL1xyXG4gIEBJbnB1dCgpIHJvdXRlUGF0aHM/OiBEYXNoYm9hcmRSb3V0ZUNvbmZpZztcclxuXHJcbiAgLyoqIFRoZSBob3N0IGFwcGxpY2F0aW9uJ3MgQVBJIGJhc2UgVVJMLCBmb3J3YXJkZWQgdG8gdGhlIHNlcnZpY2UgKFJlcSAxMS4yKS4gKi9cclxuICBASW5wdXQoKSBhcGlCYXNlVVJMITogc3RyaW5nO1xyXG5cclxuICAvKiogVGhlIHNpZ25lZC1pbiB1c2VyJ3MgaW5mbyB1c2VkIGJ5IHRoZSB3ZWxjb21lIGhlYWRlciBncmVldGluZyAoUmVxIDExLjMsIDQuMSkuICovXHJcbiAgQElucHV0KCkgdXNlckluZm8hOiBEYXNoYm9hcmRVc2VySW5mbztcclxuXHJcbiAgLyoqIFRoZSBzaWduZWQtaW4gdXNlcidzIHBlcm1pc3Npb25zIHVzZWQgdG8gZ2F0ZSBhdHRlbmRhbmNlIGFjdGlvbnMgKFJlcSAxMS40LCAxMi4zKS4gKi9cclxuICBASW5wdXQoKSB1c2VyUGVybWlzc2lvbnMhOiBVc2VyUGVybWlzc2lvbltdO1xyXG5cclxuICAvKiogRW1pdHMgYSByZXNvbHZlZCBuYXZpZ2F0aW9uIGludGVudCBmb3IgdGhlIGhvc3QgdG8gYWN0IG9uIChSZXEgNS4yLCA2LjQsIDcuNCwgOC4yLCA4LjcsIDExLjEpLiAqL1xyXG4gIEBPdXRwdXQoKSBkYXNoYm9hcmROYXZpZ2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkTmF2aWdhdGlvbkludGVudD4oKTtcclxuXHJcbiAgLyoqIFRoZSB1c2VyJ3MgdXBjb21pbmcgZXZlbnRzLCBib3VuZCB0byB0aGUgdXBjb21pbmcgc2VjdGlvbiAoUmVxIDEzLjEsIDEzLjIpLiAqL1xyXG4gIHVwY29taW5nRXZlbnRzOiBVcGNvbWluZ0V2ZW50W10gPSBbXTtcclxuXHJcbiAgLyoqIFRoZSB1c2VyJ3MgZ3JvdXBzLCBib3VuZCB0byB0aGUgZ3JvdXBzIHNlY3Rpb24gKFJlcSAxMy4xLCAxMy4yKS4gKi9cclxuICBncm91cHM6IEdyb3VwUm93W10gPSBbXTtcclxuXHJcbiAgLyoqIFRoZSB1cGNvbWluZy1ldmVudHMgc2VjdGlvbidzIGxvYWQvZW1wdHkvZXJyb3Igc3RhdGUgKFJlcSAxMy4xLCAxMy4yLCAxMy41KS4gKi9cclxuICB1cGNvbWluZ1N0YXRlOiBEYXNoYm9hcmRTZWN0aW9uU3RhdGUgPSBEYXNoYm9hcmRTZWN0aW9uU3RhdGUuTE9BRElORztcclxuXHJcbiAgLyoqIFRoZSBncm91cHMgc2VjdGlvbidzIGxvYWQvZW1wdHkvZXJyb3Igc3RhdGUgKFJlcSAxMy4xLCAxMy4yLCAxMy41KS4gKi9cclxuICBncm91cHNTdGF0ZTogRGFzaGJvYXJkU2VjdGlvblN0YXRlID0gRGFzaGJvYXJkU2VjdGlvblN0YXRlLkxPQURJTkc7XHJcblxyXG4gIC8qKiBUaGUgcGVyLW1lZXRpbmcgYXR0ZW5kYW5jZS1zdGF0ZSBtYXAgcGFzc2VkIGRvd24gdG8gdGhlIHJvd3MuICovXHJcbiAgYXR0ZW5kYW5jZVN0YXRlczogUmVjb3JkPHN0cmluZywgQXR0ZW5kYW5jZVN0YXRlPiA9IHt9O1xyXG5cclxuICAvKiogVGhlIHNldCBvZiBtZWV0aW5nIGlkcyB3aXRoIGFuIGF0dGVuZGFuY2UgYWN0aW9uIGF3YWl0aW5nIHJlc29sdXRpb24uICovXHJcbiAgaW5GbGlnaHRNZWV0aW5nSWRzOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBUaGUgcGVyLXJvdyBhdHRlbmRhbmNlLWFjdGlvbiBwZXJtaXNzaW9ucyBkZXJpdmVkIGZyb20gYHVzZXJQZXJtaXNzaW9uc2AgKFJlcSAxMi4zKS4gKi9cclxuICBhdHRlbmRhbmNlUGVybWlzc2lvbnM6IEF0dGVuZGFuY2VBY3Rpb25QZXJtaXNzaW9ucyA9IHtcclxuICAgIGNhbkxvZ0F0dGVuZGFuY2U6IGZhbHNlLFxyXG4gICAgY2FuTGVhdmVNZWV0aW5nOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICAvKiogV2hldGhlciB0aGUgdmlld3BvcnQgaXMgYXQvYmVsb3cgdGhlIG1vYmlsZSBicmVha3BvaW50IChSZXEgMTUuMSwgMTUuMikuICovXHJcbiAgaXNNb2JpbGVWaWV3ID0gZmFsc2U7XHJcblxyXG4gIC8qKiBXaGV0aGVyIHRoZSBVcGNvbWluZyBNZWV0aW5ncyAmIEV2ZW50cyBjYXJkIGlzIGV4cGFuZGVkLiBTdGFydHMgZXhwYW5kZWQuICovXHJcbiAgbWVldGluZ3NFeHBhbmRlZCA9IHRydWU7XHJcblxyXG4gIC8qKiBXaGV0aGVyIHRoZSBZb3VyIEdyb3VwcyBjYXJkIGlzIGV4cGFuZGVkLiBTdGFydHMgY29sbGFwc2VkLiAqL1xyXG4gIGdyb3Vwc0V4cGFuZGVkID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlY3Rpb24gaG9zdCBlbGVtZW50cyB1c2VkIHRvIHNjcm9sbCBhIFwiSnVtcCB0b1wiIHRhcmdldCBpbnRvIHZpZXcuIFJlYWQgYXNcclxuICAgKiBFbGVtZW50UmVmIChub3QgdGhlIGNvbXBvbmVudCBpbnN0YW5jZSkgc28gdGhlIG5hdGl2ZSBlbGVtZW50IGlzIGF2YWlsYWJsZVxyXG4gICAqIGZvciBzY3JvbGxJbnRvVmlldy5cclxuICAgKi9cclxuICBAVmlld0NoaWxkKCd1cGNvbWluZ1NlY3Rpb24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuICB1cGNvbWluZ1NlY3Rpb24/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdncm91cHNTZWN0aW9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgZ3JvdXBzU2VjdGlvbj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICAvKipcclxuICAgKiBUb3RhbCBudW1iZXIgb2YgbWVldGluZ3MgYWNyb3NzIHRoZSBsb2FkZWQgdXBjb21pbmcgZXZlbnRzLCBzaG93biBpbiB0aGVcclxuICAgKiB3ZWxjb21lIGhlYWRlcidzIFwiVXBjb21pbmcgTWVldGluZ3MgJiBFdmVudHNcIiBzaG9ydGN1dCBiYWRnZS5cclxuICAgKiBAcmVhZG9ubHlcclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IG1lZXRpbmdzQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnVwY29taW5nRXZlbnRzLnJlZHVjZShcclxuICAgICAgKHRvdGFsLCBldmVudCkgPT4gdG90YWwgKyAoZXZlbnQ/Lm1lZXRpbmdDb3VudCA/PyAwKSxcclxuICAgICAgMFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE51bWJlciBvZiBsb2FkZWQgZ3JvdXBzLCBzaG93biBpbiB0aGUgd2VsY29tZSBoZWFkZXIncyBcIllvdXIgR3JvdXBzXCJcclxuICAgKiBzaG9ydGN1dCBiYWRnZS5cclxuICAgKiBAcmVhZG9ubHlcclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IGdyb3Vwc0NvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5ncm91cHMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRoZSBjdXJyZW50IHplcm8tYmFzZWQgcGFnZSBpbmRleCBvZiB0aGUgZ3JvdXBzIHRhYmxlLiAqL1xyXG4gIGdyb3Vwc1BhZ2VJbmRleCA9IDA7XHJcblxyXG4gIC8qKiBUaGUgY3VycmVudCBwYWdlIHNpemUgb2YgdGhlIGdyb3VwcyB0YWJsZSAoNSByb3dzIHBlciBwYWdlIHBlciB0aGUgZGVzaWduKS4gKi9cclxuICBncm91cHNQYWdlU2l6ZSA9IDU7XHJcblxyXG4gIC8qKiBDb21wbGV0ZXMgb24gZGVzdHJveSB0byB0ZWFyIGRvd24gYWxsIHN1YnNjcmlwdGlvbnMgKFJlcSAyLjQsIDIuNSkuICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGRhc2hib2FyZFNlcnZpY2U6IERhc2hib2FyZFNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgdXNlclBlcm1pc3Npb25zU2VydmljZTogVXNlclBlcm1pc3Npb25zU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlOiBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRzU2VydmljZSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBkYXNoYm9hcmQ6IGZvcndhcmRzIHRoZSBob3N0IGNvbmZpZyB0byB0aGUgc2VydmljZSwgZGVyaXZlc1xyXG4gICAqIHRoZSBwZXItcm93IGF0dGVuZGFuY2UgcGVybWlzc2lvbnMsIGtpY2tzIG9mZiB0aGUgdXBjb21pbmctZXZlbnRzIGFuZCBncm91cHNcclxuICAgKiBsb2FkcywgYW5kIHdpcmVzIHVwIHN1YnNjcmlwdGlvbnMgdG8gdGhlIHNlcnZpY2Ugc3RhdGUgb2JzZXJ2YWJsZXMgYW5kIHRoZVxyXG4gICAqIGJyZWFrcG9pbnQgb2JzZXJ2ZXIg4oCUIGFsbCBjbGVhbmVkIHVwIHZpYSBgdGFrZVVudGlsKGRlc3Ryb3kkKWAgKFJlcSAxMS4yLFxyXG4gICAqIDExLjQsIDEyLjMsIDEzLjEsIDEzLjIsIDEzLjUsIDE1LjEsIDE1LjIpLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnNldEFwcENvbmZpZyh0aGlzLmFwaUJhc2VVUkwsIHRoaXMudXNlclBlcm1pc3Npb25zKTtcclxuICAgIHRoaXMuYXR0ZW5kYW5jZVBlcm1pc3Npb25zID1cclxuICAgICAgdGhpcy51c2VyUGVybWlzc2lvbnNTZXJ2aWNlLm1hcFRvQXR0ZW5kYW5jZUFjdGlvblBlcm1pc3Npb25zKFxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zXHJcbiAgICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpYmVUb1NlcnZpY2VTdGF0ZSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb0JyZWFrcG9pbnQoKTtcclxuICAgIHRoaXMubG9hZFVwY29taW5nRXZlbnRzKCk7XHJcbiAgICB0aGlzLmxvYWRHcm91cHMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRlYXJzIGRvd24gYWxsIHN1YnNjcmlwdGlvbnMgb24gZGVzdHJveSAoUmVxIDIuNCwgMi41KS5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIHdlbGNvbWUtaGVhZGVyIFwiSnVtcCB0b1wiIGRhdGUgc2VsZWN0aW9uLiBUaGUgZGFzaGJvYXJkIGN1cnJlbnRseVxyXG4gICAqIGhhcyBubyBkYXRlLXNjb3BlZCBkYXRhIGxvYWQsIHNvIHRoZSBzZWxlY3Rpb24gaXMgYWNjZXB0ZWQgd2l0aG91dCBzaWRlXHJcbiAgICogZWZmZWN0czsgdGhlIGhvb2sga2VlcHMgdGhlIGhlYWRlcidzIGNvbnRyYWN0IHNhdGlzZmllZCBmb3IgZnV0dXJlIGZpbHRlcmluZy5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRDb21wb25lbnRcclxuICAgKi9cclxuICBvbkp1bXBUb0RhdGVTZWxlY3RlZCgpOiB2b2lkIHtcclxuICAgIC8vIE5vIGRhdGUtc2NvcGVkIHJlbG9hZCB5ZXQ7IHJldGFpbmVkIGZvciBmdXR1cmUgZGF0ZSBmaWx0ZXJpbmcgKFJlcSA0LjQpLlxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhIHdlbGNvbWUtaGVhZGVyIFwiSnVtcCB0b1wiIHNob3J0Y3V0OiBvcGVucyB0aGUgbWF0Y2hpbmcgc2VjdGlvbidzXHJcbiAgICogY2FyZCAoc28gaXRzIGNvbnRlbnQgaXMgdmlzaWJsZSkgYW5kIHNtb290aGx5IHNjcm9sbHMgaXQgaW50byB2aWV3LiBJdCBkb2VzXHJcbiAgICogTk9UIG5hdmlnYXRlIGF3YXkg4oCUIHRoZSBzaG9ydGN1dCBpcyBhbiBpbi1wYWdlIGp1bXAgdG8gdGhlIHNlY3Rpb24uXHJcbiAgICogQHBhcmFtIHtEYXNoYm9hcmRKdW1wVGFyZ2V0fSB0YXJnZXQgLSBUaGUgc2VsZWN0ZWQgc2hvcnRjdXQgdGFyZ2V0LlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uSnVtcFRvU2hvcnRjdXQodGFyZ2V0OiBEYXNoYm9hcmRKdW1wVGFyZ2V0KTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWN0aW9uID1cclxuICAgICAgdGFyZ2V0ID09PSBEYXNoYm9hcmRKdW1wVGFyZ2V0Lk1FRVRJTkdTXHJcbiAgICAgICAgPyB0aGlzLnVwY29taW5nU2VjdGlvblxyXG4gICAgICAgIDogdGhpcy5ncm91cHNTZWN0aW9uO1xyXG5cclxuICAgIGlmICh0YXJnZXQgPT09IERhc2hib2FyZEp1bXBUYXJnZXQuTUVFVElOR1MpIHtcclxuICAgICAgdGhpcy5tZWV0aW5nc0V4cGFuZGVkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBzRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNjcm9sbCBhZnRlciB0aGUgZXhwYW5kIGhhcyByZW5kZXJlZCBzbyB0aGUgdGFyZ2V0J3MgZmluYWwgcG9zaXRpb24gaXMgdXNlZC5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBzZWN0aW9uPy5uYXRpdmVFbGVtZW50Py5zY3JvbGxJbnRvVmlldyh7XHJcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxyXG4gICAgICAgIGJsb2NrOiAnc3RhcnQnLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIFwiVmlldyBBbGxcIiB1cGNvbWluZy1ldmVudHMgbmF2aWdhdGlvbiBpbnRlbnQsIHRhcmdldGluZyB0aGVcclxuICAgKiBgdmlld0FsbEV2ZW50c2Agcm91dGUgd2l0aCBubyBpZCAoUmVxIDUuMiwgMTEuMSkuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25WaWV3QWxsRXZlbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0TmF2aWdhdGlvbih0aGlzLmFjdGl2ZVJvdXRlQ29uZmlnLnZpZXdBbGxFdmVudHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIFwiVmlldyBFdmVudFwiIG5hdmlnYXRpb24gaW50ZW50LCB0YXJnZXRpbmcgdGhlIGBldmVudERldGFpbGAgcm91dGVcclxuICAgKiB3aXRoIHRoZSBldmVudCBpZCAoUmVxIDYuNCwgMTEuMSkuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50SWQgLSBUaGUgaWQgb2YgdGhlIGV2ZW50IHRvIHZpZXcuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25WaWV3RXZlbnQoZXZlbnRJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIWV2ZW50SWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXNoYm9hcmROYXZpZ2F0ZS5lbWl0KHtcclxuICAgICAgcGF0aDogdGhpcy5hY3RpdmVSb3V0ZUNvbmZpZy5ldmVudERldGFpbCxcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgZXZlbnRJZCB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgb3Blbi1tZWV0aW5nIG5hdmlnYXRpb24gaW50ZW50IHRvIHRoZSB2aWV3LW1lZXRpbmcgc2NyZWVuLFxyXG4gICAqIG1hdGNoaW5nIHRoZSByZWZlcmVuY2UgbGlzdDogYSBtZWV0aW5nIHVuZGVyIGFuIGV2ZW50IHRhcmdldHNcclxuICAgKiBgdmlld01lZXRpbmdVbmRlckV2ZW50YCB3aXRoIGBldmVudElkYCArIGBtZWV0aW5nSWRgICsgYGFjdGlvblR5cGU9ZWRpdGA7IGFcclxuICAgKiBzdGFuZGFsb25lIG1lZXRpbmcgdGFyZ2V0cyBgdmlld01lZXRpbmdgIHdpdGggYG1lZXRpbmdJZGAgKyBgYWN0aW9uVHlwZT1lZGl0YC5cclxuICAgKiAoUmV0YWluZWQgZm9yIHRoZSBsZWdhY3kgc3RyaW5nIGBvcGVuTWVldGluZ2Agb3V0cHV0LilcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVldGluZ0lkIC0gVGhlIGlkIG9mIHRoZSBtZWV0aW5nIHRvIG9wZW4uXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25PcGVuTWVldGluZyhtZWV0aW5nSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5vbk5hdmlnYXRlVG9NZWV0aW5nKHsgZXZlbnRJZDogJycsIG1lZXRpbmdJZCB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBcIlZpZXcgQWxsXCIgZ3JvdXBzIG5hdmlnYXRpb24gaW50ZW50LCB0YXJnZXRpbmcgdGhlXHJcbiAgICogYHZpZXdBbGxHcm91cHNgIHJvdXRlIHdpdGggbm8gaWQgKFJlcSA4LjIsIDExLjEpLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVmlld0FsbEdyb3VwcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZW1pdE5hdmlnYXRpb24odGhpcy5hY3RpdmVSb3V0ZUNvbmZpZy52aWV3QWxsR3JvdXBzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBncm91cC1kZXRhaWwgbmF2aWdhdGlvbiBpbnRlbnQsIHRhcmdldGluZyB0aGUgYGdyb3VwRGV0YWlsYCByb3V0ZVxyXG4gICAqIHdpdGggdGhlIGdyb3VwIGlkIChSZXEgOC43LCAxMS4xKS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBJZCAtIFRoZSBpZCBvZiB0aGUgc2VsZWN0ZWQgZ3JvdXAuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Hcm91cFNlbGVjdGVkKGdyb3VwSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0TmF2aWdhdGlvbih0aGlzLmFjdGl2ZVJvdXRlQ29uZmlnLmdyb3VwRGV0YWlsLCBncm91cElkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIGdyb3VwcyB0YWJsZSBwYWdpbmcgc3RhdGUgaW4gcmVzcG9uc2UgdG8gYSBwYWdpbmF0b3IgY2hhbmdlIHNvXHJcbiAgICogdGhlIGdyb3VwcyBzZWN0aW9uIHJlZmxlY3RzIHRoZSByZXF1ZXN0ZWQgcGFnZSAoUmVxIDguMTApLlxyXG4gICAqIEBwYXJhbSB7UGFnZUNoYW5nZX0gcGFnZSAtIFRoZSByZXF1ZXN0ZWQgcGFnZSBpbmRleCBhbmQgc2l6ZS5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRDb21wb25lbnRcclxuICAgKi9cclxuICBvbkdyb3Vwc1BhZ2VDaGFuZ2UocGFnZTogUGFnZUNoYW5nZSk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cHNQYWdlSW5kZXggPSBwYWdlLnBhZ2VJbmRleDtcclxuICAgIHRoaXMuZ3JvdXBzUGFnZVNpemUgPSBwYWdlLnBhZ2VTaXplO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF6aWx5IGxvYWRzIChvciBwYWdpbmF0ZXMpIHRoZSBjaGlsZCBtZWV0aW5ncyBvZiBhbiBleHBhbmRlZCBFVkVOVCBjYXJkIHZpYVxyXG4gICAqIHRoZSBzZXJ2aWNlLCBzdXJmYWNpbmcgdGhlIGF0dGVuZGFuY2UgZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLiBFYWNoIGV2ZW50XHJcbiAgICogcGFnaW5hdGVzIGluZGVwZW5kZW50bHkuIExvYWRpbmcgZmVlZGJhY2sgaXMgaGFuZGxlZCBieSB0aGUgaG9zdFxyXG4gICAqIGFwcGxpY2F0aW9uJ3MgZ2xvYmFsIHNwaW5uZXIsIHNvIG5vIHBlci1ldmVudCBsb2FkaW5nIHN0YXRlIGlzIHRyYWNrZWQgaGVyZS5cclxuICAgKiBAcGFyYW0ge3sgZXZlbnRJZDogc3RyaW5nOyBwYWdlOiBudW1iZXI7IHNpemU6IG51bWJlciB9fSByZXF1ZXN0IC0gVGhlIGV2ZW50IGlkIGFuZCBvbmUtYmFzZWQgcGFnZSB0byBsb2FkLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uTG9hZEV2ZW50TWVldGluZ3MocmVxdWVzdDoge1xyXG4gICAgZXZlbnRJZDogc3RyaW5nO1xyXG4gICAgcGFnZTogbnVtYmVyO1xyXG4gICAgc2l6ZTogbnVtYmVyO1xyXG4gIH0pOiB2b2lkIHtcclxuICAgIGlmICghcmVxdWVzdD8uZXZlbnRJZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2VcclxuICAgICAgLmxvYWRFdmVudE1lZXRpbmdzKHJlcXVlc3QuZXZlbnRJZCwgcmVxdWVzdC5wYWdlLCByZXF1ZXN0LnNpemUpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMuc2hvd0F0dGVuZGFuY2VFcnJvcigpLFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYW4gYXR0ZW5kYW5jZS1idXR0b24gYWN0aXZhdGlvbiBmb3IgYW4gSW4tUHJvZ3Jlc3MgbWVldGluZyBieVxyXG4gICAqIGVtaXR0aW5nIGEgbmF2aWdhdGlvbiBpbnRlbnQgdG8gdGhlIHZpZXctbWVldGluZyBzY3JlZW4gd2l0aCBgZXZlbnRJZGAsXHJcbiAgICogYG1lZXRpbmdJZGAsIGFuZCBgYWN0aW9uVHlwZT1lZGl0YCBxdWVyeSBwYXJhbXMg4oCUIHByb2R1Y2luZyBhIFVSTCBsaWtlXHJcbiAgICogYC9ldmVudHMtYW5kLW1lZXRpbmdzL3ZpZXctZXZlbnQvdmlldy1tZWV0aW5nP2V2ZW50SWQ9Li4uJm1lZXRpbmdJZD0uLi4mYWN0aW9uVHlwZT1lZGl0YC5cclxuICAgKiBUaGUgTG9nIEF0dGVuZGFuY2UgcG9wdXAgaXMgb3BlbmVkIGJ5IHRoYXQgZGVzdGluYXRpb24gcGFnZS5cclxuICAgKiBAcGFyYW0ge3sgZXZlbnRJZDogc3RyaW5nOyBtZWV0aW5nSWQ6IHN0cmluZyB9fSByZXF1ZXN0IC0gVGhlIG1lZXRpbmcgaWRlbnRpdHkuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25OYXZpZ2F0ZVRvTWVldGluZyhyZXF1ZXN0OiB7XHJcbiAgICBldmVudElkOiBzdHJpbmc7XHJcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcclxuICAgIGxvZ0F0dGVuZGFuY2U/OiBib29sZWFuO1xyXG4gICAgbGVhdmVNZWV0aW5nPzogYm9vbGVhbjtcclxuICB9KTogdm9pZCB7XHJcbiAgICBpZiAoIXJlcXVlc3Q/Lm1lZXRpbmdJZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmFjdGl2ZVJvdXRlQ29uZmlnO1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICAgIG1lZXRpbmdJZDogcmVxdWVzdC5tZWV0aW5nSWQsXHJcbiAgICAgIGFjdGlvblR5cGU6ICdlZGl0JyxcclxuICAgIH07XHJcbiAgICAvLyBNZWV0aW5nIHVuZGVyIGFuIGV2ZW50IOKGkiB2aWV3LW1lZXRpbmctdW5kZXItZXZlbnQgd2l0aCBldmVudElkOyBvdGhlcndpc2VcclxuICAgIC8vIHRoZSBzdGFuZGFsb25lIHZpZXctbWVldGluZyByb3V0ZS5cclxuICAgIGxldCBwYXRoOiBzdHJpbmc7XHJcbiAgICBpZiAocmVxdWVzdC5ldmVudElkKSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zWydldmVudElkJ10gPSByZXF1ZXN0LmV2ZW50SWQ7XHJcbiAgICAgIHBhdGggPVxyXG4gICAgICAgIGNvbmZpZy52aWV3TWVldGluZ1VuZGVyRXZlbnQgPz9cclxuICAgICAgICB0aGlzLmNvbnN0YW50cy5kZWZhdWx0Um91dGVDb25maWcudmlld01lZXRpbmdVbmRlckV2ZW50O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGF0aCA9XHJcbiAgICAgICAgY29uZmlnLnZpZXdNZWV0aW5nID8/IHRoaXMuY29uc3RhbnRzLmRlZmF1bHRSb3V0ZUNvbmZpZy52aWV3TWVldGluZztcclxuICAgIH1cclxuICAgIC8vIFJlcXVlc3QgdGhlIG1hdGNoaW5nIHBvcHVwIGF1dG8tb3BlbiBvbiB0aGUgdmlldy1tZWV0aW5nIHBhZ2UuXHJcbiAgICBpZiAocmVxdWVzdC5sb2dBdHRlbmRhbmNlKSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zWydsb2dBdHRlbmRhbmNlJ10gPSAndHJ1ZSc7XHJcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3QubGVhdmVNZWV0aW5nKSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zWydsZWF2ZU1lZXRpbmcnXSA9ICd0cnVlJztcclxuICAgIH1cclxuICAgIHRoaXMuZGFzaGJvYXJkTmF2aWdhdGUuZW1pdCh7IHBhdGgsIHF1ZXJ5UGFyYW1zIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZWdhdGVzIGEgbG9nLWF0dGVuZGFuY2UgcmVxdWVzdCB0byB0aGUgc2VydmljZSwgc3VyZmFjaW5nIHRoZVxyXG4gICAqIGF0dGVuZGFuY2UtYWN0aW9uIGVycm9yIG1lc3NhZ2UgdmlhIHRoZSBzaGFyZWQge0BsaW5rIEFsZXJ0c1NlcnZpY2V9IG9uXHJcbiAgICogZmFpbHVyZSB3aGlsZSB0aGUgc2VydmljZSByZXRhaW5zIHRoZSBwcmlvciBkaXNwbGF5ZWQgc3RhdGUgKFJlcSA3LjcsIDEzLjcpLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZWV0aW5nSWQgLSBUaGUgbWVldGluZyB0byBsb2cgYXR0ZW5kYW5jZSBmb3IuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Mb2dBdHRlbmRhbmNlKG1lZXRpbmdJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2VcclxuICAgICAgLmxvZ0F0dGVuZGFuY2UobWVldGluZ0lkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIGVycm9yOiAoKSA9PiB0aGlzLnNob3dBdHRlbmRhbmNlRXJyb3IoKSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxlZ2F0ZXMgYSBsZWF2ZS1tZWV0aW5nIHJlcXVlc3QgdG8gdGhlIHNlcnZpY2UsIHN1cmZhY2luZyB0aGVcclxuICAgKiBhdHRlbmRhbmNlLWFjdGlvbiBlcnJvciBtZXNzYWdlIHZpYSB0aGUgc2hhcmVkIHtAbGluayBBbGVydHNTZXJ2aWNlfSBvblxyXG4gICAqIGZhaWx1cmUgd2hpbGUgdGhlIHNlcnZpY2UgcmV0YWlucyB0aGUgcHJpb3IgZGlzcGxheWVkIHN0YXRlIChSZXEgNy44LCAxMy43KS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVldGluZ0lkIC0gVGhlIG1lZXRpbmcgdG8gbGVhdmUuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25MZWF2ZU1lZXRpbmcobWVldGluZ0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZVxyXG4gICAgICAubGVhdmVNZWV0aW5nKG1lZXRpbmdJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBlcnJvcjogKCkgPT4gdGhpcy5zaG93QXR0ZW5kYW5jZUVycm9yKCksXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHJvdXRlIGNvbmZpZ3VyYXRpb24gaW4gZWZmZWN0OiB0aGUgaG9zdC1zdXBwbGllZCBgcm91dGVQYXRoc2Agd2hlblxyXG4gICAqIHByb3ZpZGVkLCBvdGhlcndpc2UgdGhlIGRlZmF1bHQgcm91dGUgY29uZmlnIGZyb20gYGNvbnN0YW50cy5qc29uYCBzb1xyXG4gICAqIG5hdmlnYXRpb24gaW50ZW50cyBhbHdheXMgY2FycnkgdmFsaWQgdGFyZ2V0cyAoUmVxIDExLjEsIDExLjUpLlxyXG4gICAqIEByZXR1cm4ge0Rhc2hib2FyZFJvdXRlQ29uZmlnfSBUaGUgYWN0aXZlIHJvdXRlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0IGFjdGl2ZVJvdXRlQ29uZmlnKCk6IERhc2hib2FyZFJvdXRlQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLnJvdXRlUGF0aHMgPz8gdGhpcy5jb25zdGFudHMuZGVmYXVsdFJvdXRlQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaWJlcyB0byB0aGUgc2VydmljZSdzIHN0YXRlIG9ic2VydmFibGVzLCBtaXJyb3JpbmcgZWFjaCBpbnRvIGEgbG9jYWxcclxuICAgKiBmaWVsZCBmb3IgdGhlIHRlbXBsYXRlIHRvIGJpbmQuIEFsbCBzdWJzY3JpcHRpb25zIGFyZSB0b3JuIGRvd24gdmlhXHJcbiAgICogYHRha2VVbnRpbChkZXN0cm95JClgIChSZXEgMTMuMSwgMTMuMiwgMTMuNSkuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1NlcnZpY2VTdGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS51cGNvbWluZ0V2ZW50cyRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChldmVudHMpID0+ICh0aGlzLnVwY29taW5nRXZlbnRzID0gZXZlbnRzKSk7XHJcblxyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdyb3VwcyRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChncm91cHMpID0+IHtcclxuICAgICAgICB0aGlzLmdyb3VwcyA9IGdyb3VwcztcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnVwY29taW5nU3RhdGUkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+ICh0aGlzLnVwY29taW5nU3RhdGUgPSBzdGF0ZSkpO1xyXG5cclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5ncm91cHNTdGF0ZSRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZSkgPT4gKHRoaXMuZ3JvdXBzU3RhdGUgPSBzdGF0ZSkpO1xyXG5cclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5hdHRlbmRhbmNlU3RhdGVzJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRlcykgPT4gKHRoaXMuYXR0ZW5kYW5jZVN0YXRlcyA9IHN0YXRlcykpO1xyXG5cclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5pbkZsaWdodE1lZXRpbmdJZHMkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoaWRzKSA9PiAodGhpcy5pbkZsaWdodE1lZXRpbmdJZHMgPSBpZHMpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmliZXMgdG8gdGhlIFByZXNlbnRhdGlvbl9MaWJyYXJ5IGJyZWFrcG9pbnQgb2JzZXJ2ZXIgdG8ga2VlcFxyXG4gICAqIGBpc01vYmlsZVZpZXdgIGluIHN5bmMgd2l0aCB0aGUgdmlld3BvcnQgKFJlcSAxNS4xLCAxNS4yKS5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIHN1YnNjcmliZVRvQnJlYWtwb2ludCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyU2VydmljZVxyXG4gICAgICAuZ2V0QnJlYWtwb2ludCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiB7IG1hdGNoZXM6IGJvb2xlYW4gfSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gcmVzdWx0Py5tYXRjaGVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXJzIHRoZSB1cGNvbWluZy1ldmVudHMgbG9hZCwgc2V0dGluZyB0aGUgc2VjdGlvbiB0byBgRVJST1JgIG9uIGZhaWx1cmVcclxuICAgKiBzbyBvbmx5IHRoZSBzZWN0aW9uIGVycm9yIHJlZ2lvbiByZW5kZXJzIChSZXEgMTMuMSwgMTMuMiwgMTMuNSkuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkVXBjb21pbmdFdmVudHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2VcclxuICAgICAgLmxvYWRVcGNvbWluZ0V2ZW50cygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLnVwY29taW5nU3RhdGUgPSBEYXNoYm9hcmRTZWN0aW9uU3RhdGUuRVJST1IpLFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXJzIHRoZSBncm91cHMgbG9hZCwgc2V0dGluZyB0aGUgc2VjdGlvbiB0byBgRVJST1JgIG9uIGZhaWx1cmUgc28gb25seVxyXG4gICAqIHRoZSBzZWN0aW9uIGVycm9yIHJlZ2lvbiByZW5kZXJzLiBJc29sYXRlZCBmcm9tIHRoZSB1cGNvbWluZy1ldmVudHMgbG9hZCBzb1xyXG4gICAqIG9uZSBmYWlsaW5nIGRvZXMgbm90IGFmZmVjdCB0aGUgb3RoZXIgKFJlcSAxMy4xLCAxMy4yLCAxMy41KS5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGxvYWRHcm91cHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2VcclxuICAgICAgLmxvYWRHcm91cHMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5ncm91cHNTdGF0ZSA9IERhc2hib2FyZFNlY3Rpb25TdGF0ZS5FUlJPUiksXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcG9zZXMgYW5kIGVtaXRzIGEge0BsaW5rIERhc2hib2FyZE5hdmlnYXRpb25JbnRlbnR9IGZvciB0aGUgaG9zdCBmcm9tIHRoZVxyXG4gICAqIHJlc29sdmVkIHRhcmdldCBwYXRoIGFuZCBhbiBvcHRpb25hbCB0cmlnZ2VyaW5nIGlkIChSZXEgMTEuMSkuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcmVzb2x2ZWQgdGFyZ2V0IHJvdXRlIHBhdGguXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtpZF0gLSBUaGUgdHJpZ2dlcmluZyBpZGVudGlmaWVyLCB3aGVuIGFwcGxpY2FibGUuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBlbWl0TmF2aWdhdGlvbihwYXRoOiBzdHJpbmcsIGlkPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhc2hib2FyZE5hdmlnYXRlLmVtaXQoaWQgPyB7IHBhdGgsIGlkIH0gOiB7IHBhdGggfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdXJmYWNlcyB0aGUgYXR0ZW5kYW5jZS1hY3Rpb24gZXJyb3IgbWVzc2FnZSBmcm9tIGBjb25zdGFudHMuanNvbmAgdmlhIHRoZVxyXG4gICAqIHNoYXJlZCB7QGxpbmsgQWxlcnRzU2VydmljZX0gKFJlcSAxMy43KS5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIHNob3dBdHRlbmRhbmNlRXJyb3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZT8uc2hvd01lc3NhZ2Uoe1xyXG4gICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICBtZXNzYWdlOlxyXG4gICAgICAgIHRoaXMuY29uc3RhbnRzPy5hdHRlbmRhbmNlPy5lcnJvck1lc3NhZ2UgPz9cclxuICAgICAgICAnVW5hYmxlIHRvIHVwZGF0ZSB5b3VyIGF0dGVuZGFuY2UuIFBsZWFzZSB0cnkgYWdhaW4uJyxcclxuICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuRVJST1IsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLWRhc2hib2FyZFwiXHJcbiAgW25nQ2xhc3NdPVwieyAnaWVlZXNhLWRhc2hib2FyZC0tbW9iaWxlJzogaXNNb2JpbGVWaWV3IH1cIlxyXG4+XHJcbiAgPGllZWVzYS1kYXNoYm9hcmQtd2VsY29tZS1oZWFkZXJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhc2hib2FyZF9fd2VsY29tZVwiXHJcbiAgICBbdXNlck5hbWVdPVwidXNlckluZm8/Lm5hbWUgPz8gJydcIlxyXG4gICAgW21lZXRpbmdzQ291bnRdPVwibWVldGluZ3NDb3VudFwiXHJcbiAgICBbZ3JvdXBzQ291bnRdPVwiZ3JvdXBzQ291bnRcIlxyXG4gICAgKHNob3J0Y3V0U2VsZWN0ZWQpPVwib25KdW1wVG9TaG9ydGN1dCgkZXZlbnQpXCJcclxuICA+PC9pZWVlc2EtZGFzaGJvYXJkLXdlbGNvbWUtaGVhZGVyPlxyXG5cclxuICA8bWFpbiBjbGFzcz1cImllZWVzYS1kYXNoYm9hcmRfX2NvbnRlbnRcIj5cclxuICAgIDxpZWVlc2EtdXBjb21pbmctbWVldGluZ3MtZXZlbnRzXHJcbiAgICAgICN1cGNvbWluZ1NlY3Rpb25cclxuICAgICAgY2xhc3M9XCJpZWVlc2EtZGFzaGJvYXJkX191cGNvbWluZ1wiXHJcbiAgICAgIFsoZXhwYW5kZWQpXT1cIm1lZXRpbmdzRXhwYW5kZWRcIlxyXG4gICAgICBbZXZlbnRzXT1cInVwY29taW5nRXZlbnRzXCJcclxuICAgICAgW3NlY3Rpb25TdGF0ZV09XCJ1cGNvbWluZ1N0YXRlXCJcclxuICAgICAgW3Blcm1pc3Npb25zXT1cImF0dGVuZGFuY2VQZXJtaXNzaW9uc1wiXHJcbiAgICAgIFthdHRlbmRhbmNlU3RhdGVzXT1cImF0dGVuZGFuY2VTdGF0ZXNcIlxyXG4gICAgICBbaW5GbGlnaHRNZWV0aW5nSWRzXT1cImluRmxpZ2h0TWVldGluZ0lkc1wiXHJcbiAgICAgIFtpc01vYmlsZVZpZXddPVwiaXNNb2JpbGVWaWV3XCJcclxuICAgICAgKHZpZXdBbGwpPVwib25WaWV3QWxsRXZlbnRzKClcIlxyXG4gICAgICAodmlld0V2ZW50KT1cIm9uVmlld0V2ZW50KCRldmVudClcIlxyXG4gICAgICAob3Blbk1lZXRpbmcpPVwib25PcGVuTWVldGluZygkZXZlbnQpXCJcclxuICAgICAgKGxvZ0F0dGVuZGFuY2UpPVwib25Mb2dBdHRlbmRhbmNlKCRldmVudClcIlxyXG4gICAgICAobGVhdmVNZWV0aW5nKT1cIm9uTGVhdmVNZWV0aW5nKCRldmVudClcIlxyXG4gICAgICAobG9hZEV2ZW50TWVldGluZ3MpPVwib25Mb2FkRXZlbnRNZWV0aW5ncygkZXZlbnQpXCJcclxuICAgICAgKG5hdmlnYXRlVG9NZWV0aW5nKT1cIm9uTmF2aWdhdGVUb01lZXRpbmcoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EtdXBjb21pbmctbWVldGluZ3MtZXZlbnRzPlxyXG5cclxuICAgIDxpZWVlc2EteW91ci1ncm91cHNcclxuICAgICAgI2dyb3Vwc1NlY3Rpb25cclxuICAgICAgWyhleHBhbmRlZCldPVwiZ3JvdXBzRXhwYW5kZWRcIlxyXG4gICAgICBbZ3JvdXBzXT1cImdyb3Vwc1wiXHJcbiAgICAgIFtzZWN0aW9uU3RhdGVdPVwiZ3JvdXBzU3RhdGVcIlxyXG4gICAgICBbdG90YWxHcm91cHNdPVwiZ3JvdXBzLmxlbmd0aFwiXHJcbiAgICAgIFtwYWdlSW5kZXhdPVwiZ3JvdXBzUGFnZUluZGV4XCJcclxuICAgICAgW3BhZ2VTaXplXT1cImdyb3Vwc1BhZ2VTaXplXCJcclxuICAgICAgKHZpZXdBbGxHcm91cHMpPVwib25WaWV3QWxsR3JvdXBzKClcIlxyXG4gICAgICAocGFnZUNoYW5nZSk9XCJvbkdyb3Vwc1BhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EteW91ci1ncm91cHM+XHJcbiAgPC9tYWluPlxyXG48L2Rpdj5cclxuIl19
|
|
496
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC9zcmMvbGliL2Rhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBa0IsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFRL0UsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDM0gsT0FBTyxLQUFLLFNBQVMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLCtCQUErQixHQUNoQyxNQUFNLGdFQUFnRSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7O0FBaUJyRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFnQkgsTUFBTSxPQUFPLGtCQUFrQjtJQTRFN0I7Ozs7O09BS0c7SUFDSCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUMvQixDQUFDLEtBQUssRUFBRSxLQUFLLEVB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LE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZO2dCQUN4QyxxREFBcUQ7WUFDdkQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxLQUFLO1lBQzFCLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBM2ZVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDhPQUZsQixDQUFDLGFBQWEsQ0FBQyx5SEF5RVksVUFBVSx5R0FFWixVQUFVLDZCQ2xLaEQsZ29FQW9EQSxneVNEMkJJLFlBQVksNkhBQ1osK0JBQStCLDJmQUMvQixtQkFBbUIsbU5BQ25CLCtCQUErQjs7NEZBT3RCLGtCQUFrQjtrQkFmOUIsU0FBUzsrQkFFRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osK0JBQStCO3dCQUMvQixtQkFBbUI7d0JBQ25CLCtCQUErQjtxQkFDaEMsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLGFBQWEsQ0FBQztnTkFPakIsVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFHSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBdURQLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBR2xELGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSB9IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7IEFsZXJ0VHlwZSwgVXNlclBlcm1pc3Npb24gfSBmcm9tICdAaWVlZXNhLW5wbS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBBbGVydHNTZXJ2aWNlIH0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7IEF0dGVuZGFuY2VBY3Rpb25QZXJtaXNzaW9ucyB9IGZyb20gJy4vbW9kZWxzL2F0dGVuZGFuY2UtYWN0aW9uLXBlcm1pc3Npb25zLm1vZGVsJztcclxuaW1wb3J0IHsgQXR0ZW5kYW5jZVN0YXRlIH0gZnJvbSAnLi9tb2RlbHMvYXR0ZW5kYW5jZS1zdGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IERhc2hib2FyZFJvdXRlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvZGFzaGJvYXJkLXJvdXRlLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlY3Rpb25TdGF0ZSB9IGZyb20gJy4vbW9kZWxzL2Rhc2hib2FyZC1zZWN0aW9uLXN0YXRlLm1vZGVsJztcclxuaW1wb3J0IHsgRGFzaGJvYXJkVXNlckluZm8gfSBmcm9tICcuL21vZGVscy9kYXNoYm9hcmQtdXNlci1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBSb3cgfSBmcm9tICcuL21vZGVscy9ncm91cC1yb3cubW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlQ2hhbmdlIH0gZnJvbSAnLi9tb2RlbHMvcGFnZS1jaGFuZ2UubW9kZWwnO1xyXG5pbXBvcnQgeyBVcGNvbWluZ0V2ZW50IH0gZnJvbSAnLi9tb2RlbHMvdXBjb21pbmctZXZlbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBVcGNvbWluZ1N1bW1hcnkgfSBmcm9tICcuL21vZGVscy91cGNvbWluZy1zdW1tYXJ5Lm1vZGVsJztcclxuaW1wb3J0IHsgRGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZGFzaGJvYXJkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91c2VyLXBlcm1pc3Npb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVcGNvbWluZ01lZXRpbmdzRXZlbnRzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3VwY29taW5nLW1lZXRpbmdzLWV2ZW50cy91cGNvbWluZy1tZWV0aW5ncy1ldmVudHMuY29tcG9uZW50JztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHtcclxuICBEYXNoYm9hcmRKdW1wVGFyZ2V0LFxyXG4gIERhc2hib2FyZFdlbGNvbWVIZWFkZXJDb21wb25lbnQsXHJcbn0gZnJvbSAnLi9jb21wb25lbnRzL3dlbGNvbWUtaGVhZGVyL2Rhc2hib2FyZC13ZWxjb21lLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBZb3VyR3JvdXBzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3lvdXItZ3JvdXBzL3lvdXItZ3JvdXBzLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogQSBuYXZpZ2F0aW9uIGludGVudCBlbWl0dGVkIGJ5IHtAbGluayBEYXNoYm9hcmRDb21wb25lbnR9IGZvciB0aGUgaG9zdFxyXG4gKiBhcHBsaWNhdGlvbiB0byBhY3Qgb24uIFRoZSBsaWJyYXJ5IG5ldmVyIHBlcmZvcm1zIG5hdmlnYXRpb24gaXRzZWxmOyBpdCBlbWl0c1xyXG4gKiB0aGUgcmVzb2x2ZWQgdGFyZ2V0IGBwYXRoYCAoZnJvbSB0aGUge0BsaW5rIERhc2hib2FyZFJvdXRlQ29uZmlnfSkgdG9nZXRoZXJcclxuICogd2l0aCB0aGUgdHJpZ2dlcmluZyBpZGVudGlmaWVyIHNvIHRoZSBob3N0IGNhbiByb3V0ZSBhY2NvcmRpbmdseSAoUmVxIDExLjEpLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBEYXNoYm9hcmROYXZpZ2F0aW9uSW50ZW50IHtcclxuICAvKiogVGhlIHJlc29sdmVkIHRhcmdldCByb3V0ZSBwYXRoIGZyb20gdGhlIGFjdGl2ZSB7QGxpbmsgRGFzaGJvYXJkUm91dGVDb25maWd9LiAqL1xyXG4gIHBhdGg6IHN0cmluZztcclxuICAvKiogVGhlIGlkZW50aWZpZXIgdGhhdCB0cmlnZ2VyZWQgdGhlIG5hdmlnYXRpb24gKGV2ZW50L21lZXRpbmcvZ3JvdXAgaWQpLCB3aGVuIGFwcGxpY2FibGUuICovXHJcbiAgaWQ/OiBzdHJpbmc7XHJcbiAgLyoqIFF1ZXJ5IHBhcmFtcyB0byBhdHRhY2ggdG8gdGhlIG5hdmlnYXRpb24gKGUuZy4gZXZlbnRJZC9tZWV0aW5nSWQvYWN0aW9uVHlwZSkuICovXHJcbiAgcXVlcnlQYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG59XHJcblxyXG4vKipcclxuICogRGFzaGJvYXJkIChgaWVlZXNhLWRhc2hib2FyZGApIGlzIHRoZSByb290IGNvbnRhaW5lciBhbmQgc2luZ2xlIGhvc3QgZW50cnlcclxuICogcG9pbnQgZm9yIHRoZSBcIk5FU0MgUmV2aXNpb24gQ3ljbGVcIiBkYXNoYm9hcmQgbGFuZGluZyBwYWdlLiBJdCBvd25zIHRoZVxyXG4gKiBob3N0LXN1cHBsaWVkIGNvbmZpZ3VyYXRpb24gKGByb3V0ZVBhdGhzYCwgYGFwaUJhc2VVUkxgLCBgdXNlckluZm9gLFxyXG4gKiBgdXNlclBlcm1pc3Npb25zYCksIGNvbXBvc2VzIHRoZSBmb3VyIHJlZ2lvbnMg4oCUIHdlbGNvbWUgaGVhZGVyLCB1cGNvbWluZ1xyXG4gKiBtZWV0aW5ncyAmIGV2ZW50cywgeW91ciBncm91cHMsIGFuZCBmb290ZXIg4oCUIGFuZCBvcmNoZXN0cmF0ZXMgZGF0YSBsb2FkaW5nXHJcbiAqIGFuZCBhdHRlbmRhbmNlIGFjdGlvbnMgdGhyb3VnaCB0aGUge0BsaW5rIERhc2hib2FyZFNlcnZpY2V9LlxyXG4gKlxyXG4gKiBUaGUgY29tcG9uZW50IGlzIGNvbXBvc2l0aW9uLWZpcnN0IGFuZCBob3N0LWFnbm9zdGljOiBpdCBzdWJzY3JpYmVzIHRvIHRoZVxyXG4gKiBzZXJ2aWNlIG9ic2VydmFibGVzIChgdXBjb21pbmdFdmVudHMkYCwgYGdyb3VwcyRgLCB0aGUgcGVyLXNlY3Rpb24gc3RhdGVzLCB0aGVcclxuICogYXR0ZW5kYW5jZS1zdGF0ZSBtYXAsIGFuZCB0aGUgaW4tZmxpZ2h0IHNldCkgd2l0aCBgdGFrZVVudGlsKGRlc3Ryb3kkKWAgYW5kXHJcbiAqIHRyYWNrcyBgaXNNb2JpbGVWaWV3YCBmcm9tIHRoZSBQcmVzZW50YXRpb25fTGlicmFyeVxyXG4gKiB7QGxpbmsgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZX0gKFJlcSAxMy4xLCAxMy4yLCAxMy41LCAxNS4xLCAxNS4yKS4gQ2hpbGRcclxuICogbmF2aWdhdGlvbiBgQE91dHB1dCgpYHMgYXJlIGNvbXBvc2VkIGludG8gYSBzaW5nbGUge0BsaW5rIGRhc2hib2FyZE5hdmlnYXRlfVxyXG4gKiBzdHJlYW0gb2YgYHsgcGF0aCwgaWQgfWAgaW50ZW50cyByZXNvbHZlZCBmcm9tIGByb3V0ZVBhdGhzYCAoZmFsbGluZyBiYWNrIHRvXHJcbiAqIHRoZSBkZWZhdWx0IHJvdXRlIGNvbmZpZ3VyYXRpb24gaW4gYGNvbnN0YW50cy5qc29uYCB3aGVuIGByb3V0ZVBhdGhzYCBpc1xyXG4gKiBvbWl0dGVkKSAoUmVxIDUuMiwgNi40LCA3LjQsIDguMiwgOC43LCAxMS4xLCAxMS41KS4gQXR0ZW5kYW5jZSBgQE91dHB1dCgpYHNcclxuICogYXJlIGRlbGVnYXRlZCB0byB0aGUgc2VydmljZSwgYW5kIG9uIGZhaWx1cmUgdGhlIGF0dGVuZGFuY2UtYWN0aW9uIGVycm9yXHJcbiAqIG1lc3NhZ2UgZnJvbSBgY29uc3RhbnRzLmpzb25gIGlzIHN1cmZhY2VkIHZpYSB0aGUgc2hhcmVkIHtAbGluayBBbGVydHNTZXJ2aWNlfVxyXG4gKiAoUmVxIDcuNywgNy44LCAxMy43KS4gUGVyLXJvdyB7QGxpbmsgQXR0ZW5kYW5jZUFjdGlvblBlcm1pc3Npb25zfSBhcmUgY29tcHV0ZWRcclxuICogZnJvbSBgdXNlclBlcm1pc3Npb25zYCBhbmQgcGFzc2VkIGRvd24gdG8gdGhlIHJvd3MgKFJlcSAxMi4zKS5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWRhc2hib2FyZCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBVcGNvbWluZ01lZXRpbmdzRXZlbnRzQ29tcG9uZW50LFxyXG4gICAgWW91ckdyb3Vwc0NvbXBvbmVudCxcclxuICAgIERhc2hib2FyZFdlbGNvbWVIZWFkZXJDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Rhc2hib2FyZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgcHJvdmlkZXJzOiBbQWxlcnRzU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqIFVzZXItZmFjaW5nIHN0cmluZ3MgYW5kIHRoZSBkZWZhdWx0IHJvdXRlIGNvbmZpZyBzb3VyY2VkIGZyb20gYGNvbnN0YW50cy5qc29uYC4gKi9cclxuICBjb25zdGFudHMgPSBjb25zdGFudHM7XHJcblxyXG4gIC8qKiBIb3N0IG5hdmlnYXRpb24gcGF0aHM7IGZhbGxzIGJhY2sgdG8gdGhlIGBjb25zdGFudHMuanNvbmAgZGVmYXVsdCB3aGVuIG9taXR0ZWQgKFJlcSAxMS4xLCAxMS41KS4gKi9cclxuICBASW5wdXQoKSByb3V0ZVBhdGhzPzogRGFzaGJvYXJkUm91dGVDb25maWc7XHJcblxyXG4gIC8qKiBUaGUgaG9zdCBhcHBsaWNhdGlvbidzIEFQSSBiYXNlIFVSTCwgZm9yd2FyZGVkIHRvIHRoZSBzZXJ2aWNlIChSZXEgMTEuMikuICovXHJcbiAgQElucHV0KCkgYXBpQmFzZVVSTCE6IHN0cmluZztcclxuXHJcbiAgLyoqIFRoZSBzaWduZWQtaW4gdXNlcidzIGluZm8gdXNlZCBieSB0aGUgd2VsY29tZSBoZWFkZXIgZ3JlZXRpbmcgKFJlcSAxMS4zLCA0LjEpLiAqL1xyXG4gIEBJbnB1dCgpIHVzZXJJbmZvITogRGFzaGJvYXJkVXNlckluZm87XHJcblxyXG4gIC8qKiBUaGUgc2lnbmVkLWluIHVzZXIncyBwZXJtaXNzaW9ucyB1c2VkIHRvIGdhdGUgYXR0ZW5kYW5jZSBhY3Rpb25zIChSZXEgMTEuNCwgMTIuMykuICovXHJcbiAgQElucHV0KCkgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuXHJcbiAgLyoqIEVtaXRzIGEgcmVzb2x2ZWQgbmF2aWdhdGlvbiBpbnRlbnQgZm9yIHRoZSBob3N0IHRvIGFjdCBvbiAoUmVxIDUuMiwgNi40LCA3LjQsIDguMiwgOC43LCAxMS4xKS4gKi9cclxuICBAT3V0cHV0KCkgZGFzaGJvYXJkTmF2aWdhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPERhc2hib2FyZE5hdmlnYXRpb25JbnRlbnQ+KCk7XHJcblxyXG4gIC8qKiBUaGUgdXNlcidzIHVwY29taW5nIGV2ZW50cywgYm91bmQgdG8gdGhlIHVwY29taW5nIHNlY3Rpb24gKFJlcSAxMy4xLCAxMy4yKS4gKi9cclxuICB1cGNvbWluZ0V2ZW50czogVXBjb21pbmdFdmVudFtdID0gW107XHJcblxyXG4gIC8qKiBTZXJ2ZXItcHJvdmlkZWQgc3VtbWFyeSBjb3VudHMgKHBhZ2luYXRvciBsZW5ndGggKyBjb2xsYXBzZWQtc3VtbWFyeSBjb3VudHMpLiAqL1xyXG4gIHVwY29taW5nU3VtbWFyeTogVXBjb21pbmdTdW1tYXJ5ID0ge1xyXG4gICAgdG90YWxSZWNvcmRzOiAwLFxyXG4gICAgZXZlbnRDb3VudDogMCxcclxuICAgIHN0YW5kYWxvbmVNZWV0aW5nQ291bnQ6IDAsXHJcbiAgICBzdGFuZGFsb25lTWVldGluZ3NPcGVuRm9yQXR0ZW5kYW5jZUNvdW50OiAwLFxyXG4gIH07XHJcblxyXG4gIC8qKiBaZXJvLWJhc2VkIHBhZ2UgaW5kZXggb2YgdGhlIHVwY29taW5nIHNlY3Rpb24ncyBzZXJ2ZXItcGFnZWQgbGlzdC4gKi9cclxuICB1cGNvbWluZ1BhZ2VJbmRleCA9IDA7XHJcblxyXG4gIC8qKiBQYWdlIHNpemUgb2YgdGhlIHVwY29taW5nIHNlY3Rpb24ncyBzZXJ2ZXItcGFnZWQgbGlzdC4gKi9cclxuICB1cGNvbWluZ1BhZ2VTaXplID0gMTA7XHJcblxyXG4gIC8qKiBUaGUgdXNlcidzIGdyb3VwcywgYm91bmQgdG8gdGhlIGdyb3VwcyBzZWN0aW9uIChSZXEgMTMuMSwgMTMuMikuICovXHJcbiAgZ3JvdXBzOiBHcm91cFJvd1tdID0gW107XHJcblxyXG4gIC8qKiBUaGUgdXBjb21pbmctZXZlbnRzIHNlY3Rpb24ncyBsb2FkL2VtcHR5L2Vycm9yIHN0YXRlIChSZXEgMTMuMSwgMTMuMiwgMTMuNSkuICovXHJcbiAgdXBjb21pbmdTdGF0ZTogRGFzaGJvYXJkU2VjdGlvblN0YXRlID0gRGFzaGJvYXJkU2VjdGlvblN0YXRlLkxPQURJTkc7XHJcblxyXG4gIC8qKiBUaGUgZ3JvdXBzIHNlY3Rpb24ncyBsb2FkL2VtcHR5L2Vycm9yIHN0YXRlIChSZXEgMTMuMSwgMTMuMiwgMTMuNSkuICovXHJcbiAgZ3JvdXBzU3RhdGU6IERhc2hib2FyZFNlY3Rpb25TdGF0ZSA9IERhc2hib2FyZFNlY3Rpb25TdGF0ZS5MT0FESU5HO1xyXG5cclxuICAvKiogVGhlIHBlci1tZWV0aW5nIGF0dGVuZGFuY2Utc3RhdGUgbWFwIHBhc3NlZCBkb3duIHRvIHRoZSByb3dzLiAqL1xyXG4gIGF0dGVuZGFuY2VTdGF0ZXM6IFJlY29yZDxzdHJpbmcsIEF0dGVuZGFuY2VTdGF0ZT4gPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBzZXQgb2YgbWVldGluZyBpZHMgd2l0aCBhbiBhdHRlbmRhbmNlIGFjdGlvbiBhd2FpdGluZyByZXNvbHV0aW9uLiAqL1xyXG4gIGluRmxpZ2h0TWVldGluZ0lkczogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxuICAvKiogVGhlIHBlci1yb3cgYXR0ZW5kYW5jZS1hY3Rpb24gcGVybWlzc2lvbnMgZGVyaXZlZCBmcm9tIGB1c2VyUGVybWlzc2lvbnNgIChSZXEgMTIuMykuICovXHJcbiAgYXR0ZW5kYW5jZVBlcm1pc3Npb25zOiBBdHRlbmRhbmNlQWN0aW9uUGVybWlzc2lvbnMgPSB7XHJcbiAgICBjYW5Mb2dBdHRlbmRhbmNlOiBmYWxzZSxcclxuICAgIGNhbkxlYXZlTWVldGluZzogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgLyoqIFdoZXRoZXIgdGhlIHZpZXdwb3J0IGlzIGF0L2JlbG93IHRoZSBtb2JpbGUgYnJlYWtwb2ludCAoUmVxIDE1LjEsIDE1LjIpLiAqL1xyXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xyXG5cclxuICAvKiogV2hldGhlciB0aGUgVXBjb21pbmcgTWVldGluZ3MgJiBFdmVudHMgY2FyZCBpcyBleHBhbmRlZC4gU3RhcnRzIGV4cGFuZGVkLiAqL1xyXG4gIG1lZXRpbmdzRXhwYW5kZWQgPSB0cnVlO1xyXG5cclxuICAvKiogV2hldGhlciB0aGUgWW91ciBHcm91cHMgY2FyZCBpcyBleHBhbmRlZC4gU3RhcnRzIGNvbGxhcHNlZC4gKi9cclxuICBncm91cHNFeHBhbmRlZCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZWN0aW9uIGhvc3QgZWxlbWVudHMgdXNlZCB0byBzY3JvbGwgYSBcIkp1bXAgdG9cIiB0YXJnZXQgaW50byB2aWV3LiBSZWFkIGFzXHJcbiAgICogRWxlbWVudFJlZiAobm90IHRoZSBjb21wb25lbnQgaW5zdGFuY2UpIHNvIHRoZSBuYXRpdmUgZWxlbWVudCBpcyBhdmFpbGFibGVcclxuICAgKiBmb3Igc2Nyb2xsSW50b1ZpZXcuXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgndXBjb21pbmdTZWN0aW9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgdXBjb21pbmdTZWN0aW9uPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnZ3JvdXBzU2VjdGlvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxyXG4gIGdyb3Vwc1NlY3Rpb24/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogVG90YWwgbnVtYmVyIG9mIG1lZXRpbmdzIGFjcm9zcyB0aGUgbG9hZGVkIHVwY29taW5nIGV2ZW50cywgc2hvd24gaW4gdGhlXHJcbiAgICogd2VsY29tZSBoZWFkZXIncyBcIlVwY29taW5nIE1lZXRpbmdzICYgRXZlbnRzXCIgc2hvcnRjdXQgYmFkZ2UuXHJcbiAgICogQHJlYWRvbmx5XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBtZWV0aW5nc0NvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy51cGNvbWluZ0V2ZW50cy5yZWR1Y2UoXHJcbiAgICAgICh0b3RhbCwgZXZlbnQpID0+IHRvdGFsICsgKGV2ZW50Py5tZWV0aW5nQ291bnQgPz8gMCksXHJcbiAgICAgIDBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOdW1iZXIgb2YgbG9hZGVkIGdyb3Vwcywgc2hvd24gaW4gdGhlIHdlbGNvbWUgaGVhZGVyJ3MgXCJZb3VyIEdyb3Vwc1wiXHJcbiAgICogc2hvcnRjdXQgYmFkZ2UuXHJcbiAgICogQHJlYWRvbmx5XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBncm91cHNDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8qKiBUaGUgY3VycmVudCB6ZXJvLWJhc2VkIHBhZ2UgaW5kZXggb2YgdGhlIGdyb3VwcyB0YWJsZS4gKi9cclxuICBncm91cHNQYWdlSW5kZXggPSAwO1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgcGFnZSBzaXplIG9mIHRoZSBncm91cHMgdGFibGUgKDUgcm93cyBwZXIgcGFnZSBwZXIgdGhlIGRlc2lnbikuICovXHJcbiAgZ3JvdXBzUGFnZVNpemUgPSA1O1xyXG5cclxuICAvKiogQ29tcGxldGVzIG9uIGRlc3Ryb3kgdG8gdGVhciBkb3duIGFsbCBzdWJzY3JpcHRpb25zIChSZXEgMi40LCAyLjUpLiAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBkYXNoYm9hcmRTZXJ2aWNlOiBEYXNoYm9hcmRTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHVzZXJQZXJtaXNzaW9uc1NlcnZpY2U6IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyU2VydmljZTogQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgZGFzaGJvYXJkOiBmb3J3YXJkcyB0aGUgaG9zdCBjb25maWcgdG8gdGhlIHNlcnZpY2UsIGRlcml2ZXNcclxuICAgKiB0aGUgcGVyLXJvdyBhdHRlbmRhbmNlIHBlcm1pc3Npb25zLCBraWNrcyBvZmYgdGhlIHVwY29taW5nLWV2ZW50cyBhbmQgZ3JvdXBzXHJcbiAgICogbG9hZHMsIGFuZCB3aXJlcyB1cCBzdWJzY3JpcHRpb25zIHRvIHRoZSBzZXJ2aWNlIHN0YXRlIG9ic2VydmFibGVzIGFuZCB0aGVcclxuICAgKiBicmVha3BvaW50IG9ic2VydmVyIOKAlCBhbGwgY2xlYW5lZCB1cCB2aWEgYHRha2VVbnRpbChkZXN0cm95JClgIChSZXEgMTEuMixcclxuICAgKiAxMS40LCAxMi4zLCAxMy4xLCAxMy4yLCAxMy41LCAxNS4xLCAxNS4yKS5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5zZXRBcHBDb25maWcodGhpcy5hcGlCYXNlVVJMLCB0aGlzLnVzZXJQZXJtaXNzaW9ucyk7XHJcbiAgICB0aGlzLmF0dGVuZGFuY2VQZXJtaXNzaW9ucyA9XHJcbiAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zU2VydmljZS5tYXBUb0F0dGVuZGFuY2VBY3Rpb25QZXJtaXNzaW9ucyhcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uc1xyXG4gICAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaWJlVG9TZXJ2aWNlU3RhdGUoKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9CcmVha3BvaW50KCk7XHJcbiAgICB0aGlzLmxvYWRVcGNvbWluZ0V2ZW50cygpO1xyXG4gICAgdGhpcy5sb2FkR3JvdXBzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZWFycyBkb3duIGFsbCBzdWJzY3JpcHRpb25zIG9uIGRlc3Ryb3kgKFJlcSAyLjQsIDIuNSkuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSB3ZWxjb21lLWhlYWRlciBcIkp1bXAgdG9cIiBkYXRlIHNlbGVjdGlvbi4gVGhlIGRhc2hib2FyZCBjdXJyZW50bHlcclxuICAgKiBoYXMgbm8gZGF0ZS1zY29wZWQgZGF0YSBsb2FkLCBzbyB0aGUgc2VsZWN0aW9uIGlzIGFjY2VwdGVkIHdpdGhvdXQgc2lkZVxyXG4gICAqIGVmZmVjdHM7IHRoZSBob29rIGtlZXBzIHRoZSBoZWFkZXIncyBjb250cmFjdCBzYXRpc2ZpZWQgZm9yIGZ1dHVyZSBmaWx0ZXJpbmcuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25KdW1wVG9EYXRlU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICAvLyBObyBkYXRlLXNjb3BlZCByZWxvYWQgeWV0OyByZXRhaW5lZCBmb3IgZnV0dXJlIGRhdGUgZmlsdGVyaW5nIChSZXEgNC40KS5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYSB3ZWxjb21lLWhlYWRlciBcIkp1bXAgdG9cIiBzaG9ydGN1dDogb3BlbnMgdGhlIG1hdGNoaW5nIHNlY3Rpb24nc1xyXG4gICAqIGNhcmQgKHNvIGl0cyBjb250ZW50IGlzIHZpc2libGUpIGFuZCBzbW9vdGhseSBzY3JvbGxzIGl0IGludG8gdmlldy4gSXQgZG9lc1xyXG4gICAqIE5PVCBuYXZpZ2F0ZSBhd2F5IOKAlCB0aGUgc2hvcnRjdXQgaXMgYW4gaW4tcGFnZSBqdW1wIHRvIHRoZSBzZWN0aW9uLlxyXG4gICAqIEBwYXJhbSB7RGFzaGJvYXJkSnVtcFRhcmdldH0gdGFyZ2V0IC0gVGhlIHNlbGVjdGVkIHNob3J0Y3V0IHRhcmdldC5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRDb21wb25lbnRcclxuICAgKi9cclxuICBvbkp1bXBUb1Nob3J0Y3V0KHRhcmdldDogRGFzaGJvYXJkSnVtcFRhcmdldCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VjdGlvbiA9XHJcbiAgICAgIHRhcmdldCA9PT0gRGFzaGJvYXJkSnVtcFRhcmdldC5NRUVUSU5HU1xyXG4gICAgICAgID8gdGhpcy51cGNvbWluZ1NlY3Rpb25cclxuICAgICAgICA6IHRoaXMuZ3JvdXBzU2VjdGlvbjtcclxuXHJcbiAgICBpZiAodGFyZ2V0ID09PSBEYXNoYm9hcmRKdW1wVGFyZ2V0Lk1FRVRJTkdTKSB7XHJcbiAgICAgIHRoaXMubWVldGluZ3NFeHBhbmRlZCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyb3Vwc0V4cGFuZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTY3JvbGwgYWZ0ZXIgdGhlIGV4cGFuZCBoYXMgcmVuZGVyZWQgc28gdGhlIHRhcmdldCdzIGZpbmFsIHBvc2l0aW9uIGlzIHVzZWQuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgc2VjdGlvbj8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcclxuICAgICAgICBibG9jazogJ3N0YXJ0JyxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBcIlZpZXcgQWxsXCIgdXBjb21pbmctZXZlbnRzIG5hdmlnYXRpb24gaW50ZW50LCB0YXJnZXRpbmcgdGhlXHJcbiAgICogYHZpZXdBbGxFdmVudHNgIHJvdXRlIHdpdGggbm8gaWQgKFJlcSA1LjIsIDExLjEpLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVmlld0FsbEV2ZW50cygpOiB2b2lkIHtcclxuICAgIHRoaXMuZW1pdE5hdmlnYXRpb24odGhpcy5hY3RpdmVSb3V0ZUNvbmZpZy52aWV3QWxsRXZlbnRzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBcIlZpZXcgRXZlbnRcIiBuYXZpZ2F0aW9uIGludGVudCwgdGFyZ2V0aW5nIHRoZSBgZXZlbnREZXRhaWxgIHJvdXRlXHJcbiAgICogd2l0aCB0aGUgZXZlbnQgaWQgKFJlcSA2LjQsIDExLjEpLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudElkIC0gVGhlIGlkIG9mIHRoZSBldmVudCB0byB2aWV3LlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVmlld0V2ZW50KGV2ZW50SWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCFldmVudElkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZGFzaGJvYXJkTmF2aWdhdGUuZW1pdCh7XHJcbiAgICAgIHBhdGg6IHRoaXMuYWN0aXZlUm91dGVDb25maWcuZXZlbnREZXRhaWwsXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IGV2ZW50SWQgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIG9wZW4tbWVldGluZyBuYXZpZ2F0aW9uIGludGVudCB0byB0aGUgdmlldy1tZWV0aW5nIHNjcmVlbixcclxuICAgKiBtYXRjaGluZyB0aGUgcmVmZXJlbmNlIGxpc3Q6IGEgbWVldGluZyB1bmRlciBhbiBldmVudCB0YXJnZXRzXHJcbiAgICogYHZpZXdNZWV0aW5nVW5kZXJFdmVudGAgd2l0aCBgZXZlbnRJZGAgKyBgbWVldGluZ0lkYCArIGBhY3Rpb25UeXBlPWVkaXRgOyBhXHJcbiAgICogc3RhbmRhbG9uZSBtZWV0aW5nIHRhcmdldHMgYHZpZXdNZWV0aW5nYCB3aXRoIGBtZWV0aW5nSWRgICsgYGFjdGlvblR5cGU9ZWRpdGAuXHJcbiAgICogKFJldGFpbmVkIGZvciB0aGUgbGVnYWN5IHN0cmluZyBgb3Blbk1lZXRpbmdgIG91dHB1dC4pXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lZXRpbmdJZCAtIFRoZSBpZCBvZiB0aGUgbWVldGluZyB0byBvcGVuLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uT3Blbk1lZXRpbmcobWVldGluZ0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMub25OYXZpZ2F0ZVRvTWVldGluZyh7IGV2ZW50SWQ6ICcnLCBtZWV0aW5nSWQgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgXCJWaWV3IEFsbFwiIGdyb3VwcyBuYXZpZ2F0aW9uIGludGVudCwgdGFyZ2V0aW5nIHRoZVxyXG4gICAqIGB2aWV3QWxsR3JvdXBzYCByb3V0ZSB3aXRoIG5vIGlkIChSZXEgOC4yLCAxMS4xKS5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRDb21wb25lbnRcclxuICAgKi9cclxuICBvblZpZXdBbGxHcm91cHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVtaXROYXZpZ2F0aW9uKHRoaXMuYWN0aXZlUm91dGVDb25maWcudmlld0FsbEdyb3Vwcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgZ3JvdXAtZGV0YWlsIG5hdmlnYXRpb24gaW50ZW50LCB0YXJnZXRpbmcgdGhlIGBncm91cERldGFpbGAgcm91dGVcclxuICAgKiB3aXRoIHRoZSBncm91cCBpZCAoUmVxIDguNywgMTEuMSkuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwSWQgLSBUaGUgaWQgb2YgdGhlIHNlbGVjdGVkIGdyb3VwLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uR3JvdXBTZWxlY3RlZChncm91cElkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZW1pdE5hdmlnYXRpb24odGhpcy5hY3RpdmVSb3V0ZUNvbmZpZy5ncm91cERldGFpbCwgZ3JvdXBJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBncm91cHMgdGFibGUgcGFnaW5nIHN0YXRlIGluIHJlc3BvbnNlIHRvIGEgcGFnaW5hdG9yIGNoYW5nZSBzb1xyXG4gICAqIHRoZSBncm91cHMgc2VjdGlvbiByZWZsZWN0cyB0aGUgcmVxdWVzdGVkIHBhZ2UgKFJlcSA4LjEwKS5cclxuICAgKiBAcGFyYW0ge1BhZ2VDaGFuZ2V9IHBhZ2UgLSBUaGUgcmVxdWVzdGVkIHBhZ2UgaW5kZXggYW5kIHNpemUuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Hcm91cHNQYWdlQ2hhbmdlKHBhZ2U6IFBhZ2VDaGFuZ2UpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzUGFnZUluZGV4ID0gcGFnZS5wYWdlSW5kZXg7XHJcbiAgICB0aGlzLmdyb3Vwc1BhZ2VTaXplID0gcGFnZS5wYWdlU2l6ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExhemlseSBsb2FkcyAob3IgcGFnaW5hdGVzKSB0aGUgY2hpbGQgbWVldGluZ3Mgb2YgYW4gZXhwYW5kZWQgRVZFTlQgY2FyZCB2aWFcclxuICAgKiB0aGUgc2VydmljZSwgc3VyZmFjaW5nIHRoZSBhdHRlbmRhbmNlIGVycm9yIG1lc3NhZ2Ugb24gZmFpbHVyZS4gRWFjaCBldmVudFxyXG4gICAqIHBhZ2luYXRlcyBpbmRlcGVuZGVudGx5LiBMb2FkaW5nIGZlZWRiYWNrIGlzIGhhbmRsZWQgYnkgdGhlIGhvc3RcclxuICAgKiBhcHBsaWNhdGlvbidzIGdsb2JhbCBzcGlubmVyLCBzbyBubyBwZXItZXZlbnQgbG9hZGluZyBzdGF0ZSBpcyB0cmFja2VkIGhlcmUuXHJcbiAgICogQHBhcmFtIHt7IGV2ZW50SWQ6IHN0cmluZzsgcGFnZTogbnVtYmVyOyBzaXplOiBudW1iZXIgfX0gcmVxdWVzdCAtIFRoZSBldmVudCBpZCBhbmQgb25lLWJhc2VkIHBhZ2UgdG8gbG9hZC5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRDb21wb25lbnRcclxuICAgKi9cclxuICBvbkxvYWRFdmVudE1lZXRpbmdzKHJlcXVlc3Q6IHtcclxuICAgIGV2ZW50SWQ6IHN0cmluZztcclxuICAgIHBhZ2U6IG51bWJlcjtcclxuICAgIHNpemU6IG51bWJlcjtcclxuICB9KTogdm9pZCB7XHJcbiAgICBpZiAoIXJlcXVlc3Q/LmV2ZW50SWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICAgIC5sb2FkRXZlbnRNZWV0aW5ncyhyZXF1ZXN0LmV2ZW50SWQsIHJlcXVlc3QucGFnZSwgcmVxdWVzdC5zaXplKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIGVycm9yOiAoKSA9PiB0aGlzLnNob3dBdHRlbmRhbmNlRXJyb3IoKSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGFuIGF0dGVuZGFuY2UtYnV0dG9uIGFjdGl2YXRpb24gZm9yIGFuIEluLVByb2dyZXNzIG1lZXRpbmcgYnlcclxuICAgKiBlbWl0dGluZyBhIG5hdmlnYXRpb24gaW50ZW50IHRvIHRoZSB2aWV3LW1lZXRpbmcgc2NyZWVuIHdpdGggYGV2ZW50SWRgLFxyXG4gICAqIGBtZWV0aW5nSWRgLCBhbmQgYGFjdGlvblR5cGU9ZWRpdGAgcXVlcnkgcGFyYW1zIOKAlCBwcm9kdWNpbmcgYSBVUkwgbGlrZVxyXG4gICAqIGAvZXZlbnRzLWFuZC1tZWV0aW5ncy92aWV3LWV2ZW50L3ZpZXctbWVldGluZz9ldmVudElkPS4uLiZtZWV0aW5nSWQ9Li4uJmFjdGlvblR5cGU9ZWRpdGAuXHJcbiAgICogVGhlIExvZyBBdHRlbmRhbmNlIHBvcHVwIGlzIG9wZW5lZCBieSB0aGF0IGRlc3RpbmF0aW9uIHBhZ2UuXHJcbiAgICogQHBhcmFtIHt7IGV2ZW50SWQ6IHN0cmluZzsgbWVldGluZ0lkOiBzdHJpbmcgfX0gcmVxdWVzdCAtIFRoZSBtZWV0aW5nIGlkZW50aXR5LlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uTmF2aWdhdGVUb01lZXRpbmcocmVxdWVzdDoge1xyXG4gICAgZXZlbnRJZDogc3RyaW5nO1xyXG4gICAgbWVldGluZ0lkOiBzdHJpbmc7XHJcbiAgICBsb2dBdHRlbmRhbmNlPzogYm9vbGVhbjtcclxuICAgIGxlYXZlTWVldGluZz86IGJvb2xlYW47XHJcbiAgfSk6IHZvaWQge1xyXG4gICAgaWYgKCFyZXF1ZXN0Py5tZWV0aW5nSWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5hY3RpdmVSb3V0ZUNvbmZpZztcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICBtZWV0aW5nSWQ6IHJlcXVlc3QubWVldGluZ0lkLFxyXG4gICAgICBhY3Rpb25UeXBlOiAnZWRpdCcsXHJcbiAgICB9O1xyXG4gICAgLy8gTWVldGluZyB1bmRlciBhbiBldmVudCDihpIgdmlldy1tZWV0aW5nLXVuZGVyLWV2ZW50IHdpdGggZXZlbnRJZDsgb3RoZXJ3aXNlXHJcbiAgICAvLyB0aGUgc3RhbmRhbG9uZSB2aWV3LW1lZXRpbmcgcm91dGUuXHJcbiAgICBsZXQgcGF0aDogc3RyaW5nO1xyXG4gICAgaWYgKHJlcXVlc3QuZXZlbnRJZCkge1xyXG4gICAgICBxdWVyeVBhcmFtc1snZXZlbnRJZCddID0gcmVxdWVzdC5ldmVudElkO1xyXG4gICAgICBwYXRoID1cclxuICAgICAgICBjb25maWcudmlld01lZXRpbmdVbmRlckV2ZW50ID8/XHJcbiAgICAgICAgdGhpcy5jb25zdGFudHMuZGVmYXVsdFJvdXRlQ29uZmlnLnZpZXdNZWV0aW5nVW5kZXJFdmVudDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhdGggPVxyXG4gICAgICAgIGNvbmZpZy52aWV3TWVldGluZyA/PyB0aGlzLmNvbnN0YW50cy5kZWZhdWx0Um91dGVDb25maWcudmlld01lZXRpbmc7XHJcbiAgICB9XHJcbiAgICAvLyBSZXF1ZXN0IHRoZSBtYXRjaGluZyBwb3B1cCBhdXRvLW9wZW4gb24gdGhlIHZpZXctbWVldGluZyBwYWdlLlxyXG4gICAgaWYgKHJlcXVlc3QubG9nQXR0ZW5kYW5jZSkge1xyXG4gICAgICBxdWVyeVBhcmFtc1snbG9nQXR0ZW5kYW5jZSddID0gJ3RydWUnO1xyXG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LmxlYXZlTWVldGluZykge1xyXG4gICAgICBxdWVyeVBhcmFtc1snbGVhdmVNZWV0aW5nJ10gPSAndHJ1ZSc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhc2hib2FyZE5hdmlnYXRlLmVtaXQoeyBwYXRoLCBxdWVyeVBhcmFtcyB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGVnYXRlcyBhIGxvZy1hdHRlbmRhbmNlIHJlcXVlc3QgdG8gdGhlIHNlcnZpY2UsIHN1cmZhY2luZyB0aGVcclxuICAgKiBhdHRlbmRhbmNlLWFjdGlvbiBlcnJvciBtZXNzYWdlIHZpYSB0aGUgc2hhcmVkIHtAbGluayBBbGVydHNTZXJ2aWNlfSBvblxyXG4gICAqIGZhaWx1cmUgd2hpbGUgdGhlIHNlcnZpY2UgcmV0YWlucyB0aGUgcHJpb3IgZGlzcGxheWVkIHN0YXRlIChSZXEgNy43LCAxMy43KS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVldGluZ0lkIC0gVGhlIG1lZXRpbmcgdG8gbG9nIGF0dGVuZGFuY2UgZm9yLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uTG9nQXR0ZW5kYW5jZShtZWV0aW5nSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICAgIC5sb2dBdHRlbmRhbmNlKG1lZXRpbmdJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBlcnJvcjogKCkgPT4gdGhpcy5zaG93QXR0ZW5kYW5jZUVycm9yKCksXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZWdhdGVzIGEgbGVhdmUtbWVldGluZyByZXF1ZXN0IHRvIHRoZSBzZXJ2aWNlLCBzdXJmYWNpbmcgdGhlXHJcbiAgICogYXR0ZW5kYW5jZS1hY3Rpb24gZXJyb3IgbWVzc2FnZSB2aWEgdGhlIHNoYXJlZCB7QGxpbmsgQWxlcnRzU2VydmljZX0gb25cclxuICAgKiBmYWlsdXJlIHdoaWxlIHRoZSBzZXJ2aWNlIHJldGFpbnMgdGhlIHByaW9yIGRpc3BsYXllZCBzdGF0ZSAoUmVxIDcuOCwgMTMuNykuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lZXRpbmdJZCAtIFRoZSBtZWV0aW5nIHRvIGxlYXZlLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uTGVhdmVNZWV0aW5nKG1lZXRpbmdJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2VcclxuICAgICAgLmxlYXZlTWVldGluZyhtZWV0aW5nSWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMuc2hvd0F0dGVuZGFuY2VFcnJvcigpLFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSByb3V0ZSBjb25maWd1cmF0aW9uIGluIGVmZmVjdDogdGhlIGhvc3Qtc3VwcGxpZWQgYHJvdXRlUGF0aHNgIHdoZW5cclxuICAgKiBwcm92aWRlZCwgb3RoZXJ3aXNlIHRoZSBkZWZhdWx0IHJvdXRlIGNvbmZpZyBmcm9tIGBjb25zdGFudHMuanNvbmAgc29cclxuICAgKiBuYXZpZ2F0aW9uIGludGVudHMgYWx3YXlzIGNhcnJ5IHZhbGlkIHRhcmdldHMgKFJlcSAxMS4xLCAxMS41KS5cclxuICAgKiBAcmV0dXJuIHtEYXNoYm9hcmRSb3V0ZUNvbmZpZ30gVGhlIGFjdGl2ZSByb3V0ZSBjb25maWd1cmF0aW9uLlxyXG4gICAqIEBtZW1iZXJvZiBEYXNoYm9hcmRDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGdldCBhY3RpdmVSb3V0ZUNvbmZpZygpOiBEYXNoYm9hcmRSb3V0ZUNvbmZpZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVBhdGhzID8/IHRoaXMuY29uc3RhbnRzLmRlZmF1bHRSb3V0ZUNvbmZpZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmliZXMgdG8gdGhlIHNlcnZpY2UncyBzdGF0ZSBvYnNlcnZhYmxlcywgbWlycm9yaW5nIGVhY2ggaW50byBhIGxvY2FsXHJcbiAgICogZmllbGQgZm9yIHRoZSB0ZW1wbGF0ZSB0byBiaW5kLiBBbGwgc3Vic2NyaXB0aW9ucyBhcmUgdG9ybiBkb3duIHZpYVxyXG4gICAqIGB0YWtlVW50aWwoZGVzdHJveSQpYCAoUmVxIDEzLjEsIDEzLjIsIDEzLjUpLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9TZXJ2aWNlU3RhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UudXBjb21pbmdFdmVudHMkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZXZlbnRzKSA9PiAodGhpcy51cGNvbWluZ0V2ZW50cyA9IGV2ZW50cykpO1xyXG5cclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS51cGNvbWluZ1N1bW1hcnkkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoc3VtbWFyeSkgPT4gKHRoaXMudXBjb21pbmdTdW1tYXJ5ID0gc3VtbWFyeSkpO1xyXG5cclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5ncm91cHMkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZ3JvdXBzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ncm91cHMgPSBncm91cHM7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS51cGNvbWluZ1N0YXRlJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRlKSA9PiAodGhpcy51cGNvbWluZ1N0YXRlID0gc3RhdGUpKTtcclxuXHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ3JvdXBzU3RhdGUkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+ICh0aGlzLmdyb3Vwc1N0YXRlID0gc3RhdGUpKTtcclxuXHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuYXR0ZW5kYW5jZVN0YXRlcyRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZXMpID0+ICh0aGlzLmF0dGVuZGFuY2VTdGF0ZXMgPSBzdGF0ZXMpKTtcclxuXHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuaW5GbGlnaHRNZWV0aW5nSWRzJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGlkcykgPT4gKHRoaXMuaW5GbGlnaHRNZWV0aW5nSWRzID0gaWRzKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpYmVzIHRvIHRoZSBQcmVzZW50YXRpb25fTGlicmFyeSBicmVha3BvaW50IG9ic2VydmVyIHRvIGtlZXBcclxuICAgKiBgaXNNb2JpbGVWaWV3YCBpbiBzeW5jIHdpdGggdGhlIHZpZXdwb3J0IChSZXEgMTUuMSwgMTUuMikuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0JyZWFrcG9pbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2VcclxuICAgICAgLmdldEJyZWFrcG9pbnQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogeyBtYXRjaGVzOiBib29sZWFuIH0pID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdD8ubWF0Y2hlcztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyB0aGUgdXBjb21pbmctZXZlbnRzIGxvYWQsIHNldHRpbmcgdGhlIHNlY3Rpb24gdG8gYEVSUk9SYCBvbiBmYWlsdXJlXHJcbiAgICogc28gb25seSB0aGUgc2VjdGlvbiBlcnJvciByZWdpb24gcmVuZGVycyAoUmVxIDEzLjEsIDEzLjIsIDEzLjUpLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgbG9hZFVwY29taW5nRXZlbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICAgIC5sb2FkVXBjb21pbmdFdmVudHModGhpcy51cGNvbWluZ1BhZ2VJbmRleCArIDEsIHRoaXMudXBjb21pbmdQYWdlU2l6ZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBlcnJvcjogKCkgPT4gKHRoaXMudXBjb21pbmdTdGF0ZSA9IERhc2hib2FyZFNlY3Rpb25TdGF0ZS5FUlJPUiksXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgdXBjb21pbmcgc2VjdGlvbidzIHBhZ2luYXRvciBjaGFuZ2UgYnkgcmVxdWVzdGluZyB0aGUgbWF0Y2hpbmdcclxuICAgKiBzZXJ2ZXIgcGFnZS4gVGhlIGxpc3QgZW5kcG9pbnQgaXMgc2VydmVyLXBhZ2VkLCBzbyB0aGUgcGFnaW5hdG9yIGxlbmd0aCBpc1xyXG4gICAqIHRoZSByZXNwb25zZSBgdG90YWxSZWNvcmRzYDsgcGFnZS9zaXplIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIG9uZS1iYXNlZCBBUElcclxuICAgKiBwYWdlIGFuZCBhIGZyZXNoIHBhZ2UgaXMgbG9hZGVkIChubyBjbGllbnQtc2lkZSBzbGljaW5nKSAoUmVxIDMueCkuXHJcbiAgICogQHBhcmFtIHtQYWdlQ2hhbmdlfSBwYWdlIC0gVGhlIHJlcXVlc3RlZCB6ZXJvLWJhc2VkIHBhZ2UgaW5kZXggYW5kIHNpemUuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25VcGNvbWluZ1BhZ2VDaGFuZ2UocGFnZTogUGFnZUNoYW5nZSk6IHZvaWQge1xyXG4gICAgdGhpcy51cGNvbWluZ1BhZ2VJbmRleCA9IHBhZ2UucGFnZUluZGV4O1xyXG4gICAgdGhpcy51cGNvbWluZ1BhZ2VTaXplID0gcGFnZS5wYWdlU2l6ZTtcclxuICAgIHRoaXMubG9hZFVwY29taW5nRXZlbnRzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyB0aGUgZ3JvdXBzIGxvYWQsIHNldHRpbmcgdGhlIHNlY3Rpb24gdG8gYEVSUk9SYCBvbiBmYWlsdXJlIHNvIG9ubHlcclxuICAgKiB0aGUgc2VjdGlvbiBlcnJvciByZWdpb24gcmVuZGVycy4gSXNvbGF0ZWQgZnJvbSB0aGUgdXBjb21pbmctZXZlbnRzIGxvYWQgc29cclxuICAgKiBvbmUgZmFpbGluZyBkb2VzIG5vdCBhZmZlY3QgdGhlIG90aGVyIChSZXEgMTMuMSwgMTMuMiwgMTMuNSkuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkR3JvdXBzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICAgIC5sb2FkR3JvdXBzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBlcnJvcjogKCkgPT4gKHRoaXMuZ3JvdXBzU3RhdGUgPSBEYXNoYm9hcmRTZWN0aW9uU3RhdGUuRVJST1IpLFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXBvc2VzIGFuZCBlbWl0cyBhIHtAbGluayBEYXNoYm9hcmROYXZpZ2F0aW9uSW50ZW50fSBmb3IgdGhlIGhvc3QgZnJvbSB0aGVcclxuICAgKiByZXNvbHZlZCB0YXJnZXQgcGF0aCBhbmQgYW4gb3B0aW9uYWwgdHJpZ2dlcmluZyBpZCAoUmVxIDExLjEpLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHJlc29sdmVkIHRhcmdldCByb3V0ZSBwYXRoLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbaWRdIC0gVGhlIHRyaWdnZXJpbmcgaWRlbnRpZmllciwgd2hlbiBhcHBsaWNhYmxlLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhc2hib2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZW1pdE5hdmlnYXRpb24ocGF0aDogc3RyaW5nLCBpZD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXNoYm9hcmROYXZpZ2F0ZS5lbWl0KGlkID8geyBwYXRoLCBpZCB9IDogeyBwYXRoIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3VyZmFjZXMgdGhlIGF0dGVuZGFuY2UtYWN0aW9uIGVycm9yIG1lc3NhZ2UgZnJvbSBgY29uc3RhbnRzLmpzb25gIHZpYSB0aGVcclxuICAgKiBzaGFyZWQge0BsaW5rIEFsZXJ0c1NlcnZpY2V9IChSZXEgMTMuNykuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGFzaGJvYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzaG93QXR0ZW5kYW5jZUVycm9yKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgbWVzc2FnZTpcclxuICAgICAgICB0aGlzLmNvbnN0YW50cz8uYXR0ZW5kYW5jZT8uZXJyb3JNZXNzYWdlID8/XHJcbiAgICAgICAgJ1VuYWJsZSB0byB1cGRhdGUgeW91ciBhdHRlbmRhbmNlLiBQbGVhc2UgdHJ5IGFnYWluLicsXHJcbiAgICAgIGFsZXJ0VHlwZTogQWxlcnRUeXBlLkVSUk9SLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImllZWVzYS1kYXNoYm9hcmRcIlxyXG4gIFtuZ0NsYXNzXT1cInsgJ2llZWVzYS1kYXNoYm9hcmQtLW1vYmlsZSc6IGlzTW9iaWxlVmlldyB9XCJcclxuPlxyXG4gIDxpZWVlc2EtZGFzaGJvYXJkLXdlbGNvbWUtaGVhZGVyXHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXNoYm9hcmRfX3dlbGNvbWVcIlxyXG4gICAgW3VzZXJOYW1lXT1cInVzZXJJbmZvPy5uYW1lID8/ICcnXCJcclxuICAgIFttZWV0aW5nc0NvdW50XT1cIm1lZXRpbmdzQ291bnRcIlxyXG4gICAgW2dyb3Vwc0NvdW50XT1cImdyb3Vwc0NvdW50XCJcclxuICAgIChzaG9ydGN1dFNlbGVjdGVkKT1cIm9uSnVtcFRvU2hvcnRjdXQoJGV2ZW50KVwiXHJcbiAgPjwvaWVlZXNhLWRhc2hib2FyZC13ZWxjb21lLWhlYWRlcj5cclxuXHJcbiAgPG1haW4gY2xhc3M9XCJpZWVlc2EtZGFzaGJvYXJkX19jb250ZW50XCI+XHJcbiAgICA8aWVlZXNhLXVwY29taW5nLW1lZXRpbmdzLWV2ZW50c1xyXG4gICAgICAjdXBjb21pbmdTZWN0aW9uXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWRhc2hib2FyZF9fdXBjb21pbmdcIlxyXG4gICAgICBbKGV4cGFuZGVkKV09XCJtZWV0aW5nc0V4cGFuZGVkXCJcclxuICAgICAgW2V2ZW50c109XCJ1cGNvbWluZ0V2ZW50c1wiXHJcbiAgICAgIFtzZWN0aW9uU3RhdGVdPVwidXBjb21pbmdTdGF0ZVwiXHJcbiAgICAgIFtwZXJtaXNzaW9uc109XCJhdHRlbmRhbmNlUGVybWlzc2lvbnNcIlxyXG4gICAgICBbYXR0ZW5kYW5jZVN0YXRlc109XCJhdHRlbmRhbmNlU3RhdGVzXCJcclxuICAgICAgW2luRmxpZ2h0TWVldGluZ0lkc109XCJpbkZsaWdodE1lZXRpbmdJZHNcIlxyXG4gICAgICBbaXNNb2JpbGVWaWV3XT1cImlzTW9iaWxlVmlld1wiXHJcbiAgICAgIFt0b3RhbFJlY29yZHNdPVwidXBjb21pbmdTdW1tYXJ5LnRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgIFtldmVudENvdW50XT1cInVwY29taW5nU3VtbWFyeS5ldmVudENvdW50XCJcclxuICAgICAgW3N0YW5kYWxvbmVNZWV0aW5nQ291bnRdPVwidXBjb21pbmdTdW1tYXJ5LnN0YW5kYWxvbmVNZWV0aW5nQ291bnRcIlxyXG4gICAgICBbc3RhbmRhbG9uZU1lZXRpbmdzT3BlbkZvckF0dGVuZGFuY2VDb3VudF09XCJ1cGNvbWluZ1N1bW1hcnkuc3RhbmRhbG9uZU1lZXRpbmdzT3BlbkZvckF0dGVuZGFuY2VDb3VudFwiXHJcbiAgICAgIFtwYWdlSW5kZXhdPVwidXBjb21pbmdQYWdlSW5kZXhcIlxyXG4gICAgICBbcGFnZVNpemVdPVwidXBjb21pbmdQYWdlU2l6ZVwiXHJcbiAgICAgICh2aWV3QWxsKT1cIm9uVmlld0FsbEV2ZW50cygpXCJcclxuICAgICAgKHZpZXdFdmVudCk9XCJvblZpZXdFdmVudCgkZXZlbnQpXCJcclxuICAgICAgKG9wZW5NZWV0aW5nKT1cIm9uT3Blbk1lZXRpbmcoJGV2ZW50KVwiXHJcbiAgICAgIChsb2dBdHRlbmRhbmNlKT1cIm9uTG9nQXR0ZW5kYW5jZSgkZXZlbnQpXCJcclxuICAgICAgKGxlYXZlTWVldGluZyk9XCJvbkxlYXZlTWVldGluZygkZXZlbnQpXCJcclxuICAgICAgKGxvYWRFdmVudE1lZXRpbmdzKT1cIm9uTG9hZEV2ZW50TWVldGluZ3MoJGV2ZW50KVwiXHJcbiAgICAgIChzZWN0aW9uUGFnZUNoYW5nZSk9XCJvblVwY29taW5nUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKG5hdmlnYXRlVG9NZWV0aW5nKT1cIm9uTmF2aWdhdGVUb01lZXRpbmcoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EtdXBjb21pbmctbWVldGluZ3MtZXZlbnRzPlxyXG5cclxuICAgIDxpZWVlc2EteW91ci1ncm91cHNcclxuICAgICAgI2dyb3Vwc1NlY3Rpb25cclxuICAgICAgWyhleHBhbmRlZCldPVwiZ3JvdXBzRXhwYW5kZWRcIlxyXG4gICAgICBbZ3JvdXBzXT1cImdyb3Vwc1wiXHJcbiAgICAgIFtzZWN0aW9uU3RhdGVdPVwiZ3JvdXBzU3RhdGVcIlxyXG4gICAgICBbdG90YWxHcm91cHNdPVwiZ3JvdXBzLmxlbmd0aFwiXHJcbiAgICAgIFtwYWdlSW5kZXhdPVwiZ3JvdXBzUGFnZUluZGV4XCJcclxuICAgICAgW3BhZ2VTaXplXT1cImdyb3Vwc1BhZ2VTaXplXCJcclxuICAgICAgKHZpZXdBbGxHcm91cHMpPVwib25WaWV3QWxsR3JvdXBzKClcIlxyXG4gICAgICAocGFnZUNoYW5nZSk9XCJvbkdyb3Vwc1BhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EteW91ci1ncm91cHM+XHJcbiAgPC9tYWluPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbWVldGluZy1saXN0LWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9tb2RlbHMvZXZlbnQtbWVldGluZy1saXN0LWl0ZW0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dGVuZGFuY2VTdGF0ZSB9IGZyb20gJy4vYXR0ZW5kYW5jZS1zdGF0ZS5tb2RlbCc7XHJcblxyXG4vKipcclxuICogUmF3IGNvbWJpbmVkIGxpc3QgaXRlbSByZXR1cm5lZCBieSB0aGUgaG9tZSBldmVudHMtJi1tZWV0aW5ncyBlbmRwb2ludFxyXG4gKiAoYFBPU1Qge2FwaUJhc2VVcmx9L21lZXRpbmdzL2hvbWUvZXZlbnRzQW5kTWVldGluZ3NgKS4gQSBzaW5nbGUgbGlzdCBjb250YWluc1xyXG4gKiBib3RoIEVWRU5UIHJvd3MgKGBpc01lZXRpbmdFdmVudCA9PT0gdHJ1ZWAsIHdoaWNoIG93biBjaGlsZCBtZWV0aW5ncykgYW5kXHJcbiAqIFNUQU5EQUxPTkUgTUVFVElORyByb3dzIChgaXNNZWV0aW5nRXZlbnQgPT09IGZhbHNlYCkuXHJcbiAqXHJcbiAqIERhdGVzIGFyZSBJU08tODYwMSBzdHJpbmdzIChlLmcuIFwiMjAyNi0wOS0xOVQwOTowMDowMFwiKS4gUm93LXR5cGUgZmllbGRzIGFyZVxyXG4gKiBvbWl0dGVkIChOT05fTlVMTCkgd2hlbiBub3QgYXBwbGljYWJsZTpcclxuICogLSBFVkVOVCByb3dzIGNhcnJ5IHtAbGluayB0b3RhbE1lZXRpbmdDb3VudH0gLyB7QGxpbmsgbWVldGluZ3NPcGVuRm9yQXR0ZW5kYW5jZUNvdW50fTsgbm8gYGF0dGVuZGFuY2VTdGF0ZWAuXHJcbiAqIC0gU1RBTkRBTE9ORSByb3dzIGNhcnJ5IHtAbGluayBhdHRlbmRhbmNlU3RhdGV9OyBubyBldmVudCBjb3VudHMuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50TWVldGluZ0xpc3RJdGVtIHtcclxuICAvKiogU3RhYmxlIGlkZW50aWZpZXIgb2YgdGhlIGV2ZW50IG9yIHN0YW5kYWxvbmUgbWVldGluZy4gKi9cclxuICBpZDogc3RyaW5nO1xyXG4gIC8qKiBFdmVudCAvIG1lZXRpbmcgZGlzcGxheSBuYW1lLiAqL1xyXG4gIG5hbWU6IHN0cmluZztcclxuICAvKiogU3RhcnQgZGF0ZS10aW1lIGFzIGFuIElTTy04NjAxIHN0cmluZy4gKi9cclxuICBzdGFydERhdGVUaW1lOiBzdHJpbmc7XHJcbiAgLyoqIEVuZCBkYXRlLXRpbWUgYXMgYW4gSVNPLTg2MDEgc3RyaW5nLiAqL1xyXG4gIGVuZERhdGVUaW1lOiBzdHJpbmc7XHJcbiAgLyoqIElBTkEgdGltZXpvbmUgc3RyaW5nLCBlLmcuIFwiQXNpYS9Lb2xrYXRhXCIuICovXHJcbiAgdGltZVpvbmU6IHN0cmluZztcclxuICAvKiogT3duaW5nIGdyb3VwIGlkLiAqL1xyXG4gIGdyb3VwSWQ/OiBzdHJpbmc7XHJcbiAgLyoqIE93bmluZyBncm91cCBkaXNwbGF5IG5hbWUuICovXHJcbiAgZ3JvdXBOYW1lPzogc3RyaW5nO1xyXG4gIC8qKiBPd25pbmcgZ3JvdXAgYWNyb255bSwgd2hlbiBwcm92aWRlZC4gKi9cclxuICBncm91cEFjcm9ueW0/OiBzdHJpbmc7XHJcbiAgLyoqIFJvb20gLyBsb2NhdGlvbiB0ZXh0LCB3aGVuIHByb3ZpZGVkIChudWxsIGZvciB2aXJ0dWFsL25vbmUpLiAqL1xyXG4gIG1lZXRpbmdMb2NhdGlvbj86IHN0cmluZyB8IG51bGw7XHJcbiAgLyoqIFRydWUgd2hlbiB0aGlzIHJvdyBpcyBhbiBFVkVOVCB0aGF0IG93bnMgY2hpbGQgbWVldGluZ3MuICovXHJcbiAgaGFzQ2hpbGRyZW4/OiBib29sZWFuO1xyXG4gIC8qKiBUcnVlIHdoZW4gdGhlIHJvdyByZXByZXNlbnRzIGFuIEVWRU5UICh2cy4gYSBzdGFuZGFsb25lIG1lZXRpbmcpLiAqL1xyXG4gIGlzTWVldGluZ0V2ZW50OiBib29sZWFuO1xyXG4gIC8qKiBMaWZlY3ljbGUgc3RhdHVzLCBlLmcuIFwiSW4gUHJvZ3Jlc3NcIiwgXCJVcGNvbWluZ1wiLCBcIkNvbXBsZXRlZFwiLiAqL1xyXG4gIHN0YXR1cz86IHN0cmluZztcclxuICByZWdpc3RlcmVkUGFydGljaXBhbnRzPzogYm9vbGVhbjtcclxuICBoYXNBdHRlbmRhbmNlUmVjb3Jkcz86IGJvb2xlYW47XHJcbiAgcmVnaXN0cmF0aW9uUmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIHJlZ2lzdHJhdGlvbkxpbms/OiBzdHJpbmcgfCBudWxsO1xyXG4gIGNyZWRpdEVuYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKiBFVkVOVCBvbmx5OiB0b3RhbCBhY3RpdmUgbWVldGluZ3MgaW4gdGhlIGV2ZW50LiAqL1xyXG4gIHRvdGFsTWVldGluZ0NvdW50PzogbnVtYmVyO1xyXG4gIC8qKiBFVkVOVCBvbmx5OiBtZWV0aW5ncyB1cGNvbWluZy9pbi1wcm9ncmVzcyBBTkQgYXR0ZW5kYW5jZS1lbmFibGVkLiAqL1xyXG4gIG1lZXRpbmdzT3BlbkZvckF0dGVuZGFuY2VDb3VudD86IG51bWJlcjtcclxuICAvKiogU1RBTkRBTE9ORSBvbmx5OiB0aGUgdXNlcidzIGF0dGVuZGFuY2Ugc3RhdGUgZm9yIHRoaXMgbWVldGluZy4gKi9cclxuICBhdHRlbmRhbmNlU3RhdGU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbWVldGluZy1saXN0LWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9tb2RlbHMvZXZlbnQtbWVldGluZy1saXN0LWl0ZW0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dGVuZGFuY2VTdGF0ZSB9IGZyb20gJy4vYXR0ZW5kYW5jZS1zdGF0ZS5tb2RlbCc7XHJcblxyXG4vKipcclxuICogUmF3IGNvbWJpbmVkIGxpc3QgaXRlbSByZXR1cm5lZCBieSB0aGUgaG9tZSBldmVudHMtJi1tZWV0aW5ncyBlbmRwb2ludFxyXG4gKiAoYFBPU1Qge2FwaUJhc2VVcmx9L21lZXRpbmdzL2hvbWUvZXZlbnRzQW5kTWVldGluZ3NgKS4gQSBzaW5nbGUgbGlzdCBjb250YWluc1xyXG4gKiBib3RoIEVWRU5UIHJvd3MgKGBpc01lZXRpbmdFdmVudCA9PT0gdHJ1ZWAsIHdoaWNoIG93biBjaGlsZCBtZWV0aW5ncykgYW5kXHJcbiAqIFNUQU5EQUxPTkUgTUVFVElORyByb3dzIChgaXNNZWV0aW5nRXZlbnQgPT09IGZhbHNlYCkuXHJcbiAqXHJcbiAqIERhdGVzIGFyZSBJU08tODYwMSBzdHJpbmdzIChlLmcuIFwiMjAyNi0wOS0xOVQwOTowMDowMFwiKS4gUm93LXR5cGUgZmllbGRzIGFyZVxyXG4gKiBvbWl0dGVkIChOT05fTlVMTCkgd2hlbiBub3QgYXBwbGljYWJsZTpcclxuICogLSBFVkVOVCByb3dzIGNhcnJ5IHtAbGluayB0b3RhbE1lZXRpbmdDb3VudH0gLyB7QGxpbmsgbWVldGluZ3NPcGVuRm9yQXR0ZW5kYW5jZUNvdW50fTsgbm8gYGF0dGVuZGFuY2VTdGF0ZWAuXHJcbiAqIC0gU1RBTkRBTE9ORSByb3dzIGNhcnJ5IHtAbGluayBhdHRlbmRhbmNlU3RhdGV9OyBubyBldmVudCBjb3VudHMuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50TWVldGluZ0xpc3RJdGVtIHtcclxuICAvKiogU3RhYmxlIGlkZW50aWZpZXIgb2YgdGhlIGV2ZW50IG9yIHN0YW5kYWxvbmUgbWVldGluZy4gKi9cclxuICBpZDogc3RyaW5nO1xyXG4gIC8qKiBFdmVudCAvIG1lZXRpbmcgZGlzcGxheSBuYW1lLiAqL1xyXG4gIG5hbWU6IHN0cmluZztcclxuICAvKiogU3RhcnQgZGF0ZS10aW1lIGFzIGFuIElTTy04NjAxIHN0cmluZy4gKi9cclxuICBzdGFydERhdGVUaW1lOiBzdHJpbmc7XHJcbiAgLyoqIEVuZCBkYXRlLXRpbWUgYXMgYW4gSVNPLTg2MDEgc3RyaW5nLiAqL1xyXG4gIGVuZERhdGVUaW1lOiBzdHJpbmc7XHJcbiAgLyoqIElBTkEgdGltZXpvbmUgc3RyaW5nLCBlLmcuIFwiQXNpYS9Lb2xrYXRhXCIuICovXHJcbiAgdGltZVpvbmU6IHN0cmluZztcclxuICAvKiogT3duaW5nIGdyb3VwIGlkLiAqL1xyXG4gIGdyb3VwSWQ/OiBzdHJpbmc7XHJcbiAgLyoqIE93bmluZyBncm91cCBkaXNwbGF5IG5hbWUuICovXHJcbiAgZ3JvdXBOYW1lPzogc3RyaW5nO1xyXG4gIC8qKiBPd25pbmcgZ3JvdXAgYWNyb255bSwgd2hlbiBwcm92aWRlZC4gKi9cclxuICBncm91cEFjcm9ueW0/OiBzdHJpbmc7XHJcbiAgLyoqIFJvb20gLyBsb2NhdGlvbiB0ZXh0LCB3aGVuIHByb3ZpZGVkIChudWxsIGZvciB2aXJ0dWFsL25vbmUpLiAqL1xyXG4gIG1lZXRpbmdMb2NhdGlvbj86IHN0cmluZyB8IG51bGw7XHJcbiAgLyoqIFRydWUgd2hlbiB0aGlzIHJvdyBpcyBhbiBFVkVOVCB0aGF0IG93bnMgY2hpbGQgbWVldGluZ3MuICovXHJcbiAgaGFzQ2hpbGRyZW4/OiBib29sZWFuO1xyXG4gIC8qKiBUcnVlIHdoZW4gdGhlIHJvdyByZXByZXNlbnRzIGFuIEVWRU5UICh2cy4gYSBzdGFuZGFsb25lIG1lZXRpbmcpLiAqL1xyXG4gIGlzTWVldGluZ0V2ZW50OiBib29sZWFuO1xyXG4gIC8qKiBMaWZlY3ljbGUgc3RhdHVzLCBlLmcuIFwiSW4gUHJvZ3Jlc3NcIiwgXCJVcGNvbWluZ1wiLCBcIkNvbXBsZXRlZFwiLiAqL1xyXG4gIHN0YXR1cz86IHN0cmluZztcclxuICByZWdpc3RlcmVkUGFydGljaXBhbnRzPzogYm9vbGVhbjtcclxuICBoYXNBdHRlbmRhbmNlUmVjb3Jkcz86IGJvb2xlYW47XHJcbiAgcmVnaXN0cmF0aW9uUmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIHJlZ2lzdHJhdGlvbkxpbms/OiBzdHJpbmcgfCBudWxsO1xyXG4gIGNyZWRpdEVuYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKiBFVkVOVCBvbmx5OiB0b3RhbCBhY3RpdmUgbWVldGluZ3MgaW4gdGhlIGV2ZW50LiAqL1xyXG4gIHRvdGFsTWVldGluZ0NvdW50PzogbnVtYmVyO1xyXG4gIC8qKiBFVkVOVCBvbmx5OiBtZWV0aW5ncyB1cGNvbWluZy9pbi1wcm9ncmVzcyBBTkQgYXR0ZW5kYW5jZS1lbmFibGVkLiAqL1xyXG4gIG1lZXRpbmdzT3BlbkZvckF0dGVuZGFuY2VDb3VudD86IG51bWJlcjtcclxuICAvKiogU1RBTkRBTE9ORSBvbmx5OiB0aGUgdXNlcidzIGF0dGVuZGFuY2Ugc3RhdGUgZm9yIHRoaXMgbWVldGluZy4gKi9cclxuICBhdHRlbmRhbmNlU3RhdGU/OiBBdHRlbmRhbmNlU3RhdGU7XHJcbn1cclxuXHJcbi8qKiBCb2R5IG9mIHRoZSBob21lIGV2ZW50cy0mLW1lZXRpbmdzIGxpc3QgcmVzcG9uc2UuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRNZWV0aW5nTGlzdEJvZHkge1xyXG4gIC8qKiBUb3RhbCBudW1iZXIgb2Ygcm93cyBhY3Jvc3MgYWxsIHBhZ2VzIChwYWdpbmF0b3IgbGVuZ3RoKS4gKi9cclxuICB0b3RhbFJlY29yZHM6IG51bWJlcjtcclxuICAvKiogTnVtYmVyIG9mIEVWRU5UIHJvd3MgYWNyb3NzIGFsbCBwYWdlcyAoY29sbGFwc2VkLXN1bW1hcnkgY291bnQpLiAqL1xyXG4gIGV2ZW50Q291bnQ6IG51bWJlcjtcclxuICAvKiogTnVtYmVyIG9mIFNUQU5EQUxPTkUgTUVFVElORyByb3dzIGFjcm9zcyBhbGwgcGFnZXMgKGNvbGxhcHNlZC1zdW1tYXJ5IGNvdW50KS4gKi9cclxuICBzdGFuZGFsb25lTWVldGluZ0NvdW50OiBudW1iZXI7XHJcbiAgLyoqIE51bWJlciBvZiBzdGFuZGFsb25lIG1lZXRpbmdzIG9wZW4gZm9yIGF0dGVuZGFuY2UgYWNyb3NzIGFsbCBwYWdlcyAoY29sbGFwc2VkLXN1bW1hcnkgY291bnQpLiAqL1xyXG4gIHN0YW5kYWxvbmVNZWV0aW5nc09wZW5Gb3JBdHRlbmRhbmNlQ291bnQ6IG51bWJlcjtcclxuICBldmVudE1lZXRpbmdMaXN0OiBFdmVudE1lZXRpbmdMaXN0SXRlbVtdO1xyXG59XHJcblxyXG4vKiogUmVzcG9uc2UgZW52ZWxvcGUgZm9yIHRoZSBob21lIGV2ZW50cy0mLW1lZXRpbmdzIGxpc3QgZW5kcG9pbnQuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRNZWV0aW5nTGlzdFJlc3BvbnNlIHtcclxuICBzdGF0dXM6IGJvb2xlYW47XHJcbiAgbWVzc2FnZT86IHN0cmluZztcclxuICBib2R5OiBFdmVudE1lZXRpbmdMaXN0Qm9keTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoaWxkLW1lZXRpbmcgaXRlbSByZXR1cm5lZCBieSB0aGUgcGVyLWV2ZW50IGRyaWxsLWRvd24gZW5kcG9pbnRcclxuICogKGBQT1NUIHthcGlCYXNlVXJsfS9tZWV0aW5ncy9ob21lL2V2ZW50cy97ZXZlbnRJZH0vbWVldGluZ3NgKS4gRGF0ZXMgYXJlXHJcbiAqIElTTy04NjAxIHN0cmluZ3MuIGBsb2NhdGlvbmAgZm9sbG93cyB0aGUgYmFja2VuZCBydWxlIChwaHlzaWNhbCBsb2NhdGlvbiwgZWxzZVxyXG4gKiBcIlZpcnR1YWxcIiB3aGVuIGEgdmlydHVhbCBVUkwgZXhpc3RzLCBlbHNlIG51bGwpLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBFdmVudE1lZXRpbmdEZXRhaWxJdGVtIHtcclxuICBtZWV0aW5nSWQ6IHN0cmluZztcclxuICBtZWV0aW5nVGl0bGU6IHN0cmluZztcclxuICBncm91cElkPzogc3RyaW5nO1xyXG4gIGdyb3VwTmFtZT86IHN0cmluZztcclxuICBncm91cEFjcm9ueW0/OiBzdHJpbmc7XHJcbiAgbG9jYXRpb24/OiBzdHJpbmcgfCBudWxsO1xyXG4gIG1lZXRpbmdTdERhdGU6IHN0cmluZztcclxuICBtZWV0aW5nRWREYXRlOiBzdHJpbmc7XHJcbiAgdGltZVpvbmU/OiBzdHJpbmc7XHJcbiAgc3RhdHVzPzogc3RyaW5nO1xyXG4gIGF0dGVuZGFuY2VTdGF0ZT86IEF0dGVuZGFuY2VTdGF0ZTtcclxufVxyXG5cclxuLyoqIEJvZHkgb2YgdGhlIHBlci1ldmVudCBkcmlsbC1kb3duIHJlc3BvbnNlLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50TWVldGluZ0RldGFpbEJvZHkge1xyXG4gIGV2ZW50SWQ6IHN0cmluZztcclxuICBldmVudE5hbWU6IHN0cmluZztcclxuICBzdGF0dXM6IHN0cmluZztcclxuICAvKiogQ3VycmVudCBkYXkgaW5kZXggZm9yIHRoZSBcIkRheSBYIG9mIFlcIiBkaXNwbGF5LiAqL1xyXG4gIGN1cnJlbnREYXk6IG51bWJlcjtcclxuICAvKiogVG90YWwgZGF5IHNwYW4gZm9yIHRoZSBcIkRheSBYIG9mIFlcIiBkaXNwbGF5LiAqL1xyXG4gIHRvdGFsRGF5czogbnVtYmVyO1xyXG4gIHN0YXJ0RGF0ZTogc3RyaW5nO1xyXG4gIGVuZERhdGU6IHN0cmluZztcclxuICB0aW1lWm9uZTogc3RyaW5nO1xyXG4gIC8qKiBBbGwgYWN0aXZlIG1lZXRpbmdzIGluIHRoZSBldmVudC4gKi9cclxuICB0b3RhbE1lZXRpbmdDb3VudDogbnVtYmVyO1xyXG4gIC8qKiBVcGNvbWluZy9pbi1wcm9ncmVzcyBBTkQgYXR0ZW5kYW5jZS1lbmFibGVkIG1lZXRpbmdzLiAqL1xyXG4gIG1lZXRpbmdzT3BlbkZvckF0dGVuZGFuY2VDb3VudDogbnVtYmVyO1xyXG4gIC8qKiBDb3VudCBvZiB0aGUgdXNlcidzIHRpZWQgdXBjb21pbmcgbWVldGluZ3MgZm9yIHRoaXMgZXZlbnQgKHBhZ2luYXRvciBsZW5ndGgpLiAqL1xyXG4gIHRvdGFsUmVjb3JkczogbnVtYmVyO1xyXG4gIHBhZ2U6IG51bWJlcjtcclxuICBzaXplOiBudW1iZXI7XHJcbiAgbWVldGluZ3M6IEV2ZW50TWVldGluZ0RldGFpbEl0ZW1bXTtcclxufVxyXG5cclxuLyoqIFJlc3BvbnNlIGVudmVsb3BlIGZvciB0aGUgcGVyLWV2ZW50IGRyaWxsLWRvd24gZW5kcG9pbnQuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRNZWV0aW5nRGV0YWlsUmVzcG9uc2Uge1xyXG4gIHN0YXR1czogYm9vbGVhbjtcclxuICBtZXNzYWdlPzogc3RyaW5nO1xyXG4gIGJvZHk6IEV2ZW50TWVldGluZ0RldGFpbEJvZHk7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBjb21pbmctc3VtbWFyeS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC9zcmMvbGliL21vZGVscy91cGNvbWluZy1zdW1tYXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogU2VydmVyLXByb3ZpZGVkIHN1bW1hcnkgY291bnRzIGZvciB0aGUgXCJVcGNvbWluZyBNZWV0aW5ncyAmIEV2ZW50c1wiIHNlY3Rpb24sXHJcbiAqIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIGhvbWUgZXZlbnRzLSYtbWVldGluZ3MgbGlzdCByZXNwb25zZSBib2R5LiBUaGVzZSBiYWNrXHJcbiAqIHRoZSBwYWdpbmF0b3IgbGVuZ3RoIGFuZCB0aGUgY29sbGFwc2VkLXN1bW1hcnkgbGluZSBzbyBubyBjb3VudHMgYXJlIGNvbXB1dGVkXHJcbiAqIChvciBoYXJkY29kZWQpIG9uIHRoZSBmcm9udGVuZC5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBjb21pbmdTdW1tYXJ5IHtcclxuICAvKiogVG90YWwgbnVtYmVyIG9mIHJvd3MgYWNyb3NzIGFsbCBwYWdlcyDigJQgdGhlIG1haW4gcGFnaW5hdG9yIGxlbmd0aC4gKi9cclxuICB0b3RhbFJlY29yZHM6IG51bWJlcjtcclxuICAvKiogTnVtYmVyIG9mIEVWRU5UIHJvd3MgYWNyb3NzIGFsbCBwYWdlcy4gKi9cclxuICBldmVudENvdW50OiBudW1iZXI7XHJcbiAgLyoqIE51bWJlciBvZiBTVEFOREFMT05FIE1FRVRJTkcgcm93cyBhY3Jvc3MgYWxsIHBhZ2VzLiAqL1xyXG4gIHN0YW5kYWxvbmVNZWV0aW5nQ291bnQ6IG51bWJlcjtcclxuICAvKiogTnVtYmVyIG9mIHN0YW5kYWxvbmUgbWVldGluZ3Mgb3BlbiBmb3IgYXR0ZW5kYW5jZSBhY3Jvc3MgYWxsIHBhZ2VzLiAqL1xyXG4gIHN0YW5kYWxvbmVNZWV0aW5nc09wZW5Gb3JBdHRlbmRhbmNlQ291bnQ6IG51bWJlcjtcclxufVxyXG4iXX0=
|