@aneoconsultingfr/armonik.api.angular
Version:
gRPC API to interact with ArmoniK built for Angular
344 lines • 46.8 kB
JavaScript
/* tslint:disable */
/* eslint-disable */
// @ts-nocheck
//
// THIS IS A GENERATED FILE
// DO NOT MODIFY IT! YOUR CHANGES WILL BE LOST
import { Inject, Injectable, Optional } from '@angular/core';
import { GrpcCallType, GrpcMetadata } from '@ngx-grpc/common';
import { GRPC_CLIENT_FACTORY, takeMessages, throwStatusErrors } from '@ngx-grpc/core';
import * as armonikApiGrpcV1Sessions007 from './sessions-common.pb';
import { GRPC_SESSIONS_CLIENT_SETTINGS } from './sessions-service.pbconf';
import * as i0 from "@angular/core";
import * as i1 from "@ngx-grpc/core";
/**
* Service client implementation for armonik.api.grpc.v1.sessions.Sessions
*/
export class SessionsClient {
constructor(settings, clientFactory, handler) {
this.handler = handler;
/**
* Raw RPC implementation for each service client method.
* The raw methods provide more control on the incoming data and events. E.g. they can be useful to read status `OK` metadata.
* Attention: these methods do not throw errors when non-zero status codes are received.
*/
this.$raw = {
/**
* Unary call: /armonik.api.grpc.v1.sessions.Sessions/ListSessions
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.ListSessionsResponse>>
*/
listSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
return this.handler.handle({
type: GrpcCallType.unary,
client: this.client,
path: '/armonik.api.grpc.v1.sessions.Sessions/ListSessions',
requestData,
requestMetadata,
requestClass: armonikApiGrpcV1Sessions007.ListSessionsRequest,
responseClass: armonikApiGrpcV1Sessions007.ListSessionsResponse
});
},
/**
* Unary call: /armonik.api.grpc.v1.sessions.Sessions/GetSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.GetSessionResponse>>
*/
getSession: (requestData, requestMetadata = new GrpcMetadata()) => {
return this.handler.handle({
type: GrpcCallType.unary,
client: this.client,
path: '/armonik.api.grpc.v1.sessions.Sessions/GetSession',
requestData,
requestMetadata,
requestClass: armonikApiGrpcV1Sessions007.GetSessionRequest,
responseClass: armonikApiGrpcV1Sessions007.GetSessionResponse
});
},
/**
* Unary call: /armonik.api.grpc.v1.sessions.Sessions/CancelSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.CancelSessionResponse>>
*/
cancelSession: (requestData, requestMetadata = new GrpcMetadata()) => {
return this.handler.handle({
type: GrpcCallType.unary,
client: this.client,
path: '/armonik.api.grpc.v1.sessions.Sessions/CancelSession',
requestData,
requestMetadata,
requestClass: armonikApiGrpcV1Sessions007.CancelSessionRequest,
responseClass: armonikApiGrpcV1Sessions007.CancelSessionResponse
});
},
/**
* Unary call: /armonik.api.grpc.v1.sessions.Sessions/CreateSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.CreateSessionReply>>
*/
createSession: (requestData, requestMetadata = new GrpcMetadata()) => {
return this.handler.handle({
type: GrpcCallType.unary,
client: this.client,
path: '/armonik.api.grpc.v1.sessions.Sessions/CreateSession',
requestData,
requestMetadata,
requestClass: armonikApiGrpcV1Sessions007.CreateSessionRequest,
responseClass: armonikApiGrpcV1Sessions007.CreateSessionReply
});
},
/**
* Unary call: /armonik.api.grpc.v1.sessions.Sessions/PauseSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.PauseSessionResponse>>
*/
pauseSession: (requestData, requestMetadata = new GrpcMetadata()) => {
return this.handler.handle({
type: GrpcCallType.unary,
client: this.client,
path: '/armonik.api.grpc.v1.sessions.Sessions/PauseSession',
requestData,
requestMetadata,
requestClass: armonikApiGrpcV1Sessions007.PauseSessionRequest,
responseClass: armonikApiGrpcV1Sessions007.PauseSessionResponse
});
},
/**
* Unary call: /armonik.api.grpc.v1.sessions.Sessions/ResumeSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.ResumeSessionResponse>>
*/
resumeSession: (requestData, requestMetadata = new GrpcMetadata()) => {
return this.handler.handle({
type: GrpcCallType.unary,
client: this.client,
path: '/armonik.api.grpc.v1.sessions.Sessions/ResumeSession',
requestData,
requestMetadata,
requestClass: armonikApiGrpcV1Sessions007.ResumeSessionRequest,
responseClass: armonikApiGrpcV1Sessions007.ResumeSessionResponse
});
},
/**
* Unary call: /armonik.api.grpc.v1.sessions.Sessions/CloseSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.CloseSessionResponse>>
*/
closeSession: (requestData, requestMetadata = new GrpcMetadata()) => {
return this.handler.handle({
type: GrpcCallType.unary,
client: this.client,
path: '/armonik.api.grpc.v1.sessions.Sessions/CloseSession',
requestData,
requestMetadata,
requestClass: armonikApiGrpcV1Sessions007.CloseSessionRequest,
responseClass: armonikApiGrpcV1Sessions007.CloseSessionResponse
});
},
/**
* Unary call: /armonik.api.grpc.v1.sessions.Sessions/PurgeSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.PurgeSessionResponse>>
*/
purgeSession: (requestData, requestMetadata = new GrpcMetadata()) => {
return this.handler.handle({
type: GrpcCallType.unary,
client: this.client,
path: '/armonik.api.grpc.v1.sessions.Sessions/PurgeSession',
requestData,
requestMetadata,
requestClass: armonikApiGrpcV1Sessions007.PurgeSessionRequest,
responseClass: armonikApiGrpcV1Sessions007.PurgeSessionResponse
});
},
/**
* Unary call: /armonik.api.grpc.v1.sessions.Sessions/DeleteSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.DeleteSessionResponse>>
*/
deleteSession: (requestData, requestMetadata = new GrpcMetadata()) => {
return this.handler.handle({
type: GrpcCallType.unary,
client: this.client,
path: '/armonik.api.grpc.v1.sessions.Sessions/DeleteSession',
requestData,
requestMetadata,
requestClass: armonikApiGrpcV1Sessions007.DeleteSessionRequest,
responseClass: armonikApiGrpcV1Sessions007.DeleteSessionResponse
});
},
/**
* Unary call: /armonik.api.grpc.v1.sessions.Sessions/StopSubmission
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.StopSubmissionResponse>>
*/
stopSubmission: (requestData, requestMetadata = new GrpcMetadata()) => {
return this.handler.handle({
type: GrpcCallType.unary,
client: this.client,
path: '/armonik.api.grpc.v1.sessions.Sessions/StopSubmission',
requestData,
requestMetadata,
requestClass: armonikApiGrpcV1Sessions007.StopSubmissionRequest,
responseClass: armonikApiGrpcV1Sessions007.StopSubmissionResponse
});
}
};
this.client = clientFactory.createClient('armonik.api.grpc.v1.sessions.Sessions', settings);
}
/**
* Unary call @/armonik.api.grpc.v1.sessions.Sessions/ListSessions
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<armonikApiGrpcV1Sessions007.ListSessionsResponse>
*/
listSessions(requestData, requestMetadata = new GrpcMetadata()) {
return this.$raw
.listSessions(requestData, requestMetadata)
.pipe(throwStatusErrors(), takeMessages());
}
/**
* Unary call @/armonik.api.grpc.v1.sessions.Sessions/GetSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<armonikApiGrpcV1Sessions007.GetSessionResponse>
*/
getSession(requestData, requestMetadata = new GrpcMetadata()) {
return this.$raw
.getSession(requestData, requestMetadata)
.pipe(throwStatusErrors(), takeMessages());
}
/**
* Unary call @/armonik.api.grpc.v1.sessions.Sessions/CancelSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<armonikApiGrpcV1Sessions007.CancelSessionResponse>
*/
cancelSession(requestData, requestMetadata = new GrpcMetadata()) {
return this.$raw
.cancelSession(requestData, requestMetadata)
.pipe(throwStatusErrors(), takeMessages());
}
/**
* Unary call @/armonik.api.grpc.v1.sessions.Sessions/CreateSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<armonikApiGrpcV1Sessions007.CreateSessionReply>
*/
createSession(requestData, requestMetadata = new GrpcMetadata()) {
return this.$raw
.createSession(requestData, requestMetadata)
.pipe(throwStatusErrors(), takeMessages());
}
/**
* Unary call @/armonik.api.grpc.v1.sessions.Sessions/PauseSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<armonikApiGrpcV1Sessions007.PauseSessionResponse>
*/
pauseSession(requestData, requestMetadata = new GrpcMetadata()) {
return this.$raw
.pauseSession(requestData, requestMetadata)
.pipe(throwStatusErrors(), takeMessages());
}
/**
* Unary call @/armonik.api.grpc.v1.sessions.Sessions/ResumeSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<armonikApiGrpcV1Sessions007.ResumeSessionResponse>
*/
resumeSession(requestData, requestMetadata = new GrpcMetadata()) {
return this.$raw
.resumeSession(requestData, requestMetadata)
.pipe(throwStatusErrors(), takeMessages());
}
/**
* Unary call @/armonik.api.grpc.v1.sessions.Sessions/CloseSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<armonikApiGrpcV1Sessions007.CloseSessionResponse>
*/
closeSession(requestData, requestMetadata = new GrpcMetadata()) {
return this.$raw
.closeSession(requestData, requestMetadata)
.pipe(throwStatusErrors(), takeMessages());
}
/**
* Unary call @/armonik.api.grpc.v1.sessions.Sessions/PurgeSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<armonikApiGrpcV1Sessions007.PurgeSessionResponse>
*/
purgeSession(requestData, requestMetadata = new GrpcMetadata()) {
return this.$raw
.purgeSession(requestData, requestMetadata)
.pipe(throwStatusErrors(), takeMessages());
}
/**
* Unary call @/armonik.api.grpc.v1.sessions.Sessions/DeleteSession
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<armonikApiGrpcV1Sessions007.DeleteSessionResponse>
*/
deleteSession(requestData, requestMetadata = new GrpcMetadata()) {
return this.$raw
.deleteSession(requestData, requestMetadata)
.pipe(throwStatusErrors(), takeMessages());
}
/**
* Unary call @/armonik.api.grpc.v1.sessions.Sessions/StopSubmission
*
* @param requestMessage Request message
* @param requestMetadata Request metadata
* @returns Observable<armonikApiGrpcV1Sessions007.StopSubmissionResponse>
*/
stopSubmission(requestData, requestMetadata = new GrpcMetadata()) {
return this.$raw
.stopSubmission(requestData, requestMetadata)
.pipe(throwStatusErrors(), takeMessages());
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: SessionsClient, deps: [{ token: GRPC_SESSIONS_CLIENT_SETTINGS, optional: true }, { token: GRPC_CLIENT_FACTORY }, { token: i1.GrpcHandler }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: SessionsClient, providedIn: 'any' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: SessionsClient, decorators: [{
type: Injectable,
args: [{ providedIn: 'any' }]
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [GRPC_SESSIONS_CLIENT_SETTINGS]
}] }, { type: undefined, decorators: [{
type: Inject,
args: [GRPC_CLIENT_FACTORY]
}] }, { type: i1.GrpcHandler }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbnMtc2VydmljZS5wYnNjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5lb2NvbnN1bHRpbmdmci9hcm1vbmlrLmFwaS5hbmd1bGFyL3NyYy9saWIvZ2VuZXJhdGVkL3Nlc3Npb25zLXNlcnZpY2UucGJzYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLGNBQWM7QUFDZCxFQUFFO0FBQ0YsMkJBQTJCO0FBQzNCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUNMLFlBQVksRUFJWixZQUFZLEVBQ2IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsbUJBQW1CLEVBRW5CLFlBQVksRUFDWixpQkFBaUIsRUFDbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQVV4QixPQUFPLEtBQUssMkJBQTJCLE1BQU0sc0JBQXNCLENBQUM7QUFDcEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUMxRTs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBaVB6QixZQUNxRCxRQUFhLEVBQ25DLGFBQXFDLEVBQzFELE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFqUDlCOzs7O1dBSUc7UUFDSCxTQUFJLEdBQUc7WUFDTDs7Ozs7O2VBTUc7WUFDSCxZQUFZLEVBQUUsQ0FDWixXQUE0RCxFQUM1RCxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsRUFHcEMsRUFBRTtnQkFDRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUN6QixJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUs7b0JBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsSUFBSSxFQUFFLHFEQUFxRDtvQkFDM0QsV0FB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QUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxDQUNWLFdBQTRELEVBQzVELGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsWUFBWSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDMUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsYUFBYSxDQUNYLFdBQTZELEVBQzdELGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsYUFBYSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDM0MsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsY0FBYyxDQUNaLFdBQThELEVBQzlELGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsY0FBYyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDNUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzhHQTFaVSxjQUFjLGtCQWtQSCw2QkFBNkIsNkJBQ3pDLG1CQUFtQjtrSEFuUGxCLGNBQWMsY0FERCxLQUFLOzsyRkFDbEIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7OzBCQW1QNUIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkI7OzBCQUNoRCxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gQHRzLW5vY2hlY2tcbi8vXG4vLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEVcbi8vIERPIE5PVCBNT0RJRlkgSVQhIFlPVVIgQ0hBTkdFUyBXSUxMIEJFIExPU1RcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEdycGNDYWxsVHlwZSxcbiAgR3JwY0NsaWVudCxcbiAgR3JwY0NsaWVudEZhY3RvcnksXG4gIEdycGNFdmVudCxcbiAgR3JwY01ldGFkYXRhXG59IGZyb20gJ0BuZ3gtZ3JwYy9jb21tb24nO1xuaW1wb3J0IHtcbiAgR1JQQ19DTElFTlRfRkFDVE9SWSxcbiAgR3JwY0hhbmRsZXIsXG4gIHRha2VNZXNzYWdlcyxcbiAgdGhyb3dTdGF0dXNFcnJvcnNcbn0gZnJvbSAnQG5neC1ncnBjL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgdGhpc1Byb3RvIGZyb20gJy4vc2Vzc2lvbnMtc2VydmljZS5wYic7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwMCBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwMSBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxMDAyIGZyb20gJy4vb2JqZWN0cy5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbl9zdGF0dXMwMDMgZnJvbSAnLi9zZXNzaW9uLXN0YXR1cy5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDQgZnJvbSAnLi9zZXNzaW9ucy1maWVsZHMucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA1IGZyb20gJy4vc2Vzc2lvbnMtZmlsdGVycy5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxU29ydF9kaXJlY3Rpb24wMDYgZnJvbSAnLi9zb3J0LWRpcmVjdGlvbi5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcgZnJvbSAnLi9zZXNzaW9ucy1jb21tb24ucGInO1xuaW1wb3J0IHsgR1JQQ19TRVNTSU9OU19DTElFTlRfU0VUVElOR1MgfSBmcm9tICcuL3Nlc3Npb25zLXNlcnZpY2UucGJjb25mJztcbi8qKlxuICogU2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gZm9yIGFybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnNcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAnYW55JyB9KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25zQ2xpZW50IHtcbiAgcHJpdmF0ZSBjbGllbnQ6IEdycGNDbGllbnQ8YW55PjtcblxuICAvKipcbiAgICogUmF3IFJQQyBpbXBsZW1lbnRhdGlvbiBmb3IgZWFjaCBzZXJ2aWNlIGNsaWVudCBtZXRob2QuXG4gICAqIFRoZSByYXcgbWV0aG9kcyBwcm92aWRlIG1vcmUgY29udHJvbCBvbiB0aGUgaW5jb21pbmcgZGF0YSBhbmQgZXZlbnRzLiBFLmcuIHRoZXkgY2FuIGJlIHVzZWZ1bCB0byByZWFkIHN0YXR1cyBgT0tgIG1ldGFkYXRhLlxuICAgKiBBdHRlbnRpb246IHRoZXNlIG1ldGhvZHMgZG8gbm90IHRocm93IGVycm9ycyB3aGVuIG5vbi16ZXJvIHN0YXR1cyBjb2RlcyBhcmUgcmVjZWl2ZWQuXG4gICAqL1xuICAkcmF3ID0ge1xuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL0xpc3RTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5MaXN0U2Vzc2lvbnNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3Lkxpc3RTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5MaXN0U2Vzc2lvbnNSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvTGlzdFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuTGlzdFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3Lkxpc3RTZXNzaW9uc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL0dldFNlc3Npb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuR2V0U2Vzc2lvblJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBnZXRTZXNzaW9uOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkdldFNlc3Npb25SZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuR2V0U2Vzc2lvblJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9HZXRTZXNzaW9uJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuR2V0U2Vzc2lvblJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5HZXRTZXNzaW9uUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ2FuY2VsU2Vzc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DYW5jZWxTZXNzaW9uUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGNhbmNlbFNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2FuY2VsU2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DYW5jZWxTZXNzaW9uUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL0NhbmNlbFNlc3Npb24nLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DYW5jZWxTZXNzaW9uUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNhbmNlbFNlc3Npb25SZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9DcmVhdGVTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNyZWF0ZVNlc3Npb25SZXBseT4+XG4gICAgICovXG4gICAgY3JlYXRlU2Vzc2lvbjogKFxuICAgICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DcmVhdGVTZXNzaW9uUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNyZWF0ZVNlc3Npb25SZXBseT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ3JlYXRlU2Vzc2lvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNyZWF0ZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ3JlYXRlU2Vzc2lvblJlcGx5XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL1BhdXNlU2Vzc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5QYXVzZVNlc3Npb25SZXNwb25zZT4+XG4gICAgICovXG4gICAgcGF1c2VTZXNzaW9uOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlBhdXNlU2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5QYXVzZVNlc3Npb25SZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvUGF1c2VTZXNzaW9uJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUGF1c2VTZXNzaW9uUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlBhdXNlU2Vzc2lvblJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL1Jlc3VtZVNlc3Npb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUmVzdW1lU2Vzc2lvblJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICByZXN1bWVTZXNzaW9uOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlJlc3VtZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUmVzdW1lU2Vzc2lvblJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9SZXN1bWVTZXNzaW9uJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUmVzdW1lU2Vzc2lvblJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5SZXN1bWVTZXNzaW9uUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ2xvc2VTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNsb3NlU2Vzc2lvblJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBjbG9zZVNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2xvc2VTZXNzaW9uUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNsb3NlU2Vzc2lvblJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9DbG9zZVNlc3Npb24nLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DbG9zZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2xvc2VTZXNzaW9uUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvUHVyZ2VTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlB1cmdlU2Vzc2lvblJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBwdXJnZVNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUHVyZ2VTZXNzaW9uUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlB1cmdlU2Vzc2lvblJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9QdXJnZVNlc3Npb24nLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5QdXJnZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUHVyZ2VTZXNzaW9uUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvRGVsZXRlU2Vzc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5EZWxldGVTZXNzaW9uUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGRlbGV0ZVNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuRGVsZXRlU2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5EZWxldGVTZXNzaW9uUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL0RlbGV0ZVNlc3Npb24nLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5EZWxldGVTZXNzaW9uUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkRlbGV0ZVNlc3Npb25SZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9TdG9wU3VibWlzc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5TdG9wU3VibWlzc2lvblJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBzdG9wU3VibWlzc2lvbjogKFxuICAgICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5TdG9wU3VibWlzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5TdG9wU3VibWlzc2lvblJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9TdG9wU3VibWlzc2lvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlN0b3BTdWJtaXNzaW9uUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlN0b3BTdWJtaXNzaW9uUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEdSUENfU0VTU0lPTlNfQ0xJRU5UX1NFVFRJTkdTKSBzZXR0aW5nczogYW55LFxuICAgIEBJbmplY3QoR1JQQ19DTElFTlRfRkFDVE9SWSkgY2xpZW50RmFjdG9yeTogR3JwY0NsaWVudEZhY3Rvcnk8YW55PixcbiAgICBwcml2YXRlIGhhbmRsZXI6IEdycGNIYW5kbGVyXG4gICkge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQoXG4gICAgICAnYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucycsXG4gICAgICBzZXR0aW5nc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvTGlzdFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3Lkxpc3RTZXNzaW9uc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuTGlzdFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuTGlzdFNlc3Npb25zUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdFNlc3Npb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvR2V0U2Vzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5HZXRTZXNzaW9uUmVzcG9uc2U+XG4gICAqL1xuICBnZXRTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuR2V0U2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkdldFNlc3Npb25SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5nZXRTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ2FuY2VsU2Vzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DYW5jZWxTZXNzaW9uUmVzcG9uc2U+XG4gICAqL1xuICBjYW5jZWxTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2FuY2VsU2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNhbmNlbFNlc3Npb25SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jYW5jZWxTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ3JlYXRlU2Vzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DcmVhdGVTZXNzaW9uUmVwbHk+XG4gICAqL1xuICBjcmVhdGVTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ3JlYXRlU2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNyZWF0ZVNlc3Npb25SZXBseT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvUGF1c2VTZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlBhdXNlU2Vzc2lvblJlc3BvbnNlPlxuICAgKi9cbiAgcGF1c2VTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUGF1c2VTZXNzaW9uUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUGF1c2VTZXNzaW9uUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAucGF1c2VTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvUmVzdW1lU2Vzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5SZXN1bWVTZXNzaW9uUmVzcG9uc2U+XG4gICAqL1xuICByZXN1bWVTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUmVzdW1lU2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlJlc3VtZVNlc3Npb25SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5yZXN1bWVTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ2xvc2VTZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNsb3NlU2Vzc2lvblJlc3BvbnNlPlxuICAgKi9cbiAgY2xvc2VTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2xvc2VTZXNzaW9uUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2xvc2VTZXNzaW9uUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuY2xvc2VTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvUHVyZ2VTZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlB1cmdlU2Vzc2lvblJlc3BvbnNlPlxuICAgKi9cbiAgcHVyZ2VTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUHVyZ2VTZXNzaW9uUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUHVyZ2VTZXNzaW9uUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAucHVyZ2VTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvRGVsZXRlU2Vzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5EZWxldGVTZXNzaW9uUmVzcG9uc2U+XG4gICAqL1xuICBkZWxldGVTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuRGVsZXRlU2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkRlbGV0ZVNlc3Npb25SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5kZWxldGVTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvU3RvcFN1Ym1pc3Npb25cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuU3RvcFN1Ym1pc3Npb25SZXNwb25zZT5cbiAgICovXG4gIHN0b3BTdWJtaXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuU3RvcFN1Ym1pc3Npb25SZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5TdG9wU3VibWlzc2lvblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLnN0b3BTdWJtaXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cbn1cbiJdfQ==