@ieeesa-npm/dashboard 0.0.4 → 0.0.6
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/assets/constants.json +1 -0
- package/esm2022/lib/components/event-group-card/event-group-card.component.mjs +3 -7
- package/esm2022/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.mjs +3 -7
- package/esm2022/lib/components/your-groups/your-groups.component.mjs +3 -3
- package/esm2022/lib/dashboard.component.mjs +9 -42
- package/fesm2022/ieeesa-npm-dashboard.mjs +15 -55
- package/fesm2022/ieeesa-npm-dashboard.mjs.map +1 -1
- package/lib/components/event-group-card/event-group-card.component.d.ts +1 -3
- package/lib/components/member-level-badge/member-level-badge.component.d.ts +1 -0
- package/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.d.ts +1 -3
- package/lib/dashboard.component.d.ts +6 -22
- package/package.json +1 -1
- package/esm2022/lib/utils/attendance-action.util.mjs +0 -53
- package/lib/utils/attendance-action.util.d.ts +0 -38
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"meetingDateLabel": "MEETING DATE",
|
|
43
43
|
"timeTimezoneLabel": "TIME & TIMEZONE",
|
|
44
44
|
"meetingsLabel": "Meetings",
|
|
45
|
+
"noMeetingsMessage": "No meetings available",
|
|
45
46
|
"openForAttendanceTemplate": "{count} Meetings open for attendance",
|
|
46
47
|
"meetingListToggle": {
|
|
47
48
|
"showLabel": "Show meetings",
|
|
@@ -43,8 +43,6 @@ export class EventGroupCardComponent {
|
|
|
43
43
|
this.inFlightMeetingIds = new Set();
|
|
44
44
|
/** Whether the host has determined the viewport is at/below the mobile breakpoint. */
|
|
45
45
|
this.isMobileView = false;
|
|
46
|
-
/** Whether this event's child meetings are currently loading (drill-down API). */
|
|
47
|
-
this.meetingsLoading = false;
|
|
48
46
|
/** Emits the event id when the "View Event" button is activated (Req 6.4). */
|
|
49
47
|
this.viewEvent = new EventEmitter();
|
|
50
48
|
/** Bubbles the meeting id when a row's meeting-name link is activated (Req 6.7, 7.4). */
|
|
@@ -469,11 +467,11 @@ export class EventGroupCardComponent {
|
|
|
469
467
|
return formatEpoch(value, DateFormats.displayFormat, this.event?.timezone);
|
|
470
468
|
}
|
|
471
469
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventGroupCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
472
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EventGroupCardComponent, isStandalone: true, selector: "ieeesa-event-group-card", inputs: { event: "event", permissions: "permissions", attendanceStates: "attendanceStates", inFlightMeetingIds: "inFlightMeetingIds", isMobileView: "isMobileView", meetingsLoading: "meetingsLoading" }, outputs: { viewEvent: "viewEvent", openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting", pageChange: "pageChange", loadMeetings: "loadMeetings", navigateToMeeting: "navigateToMeeting" }, ngImport: i0, template: "<article\r\n class=\"ieeesa-event-group-card\"\r\n [class.ieeesa-event-group-card--mobile]=\"isMobileView\"\r\n [class.ieeesa-event-group-card--standalone]=\"isStandalone\"\r\n>\r\n <!-- ============================ EVENT ============================ -->\r\n <ng-container *ngIf=\"!isStandalone\">\r\n <header class=\"ieeesa-event-group-card__header\">\r\n <div class=\"ieeesa-event-group-card__header-main\">\r\n <!-- EVENT badge + day indicator. -->\r\n <div class=\"ieeesa-event-group-card__badge-row\">\r\n <span class=\"ieeesa-event-group-card__badge\">\r\n {{ constants.eventGroupCard.eventBadge }}\r\n </span>\r\n <span\r\n *ngIf=\"event.dayIndicator\"\r\n class=\"ieeesa-event-group-card__day-indicator\"\r\n >\r\n {{ event.dayIndicator }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__title-row\">\r\n <h3 class=\"ieeesa-event-group-card__title\">{{ event.title }}</h3>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__header-side\">\r\n <dl class=\"ieeesa-event-group-card__dates-block\">\r\n <dt class=\"ieeesa-event-group-card__dates-label\">\r\n {{ constants.eventGroupCard.eventDatesLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__dates-line\">\r\n <span class=\"ieeesa-event-group-card__dates-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </span>\r\n <span\r\n *ngIf=\"event.timezone\"\r\n class=\"ieeesa-event-group-card__timezone-value\"\r\n >\r\n ({{ event.timezone }})\r\n </span>\r\n </dd>\r\n </dl>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__view\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.viewEvent\"\r\n (click)=\"onViewEvent()\"\r\n >\r\n {{ constants.eventGroupCard.viewEventLabel }}\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Meetings bar: \"Meetings\" label (left), open-for-attendance count +\r\n Show/Hide toggle (right), matching the Figma layout. -->\r\n <div class=\"ieeesa-event-group-card__meetings-bar\">\r\n <span class=\"ieeesa-event-group-card__meetings-label\">\r\n {{ constants.eventGroupCard.meetingsLabel }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__meetings-bar-right\">\r\n <span class=\"ieeesa-event-group-card__meetings-open\">\r\n <span class=\"ieeesa-event-group-card__meetings-dot\" aria-hidden=\"true\"></span>\r\n {{ openForAttendanceSummary }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__meeting-toggle\"\r\n [attr.aria-expanded]=\"isMeetingListOpen\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n (click)=\"onToggleMeetingList()\"\r\n >\r\n <span>{{ meetingListToggleLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isMeetingListOpen ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Expanded inner meeting list + per-event paginator. -->\r\n <div\r\n *ngIf=\"isMeetingListOpen\"\r\n class=\"ieeesa-event-group-card__meetings\"\r\n >\r\n <!-- Spinner shown while the drill-down meetings load. -->\r\n <div\r\n *ngIf=\"meetingsLoading\"\r\n class=\"ieeesa-event-group-card__meetings-loader\"\r\n role=\"status\"\r\n [attr.aria-label]=\"constants.eventGroupCard.meetingsLabel\"\r\n >\r\n <span class=\"ieeesa-event-group-card__spinner\" aria-hidden=\"true\"></span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!meetingsLoading\">\r\n <ieeesa-meeting-attendance-row\r\n *ngFor=\"let meeting of pagedMeetings; trackBy: trackByMeetingId\"\r\n [meeting]=\"meeting\"\r\n [attendanceState]=\"resolveAttendanceState(meeting)\"\r\n [isInFlight]=\"resolveIsInFlight(meeting)\"\r\n [permissions]=\"permissions\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-meeting-attendance-row>\r\n\r\n <div\r\n class=\"ieeesa-event-group-card__paginator\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n >\r\n <mat-paginator\r\n class=\"ieeesa-event-group-card__paginator-control\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [length]=\"totalMeetings\"\r\n (page)=\"onPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- ======================= STANDALONE MEETING ======================= -->\r\n <!-- Single horizontal row: badge+name+subtitle | MEETING DATE | TIME & TIMEZONE | action. -->\r\n <div *ngIf=\"isStandalone\" class=\"ieeesa-event-group-card__standalone\">\r\n <div class=\"ieeesa-event-group-card__standalone-main\">\r\n <span class=\"ieeesa-event-group-card__badge ieeesa-event-group-card__badge--standalone\">\r\n {{ constants.eventGroupCard.standaloneBadge }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__standalone-title-row\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-name\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenStandalone()\"\r\n >\r\n {{ event.title }}\r\n </button>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__standalone-subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ standaloneTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance action column. Shown only for attendance-eligible meetings. -->\r\n <div\r\n *ngIf=\"isStandaloneEligible\"\r\n class=\"ieeesa-event-group-card__standalone-actions\"\r\n >\r\n <span class=\"ieeesa-event-group-card__attending-slot\">\r\n <span\r\n *ngIf=\"isStandaloneAttending\"\r\n class=\"ieeesa-event-group-card__attending-pill\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n </span>\r\n\r\n <button\r\n *ngIf=\"!isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--log\"\r\n [class.ieeesa-event-group-card__standalone-action--inactive]=\"isStandaloneLogDisabled\"\r\n [disabled]=\"isStandaloneLogDisabled\"\r\n [attr.title]=\"isStandaloneLogDisabled ? inactiveMessage : null\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <button\r\n *ngIf=\"isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--leave\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n</article>\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-event-group-card{display:flex;flex-direction:column;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#f8fafc;font-family:Calibri Regular}.ieeesa-event-group-card__header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 24px;border-bottom:1px solid #e2e8f0;background-color:#f8fafc}.ieeesa-event-group-card__header-main{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-event-group-card__badge-row{display:flex;align-items:center;gap:8px}.ieeesa-event-group-card__badge{display:inline-flex;align-items:center;align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:4px;font-family:Calibri Bold;font-size:10px;font-weight:700;letter-spacing:.03125em;text-transform:uppercase;color:#fff;background-color:#3b82f6}.ieeesa-event-group-card__badge--standalone{align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:3px;font-size:10px;letter-spacing:.25px;color:#53616a;background-color:#edf1f3}.ieeesa-event-group-card__day-indicator{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__title{margin:0;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#0f172a}.ieeesa-event-group-card__status-pill{display:inline-flex;align-items:center;padding:2px 16px;border-radius:23px;font-size:.75rem;line-height:16px;color:#fff;background-color:#4caf50}.ieeesa-event-group-card__status-pill--upcoming,.ieeesa-event-group-card__status-pill--starts-soon{color:#8a6d00;background-color:#fef7e0}.ieeesa-event-group-card__subtitle{margin:0;font-size:.75rem;line-height:16px;color:#64748b}.ieeesa-event-group-card__header-side{display:flex;align-items:center;gap:24px;flex-shrink:0}.ieeesa-event-group-card__dates-block{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin:0;text-align:left}.ieeesa-event-group-card__dates-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__dates-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;margin:0}.ieeesa-event-group-card__dates-value{font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__timezone-value{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__view{flex-shrink:0;padding:10px 24px;border:1px solid #878b8f;border-radius:3px;background-color:#f3f8fd;font-family:Calibri Bold;font-size:1rem;color:#0f172a;cursor:pointer}.ieeesa-event-group-card__view:hover{background-color:#eaf3f9}.ieeesa-event-group-card__meetings-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:12px 24px 0 32px;background-color:#f8fafc}.ieeesa-event-group-card__meetings-label{font-family:Calibri Bold;font-size:.875rem;color:#0f172a}.ieeesa-event-group-card__meetings-bar-right{display:flex;align-items:center;gap:16px}.ieeesa-event-group-card__meetings-open{display:inline-flex;align-items:center;gap:6px;font-family:Calibri Bold;font-size:.75rem;color:#15803d}.ieeesa-event-group-card__meetings-dot{width:8px;height:8px;border-radius:50%;background-color:#15803d}.ieeesa-event-group-card__meeting-toggle{display:inline-flex;align-items:center;gap:8px;padding:4px 0;border:0;background:none;font-family:Calibri Bold;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meetings-loader{display:flex;align-items:center;justify-content:center;padding:32px}.ieeesa-event-group-card__spinner{width:32px;height:32px;border:3px solid #e2e8f0;border-top-color:#00629b;border-radius:50%;animation:ieeesa-egc-spin .8s linear infinite}.ieeesa-event-group-card__meetings{display:flex;flex-direction:column;margin:16px 24px 16px 32px;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#fff}.ieeesa-event-group-card__paginator{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:12px 24px;background-color:#f8fafc}.ieeesa-event-group-card__paginator-range{font-size:.875rem;color:#64748b}.ieeesa-event-group-card__standalone{display:grid;grid-template-columns:minmax(260px,2.4fr) minmax(130px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px;min-height:72px;padding:8px 16px;background-color:#fff}.ieeesa-event-group-card__standalone-main{display:flex;flex-direction:column;gap:6px;min-width:0}.ieeesa-event-group-card__standalone-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__standalone-name{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#00629b;cursor:pointer}.ieeesa-event-group-card__standalone-name:hover{color:#004872}.ieeesa-event-group-card__standalone-subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__standalone-col{display:flex;flex-direction:column;gap:2px;margin:0;min-width:0}.ieeesa-event-group-card__standalone-col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__standalone-col-value{margin:0;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__standalone-actions{display:flex;align-items:center;justify-content:flex-end;gap:16px}.ieeesa-event-group-card__attending-slot{display:inline-flex;align-items:center;justify-content:flex-end;width:150px;flex-shrink:0}.ieeesa-event-group-card__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#15803d;background-color:#e8f5ec}.ieeesa-event-group-card__standalone-action{min-width:146px;padding:10px 24px;border-radius:3px;font-family:Calibri Bold;font-size:1rem;cursor:pointer}.ieeesa-event-group-card__standalone-action--log{border:1px solid #00629b;background-color:#00629b;color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.ieeesa-event-group-card__standalone-action--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-event-group-card__standalone-action:disabled,.ieeesa-event-group-card__standalone-action--inactive{border-color:#e2e8f0;background-color:#f4f5f7;color:#939094;box-shadow:none;cursor:not-allowed}.ieeesa-event-group-card--standalone{border-color:#dbe2eb}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header-side{flex-direction:column;align-items:stretch;gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__view{align-self:stretch;width:100%}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__paginator{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone{grid-template-columns:1fr;row-gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone-actions{justify-content:flex-start}@keyframes ieeesa-egc-spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i2.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: MeetingAttendanceRowComponent, selector: "ieeesa-meeting-attendance-row", inputs: ["meeting", "attendanceState", "isInFlight", "permissions", "compact"], outputs: ["openMeeting", "logAttendance", "leaveMeeting", "navigateToMeeting"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
470
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EventGroupCardComponent, isStandalone: true, selector: "ieeesa-event-group-card", inputs: { event: "event", permissions: "permissions", attendanceStates: "attendanceStates", inFlightMeetingIds: "inFlightMeetingIds", isMobileView: "isMobileView" }, outputs: { viewEvent: "viewEvent", openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting", pageChange: "pageChange", loadMeetings: "loadMeetings", navigateToMeeting: "navigateToMeeting" }, ngImport: i0, template: "<article\r\n class=\"ieeesa-event-group-card\"\r\n [class.ieeesa-event-group-card--mobile]=\"isMobileView\"\r\n [class.ieeesa-event-group-card--standalone]=\"isStandalone\"\r\n>\r\n <!-- ============================ EVENT ============================ -->\r\n <ng-container *ngIf=\"!isStandalone\">\r\n <header class=\"ieeesa-event-group-card__header\">\r\n <div class=\"ieeesa-event-group-card__header-main\">\r\n <!-- EVENT badge + day indicator. -->\r\n <div class=\"ieeesa-event-group-card__badge-row\">\r\n <span class=\"ieeesa-event-group-card__badge\">\r\n {{ constants.eventGroupCard.eventBadge }}\r\n </span>\r\n <span\r\n *ngIf=\"event.dayIndicator\"\r\n class=\"ieeesa-event-group-card__day-indicator\"\r\n >\r\n {{ event.dayIndicator }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__title-row\">\r\n <h3 class=\"ieeesa-event-group-card__title\">{{ event.title }}</h3>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__header-side\">\r\n <dl class=\"ieeesa-event-group-card__dates-block\">\r\n <dt class=\"ieeesa-event-group-card__dates-label\">\r\n {{ constants.eventGroupCard.eventDatesLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__dates-line\">\r\n <span class=\"ieeesa-event-group-card__dates-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </span>\r\n <span\r\n *ngIf=\"event.timezone\"\r\n class=\"ieeesa-event-group-card__timezone-value\"\r\n >\r\n ({{ event.timezone }})\r\n </span>\r\n </dd>\r\n </dl>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__view\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.viewEvent\"\r\n (click)=\"onViewEvent()\"\r\n >\r\n {{ constants.eventGroupCard.viewEventLabel }}\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Meetings bar: \"Meetings\" label (left), open-for-attendance count +\r\n Show/Hide toggle (right), matching the Figma layout. -->\r\n <div class=\"ieeesa-event-group-card__meetings-bar\">\r\n <!-- <span class=\"ieeesa-event-group-card__meetings-label\">\r\n {{ constants.eventGroupCard.meetingsLabel }}\r\n </span> -->\r\n\r\n <div class=\"ieeesa-event-group-card__meetings-bar-right\">\r\n <span class=\"ieeesa-event-group-card__meetings-open\">\r\n <span class=\"ieeesa-event-group-card__meetings-dot\" aria-hidden=\"true\"></span>\r\n {{ openForAttendanceSummary }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__meeting-toggle\"\r\n [attr.aria-expanded]=\"isMeetingListOpen\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n (click)=\"onToggleMeetingList()\"\r\n >\r\n <span>{{ meetingListToggleLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isMeetingListOpen ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Expanded inner meeting list + per-event paginator. -->\r\n <div\r\n *ngIf=\"isMeetingListOpen\"\r\n class=\"ieeesa-event-group-card__meetings\"\r\n >\r\n <ieeesa-meeting-attendance-row\r\n *ngFor=\"let meeting of pagedMeetings; trackBy: trackByMeetingId\"\r\n [meeting]=\"meeting\"\r\n [attendanceState]=\"resolveAttendanceState(meeting)\"\r\n [isInFlight]=\"resolveIsInFlight(meeting)\"\r\n [permissions]=\"permissions\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-meeting-attendance-row>\r\n\r\n <!-- Empty state: shown when the event has no meetings to list. -->\r\n <p\r\n *ngIf=\"totalMeetings === 0\"\r\n class=\"ieeesa-event-group-card__no-meetings\"\r\n role=\"status\"\r\n >\r\n {{ constants.eventGroupCard.noMeetingsMessage }}\r\n </p>\r\n\r\n <!-- Paginator shown when the event has more meetings than the default\r\n page size. Gated on defaultPageSize (not the selected pageSize) so\r\n the page-size selector stays reachable after a user picks a larger\r\n size; hidden only when the event has no meetings ([]) or they all fit\r\n in the default page. -->\r\n <div\r\n *ngIf=\"totalMeetings > defaultPageSize\"\r\n class=\"ieeesa-event-group-card__paginator\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n >\r\n <mat-paginator\r\n class=\"ieeesa-event-group-card__paginator-control\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [length]=\"totalMeetings\"\r\n (page)=\"onPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- ======================= STANDALONE MEETING ======================= -->\r\n <!-- Single horizontal row: badge+name+subtitle | MEETING DATE | TIME & TIMEZONE | action. -->\r\n <div *ngIf=\"isStandalone\" class=\"ieeesa-event-group-card__standalone\">\r\n <div class=\"ieeesa-event-group-card__standalone-main\">\r\n <span class=\"ieeesa-event-group-card__badge ieeesa-event-group-card__badge--standalone\">\r\n {{ constants.eventGroupCard.standaloneBadge }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__standalone-title-row\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-name\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenStandalone()\"\r\n >\r\n {{ event.title }}\r\n </button>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__standalone-subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ standaloneTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance action column. Shown only for attendance-eligible meetings. -->\r\n <div\r\n *ngIf=\"isStandaloneEligible\"\r\n class=\"ieeesa-event-group-card__standalone-actions\"\r\n >\r\n <span class=\"ieeesa-event-group-card__attending-slot\">\r\n <span\r\n *ngIf=\"isStandaloneAttending\"\r\n class=\"ieeesa-event-group-card__attending-pill\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n </span>\r\n\r\n <button\r\n *ngIf=\"!isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--log\"\r\n [class.ieeesa-event-group-card__standalone-action--inactive]=\"isStandaloneLogDisabled\"\r\n [disabled]=\"isStandaloneLogDisabled\"\r\n [attr.title]=\"isStandaloneLogDisabled ? inactiveMessage : null\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <button\r\n *ngIf=\"isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--leave\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n</article>\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-event-group-card{display:flex;flex-direction:column;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#f8fafc;font-family:Calibri Regular;margin:2px 2px 14px}.ieeesa-event-group-card__header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 24px;border-bottom:1px solid #e2e8f0;background-color:#f8fafc}.ieeesa-event-group-card__header-main{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-event-group-card__badge-row{display:flex;align-items:center;gap:8px}.ieeesa-event-group-card__badge{display:inline-flex;align-items:center;align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:4px;font-family:Calibri Bold;font-size:10px;font-weight:700;letter-spacing:.03125em;text-transform:uppercase;color:#fff;background-color:#3b82f6}.ieeesa-event-group-card__badge--standalone{align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:3px;font-size:10px;letter-spacing:.25px;color:#53616a;background-color:#edf1f3}.ieeesa-event-group-card__day-indicator{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__title{margin:0;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#0f172a}.ieeesa-event-group-card__status-pill{display:inline-flex;align-items:center;padding:2px 16px;border-radius:23px;font-size:.75rem;line-height:16px;color:#fff;background-color:#4caf50}.ieeesa-event-group-card__status-pill--upcoming,.ieeesa-event-group-card__status-pill--starts-soon{color:#8a6d00;background-color:#fef7e0}.ieeesa-event-group-card__subtitle{margin:0;font-size:.75rem;line-height:16px;color:#64748b}.ieeesa-event-group-card__header-side{display:flex;align-items:center;gap:24px;flex-shrink:0}.ieeesa-event-group-card__dates-block{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin:0;text-align:left}.ieeesa-event-group-card__dates-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__dates-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;margin:0}.ieeesa-event-group-card__dates-value{font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__timezone-value{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__view{flex-shrink:0;padding:10px 24px;border:1px solid #878b8f;border-radius:3px;background-color:#f3f8fd;font-family:Calibri Bold;font-size:1rem;color:#0f172a;cursor:pointer}.ieeesa-event-group-card__view:hover{background-color:#eaf3f9}.ieeesa-event-group-card__meetings-bar{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;padding:12px 18px;background-color:#f8fafc}.ieeesa-event-group-card__meetings-label{font-family:Calibri Bold;font-size:.875rem;color:#0f172a}.ieeesa-event-group-card__meetings-bar-right{display:flex;align-items:center;gap:16px}.ieeesa-event-group-card__meetings-open{display:inline-flex;align-items:center;gap:6px;font-family:Calibri Bold;font-size:.75rem;color:#15803d}.ieeesa-event-group-card__meetings-dot{width:8px;height:8px;border-radius:50%;background-color:#15803d}.ieeesa-event-group-card__meeting-toggle{display:inline-flex;align-items:center;gap:8px;padding:4px 0;border:0;background:none;font-family:Calibri Bold;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meetings{display:flex;flex-direction:column;margin:16px 24px 16px 32px;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#fff}.ieeesa-event-group-card__no-meetings{margin:0;padding:16px;text-align:center;font-family:Calibri Regular;font-size:.875rem;color:#64748b}.ieeesa-event-group-card__paginator{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:12px 24px;background-color:#f8fafc}.ieeesa-event-group-card__paginator-range{font-size:.875rem;color:#64748b}.ieeesa-event-group-card__standalone{display:grid;grid-template-columns:minmax(260px,2.4fr) minmax(130px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px;min-height:72px;padding:8px 16px;background-color:#fff}.ieeesa-event-group-card__standalone-main{display:flex;flex-direction:column;gap:6px;min-width:0}.ieeesa-event-group-card__standalone-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__standalone-name{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#00629b;cursor:pointer}.ieeesa-event-group-card__standalone-name:hover{color:#004872}.ieeesa-event-group-card__standalone-subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__standalone-col{display:flex;flex-direction:column;gap:2px;margin:0;min-width:0}.ieeesa-event-group-card__standalone-col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__standalone-col-value{margin:0;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__standalone-actions{display:flex;align-items:center;justify-content:flex-end;gap:16px}.ieeesa-event-group-card__attending-slot{display:inline-flex;align-items:center;justify-content:flex-end;width:150px;flex-shrink:0}.ieeesa-event-group-card__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#15803d;background-color:#e8f5ec}.ieeesa-event-group-card__standalone-action{min-width:146px;padding:10px 24px;border-radius:3px;font-family:Calibri Bold;font-size:1rem;cursor:pointer}.ieeesa-event-group-card__standalone-action--log{border:1px solid #00629b;background-color:#00629b;color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.ieeesa-event-group-card__standalone-action--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-event-group-card__standalone-action:disabled,.ieeesa-event-group-card__standalone-action--inactive{border-color:#e2e8f0;background-color:#f4f5f7;color:#939094;box-shadow:none;cursor:not-allowed}.ieeesa-event-group-card--standalone{border-color:#dbe2eb}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header-side{flex-direction:column;align-items:stretch;gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__view{align-self:stretch;width:100%}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__paginator{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone{grid-template-columns:1fr;row-gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone-actions{justify-content:flex-start}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i2.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: MeetingAttendanceRowComponent, selector: "ieeesa-meeting-attendance-row", inputs: ["meeting", "attendanceState", "isInFlight", "permissions", "compact"], outputs: ["openMeeting", "logAttendance", "leaveMeeting", "navigateToMeeting"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
473
471
|
}
|
|
474
472
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventGroupCardComponent, decorators: [{
|
|
475
473
|
type: Component,
|
|
476
|
-
args: [{ selector: 'ieeesa-event-group-card', standalone: true, imports: [CommonModule, MatPaginatorModule, MeetingAttendanceRowComponent], encapsulation: ViewEncapsulation.None, template: "<article\r\n class=\"ieeesa-event-group-card\"\r\n [class.ieeesa-event-group-card--mobile]=\"isMobileView\"\r\n [class.ieeesa-event-group-card--standalone]=\"isStandalone\"\r\n>\r\n <!-- ============================ EVENT ============================ -->\r\n <ng-container *ngIf=\"!isStandalone\">\r\n <header class=\"ieeesa-event-group-card__header\">\r\n <div class=\"ieeesa-event-group-card__header-main\">\r\n <!-- EVENT badge + day indicator. -->\r\n <div class=\"ieeesa-event-group-card__badge-row\">\r\n <span class=\"ieeesa-event-group-card__badge\">\r\n {{ constants.eventGroupCard.eventBadge }}\r\n </span>\r\n <span\r\n *ngIf=\"event.dayIndicator\"\r\n class=\"ieeesa-event-group-card__day-indicator\"\r\n >\r\n {{ event.dayIndicator }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__title-row\">\r\n <h3 class=\"ieeesa-event-group-card__title\">{{ event.title }}</h3>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__header-side\">\r\n <dl class=\"ieeesa-event-group-card__dates-block\">\r\n <dt class=\"ieeesa-event-group-card__dates-label\">\r\n {{ constants.eventGroupCard.eventDatesLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__dates-line\">\r\n <span class=\"ieeesa-event-group-card__dates-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </span>\r\n <span\r\n *ngIf=\"event.timezone\"\r\n class=\"ieeesa-event-group-card__timezone-value\"\r\n >\r\n ({{ event.timezone }})\r\n </span>\r\n </dd>\r\n </dl>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__view\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.viewEvent\"\r\n (click)=\"onViewEvent()\"\r\n >\r\n {{ constants.eventGroupCard.viewEventLabel }}\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Meetings bar: \"Meetings\" label (left), open-for-attendance count +\r\n Show/Hide toggle (right), matching the Figma layout. -->\r\n <div class=\"ieeesa-event-group-card__meetings-bar\">\r\n <span class=\"ieeesa-event-group-card__meetings-label\">\r\n {{ constants.eventGroupCard.meetingsLabel }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__meetings-bar-right\">\r\n <span class=\"ieeesa-event-group-card__meetings-open\">\r\n <span class=\"ieeesa-event-group-card__meetings-dot\" aria-hidden=\"true\"></span>\r\n {{ openForAttendanceSummary }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__meeting-toggle\"\r\n [attr.aria-expanded]=\"isMeetingListOpen\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n (click)=\"onToggleMeetingList()\"\r\n >\r\n <span>{{ meetingListToggleLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isMeetingListOpen ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Expanded inner meeting list + per-event paginator. -->\r\n <div\r\n *ngIf=\"isMeetingListOpen\"\r\n class=\"ieeesa-event-group-card__meetings\"\r\n >\r\n <!-- Spinner shown while the drill-down meetings load. -->\r\n <div\r\n *ngIf=\"meetingsLoading\"\r\n class=\"ieeesa-event-group-card__meetings-loader\"\r\n role=\"status\"\r\n [attr.aria-label]=\"constants.eventGroupCard.meetingsLabel\"\r\n >\r\n <span class=\"ieeesa-event-group-card__spinner\" aria-hidden=\"true\"></span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!meetingsLoading\">\r\n <ieeesa-meeting-attendance-row\r\n *ngFor=\"let meeting of pagedMeetings; trackBy: trackByMeetingId\"\r\n [meeting]=\"meeting\"\r\n [attendanceState]=\"resolveAttendanceState(meeting)\"\r\n [isInFlight]=\"resolveIsInFlight(meeting)\"\r\n [permissions]=\"permissions\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-meeting-attendance-row>\r\n\r\n <div\r\n class=\"ieeesa-event-group-card__paginator\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n >\r\n <mat-paginator\r\n class=\"ieeesa-event-group-card__paginator-control\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [length]=\"totalMeetings\"\r\n (page)=\"onPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- ======================= STANDALONE MEETING ======================= -->\r\n <!-- Single horizontal row: badge+name+subtitle | MEETING DATE | TIME & TIMEZONE | action. -->\r\n <div *ngIf=\"isStandalone\" class=\"ieeesa-event-group-card__standalone\">\r\n <div class=\"ieeesa-event-group-card__standalone-main\">\r\n <span class=\"ieeesa-event-group-card__badge ieeesa-event-group-card__badge--standalone\">\r\n {{ constants.eventGroupCard.standaloneBadge }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__standalone-title-row\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-name\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenStandalone()\"\r\n >\r\n {{ event.title }}\r\n </button>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__standalone-subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ standaloneTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance action column. Shown only for attendance-eligible meetings. -->\r\n <div\r\n *ngIf=\"isStandaloneEligible\"\r\n class=\"ieeesa-event-group-card__standalone-actions\"\r\n >\r\n <span class=\"ieeesa-event-group-card__attending-slot\">\r\n <span\r\n *ngIf=\"isStandaloneAttending\"\r\n class=\"ieeesa-event-group-card__attending-pill\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n </span>\r\n\r\n <button\r\n *ngIf=\"!isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--log\"\r\n [class.ieeesa-event-group-card__standalone-action--inactive]=\"isStandaloneLogDisabled\"\r\n [disabled]=\"isStandaloneLogDisabled\"\r\n [attr.title]=\"isStandaloneLogDisabled ? inactiveMessage : null\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <button\r\n *ngIf=\"isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--leave\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n</article>\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-event-group-card{display:flex;flex-direction:column;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#f8fafc;font-family:Calibri Regular}.ieeesa-event-group-card__header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 24px;border-bottom:1px solid #e2e8f0;background-color:#f8fafc}.ieeesa-event-group-card__header-main{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-event-group-card__badge-row{display:flex;align-items:center;gap:8px}.ieeesa-event-group-card__badge{display:inline-flex;align-items:center;align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:4px;font-family:Calibri Bold;font-size:10px;font-weight:700;letter-spacing:.03125em;text-transform:uppercase;color:#fff;background-color:#3b82f6}.ieeesa-event-group-card__badge--standalone{align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:3px;font-size:10px;letter-spacing:.25px;color:#53616a;background-color:#edf1f3}.ieeesa-event-group-card__day-indicator{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__title{margin:0;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#0f172a}.ieeesa-event-group-card__status-pill{display:inline-flex;align-items:center;padding:2px 16px;border-radius:23px;font-size:.75rem;line-height:16px;color:#fff;background-color:#4caf50}.ieeesa-event-group-card__status-pill--upcoming,.ieeesa-event-group-card__status-pill--starts-soon{color:#8a6d00;background-color:#fef7e0}.ieeesa-event-group-card__subtitle{margin:0;font-size:.75rem;line-height:16px;color:#64748b}.ieeesa-event-group-card__header-side{display:flex;align-items:center;gap:24px;flex-shrink:0}.ieeesa-event-group-card__dates-block{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin:0;text-align:left}.ieeesa-event-group-card__dates-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__dates-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;margin:0}.ieeesa-event-group-card__dates-value{font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__timezone-value{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__view{flex-shrink:0;padding:10px 24px;border:1px solid #878b8f;border-radius:3px;background-color:#f3f8fd;font-family:Calibri Bold;font-size:1rem;color:#0f172a;cursor:pointer}.ieeesa-event-group-card__view:hover{background-color:#eaf3f9}.ieeesa-event-group-card__meetings-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:12px 24px 0 32px;background-color:#f8fafc}.ieeesa-event-group-card__meetings-label{font-family:Calibri Bold;font-size:.875rem;color:#0f172a}.ieeesa-event-group-card__meetings-bar-right{display:flex;align-items:center;gap:16px}.ieeesa-event-group-card__meetings-open{display:inline-flex;align-items:center;gap:6px;font-family:Calibri Bold;font-size:.75rem;color:#15803d}.ieeesa-event-group-card__meetings-dot{width:8px;height:8px;border-radius:50%;background-color:#15803d}.ieeesa-event-group-card__meeting-toggle{display:inline-flex;align-items:center;gap:8px;padding:4px 0;border:0;background:none;font-family:Calibri Bold;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meetings-loader{display:flex;align-items:center;justify-content:center;padding:32px}.ieeesa-event-group-card__spinner{width:32px;height:32px;border:3px solid #e2e8f0;border-top-color:#00629b;border-radius:50%;animation:ieeesa-egc-spin .8s linear infinite}.ieeesa-event-group-card__meetings{display:flex;flex-direction:column;margin:16px 24px 16px 32px;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#fff}.ieeesa-event-group-card__paginator{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:12px 24px;background-color:#f8fafc}.ieeesa-event-group-card__paginator-range{font-size:.875rem;color:#64748b}.ieeesa-event-group-card__standalone{display:grid;grid-template-columns:minmax(260px,2.4fr) minmax(130px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px;min-height:72px;padding:8px 16px;background-color:#fff}.ieeesa-event-group-card__standalone-main{display:flex;flex-direction:column;gap:6px;min-width:0}.ieeesa-event-group-card__standalone-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__standalone-name{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#00629b;cursor:pointer}.ieeesa-event-group-card__standalone-name:hover{color:#004872}.ieeesa-event-group-card__standalone-subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__standalone-col{display:flex;flex-direction:column;gap:2px;margin:0;min-width:0}.ieeesa-event-group-card__standalone-col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__standalone-col-value{margin:0;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__standalone-actions{display:flex;align-items:center;justify-content:flex-end;gap:16px}.ieeesa-event-group-card__attending-slot{display:inline-flex;align-items:center;justify-content:flex-end;width:150px;flex-shrink:0}.ieeesa-event-group-card__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#15803d;background-color:#e8f5ec}.ieeesa-event-group-card__standalone-action{min-width:146px;padding:10px 24px;border-radius:3px;font-family:Calibri Bold;font-size:1rem;cursor:pointer}.ieeesa-event-group-card__standalone-action--log{border:1px solid #00629b;background-color:#00629b;color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.ieeesa-event-group-card__standalone-action--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-event-group-card__standalone-action:disabled,.ieeesa-event-group-card__standalone-action--inactive{border-color:#e2e8f0;background-color:#f4f5f7;color:#939094;box-shadow:none;cursor:not-allowed}.ieeesa-event-group-card--standalone{border-color:#dbe2eb}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header-side{flex-direction:column;align-items:stretch;gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__view{align-self:stretch;width:100%}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__paginator{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone{grid-template-columns:1fr;row-gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone-actions{justify-content:flex-start}@keyframes ieeesa-egc-spin{to{transform:rotate(360deg)}}\n"] }]
|
|
474
|
+
args: [{ selector: 'ieeesa-event-group-card', standalone: true, imports: [CommonModule, MatPaginatorModule, MeetingAttendanceRowComponent], encapsulation: ViewEncapsulation.None, template: "<article\r\n class=\"ieeesa-event-group-card\"\r\n [class.ieeesa-event-group-card--mobile]=\"isMobileView\"\r\n [class.ieeesa-event-group-card--standalone]=\"isStandalone\"\r\n>\r\n <!-- ============================ EVENT ============================ -->\r\n <ng-container *ngIf=\"!isStandalone\">\r\n <header class=\"ieeesa-event-group-card__header\">\r\n <div class=\"ieeesa-event-group-card__header-main\">\r\n <!-- EVENT badge + day indicator. -->\r\n <div class=\"ieeesa-event-group-card__badge-row\">\r\n <span class=\"ieeesa-event-group-card__badge\">\r\n {{ constants.eventGroupCard.eventBadge }}\r\n </span>\r\n <span\r\n *ngIf=\"event.dayIndicator\"\r\n class=\"ieeesa-event-group-card__day-indicator\"\r\n >\r\n {{ event.dayIndicator }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__title-row\">\r\n <h3 class=\"ieeesa-event-group-card__title\">{{ event.title }}</h3>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__header-side\">\r\n <dl class=\"ieeesa-event-group-card__dates-block\">\r\n <dt class=\"ieeesa-event-group-card__dates-label\">\r\n {{ constants.eventGroupCard.eventDatesLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__dates-line\">\r\n <span class=\"ieeesa-event-group-card__dates-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </span>\r\n <span\r\n *ngIf=\"event.timezone\"\r\n class=\"ieeesa-event-group-card__timezone-value\"\r\n >\r\n ({{ event.timezone }})\r\n </span>\r\n </dd>\r\n </dl>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__view\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.viewEvent\"\r\n (click)=\"onViewEvent()\"\r\n >\r\n {{ constants.eventGroupCard.viewEventLabel }}\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Meetings bar: \"Meetings\" label (left), open-for-attendance count +\r\n Show/Hide toggle (right), matching the Figma layout. -->\r\n <div class=\"ieeesa-event-group-card__meetings-bar\">\r\n <!-- <span class=\"ieeesa-event-group-card__meetings-label\">\r\n {{ constants.eventGroupCard.meetingsLabel }}\r\n </span> -->\r\n\r\n <div class=\"ieeesa-event-group-card__meetings-bar-right\">\r\n <span class=\"ieeesa-event-group-card__meetings-open\">\r\n <span class=\"ieeesa-event-group-card__meetings-dot\" aria-hidden=\"true\"></span>\r\n {{ openForAttendanceSummary }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__meeting-toggle\"\r\n [attr.aria-expanded]=\"isMeetingListOpen\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n (click)=\"onToggleMeetingList()\"\r\n >\r\n <span>{{ meetingListToggleLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isMeetingListOpen ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Expanded inner meeting list + per-event paginator. -->\r\n <div\r\n *ngIf=\"isMeetingListOpen\"\r\n class=\"ieeesa-event-group-card__meetings\"\r\n >\r\n <ieeesa-meeting-attendance-row\r\n *ngFor=\"let meeting of pagedMeetings; trackBy: trackByMeetingId\"\r\n [meeting]=\"meeting\"\r\n [attendanceState]=\"resolveAttendanceState(meeting)\"\r\n [isInFlight]=\"resolveIsInFlight(meeting)\"\r\n [permissions]=\"permissions\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-meeting-attendance-row>\r\n\r\n <!-- Empty state: shown when the event has no meetings to list. -->\r\n <p\r\n *ngIf=\"totalMeetings === 0\"\r\n class=\"ieeesa-event-group-card__no-meetings\"\r\n role=\"status\"\r\n >\r\n {{ constants.eventGroupCard.noMeetingsMessage }}\r\n </p>\r\n\r\n <!-- Paginator shown when the event has more meetings than the default\r\n page size. Gated on defaultPageSize (not the selected pageSize) so\r\n the page-size selector stays reachable after a user picks a larger\r\n size; hidden only when the event has no meetings ([]) or they all fit\r\n in the default page. -->\r\n <div\r\n *ngIf=\"totalMeetings > defaultPageSize\"\r\n class=\"ieeesa-event-group-card__paginator\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n >\r\n <mat-paginator\r\n class=\"ieeesa-event-group-card__paginator-control\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [length]=\"totalMeetings\"\r\n (page)=\"onPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- ======================= STANDALONE MEETING ======================= -->\r\n <!-- Single horizontal row: badge+name+subtitle | MEETING DATE | TIME & TIMEZONE | action. -->\r\n <div *ngIf=\"isStandalone\" class=\"ieeesa-event-group-card__standalone\">\r\n <div class=\"ieeesa-event-group-card__standalone-main\">\r\n <span class=\"ieeesa-event-group-card__badge ieeesa-event-group-card__badge--standalone\">\r\n {{ constants.eventGroupCard.standaloneBadge }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__standalone-title-row\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-name\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenStandalone()\"\r\n >\r\n {{ event.title }}\r\n </button>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__standalone-subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ standaloneTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance action column. Shown only for attendance-eligible meetings. -->\r\n <div\r\n *ngIf=\"isStandaloneEligible\"\r\n class=\"ieeesa-event-group-card__standalone-actions\"\r\n >\r\n <span class=\"ieeesa-event-group-card__attending-slot\">\r\n <span\r\n *ngIf=\"isStandaloneAttending\"\r\n class=\"ieeesa-event-group-card__attending-pill\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n </span>\r\n\r\n <button\r\n *ngIf=\"!isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--log\"\r\n [class.ieeesa-event-group-card__standalone-action--inactive]=\"isStandaloneLogDisabled\"\r\n [disabled]=\"isStandaloneLogDisabled\"\r\n [attr.title]=\"isStandaloneLogDisabled ? inactiveMessage : null\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <button\r\n *ngIf=\"isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--leave\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n</article>\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-event-group-card{display:flex;flex-direction:column;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#f8fafc;font-family:Calibri Regular;margin:2px 2px 14px}.ieeesa-event-group-card__header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 24px;border-bottom:1px solid #e2e8f0;background-color:#f8fafc}.ieeesa-event-group-card__header-main{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-event-group-card__badge-row{display:flex;align-items:center;gap:8px}.ieeesa-event-group-card__badge{display:inline-flex;align-items:center;align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:4px;font-family:Calibri Bold;font-size:10px;font-weight:700;letter-spacing:.03125em;text-transform:uppercase;color:#fff;background-color:#3b82f6}.ieeesa-event-group-card__badge--standalone{align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:3px;font-size:10px;letter-spacing:.25px;color:#53616a;background-color:#edf1f3}.ieeesa-event-group-card__day-indicator{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__title{margin:0;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#0f172a}.ieeesa-event-group-card__status-pill{display:inline-flex;align-items:center;padding:2px 16px;border-radius:23px;font-size:.75rem;line-height:16px;color:#fff;background-color:#4caf50}.ieeesa-event-group-card__status-pill--upcoming,.ieeesa-event-group-card__status-pill--starts-soon{color:#8a6d00;background-color:#fef7e0}.ieeesa-event-group-card__subtitle{margin:0;font-size:.75rem;line-height:16px;color:#64748b}.ieeesa-event-group-card__header-side{display:flex;align-items:center;gap:24px;flex-shrink:0}.ieeesa-event-group-card__dates-block{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin:0;text-align:left}.ieeesa-event-group-card__dates-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__dates-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;margin:0}.ieeesa-event-group-card__dates-value{font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__timezone-value{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__view{flex-shrink:0;padding:10px 24px;border:1px solid #878b8f;border-radius:3px;background-color:#f3f8fd;font-family:Calibri Bold;font-size:1rem;color:#0f172a;cursor:pointer}.ieeesa-event-group-card__view:hover{background-color:#eaf3f9}.ieeesa-event-group-card__meetings-bar{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;padding:12px 18px;background-color:#f8fafc}.ieeesa-event-group-card__meetings-label{font-family:Calibri Bold;font-size:.875rem;color:#0f172a}.ieeesa-event-group-card__meetings-bar-right{display:flex;align-items:center;gap:16px}.ieeesa-event-group-card__meetings-open{display:inline-flex;align-items:center;gap:6px;font-family:Calibri Bold;font-size:.75rem;color:#15803d}.ieeesa-event-group-card__meetings-dot{width:8px;height:8px;border-radius:50%;background-color:#15803d}.ieeesa-event-group-card__meeting-toggle{display:inline-flex;align-items:center;gap:8px;padding:4px 0;border:0;background:none;font-family:Calibri Bold;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meetings{display:flex;flex-direction:column;margin:16px 24px 16px 32px;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#fff}.ieeesa-event-group-card__no-meetings{margin:0;padding:16px;text-align:center;font-family:Calibri Regular;font-size:.875rem;color:#64748b}.ieeesa-event-group-card__paginator{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:12px 24px;background-color:#f8fafc}.ieeesa-event-group-card__paginator-range{font-size:.875rem;color:#64748b}.ieeesa-event-group-card__standalone{display:grid;grid-template-columns:minmax(260px,2.4fr) minmax(130px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px;min-height:72px;padding:8px 16px;background-color:#fff}.ieeesa-event-group-card__standalone-main{display:flex;flex-direction:column;gap:6px;min-width:0}.ieeesa-event-group-card__standalone-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__standalone-name{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#00629b;cursor:pointer}.ieeesa-event-group-card__standalone-name:hover{color:#004872}.ieeesa-event-group-card__standalone-subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__standalone-col{display:flex;flex-direction:column;gap:2px;margin:0;min-width:0}.ieeesa-event-group-card__standalone-col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__standalone-col-value{margin:0;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__standalone-actions{display:flex;align-items:center;justify-content:flex-end;gap:16px}.ieeesa-event-group-card__attending-slot{display:inline-flex;align-items:center;justify-content:flex-end;width:150px;flex-shrink:0}.ieeesa-event-group-card__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#15803d;background-color:#e8f5ec}.ieeesa-event-group-card__standalone-action{min-width:146px;padding:10px 24px;border-radius:3px;font-family:Calibri Bold;font-size:1rem;cursor:pointer}.ieeesa-event-group-card__standalone-action--log{border:1px solid #00629b;background-color:#00629b;color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.ieeesa-event-group-card__standalone-action--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-event-group-card__standalone-action:disabled,.ieeesa-event-group-card__standalone-action--inactive{border-color:#e2e8f0;background-color:#f4f5f7;color:#939094;box-shadow:none;cursor:not-allowed}.ieeesa-event-group-card--standalone{border-color:#dbe2eb}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header-side{flex-direction:column;align-items:stretch;gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__view{align-self:stretch;width:100%}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__paginator{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone{grid-template-columns:1fr;row-gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone-actions{justify-content:flex-start}\n"] }]
|
|
477
475
|
}], propDecorators: { event: [{
|
|
478
476
|
type: Input
|
|
479
477
|
}], permissions: [{
|
|
@@ -484,8 +482,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
484
482
|
type: Input
|
|
485
483
|
}], isMobileView: [{
|
|
486
484
|
type: Input
|
|
487
|
-
}], meetingsLoading: [{
|
|
488
|
-
type: Input
|
|
489
485
|
}], viewEvent: [{
|
|
490
486
|
type: Output
|
|
491
487
|
}], openMeeting: [{
|
|
@@ -501,4 +497,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
501
497
|
}], navigateToMeeting: [{
|
|
502
498
|
type: Output
|
|
503
499
|
}] } });
|
|
504
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZ3JvdXAtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2V2ZW50LWdyb3VwLWNhcmQvZXZlbnQtZ3JvdXAtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2V2ZW50LWdyb3VwLWNhcmQvZXZlbnQtZ3JvdXAtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGtCQUFrQixHQUVuQixNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUd0RSxPQUFPLEVBRUwsZ0JBQWdCLEdBQ2pCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDOzs7O0FBRTNEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBVUgsTUFBTSxPQUFPLHVCQUF1QjtJQVRwQztRQVVFLHlEQUF5RDtRQUN6RCw4REFBOEQ7UUFDOUQsY0FBUyxHQUFRLFdBQVcsQ0FBQztRQUU3QixrRkFBa0Y7UUFDekUsY0FBUyxHQUFHLGdCQUFnQixDQUFDO1FBbUJ0QyxrRkFBa0Y7UUFDekUsZ0JBQVcsR0FBZ0M7WUFDbEQsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixlQUFlLEVBQUUsS0FBSztTQUN2QixDQUFDO1FBRUYsOEVBQThFO1FBQ3JFLHFCQUFnQixHQUFvQyxFQUFFLENBQUM7UUFFaEUsd0VBQXdFO1FBQy9ELHVCQUFrQixHQUF3QixJQUFJLEdBQUcsRUFBVSxDQUFDO1FBRXJFLHNGQUFzRjtRQUM3RSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUU5QixrRkFBa0Y7UUFDekUsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFakMsOEVBQThFO1FBQ3BFLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWpELHlGQUF5RjtRQUMvRSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFbkQsb0ZBQW9GO1FBQzFFLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyRCxxRkFBcUY7UUFDM0UsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXBELG1GQUFtRjtRQUN6RSxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUV0RDs7OztXQUlHO1FBQ08saUJBQVksR0FBRyxJQUFJLFlBQVksRUFBa0MsQ0FBQztRQUU1RTs7OztXQUlHO1FBQ08sc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBSzFDLENBQUM7UUFFTCxnRUFBZ0U7UUFDdkQsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFFN0IsMEZBQTBGO1FBQ2pGLG9CQUFlLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXZDLDZEQUE2RDtRQUM3RCxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWQsaURBQWlEO1FBQ2pELGFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBRWhDLGtFQUFrRTtRQUNsRSxzQkFBaUIsR0FBRyxLQUFLLENBQUM7S0EwYjNCO0lBNWdCQzs7Ozs7O09BTUc7SUFDSCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQzthQUM5QixJQUFJLEVBQUU7YUFDTixXQUFXLEVBQUU7YUFDYixPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUF3RUQ7Ozs7O09BS0c7SUFDSCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLGFBQWE7UUFDZixPQUFPLENBQ0wsSUFBSSxDQUFDLEtBQUssRUFBRSxnQkFBZ0I7WUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUFJLFVBQVU7UUFDWixNQUFNLFFBQVEsR0FDWixJQUFJLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsYUFBYTtZQUN4RCxrQ0FBa0MsQ0FBQztRQUNyQyxPQUFPLFFBQVE7YUFDWixPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3hDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDcEMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksbUJBQW1CO1FBQ3JCLE1BQU0sUUFBUSxHQUNaLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxhQUFhO1lBQ3hELGtCQUFrQixDQUFDO1FBQ3JCLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBSSxZQUFZO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1lBQ2pELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxJQUFJLEVBQUUsQ0FBQztZQUNsRCxJQUFJLEtBQUssSUFBSSxRQUFRLEVBQUU7Z0JBQ3JCLE9BQU8sR0FBRyxLQUFLLFdBQVcsUUFBUSxFQUFFLENBQUM7YUFDdEM7WUFDRCxPQUFPLEtBQUssSUFBSSxRQUFRLENBQUM7U0FDMUI7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILElBQUksc0JBQXNCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDO1FBQ2pFLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLE9BQU8sTUFBTSxFQUFFLFNBQVMsSUFBSSxlQUFlLENBQUM7U0FDN0M7UUFDRCxPQUFPLE1BQU0sRUFBRSxTQUFTLElBQUksZUFBZSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLHdCQUF3QjtRQUMxQixNQUFNLFFBQVEsR0FDWixJQUFJLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSx5QkFBeUI7WUFDekQsc0NBQXNDLENBQUM7UUFDekMsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUNyQixTQUFTLEVBQ1QsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLHNCQUFzQixJQUFJLENBQUMsRUFBRSxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksaUJBQWlCO1FBQ25CLE9BQU87WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksRUFBRTtZQUNwQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRTtZQUNwQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGdCQUFnQjtZQUM5QyxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxjQUFjO1lBQzFDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVM7WUFDakUsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTztZQUMzRCxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRTtZQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNO1lBQzFCLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGVBQWU7U0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksY0FBYztRQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDNUMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFDbEQsV0FBVyxDQUFDLGtCQUFrQixFQUM5QixRQUFRLENBQ1QsQ0FBQztRQUNGLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FDckIsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQzlDLFdBQVcsQ0FBQyxrQkFBa0IsRUFDOUIsUUFBUSxDQUNULENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDckQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLENBQ0wsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNuRCxlQUFlLENBQUMsbUJBQW1CLENBQ3BDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBSSxpQkFBaUI7UUFDbkIsd0VBQXdFO1FBQ3hFLDRFQUE0RTtRQUM1RSxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxhQUFhLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNsQyxDQUFDO0lBRUQsbUZBQW1GO0lBQ25GLElBQUksZUFBZTtRQUNqQixPQUFPLENBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsZUFBZTtZQUMzQyw0SEFBNEgsQ0FDN0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILG1CQUFtQixDQUFDLE9BS25CO1FBQ0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxFQUFFO1lBQ1gsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEVBQUU7WUFDcEMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtZQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQjtRQUNkLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDMUIsT0FBTyxFQUFFLEVBQUU7WUFDWCxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksRUFBRTtTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQ25ELENBQUM7SUFDSixDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsZ0JBQWdCLENBQUMsTUFBYyxFQUFFLE9BQW1CO1FBQ2xELE9BQU8sT0FBTyxFQUFFLFNBQVMsSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxzQkFBc0IsQ0FBQyxPQUFtQjtRQUN4QyxPQUFPLENBQ0wsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztZQUMzQyxlQUFlLENBQUMsYUFBYSxDQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGlCQUFpQixDQUFDLE9BQW1CO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNqRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDM0U7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsU0FBaUI7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsU0FBaUI7UUFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsU0FBaUI7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLEtBQWdCO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbkIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDLENBQUM7UUFDSCw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLFVBQVUsQ0FBQyxLQUF5QztRQUMxRCxPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdFLENBQUM7K0dBbmhCVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw0ZkNqRHBDLDJsVEFpUEEsc3pmRHJNWSxZQUFZLDZWQUFFLGtCQUFrQiwwSkFBRSw2QkFBNkI7OzRGQUs5RCx1QkFBdUI7a0JBVG5DLFNBQVM7K0JBRUUseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSw2QkFBNkIsQ0FBQyxpQkFHM0QsaUJBQWlCLENBQUMsSUFBSTs4QkF5QjVCLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdJLFNBQVM7c0JBQWxCLE1BQU07Z0JBR0csV0FBVztzQkFBcEIsTUFBTTtnQkFHRyxhQUFhO3NCQUF0QixNQUFNO2dCQUdHLFlBQVk7c0JBQXJCLE1BQU07Z0JBR0csVUFBVTtzQkFBbkIsTUFBTTtnQkFPRyxZQUFZO3NCQUFyQixNQUFNO2dCQU9HLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTWF0UGFnaW5hdG9yTW9kdWxlLFxyXG4gIFBhZ2VFdmVudCxcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBBdHRlbmRhbmNlQWN0aW9uUGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXR0ZW5kYW5jZS1hY3Rpb24tcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBBdHRlbmRhbmNlU3RhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXR0ZW5kYW5jZS1zdGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IE1lZXRpbmdSb3cgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVldGluZy1yb3cubW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BhZ2UtY2hhbmdlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBVcGNvbWluZ0V2ZW50LFxyXG4gIFVwY29taW5nSXRlbUtpbmQsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3VwY29taW5nLWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgRGF0ZUZvcm1hdHMgfSBmcm9tICcuLi8uLi9hc3NldHMvZGF0ZS1mb3JtYXRzJztcclxuaW1wb3J0IHsgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnQgfSBmcm9tICcuLi9tZWV0aW5nLWF0dGVuZGFuY2Utcm93L21lZXRpbmctYXR0ZW5kYW5jZS1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgZm9ybWF0RXBvY2ggfSBmcm9tICcuLi8uLi91dGlscy9kYXRlLWZvcm1hdC51dGlsJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuXHJcbi8qKlxyXG4gKiBFdmVudF9Hcm91cF9DYXJkIHJlbmRlcnMgYSBzaW5nbGUgdXBjb21pbmcgZXZlbnQgYXMgYSBjYXJkOiB0aGUgc3RhdHVzIGJhZGdlLFxyXG4gKiB0aXRsZSwgZGF5IGluZGljYXRvciwgbWVldGluZy1jb3VudCBzdW1tYXJ5IHN1Yi1saW5lLCBzdGFydC9lbmQgZGF0ZSwgYW5kXHJcbiAqIHRpbWV6b25lIChhbGwgbHV4b24tZm9ybWF0dGVkKS4gSXQgZXhwb3NlcyBhIFwiVmlldyBFdmVudFwiIGFjdGlvbiwgYVxyXG4gKiBzaG93L2hpZGUgdG9nZ2xlIGZvciB0aGUgbWVldGluZyBsaXN0IGxhYmVsZWQgd2l0aCB0aGUgb3Blbi1mb3ItYXR0ZW5kYW5jZVxyXG4gKiBjb3VudCwgdGhlIHBlci1ldmVudCBtZWV0aW5nIHJvd3MgKG9uZSB7QGxpbmsgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnR9XHJcbiAqIHBlciBtZWV0aW5nIG9uIHRoZSBjdXJyZW50IHBhZ2UpLCBhbmQgYSBwZXItY2FyZCBwYWdpbmF0b3IuXHJcbiAqXHJcbiAqIFRoZSBjb21wb25lbnQgaXMgcHVyZWx5IHByZXNlbnRhdGlvbmFsIOKAlCBpdCBlbWl0cyBuYXZpZ2F0aW9uLCBhdHRlbmRhbmNlLCBhbmRcclxuICogcGFnaW5hdGlvbiBpbnRlbnRzIHZpYSBgQE91dHB1dCgpYCBhbmQgbmV2ZXIgcGVyZm9ybXMgbmF2aWdhdGlvbiBvciBIVFRQXHJcbiAqIGl0c2VsZi4gTWVldGluZy1yb3cgb3V0cHV0cyAoYG9wZW5NZWV0aW5nYC9gbG9nQXR0ZW5kYW5jZWAvYGxlYXZlTWVldGluZ2ApIGFyZVxyXG4gKiBidWJibGVkIHVwd2FyZCB1bmNoYW5nZWQgc28gdGhlIGNvbnRhaW5lciBjYW4gZGVsZWdhdGUgdG8gdGhlIHNlcnZpY2UuXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0UGFnaW5hdG9yTW9kdWxlLCBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2V2ZW50LWdyb3VwLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2V2ZW50LWdyb3VwLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXZlbnRHcm91cENhcmRDb21wb25lbnQge1xyXG4gIC8qKiBVc2VyLWZhY2luZyBzdHJpbmdzIHNvdXJjZWQgZnJvbSBgY29uc3RhbnRzLmpzb25gLiAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuXHJcbiAgLyoqIEVudW0gcmVmZXJlbmNlIGZvciBFVkVOVCB2cyBTVEFOREFMT05FX01FRVRJTkcgY29tcGFyaXNvbnMgaW4gdGhlIHRlbXBsYXRlLiAqL1xyXG4gIHJlYWRvbmx5IGl0ZW1LaW5kcyA9IFVwY29taW5nSXRlbUtpbmQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBldmVudCBzdGF0dXMgc2x1Z2lmaWVkIGludG8gYSBCRU0gbW9kaWZpZXIgc3VmZml4IChsb3dlcmNhc2UsIHNwYWNlcyB0b1xyXG4gICAqIGh5cGhlbnMpLCBlLmcuIFwiSW4gUHJvZ3Jlc3NcIiAtPiBcImluLXByb2dyZXNzXCIsIHVzZWQgdG8gY29sb3VyIHRoZSBzdGF0dXNcclxuICAgKiBwaWxsIHBlciBzdGF0dXMuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3RhdHVzIG1vZGlmaWVyIHN1ZmZpeC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgc3RhdHVzTW9kaWZpZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAodGhpcy5ldmVudD8uc3RhdHVzID8/ICcnKVxyXG4gICAgICAudHJpbSgpXHJcbiAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgIC5yZXBsYWNlKC9cXHMrL2csICctJyk7XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIHVwY29taW5nIGV2ZW50IHJlbmRlcmVkIGJ5IHRoaXMgY2FyZC4gKi9cclxuICBASW5wdXQoKSBldmVudCE6IFVwY29taW5nRXZlbnQ7XHJcblxyXG4gIC8qKiBIb3N0IHBlcm1pc3Npb25zIGdhdGluZyB0aGUgcGVyLXJvdyBsb2ctYXR0ZW5kYW5jZSAvIGxlYXZlLW1lZXRpbmcgYnV0dG9ucy4gKi9cclxuICBASW5wdXQoKSBwZXJtaXNzaW9uczogQXR0ZW5kYW5jZUFjdGlvblBlcm1pc3Npb25zID0ge1xyXG4gICAgY2FuTG9nQXR0ZW5kYW5jZTogZmFsc2UsXHJcbiAgICBjYW5MZWF2ZU1lZXRpbmc6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIC8qKiBNYXAgb2YgbWVldGluZyBpZCB0byBjdXJyZW50IGF0dGVuZGFuY2Ugc3RhdGUsIHBhc3NlZCBkb3duIHRvIGVhY2ggcm93LiAqL1xyXG4gIEBJbnB1dCgpIGF0dGVuZGFuY2VTdGF0ZXM6IFJlY29yZDxzdHJpbmcsIEF0dGVuZGFuY2VTdGF0ZT4gPSB7fTtcclxuXHJcbiAgLyoqIFNldCBvZiBtZWV0aW5nIGlkcyB3aXRoIGFuIGF0dGVuZGFuY2UgYWN0aW9uIGF3YWl0aW5nIHJlc29sdXRpb24uICovXHJcbiAgQElucHV0KCkgaW5GbGlnaHRNZWV0aW5nSWRzOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBXaGV0aGVyIHRoZSBob3N0IGhhcyBkZXRlcm1pbmVkIHRoZSB2aWV3cG9ydCBpcyBhdC9iZWxvdyB0aGUgbW9iaWxlIGJyZWFrcG9pbnQuICovXHJcbiAgQElucHV0KCkgaXNNb2JpbGVWaWV3ID0gZmFsc2U7XHJcblxyXG4gIC8qKiBXaGV0aGVyIHRoaXMgZXZlbnQncyBjaGlsZCBtZWV0aW5ncyBhcmUgY3VycmVudGx5IGxvYWRpbmcgKGRyaWxsLWRvd24gQVBJKS4gKi9cclxuICBASW5wdXQoKSBtZWV0aW5nc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgLyoqIEVtaXRzIHRoZSBldmVudCBpZCB3aGVuIHRoZSBcIlZpZXcgRXZlbnRcIiBidXR0b24gaXMgYWN0aXZhdGVkIChSZXEgNi40KS4gKi9cclxuICBAT3V0cHV0KCkgdmlld0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBCdWJibGVzIHRoZSBtZWV0aW5nIGlkIHdoZW4gYSByb3cncyBtZWV0aW5nLW5hbWUgbGluayBpcyBhY3RpdmF0ZWQgKFJlcSA2LjcsIDcuNCkuICovXHJcbiAgQE91dHB1dCgpIG9wZW5NZWV0aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBCdWJibGVzIHRoZSBtZWV0aW5nIGlkIHdoZW4gYSByb3cgcmVxdWVzdHMgbG9nZ2luZyBhdHRlbmRhbmNlIChSZXEgNi43LCA3LjcpLiAqL1xyXG4gIEBPdXRwdXQoKSBsb2dBdHRlbmRhbmNlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBCdWJibGVzIHRoZSBtZWV0aW5nIGlkIHdoZW4gYSByb3cgcmVxdWVzdHMgbGVhdmluZyB0aGUgbWVldGluZyAoUmVxIDYuNywgNy44KS4gKi9cclxuICBAT3V0cHV0KCkgbGVhdmVNZWV0aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBFbWl0cyB0aGUgcmVxdWVzdGVkIHBhZ2Ugd2hlbiB0aGUgcGVyLWNhcmQgcGFnaW5hdG9yIGNoYW5nZXMgKFJlcSA2LjksIDMuMykuICovXHJcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VDaGFuZ2U+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBvbmUtYmFzZWQgcGFnZSB0byBsb2FkIHdoZW4gdGhlIG1lZXRpbmcgbGlzdCBpcyBvcGVuZWQgKG9yIHBhZ2VkKVxyXG4gICAqIHNvIHRoZSBjb250YWluZXIgY2FuIGxhemlseSBmZXRjaCB0aGUgZXZlbnQncyBjaGlsZCBtZWV0aW5ncyBmcm9tIHRoZVxyXG4gICAqIGJhY2tlbmQuIFN0YW5kYWxvbmUtbWVldGluZyBjYXJkcyBuZXZlciBlbWl0IHRoaXMuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGxvYWRNZWV0aW5ncyA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwYWdlOiBudW1iZXI7IHNpemU6IG51bWJlciB9PigpO1xyXG5cclxuICAvKipcclxuICAgKiBCdWJibGVzIHRoZSBvd25pbmcgZXZlbnQgaWQgKyBtZWV0aW5nIGlkIHdoZW4gYW4gYXR0ZW5kYW5jZSBidXR0b24gaXNcclxuICAgKiBhY3RpdmF0ZWQgZm9yIGFuIEluLVByb2dyZXNzIG1lZXRpbmcsIHNvIHRoZSBob3N0IGNhbiBuYXZpZ2F0ZSB0byB0aGVcclxuICAgKiB2aWV3LW1lZXRpbmcgc2NyZWVuICh3aGVyZSB0aGUgcmVhbCBMb2cgQXR0ZW5kYW5jZSBwb3B1cCBvcGVucykuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG5hdmlnYXRlVG9NZWV0aW5nID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBldmVudElkOiBzdHJpbmc7XHJcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcclxuICAgIGxvZ0F0dGVuZGFuY2U/OiBib29sZWFuO1xyXG4gICAgbGVhdmVNZWV0aW5nPzogYm9vbGVhbjtcclxuICB9PigpO1xyXG5cclxuICAvKiogVGhlIGRlZmF1bHQgcGFnZSBzaXplIGZvciB0aGUgcGVyLWNhcmQgbWVldGluZyBwYWdpbmF0b3IuICovXHJcbiAgcmVhZG9ubHkgZGVmYXVsdFBhZ2VTaXplID0gNTtcclxuXHJcbiAgLyoqIFBhZ2Utc2l6ZSBvcHRpb25zIHNob3duIGluIHRoZSBwYWdpbmF0b3IgZHJvcGRvd24gKG1hdGNoZXMgdGhlIGFwcC13aWRlIHBhZ2luYXRvcikuICovXHJcbiAgcmVhZG9ubHkgcGFnZVNpemVPcHRpb25zID0gWzUsIDEwLCAxNV07XHJcblxyXG4gIC8qKiBUaGUgY3VycmVudCB6ZXJvLWJhc2VkIHBhZ2UgaW5kZXggb2YgdGhlIG1lZXRpbmcgbGlzdC4gKi9cclxuICBwYWdlSW5kZXggPSAwO1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgcGFnZSBzaXplIG9mIHRoZSBtZWV0aW5nIGxpc3QuICovXHJcbiAgcGFnZVNpemUgPSB0aGlzLmRlZmF1bHRQYWdlU2l6ZTtcclxuXHJcbiAgLyoqIFdoZXRoZXIgdGhlIG1lZXRpbmcgbGlzdCBpcyBjdXJyZW50bHkgc2hvd24gKHRvZ2dsZWQgb3BlbikuICovXHJcbiAgaXNNZWV0aW5nTGlzdE9wZW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGlzIGNhcmQgcmVuZGVycyBhIFNUQU5EQUxPTkVfTUVFVElORyAobGVhbmVyIHNpbmdsZS1tZWV0aW5nIGNhcmRcclxuICAgKiB3aXRoIG5vIGNoaWxkLW1lZXRpbmcgbGlzdCkgcmF0aGVyIHRoYW4gYW4gZXhwYW5kYWJsZSBFVkVOVCBibG9jay5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGZvciBzdGFuZGFsb25lLW1lZXRpbmcgY2FyZHMuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IGlzU3RhbmRhbG9uZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmV2ZW50Py5raW5kID09PSBVcGNvbWluZ0l0ZW1LaW5kLlNUQU5EQUxPTkVfTUVFVElORztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBmdWxsIGxpc3Qgb2YgbWVldGluZ3MgZm9yIHRoZSBldmVudCwgZGVmYXVsdGluZyB0byBhbiBlbXB0eSBsaXN0IHdoZW5cclxuICAgKiB0aGUgZXZlbnQgaGFzIG5vbmUuXHJcbiAgICogQHJldHVybiB7TWVldGluZ1Jvd1tdfSBUaGUgZXZlbnQncyBtZWV0aW5ncy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgbWVldGluZ3MoKTogTWVldGluZ1Jvd1tdIHtcclxuICAgIHJldHVybiB0aGlzLmV2ZW50Py5tZWV0aW5ncyA/PyBbXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgbWVldGluZ3MgZm9yIHRoZSBldmVudCAocGFnaW5hdG9yIGxlbmd0aCkuIFVzZXMgdGhlXHJcbiAgICogYmFja2VuZCBgbWVldGluZ0NvdW50YCAodGhlIGZ1bGwgdG90YWwpIHJhdGhlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlXHJcbiAgICogY3VycmVudGx5IGxvYWRlZCBwYWdlLCBzbyB0aGUgcGFnaW5hdG9yIGNhbiBhZHZhbmNlIHRocm91Z2ggZXZlcnkgcGFnZS5cclxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB0b3RhbCBtZWV0aW5nIGNvdW50LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCB0b3RhbE1lZXRpbmdzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmV2ZW50Py5tZWV0aW5nUGFnZVRvdGFsID8/XHJcbiAgICAgIHRoaXMuZXZlbnQ/Lm1lZXRpbmdDb3VudCA/P1xyXG4gICAgICB0aGlzLm1lZXRpbmdzLmxlbmd0aFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBtZWV0aW5ncyB0byByZW5kZXIgZm9yIHRoZSBjdXJyZW50IHBhZ2UuIFRoZSBzZXJ2ZXIgcmV0dXJucyBleGFjdGx5IG9uZVxyXG4gICAqIHBhZ2Ugb2YgbWVldGluZ3MgaW50byBgZXZlbnQubWVldGluZ3NgLCBzbyB0aGUgY2FyZCByZW5kZXJzIHRoZW0gYXMtaXNcclxuICAgKiB3aXRob3V0IGxvY2FsIHNsaWNpbmcgKHBhZ2luYXRpb24gaXMgc2VydmVyLXNpZGUpLlxyXG4gICAqIEByZXR1cm4ge01lZXRpbmdSb3dbXX0gVGhlIG1lZXRpbmdzIG9uIHRoZSBjdXJyZW50IHBhZ2UuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHBhZ2VkTWVldGluZ3MoKTogTWVldGluZ1Jvd1tdIHtcclxuICAgIHJldHVybiB0aGlzLm1lZXRpbmdzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG9uZS1iYXNlZCBpbmRleCBvZiB0aGUgZmlyc3QgbWVldGluZyBzaG93biBvbiB0aGUgY3VycmVudCBwYWdlLCBvciAwXHJcbiAgICogd2hlbiB0aGVyZSBhcmUgbm8gbWVldGluZ3MuXHJcbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgc3RhcnQgaW5kZXggZm9yIHRoZSByYW5nZSB0ZW1wbGF0ZS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgcmFuZ2VTdGFydCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudG90YWxNZWV0aW5ncyA9PT0gMCA/IDAgOiB0aGlzLnBhZ2VJbmRleCAqIHRoaXMucGFnZVNpemUgKyAxO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG9uZS1iYXNlZCBpbmRleCBvZiB0aGUgbGFzdCBtZWV0aW5nIHNob3duIG9uIHRoZSBjdXJyZW50IHBhZ2UsIGNsYW1wZWRcclxuICAgKiB0byB0aGUgdG90YWwgbWVldGluZyBjb3VudC5cclxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBlbmQgaW5kZXggZm9yIHRoZSByYW5nZSB0ZW1wbGF0ZS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgcmFuZ2VFbmQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLm1pbigodGhpcy5wYWdlSW5kZXggKyAxKSAqIHRoaXMucGFnZVNpemUsIHRoaXMudG90YWxNZWV0aW5ncyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgcGFnaW5hdG9yIHJhbmdlIGxhYmVsIChlLmcuIFwiU2hvd2luZyAxLTUgb2YgMTJcIikgYnVpbHQgZnJvbSB0aGVcclxuICAgKiBgY29uc3RhbnRzLmpzb25gIHJhbmdlIHRlbXBsYXRlIHdpdGggdGhlIGN1cnJlbnQgc3RhcnQvZW5kL3RvdGFsIHZhbHVlcy5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgcmFuZ2UgbGFiZWwuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHJhbmdlTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRlbXBsYXRlID1cclxuICAgICAgdGhpcy5jb25zdGFudHM/LmV2ZW50R3JvdXBDYXJkPy5wYWdpbmF0b3I/LnJhbmdlVGVtcGxhdGUgPz9cclxuICAgICAgJ1Nob3dpbmcge3N0YXJ0fS17ZW5kfSBvZiB7dG90YWx9JztcclxuICAgIHJldHVybiB0ZW1wbGF0ZVxyXG4gICAgICAucmVwbGFjZSgne3N0YXJ0fScsIGAke3RoaXMucmFuZ2VTdGFydH1gKVxyXG4gICAgICAucmVwbGFjZSgne2VuZH0nLCBgJHt0aGlzLnJhbmdlRW5kfWApXHJcbiAgICAgIC5yZXBsYWNlKCd7dG90YWx9JywgYCR7dGhpcy50b3RhbE1lZXRpbmdzfWApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG1lZXRpbmctY291bnQgc3VtbWFyeSBzdWItbGluZSAoZS5nLiBcIjEyIG1lZXRpbmdzXCIpIGJ1aWx0IGZyb20gdGhlXHJcbiAgICogYGNvbnN0YW50cy5qc29uYCB0b3RhbCB0ZW1wbGF0ZSB3aXRoIHRoZSBldmVudCdzIG1lZXRpbmcgY291bnQuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIG1lZXRpbmctY291bnQgc3VtbWFyeS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgbWVldGluZ0NvdW50U3VtbWFyeSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdGVtcGxhdGUgPVxyXG4gICAgICB0aGlzLmNvbnN0YW50cz8uZXZlbnRHcm91cENhcmQ/LnBhZ2luYXRvcj8udG90YWxUZW1wbGF0ZSA/P1xyXG4gICAgICAne3RvdGFsfSBtZWV0aW5ncyc7XHJcbiAgICByZXR1cm4gdGVtcGxhdGUucmVwbGFjZSgne3RvdGFsfScsIGAke3RoaXMuZXZlbnQ/Lm1lZXRpbmdDb3VudCA/PyAwfWApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGhlYWRlciBzdWItbGluZTogdGhlIGdyb3VwIMK3IGxvY2F0aW9uIGxpbmUgZm9yIGEgU1RBTkRBTE9ORSBtZWV0aW5nLCBvclxyXG4gICAqIHRoZSBcIntufSBtZWV0aW5ncyBzY2hlZHVsZWQgYWNyb3NzIHRoZSBldmVudFwiIHN1bW1hcnkgZm9yIGFuIEVWRU5UIHdoZW4gaXRzXHJcbiAgICogbWVldGluZyBjb3VudCBpcyBrbm93biAoaGlkZGVuIHVudGlsIHRoZSBjb3VudCBpcyBsb2FkZWQgc28gaXQgbmV2ZXIgc2hvd3NcclxuICAgKiBcIjAgbWVldGluZ3NcIikuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3ViLWxpbmUgdGV4dCwgb3IgYW4gZW1wdHkgc3RyaW5nIHRvIGhpZGUgaXQuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHN1YnRpdGxlVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNTdGFuZGFsb25lKSB7XHJcbiAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5ldmVudD8uZ3JvdXBPckNvbW1pdHRlZSA/PyAnJztcclxuICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmV2ZW50Py5yb29tT3JMb2NhdGlvbiA/PyAnJztcclxuICAgICAgaWYgKGdyb3VwICYmIGxvY2F0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke2dyb3VwfSBcXHUwMGI3ICR7bG9jYXRpb259YDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZ3JvdXAgfHwgbG9jYXRpb247XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKHRoaXMuZXZlbnQ/Lm1lZXRpbmdDb3VudCA/PyAwKSA+IDAgPyB0aGlzLm1lZXRpbmdDb3VudFN1bW1hcnkgOiAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBtZWV0aW5nLWxpc3Qgc2hvdy9oaWRlIHRvZ2dsZSBsYWJlbC4gV2hlbiB0aGUgbGlzdCBpcyBoaWRkZW4gdGhlIGxhYmVsXHJcbiAgICogcmVhZHMgXCJTaG93IE1lZXRpbmdzICh7Y291bnR9IG9wZW4gZm9yIGF0dGVuZGFuY2UpXCIgYnVpbHQgZnJvbSB0aGVcclxuICAgKiBgY29uc3RhbnRzLmpzb25gIHRlbXBsYXRlcyBhbmQgdGhlIGV2ZW50J3Mgb3Blbi1mb3ItYXR0ZW5kYW5jZSBjb3VudDsgd2hlblxyXG4gICAqIHRoZSBsaXN0IGlzIHNob3duIHRoZSBsYWJlbCByZWFkcyB0aGUgY29uZmlndXJlZCBoaWRlIGxhYmVsIChSZXEgNi41KS5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSB0b2dnbGUgYnV0dG9uIGxhYmVsLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBtZWV0aW5nTGlzdFRvZ2dsZUxhYmVsKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB0b2dnbGUgPSB0aGlzLmNvbnN0YW50cz8uZXZlbnRHcm91cENhcmQ/Lm1lZXRpbmdMaXN0VG9nZ2xlO1xyXG4gICAgaWYgKHRoaXMuaXNNZWV0aW5nTGlzdE9wZW4pIHtcclxuICAgICAgcmV0dXJuIHRvZ2dsZT8uaGlkZUxhYmVsID8/ICdIaWRlIG1lZXRpbmdzJztcclxuICAgIH1cclxuICAgIHJldHVybiB0b2dnbGU/LnNob3dMYWJlbCA/PyAnU2hvdyBtZWV0aW5ncyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgXCJ7Y291bnR9IE1lZXRpbmdzIG9wZW4gZm9yIGF0dGVuZGFuY2VcIiBzdW1tYXJ5IHNob3duIGluIHRoZSBldmVudCdzXHJcbiAgICogbWVldGluZ3MgYmFyLCBidWlsdCBmcm9tIHRoZSBgY29uc3RhbnRzLmpzb25gIHRlbXBsYXRlIGFuZCB0aGUgZXZlbnQnc1xyXG4gICAqIG9wZW4tZm9yLWF0dGVuZGFuY2UgY291bnQgKFJlcSA2LjUpLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZvcm1hdHRlZCBvcGVuLWZvci1hdHRlbmRhbmNlIHN1bW1hcnkuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IG9wZW5Gb3JBdHRlbmRhbmNlU3VtbWFyeSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdGVtcGxhdGUgPVxyXG4gICAgICB0aGlzLmNvbnN0YW50cz8uZXZlbnRHcm91cENhcmQ/Lm9wZW5Gb3JBdHRlbmRhbmNlVGVtcGxhdGUgPz9cclxuICAgICAgJ3tjb3VudH0gTWVldGluZ3Mgb3BlbiBmb3IgYXR0ZW5kYW5jZSc7XHJcbiAgICByZXR1cm4gdGVtcGxhdGUucmVwbGFjZShcclxuICAgICAgJ3tjb3VudH0nLFxyXG4gICAgICBgJHt0aGlzLmV2ZW50Py5vcGVuRm9yQXR0ZW5kYW5jZUNvdW50ID8/IDB9YFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSB7QGxpbmsgTWVldGluZ1Jvd30gdmlldyBtb2RlbCBmb3IgYSBTVEFOREFMT05FX01FRVRJTkcgY2FyZCwgcHJvamVjdGVkXHJcbiAgICogZnJvbSB0aGUgZXZlbnQgZW50cnkgc28gdGhlIHNoYXJlZCB7QGxpbmsgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnR9XHJcbiAgICogcmVuZGVycyBpdHMgdGltZS90aW1lem9uZSBibG9jayBhbmQgYXR0ZW5kYW5jZSBhY3Rpb24uXHJcbiAgICogQHJldHVybiB7TWVldGluZ1Jvd30gVGhlIHN0YW5kYWxvbmUgbWVldGluZyByb3cuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHN0YW5kYWxvbmVNZWV0aW5nKCk6IE1lZXRpbmdSb3cge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbWVldGluZ0lkOiB0aGlzLmV2ZW50Py5ldmVudElkID8/ICcnLFxyXG4gICAgICBtZWV0aW5nTmFtZTogdGhpcy5ldmVudD8udGl0bGUgPz8gJycsXHJcbiAgICAgIGdyb3VwT3JDb21taXR0ZWU6IHRoaXMuZXZlbnQ/Lmdyb3VwT3JDb21taXR0ZWUsXHJcbiAgICAgIHJvb21PckxvY2F0aW9uOiB0aGlzLmV2ZW50Py5yb29tT3JMb2NhdGlvbixcclxuICAgICAgc3RhcnREYXRlVGltZTogdGhpcy5ldmVudD8uc3RhcnREYXRlVGltZSA/PyB0aGlzLmV2ZW50Py5zdGFydERhdGUsXHJcbiAgICAgIGVuZERhdGVUaW1lOiB0aGlzLmV2ZW50Py5lbmREYXRlVGltZSA/PyB0aGlzLmV2ZW50Py5lbmREYXRlLFxyXG4gICAgICB0aW1lem9uZTogdGhpcy5ldmVudD8udGltZXpvbmUgPz8gJycsXHJcbiAgICAgIHN0YXR1czogdGhpcy5ldmVudD8uc3RhdHVzLFxyXG4gICAgICBpc01lbWJlck9mR3JvdXA6IHRoaXMuZXZlbnQ/LmlzTWVtYmVyT2ZHcm91cCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgZm9ybWF0dGVkIFwic3RhcnQg4oCTIGVuZCB0aW1lICh0aW1lem9uZSlcIiBzdHJpbmcgZm9yIGEgU1RBTkRBTE9ORSBtZWV0aW5nLFxyXG4gICAqIG1pcnJvcmluZyB0aGUgaW5uZXIgbWVldGluZyByb3cncyBUSU1FICYgVElNRVpPTkUgdmFsdWUuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIHRpbWUgKyB0aW1lem9uZS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgc3RhbmRhbG9uZVRpbWUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRpbWV6b25lID0gdGhpcy5ldmVudD8udGltZXpvbmUgPz8gJyc7XHJcbiAgICBjb25zdCBzdGFydCA9IGZvcm1hdEVwb2NoKFxyXG4gICAgICB0aGlzLmV2ZW50Py5zdGFydERhdGVUaW1lID8/IHRoaXMuZXZlbnQ/LnN0YXJ0RGF0ZSxcclxuICAgICAgRGF0ZUZvcm1hdHMudGltZU1lcmlkaWVtRm9ybWF0LFxyXG4gICAgICB0aW1lem9uZVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGVuZCA9IGZvcm1hdEVwb2NoKFxyXG4gICAgICB0aGlzLmV2ZW50Py5lbmREYXRlVGltZSA/PyB0aGlzLmV2ZW50Py5lbmREYXRlLFxyXG4gICAgICBEYXRlRm9ybWF0cy50aW1lTWVyaWRpZW1Gb3JtYXQsXHJcbiAgICAgIHRpbWV6b25lXHJcbiAgICApO1xyXG4gICAgY29uc3QgcmFuZ2UgPSBlbmQgPyBgJHtzdGFydH0gXFx1MjAxMyAke2VuZH1gIDogc3RhcnQ7XHJcbiAgICBpZiAoIXJhbmdlKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiB0aW1lem9uZSA/IGAke3JhbmdlfSAke3RpbWV6b25lfWAgOiByYW5nZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIFNUQU5EQUxPTkUgbWVldGluZyBpcyBjdXJyZW50bHkgYmVpbmcgYXR0ZW5kZWQgKGRyaXZlcyB0aGUgcGlsbFxyXG4gICAqIGFuZCB0aGUgbGVhdmUgYWN0aW9uKS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIHN0YW5kYWxvbmUgbWVldGluZyBpcyBjdXJyZW50bHkgYXR0ZW5kaW5nLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBpc1N0YW5kYWxvbmVBdHRlbmRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnJlc29sdmVBdHRlbmRhbmNlU3RhdGUodGhpcy5zdGFuZGFsb25lTWVldGluZykgPT09XHJcbiAgICAgIEF0dGVuZGFuY2VTdGF0ZS5DVVJSRU5UTFlfQVRURU5ESU5HXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgU1RBTkRBTE9ORSBtZWV0aW5nJ3MgTG9nIEF0dGVuZGFuY2UgYnV0dG9uIGlzIHNob3duICh3aGVuZXZlclxyXG4gICAqIG5vdCBjdXJyZW50bHkgYXR0ZW5kaW5nKS4gTm8gcGVybWlzc2lvbiBnYXRpbmcg4oCUIG1pcnJvcnMgdGhlIGF0dGVuZGFuY2VcclxuICAgKiBsaWJyYXJ5LlxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgd2hlbiB0aGUgbG9nLWF0dGVuZGFuY2UgYnV0dG9uIGlzIHZpc2libGUuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHNob3dTdGFuZGFsb25lTG9nKCk6IGJvb2xlYW4ge1xyXG4gICAgLy8gU2hvd24gZm9yIGV2ZXJ5IGVsaWdpYmxlLCBub3QtY3VycmVudGx5LWF0dGVuZGluZyBzdGFuZGFsb25lIG1lZXRpbmcuXHJcbiAgICAvLyBEaXNhYmxlZCAod2l0aCB0aGUgaW5hY3RpdmUgbWVzc2FnZSkgd2hlbiB0aGUgbWVldGluZyBpcyBub3QgSW4gUHJvZ3Jlc3MuXHJcbiAgICByZXR1cm4gIXRoaXMuaXNTdGFuZGFsb25lQXR0ZW5kaW5nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgU1RBTkRBTE9ORSBtZWV0aW5nJ3MgTGVhdmUgTWVldGluZyBidXR0b24gaXMgc2hvd24g4oCUIG9ubHkgd2hpbGVcclxuICAgKiB0aGUgbWVldGluZyBpcyBjdXJyZW50bHkgYXR0ZW5kaW5nIEFORCBhY3RpdmUuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHRoZSBsZWF2ZS1tZWV0aW5nIGJ1dHRvbiBpcyB2aXNpYmxlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBzaG93U3RhbmRhbG9uZUxlYXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNTdGFuZGFsb25lQXR0ZW5kaW5nICYmIHRoaXMuaXNTdGFuZGFsb25lQWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgU1RBTkRBTE9ORSBtZWV0aW5nIGlzIGVsaWdpYmxlIGZvciBhbiBhdHRlbmRhbmNlIGFjdGlvbi4gVGhlXHJcbiAgICogYmFja2VuZCBzdXBwbGllcyBhbiBgYXR0ZW5kYW5jZVN0YXRlYCBvbmx5IGZvciBhdHRlbmRhbmNlLWVsaWdpYmxlIG1lZXRpbmdzXHJcbiAgICogKG9wZW4gZm9yIGF0dGVuZGFuY2UpLCBzbyBpdHMgcHJlc2VuY2UgaXMgdGhlIGVsaWdpYmlsaXR5IHNpZ25hbC5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIHN0YW5kYWxvbmUgbWVldGluZyBpcyBhdHRlbmRhbmNlLWVsaWdpYmxlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBpc1N0YW5kYWxvbmVFbGlnaWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuZXZlbnQ/LmF0dGVuZGFuY2VTdGF0ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIFNUQU5EQUxPTkUgbWVldGluZyBpcyBjdXJyZW50bHkgSW4gUHJvZ3Jlc3Mg4oCUIHRoZSBhdHRlbmRhbmNlXHJcbiAgICogYnV0dG9uIGlzIG9ubHkgRU5BQkxFRCBkdXJpbmcgdGhlIG1lZXRpbmcgKGRpc2FibGVkIG90aGVyd2lzZSwgbWlycm9yaW5nIHRoZVxyXG4gICAqIHZpZXctbWVldGluZyBwYWdlKS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIHN0YW5kYWxvbmUgbWVldGluZyBzdGF0dXMgaXMgJ0luIFByb2dyZXNzJy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgaXNTdGFuZGFsb25lQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0aGlzLmV2ZW50Py5zdGF0dXMgPz8gJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSAnaW4gcHJvZ3Jlc3MnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgU1RBTkRBTE9ORSBMb2cgQXR0ZW5kYW5jZSBidXR0b24gaXMgZGlzYWJsZWQgKG91dHNpZGUgbWVldGluZ1xyXG4gICAqIHRpbWUpLCBtYXRjaGluZyB0aGUgdmlldy1tZWV0aW5nIHBhZ2UncyBpbmFjdGl2ZSBzdGF0ZS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIHN0YW5kYWxvbmUgbG9nIGJ1dHRvbiBzaG91bGQgYmUgZGlzYWJsZWQuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IGlzU3RhbmRhbG9uZUxvZ0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmlzU3RhbmRhbG9uZUFjdGl2ZTtcclxuICB9XHJcblxyXG4gIC8qKiBUaGUgaW5hY3RpdmUtYnV0dG9uIG1lc3NhZ2Ugc2hvd24gd2hlbiB0aGUgc3RhbmRhbG9uZSBtZWV0aW5nIGlzIG5vdCBhY3RpdmUuICovXHJcbiAgZ2V0IGluYWN0aXZlTWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5jb25zdGFudHM/Lm1lZXRpbmdSb3c/LmluYWN0aXZlTWVzc2FnZSA/P1xyXG4gICAgICAnQXR0ZW5kYW5jZSBsb2dnaW5nIG9ubHkgYXZhaWxhYmxlIGR1cmluZyBtZWV0aW5nLCBQbGVhc2UgY29udGFjdCB5b3VyIG1lZXRpbmcgYWRtaW5pc3RyYXRvciBmb3IgYW55IG5lY2Vzc2FyeSBjb3JyZWN0aW9ucy4nXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnViYmxlcyBhIHJvdydzIG5hdmlnYXRlLXRvLW1lZXRpbmcgcmVxdWVzdCB1cHdhcmQgdW5jaGFuZ2VkIHNvIHRoZSBob3N0IGNhblxyXG4gICAqIHJvdXRlIHRvIHRoZSB2aWV3LW1lZXRpbmcgc2NyZWVuLlxyXG4gICAqIEBwYXJhbSB7eyBldmVudElkOiBzdHJpbmc7IG1lZXRpbmdJZDogc3RyaW5nIH19IHJlcXVlc3QgLSBUaGUgbWVldGluZyBpZGVudGl0eS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBvbk5hdmlnYXRlVG9NZWV0aW5nKHJlcXVlc3Q6IHtcclxuICAgIGV2ZW50SWQ6IHN0cmluZztcclxuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xyXG4gICAgbG9nQXR0ZW5kYW5jZT86IGJvb2xlYW47XHJcbiAgICBsZWF2ZU1lZXRpbmc/OiBib29sZWFuO1xyXG4gIH0pOiB2b2lkIHtcclxuICAgIHRoaXMubmF2aWdhdGVUb01lZXRpbmcuZW1pdChyZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBuYXZpZ2F0ZS10by1tZWV0aW5nIGludGVudCBmb3IgYSBTVEFOREFMT05FIG1lZXRpbmcncyBhdHRlbmRhbmNlXHJcbiAgICogYWN0aW9uIChMb2cgQXR0ZW5kYW5jZSBvciBMZWF2ZSBNZWV0aW5nLCByZXF1ZXN0aW5nIHRoZSBtYXRjaGluZyBwb3B1cFxyXG4gICAqIGF1dG8tb3BlbikuIEl0cyBvd24gaWQgaXMgdGhlIG1lZXRpbmcgaWQ7IGl0IGhhcyBubyBwYXJlbnQgZXZlbnQuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25OYXZpZ2F0ZVRvU3RhbmRhbG9uZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1N0YW5kYWxvbmVBY3RpdmUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvTWVldGluZy5lbWl0KHtcclxuICAgICAgZXZlbnRJZDogJycsXHJcbiAgICAgIG1lZXRpbmdJZDogdGhpcy5ldmVudD8uZXZlbnRJZCA/PyAnJyxcclxuICAgICAgbG9nQXR0ZW5kYW5jZTogIXRoaXMuaXNTdGFuZGFsb25lQXR0ZW5kaW5nLFxyXG4gICAgICBsZWF2ZU1lZXRpbmc6IHRoaXMuaXNTdGFuZGFsb25lQXR0ZW5kaW5nLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgbmF2aWdhdGUtdG8tbWVldGluZyBpbnRlbnQgZm9yIGEgU1RBTkRBTE9ORSBtZWV0aW5nJ3MgbmFtZSBsaW5rXHJcbiAgICogKHZpZXcgb25seSDigJQgbm8gcG9wdXAgYXV0by1vcGVuKS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBvbk9wZW5TdGFuZGFsb25lKCk6IHZvaWQge1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvTWVldGluZy5lbWl0KHtcclxuICAgICAgZXZlbnRJZDogJycsXHJcbiAgICAgIG1lZXRpbmdJZDogdGhpcy5ldmVudD8uZXZlbnRJZCA/PyAnJyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRoZSBsdXhvbi1mb3JtYXR0ZWQgc3RhcnQgZGF0ZSBvZiB0aGUgZXZlbnQgKElTTyBvciBlcG9jaCBtcykgKFJlcSA2LjIpLiAqL1xyXG4gIGdldCBmb3JtYXR0ZWRTdGFydERhdGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGUoXHJcbiAgICAgIHRoaXMuZXZlbnQ/LnN0YXJ0RGF0ZVRpbWUgPz8gdGhpcy5ldmVudD8uc3RhcnREYXRlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRoZSBsdXhvbi1mb3JtYXR0ZWQgZW5kIGRhdGUgb2YgdGhlIGV2ZW50IChJU08gb3IgZXBvY2ggbXMpIChSZXEgNi4yKS4gKi9cclxuICBnZXQgZm9ybWF0dGVkRW5kRGF0ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0RGF0ZSh0aGlzLmV2ZW50Py5lbmREYXRlVGltZSA/PyB0aGlzLmV2ZW50Py5lbmREYXRlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGB0cmFja0J5YCBmb3IgdGhlIG1lZXRpbmctcm93IGAqbmdGb3JgLCBrZXllZCBieSB0aGUgc3RhYmxlIG1lZXRpbmcgaWQgc29cclxuICAgKiBBbmd1bGFyIHJldXNlcyByb3cgY29tcG9uZW50cyBhY3Jvc3MgcGFnaW5hdGlvbi9zdGF0ZSBjaGFuZ2VzIChSZXEgNi43LCAxNC40KS5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gX2luZGV4IC0gVGhlIGl0ZXJhdGlvbiBpbmRleCAodW51c2VkKS5cclxuICAgKiBAcGFyYW0ge01lZXRpbmdSb3d9IG1lZXRpbmcgLSBUaGUgbWVldGluZyBmb3IgdGhpcyByb3cuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3RhYmxlIHRyYWNrIGtleSAobWVldGluZyBpZCkuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeU1lZXRpbmdJZChfaW5kZXg6IG51bWJlciwgbWVldGluZzogTWVldGluZ1Jvdyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbWVldGluZz8ubWVldGluZ0lkID8/IGAke19pbmRleH1gO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb2x2ZXMgdGhlIGF0dGVuZGFuY2Ugc3RhdGUgZm9yIGEgbWVldGluZyBmcm9tIHRoZSBgYXR0ZW5kYW5jZVN0YXRlc2AgbWFwLFxyXG4gICAqIGRlZmF1bHRpbmcgdG8gYE5PVF9BVFRFTkRJTkdgIHdoZW4gdGhlIG1hcCBoYXMgbm8gZW50cnkgZm9yIGl0LlxyXG4gICAqIEBwYXJhbSB7TWVldGluZ1Jvd30gbWVldGluZyAtIFRoZSBtZWV0aW5nIHRvIHJlc29sdmUgc3RhdGUgZm9yLlxyXG4gICAqIEByZXR1cm4ge0F0dGVuZGFuY2VTdGF0ZX0gVGhlIGF0dGVuZGFuY2Ugc3RhdGUgcGFzc2VkIHRvIHRoZSByb3cuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcmVzb2x2ZUF0dGVuZGFuY2VTdGF0ZShtZWV0aW5nOiBNZWV0aW5nUm93KTogQXR0ZW5kYW5jZVN0YXRlIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuYXR0ZW5kYW5jZVN0YXRlcz8uW21lZXRpbmc/Lm1lZXRpbmdJZF0gPz9cclxuICAgICAgQXR0ZW5kYW5jZVN0YXRlLk5PVF9BVFRFTkRJTkdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlcyB3aGV0aGVyIGEgbWVldGluZyBoYXMgYW4gYXR0ZW5kYW5jZSBhY3Rpb24gaW4gZmxpZ2h0IGZyb20gdGhlXHJcbiAgICogYGluRmxpZ2h0TWVldGluZ0lkc2Agc2V0LlxyXG4gICAqIEBwYXJhbSB7TWVldGluZ1Jvd30gbWVldGluZyAtIFRoZSBtZWV0aW5nIHRvIGNoZWNrLlxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgd2hlbiB0aGUgbWVldGluZydzIGFjdGlvbiBpcyBhd2FpdGluZyByZXNvbHV0aW9uLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHJlc29sdmVJc0luRmxpZ2h0KG1lZXRpbmc6IE1lZXRpbmdSb3cpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmluRmxpZ2h0TWVldGluZ0lkcz8uaGFzKG1lZXRpbmc/Lm1lZXRpbmdJZCkgPz8gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVzIHRoZSBtZWV0aW5nLWxpc3QgdmlzaWJpbGl0eSwgbGF6aWx5IHJlcXVlc3RpbmcgdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlXHJcbiAgICogZXZlbnQncyBjaGlsZCBtZWV0aW5ncyBmcm9tIHRoZSBjb250YWluZXIgdGhlIGZpcnN0IHRpbWUgaXQgaXMgb3BlbmVkIChSZXEgNi42KS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBvblRvZ2dsZU1lZXRpbmdMaXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc01lZXRpbmdMaXN0T3BlbiA9ICF0aGlzLmlzTWVldGluZ0xpc3RPcGVuO1xyXG4gICAgaWYgKHRoaXMuaXNNZWV0aW5nTGlzdE9wZW4pIHtcclxuICAgICAgdGhpcy5sb2FkTWVldGluZ3MuZW1pdCh7IHBhZ2U6IHRoaXMucGFnZUluZGV4ICsgMSwgc2l6ZTogdGhpcy5wYWdlU2l6ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIFwiVmlldyBFdmVudFwiIGJ1dHRvbiwgZW1pdHRpbmcgdGhlIGV2ZW50IGlkIHRvIHRoZSBob3N0IChSZXEgNi40KS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBvblZpZXdFdmVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMudmlld0V2ZW50LmVtaXQodGhpcy5ldmVudD8uZXZlbnRJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCdWJibGVzIGEgcm93J3MgbWVldGluZy1uYW1lIGxpbmsgYWN0aXZhdGlvbiB1cHdhcmQgKFJlcSA2LjcsIDcuNCkuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lZXRpbmdJZCAtIFRoZSBpZCBlbWl0dGVkIGJ5IHRoZSByb3cuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25PcGVuTWVldGluZyhtZWV0aW5nSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuTWVldGluZy5lbWl0KG1lZXRpbmdJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCdWJibGVzIGEgcm93J3MgbG9nLWF0dGVuZGFuY2UgcmVxdWVzdCB1cHdhcmQgKFJlcSA2LjcsIDcuNykuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lZXRpbmdJZCAtIFRoZSBpZCBlbWl0dGVkIGJ5IHRoZSByb3cuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Mb2dBdHRlbmRhbmNlKG1lZXRpbmdJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZ0F0dGVuZGFuY2UuZW1pdChtZWV0aW5nSWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnViYmxlcyBhIHJvdydzIGxlYXZlLW1lZXRpbmcgcmVxdWVzdCB1cHdhcmQgKFJlcSA2LjcsIDcuOCkuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lZXRpbmdJZCAtIFRoZSBpZCBlbWl0dGVkIGJ5IHRoZSByb3cuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25MZWF2ZU1lZXRpbmcobWVldGluZ0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMubGVhdmVNZWV0aW5nLmVtaXQobWVldGluZ0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIHBlci1jYXJkIHBhZ2luYXRvciBjaGFuZ2UsIHVwZGF0aW5nIHRoZSBsb2NhbCBwYWdlIHN0YXRlIGFuZFxyXG4gICAqIGVtaXR0aW5nIHRoZSByZXF1ZXN0ZWQgcGFnZSBhcyBhIHtAbGluayBQYWdlQ2hhbmdlfSAoUmVxIDYuOSwgMy4zKS5cclxuICAgKiBAcGFyYW0ge1BhZ2VFdmVudH0gZXZlbnQgLSBUaGUgTWF0ZXJpYWwgcGFnaW5hdG9yIHBhZ2UgZXZlbnQuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoe1xyXG4gICAgICBwYWdlSW5kZXg6IGV2ZW50LnBhZ2VJbmRleCxcclxuICAgICAgcGFnZVNpemU6IGV2ZW50LnBhZ2VTaXplLFxyXG4gICAgfSk7XHJcbiAgICAvLyBSZXF1ZXN0IHRoZSBuZXdseSBzZWxlY3RlZCBwYWdlL3NpemUncyBjaGlsZCBtZWV0aW5ncyBmcm9tIHRoZSBjb250YWluZXIuXHJcbiAgICB0aGlzLmxvYWRNZWV0aW5ncy5lbWl0KHsgcGFnZTogZXZlbnQucGFnZUluZGV4ICsgMSwgc2l6ZTogZXZlbnQucGFnZVNpemUgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXRzIGEgZGF0ZSBmb3IgZGlzcGxheSwgcHJlZmVycmluZyB0aGUgZXBvY2gtbWlsbGlzZWNvbmRzIHZhbHVlIChmcm9tXHJcbiAgICogdGhlIHJlYWwgQVBJKSBmb3JtYXR0ZWQgaW4gdGhlIGV2ZW50J3MgdGltZXpvbmUgYW5kIGZhbGxpbmcgYmFjayB0byBhIGxlZ2FjeVxyXG4gICAqIElTTyBzdHJpbmcuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIHdoZW4gbmVpdGhlciBpcyBwcmVzZW50LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBlcG9jaE1zIC0gVGhlIGVwb2NoLW1pbGxpc2Vjb25kcyB2YWx1ZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gaXNvVmFsdWUgLSBUaGUgbGVnYWN5IElTTyBmYWxsYmFjay5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgZGF0ZSBvciBhbiBlbXB0eSBzdHJpbmcuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmb3JtYXREYXRlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBmb3JtYXRFcG9jaCh2YWx1ZSwgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdCwgdGhpcy5ldmVudD8udGltZXpvbmUpO1xyXG4gIH1cclxufVxyXG4iLCI8YXJ0aWNsZVxyXG4gIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRcIlxyXG4gIFtjbGFzcy5pZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZC0tbW9iaWxlXT1cImlzTW9iaWxlVmlld1wiXHJcbiAgW2NsYXNzLmllZWVzYS1ldmVudC1ncm91cC1jYXJkLS1zdGFuZGFsb25lXT1cImlzU3RhbmRhbG9uZVwiXHJcbj5cclxuICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRVZFTlQgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU3RhbmRhbG9uZVwiPlxyXG4gICAgPGhlYWRlciBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19oZWFkZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19oZWFkZXItbWFpblwiPlxyXG4gICAgICAgIDwhLS0gRVZFTlQgYmFkZ2UgKyBkYXkgaW5kaWNhdG9yLiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX2JhZGdlLXJvd1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fYmFkZ2VcIj5cclxuICAgICAgICAgICAge3sgY29uc3RhbnRzLmV2ZW50R3JvdXBDYXJkLmV2ZW50QmFkZ2UgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZXZlbnQuZGF5SW5kaWNhdG9yXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fZGF5LWluZGljYXRvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGV2ZW50LmRheUluZGljYXRvciB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3RpdGxlLXJvd1wiPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3RpdGxlXCI+e3sgZXZlbnQudGl0bGUgfX08L2gzPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgKm5nSWY9XCJldmVudC5zdGF0dXNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGF0dXMtcGlsbFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhdHVzLXBpbGwtLScgKyBzdGF0dXNNb2RpZmllclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGV2ZW50LnN0YXR1cyB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgKm5nSWY9XCJzdWJ0aXRsZVRleHRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3VidGl0bGVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHN1YnRpdGxlVGV4dCB9fVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX2hlYWRlci1zaWRlXCI+XHJcbiAgICAgICAgPGRsIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX2RhdGVzLWJsb2NrXCI+XHJcbiAgICAgICAgICA8ZHQgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fZGF0ZXMtbGFiZWxcIj5cclxuICAgICAgICAgICAge3sgY29uc3RhbnRzLmV2ZW50R3JvdXBDYXJkLmV2ZW50RGF0ZXNMYWJlbCB9fVxyXG4gICAgICAgICAgPC9kdD5cclxuICAgICAgICAgIDxkZCBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19kYXRlcy1saW5lXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX2RhdGVzLXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAge3sgZm9ybWF0dGVkU3RhcnREYXRlIH19PG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1hdHRlZEVuZERhdGUgJiYgZm9ybWF0dGVkRW5kRGF0ZSAhPT0gZm9ybWF0dGVkU3RhcnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAmbmRhc2g7IHt7IGZvcm1hdHRlZEVuZERhdGUgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZXZlbnQudGltZXpvbmVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3RpbWV6b25lLXZhbHVlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICh7eyBldmVudC50aW1lem9uZSB9fSlcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kZD5cclxuICAgICAgICA8L2RsPlxyXG5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3ZpZXdcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHMuZXZlbnRHcm91cENhcmQuYXJpYUxhYmVsLnZpZXdFdmVudFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25WaWV3RXZlbnQoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgY29uc3RhbnRzLmV2ZW50R3JvdXBDYXJkLnZpZXdFdmVudExhYmVsIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9oZWFkZXI+XHJcblxyXG4gICAgPCEtLSBNZWV0aW5ncyBiYXI6IFwiTWVldGluZ3NcIiBsYWJlbCAobGVmdCksIG9wZW4tZm9yLWF0dGVuZGFuY2UgY291bnQgK1xyXG4gICAgICAgICBTaG93L0hpZGUgdG9nZ2xlIChyaWdodCksIG1hdGNoaW5nIHRoZSBGaWdtYSBsYXlvdXQuIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19tZWV0aW5ncy1iYXJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fbWVldGluZ3MtbGFiZWxcIj5cclxuICAgICAgICB7eyBjb25zdGFudHMuZXZlbnRHcm91cENhcmQubWVldGluZ3NMYWJlbCB9fVxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX21lZXRpbmdzLWJhci1yaWdodFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX21lZXRpbmdzLW9wZW5cIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX21lZXRpbmdzLWRvdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIHt7IG9wZW5Gb3JBdHRlbmRhbmNlU3VtbWFyeSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19tZWV0aW5nLXRvZ2dsZVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzTWVldGluZ0xpc3RPcGVuXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzLmV2ZW50R3JvdXBDYXJkLmFyaWFMYWJlbC5tZWV0aW5nTGlzdFRvZ2dsZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVNZWV0aW5nTGlzdCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3Bhbj57eyBtZWV0aW5nTGlzdFRvZ2dsZUxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgPGlcclxuICAgICAgICAgICAgY2xhc3M9XCJmYS1zb2xpZFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzTWVldGluZ0xpc3RPcGVuID8gJ2ZhLWNoZXZyb24tdXAnIDogJ2ZhLWNoZXZyb24tZG93bidcIlxyXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgPjwvaT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEV4cGFuZGVkIGlubmVyIG1lZXRpbmcgbGlzdCArIHBlci1ldmVudCBwYWdpbmF0b3IuIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cImlzTWVldGluZ0xpc3RPcGVuXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fbWVldGluZ3NcIlxyXG4gICAgPlxyXG4gICAgICA8IS0tIFNwaW5uZXIgc2hvd24gd2hpbGUgdGhlIGRyaWxsLWRvd24gbWVldGluZ3MgbG9hZC4gLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIm1lZXRpbmdzTG9hZGluZ1wiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fbWVldGluZ3MtbG9hZGVyXCJcclxuICAgICAgICByb2xlPVwic3RhdHVzXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cy5ldmVudEdyb3VwQ2FyZC5tZWV0aW5nc0xhYmVsXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3NwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZWV0aW5nc0xvYWRpbmdcIj5cclxuICAgICAgICA8aWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBtZWV0aW5nIG9mIHBhZ2VkTWVldGluZ3M7IHRyYWNrQnk6IHRyYWNrQnlNZWV0aW5nSWRcIlxyXG4gICAgICAgICAgW21lZXRpbmddPVwibWVldGluZ1wiXHJcbiAgICAgICAgICBbYXR0ZW5kYW5jZVN0YXRlXT1cInJlc29sdmVBdHRlbmRhbmNlU3RhdGUobWVldGluZylcIlxyXG4gICAgICAgICAgW2lzSW5GbGlnaHRdPVwicmVzb2x2ZUlzSW5GbGlnaHQobWVldGluZylcIlxyXG4gICAgICAgICAgW3Blcm1pc3Npb25zXT1cInBlcm1pc3Npb25zXCJcclxuICAgICAgICAgIChvcGVuTWVldGluZyk9XCJvbk9wZW5NZWV0aW5nKCRldmVudClcIlxyXG4gICAgICAgICAgKGxvZ0F0dGVuZGFuY2UpPVwib25Mb2dBdHRlbmRhbmNlKCRldmVudClcIlxyXG4gICAgICAgICAgKGxlYXZlTWVldGluZyk9XCJvbkxlYXZlTWVldGluZygkZXZlbnQpXCJcclxuICAgICAgICAgIChuYXZpZ2F0ZVRvTWVldGluZyk9XCJvbk5hdmlnYXRlVG9NZWV0aW5nKCRldmVudClcIlxyXG4gICAgICAgID48L2llZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19wYWdpbmF0b3JcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHMuZXZlbnRHcm91cENhcmQuYXJpYUxhYmVsLm1lZXRpbmdMaXN0VG9nZ2xlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LXBhZ2luYXRvclxyXG4gICAgICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19wYWdpbmF0b3ItY29udHJvbFwiXHJcbiAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcclxuICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxyXG4gICAgICAgICAgICBbbGVuZ3RoXT1cInRvdGFsTWVldGluZ3NcIlxyXG4gICAgICAgICAgICAocGFnZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09IFNUQU5EQUxPTkUgTUVFVElORyA9PT09PT09PT09PT09PT09PT09PT09PSAtLT5cclxuICA8IS0tIFNpbmdsZSBob3Jpem9udGFsIHJvdzogYmFkZ2UrbmFtZStzdWJ0aXRsZSB8IE1FRVRJTkcgREFURSB8IFRJTUUgJiBUSU1FWk9ORSB8IGFjdGlvbi4gLS0+XHJcbiAgPGRpdiAqbmdJZj1cImlzU3RhbmRhbG9uZVwiIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YW5kYWxvbmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS1tYWluXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX2JhZGdlIGllZWVzYS1ldmVudC1ncm91cC1jYXJkX19iYWRnZS0tc3RhbmRhbG9uZVwiPlxyXG4gICAgICAgIHt7IGNvbnN0YW50cy5ldmVudEdyb3VwQ2FyZC5zdGFuZGFsb25lQmFkZ2UgfX1cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lLXRpdGxlLXJvd1wiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS1uYW1lXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzLm1lZXRpbmdSb3cuYXJpYUxhYmVsLm1lZXRpbmdOYW1lTGlua1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25PcGVuU3RhbmRhbG9uZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBldmVudC50aXRsZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdJZj1cImV2ZW50LnN0YXR1c1wiXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGF0dXMtcGlsbFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCInaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YXR1cy1waWxsLS0nICsgc3RhdHVzTW9kaWZpZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGV2ZW50LnN0YXR1cyB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8cFxyXG4gICAgICAgICpuZ0lmPVwic3VidGl0bGVUZXh0XCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lLXN1YnRpdGxlXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHN1YnRpdGxlVGV4dCB9fVxyXG4gICAgICA8L3A+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIE1FRVRJTkcgREFURSBjb2x1bW4uIC0tPlxyXG4gICAgPGRsIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YW5kYWxvbmUtY29sXCI+XHJcbiAgICAgIDxkdCBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lLWNvbC1sYWJlbFwiPlxyXG4gICAgICAgIHt7IGNvbnN0YW50cy5ldmVudEdyb3VwQ2FyZC5tZWV0aW5nRGF0ZUxhYmVsIH19XHJcbiAgICAgIDwvZHQ+XHJcbiAgICAgIDxkZCBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lLWNvbC12YWx1ZVwiPlxyXG4gICAgICAgIHt7IGZvcm1hdHRlZFN0YXJ0RGF0ZSB9fTxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtYXR0ZWRFbmREYXRlICYmIGZvcm1hdHRlZEVuZERhdGUgIT09IGZvcm1hdHRlZFN0YXJ0RGF0ZVwiPlxyXG4gICAgICAgICAgJm5kYXNoOyB7eyBmb3JtYXR0ZWRFbmREYXRlIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGQ+XHJcbiAgICA8L2RsPlxyXG5cclxuICAgIDwhLS0gVElNRSAmIFRJTUVaT05FIGNvbHVtbi4gLS0+XHJcbiAgICA8ZGwgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS1jb2xcIj5cclxuICAgICAgPGR0IGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YW5kYWxvbmUtY29sLWxhYmVsXCI+XHJcbiAgICAgICAge3sgY29uc3RhbnRzLmV2ZW50R3JvdXBDYXJkLnRpbWVUaW1lem9uZUxhYmVsIH19XHJcbiAgICAgIDwvZHQ+XHJcbiAgICAgIDxkZCBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lLWNvbC12YWx1ZVwiPlxyXG4gICAgICAgIHt7IHN0YW5kYWxvbmVUaW1lIH19XHJcbiAgICAgIDwvZGQ+XHJcbiAgICA8L2RsPlxyXG5cclxuICAgIDwhLS0gQXR0ZW5kYW5jZSBhY3Rpb24gY29sdW1uLiBTaG93biBvbmx5IGZvciBhdHRlbmRhbmNlLWVsaWdpYmxlIG1lZXRpbmdzLiAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJpc1N0YW5kYWxvbmVFbGlnaWJsZVwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YW5kYWxvbmUtYWN0aW9uc1wiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX2F0dGVuZGluZy1zbG90XCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICpuZ0lmPVwiaXNTdGFuZGFsb25lQXR0ZW5kaW5nXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX2F0dGVuZGluZy1waWxsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGF0dXMtZG90XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxyXG4gICAgICAgICAge3sgY29uc3RhbnRzLm1lZXRpbmdSb3cuY3VycmVudGx5QXR0ZW5kaW5nSW5kaWNhdG9yIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCIhaXNTdGFuZGFsb25lQXR0ZW5kaW5nXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lLWFjdGlvbiBpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS1hY3Rpb24tLWxvZ1wiXHJcbiAgICAgICAgW2NsYXNzLmllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lLWFjdGlvbi0taW5hY3RpdmVdPVwiaXNTdGFuZGFsb25lTG9nRGlzYWJsZWRcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1N0YW5kYWxvbmVMb2dEaXNhYmxlZFwiXHJcbiAgICAgICAgW2F0dHIudGl0bGVdPVwiaXNTdGFuZGFsb25lTG9nRGlzYWJsZWQgPyBpbmFjdGl2ZU1lc3NhZ2UgOiBudWxsXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cy5tZWV0aW5nUm93LmFyaWFMYWJlbC5sb2dBdHRlbmRhbmNlXCJcclxuICAgICAgICAoY2xpY2spPVwib25OYXZpZ2F0ZVRvU3RhbmRhbG9uZSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGNvbnN0YW50cy5tZWV0aW5nUm93LmxvZ0F0dGVuZGFuY2VMYWJlbCB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cImlzU3RhbmRhbG9uZUF0dGVuZGluZ1wiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS1hY3Rpb24gaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YW5kYWxvbmUtYWN0aW9uLS1sZWF2ZVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHMubWVldGluZ1Jvdy5hcmlhTGFiZWwubGVhdmVNZWV0aW5nXCJcclxuICAgICAgICAoY2xpY2spPVwib25OYXZpZ2F0ZVRvU3RhbmRhbG9uZSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGNvbnN0YW50cy5tZWV0aW5nUm93LmxlYXZlTWVldGluZ0xhYmVsIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvYXJ0aWNsZT5cclxuIl19
|
|
500
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZ3JvdXAtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2V2ZW50LWdyb3VwLWNhcmQvZXZlbnQtZ3JvdXAtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2V2ZW50LWdyb3VwLWNhcmQvZXZlbnQtZ3JvdXAtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGtCQUFrQixHQUVuQixNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUd0RSxPQUFPLEVBRUwsZ0JBQWdCLEdBQ2pCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDOzs7O0FBRTNEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBVUgsTUFBTSxPQUFPLHVCQUF1QjtJQVRwQztRQVVFLHlEQUF5RDtRQUN6RCw4REFBOEQ7UUFDOUQsY0FBUyxHQUFRLFdBQVcsQ0FBQztRQUU3QixrRkFBa0Y7UUFDekUsY0FBUyxHQUFHLGdCQUFnQixDQUFDO1FBbUJ0Qyxr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QVEsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ssVUFBVSxDQUFDLEtBQXlDO1FBQzFELE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0UsQ0FBQzsrR0FoaEJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLHdkQ2pEcEMsMHlUQW9QQSx1bmZEeE1ZLFlBQVksNlZBQUUsa0JBQWtCLDBKQUFFLDZCQUE2Qjs7NEZBSzlELHVCQUF1QjtrQkFUbkMsU0FBUzsrQkFFRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLDZCQUE2QixDQUFDLGlCQUczRCxpQkFBaUIsQ0FBQyxJQUFJOzhCQXlCNUIsS0FBSztzQkFBYixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdJLFNBQVM7c0JBQWxCLE1BQU07Z0JBR0csV0FBVztzQkFBcEIsTUFBTTtnQkFHRyxhQUFhO3NCQUF0QixNQUFNO2dCQUdHLFlBQVk7c0JBQXJCLE1BQU07Z0JBR0csVUFBVTtzQkFBbkIsTUFBTTtnQkFPRyxZQUFZO3NCQUFyQixNQUFNO2dCQU9HLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTWF0UGFnaW5hdG9yTW9kdWxlLFxyXG4gIFBhZ2VFdmVudCxcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBBdHRlbmRhbmNlQWN0aW9uUGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXR0ZW5kYW5jZS1hY3Rpb24tcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBBdHRlbmRhbmNlU3RhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXR0ZW5kYW5jZS1zdGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IE1lZXRpbmdSb3cgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVldGluZy1yb3cubW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BhZ2UtY2hhbmdlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBVcGNvbWluZ0V2ZW50LFxyXG4gIFVwY29taW5nSXRlbUtpbmQsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3VwY29taW5nLWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgRGF0ZUZvcm1hdHMgfSBmcm9tICcuLi8uLi9hc3NldHMvZGF0ZS1mb3JtYXRzJztcclxuaW1wb3J0IHsgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnQgfSBmcm9tICcuLi9tZWV0aW5nLWF0dGVuZGFuY2Utcm93L21lZXRpbmctYXR0ZW5kYW5jZS1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgZm9ybWF0RXBvY2ggfSBmcm9tICcuLi8uLi91dGlscy9kYXRlLWZvcm1hdC51dGlsJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuXHJcbi8qKlxyXG4gKiBFdmVudF9Hcm91cF9DYXJkIHJlbmRlcnMgYSBzaW5nbGUgdXBjb21pbmcgZXZlbnQgYXMgYSBjYXJkOiB0aGUgc3RhdHVzIGJhZGdlLFxyXG4gKiB0aXRsZSwgZGF5IGluZGljYXRvciwgbWVldGluZy1jb3VudCBzdW1tYXJ5IHN1Yi1saW5lLCBzdGFydC9lbmQgZGF0ZSwgYW5kXHJcbiAqIHRpbWV6b25lIChhbGwgbHV4b24tZm9ybWF0dGVkKS4gSXQgZXhwb3NlcyBhIFwiVmlldyBFdmVudFwiIGFjdGlvbiwgYVxyXG4gKiBzaG93L2hpZGUgdG9nZ2xlIGZvciB0aGUgbWVldGluZyBsaXN0IGxhYmVsZWQgd2l0aCB0aGUgb3Blbi1mb3ItYXR0ZW5kYW5jZVxyXG4gKiBjb3VudCwgdGhlIHBlci1ldmVudCBtZWV0aW5nIHJvd3MgKG9uZSB7QGxpbmsgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnR9XHJcbiAqIHBlciBtZWV0aW5nIG9uIHRoZSBjdXJyZW50IHBhZ2UpLCBhbmQgYSBwZXItY2FyZCBwYWdpbmF0b3IuXHJcbiAqXHJcbiAqIFRoZSBjb21wb25lbnQgaXMgcHVyZWx5IHByZXNlbnRhdGlvbmFsIOKAlCBpdCBlbWl0cyBuYXZpZ2F0aW9uLCBhdHRlbmRhbmNlLCBhbmRcclxuICogcGFnaW5hdGlvbiBpbnRlbnRzIHZpYSBgQE91dHB1dCgpYCBhbmQgbmV2ZXIgcGVyZm9ybXMgbmF2aWdhdGlvbiBvciBIVFRQXHJcbiAqIGl0c2VsZi4gTWVldGluZy1yb3cgb3V0cHV0cyAoYG9wZW5NZWV0aW5nYC9gbG9nQXR0ZW5kYW5jZWAvYGxlYXZlTWVldGluZ2ApIGFyZVxyXG4gKiBidWJibGVkIHVwd2FyZCB1bmNoYW5nZWQgc28gdGhlIGNvbnRhaW5lciBjYW4gZGVsZWdhdGUgdG8gdGhlIHNlcnZpY2UuXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0UGFnaW5hdG9yTW9kdWxlLCBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2V2ZW50LWdyb3VwLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2V2ZW50LWdyb3VwLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXZlbnRHcm91cENhcmRDb21wb25lbnQge1xyXG4gIC8qKiBVc2VyLWZhY2luZyBzdHJpbmdzIHNvdXJjZWQgZnJvbSBgY29uc3RhbnRzLmpzb25gLiAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuXHJcbiAgLyoqIEVudW0gcmVmZXJlbmNlIGZvciBFVkVOVCB2cyBTVEFOREFMT05FX01FRVRJTkcgY29tcGFyaXNvbnMgaW4gdGhlIHRlbXBsYXRlLiAqL1xyXG4gIHJlYWRvbmx5IGl0ZW1LaW5kcyA9IFVwY29taW5nSXRlbUtpbmQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBldmVudCBzdGF0dXMgc2x1Z2lmaWVkIGludG8gYSBCRU0gbW9kaWZpZXIgc3VmZml4IChsb3dlcmNhc2UsIHNwYWNlcyB0b1xyXG4gICAqIGh5cGhlbnMpLCBlLmcuIFwiSW4gUHJvZ3Jlc3NcIiAtPiBcImluLXByb2dyZXNzXCIsIHVzZWQgdG8gY29sb3VyIHRoZSBzdGF0dXNcclxuICAgKiBwaWxsIHBlciBzdGF0dXMuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3RhdHVzIG1vZGlmaWVyIHN1ZmZpeC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgc3RhdHVzTW9kaWZpZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAodGhpcy5ldmVudD8uc3RhdHVzID8/ICcnKVxyXG4gICAgICAudHJpbSgpXHJcbiAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgIC5yZXBsYWNlKC9cXHMrL2csICctJyk7XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIHVwY29taW5nIGV2ZW50IHJlbmRlcmVkIGJ5IHRoaXMgY2FyZC4gKi9cclxuICBASW5wdXQoKSBldmVudCE6IFVwY29taW5nRXZlbnQ7XHJcblxyXG4gIC8qKiBIb3N0IHBlcm1pc3Npb25zIGdhdGluZyB0aGUgcGVyLXJvdyBsb2ctYXR0ZW5kYW5jZSAvIGxlYXZlLW1lZXRpbmcgYnV0dG9ucy4gKi9cclxuICBASW5wdXQoKSBwZXJtaXNzaW9uczogQXR0ZW5kYW5jZUFjdGlvblBlcm1pc3Npb25zID0ge1xyXG4gICAgY2FuTG9nQXR0ZW5kYW5jZTogZmFsc2UsXHJcbiAgICBjYW5MZWF2ZU1lZXRpbmc6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIC8qKiBNYXAgb2YgbWVldGluZyBpZCB0byBjdXJyZW50IGF0dGVuZGFuY2Ugc3RhdGUsIHBhc3NlZCBkb3duIHRvIGVhY2ggcm93LiAqL1xyXG4gIEBJbnB1dCgpIGF0dGVuZGFuY2VTdGF0ZXM6IFJlY29yZDxzdHJpbmcsIEF0dGVuZGFuY2VTdGF0ZT4gPSB7fTtcclxuXHJcbiAgLyoqIFNldCBvZiBtZWV0aW5nIGlkcyB3aXRoIGFuIGF0dGVuZGFuY2UgYWN0aW9uIGF3YWl0aW5nIHJlc29sdXRpb24uICovXHJcbiAgQElucHV0KCkgaW5GbGlnaHRNZWV0aW5nSWRzOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBXaGV0aGVyIHRoZSBob3N0IGhhcyBkZXRlcm1pbmVkIHRoZSB2aWV3cG9ydCBpcyBhdC9iZWxvdyB0aGUgbW9iaWxlIGJyZWFrcG9pbnQuICovXHJcbiAgQElucHV0KCkgaXNNb2JpbGVWaWV3ID0gZmFsc2U7XHJcblxyXG4gIC8qKiBFbWl0cyB0aGUgZXZlbnQgaWQgd2hlbiB0aGUgXCJWaWV3IEV2ZW50XCIgYnV0dG9uIGlzIGFjdGl2YXRlZCAoUmVxIDYuNCkuICovXHJcbiAgQE91dHB1dCgpIHZpZXdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKiogQnViYmxlcyB0aGUgbWVldGluZyBpZCB3aGVuIGEgcm93J3MgbWVldGluZy1uYW1lIGxpbmsgaXMgYWN0aXZhdGVkIChSZXEgNi43LCA3LjQpLiAqL1xyXG4gIEBPdXRwdXQoKSBvcGVuTWVldGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKiogQnViYmxlcyB0aGUgbWVldGluZyBpZCB3aGVuIGEgcm93IHJlcXVlc3RzIGxvZ2dpbmcgYXR0ZW5kYW5jZSAoUmVxIDYuNywgNy43KS4gKi9cclxuICBAT3V0cHV0KCkgbG9nQXR0ZW5kYW5jZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKiogQnViYmxlcyB0aGUgbWVldGluZyBpZCB3aGVuIGEgcm93IHJlcXVlc3RzIGxlYXZpbmcgdGhlIG1lZXRpbmcgKFJlcSA2LjcsIDcuOCkuICovXHJcbiAgQE91dHB1dCgpIGxlYXZlTWVldGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKiogRW1pdHMgdGhlIHJlcXVlc3RlZCBwYWdlIHdoZW4gdGhlIHBlci1jYXJkIHBhZ2luYXRvciBjaGFuZ2VzIChSZXEgNi45LCAzLjMpLiAqL1xyXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlQ2hhbmdlPigpO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgb25lLWJhc2VkIHBhZ2UgdG8gbG9hZCB3aGVuIHRoZSBtZWV0aW5nIGxpc3QgaXMgb3BlbmVkIChvciBwYWdlZClcclxuICAgKiBzbyB0aGUgY29udGFpbmVyIGNhbiBsYXppbHkgZmV0Y2ggdGhlIGV2ZW50J3MgY2hpbGQgbWVldGluZ3MgZnJvbSB0aGVcclxuICAgKiBiYWNrZW5kLiBTdGFuZGFsb25lLW1lZXRpbmcgY2FyZHMgbmV2ZXIgZW1pdCB0aGlzLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBsb2FkTWVldGluZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcGFnZTogbnVtYmVyOyBzaXplOiBudW1iZXIgfT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQnViYmxlcyB0aGUgb3duaW5nIGV2ZW50IGlkICsgbWVldGluZyBpZCB3aGVuIGFuIGF0dGVuZGFuY2UgYnV0dG9uIGlzXHJcbiAgICogYWN0aXZhdGVkIGZvciBhbiBJbi1Qcm9ncmVzcyBtZWV0aW5nLCBzbyB0aGUgaG9zdCBjYW4gbmF2aWdhdGUgdG8gdGhlXHJcbiAgICogdmlldy1tZWV0aW5nIHNjcmVlbiAod2hlcmUgdGhlIHJlYWwgTG9nIEF0dGVuZGFuY2UgcG9wdXAgb3BlbnMpLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBuYXZpZ2F0ZVRvTWVldGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZXZlbnRJZDogc3RyaW5nO1xyXG4gICAgbWVldGluZ0lkOiBzdHJpbmc7XHJcbiAgICBsb2dBdHRlbmRhbmNlPzogYm9vbGVhbjtcclxuICAgIGxlYXZlTWVldGluZz86IGJvb2xlYW47XHJcbiAgfT4oKTtcclxuXHJcbiAgLyoqIFRoZSBkZWZhdWx0IHBhZ2Ugc2l6ZSBmb3IgdGhlIHBlci1jYXJkIG1lZXRpbmcgcGFnaW5hdG9yLiAqL1xyXG4gIHJlYWRvbmx5IGRlZmF1bHRQYWdlU2l6ZSA9IDU7XHJcblxyXG4gIC8qKiBQYWdlLXNpemUgb3B0aW9ucyBzaG93biBpbiB0aGUgcGFnaW5hdG9yIGRyb3Bkb3duIChtYXRjaGVzIHRoZSBhcHAtd2lkZSBwYWdpbmF0b3IpLiAqL1xyXG4gIHJlYWRvbmx5IHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAxMCwgMTVdO1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgemVyby1iYXNlZCBwYWdlIGluZGV4IG9mIHRoZSBtZWV0aW5nIGxpc3QuICovXHJcbiAgcGFnZUluZGV4ID0gMDtcclxuXHJcbiAgLyoqIFRoZSBjdXJyZW50IHBhZ2Ugc2l6ZSBvZiB0aGUgbWVldGluZyBsaXN0LiAqL1xyXG4gIHBhZ2VTaXplID0gdGhpcy5kZWZhdWx0UGFnZVNpemU7XHJcblxyXG4gIC8qKiBXaGV0aGVyIHRoZSBtZWV0aW5nIGxpc3QgaXMgY3VycmVudGx5IHNob3duICh0b2dnbGVkIG9wZW4pLiAqL1xyXG4gIGlzTWVldGluZ0xpc3RPcGVuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhpcyBjYXJkIHJlbmRlcnMgYSBTVEFOREFMT05FX01FRVRJTkcgKGxlYW5lciBzaW5nbGUtbWVldGluZyBjYXJkXHJcbiAgICogd2l0aCBubyBjaGlsZC1tZWV0aW5nIGxpc3QpIHJhdGhlciB0aGFuIGFuIGV4cGFuZGFibGUgRVZFTlQgYmxvY2suXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBmb3Igc3RhbmRhbG9uZS1tZWV0aW5nIGNhcmRzLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBpc1N0YW5kYWxvbmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5ldmVudD8ua2luZCA9PT0gVXBjb21pbmdJdGVtS2luZC5TVEFOREFMT05FX01FRVRJTkc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgZnVsbCBsaXN0IG9mIG1lZXRpbmdzIGZvciB0aGUgZXZlbnQsIGRlZmF1bHRpbmcgdG8gYW4gZW1wdHkgbGlzdCB3aGVuXHJcbiAgICogdGhlIGV2ZW50IGhhcyBub25lLlxyXG4gICAqIEByZXR1cm4ge01lZXRpbmdSb3dbXX0gVGhlIGV2ZW50J3MgbWVldGluZ3MuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IG1lZXRpbmdzKCk6IE1lZXRpbmdSb3dbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5ldmVudD8ubWVldGluZ3MgPz8gW107XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIG1lZXRpbmdzIGZvciB0aGUgZXZlbnQgKHBhZ2luYXRvciBsZW5ndGgpLiBVc2VzIHRoZVxyXG4gICAqIGJhY2tlbmQgYG1lZXRpbmdDb3VudGAgKHRoZSBmdWxsIHRvdGFsKSByYXRoZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZVxyXG4gICAqIGN1cnJlbnRseSBsb2FkZWQgcGFnZSwgc28gdGhlIHBhZ2luYXRvciBjYW4gYWR2YW5jZSB0aHJvdWdoIGV2ZXJ5IHBhZ2UuXHJcbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgdG90YWwgbWVldGluZyBjb3VudC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgdG90YWxNZWV0aW5ncygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5ldmVudD8ubWVldGluZ1BhZ2VUb3RhbCA/P1xyXG4gICAgICB0aGlzLmV2ZW50Py5tZWV0aW5nQ291bnQgPz9cclxuICAgICAgdGhpcy5tZWV0aW5ncy5sZW5ndGhcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgbWVldGluZ3MgdG8gcmVuZGVyIGZvciB0aGUgY3VycmVudCBwYWdlLiBUaGUgc2VydmVyIHJldHVybnMgZXhhY3RseSBvbmVcclxuICAgKiBwYWdlIG9mIG1lZXRpbmdzIGludG8gYGV2ZW50Lm1lZXRpbmdzYCwgc28gdGhlIGNhcmQgcmVuZGVycyB0aGVtIGFzLWlzXHJcbiAgICogd2l0aG91dCBsb2NhbCBzbGljaW5nIChwYWdpbmF0aW9uIGlzIHNlcnZlci1zaWRlKS5cclxuICAgKiBAcmV0dXJuIHtNZWV0aW5nUm93W119IFRoZSBtZWV0aW5ncyBvbiB0aGUgY3VycmVudCBwYWdlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBwYWdlZE1lZXRpbmdzKCk6IE1lZXRpbmdSb3dbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5tZWV0aW5ncztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBvbmUtYmFzZWQgaW5kZXggb2YgdGhlIGZpcnN0IG1lZXRpbmcgc2hvd24gb24gdGhlIGN1cnJlbnQgcGFnZSwgb3IgMFxyXG4gICAqIHdoZW4gdGhlcmUgYXJlIG5vIG1lZXRpbmdzLlxyXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIHN0YXJ0IGluZGV4IGZvciB0aGUgcmFuZ2UgdGVtcGxhdGUuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHJhbmdlU3RhcnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRvdGFsTWVldGluZ3MgPT09IDAgPyAwIDogdGhpcy5wYWdlSW5kZXggKiB0aGlzLnBhZ2VTaXplICsgMTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBvbmUtYmFzZWQgaW5kZXggb2YgdGhlIGxhc3QgbWVldGluZyBzaG93biBvbiB0aGUgY3VycmVudCBwYWdlLCBjbGFtcGVkXHJcbiAgICogdG8gdGhlIHRvdGFsIG1lZXRpbmcgY291bnQuXHJcbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgZW5kIGluZGV4IGZvciB0aGUgcmFuZ2UgdGVtcGxhdGUuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHJhbmdlRW5kKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gTWF0aC5taW4oKHRoaXMucGFnZUluZGV4ICsgMSkgKiB0aGlzLnBhZ2VTaXplLCB0aGlzLnRvdGFsTWVldGluZ3MpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHBhZ2luYXRvciByYW5nZSBsYWJlbCAoZS5nLiBcIlNob3dpbmcgMS01IG9mIDEyXCIpIGJ1aWx0IGZyb20gdGhlXHJcbiAgICogYGNvbnN0YW50cy5qc29uYCByYW5nZSB0ZW1wbGF0ZSB3aXRoIHRoZSBjdXJyZW50IHN0YXJ0L2VuZC90b3RhbCB2YWx1ZXMuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIHJhbmdlIGxhYmVsLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCByYW5nZUxhYmVsKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB0ZW1wbGF0ZSA9XHJcbiAgICAgIHRoaXMuY29uc3RhbnRzPy5ldmVudEdyb3VwQ2FyZD8ucGFnaW5hdG9yPy5yYW5nZVRlbXBsYXRlID8/XHJcbiAgICAgICdTaG93aW5nIHtzdGFydH0te2VuZH0gb2Yge3RvdGFsfSc7XHJcbiAgICByZXR1cm4gdGVtcGxhdGVcclxuICAgICAgLnJlcGxhY2UoJ3tzdGFydH0nLCBgJHt0aGlzLnJhbmdlU3RhcnR9YClcclxuICAgICAgLnJlcGxhY2UoJ3tlbmR9JywgYCR7dGhpcy5yYW5nZUVuZH1gKVxyXG4gICAgICAucmVwbGFjZSgne3RvdGFsfScsIGAke3RoaXMudG90YWxNZWV0aW5nc31gKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBtZWV0aW5nLWNvdW50IHN1bW1hcnkgc3ViLWxpbmUgKGUuZy4gXCIxMiBtZWV0aW5nc1wiKSBidWlsdCBmcm9tIHRoZVxyXG4gICAqIGBjb25zdGFudHMuanNvbmAgdG90YWwgdGVtcGxhdGUgd2l0aCB0aGUgZXZlbnQncyBtZWV0aW5nIGNvdW50LlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZvcm1hdHRlZCBtZWV0aW5nLWNvdW50IHN1bW1hcnkuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IG1lZXRpbmdDb3VudFN1bW1hcnkoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRlbXBsYXRlID1cclxuICAgICAgdGhpcy5jb25zdGFudHM/LmV2ZW50R3JvdXBDYXJkPy5wYWdpbmF0b3I/LnRvdGFsVGVtcGxhdGUgPz9cclxuICAgICAgJ3t0b3RhbH0gbWVldGluZ3MnO1xyXG4gICAgcmV0dXJuIHRlbXBsYXRlLnJlcGxhY2UoJ3t0b3RhbH0nLCBgJHt0aGlzLmV2ZW50Py5tZWV0aW5nQ291bnQgPz8gMH1gKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBoZWFkZXIgc3ViLWxpbmU6IHRoZSBncm91cCDCtyBsb2NhdGlvbiBsaW5lIGZvciBhIFNUQU5EQUxPTkUgbWVldGluZywgb3JcclxuICAgKiB0aGUgXCJ7bn0gbWVldGluZ3Mgc2NoZWR1bGVkIGFjcm9zcyB0aGUgZXZlbnRcIiBzdW1tYXJ5IGZvciBhbiBFVkVOVCB3aGVuIGl0c1xyXG4gICAqIG1lZXRpbmcgY291bnQgaXMga25vd24gKGhpZGRlbiB1bnRpbCB0aGUgY291bnQgaXMgbG9hZGVkIHNvIGl0IG5ldmVyIHNob3dzXHJcbiAgICogXCIwIG1lZXRpbmdzXCIpLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHN1Yi1saW5lIHRleHQsIG9yIGFuIGVtcHR5IHN0cmluZyB0byBoaWRlIGl0LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBzdWJ0aXRsZVRleHQoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmlzU3RhbmRhbG9uZSkge1xyXG4gICAgICBjb25zdCBncm91cCA9IHRoaXMuZXZlbnQ/Lmdyb3VwT3JDb21taXR0ZWUgPz8gJyc7XHJcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5ldmVudD8ucm9vbU9yTG9jYXRpb24gPz8gJyc7XHJcbiAgICAgIGlmIChncm91cCAmJiBsb2NhdGlvbikge1xyXG4gICAgICAgIHJldHVybiBgJHtncm91cH0gXFx1MDBiNyAke2xvY2F0aW9ufWA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGdyb3VwIHx8IGxvY2F0aW9uO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICh0aGlzLmV2ZW50Py5tZWV0aW5nQ291bnQgPz8gMCkgPiAwID8gdGhpcy5tZWV0aW5nQ291bnRTdW1tYXJ5IDogJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgbWVldGluZy1saXN0IHNob3cvaGlkZSB0b2dnbGUgbGFiZWwuIFdoZW4gdGhlIGxpc3QgaXMgaGlkZGVuIHRoZSBsYWJlbFxyXG4gICAqIHJlYWRzIFwiU2hvdyBNZWV0aW5ncyAoe2NvdW50fSBvcGVuIGZvciBhdHRlbmRhbmNlKVwiIGJ1aWx0IGZyb20gdGhlXHJcbiAgICogYGNvbnN0YW50cy5qc29uYCB0ZW1wbGF0ZXMgYW5kIHRoZSBldmVudCdzIG9wZW4tZm9yLWF0dGVuZGFuY2UgY291bnQ7IHdoZW5cclxuICAgKiB0aGUgbGlzdCBpcyBzaG93biB0aGUgbGFiZWwgcmVhZHMgdGhlIGNvbmZpZ3VyZWQgaGlkZSBsYWJlbCAoUmVxIDYuNSkuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgdG9nZ2xlIGJ1dHRvbiBsYWJlbC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgbWVldGluZ0xpc3RUb2dnbGVMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdG9nZ2xlID0gdGhpcy5jb25zdGFudHM/LmV2ZW50R3JvdXBDYXJkPy5tZWV0aW5nTGlzdFRvZ2dsZTtcclxuICAgIGlmICh0aGlzLmlzTWVldGluZ0xpc3RPcGVuKSB7XHJcbiAgICAgIHJldHVybiB0b2dnbGU/LmhpZGVMYWJlbCA/PyAnSGlkZSBtZWV0aW5ncyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG9nZ2xlPy5zaG93TGFiZWwgPz8gJ1Nob3cgbWVldGluZ3MnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIFwie2NvdW50fSBNZWV0aW5ncyBvcGVuIGZvciBhdHRlbmRhbmNlXCIgc3VtbWFyeSBzaG93biBpbiB0aGUgZXZlbnQnc1xyXG4gICAqIG1lZXRpbmdzIGJhciwgYnVpbHQgZnJvbSB0aGUgYGNvbnN0YW50cy5qc29uYCB0ZW1wbGF0ZSBhbmQgdGhlIGV2ZW50J3NcclxuICAgKiBvcGVuLWZvci1hdHRlbmRhbmNlIGNvdW50IChSZXEgNi41KS5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgb3Blbi1mb3ItYXR0ZW5kYW5jZSBzdW1tYXJ5LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBvcGVuRm9yQXR0ZW5kYW5jZVN1bW1hcnkoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRlbXBsYXRlID1cclxuICAgICAgdGhpcy5jb25zdGFudHM/LmV2ZW50R3JvdXBDYXJkPy5vcGVuRm9yQXR0ZW5kYW5jZVRlbXBsYXRlID8/XHJcbiAgICAgICd7Y291bnR9IE1lZXRpbmdzIG9wZW4gZm9yIGF0dGVuZGFuY2UnO1xyXG4gICAgcmV0dXJuIHRlbXBsYXRlLnJlcGxhY2UoXHJcbiAgICAgICd7Y291bnR9JyxcclxuICAgICAgYCR7dGhpcy5ldmVudD8ub3BlbkZvckF0dGVuZGFuY2VDb3VudCA/PyAwfWBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUge0BsaW5rIE1lZXRpbmdSb3d9IHZpZXcgbW9kZWwgZm9yIGEgU1RBTkRBTE9ORV9NRUVUSU5HIGNhcmQsIHByb2plY3RlZFxyXG4gICAqIGZyb20gdGhlIGV2ZW50IGVudHJ5IHNvIHRoZSBzaGFyZWQge0BsaW5rIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50fVxyXG4gICAqIHJlbmRlcnMgaXRzIHRpbWUvdGltZXpvbmUgYmxvY2sgYW5kIGF0dGVuZGFuY2UgYWN0aW9uLlxyXG4gICAqIEByZXR1cm4ge01lZXRpbmdSb3d9IFRoZSBzdGFuZGFsb25lIG1lZXRpbmcgcm93LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBzdGFuZGFsb25lTWVldGluZygpOiBNZWV0aW5nUm93IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG1lZXRpbmdJZDogdGhpcy5ldmVudD8uZXZlbnRJZCA/PyAnJyxcclxuICAgICAgbWVldGluZ05hbWU6IHRoaXMuZXZlbnQ/LnRpdGxlID8/ICcnLFxyXG4gICAgICBncm91cE9yQ29tbWl0dGVlOiB0aGlzLmV2ZW50Py5ncm91cE9yQ29tbWl0dGVlLFxyXG4gICAgICByb29tT3JMb2NhdGlvbjogdGhpcy5ldmVudD8ucm9vbU9yTG9jYXRpb24sXHJcbiAgICAgIHN0YXJ0RGF0ZVRpbWU6IHRoaXMuZXZlbnQ/LnN0YXJ0RGF0ZVRpbWUgPz8gdGhpcy5ldmVudD8uc3RhcnREYXRlLFxyXG4gICAgICBlbmREYXRlVGltZTogdGhpcy5ldmVudD8uZW5kRGF0ZVRpbWUgPz8gdGhpcy5ldmVudD8uZW5kRGF0ZSxcclxuICAgICAgdGltZXpvbmU6IHRoaXMuZXZlbnQ/LnRpbWV6b25lID8/ICcnLFxyXG4gICAgICBzdGF0dXM6IHRoaXMuZXZlbnQ/LnN0YXR1cyxcclxuICAgICAgaXNNZW1iZXJPZkdyb3VwOiB0aGlzLmV2ZW50Py5pc01lbWJlck9mR3JvdXAsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGZvcm1hdHRlZCBcInN0YXJ0IOKAkyBlbmQgdGltZSAodGltZXpvbmUpXCIgc3RyaW5nIGZvciBhIFNUQU5EQUxPTkUgbWVldGluZyxcclxuICAgKiBtaXJyb3JpbmcgdGhlIGlubmVyIG1lZXRpbmcgcm93J3MgVElNRSAmIFRJTUVaT05FIHZhbHVlLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZvcm1hdHRlZCB0aW1lICsgdGltZXpvbmUuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHN0YW5kYWxvbmVUaW1lKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB0aW1lem9uZSA9IHRoaXMuZXZlbnQ/LnRpbWV6b25lID8/ICcnO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBmb3JtYXRFcG9jaChcclxuICAgICAgdGhpcy5ldmVudD8uc3RhcnREYXRlVGltZSA/PyB0aGlzLmV2ZW50Py5zdGFydERhdGUsXHJcbiAgICAgIERhdGVGb3JtYXRzLnRpbWVNZXJpZGllbUZvcm1hdCxcclxuICAgICAgdGltZXpvbmVcclxuICAgICk7XHJcbiAgICBjb25zdCBlbmQgPSBmb3JtYXRFcG9jaChcclxuICAgICAgdGhpcy5ldmVudD8uZW5kRGF0ZVRpbWUgPz8gdGhpcy5ldmVudD8uZW5kRGF0ZSxcclxuICAgICAgRGF0ZUZvcm1hdHMudGltZU1lcmlkaWVtRm9ybWF0LFxyXG4gICAgICB0aW1lem9uZVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHJhbmdlID0gZW5kID8gYCR7c3RhcnR9IFxcdTIwMTMgJHtlbmR9YCA6IHN0YXJ0O1xyXG4gICAgaWYgKCFyYW5nZSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGltZXpvbmUgPyBgJHtyYW5nZX0gJHt0aW1lem9uZX1gIDogcmFuZ2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBTVEFOREFMT05FIG1lZXRpbmcgaXMgY3VycmVudGx5IGJlaW5nIGF0dGVuZGVkIChkcml2ZXMgdGhlIHBpbGxcclxuICAgKiBhbmQgdGhlIGxlYXZlIGFjdGlvbikuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHRoZSBzdGFuZGFsb25lIG1lZXRpbmcgaXMgY3VycmVudGx5IGF0dGVuZGluZy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgaXNTdGFuZGFsb25lQXR0ZW5kaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5yZXNvbHZlQXR0ZW5kYW5jZVN0YXRlKHRoaXMuc3RhbmRhbG9uZU1lZXRpbmcpID09PVxyXG4gICAgICBBdHRlbmRhbmNlU3RhdGUuQ1VSUkVOVExZX0FUVEVORElOR1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIFNUQU5EQUxPTkUgbWVldGluZydzIExvZyBBdHRlbmRhbmNlIGJ1dHRvbiBpcyBzaG93biAod2hlbmV2ZXJcclxuICAgKiBub3QgY3VycmVudGx5IGF0dGVuZGluZykuIE5vIHBlcm1pc3Npb24gZ2F0aW5nIOKAlCBtaXJyb3JzIHRoZSBhdHRlbmRhbmNlXHJcbiAgICogbGlicmFyeS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIGxvZy1hdHRlbmRhbmNlIGJ1dHRvbiBpcyB2aXNpYmxlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBzaG93U3RhbmRhbG9uZUxvZygpOiBib29sZWFuIHtcclxuICAgIC8vIFNob3duIGZvciBldmVyeSBlbGlnaWJsZSwgbm90LWN1cnJlbnRseS1hdHRlbmRpbmcgc3RhbmRhbG9uZSBtZWV0aW5nLlxyXG4gICAgLy8gRGlzYWJsZWQgKHdpdGggdGhlIGluYWN0aXZlIG1lc3NhZ2UpIHdoZW4gdGhlIG1lZXRpbmcgaXMgbm90IEluIFByb2dyZXNzLlxyXG4gICAgcmV0dXJuICF0aGlzLmlzU3RhbmRhbG9uZUF0dGVuZGluZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIFNUQU5EQUxPTkUgbWVldGluZydzIExlYXZlIE1lZXRpbmcgYnV0dG9uIGlzIHNob3duIOKAlCBvbmx5IHdoaWxlXHJcbiAgICogdGhlIG1lZXRpbmcgaXMgY3VycmVudGx5IGF0dGVuZGluZyBBTkQgYWN0aXZlLlxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgd2hlbiB0aGUgbGVhdmUtbWVldGluZyBidXR0b24gaXMgdmlzaWJsZS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgc2hvd1N0YW5kYWxvbmVMZWF2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzU3RhbmRhbG9uZUF0dGVuZGluZyAmJiB0aGlzLmlzU3RhbmRhbG9uZUFjdGl2ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIFNUQU5EQUxPTkUgbWVldGluZyBpcyBlbGlnaWJsZSBmb3IgYW4gYXR0ZW5kYW5jZSBhY3Rpb24uIFRoZVxyXG4gICAqIGJhY2tlbmQgc3VwcGxpZXMgYW4gYGF0dGVuZGFuY2VTdGF0ZWAgb25seSBmb3IgYXR0ZW5kYW5jZS1lbGlnaWJsZSBtZWV0aW5nc1xyXG4gICAqIChvcGVuIGZvciBhdHRlbmRhbmNlKSwgc28gaXRzIHByZXNlbmNlIGlzIHRoZSBlbGlnaWJpbGl0eSBzaWduYWwuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHRoZSBzdGFuZGFsb25lIG1lZXRpbmcgaXMgYXR0ZW5kYW5jZS1lbGlnaWJsZS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgaXNTdGFuZGFsb25lRWxpZ2libGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmV2ZW50Py5hdHRlbmRhbmNlU3RhdGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBTVEFOREFMT05FIG1lZXRpbmcgaXMgY3VycmVudGx5IEluIFByb2dyZXNzIOKAlCB0aGUgYXR0ZW5kYW5jZVxyXG4gICAqIGJ1dHRvbiBpcyBvbmx5IEVOQUJMRUQgZHVyaW5nIHRoZSBtZWV0aW5nIChkaXNhYmxlZCBvdGhlcndpc2UsIG1pcnJvcmluZyB0aGVcclxuICAgKiB2aWV3LW1lZXRpbmcgcGFnZSkuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHRoZSBzdGFuZGFsb25lIG1lZXRpbmcgc3RhdHVzIGlzICdJbiBQcm9ncmVzcycuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IGlzU3RhbmRhbG9uZUFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy5ldmVudD8uc3RhdHVzID8/ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2luIHByb2dyZXNzJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIFNUQU5EQUxPTkUgTG9nIEF0dGVuZGFuY2UgYnV0dG9uIGlzIGRpc2FibGVkIChvdXRzaWRlIG1lZXRpbmdcclxuICAgKiB0aW1lKSwgbWF0Y2hpbmcgdGhlIHZpZXctbWVldGluZyBwYWdlJ3MgaW5hY3RpdmUgc3RhdGUuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHRoZSBzdGFuZGFsb25lIGxvZyBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBpc1N0YW5kYWxvbmVMb2dEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5pc1N0YW5kYWxvbmVBY3RpdmU7XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIGluYWN0aXZlLWJ1dHRvbiBtZXNzYWdlIHNob3duIHdoZW4gdGhlIHN0YW5kYWxvbmUgbWVldGluZyBpcyBub3QgYWN0aXZlLiAqL1xyXG4gIGdldCBpbmFjdGl2ZU1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY29uc3RhbnRzPy5tZWV0aW5nUm93Py5pbmFjdGl2ZU1lc3NhZ2UgPz9cclxuICAgICAgJ0F0dGVuZGFuY2UgbG9nZ2luZyBvbmx5IGF2YWlsYWJsZSBkdXJpbmcgbWVldGluZywgUGxlYXNlIGNvbnRhY3QgeW91ciBtZWV0aW5nIGFkbWluaXN0cmF0b3IgZm9yIGFueSBuZWNlc3NhcnkgY29ycmVjdGlvbnMuJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1YmJsZXMgYSByb3cncyBuYXZpZ2F0ZS10by1tZWV0aW5nIHJlcXVlc3QgdXB3YXJkIHVuY2hhbmdlZCBzbyB0aGUgaG9zdCBjYW5cclxuICAgKiByb3V0ZSB0byB0aGUgdmlldy1tZWV0aW5nIHNjcmVlbi5cclxuICAgKiBAcGFyYW0ge3sgZXZlbnRJZDogc3RyaW5nOyBtZWV0aW5nSWQ6IHN0cmluZyB9fSByZXF1ZXN0IC0gVGhlIG1lZXRpbmcgaWRlbnRpdHkuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25OYXZpZ2F0ZVRvTWVldGluZyhyZXF1ZXN0OiB7XHJcbiAgICBldmVudElkOiBzdHJpbmc7XHJcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcclxuICAgIGxvZ0F0dGVuZGFuY2U/OiBib29sZWFuO1xyXG4gICAgbGVhdmVNZWV0aW5nPzogYm9vbGVhbjtcclxuICB9KTogdm9pZCB7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG9NZWV0aW5nLmVtaXQocmVxdWVzdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgbmF2aWdhdGUtdG8tbWVldGluZyBpbnRlbnQgZm9yIGEgU1RBTkRBTE9ORSBtZWV0aW5nJ3MgYXR0ZW5kYW5jZVxyXG4gICAqIGFjdGlvbiAoTG9nIEF0dGVuZGFuY2Ugb3IgTGVhdmUgTWVldGluZywgcmVxdWVzdGluZyB0aGUgbWF0Y2hpbmcgcG9wdXBcclxuICAgKiBhdXRvLW9wZW4pLiBJdHMgb3duIGlkIGlzIHRoZSBtZWV0aW5nIGlkOyBpdCBoYXMgbm8gcGFyZW50IGV2ZW50LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uTmF2aWdhdGVUb1N0YW5kYWxvbmUoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNTdGFuZGFsb25lQWN0aXZlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMubmF2aWdhdGVUb01lZXRpbmcuZW1pdCh7XHJcbiAgICAgIGV2ZW50SWQ6ICcnLFxyXG4gICAgICBtZWV0aW5nSWQ6IHRoaXMuZXZlbnQ/LmV2ZW50SWQgPz8gJycsXHJcbiAgICAgIGxvZ0F0dGVuZGFuY2U6ICF0aGlzLmlzU3RhbmRhbG9uZUF0dGVuZGluZyxcclxuICAgICAgbGVhdmVNZWV0aW5nOiB0aGlzLmlzU3RhbmRhbG9uZUF0dGVuZGluZyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIG5hdmlnYXRlLXRvLW1lZXRpbmcgaW50ZW50IGZvciBhIFNUQU5EQUxPTkUgbWVldGluZydzIG5hbWUgbGlua1xyXG4gICAqICh2aWV3IG9ubHkg4oCUIG5vIHBvcHVwIGF1dG8tb3BlbikuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25PcGVuU3RhbmRhbG9uZSgpOiB2b2lkIHtcclxuICAgIHRoaXMubmF2aWdhdGVUb01lZXRpbmcuZW1pdCh7XHJcbiAgICAgIGV2ZW50SWQ6ICcnLFxyXG4gICAgICBtZWV0aW5nSWQ6IHRoaXMuZXZlbnQ/LmV2ZW50SWQgPz8gJycsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBUaGUgbHV4b24tZm9ybWF0dGVkIHN0YXJ0IGRhdGUgb2YgdGhlIGV2ZW50IChJU08gb3IgZXBvY2ggbXMpIChSZXEgNi4yKS4gKi9cclxuICBnZXQgZm9ybWF0dGVkU3RhcnREYXRlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXREYXRlKFxyXG4gICAgICB0aGlzLmV2ZW50Py5zdGFydERhdGVUaW1lID8/IHRoaXMuZXZlbnQ/LnN0YXJ0RGF0ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKiBUaGUgbHV4b24tZm9ybWF0dGVkIGVuZCBkYXRlIG9mIHRoZSBldmVudCAoSVNPIG9yIGVwb2NoIG1zKSAoUmVxIDYuMikuICovXHJcbiAgZ2V0IGZvcm1hdHRlZEVuZERhdGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGUodGhpcy5ldmVudD8uZW5kRGF0ZVRpbWUgPz8gdGhpcy5ldmVudD8uZW5kRGF0ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBgdHJhY2tCeWAgZm9yIHRoZSBtZWV0aW5nLXJvdyBgKm5nRm9yYCwga2V5ZWQgYnkgdGhlIHN0YWJsZSBtZWV0aW5nIGlkIHNvXHJcbiAgICogQW5ndWxhciByZXVzZXMgcm93IGNvbXBvbmVudHMgYWNyb3NzIHBhZ2luYXRpb24vc3RhdGUgY2hhbmdlcyAoUmVxIDYuNywgMTQuNCkuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IF9pbmRleCAtIFRoZSBpdGVyYXRpb24gaW5kZXggKHVudXNlZCkuXHJcbiAgICogQHBhcmFtIHtNZWV0aW5nUm93fSBtZWV0aW5nIC0gVGhlIG1lZXRpbmcgZm9yIHRoaXMgcm93LlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHN0YWJsZSB0cmFjayBrZXkgKG1lZXRpbmcgaWQpLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRyYWNrQnlNZWV0aW5nSWQoX2luZGV4OiBudW1iZXIsIG1lZXRpbmc6IE1lZXRpbmdSb3cpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIG1lZXRpbmc/Lm1lZXRpbmdJZCA/PyBgJHtfaW5kZXh9YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc29sdmVzIHRoZSBhdHRlbmRhbmNlIHN0YXRlIGZvciBhIG1lZXRpbmcgZnJvbSB0aGUgYGF0dGVuZGFuY2VTdGF0ZXNgIG1hcCxcclxuICAgKiBkZWZhdWx0aW5nIHRvIGBOT1RfQVRURU5ESU5HYCB3aGVuIHRoZSBtYXAgaGFzIG5vIGVudHJ5IGZvciBpdC5cclxuICAgKiBAcGFyYW0ge01lZXRpbmdSb3d9IG1lZXRpbmcgLSBUaGUgbWVldGluZyB0byByZXNvbHZlIHN0YXRlIGZvci5cclxuICAgKiBAcmV0dXJuIHtBdHRlbmRhbmNlU3RhdGV9IFRoZSBhdHRlbmRhbmNlIHN0YXRlIHBhc3NlZCB0byB0aGUgcm93LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHJlc29sdmVBdHRlbmRhbmNlU3RhdGUobWVldGluZzogTWVldGluZ1Jvdyk6IEF0dGVuZGFuY2VTdGF0ZSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmF0dGVuZGFuY2VTdGF0ZXM/LlttZWV0aW5nPy5tZWV0aW5nSWRdID8/XHJcbiAgICAgIEF0dGVuZGFuY2VTdGF0ZS5OT1RfQVRURU5ESU5HXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb2x2ZXMgd2hldGhlciBhIG1lZXRpbmcgaGFzIGFuIGF0dGVuZGFuY2UgYWN0aW9uIGluIGZsaWdodCBmcm9tIHRoZVxyXG4gICAqIGBpbkZsaWdodE1lZXRpbmdJZHNgIHNldC5cclxuICAgKiBAcGFyYW0ge01lZXRpbmdSb3d9IG1lZXRpbmcgLSBUaGUgbWVldGluZyB0byBjaGVjay5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIG1lZXRpbmcncyBhY3Rpb24gaXMgYXdhaXRpbmcgcmVzb2x1dGlvbi5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRHcm91cENhcmRDb21wb25lbnRcclxuICAgKi9cclxuICByZXNvbHZlSXNJbkZsaWdodChtZWV0aW5nOiBNZWV0aW5nUm93KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbkZsaWdodE1lZXRpbmdJZHM/LmhhcyhtZWV0aW5nPy5tZWV0aW5nSWQpID8/IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyB0aGUgbWVldGluZy1saXN0IHZpc2liaWxpdHksIGxhemlseSByZXF1ZXN0aW5nIHRoZSBmaXJzdCBwYWdlIG9mIHRoZVxyXG4gICAqIGV2ZW50J3MgY2hpbGQgbWVldGluZ3MgZnJvbSB0aGUgY29udGFpbmVyIHRoZSBmaXJzdCB0aW1lIGl0IGlzIG9wZW5lZCAoUmVxIDYuNikuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Ub2dnbGVNZWV0aW5nTGlzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNNZWV0aW5nTGlzdE9wZW4gPSAhdGhpcy5pc01lZXRpbmdMaXN0T3BlbjtcclxuICAgIGlmICh0aGlzLmlzTWVldGluZ0xpc3RPcGVuKSB7XHJcbiAgICAgIHRoaXMubG9hZE1lZXRpbmdzLmVtaXQoeyBwYWdlOiB0aGlzLnBhZ2VJbmRleCArIDEsIHNpemU6IHRoaXMucGFnZVNpemUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBcIlZpZXcgRXZlbnRcIiBidXR0b24sIGVtaXR0aW5nIHRoZSBldmVudCBpZCB0byB0aGUgaG9zdCAoUmVxIDYuNCkuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50R3JvdXBDYXJkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25WaWV3RXZlbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXdFdmVudC5lbWl0KHRoaXMuZXZlbnQ/LmV2ZW50SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnViYmxlcyBhIHJvdydzIG1lZXRpbmctbmFtZSBsaW5rIGFjdGl2YXRpb24gdXB3YXJkIChSZXEgNi43LCA3LjQpLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZWV0aW5nSWQgLSBUaGUgaWQgZW1pdHRlZCBieSB0aGUgcm93LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uT3Blbk1lZXRpbmcobWVldGluZ0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMub3Blbk1lZXRpbmcuZW1pdChtZWV0aW5nSWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnViYmxlcyBhIHJvdydzIGxvZy1hdHRlbmRhbmNlIHJlcXVlc3QgdXB3YXJkIChSZXEgNi43LCA3LjcpLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZWV0aW5nSWQgLSBUaGUgaWQgZW1pdHRlZCBieSB0aGUgcm93LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uTG9nQXR0ZW5kYW5jZShtZWV0aW5nSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2dBdHRlbmRhbmNlLmVtaXQobWVldGluZ0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1YmJsZXMgYSByb3cncyBsZWF2ZS1tZWV0aW5nIHJlcXVlc3QgdXB3YXJkIChSZXEgNi43LCA3LjgpLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZWV0aW5nSWQgLSBUaGUgaWQgZW1pdHRlZCBieSB0aGUgcm93LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uTGVhdmVNZWV0aW5nKG1lZXRpbmdJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmxlYXZlTWVldGluZy5lbWl0KG1lZXRpbmdJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBwZXItY2FyZCBwYWdpbmF0b3IgY2hhbmdlLCB1cGRhdGluZyB0aGUgbG9jYWwgcGFnZSBzdGF0ZSBhbmRcclxuICAgKiBlbWl0dGluZyB0aGUgcmVxdWVzdGVkIHBhZ2UgYXMgYSB7QGxpbmsgUGFnZUNoYW5nZX0gKFJlcSA2LjksIDMuMykuXHJcbiAgICogQHBhcmFtIHtQYWdlRXZlbnR9IGV2ZW50IC0gVGhlIE1hdGVyaWFsIHBhZ2luYXRvciBwYWdlIGV2ZW50LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uUGFnZUNoYW5nZShldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcclxuICAgIHRoaXMucGFnZVNpemUgPSBldmVudC5wYWdlU2l6ZTtcclxuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHtcclxuICAgICAgcGFnZUluZGV4OiBldmVudC5wYWdlSW5kZXgsXHJcbiAgICAgIHBhZ2VTaXplOiBldmVudC5wYWdlU2l6ZSxcclxuICAgIH0pO1xyXG4gICAgLy8gUmVxdWVzdCB0aGUgbmV3bHkgc2VsZWN0ZWQgcGFnZS9zaXplJ3MgY2hpbGQgbWVldGluZ3MgZnJvbSB0aGUgY29udGFpbmVyLlxyXG4gICAgdGhpcy5sb2FkTWVldGluZ3MuZW1pdCh7IHBhZ2U6IGV2ZW50LnBhZ2VJbmRleCArIDEsIHNpemU6IGV2ZW50LnBhZ2VTaXplIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyBhIGRhdGUgZm9yIGRpc3BsYXksIHByZWZlcnJpbmcgdGhlIGVwb2NoLW1pbGxpc2Vjb25kcyB2YWx1ZSAoZnJvbVxyXG4gICAqIHRoZSByZWFsIEFQSSkgZm9ybWF0dGVkIGluIHRoZSBldmVudCdzIHRpbWV6b25lIGFuZCBmYWxsaW5nIGJhY2sgdG8gYSBsZWdhY3lcclxuICAgKiBJU08gc3RyaW5nLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyB3aGVuIG5laXRoZXIgaXMgcHJlc2VudC5cclxuICAgKiBAcGFyYW0ge251bWJlciB8IHVuZGVmaW5lZH0gZXBvY2hNcyAtIFRoZSBlcG9jaC1taWxsaXNlY29uZHMgdmFsdWUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IGlzb1ZhbHVlIC0gVGhlIGxlZ2FjeSBJU08gZmFsbGJhY2suXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIGRhdGUgb3IgYW4gZW1wdHkgc3RyaW5nLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudEdyb3VwQ2FyZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZm9ybWF0RGF0ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZm9ybWF0RXBvY2godmFsdWUsIERhdGVGb3JtYXRzLmRpc3BsYXlGb3JtYXQsIHRoaXMuZXZlbnQ/LnRpbWV6b25lKTtcclxuICB9XHJcbn1cclxuIiwiPGFydGljbGVcclxuICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkXCJcclxuICBbY2xhc3MuaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmQtLW1vYmlsZV09XCJpc01vYmlsZVZpZXdcIlxyXG4gIFtjbGFzcy5pZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZC0tc3RhbmRhbG9uZV09XCJpc1N0YW5kYWxvbmVcIlxyXG4+XHJcbiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IEVWRU5UID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1N0YW5kYWxvbmVcIj5cclxuICAgIDxoZWFkZXIgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9faGVhZGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9faGVhZGVyLW1haW5cIj5cclxuICAgICAgICA8IS0tIEVWRU5UIGJhZGdlICsgZGF5IGluZGljYXRvci4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19iYWRnZS1yb3dcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX2JhZGdlXCI+XHJcbiAgICAgICAgICAgIHt7IGNvbnN0YW50cy5ldmVudEdyb3VwQ2FyZC5ldmVudEJhZGdlIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdJZj1cImV2ZW50LmRheUluZGljYXRvclwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX2RheS1pbmRpY2F0b3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBldmVudC5kYXlJbmRpY2F0b3IgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX190aXRsZS1yb3dcIj5cclxuICAgICAgICAgIDxoMyBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX190aXRsZVwiPnt7IGV2ZW50LnRpdGxlIH19PC9oMz5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZXZlbnQuc3RhdHVzXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhdHVzLXBpbGxcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCInaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YXR1cy1waWxsLS0nICsgc3RhdHVzTW9kaWZpZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBldmVudC5zdGF0dXMgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwic3VidGl0bGVUZXh0XCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N1YnRpdGxlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBzdWJ0aXRsZVRleHQgfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19oZWFkZXItc2lkZVwiPlxyXG4gICAgICAgIDxkbCBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19kYXRlcy1ibG9ja1wiPlxyXG4gICAgICAgICAgPGR0IGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX2RhdGVzLWxhYmVsXCI+XHJcbiAgICAgICAgICAgIHt7IGNvbnN0YW50cy5ldmVudEdyb3VwQ2FyZC5ldmVudERhdGVzTGFiZWwgfX1cclxuICAgICAgICAgIDwvZHQ+XHJcbiAgICAgICAgICA8ZGQgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fZGF0ZXMtbGluZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19kYXRlcy12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgIHt7IGZvcm1hdHRlZFN0YXJ0RGF0ZSB9fTxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtYXR0ZWRFbmREYXRlICYmIGZvcm1hdHRlZEVuZERhdGUgIT09IGZvcm1hdHRlZFN0YXJ0RGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgJm5kYXNoOyB7eyBmb3JtYXR0ZWRFbmREYXRlIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cImV2ZW50LnRpbWV6b25lXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX190aW1lem9uZS12YWx1ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAoe3sgZXZlbnQudGltZXpvbmUgfX0pXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGQ+XHJcbiAgICAgICAgPC9kbD5cclxuXHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX192aWV3XCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzLmV2ZW50R3JvdXBDYXJkLmFyaWFMYWJlbC52aWV3RXZlbnRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVmlld0V2ZW50KClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGNvbnN0YW50cy5ldmVudEdyb3VwQ2FyZC52aWV3RXZlbnRMYWJlbCB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvaGVhZGVyPlxyXG5cclxuICAgIDwhLS0gTWVldGluZ3MgYmFyOiBcIk1lZXRpbmdzXCIgbGFiZWwgKGxlZnQpLCBvcGVuLWZvci1hdHRlbmRhbmNlIGNvdW50ICtcclxuICAgICAgICAgU2hvdy9IaWRlIHRvZ2dsZSAocmlnaHQpLCBtYXRjaGluZyB0aGUgRmlnbWEgbGF5b3V0LiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fbWVldGluZ3MtYmFyXCI+XHJcbiAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fbWVldGluZ3MtbGFiZWxcIj5cclxuICAgICAgICB7eyBjb25zdGFudHMuZXZlbnRHcm91cENhcmQubWVldGluZ3NMYWJlbCB9fVxyXG4gICAgICA8L3NwYW4+IC0tPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19tZWV0aW5ncy1iYXItcmlnaHRcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19tZWV0aW5ncy1vcGVuXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19tZWV0aW5ncy1kb3RcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgICB7eyBvcGVuRm9yQXR0ZW5kYW5jZVN1bW1hcnkgfX1cclxuICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fbWVldGluZy10b2dnbGVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc01lZXRpbmdMaXN0T3BlblwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cy5ldmVudEdyb3VwQ2FyZC5hcmlhTGFiZWwubWVldGluZ0xpc3RUb2dnbGVcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlTWVldGluZ0xpc3QoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4+e3sgbWVldGluZ0xpc3RUb2dnbGVMYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmEtc29saWRcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJpc01lZXRpbmdMaXN0T3BlbiA/ICdmYS1jaGV2cm9uLXVwJyA6ICdmYS1jaGV2cm9uLWRvd24nXCJcclxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgID48L2k+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBFeHBhbmRlZCBpbm5lciBtZWV0aW5nIGxpc3QgKyBwZXItZXZlbnQgcGFnaW5hdG9yLiAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJpc01lZXRpbmdMaXN0T3BlblwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX21lZXRpbmdzXCJcclxuICAgID5cclxuICAgICAgPGllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93XHJcbiAgICAgICAgKm5nRm9yPVwibGV0IG1lZXRpbmcgb2YgcGFnZWRNZWV0aW5nczsgdHJhY2tCeTogdHJhY2tCeU1lZXRpbmdJZFwiXHJcbiAgICAgICAgW21lZXRpbmddPVwibWVldGluZ1wiXHJcbiAgICAgICAgW2F0dGVuZGFuY2VTdGF0ZV09XCJyZXNvbHZlQXR0ZW5kYW5jZVN0YXRlKG1lZXRpbmcpXCJcclxuICAgICAgICBbaXNJbkZsaWdodF09XCJyZXNvbHZlSXNJbkZsaWdodChtZWV0aW5nKVwiXHJcbiAgICAgICAgW3Blcm1pc3Npb25zXT1cInBlcm1pc3Npb25zXCJcclxuICAgICAgICAob3Blbk1lZXRpbmcpPVwib25PcGVuTWVldGluZygkZXZlbnQpXCJcclxuICAgICAgICAobG9nQXR0ZW5kYW5jZSk9XCJvbkxvZ0F0dGVuZGFuY2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKGxlYXZlTWVldGluZyk9XCJvbkxlYXZlTWVldGluZygkZXZlbnQpXCJcclxuICAgICAgICAobmF2aWdhdGVUb01lZXRpbmcpPVwib25OYXZpZ2F0ZVRvTWVldGluZygkZXZlbnQpXCJcclxuICAgICAgPjwvaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3c+XHJcblxyXG4gICAgICA8IS0tIEVtcHR5IHN0YXRlOiBzaG93biB3aGVuIHRoZSBldmVudCBoYXMgbm8gbWVldGluZ3MgdG8gbGlzdC4gLS0+XHJcbiAgICAgIDxwXHJcbiAgICAgICAgKm5nSWY9XCJ0b3RhbE1lZXRpbmdzID09PSAwXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19uby1tZWV0aW5nc1wiXHJcbiAgICAgICAgcm9sZT1cInN0YXR1c1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBjb25zdGFudHMuZXZlbnRHcm91cENhcmQubm9NZWV0aW5nc01lc3NhZ2UgfX1cclxuICAgICAgPC9wPlxyXG5cclxuICAgICAgPCEtLSBQYWdpbmF0b3Igc2hvd24gd2hlbiB0aGUgZXZlbnQgaGFzIG1vcmUgbWVldGluZ3MgdGhhbiB0aGUgZGVmYXVsdFxyXG4gICAgICAgICAgIHBhZ2Ugc2l6ZS4gR2F0ZWQgb24gZGVmYXVsdFBhZ2VTaXplIChub3QgdGhlIHNlbGVjdGVkIHBhZ2VTaXplKSBzb1xyXG4gICAgICAgICAgIHRoZSBwYWdlLXNpemUgc2VsZWN0b3Igc3RheXMgcmVhY2hhYmxlIGFmdGVyIGEgdXNlciBwaWNrcyBhIGxhcmdlclxyXG4gICAgICAgICAgIHNpemU7IGhpZGRlbiBvbmx5IHdoZW4gdGhlIGV2ZW50IGhhcyBubyBtZWV0aW5ncyAoW10pIG9yIHRoZXkgYWxsIGZpdFxyXG4gICAgICAgICAgIGluIHRoZSBkZWZhdWx0IHBhZ2UuIC0tPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJ0b3RhbE1lZXRpbmdzID4gZGVmYXVsdFBhZ2VTaXplXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19wYWdpbmF0b3JcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzLmV2ZW50R3JvdXBDYXJkLmFyaWFMYWJlbC5tZWV0aW5nTGlzdFRvZ2dsZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LXBhZ2luYXRvclxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fcGFnaW5hdG9yLWNvbnRyb2xcIlxyXG4gICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxyXG4gICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcclxuICAgICAgICAgIFtsZW5ndGhdPVwidG90YWxNZWV0aW5nc1wiXHJcbiAgICAgICAgICAocGFnZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvbWF0LXBhZ2luYXRvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PSBTVEFOREFMT05FIE1FRVRJTkcgPT09PT09PT09PT09PT09PT09PT09PT0gLS0+XHJcbiAgPCEtLSBTaW5nbGUgaG9yaXpvbnRhbCByb3c6IGJhZGdlK25hbWUrc3VidGl0bGUgfCBNRUVUSU5HIERBVEUgfCBUSU1FICYgVElNRVpPTkUgfCBhY3Rpb24uIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJpc1N0YW5kYWxvbmVcIiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YW5kYWxvbmUtbWFpblwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19iYWRnZSBpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fYmFkZ2UtLXN0YW5kYWxvbmVcIj5cclxuICAgICAgICB7eyBjb25zdGFudHMuZXZlbnRHcm91cENhcmQuc3RhbmRhbG9uZUJhZGdlIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS10aXRsZS1yb3dcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YW5kYWxvbmUtbmFtZVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cy5tZWV0aW5nUm93LmFyaWFMYWJlbC5tZWV0aW5nTmFtZUxpbmtcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uT3BlblN0YW5kYWxvbmUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZXZlbnQudGl0bGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nSWY9XCJldmVudC5zdGF0dXNcIlxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhdHVzLXBpbGxcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiJ2llZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGF0dXMtcGlsbC0tJyArIHN0YXR1c01vZGlmaWVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBldmVudC5zdGF0dXMgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPHBcclxuICAgICAgICAqbmdJZj1cInN1YnRpdGxlVGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS1zdWJ0aXRsZVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBzdWJ0aXRsZVRleHQgfX1cclxuICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBNRUVUSU5HIERBVEUgY29sdW1uLiAtLT5cclxuICAgIDxkbCBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lLWNvbFwiPlxyXG4gICAgICA8ZHQgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS1jb2wtbGFiZWxcIj5cclxuICAgICAgICB7eyBjb25zdGFudHMuZXZlbnRHcm91cENhcmQubWVldGluZ0RhdGVMYWJlbCB9fVxyXG4gICAgICA8L2R0PlxyXG4gICAgICA8ZGQgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS1jb2wtdmFsdWVcIj5cclxuICAgICAgICB7eyBmb3JtYXR0ZWRTdGFydERhdGUgfX08bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybWF0dGVkRW5kRGF0ZSAmJiBmb3JtYXR0ZWRFbmREYXRlICE9PSBmb3JtYXR0ZWRTdGFydERhdGVcIj5cclxuICAgICAgICAgICZuZGFzaDsge3sgZm9ybWF0dGVkRW5kRGF0ZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2RkPlxyXG4gICAgPC9kbD5cclxuXHJcbiAgICA8IS0tIFRJTUUgJiBUSU1FWk9ORSBjb2x1bW4uIC0tPlxyXG4gICAgPGRsIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YW5kYWxvbmUtY29sXCI+XHJcbiAgICAgIDxkdCBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lLWNvbC1sYWJlbFwiPlxyXG4gICAgICAgIHt7IGNvbnN0YW50cy5ldmVudEdyb3VwQ2FyZC50aW1lVGltZXpvbmVMYWJlbCB9fVxyXG4gICAgICA8L2R0PlxyXG4gICAgICA8ZGQgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS1jb2wtdmFsdWVcIj5cclxuICAgICAgICB7eyBzdGFuZGFsb25lVGltZSB9fVxyXG4gICAgICA8L2RkPlxyXG4gICAgPC9kbD5cclxuXHJcbiAgICA8IS0tIEF0dGVuZGFuY2UgYWN0aW9uIGNvbHVtbi4gU2hvd24gb25seSBmb3IgYXR0ZW5kYW5jZS1lbGlnaWJsZSBtZWV0aW5ncy4gLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiaXNTdGFuZGFsb25lRWxpZ2libGVcIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lLWFjdGlvbnNcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19hdHRlbmRpbmctc2xvdFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdJZj1cImlzU3RhbmRhbG9uZUF0dGVuZGluZ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudC1ncm91cC1jYXJkX19hdHRlbmRpbmctcGlsbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhdHVzLWRvdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIHt7IGNvbnN0YW50cy5tZWV0aW5nUm93LmN1cnJlbnRseUF0dGVuZGluZ0luZGljYXRvciB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiIWlzU3RhbmRhbG9uZUF0dGVuZGluZ1wiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS1hY3Rpb24gaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YW5kYWxvbmUtYWN0aW9uLS1sb2dcIlxyXG4gICAgICAgIFtjbGFzcy5pZWVlc2EtZXZlbnQtZ3JvdXAtY2FyZF9fc3RhbmRhbG9uZS1hY3Rpb24tLWluYWN0aXZlXT1cImlzU3RhbmRhbG9uZUxvZ0Rpc2FibGVkXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNTdGFuZGFsb25lTG9nRGlzYWJsZWRcIlxyXG4gICAgICAgIFthdHRyLnRpdGxlXT1cImlzU3RhbmRhbG9uZUxvZ0Rpc2FibGVkID8gaW5hY3RpdmVNZXNzYWdlIDogbnVsbFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHMubWVldGluZ1Jvdy5hcmlhTGFiZWwubG9nQXR0ZW5kYW5jZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGVUb1N0YW5kYWxvbmUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBjb25zdGFudHMubWVldGluZ1Jvdy5sb2dBdHRlbmRhbmNlTGFiZWwgfX1cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJpc1N0YW5kYWxvbmVBdHRlbmRpbmdcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50LWdyb3VwLWNhcmRfX3N0YW5kYWxvbmUtYWN0aW9uIGllZWVzYS1ldmVudC1ncm91cC1jYXJkX19zdGFuZGFsb25lLWFjdGlvbi0tbGVhdmVcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzLm1lZXRpbmdSb3cuYXJpYUxhYmVsLmxlYXZlTWVldGluZ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGVUb1N0YW5kYWxvbmUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBjb25zdGFudHMubWVldGluZ1Jvdy5sZWF2ZU1lZXRpbmdMYWJlbCB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FydGljbGU+XHJcbiJdfQ==
|