dictrigyn-video-player
Version:
Contains Video player library components powered by angular. These components are designed to be used in sunbird consumption platforms *(mobile app, web portal, offline desktop app)* to drive reusability, maintainability hence reducing the redundant devel
269 lines • 22.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/sunbird-video-player.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import * as _ from 'lodash-es';
import { UtilService } from './services/util.service';
import { CsTelemetryModule } from '@project-sunbird/client-services/telemetry';
import * as i0 from "@angular/core";
import * as i1 from "./services/util.service";
var SunbirdVideoPlayerService = /** @class */ (function () {
function SunbirdVideoPlayerService(utilService) {
this.utilService = utilService;
this.contentSessionId = this.utilService.uniqueId();
}
/**
* @param {?} __0
* @return {?}
*/
SunbirdVideoPlayerService.prototype.initialize = /**
* @param {?} __0
* @return {?}
*/
function (_a) {
var context = _a.context, config = _a.config, metadata = _a.metadata;
this.context = context;
this.config = config;
this.playSessionId = this.utilService.uniqueId();
if (!CsTelemetryModule.instance.isInitialised) {
CsTelemetryModule.instance.init({});
CsTelemetryModule.instance.telemetryService.initTelemetry({
config: {
pdata: context.pdata,
env: 'contentplayer',
channel: context.channel,
did: context.did,
authtoken: context.authToken || '',
uid: context.uid || '',
sid: context.sid,
batchsize: 20,
mode: context.mode,
host: context.host || '',
endpoint: context.endpoint || '/data/v3/telemetry',
tags: context.tags,
cdata: [{ id: this.contentSessionId, type: 'ContentSession' },
{ id: this.playSessionId, type: 'PlaySession' },
{ id: '2.0', type: 'PlayerVersion' }]
},
userOrgDetails: {}
});
}
this.telemetryObject = {
id: metadata.identifier,
type: 'Content',
ver: metadata.pkgVersion + '',
rollup: context.objectRollup || {}
};
};
/**
* @param {?} duration
* @return {?}
*/
SunbirdVideoPlayerService.prototype.start = /**
* @param {?} duration
* @return {?}
*/
function (duration) {
CsTelemetryModule.instance.telemetryService.raiseStartTelemetry({
options: this.getEventOptions(),
edata: { type: 'content', mode: 'play', pageid: '', duration: Number((duration / 1e3).toFixed(2)) }
});
};
/**
* @param {?} duration
* @param {?} totallength
* @param {?} currentlength
* @param {?} endpageseen
* @param {?} totalseekedlength
* @param {?} visitedlength
* @param {?} score
* @return {?}
*/
SunbirdVideoPlayerService.prototype.end = /**
* @param {?} duration
* @param {?} totallength
* @param {?} currentlength
* @param {?} endpageseen
* @param {?} totalseekedlength
* @param {?} visitedlength
* @param {?} score
* @return {?}
*/
function (duration, totallength, currentlength, endpageseen, totalseekedlength, visitedlength, score) {
/** @type {?} */
var durationSec = Number((duration / 1e3).toFixed(2));
CsTelemetryModule.instance.telemetryService.raiseEndTelemetry({
edata: {
type: 'content',
mode: 'play',
pageid: 'sunbird-player-Endpage',
summary: [
{
progress: Number(((currentlength / totallength) * 100).toFixed(0))
},
{
totallength: totallength
},
{
visitedlength: visitedlength
},
{
visitedcontentend: (totallength === currentlength)
},
{
totalseekedlength: totalseekedlength
},
{
endpageseen: endpageseen
},
{
score: score
}
],
duration: durationSec
},
options: this.getEventOptions()
});
};
/**
* @param {?} id
* @param {?} currentPage
* @param {?=} extraValues
* @return {?}
*/
SunbirdVideoPlayerService.prototype.interact = /**
* @param {?} id
* @param {?} currentPage
* @param {?=} extraValues
* @return {?}
*/
function (id, currentPage, extraValues) {
CsTelemetryModule.instance.telemetryService.raiseInteractTelemetry({
options: this.getEventOptions(),
edata: { type: 'TOUCH', subtype: '', id: id, pageid: currentPage + '', extra: extraValues }
});
};
/**
* @param {?} data
* @return {?}
*/
SunbirdVideoPlayerService.prototype.heartBeat = /**
* @param {?} data
* @return {?}
*/
function (data) {
CsTelemetryModule.instance.playerTelemetryService.onHeartBeatEvent(data, {});
};
/**
* @param {?} currentPage
* @param {?=} cdata
* @return {?}
*/
SunbirdVideoPlayerService.prototype.impression = /**
* @param {?} currentPage
* @param {?=} cdata
* @return {?}
*/
function (currentPage, cdata) {
if (cdata === void 0) { cdata = {}; }
/** @type {?} */
var impressionEvent = {
options: this.getEventOptions(),
edata: { type: 'workflow', subtype: '', pageid: currentPage + '', uri: '' }
};
if (!_.isEmpty(cdata)) {
impressionEvent.options.context.cdata.push(cdata);
}
CsTelemetryModule.instance.telemetryService.raiseImpressionTelemetry(impressionEvent);
};
/**
* @param {?} errorCode
* @param {?} errorType
* @param {?=} stacktrace
* @return {?}
*/
SunbirdVideoPlayerService.prototype.error = /**
* @param {?} errorCode
* @param {?} errorType
* @param {?=} stacktrace
* @return {?}
*/
function (errorCode, errorType, stacktrace) {
CsTelemetryModule.instance.telemetryService.raiseErrorTelemetry({
options: this.getEventOptions(),
edata: {
err: errorCode,
errtype: errorType,
stacktrace: (stacktrace && stacktrace.toString()) || ''
}
});
};
/**
* @private
* @return {?}
*/
SunbirdVideoPlayerService.prototype.getEventOptions = /**
* @private
* @return {?}
*/
function () {
return ({
object: this.telemetryObject,
context: {
channel: this.context.channel,
pdata: this.context.pdata,
env: 'contentplayer',
sid: this.context.sid,
uid: this.context.uid,
cdata: [{ id: this.contentSessionId, type: 'ContentSession' },
{ id: this.playSessionId, type: 'PlaySession' },
{ id: '2.0', type: 'PlayerVersion' }],
rollup: this.context.contextRollup || {}
}
});
};
SunbirdVideoPlayerService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
SunbirdVideoPlayerService.ctorParameters = function () { return [
{ type: UtilService }
]; };
/** @nocollapse */ SunbirdVideoPlayerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SunbirdVideoPlayerService_Factory() { return new SunbirdVideoPlayerService(i0.ɵɵinject(i1.UtilService)); }, token: SunbirdVideoPlayerService, providedIn: "root" });
return SunbirdVideoPlayerService;
}());
export { SunbirdVideoPlayerService };
if (false) {
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.contentSessionId;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.playSessionId;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.telemetryObject;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.context;
/** @type {?} */
SunbirdVideoPlayerService.prototype.config;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.utilService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VuYmlyZC12aWRlby1wbGF5ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2RpY3RyaWd5bi12aWRlby1wbGF5ZXIvIiwic291cmNlcyI6WyJsaWIvc3VuYmlyZC12aWRlby1wbGF5ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxXQUFXLENBQUM7QUFFL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7QUFFL0U7SUFXRSxtQ0FBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEQsQ0FBQzs7Ozs7SUFFTSw4Q0FBVTs7OztJQUFqQixVQUFrQixFQUEyQztZQUF6QyxvQkFBTyxFQUFFLGtCQUFNLEVBQUUsc0JBQVE7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO1lBQzdDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FDdkQ7Z0JBQ0UsTUFBTSxFQUFFO29CQUNOLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztvQkFDcEIsR0FBRyxFQUFFLGVBQWU7b0JBQ3BCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztvQkFDeEIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO29CQUNoQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFO29CQUNsQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFO29CQUN0QixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7b0JBQ2hCLFNBQVMsRUFBRSxFQUFFO29CQUNiLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRTtvQkFDeEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksb0JBQW9CO29CQUNsRCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7d0JBQzdELEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTt3QkFDL0MsRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFHLElBQUksRUFBRSxlQUFlLEVBQUMsQ0FBQztpQkFDckM7Z0JBQ0QsY0FBYyxFQUFFLEVBQUU7YUFDbkIsQ0FDRixDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHO1lBQ3JCLEVBQUUsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUN2QixJQUFJLEVBQUUsU0FBUztZQUNmLEdBQUcsRUFBRSxRQUFRLENBQUMsVUFBVSxHQUFHLEVBQUU7WUFDN0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRTtTQUNuQyxDQUFDO0lBQ0osQ0FBQzs7Ozs7SUFHTSx5Q0FBSzs7OztJQUFaLFVBQWEsUUFBUTtRQUNuQixpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQzdEO1lBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDL0IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNwRyxDQUNGLENBQUM7SUFFSixDQUFDOzs7Ozs7Ozs7OztJQUVNLHVDQUFHOzs7Ozs7Ozs7O0lBQVYsVUFBVyxRQUFRLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLEtBQUs7O1lBQzdGLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQztZQUM1RCxLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLE1BQU07Z0JBQ1osTUFBTSxFQUFFLHdCQUF3QjtnQkFDaEMsT0FBTyxFQUFFO29CQUNQO3dCQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ25FO29CQUNEO3dCQUNFLFdBQVcsYUFBQTtxQkFDWjtvQkFDRDt3QkFDRSxhQUFhLGVBQUE7cUJBQ2Q7b0JBQ0Q7d0JBQ0UsaUJBQWlCLEVBQUUsQ0FBQyxXQUFXLEtBQUssYUFBYSxDQUFDO3FCQUNuRDtvQkFDRDt3QkFDRSxpQkFBaUIsbUJBQUE7cUJBQ2xCO29CQUNEO3dCQUNFLFdBQVcsYUFBQTtxQkFDWjtvQkFDRDt3QkFDRSxLQUFLLE9BQUE7cUJBQ047aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFLFdBQVc7YUFDdEI7WUFDRCxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtTQUNoQyxDQUFDLENBQUM7SUFFTCxDQUFDOzs7Ozs7O0lBRU0sNENBQVE7Ozs7OztJQUFmLFVBQWdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBWTtRQUMzQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDakUsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDL0IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBQSxFQUFFLE1BQU0sRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFHLEtBQUssRUFBRSxXQUFXLEVBQUU7U0FDekYsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFTSw2Q0FBUzs7OztJQUFoQixVQUFpQixJQUFJO1FBQ25CLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQzs7Ozs7O0lBRU0sOENBQVU7Ozs7O0lBQWpCLFVBQWtCLFdBQVcsRUFBRSxLQUFlO1FBQWYsc0JBQUEsRUFBQSxVQUFlOztZQUN0QyxlQUFlLEdBQUc7WUFDdEIsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDL0IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7U0FDNUU7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyQixlQUFlLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7Ozs7Ozs7SUFFTSx5Q0FBSzs7Ozs7O0lBQVosVUFBYSxTQUFpQixFQUFHLFNBQWlCLEVBQUksVUFBa0I7UUFDdEUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDO1lBQzlELE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQy9CLEtBQUssRUFBRTtnQkFDTCxHQUFHLEVBQUUsU0FBUztnQkFDZCxPQUFPLEVBQUUsU0FBUztnQkFDbEIsVUFBVSxFQUFFLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUU7YUFDeEQ7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQUVPLG1EQUFlOzs7O0lBQXZCO1FBQ0UsT0FBTyxDQUFDO1lBQ04sTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQzVCLE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO2dCQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUN6QixHQUFHLEVBQUUsZUFBZTtnQkFDcEIsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRztnQkFDckIsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRztnQkFDckIsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQkFDN0QsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO29CQUMvQyxFQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUcsSUFBSSxFQUFFLGVBQWUsRUFBQyxDQUFDO2dCQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksRUFBRTthQUN6QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O2dCQXRKRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dCQUxRLFdBQVc7OztvQ0FIcEI7Q0E2SkMsQUF2SkQsSUF1SkM7U0FwSlkseUJBQXlCOzs7Ozs7SUFFcEMscURBQWlDOzs7OztJQUNqQyxrREFBOEI7Ozs7O0lBQzlCLG9EQUE2Qjs7Ozs7SUFDN0IsNENBQWdCOztJQUNoQiwyQ0FBYzs7Ozs7SUFFRixnREFBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgUGxheWVyQ29uZmlnIH0gZnJvbSAnLi9wbGF5ZXJJbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IENzVGVsZW1ldHJ5TW9kdWxlIH0gZnJvbSAnQHByb2plY3Qtc3VuYmlyZC9jbGllbnQtc2VydmljZXMvdGVsZW1ldHJ5JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN1bmJpcmRWaWRlb1BsYXllclNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIGNvbnRlbnRTZXNzaW9uSWQ6IHN0cmluZztcclxuICBwcml2YXRlIHBsYXlTZXNzaW9uSWQ6IHN0cmluZztcclxuICBwcml2YXRlIHRlbGVtZXRyeU9iamVjdDogYW55O1xyXG4gIHByaXZhdGUgY29udGV4dDtcclxuICBwdWJsaWMgY29uZmlnO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHV0aWxTZXJ2aWNlOiBVdGlsU2VydmljZSkge1xyXG4gICAgdGhpcy5jb250ZW50U2Vzc2lvbklkID0gdGhpcy51dGlsU2VydmljZS51bmlxdWVJZCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluaXRpYWxpemUoeyBjb250ZXh0LCBjb25maWcsIG1ldGFkYXRhIH06IFBsYXllckNvbmZpZykge1xyXG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcclxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xyXG4gICAgdGhpcy5wbGF5U2Vzc2lvbklkID0gdGhpcy51dGlsU2VydmljZS51bmlxdWVJZCgpO1xyXG5cclxuICAgIGlmICghQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UuaXNJbml0aWFsaXNlZCkge1xyXG4gICAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS5pbml0KHt9KTtcclxuICAgICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5pbml0VGVsZW1ldHJ5KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgICBwZGF0YTogY29udGV4dC5wZGF0YSxcclxuICAgICAgICAgICAgZW52OiAnY29udGVudHBsYXllcicsXHJcbiAgICAgICAgICAgIGNoYW5uZWw6IGNvbnRleHQuY2hhbm5lbCxcclxuICAgICAgICAgICAgZGlkOiBjb250ZXh0LmRpZCxcclxuICAgICAgICAgICAgYXV0aHRva2VuOiBjb250ZXh0LmF1dGhUb2tlbiB8fCAnJyxcclxuICAgICAgICAgICAgdWlkOiBjb250ZXh0LnVpZCB8fCAnJyxcclxuICAgICAgICAgICAgc2lkOiBjb250ZXh0LnNpZCxcclxuICAgICAgICAgICAgYmF0Y2hzaXplOiAyMCxcclxuICAgICAgICAgICAgbW9kZTogY29udGV4dC5tb2RlLFxyXG4gICAgICAgICAgICBob3N0OiBjb250ZXh0Lmhvc3QgfHwgJycsXHJcbiAgICAgICAgICAgIGVuZHBvaW50OiBjb250ZXh0LmVuZHBvaW50IHx8ICcvZGF0YS92My90ZWxlbWV0cnknLFxyXG4gICAgICAgICAgICB0YWdzOiBjb250ZXh0LnRhZ3MsXHJcbiAgICAgICAgICAgIGNkYXRhOiBbeyBpZDogdGhpcy5jb250ZW50U2Vzc2lvbklkLCB0eXBlOiAnQ29udGVudFNlc3Npb24nIH0sXHJcbiAgICAgICAgICAgIHsgaWQ6IHRoaXMucGxheVNlc3Npb25JZCwgdHlwZTogJ1BsYXlTZXNzaW9uJyB9LFxyXG4gICAgICAgICAgICB7aWQ6ICcyLjAnICwgdHlwZTogJ1BsYXllclZlcnNpb24nfV1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB1c2VyT3JnRGV0YWlsczoge31cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50ZWxlbWV0cnlPYmplY3QgPSB7XHJcbiAgICAgIGlkOiBtZXRhZGF0YS5pZGVudGlmaWVyLFxyXG4gICAgICB0eXBlOiAnQ29udGVudCcsXHJcbiAgICAgIHZlcjogbWV0YWRhdGEucGtnVmVyc2lvbiArICcnLFxyXG4gICAgICByb2xsdXA6IGNvbnRleHQub2JqZWN0Um9sbHVwIHx8IHt9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBzdGFydChkdXJhdGlvbikge1xyXG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZVN0YXJ0VGVsZW1ldHJ5KFxyXG4gICAgICB7XHJcbiAgICAgICAgb3B0aW9uczogdGhpcy5nZXRFdmVudE9wdGlvbnMoKSxcclxuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY29udGVudCcsIG1vZGU6ICdwbGF5JywgcGFnZWlkOiAnJywgZHVyYXRpb246IE51bWJlcigoZHVyYXRpb24gLyAxZTMpLnRvRml4ZWQoMikpIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW5kKGR1cmF0aW9uLCB0b3RhbGxlbmd0aCwgY3VycmVudGxlbmd0aCwgZW5kcGFnZXNlZW4sIHRvdGFsc2Vla2VkbGVuZ3RoLCB2aXNpdGVkbGVuZ3RoLCBzY29yZSkge1xyXG4gICAgY29uc3QgZHVyYXRpb25TZWMgPSBOdW1iZXIoKGR1cmF0aW9uIC8gMWUzKS50b0ZpeGVkKDIpKTtcclxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VFbmRUZWxlbWV0cnkoe1xyXG4gICAgICBlZGF0YToge1xyXG4gICAgICAgIHR5cGU6ICdjb250ZW50JyxcclxuICAgICAgICBtb2RlOiAncGxheScsXHJcbiAgICAgICAgcGFnZWlkOiAnc3VuYmlyZC1wbGF5ZXItRW5kcGFnZScsXHJcbiAgICAgICAgc3VtbWFyeTogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwcm9ncmVzczogTnVtYmVyKCgoY3VycmVudGxlbmd0aCAvIHRvdGFsbGVuZ3RoKSAqIDEwMCkudG9GaXhlZCgwKSlcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRvdGFsbGVuZ3RoXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2aXNpdGVkbGVuZ3RoXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2aXNpdGVkY29udGVudGVuZDogKHRvdGFsbGVuZ3RoID09PSBjdXJyZW50bGVuZ3RoKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdG90YWxzZWVrZWRsZW5ndGhcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGVuZHBhZ2VzZWVuXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBzY29yZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uU2VjXHJcbiAgICAgIH0sXHJcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKClcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbnRlcmFjdChpZCwgY3VycmVudFBhZ2UsIGV4dHJhVmFsdWVzPykge1xyXG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KHtcclxuICAgICAgb3B0aW9uczogdGhpcy5nZXRFdmVudE9wdGlvbnMoKSxcclxuICAgICAgZWRhdGE6IHsgdHlwZTogJ1RPVUNIJywgc3VidHlwZTogJycsIGlkLCBwYWdlaWQ6IGN1cnJlbnRQYWdlICsgJycgLCBleHRyYTogZXh0cmFWYWx1ZXMgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGVhcnRCZWF0KGRhdGEpIHtcclxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnBsYXllclRlbGVtZXRyeVNlcnZpY2Uub25IZWFydEJlYXRFdmVudChkYXRhLCB7fSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW1wcmVzc2lvbihjdXJyZW50UGFnZSwgY2RhdGE6IGFueSA9IHt9KSB7XHJcbiAgICBjb25zdCBpbXByZXNzaW9uRXZlbnQgPSB7XHJcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXHJcbiAgICAgIGVkYXRhOiB7IHR5cGU6ICd3b3JrZmxvdycsIHN1YnR5cGU6ICcnLCBwYWdlaWQ6IGN1cnJlbnRQYWdlICsgJycsIHVyaTogJycgfVxyXG4gICAgfTtcclxuICAgIGlmICghXy5pc0VtcHR5KGNkYXRhKSkge1xyXG4gICAgICBpbXByZXNzaW9uRXZlbnQub3B0aW9ucy5jb250ZXh0LmNkYXRhLnB1c2goY2RhdGEpO1xyXG4gICAgfVxyXG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUltcHJlc3Npb25UZWxlbWV0cnkoaW1wcmVzc2lvbkV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlcnJvcihlcnJvckNvZGU6IHN0cmluZyAsIGVycm9yVHlwZTogc3RyaW5nICwgIHN0YWNrdHJhY2U/OiBFcnJvcikge1xyXG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUVycm9yVGVsZW1ldHJ5KHtcclxuICAgICAgb3B0aW9uczogdGhpcy5nZXRFdmVudE9wdGlvbnMoKSxcclxuICAgICAgZWRhdGE6IHtcclxuICAgICAgICBlcnI6IGVycm9yQ29kZSxcclxuICAgICAgICBlcnJ0eXBlOiBlcnJvclR5cGUsXHJcbiAgICAgICAgc3RhY2t0cmFjZTogKHN0YWNrdHJhY2UgJiYgc3RhY2t0cmFjZS50b1N0cmluZygpKSB8fCAnJ1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RXZlbnRPcHRpb25zKCkge1xyXG4gICAgcmV0dXJuICh7XHJcbiAgICAgIG9iamVjdDogdGhpcy50ZWxlbWV0cnlPYmplY3QsXHJcbiAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICBjaGFubmVsOiB0aGlzLmNvbnRleHQuY2hhbm5lbCxcclxuICAgICAgICBwZGF0YTogdGhpcy5jb250ZXh0LnBkYXRhLFxyXG4gICAgICAgIGVudjogJ2NvbnRlbnRwbGF5ZXInLFxyXG4gICAgICAgIHNpZDogdGhpcy5jb250ZXh0LnNpZCxcclxuICAgICAgICB1aWQ6IHRoaXMuY29udGV4dC51aWQsXHJcbiAgICAgICAgY2RhdGE6IFt7IGlkOiB0aGlzLmNvbnRlbnRTZXNzaW9uSWQsIHR5cGU6ICdDb250ZW50U2Vzc2lvbicgfSxcclxuICAgICAgICB7IGlkOiB0aGlzLnBsYXlTZXNzaW9uSWQsIHR5cGU6ICdQbGF5U2Vzc2lvbicgfSxcclxuICAgICAgICB7aWQ6ICcyLjAnICwgdHlwZTogJ1BsYXllclZlcnNpb24nfV0sXHJcbiAgICAgICAgcm9sbHVwOiB0aGlzLmNvbnRleHQuY29udGV4dFJvbGx1cCB8fCB7fVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19