@vendasta/meetings 0.80.0 → 0.81.1
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/esm2020/lib/_internal/enums/index.mjs +1 -2
- package/esm2020/lib/_internal/google-meet.api.service.mjs +7 -8
- package/esm2020/lib/_internal/index.mjs +1 -2
- package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/meeting-guest.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/meeting-host.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/meeting-type.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/shared.interface.mjs +1 -1
- package/esm2020/lib/_internal/meeting-guest.api.service.mjs +7 -8
- package/esm2020/lib/_internal/meeting-host.api.service.mjs +7 -8
- package/esm2020/lib/_internal/meeting-source-api.api.service.mjs +7 -8
- package/esm2020/lib/_internal/objects/index.mjs +3 -5
- package/esm2020/lib/_internal/objects/meeting-guest.mjs +5 -2
- package/esm2020/lib/_internal/objects/meeting-host.mjs +17 -2
- package/esm2020/lib/_internal/objects/meeting-type.mjs +28 -1
- package/esm2020/lib/_internal/objects/shared.mjs +2 -3
- package/esm2020/lib/guest/guest.service.mjs +1 -1
- package/esm2020/lib/host/host.service.mjs +11 -2
- package/esm2020/lib/index.mjs +3 -4
- package/esm2020/lib/shared/meeting-type.mjs +15 -3
- package/esm2020/lib/shared/meeting.mjs +3 -2
- package/fesm2015/vendasta-meetings.mjs +145 -502
- package/fesm2015/vendasta-meetings.mjs.map +1 -1
- package/fesm2020/vendasta-meetings.mjs +145 -499
- package/fesm2020/vendasta-meetings.mjs.map +1 -1
- package/lib/_internal/enums/index.d.ts +0 -1
- package/lib/_internal/google-meet.api.service.d.ts +2 -5
- package/lib/_internal/index.d.ts +0 -1
- package/lib/_internal/interfaces/index.d.ts +2 -4
- package/lib/_internal/interfaces/meeting-guest.interface.d.ts +2 -1
- package/lib/_internal/interfaces/meeting-host.interface.d.ts +5 -1
- package/lib/_internal/interfaces/meeting-type.interface.d.ts +6 -0
- package/lib/_internal/interfaces/shared.interface.d.ts +1 -2
- package/lib/_internal/meeting-guest.api.service.d.ts +3 -5
- package/lib/_internal/meeting-host.api.service.d.ts +3 -5
- package/lib/_internal/meeting-source-api.api.service.d.ts +2 -5
- package/lib/_internal/objects/index.d.ts +2 -4
- package/lib/_internal/objects/meeting-guest.d.ts +2 -1
- package/lib/_internal/objects/meeting-host.d.ts +5 -1
- package/lib/_internal/objects/meeting-type.d.ts +6 -0
- package/lib/_internal/objects/shared.d.ts +1 -2
- package/lib/guest/guest.service.d.ts +1 -0
- package/lib/host/host.service.d.ts +3 -0
- package/lib/index.d.ts +3 -4
- package/lib/shared/meeting-type.d.ts +6 -0
- package/lib/shared/meeting.d.ts +1 -0
- package/package.json +1 -1
- package/esm2020/lib/_internal/conversation-analysis.api.service.mjs +0 -50
- package/esm2020/lib/_internal/enums/conversation-analysis.enum.mjs +0 -13
- package/esm2020/lib/_internal/interfaces/annotations.interface.mjs +0 -8
- package/esm2020/lib/_internal/interfaces/conversation-analysis.interface.mjs +0 -2
- package/esm2020/lib/_internal/objects/annotations.mjs +0 -30
- package/esm2020/lib/_internal/objects/conversation-analysis.mjs +0 -309
- package/esm2020/lib/conversation_analysis/conversation-analysis.service.mjs +0 -37
- package/lib/_internal/conversation-analysis.api.service.d.ts +0 -15
- package/lib/_internal/enums/conversation-analysis.enum.d.ts +0 -5
- package/lib/_internal/interfaces/annotations.interface.d.ts +0 -4
- package/lib/_internal/interfaces/conversation-analysis.interface.d.ts +0 -53
- package/lib/_internal/objects/annotations.d.ts +0 -9
- package/lib/_internal/objects/conversation-analysis.d.ts +0 -82
- package/lib/conversation_analysis/conversation-analysis.service.d.ts +0 -16
|
@@ -7,15 +7,14 @@
|
|
|
7
7
|
import { Injectable } from '@angular/core';
|
|
8
8
|
import { MeetingSourceListRequest, MeetingSourceListResponse, } from './objects/';
|
|
9
9
|
import { HttpHeaders, HttpClient } from '@angular/common/http';
|
|
10
|
+
import { inject } from '@angular/core';
|
|
10
11
|
import { HostService } from '../_generated/host.service';
|
|
11
12
|
import { map } from 'rxjs/operators';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@angular/common/http";
|
|
14
|
-
import * as i2 from "../_generated/host.service";
|
|
15
14
|
export class MeetingSourceAPIApiService {
|
|
16
|
-
constructor(
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
15
|
+
constructor() {
|
|
16
|
+
this.hostService = inject(HostService);
|
|
17
|
+
this.http = inject(HttpClient);
|
|
19
18
|
this._host = this.hostService.hostWithScheme;
|
|
20
19
|
}
|
|
21
20
|
apiOptions() {
|
|
@@ -32,10 +31,10 @@ export class MeetingSourceAPIApiService {
|
|
|
32
31
|
.pipe(map(resp => MeetingSourceListResponse.fromProto(resp)));
|
|
33
32
|
}
|
|
34
33
|
}
|
|
35
|
-
MeetingSourceAPIApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, deps: [
|
|
34
|
+
MeetingSourceAPIApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
36
35
|
MeetingSourceAPIApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, providedIn: 'root' });
|
|
37
36
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, decorators: [{
|
|
38
37
|
type: Injectable,
|
|
39
38
|
args: [{ providedIn: 'root' }]
|
|
40
|
-
}]
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
}] });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1zb3VyY2UtYXBpLmFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvX2ludGVybmFsL21lZXRpbmctc291cmNlLWFwaS5hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsZUFBZTtBQUNmLG9DQUFvQztBQUNwQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDQyx3QkFBd0IsRUFDeEIseUJBQXlCLEdBQ2hDLE1BQU0sWUFBWSxDQUFDO0FBS3BCLE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQUduQyxNQUFNLE9BQU8sMEJBQTBCO0lBRHZDO1FBRXFCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO0tBbUJuRDtJQWpCVyxVQUFVO1FBQ2QsT0FBTztZQUNILE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDckIsY0FBYyxFQUFFLGtCQUFrQjthQUNyQyxDQUFDO1lBQ0YsZUFBZSxFQUFFLElBQUk7U0FDeEIsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJLENBQUMsQ0FBK0Q7UUFDaEUsTUFBTSxPQUFPLEdBQUcsQ0FBNEIsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBNEIsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQXFDLElBQUksQ0FBQyxLQUFLLEdBQUcsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUMvSSxJQUFJLENBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3pELENBQUM7SUFDVixDQUFDOzt1SEFwQlEsMEJBQTBCOzJIQUExQiwwQkFBMEIsY0FEZCxNQUFNOzJGQUNsQiwwQkFBMEI7a0JBRHRDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBBUEkgU2VydmljZS5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVxdWVzdCxcbiAgICAgICAgTWVldGluZ1NvdXJjZUxpc3RSZXNwb25zZSxcbn0gZnJvbSAnLi9vYmplY3RzLyc7XG5pbXBvcnQge1xuICAgICAgICBNZWV0aW5nU291cmNlTGlzdFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2VJbnRlcmZhY2UsXG59IGZyb20gJy4vaW50ZXJmYWNlcy8nO1xuaW1wb3J0IHtIdHRwSGVhZGVycywgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge2luamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0hvc3RTZXJ2aWNlfSBmcm9tICcuLi9fZ2VuZXJhdGVkL2hvc3Quc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTWVldGluZ1NvdXJjZUFQSUFwaVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdFNlcnZpY2UgPSBpbmplY3QoSG9zdFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgICBwcml2YXRlIF9ob3N0ID0gdGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZTtcblxuICAgIHByaXZhdGUgYXBpT3B0aW9ucygpOiB7aGVhZGVyczogSHR0cEhlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbn0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGxpc3QocjogTWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0IHwgTWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxNZWV0aW5nU291cmNlTGlzdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0PnIpIDogbmV3IE1lZXRpbmdTb3VyY2VMaXN0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nU291cmNlQVBJL0xpc3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIFxufVxuIl19
|
|
@@ -7,14 +7,12 @@
|
|
|
7
7
|
export { MeetingSourceInfo, MeetingSourceListRequest, MeetingSourceListResponse, MeetingSourceQuery, } from './meeting-source';
|
|
8
8
|
export { CreateZoomMeetingRequest, CreateZoomMeetingResponse, ZoomMeetingRecurrence, ZoomMeetingSettings, ZoomMeetingTrackingField, ZoomOccurrence, } from './zoom';
|
|
9
9
|
export { GoogleMeetConferenceData, GoogleMeetConferenceRequestStatus, GoogleMeetConferenceSolution, GoogleMeetConferenceSolutionKey, GoogleMeetCreateConferenceRequest, GoogleMeetCreateMeetingRequest, GoogleMeetCreateMeetingResponse, GoogleMeetEntryPoint, GoogleMeetMeeting, GoogleMeetMeetingAttendee, GoogleMeetMeetingCreator, GoogleMeetMeetingDateTime, GoogleMeetMeetingReminder, GoogleMeetMeetingReminders, } from './google-meet';
|
|
10
|
-
export { TimeOfDay, } from './timeofday';
|
|
11
|
-
export { DateTime, TimeZone, } from './datetime';
|
|
12
10
|
export { Answer, Answers, CalendarApplicationContextEntry, Attachment, Attendee, Calendar, Contact, Host, HostUser, PagedRequestOptions, PagedResponseMetadata, Preferences, TimeRange, } from './shared';
|
|
13
11
|
export { Field, Form, MeetingType, } from './meeting-type';
|
|
14
12
|
export { DateRange, } from './date-range';
|
|
15
13
|
export { BookMeetingRequest, BookMeetingResponse, GetCalendarRequest, GetCalendarResponse, GetHostRequest, GetHostResponse, GetMeetingTypeRequest, GetMeetingTypeResponse, GuestCancelMeetingRequest, GuestGetBookedMeetingRequest, GuestGetBookedMeetingResponse, GuestIsHostConfiguredRequest, GuestIsHostConfiguredResponse, GuestRescheduleMeetingRequest, ListAvailableTimeSlotsRequest, ListAvailableTimeSlotsResponse, ListMeetingTypesRequest, ListMeetingTypesResponse, BookMeetingRequestMetadataEntry, } from './meeting-guest';
|
|
16
14
|
export { FieldMask, } from './field-mask';
|
|
17
15
|
export { EnsurePersonalCalendarExistsRequestApplicationContextPropertiesEntry, BuildHostIdRequestApplicationContextPropertiesEntry, IsCalendarConfiguredRequestApplicationContextPropertiesEntry, AvailabilityRule, BuildHostIdRequest, BuildHostIdResponse, GetMeetingTypesForCalendarsResponseCalendarMeetingTypesMapEntry, CancelMeetingRequest, CreateAvailabilityRequest, CreateAvailabilityResponse, CreateCalendarRequest, CreateCalendarResponse, CreateDefaultMeetingTypesRequest, CreateMeetingTypeRequest, CreateMeetingTypeResponse, DeleteAvailabilityRequest, DeleteMeetingTypeRequest, DoesCalendarExistRequest, DoesCalendarExistResponse, EnsureGroupCalendarsExistRequest, EnsureGroupCalendarsExistResponse, EnsurePersonalCalendarExistsRequest, EnsurePersonalCalendarExistsResponse, ListAvailabilityRequestFilters, ListBookedMeetingsRequestFilters, GetHostMeetingRequest, GetHostMeetingResponse, GetHostPreferencesRequest, GetHostPreferencesResponse, GetHostsForCalendarRequest, GetHostsForCalendarResponse, GetMeetingTypesForCalendarsRequest, GetMeetingTypesForCalendarsResponse, HostBookMeetingRequest, HostBookMeetingResponse, HostGetCalendarRequest, HostGetCalendarResponse, HostGetMeetingTypeRequest, HostGetMeetingTypeResponse, HostListMeetingTypesRequest, HostListMeetingTypesResponse, IsCalendarConfiguredRequest, IsCalendarConfiguredResponse, IsHostConfiguredRequest, IsHostConfiguredResponse, ListAvailabilityRequest, ListAvailabilityResponse, ListBookedMeetingsRequest, ListBookedMeetingsResponse, Meeting, MeetingTypeList, UpdateMeetingMetadataRequestMetadataEntry, MeetingMetadataEntry, RescheduleMeetingRequest, SendMeetingRequestEmailRequest, SetGeneralAvailabilityRequest, UpdateAvailabilityRequest, UpdateCalendarRequest, UpdateHostPreferencesRequest, UpdateMeetingMetadataRequest, UpdateMeetingTypeRequest, WeekdayAvailability, } from './meeting-host';
|
|
18
|
-
export {
|
|
19
|
-
export {
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
export { TimeOfDay, } from './timeofday';
|
|
17
|
+
export { DateTime, TimeZone, } from './datetime';
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsaUJBQWlCO0FBQ2pCLG9DQUFvQztBQUNwQyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsa0JBQWtCLEdBQ3JCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUNILHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsY0FBYyxHQUNqQixNQUFNLFFBQVEsQ0FBQztBQUVoQixPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLGlDQUFpQyxFQUNqQyw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDOUIsK0JBQStCLEVBQy9CLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLDBCQUEwQixHQUM3QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsTUFBTSxFQUNOLE9BQU8sRUFDUCwrQkFBK0IsRUFDL0IsVUFBVSxFQUNWLFFBQVEsRUFDUixRQUFRLEVBQ1IsT0FBTyxFQUNQLElBQUksRUFDSixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFDSCxLQUFLLEVBQ0wsSUFBSSxFQUNKLFdBQVcsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDSCxTQUFTLEdBQ1osTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNILGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIseUJBQXlCLEVBQ3pCLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFDN0IsNEJBQTRCLEVBQzVCLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLDhCQUE4QixFQUM5Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLCtCQUErQixHQUNsQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFDSCxTQUFTLEdBQ1osTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNILG9FQUFvRSxFQUNwRSxtREFBbUQsRUFDbkQsNERBQTRELEVBQzVELGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLCtEQUErRCxFQUMvRCxvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGdDQUFnQyxFQUNoQyx3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsaUNBQWlDLEVBQ2pDLG1DQUFtQyxFQUNuQyxvQ0FBb0MsRUFDcEMsOEJBQThCLEVBQzlCLGdDQUFnQyxFQUNoQyxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsbUNBQW1DLEVBQ25DLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQixPQUFPLEVBQ1AsZUFBZSxFQUNmLHlDQUF5QyxFQUN6QyxvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLDhCQUE4QixFQUM5Qiw2QkFBNkIsRUFDN0IseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLHdCQUF3QixFQUN4QixtQkFBbUIsR0FDdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsU0FBUyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxHQUFHLE1BQU0sWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzIEluZGV4LlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5leHBvcnQge1xuICAgIE1lZXRpbmdTb3VyY2VJbmZvLFxuICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVxdWVzdCxcbiAgICBNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlLFxuICAgIE1lZXRpbmdTb3VyY2VRdWVyeSxcbn0gZnJvbSAnLi9tZWV0aW5nLXNvdXJjZSc7XG5cbmV4cG9ydCB7XG4gICAgQ3JlYXRlWm9vbU1lZXRpbmdSZXF1ZXN0LFxuICAgIENyZWF0ZVpvb21NZWV0aW5nUmVzcG9uc2UsXG4gICAgWm9vbU1lZXRpbmdSZWN1cnJlbmNlLFxuICAgIFpvb21NZWV0aW5nU2V0dGluZ3MsXG4gICAgWm9vbU1lZXRpbmdUcmFja2luZ0ZpZWxkLFxuICAgIFpvb21PY2N1cnJlbmNlLFxufSBmcm9tICcuL3pvb20nO1xuXG5leHBvcnQge1xuICAgIEdvb2dsZU1lZXRDb25mZXJlbmNlRGF0YSxcbiAgICBHb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXMsXG4gICAgR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbixcbiAgICBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uS2V5LFxuICAgIEdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdCxcbiAgICBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3QsXG4gICAgR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZSxcbiAgICBHb29nbGVNZWV0RW50cnlQb2ludCxcbiAgICBHb29nbGVNZWV0TWVldGluZyxcbiAgICBHb29nbGVNZWV0TWVldGluZ0F0dGVuZGVlLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvcixcbiAgICBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXIsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnMsXG59IGZyb20gJy4vZ29vZ2xlLW1lZXQnO1xuXG5leHBvcnQge1xuICAgIEFuc3dlcixcbiAgICBBbnN3ZXJzLFxuICAgIENhbGVuZGFyQXBwbGljYXRpb25Db250ZXh0RW50cnksXG4gICAgQXR0YWNobWVudCxcbiAgICBBdHRlbmRlZSxcbiAgICBDYWxlbmRhcixcbiAgICBDb250YWN0LFxuICAgIEhvc3QsXG4gICAgSG9zdFVzZXIsXG4gICAgUGFnZWRSZXF1ZXN0T3B0aW9ucyxcbiAgICBQYWdlZFJlc3BvbnNlTWV0YWRhdGEsXG4gICAgUHJlZmVyZW5jZXMsXG4gICAgVGltZVJhbmdlLFxufSBmcm9tICcuL3NoYXJlZCc7XG5cbmV4cG9ydCB7XG4gICAgRmllbGQsXG4gICAgRm9ybSxcbiAgICBNZWV0aW5nVHlwZSxcbn0gZnJvbSAnLi9tZWV0aW5nLXR5cGUnO1xuXG5leHBvcnQge1xuICAgIERhdGVSYW5nZSxcbn0gZnJvbSAnLi9kYXRlLXJhbmdlJztcblxuZXhwb3J0IHtcbiAgICBCb29rTWVldGluZ1JlcXVlc3QsXG4gICAgQm9va01lZXRpbmdSZXNwb25zZSxcbiAgICBHZXRDYWxlbmRhclJlcXVlc3QsXG4gICAgR2V0Q2FsZW5kYXJSZXNwb25zZSxcbiAgICBHZXRIb3N0UmVxdWVzdCxcbiAgICBHZXRIb3N0UmVzcG9uc2UsXG4gICAgR2V0TWVldGluZ1R5cGVSZXF1ZXN0LFxuICAgIEdldE1lZXRpbmdUeXBlUmVzcG9uc2UsXG4gICAgR3Vlc3RDYW5jZWxNZWV0aW5nUmVxdWVzdCxcbiAgICBHdWVzdEdldEJvb2tlZE1lZXRpbmdSZXF1ZXN0LFxuICAgIEd1ZXN0R2V0Qm9va2VkTWVldGluZ1Jlc3BvbnNlLFxuICAgIEd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlcXVlc3QsXG4gICAgR3Vlc3RJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UsXG4gICAgR3Vlc3RSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3QsXG4gICAgTGlzdEF2YWlsYWJsZVRpbWVTbG90c1JlcXVlc3QsXG4gICAgTGlzdEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlLFxuICAgIExpc3RNZWV0aW5nVHlwZXNSZXF1ZXN0LFxuICAgIExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZSxcbiAgICBCb29rTWVldGluZ1JlcXVlc3RNZXRhZGF0YUVudHJ5LFxufSBmcm9tICcuL21lZXRpbmctZ3Vlc3QnO1xuXG5leHBvcnQge1xuICAgIEZpZWxkTWFzayxcbn0gZnJvbSAnLi9maWVsZC1tYXNrJztcblxuZXhwb3J0IHtcbiAgICBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNFbnRyeSxcbiAgICBCdWlsZEhvc3RJZFJlcXVlc3RBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzRW50cnksXG4gICAgSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXF1ZXN0QXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllc0VudHJ5LFxuICAgIEF2YWlsYWJpbGl0eVJ1bGUsXG4gICAgQnVpbGRIb3N0SWRSZXF1ZXN0LFxuICAgIEJ1aWxkSG9zdElkUmVzcG9uc2UsXG4gICAgR2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVzcG9uc2VDYWxlbmRhck1lZXRpbmdUeXBlc01hcEVudHJ5LFxuICAgIENhbmNlbE1lZXRpbmdSZXF1ZXN0LFxuICAgIENyZWF0ZUF2YWlsYWJpbGl0eVJlcXVlc3QsXG4gICAgQ3JlYXRlQXZhaWxhYmlsaXR5UmVzcG9uc2UsXG4gICAgQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0LFxuICAgIENyZWF0ZUNhbGVuZGFyUmVzcG9uc2UsXG4gICAgQ3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlc1JlcXVlc3QsXG4gICAgQ3JlYXRlTWVldGluZ1R5cGVSZXF1ZXN0LFxuICAgIENyZWF0ZU1lZXRpbmdUeXBlUmVzcG9uc2UsXG4gICAgRGVsZXRlQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICBEZWxldGVNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgRG9lc0NhbGVuZGFyRXhpc3RSZXF1ZXN0LFxuICAgIERvZXNDYWxlbmRhckV4aXN0UmVzcG9uc2UsXG4gICAgRW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFJlcXVlc3QsXG4gICAgRW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFJlc3BvbnNlLFxuICAgIEVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNSZXF1ZXN0LFxuICAgIEVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNSZXNwb25zZSxcbiAgICBMaXN0QXZhaWxhYmlsaXR5UmVxdWVzdEZpbHRlcnMsXG4gICAgTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEZpbHRlcnMsXG4gICAgR2V0SG9zdE1lZXRpbmdSZXF1ZXN0LFxuICAgIEdldEhvc3RNZWV0aW5nUmVzcG9uc2UsXG4gICAgR2V0SG9zdFByZWZlcmVuY2VzUmVxdWVzdCxcbiAgICBHZXRIb3N0UHJlZmVyZW5jZXNSZXNwb25zZSxcbiAgICBHZXRIb3N0c0ZvckNhbGVuZGFyUmVxdWVzdCxcbiAgICBHZXRIb3N0c0ZvckNhbGVuZGFyUmVzcG9uc2UsXG4gICAgR2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVxdWVzdCxcbiAgICBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXNwb25zZSxcbiAgICBIb3N0Qm9va01lZXRpbmdSZXF1ZXN0LFxuICAgIEhvc3RCb29rTWVldGluZ1Jlc3BvbnNlLFxuICAgIEhvc3RHZXRDYWxlbmRhclJlcXVlc3QsXG4gICAgSG9zdEdldENhbGVuZGFyUmVzcG9uc2UsXG4gICAgSG9zdEdldE1lZXRpbmdUeXBlUmVxdWVzdCxcbiAgICBIb3N0R2V0TWVldGluZ1R5cGVSZXNwb25zZSxcbiAgICBIb3N0TGlzdE1lZXRpbmdUeXBlc1JlcXVlc3QsXG4gICAgSG9zdExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZSxcbiAgICBJc0NhbGVuZGFyQ29uZmlndXJlZFJlcXVlc3QsXG4gICAgSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXNwb25zZSxcbiAgICBJc0hvc3RDb25maWd1cmVkUmVxdWVzdCxcbiAgICBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UsXG4gICAgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3QsXG4gICAgTGlzdEF2YWlsYWJpbGl0eVJlc3BvbnNlLFxuICAgIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3QsXG4gICAgTGlzdEJvb2tlZE1lZXRpbmdzUmVzcG9uc2UsXG4gICAgTWVldGluZyxcbiAgICBNZWV0aW5nVHlwZUxpc3QsXG4gICAgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdE1ldGFkYXRhRW50cnksXG4gICAgTWVldGluZ01ldGFkYXRhRW50cnksXG4gICAgUmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0LFxuICAgIFNlbmRNZWV0aW5nUmVxdWVzdEVtYWlsUmVxdWVzdCxcbiAgICBTZXRHZW5lcmFsQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICBVcGRhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgIFVwZGF0ZUNhbGVuZGFyUmVxdWVzdCxcbiAgICBVcGRhdGVIb3N0UHJlZmVyZW5jZXNSZXF1ZXN0LFxuICAgIFVwZGF0ZU1lZXRpbmdNZXRhZGF0YVJlcXVlc3QsXG4gICAgVXBkYXRlTWVldGluZ1R5cGVSZXF1ZXN0LFxuICAgIFdlZWtkYXlBdmFpbGFiaWxpdHksXG59IGZyb20gJy4vbWVldGluZy1ob3N0JztcblxuZXhwb3J0IHsgVGltZU9mRGF5LCB9IGZyb20gJy4vdGltZW9mZGF5JztcbmV4cG9ydCB7IERhdGVUaW1lLCBUaW1lWm9uZSwgfSBmcm9tICcuL2RhdGV0aW1lJztcbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Contact, Answers, Calendar, Host } from './shared';
|
|
2
2
|
import { DateRange } from './date-range';
|
|
3
3
|
import { MeetingType } from './meeting-type';
|
|
4
|
-
import { TimeZone } from './
|
|
4
|
+
import { TimeZone } from './';
|
|
5
5
|
export function enumStringToValue(enumRef, value) {
|
|
6
6
|
if (typeof value === 'number') {
|
|
7
7
|
return value;
|
|
@@ -64,6 +64,9 @@ export class BookMeetingRequest {
|
|
|
64
64
|
if (typeof this.recaptchaToken !== 'undefined') {
|
|
65
65
|
toReturn['recaptchaToken'] = this.recaptchaToken;
|
|
66
66
|
}
|
|
67
|
+
if (typeof this.location !== 'undefined') {
|
|
68
|
+
toReturn['location'] = this.location;
|
|
69
|
+
}
|
|
67
70
|
return toReturn;
|
|
68
71
|
}
|
|
69
72
|
}
|
|
@@ -508,4 +511,4 @@ export class BookMeetingRequestMetadataEntry {
|
|
|
508
511
|
return toReturn;
|
|
509
512
|
}
|
|
510
513
|
}
|
|
511
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1ndWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21lZXRpbmdzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL21lZXRpbmctZ3Vlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3RDLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFXM0IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUNqQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUFDO1FBQ3ZFLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQUM7UUFDNUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FBQztRQUNuRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFBQyxDQUFDLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FBQztRQUN4SSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFBQyxDQUFDLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQUM7UUFDOUUsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUFzQztRQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUFDO1FBQzNFLElBQUksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQUM7UUFDaEcsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsUUFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUFDO1FBQy9LLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLFNBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNyTCxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxLQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FBQztRQUM3SixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQzlFLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLFFBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FB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QUMsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUFDO1FBQ3ZNLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTywrQkFBK0I7SUFJeEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksK0JBQStCLEVBQUUsQ0FBQztRQUM5QyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUFtRDtRQUMzRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUFDO1FBQ2xFLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUM7UUFDeEUsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29udGFjdCwgQW5zd2VycywgQ2FsZW5kYXIsIEhvc3QgfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQgeyBEYXRlUmFuZ2UgfSBmcm9tICcuL2RhdGUtcmFuZ2UnO1xuaW1wb3J0IHsgTWVldGluZ1R5cGUgfSBmcm9tICcuL21lZXRpbmctdHlwZSc7XG5pbXBvcnQgeyBUaW1lWm9uZSB9IGZyb20gJy4vZGF0ZXRpbWUnO1xuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgQm9va01lZXRpbmdSZXF1ZXN0IGltcGxlbWVudHMgaS5Cb29rTWVldGluZ1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICAgIG1lZXRpbmdUeXBlSWQ6IHN0cmluZztcbiAgICB0aW1lU2xvdDogRGF0ZVJhbmdlO1xuICAgIGF0dGVuZGVlczogQ29udGFjdFtdO1xuICAgIHN0YXJ0OiBEYXRlO1xuICAgIGNvbW1lbnQ6IHN0cmluZztcbiAgICBtZXRhZGF0YToge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gICAgZm9ybUFuc3dlcnM6IEFuc3dlcnM7XG4gICAgcmVjYXB0Y2hhVG9rZW46IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEJvb2tNZWV0aW5nUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEJvb2tNZWV0aW5nUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50aW1lU2xvdCkge20udGltZVNsb3QgPSBEYXRlUmFuZ2UuZnJvbVByb3RvKHByb3RvLnRpbWVTbG90KTt9XG4gICAgICAgIGlmIChwcm90by5hdHRlbmRlZXMpIHttLmF0dGVuZGVlcyA9IHByb3RvLmF0dGVuZGVlcy5tYXAoQ29udGFjdC5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnN0YXJ0KSB7bS5zdGFydCA9IG5ldyBEYXRlKHByb3RvLnN0YXJ0KTt9XG4gICAgICAgIGlmIChwcm90by5tZXRhZGF0YSkge20ubWV0YWRhdGEgPSBPYmplY3Qua2V5cyhwcm90by5tZXRhZGF0YSkucmVkdWNlPGFueT4oKG9iaiwgaykgPT4geyBvYmpba10gPSBwcm90by5tZXRhZGF0YVtrXTsgcmV0dXJuIG9iajsgfSwge30pO31cbiAgICAgICAgaWYgKHByb3RvLmZvcm1BbnN3ZXJzKSB7bS5mb3JtQW5zd2VycyA9IEFuc3dlcnMuZnJvbVByb3RvKHByb3RvLmZvcm1BbnN3ZXJzKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQm9va01lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaG9zdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydob3N0SWQnXSA9IHRoaXMuaG9zdElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdUeXBlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZXRpbmdUeXBlSWQnXSA9IHRoaXMubWVldGluZ1R5cGVJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aW1lU2xvdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aW1lU2xvdCAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lU2xvdCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aW1lU2xvdCA/ICh0aGlzLnRpbWVTbG90IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWVTbG90O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmF0dGVuZGVlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hdHRlbmRlZXMgIT09IG51bGwpIHt0b1JldHVyblsnYXR0ZW5kZWVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmF0dGVuZGVlcyA/ICh0aGlzLmF0dGVuZGVlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hdHRlbmRlZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnQgPyAodGhpcy5zdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21tZW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb21tZW50J10gPSB0aGlzLmNvbW1lbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWV0YWRhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWV0YWRhdGEgIT09IG51bGwpIHt0b1JldHVyblsnbWV0YWRhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWV0YWRhdGEgPyAodGhpcy5tZXRhZGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZXRhZGF0YTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mb3JtQW5zd2VycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5mb3JtQW5zd2VycyAhPT0gbnVsbCkge3RvUmV0dXJuWydmb3JtQW5zd2VycyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5mb3JtQW5zd2VycyA/ICh0aGlzLmZvcm1BbnN3ZXJzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmZvcm1BbnN3ZXJzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlY2FwdGNoYVRva2VuICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZWNhcHRjaGFUb2tlbiddID0gdGhpcy5yZWNhcHRjaGFUb2tlbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCb29rTWVldGluZ1Jlc3BvbnNlIGltcGxlbWVudHMgaS5Cb29rTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBob3N0SWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEJvb2tNZWV0aW5nUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBCb29rTWVldGluZ1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Cb29rTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWV0aW5nSWQnXSA9IHRoaXMubWVldGluZ0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaG9zdElkJ10gPSB0aGlzLmhvc3RJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRDYWxlbmRhclJlcXVlc3QgaW1wbGVtZW50cyBpLkdldENhbGVuZGFyUmVxdWVzdEludGVyZmFjZSB7XG4gICAgY2FsZW5kYXJJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q2FsZW5kYXJSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0Q2FsZW5kYXJSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYWxlbmRhcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjYWxlbmRhcklkJ10gPSB0aGlzLmNhbGVuZGFySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0Q2FsZW5kYXJSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0Q2FsZW5kYXJSZXNwb25zZUludGVyZmFjZSB7XG4gICAgY2FsZW5kYXI6IENhbGVuZGFyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q2FsZW5kYXJSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldENhbGVuZGFyUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY2FsZW5kYXIpIHttLmNhbGVuZGFyID0gQ2FsZW5kYXIuZnJvbVByb3RvKHByb3RvLmNhbGVuZGFyKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0Q2FsZW5kYXJSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbGVuZGFyICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNhbGVuZGFyICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NhbGVuZGFyJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNhbGVuZGFyID8gKHRoaXMuY2FsZW5kYXIgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY2FsZW5kYXI7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0SG9zdFJlcXVlc3QgaW1wbGVtZW50cyBpLkdldEhvc3RSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBob3N0SWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldEhvc3RSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0SG9zdFJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldEhvc3RSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaG9zdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydob3N0SWQnXSA9IHRoaXMuaG9zdElkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldEhvc3RSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0SG9zdFJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBob3N0OiBIb3N0O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0SG9zdFJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0SG9zdFJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmhvc3QpIHttLmhvc3QgPSBIb3N0LmZyb21Qcm90byhwcm90by5ob3N0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0SG9zdFJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaG9zdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ob3N0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2hvc3QnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuaG9zdCA/ICh0aGlzLmhvc3QgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuaG9zdDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNZWV0aW5nVHlwZVJlcXVlc3QgaW1wbGVtZW50cyBpLkdldE1lZXRpbmdUeXBlUmVxdWVzdEludGVyZmFjZSB7XG4gICAgY2FsZW5kYXJTbHVnOiBzdHJpbmc7XG4gICAgbWVldGluZ1R5cGVTbHVnOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRNZWV0aW5nVHlwZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRNZWV0aW5nVHlwZVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldE1lZXRpbmdUeXBlUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbGVuZGFyU2x1ZyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FsZW5kYXJTbHVnJ10gPSB0aGlzLmNhbGVuZGFyU2x1Zzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nVHlwZVNsdWcgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZXRpbmdUeXBlU2x1ZyddID0gdGhpcy5tZWV0aW5nVHlwZVNsdWc7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0TWVldGluZ1R5cGVSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0TWVldGluZ1R5cGVSZXNwb25zZUludGVyZmFjZSB7XG4gICAgbWVldGluZ1R5cGU6IE1lZXRpbmdUeXBlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0TWVldGluZ1R5cGVSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldE1lZXRpbmdUeXBlUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubWVldGluZ1R5cGUpIHttLm1lZXRpbmdUeXBlID0gTWVldGluZ1R5cGUuZnJvbVByb3RvKHByb3RvLm1lZXRpbmdUeXBlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TWVldGluZ1R5cGVSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdUeXBlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1lZXRpbmdUeXBlICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZXRpbmdUeXBlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm1lZXRpbmdUeXBlID8gKHRoaXMubWVldGluZ1R5cGUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVldGluZ1R5cGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3Vlc3RDYW5jZWxNZWV0aW5nUmVxdWVzdCBpbXBsZW1lbnRzIGkuR3Vlc3RDYW5jZWxNZWV0aW5nUmVxdWVzdEludGVyZmFjZSB7XG4gICAgbWVldGluZ0lkOiBzdHJpbmc7XG4gICAgYXV0aFRva2VuOiBzdHJpbmc7XG4gICAgY2FuY2VsbGF0aW9uUmVhc29uOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHdWVzdENhbmNlbE1lZXRpbmdSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR3Vlc3RDYW5jZWxNZWV0aW5nUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR3Vlc3RDYW5jZWxNZWV0aW5nUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ0lkJ10gPSB0aGlzLm1lZXRpbmdJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hdXRoVG9rZW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2F1dGhUb2tlbiddID0gdGhpcy5hdXRoVG9rZW47fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FuY2VsbGF0aW9uUmVhc29uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjYW5jZWxsYXRpb25SZWFzb24nXSA9IHRoaXMuY2FuY2VsbGF0aW9uUmVhc29uO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1ZXN0R2V0Qm9va2VkTWVldGluZ1JlcXVlc3QgaW1wbGVtZW50cyBpLkd1ZXN0R2V0Qm9va2VkTWVldGluZ1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIGF1dGhUb2tlbjogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR3Vlc3RHZXRCb29rZWRNZWV0aW5nUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEd1ZXN0R2V0Qm9va2VkTWVldGluZ1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkd1ZXN0R2V0Qm9va2VkTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZXRpbmdJZCddID0gdGhpcy5tZWV0aW5nSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXV0aFRva2VuICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhdXRoVG9rZW4nXSA9IHRoaXMuYXV0aFRva2VuO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1ZXN0R2V0Qm9va2VkTWVldGluZ1Jlc3BvbnNlIGltcGxlbWVudHMgaS5HdWVzdEdldEJvb2tlZE1lZXRpbmdSZXNwb25zZUludGVyZmFjZSB7XG4gICAgc3RhcnRUaW1lOiBEYXRlO1xuICAgIGVuZFRpbWU6IERhdGU7XG4gICAgdGltZVpvbmU6IFRpbWVab25lO1xuICAgIG1lZXRpbmdUeXBlSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEd1ZXN0R2V0Qm9va2VkTWVldGluZ1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR3Vlc3RHZXRCb29rZWRNZWV0aW5nUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3RhcnRUaW1lKSB7bS5zdGFydFRpbWUgPSBuZXcgRGF0ZShwcm90by5zdGFydFRpbWUpO31cbiAgICAgICAgaWYgKHByb3RvLmVuZFRpbWUpIHttLmVuZFRpbWUgPSBuZXcgRGF0ZShwcm90by5lbmRUaW1lKTt9XG4gICAgICAgIGlmIChwcm90by50aW1lWm9uZSkge20udGltZVpvbmUgPSBUaW1lWm9uZS5mcm9tUHJvdG8ocHJvdG8udGltZVpvbmUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HdWVzdEdldEJvb2tlZE1lZXRpbmdSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0VGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdGFydFRpbWUgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnRUaW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXJ0VGltZSA/ICh0aGlzLnN0YXJ0VGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydFRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW5kVGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5lbmRUaW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VuZFRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZW5kVGltZSA/ICh0aGlzLmVuZFRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW5kVGltZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aW1lWm9uZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aW1lWm9uZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lWm9uZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aW1lWm9uZSA/ICh0aGlzLnRpbWVab25lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWVab25lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdUeXBlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZXRpbmdUeXBlSWQnXSA9IHRoaXMubWVldGluZ1R5cGVJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWVzdElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0IGltcGxlbWVudHMgaS5HdWVzdElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBob3N0SWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHdWVzdElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HdWVzdElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaG9zdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydob3N0SWQnXSA9IHRoaXMuaG9zdElkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlIGltcGxlbWVudHMgaS5HdWVzdElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZUludGVyZmFjZSB7XG4gICAgaXNDb25maWd1cmVkOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR3Vlc3RJc0hvc3RDb25maWd1cmVkUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHdWVzdElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR3Vlc3RJc0hvc3RDb25maWd1cmVkUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pc0NvbmZpZ3VyZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lzQ29uZmlndXJlZCddID0gdGhpcy5pc0NvbmZpZ3VyZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3Vlc3RSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3QgaW1wbGVtZW50cyBpLkd1ZXN0UmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBhdXRoVG9rZW46IHN0cmluZztcbiAgICBzdGFydDogRGF0ZTtcbiAgICB0aW1lWm9uZTogVGltZVpvbmU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHdWVzdFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEd1ZXN0UmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnN0YXJ0KSB7bS5zdGFydCA9IG5ldyBEYXRlKHByb3RvLnN0YXJ0KTt9XG4gICAgICAgIGlmIChwcm90by50aW1lWm9uZSkge20udGltZVpvbmUgPSBUaW1lWm9uZS5mcm9tUHJvdG8ocHJvdG8udGltZVpvbmUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HdWVzdFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ0lkJ10gPSB0aGlzLm1lZXRpbmdJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hdXRoVG9rZW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2F1dGhUb2tlbiddID0gdGhpcy5hdXRoVG9rZW47fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnQgPyAodGhpcy5zdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aW1lWm9uZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aW1lWm9uZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lWm9uZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aW1lWm9uZSA/ICh0aGlzLnRpbWVab25lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWVab25lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RBdmFpbGFibGVUaW1lU2xvdHNSZXF1ZXN0IGltcGxlbWVudHMgaS5MaXN0QXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gICAgbWVldGluZ1R5cGVJZDogc3RyaW5nO1xuICAgIHRpbWVTcGFuOiBEYXRlUmFuZ2U7XG4gICAgdGltZVpvbmU6IFRpbWVab25lO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdEF2YWlsYWJsZVRpbWVTbG90c1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0QXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50aW1lU3Bhbikge20udGltZVNwYW4gPSBEYXRlUmFuZ2UuZnJvbVByb3RvKHByb3RvLnRpbWVTcGFuKTt9XG4gICAgICAgIGlmIChwcm90by50aW1lWm9uZSkge20udGltZVpvbmUgPSBUaW1lWm9uZS5mcm9tUHJvdG8ocHJvdG8udGltZVpvbmUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0QXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaG9zdElkJ10gPSB0aGlzLmhvc3RJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nVHlwZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWV0aW5nVHlwZUlkJ10gPSB0aGlzLm1lZXRpbmdUeXBlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZVNwYW4gIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGltZVNwYW4gIT09IG51bGwpIHt0b1JldHVyblsndGltZVNwYW4nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGltZVNwYW4gPyAodGhpcy50aW1lU3BhbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50aW1lU3Bhbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aW1lWm9uZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aW1lWm9uZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lWm9uZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aW1lWm9uZSA/ICh0aGlzLnRpbWVab25lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWVab25lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RBdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZSBpbXBsZW1lbnRzIGkuTGlzdEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0aW1lU2xvdHM6IERhdGVSYW5nZVtdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnRpbWVTbG90cykge20udGltZVNsb3RzID0gcHJvdG8udGltZVNsb3RzLm1hcChEYXRlUmFuZ2UuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZVNsb3RzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRpbWVTbG90cyAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lU2xvdHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGltZVNsb3RzID8gKHRoaXMudGltZVNsb3RzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWVTbG90czt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0TWVldGluZ1R5cGVzUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdE1lZXRpbmdUeXBlc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdE1lZXRpbmdUeXBlc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0TWVldGluZ1R5cGVzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdE1lZXRpbmdUeXBlc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ob3N0SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hvc3RJZCddID0gdGhpcy5ob3N0SWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdE1lZXRpbmdUeXBlc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0TWVldGluZ1R5cGVzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIG1lZXRpbmdUeXBlczogTWVldGluZ1R5cGVbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5tZWV0aW5nVHlwZXMpIHttLm1lZXRpbmdUeXBlcyA9IHByb3RvLm1lZXRpbmdUeXBlcy5tYXAoTWVldGluZ1R5cGUuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdE1lZXRpbmdUeXBlc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ1R5cGVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1lZXRpbmdUeXBlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydtZWV0aW5nVHlwZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVldGluZ1R5cGVzID8gKHRoaXMubWVldGluZ1R5cGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1lZXRpbmdUeXBlczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCb29rTWVldGluZ1JlcXVlc3RNZXRhZGF0YUVudHJ5IGltcGxlbWVudHMgaS5Cb29rTWVldGluZ1JlcXVlc3RNZXRhZGF0YUVudHJ5SW50ZXJmYWNlIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQm9va01lZXRpbmdSZXF1ZXN0TWV0YWRhdGFFbnRyeSB7XG4gICAgICAgIGxldCBtID0gbmV3IEJvb2tNZWV0aW5nUmVxdWVzdE1ldGFkYXRhRW50cnkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkJvb2tNZWV0aW5nUmVxdWVzdE1ldGFkYXRhRW50cnlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5rZXkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2tleSddID0gdGhpcy5rZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ZhbHVlJ10gPSB0aGlzLnZhbHVlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
|
|
514
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1ndWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21lZXRpbmdzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL21lZXRpbmctZ3Vlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRzlCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFZM0IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUNqQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUFDO1FBQ3ZFLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQUM7UUFDNUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FBQztRQUNuRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFBQyxDQUFDLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FBQztRQUN4SSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFBQyxDQUFDLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQUM7UUFDOUUsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUFzQztRQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUFDO1FBQzNFLElBQUksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQUM7UUFDaEcsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsUUFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUFDO1FBQy9LLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLFNBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNyTCxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxLQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FBQztRQUM3SixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQzlFLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLFFBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FB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QUMsY0FBYyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxZQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQUM7UUFDdk0sT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLCtCQUErQjtJQUl4QyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSwrQkFBK0IsRUFBRSxDQUFDO1FBQzlDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQW1EO1FBQzNELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQUM7UUFDbEUsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FBQztRQUN4RSxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb250YWN0LCBBbnN3ZXJzLCBDYWxlbmRhciwgSG9zdCB9IGZyb20gJy4vc2hhcmVkJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4vZGF0ZS1yYW5nZSc7XG5pbXBvcnQgeyBNZWV0aW5nVHlwZSB9IGZyb20gJy4vbWVldGluZy10eXBlJztcbmltcG9ydCB7IFRpbWVab25lIH0gZnJvbSAnLi8nO1xuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgQm9va01lZXRpbmdSZXF1ZXN0IGltcGxlbWVudHMgaS5Cb29rTWVldGluZ1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICAgIG1lZXRpbmdUeXBlSWQ6IHN0cmluZztcbiAgICB0aW1lU2xvdDogRGF0ZVJhbmdlO1xuICAgIGF0dGVuZGVlczogQ29udGFjdFtdO1xuICAgIHN0YXJ0OiBEYXRlO1xuICAgIGNvbW1lbnQ6IHN0cmluZztcbiAgICBtZXRhZGF0YToge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gICAgZm9ybUFuc3dlcnM6IEFuc3dlcnM7XG4gICAgcmVjYXB0Y2hhVG9rZW46IHN0cmluZztcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQm9va01lZXRpbmdSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQm9va01lZXRpbmdSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnRpbWVTbG90KSB7bS50aW1lU2xvdCA9IERhdGVSYW5nZS5mcm9tUHJvdG8ocHJvdG8udGltZVNsb3QpO31cbiAgICAgICAgaWYgKHByb3RvLmF0dGVuZGVlcykge20uYXR0ZW5kZWVzID0gcHJvdG8uYXR0ZW5kZWVzLm1hcChDb250YWN0LmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uc3RhcnQpIHttLnN0YXJ0ID0gbmV3IERhdGUocHJvdG8uc3RhcnQpO31cbiAgICAgICAgaWYgKHByb3RvLm1ldGFkYXRhKSB7bS5tZXRhZGF0YSA9IE9iamVjdC5rZXlzKHByb3RvLm1ldGFkYXRhKS5yZWR1Y2U8YW55Pigob2JqLCBrKSA9PiB7IG9ialtrXSA9IHByb3RvLm1ldGFkYXRhW2tdOyByZXR1cm4gb2JqOyB9LCB7fSk7fVxuICAgICAgICBpZiAocHJvdG8uZm9ybUFuc3dlcnMpIHttLmZvcm1BbnN3ZXJzID0gQW5zd2Vycy5mcm9tUHJvdG8ocHJvdG8uZm9ybUFuc3dlcnMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Cb29rTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ob3N0SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hvc3RJZCddID0gdGhpcy5ob3N0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ1R5cGVJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ1R5cGVJZCddID0gdGhpcy5tZWV0aW5nVHlwZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpbWVTbG90ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRpbWVTbG90ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3RpbWVTbG90J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRpbWVTbG90ID8gKHRoaXMudGltZVNsb3QgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGltZVNsb3Q7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXR0ZW5kZWVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmF0dGVuZGVlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydhdHRlbmRlZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYXR0ZW5kZWVzID8gKHRoaXMuYXR0ZW5kZWVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmF0dGVuZGVlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGFydCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdGFydCAhPT0gbnVsbCkge3RvUmV0dXJuWydzdGFydCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdGFydCA/ICh0aGlzLnN0YXJ0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN0YXJ0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbW1lbnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbW1lbnQnXSA9IHRoaXMuY29tbWVudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXRhZGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZXRhZGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydtZXRhZGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZXRhZGF0YSA/ICh0aGlzLm1ldGFkYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1ldGFkYXRhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZvcm1BbnN3ZXJzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmZvcm1BbnN3ZXJzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Zvcm1BbnN3ZXJzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmZvcm1BbnN3ZXJzID8gKHRoaXMuZm9ybUFuc3dlcnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZm9ybUFuc3dlcnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVjYXB0Y2hhVG9rZW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlY2FwdGNoYVRva2VuJ10gPSB0aGlzLnJlY2FwdGNoYVRva2VuO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvY2F0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsb2NhdGlvbiddID0gdGhpcy5sb2NhdGlvbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCb29rTWVldGluZ1Jlc3BvbnNlIGltcGxlbWVudHMgaS5Cb29rTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBob3N0SWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEJvb2tNZWV0aW5nUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBCb29rTWVldGluZ1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Cb29rTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWV0aW5nSWQnXSA9IHRoaXMubWVldGluZ0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaG9zdElkJ10gPSB0aGlzLmhvc3RJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRDYWxlbmRhclJlcXVlc3QgaW1wbGVtZW50cyBpLkdldENhbGVuZGFyUmVxdWVzdEludGVyZmFjZSB7XG4gICAgY2FsZW5kYXJJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q2FsZW5kYXJSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0Q2FsZW5kYXJSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYWxlbmRhcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjYWxlbmRhcklkJ10gPSB0aGlzLmNhbGVuZGFySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0Q2FsZW5kYXJSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0Q2FsZW5kYXJSZXNwb25zZUludGVyZmFjZSB7XG4gICAgY2FsZW5kYXI6IENhbGVuZGFyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q2FsZW5kYXJSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldENhbGVuZGFyUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY2FsZW5kYXIpIHttLmNhbGVuZGFyID0gQ2FsZW5kYXIuZnJvbVByb3RvKHByb3RvLmNhbGVuZGFyKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0Q2FsZW5kYXJSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbGVuZGFyICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNhbGVuZGFyICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NhbGVuZGFyJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNhbGVuZGFyID8gKHRoaXMuY2FsZW5kYXIgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY2FsZW5kYXI7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0SG9zdFJlcXVlc3QgaW1wbGVtZW50cyBpLkdldEhvc3RSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBob3N0SWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldEhvc3RSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0SG9zdFJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldEhvc3RSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaG9zdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydob3N0SWQnXSA9IHRoaXMuaG9zdElkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldEhvc3RSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0SG9zdFJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBob3N0OiBIb3N0O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0SG9zdFJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0SG9zdFJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmhvc3QpIHttLmhvc3QgPSBIb3N0LmZyb21Qcm90byhwcm90by5ob3N0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0SG9zdFJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaG9zdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ob3N0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2hvc3QnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuaG9zdCA/ICh0aGlzLmhvc3QgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuaG9zdDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNZWV0aW5nVHlwZVJlcXVlc3QgaW1wbGVtZW50cyBpLkdldE1lZXRpbmdUeXBlUmVxdWVzdEludGVyZmFjZSB7XG4gICAgY2FsZW5kYXJTbHVnOiBzdHJpbmc7XG4gICAgbWVldGluZ1R5cGVTbHVnOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRNZWV0aW5nVHlwZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRNZWV0aW5nVHlwZVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldE1lZXRpbmdUeXBlUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbGVuZGFyU2x1ZyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FsZW5kYXJTbHVnJ10gPSB0aGlzLmNhbGVuZGFyU2x1Zzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nVHlwZVNsdWcgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZXRpbmdUeXBlU2x1ZyddID0gdGhpcy5tZWV0aW5nVHlwZVNsdWc7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0TWVldGluZ1R5cGVSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0TWVldGluZ1R5cGVSZXNwb25zZUludGVyZmFjZSB7XG4gICAgbWVldGluZ1R5cGU6IE1lZXRpbmdUeXBlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0TWVldGluZ1R5cGVSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldE1lZXRpbmdUeXBlUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubWVldGluZ1R5cGUpIHttLm1lZXRpbmdUeXBlID0gTWVldGluZ1R5cGUuZnJvbVByb3RvKHByb3RvLm1lZXRpbmdUeXBlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TWVldGluZ1R5cGVSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdUeXBlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1lZXRpbmdUeXBlICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZXRpbmdUeXBlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm1lZXRpbmdUeXBlID8gKHRoaXMubWVldGluZ1R5cGUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVldGluZ1R5cGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3Vlc3RDYW5jZWxNZWV0aW5nUmVxdWVzdCBpbXBsZW1lbnRzIGkuR3Vlc3RDYW5jZWxNZWV0aW5nUmVxdWVzdEludGVyZmFjZSB7XG4gICAgbWVldGluZ0lkOiBzdHJpbmc7XG4gICAgYXV0aFRva2VuOiBzdHJpbmc7XG4gICAgY2FuY2VsbGF0aW9uUmVhc29uOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHdWVzdENhbmNlbE1lZXRpbmdSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR3Vlc3RDYW5jZWxNZWV0aW5nUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR3Vlc3RDYW5jZWxNZWV0aW5nUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ0lkJ10gPSB0aGlzLm1lZXRpbmdJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hdXRoVG9rZW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2F1dGhUb2tlbiddID0gdGhpcy5hdXRoVG9rZW47fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FuY2VsbGF0aW9uUmVhc29uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjYW5jZWxsYXRpb25SZWFzb24nXSA9IHRoaXMuY2FuY2VsbGF0aW9uUmVhc29uO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1ZXN0R2V0Qm9va2VkTWVldGluZ1JlcXVlc3QgaW1wbGVtZW50cyBpLkd1ZXN0R2V0Qm9va2VkTWVldGluZ1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIGF1dGhUb2tlbjogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR3Vlc3RHZXRCb29rZWRNZWV0aW5nUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEd1ZXN0R2V0Qm9va2VkTWVldGluZ1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkd1ZXN0R2V0Qm9va2VkTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZXRpbmdJZCddID0gdGhpcy5tZWV0aW5nSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXV0aFRva2VuICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhdXRoVG9rZW4nXSA9IHRoaXMuYXV0aFRva2VuO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1ZXN0R2V0Qm9va2VkTWVldGluZ1Jlc3BvbnNlIGltcGxlbWVudHMgaS5HdWVzdEdldEJvb2tlZE1lZXRpbmdSZXNwb25zZUludGVyZmFjZSB7XG4gICAgc3RhcnRUaW1lOiBEYXRlO1xuICAgIGVuZFRpbWU6IERhdGU7XG4gICAgdGltZVpvbmU6ICBUaW1lWm9uZTtcbiAgICBtZWV0aW5nVHlwZUlkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHdWVzdEdldEJvb2tlZE1lZXRpbmdSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEd1ZXN0R2V0Qm9va2VkTWVldGluZ1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnN0YXJ0VGltZSkge20uc3RhcnRUaW1lID0gbmV3IERhdGUocHJvdG8uc3RhcnRUaW1lKTt9XG4gICAgICAgIGlmIChwcm90by5lbmRUaW1lKSB7bS5lbmRUaW1lID0gbmV3IERhdGUocHJvdG8uZW5kVGltZSk7fVxuICAgICAgICBpZiAocHJvdG8udGltZVpvbmUpIHttLnRpbWVab25lID0gIFRpbWVab25lLmZyb21Qcm90byhwcm90by50aW1lWm9uZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkd1ZXN0R2V0Qm9va2VkTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnRUaW1lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN0YXJ0VGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydzdGFydFRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnRUaW1lID8gKHRoaXMuc3RhcnRUaW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN0YXJ0VGltZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmRUaW1lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVuZFRpbWUgIT09IG51bGwpIHt0b1JldHVyblsnZW5kVGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lbmRUaW1lID8gKHRoaXMuZW5kVGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5lbmRUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpbWVab25lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRpbWVab25lICE9PSBudWxsKSB7dG9SZXR1cm5bJ3RpbWVab25lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRpbWVab25lID8gKHRoaXMudGltZVpvbmUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGltZVpvbmU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ1R5cGVJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ1R5cGVJZCddID0gdGhpcy5tZWV0aW5nVHlwZUlkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlcXVlc3QgaW1wbGVtZW50cyBpLkd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR3Vlc3RJc0hvc3RDb25maWd1cmVkUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ob3N0SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hvc3RJZCddID0gdGhpcy5ob3N0SWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3Vlc3RJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UgaW1wbGVtZW50cyBpLkd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBpc0NvbmZpZ3VyZWQ6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHdWVzdElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HdWVzdElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlzQ29uZmlndXJlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaXNDb25maWd1cmVkJ10gPSB0aGlzLmlzQ29uZmlndXJlZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWVzdFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCBpbXBsZW1lbnRzIGkuR3Vlc3RSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIGF1dGhUb2tlbjogc3RyaW5nO1xuICAgIHN0YXJ0OiBEYXRlO1xuICAgIHRpbWVab25lOiAgVGltZVpvbmU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHdWVzdFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEd1ZXN0UmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnN0YXJ0KSB7bS5zdGFydCA9IG5ldyBEYXRlKHByb3RvLnN0YXJ0KTt9XG4gICAgICAgIGlmIChwcm90by50aW1lWm9uZSkge20udGltZVpvbmUgPSAgVGltZVpvbmUuZnJvbVByb3RvKHByb3RvLnRpbWVab25lKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR3Vlc3RSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZXRpbmdJZCddID0gdGhpcy5tZWV0aW5nSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXV0aFRva2VuICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhdXRoVG9rZW4nXSA9IHRoaXMuYXV0aFRva2VuO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN0YXJ0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0YXJ0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXJ0ID8gKHRoaXMuc3RhcnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RhcnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZVpvbmUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGltZVpvbmUgIT09IG51bGwpIHt0b1JldHVyblsndGltZVpvbmUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGltZVpvbmUgPyAodGhpcy50aW1lWm9uZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50aW1lWm9uZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0QXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdEF2YWlsYWJsZVRpbWVTbG90c1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICAgIG1lZXRpbmdUeXBlSWQ6IHN0cmluZztcbiAgICB0aW1lU3BhbjogRGF0ZVJhbmdlO1xuICAgIHRpbWVab25lOiAgVGltZVpvbmU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0QXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RBdmFpbGFibGVUaW1lU2xvdHNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnRpbWVTcGFuKSB7bS50aW1lU3BhbiA9IERhdGVSYW5nZS5mcm9tUHJvdG8ocHJvdG8udGltZVNwYW4pO31cbiAgICAgICAgaWYgKHByb3RvLnRpbWVab25lKSB7bS50aW1lWm9uZSA9ICBUaW1lWm9uZS5mcm9tUHJvdG8ocHJvdG8udGltZVpvbmUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0QXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaG9zdElkJ10gPSB0aGlzLmhvc3RJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nVHlwZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWV0aW5nVHlwZUlkJ10gPSB0aGlzLm1lZXRpbmdUeXBlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZVNwYW4gIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGltZVNwYW4gIT09IG51bGwpIHt0b1JldHVyblsndGltZVNwYW4nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGltZVNwYW4gPyAodGhpcy50aW1lU3BhbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50aW1lU3Bhbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aW1lWm9uZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aW1lWm9uZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lWm9uZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aW1lWm9uZSA/ICh0aGlzLnRpbWVab25lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWVab25lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RBdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZSBpbXBsZW1lbnRzIGkuTGlzdEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0aW1lU2xvdHM6IERhdGVSYW5nZVtdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnRpbWVTbG90cykge20udGltZVNsb3RzID0gcHJvdG8udGltZVNsb3RzLm1hcChEYXRlUmFuZ2UuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZVNsb3RzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRpbWVTbG90cyAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lU2xvdHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGltZVNsb3RzID8gKHRoaXMudGltZVNsb3RzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWVTbG90czt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0TWVldGluZ1R5cGVzUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdE1lZXRpbmdUeXBlc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdE1lZXRpbmdUeXBlc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0TWVldGluZ1R5cGVzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdE1lZXRpbmdUeXBlc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ob3N0SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hvc3RJZCddID0gdGhpcy5ob3N0SWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdE1lZXRpbmdUeXBlc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0TWVldGluZ1R5cGVzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIG1lZXRpbmdUeXBlczogTWVldGluZ1R5cGVbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5tZWV0aW5nVHlwZXMpIHttLm1lZXRpbmdUeXBlcyA9IHByb3RvLm1lZXRpbmdUeXBlcy5tYXAoTWVldGluZ1R5cGUuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdE1lZXRpbmdUeXBlc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ1R5cGVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1lZXRpbmdUeXBlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydtZWV0aW5nVHlwZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVldGluZ1R5cGVzID8gKHRoaXMubWVldGluZ1R5cGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1lZXRpbmdUeXBlczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCb29rTWVldGluZ1JlcXVlc3RNZXRhZGF0YUVudHJ5IGltcGxlbWVudHMgaS5Cb29rTWVldGluZ1JlcXVlc3RNZXRhZGF0YUVudHJ5SW50ZXJmYWNlIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQm9va01lZXRpbmdSZXF1ZXN0TWV0YWRhdGFFbnRyeSB7XG4gICAgICAgIGxldCBtID0gbmV3IEJvb2tNZWV0aW5nUmVxdWVzdE1ldGFkYXRhRW50cnkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkJvb2tNZWV0aW5nUmVxdWVzdE1ldGFkYXRhRW50cnlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5rZXkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2tleSddID0gdGhpcy5rZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ZhbHVlJ10gPSB0aGlzLnZhbHVlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
|