UNPKG

acr-assist-simulator-module

Version:

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.7.4.

209 lines (208 loc) 21.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Injectable } from '@angular/core'; import { ArrayCheckerService } from './array-checker.service'; import { DecisionPoint } from '../../../core/models/decisionpoint.model'; import { Branch } from '../../../core//models/branch.model'; import { EndPointRef } from '../../../core/models/endpointref.model'; import { DataElementRef } from '../../../core/models/dataelementref.model'; import { NotRelevantDataElements } from '../../../core/models/notrelevantdataelements.model'; import { ConditionsCreationService } from './conditions-creation.service'; import { ComputedValueCreationService } from './computed-value-creation.service'; var DecisionPointsCreationService = /** @class */ (function () { function DecisionPointsCreationService(arrayCheckerService, conditionsCreationService, computedValueCreationService) { this.arrayCheckerService = arrayCheckerService; this.conditionsCreationService = conditionsCreationService; this.computedValueCreationService = computedValueCreationService; } /** * @param {?} dataElementRefJSON * @return {?} */ DecisionPointsCreationService.prototype.createRelevantDataElementReferences = /** * @param {?} dataElementRefJSON * @return {?} */ function (dataElementRefJSON) { var /** @type {?} */ dataElementRef = new DataElementRef(); dataElementRef.dataElementId = dataElementRefJSON.Attr.DataElementId; return dataElementRef; }; /** * @param {?} branchJSON * @return {?} */ DecisionPointsCreationService.prototype.returnBranch = /** * @param {?} branchJSON * @return {?} */ function (branchJSON) { var /** @type {?} */ branch = new Branch(); branch.label = branchJSON.Label; if (branchJSON.EndPointRef) { branch.endPointRef = new EndPointRef(); branch.endPointRef.endPointId = branchJSON.EndPointRef.Attr.EndPointId; } branch.condition = this.conditionsCreationService.returnCondition(branchJSON); branch.computedValue = this.computedValueCreationService.createComputedValue(branchJSON); if (this.conditionsCreationService.isComposite(branchJSON)) { branch.compositeCondition = this.conditionsCreationService.returnCompositeCondition(branchJSON); } if (branchJSON.NotRelevantDataElements) { var /** @type {?} */ notRelevantDataElements = new NotRelevantDataElements(); notRelevantDataElements.dataElementReferences = new Array(); var /** @type {?} */ dataElementRefs = branchJSON.NotRelevantDataElements.DataElementRef; if (this.arrayCheckerService.isArray(dataElementRefs)) { try { for (var dataElementRefs_1 = tslib_1.__values(dataElementRefs), dataElementRefs_1_1 = dataElementRefs_1.next(); !dataElementRefs_1_1.done; dataElementRefs_1_1 = dataElementRefs_1.next()) { var dataElementRefJSON = dataElementRefs_1_1.value; notRelevantDataElements.dataElementReferences.push(this.createRelevantDataElementReferences(dataElementRefJSON)); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (dataElementRefs_1_1 && !dataElementRefs_1_1.done && (_a = dataElementRefs_1.return)) _a.call(dataElementRefs_1); } finally { if (e_1) throw e_1.error; } } } else { notRelevantDataElements.dataElementReferences.push(this.createRelevantDataElementReferences(dataElementRefs)); } branch.notRelevantDataElements = notRelevantDataElements; } if (branchJSON.DecisionPoint) { branch.decisionPoints = new Array(); this.addDecisionPoints(branchJSON.DecisionPoint, branch.decisionPoints); } return branch; var e_1, _a; }; /** * @param {?} decsionPointAsJSON * @param {?} decisionPoints * @return {?} */ DecisionPointsCreationService.prototype.addDecisionPoint = /** * @param {?} decsionPointAsJSON * @param {?} decisionPoints * @return {?} */ function (decsionPointAsJSON, decisionPoints) { var /** @type {?} */ decisionPoint = new DecisionPoint(); if (decsionPointAsJSON.Attr && decsionPointAsJSON.Attr.Id) { decisionPoint.id = decsionPointAsJSON.Attr.Id; } decisionPoint.label = decsionPointAsJSON.Label; var /** @type {?} */ branchesJSON = decsionPointAsJSON.Branch; if (branchesJSON !== undefined) { decisionPoint.branches = new Array(); if (this.arrayCheckerService.isArray(branchesJSON)) { try { for (var branchesJSON_1 = tslib_1.__values(branchesJSON), branchesJSON_1_1 = branchesJSON_1.next(); !branchesJSON_1_1.done; branchesJSON_1_1 = branchesJSON_1.next()) { var branchJSON = branchesJSON_1_1.value; decisionPoint.branches.push(this.returnBranch(branchJSON)); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (branchesJSON_1_1 && !branchesJSON_1_1.done && (_a = branchesJSON_1.return)) _a.call(branchesJSON_1); } finally { if (e_2) throw e_2.error; } } } else { decisionPoint.branches.push(this.returnBranch(branchesJSON)); } var /** @type {?} */ defaultBranchJSON = decsionPointAsJSON.DefaultBranch; if (defaultBranchJSON !== undefined) { decisionPoint.defaultBranch = this.createDefaultBranch(defaultBranchJSON); } } decisionPoints.push(decisionPoint); var e_2, _a; }; /** * @param {?} decsionPointsAsJSON * @param {?} decisionPoints * @return {?} */ DecisionPointsCreationService.prototype.addDecisionPoints = /** * @param {?} decsionPointsAsJSON * @param {?} decisionPoints * @return {?} */ function (decsionPointsAsJSON, decisionPoints) { if (this.arrayCheckerService.isArray(decsionPointsAsJSON)) { try { for (var decsionPointsAsJSON_1 = tslib_1.__values(decsionPointsAsJSON), decsionPointsAsJSON_1_1 = decsionPointsAsJSON_1.next(); !decsionPointsAsJSON_1_1.done; decsionPointsAsJSON_1_1 = decsionPointsAsJSON_1.next()) { var decisionPoint = decsionPointsAsJSON_1_1.value; this.addDecisionPoint(decisionPoint, decisionPoints); } } catch (e_3_1) { e_3 = { error: e_3_1 }; } finally { try { if (decsionPointsAsJSON_1_1 && !decsionPointsAsJSON_1_1.done && (_a = decsionPointsAsJSON_1.return)) _a.call(decsionPointsAsJSON_1); } finally { if (e_3) throw e_3.error; } } } else { this.addDecisionPoint(decsionPointsAsJSON, decisionPoints); } var e_3, _a; }; /** * @param {?} data * @return {?} */ DecisionPointsCreationService.prototype.createDecisionPoints = /** * @param {?} data * @return {?} */ function (data) { var /** @type {?} */ decisionPoints = new Array(); this.addDecisionPoints(data, decisionPoints); return decisionPoints; }; /** * @param {?} data * @return {?} */ DecisionPointsCreationService.prototype.createDefaultBranch = /** * @param {?} data * @return {?} */ function (data) { var /** @type {?} */ defaultBranch = new Branch(); defaultBranch.label = 'Default Branch'; defaultBranch.computedValue = this.computedValueCreationService.createComputedValue(data); return defaultBranch; }; DecisionPointsCreationService.decorators = [ { type: Injectable }, ]; /** @nocollapse */ DecisionPointsCreationService.ctorParameters = function () { return [ { type: ArrayCheckerService }, { type: ConditionsCreationService }, { type: ComputedValueCreationService } ]; }; return DecisionPointsCreationService; }()); export { DecisionPointsCreationService }; function DecisionPointsCreationService_tsickle_Closure_declarations() { /** @type {?} */ DecisionPointsCreationService.prototype.arrayCheckerService; /** @type {?} */ DecisionPointsCreationService.prototype.conditionsCreationService; /** @type {?} */ DecisionPointsCreationService.prototype.computedValueCreationService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaXNpb24tcG9pbnRzLWNyZWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hY3ItYXNzaXN0LXNpbXVsYXRvci1tb2R1bGUvIiwic291cmNlcyI6WyJzcmMvYXBwL21vZHVsZXMvYWNyLWFzc2lzdC1zaW11bGF0b3Ivc2hhcmVkL3NlcnZpY2VzL2RlY2lzaW9uLXBvaW50cy1jcmVhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDN0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0lBSy9FLHVDQUFvQixtQkFBd0MsRUFDbEQsMkJBQ0Y7UUFGWSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ2xELDhCQUF5QixHQUF6Qix5QkFBeUI7UUFDM0IsaUNBQTRCLEdBQTVCLDRCQUE0QjtLQUVuQzs7Ozs7SUFFTywyRUFBbUM7Ozs7Y0FBQyxrQkFBa0I7UUFDMUQscUJBQU0sY0FBYyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDNUMsY0FBYyxDQUFDLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxjQUFjLENBQUM7Ozs7OztJQUlqQixvREFBWTs7OztjQUFDLFVBQVU7UUFDOUIscUJBQU0sTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDNUIsTUFBTSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ2hDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUN2QyxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDeEU7UUFDRCxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUUsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekYsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsTUFBTSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNwRztRQUNELEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7WUFDbEMscUJBQU0sdUJBQXVCLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1lBQy9ELHVCQUF1QixDQUFDLHFCQUFxQixHQUFHLElBQUksS0FBSyxFQUFrQixDQUFDO1lBQzVFLHFCQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDO1lBQzFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDOztvQkFDcEQsR0FBRyxDQUFDLENBQThCLElBQUEsb0JBQUEsaUJBQUEsZUFBZSxDQUFBLGdEQUFBO3dCQUE1QyxJQUFNLGtCQUFrQiw0QkFBQTt3QkFDM0IsdUJBQXVCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7cUJBQ2xIOzs7Ozs7Ozs7YUFDSjtZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLHVCQUF1QixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQzthQUMvRztZQUNELE1BQU0sQ0FBQyx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztTQUM5RDtRQUNELEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxLQUFLLEVBQWlCLENBQUM7WUFDbkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQzs7Ozs7Ozs7SUFJUix3REFBZ0I7Ozs7O2NBQUMsa0JBQXVCLEVBQUcsY0FBK0I7UUFDL0UscUJBQU0sYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDekMsRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFELGFBQWEsQ0FBQyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUNoRDtRQUNELGFBQWEsQ0FBQyxLQUFLLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1FBQzlDLHFCQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFDaEQsRUFBRSxDQUFDLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1lBQzdDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBRSxDQUFDOztvQkFDcEQsR0FBRyxDQUFDLENBQXFCLElBQUEsaUJBQUEsaUJBQUEsWUFBWSxDQUFBLDBDQUFBO3dCQUFoQyxJQUFNLFVBQVUseUJBQUE7d0JBQ25CLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztxQkFDNUQ7Ozs7Ozs7OzthQUNEO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ1AsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2FBQzlEO1lBQ0QscUJBQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxDQUFDO1lBQzNELEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLGFBQWEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDM0U7U0FFRDtRQUNELGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Ozs7Ozs7O0lBRzlCLHlEQUFpQjs7Ozs7Y0FBQyxtQkFBd0IsRUFBRyxjQUErQjtRQUNsRixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDOztnQkFDeEQsR0FBRyxDQUFDLENBQXlCLElBQUEsd0JBQUEsaUJBQUEsbUJBQW1CLENBQUEsd0RBQUE7b0JBQTNDLElBQU0sYUFBYSxnQ0FBQTtvQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztpQkFDdEQ7Ozs7Ozs7OztTQUNKO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDNUQ7Ozs7Ozs7SUFHSCw0REFBb0I7Ozs7SUFBcEIsVUFBcUIsSUFBUztRQUM1QixxQkFBTSxjQUFjLEdBQUcsSUFBSSxLQUFLLEVBQWlCLENBQUM7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDO0tBQ3ZCOzs7OztJQUdELDJEQUFtQjs7OztJQUFuQixVQUFvQixJQUFTO1FBQzNCLHFCQUFNLGFBQWEsR0FBWSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzVDLGFBQWEsQ0FBQyxLQUFLLEdBQUksZ0JBQWdCLENBQUM7UUFDeEMsYUFBYSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUYsTUFBTSxDQUFDLGFBQWEsQ0FBQztLQUN0Qjs7Z0JBaEdGLFVBQVU7Ozs7Z0JBVEYsbUJBQW1CO2dCQU1uQix5QkFBeUI7Z0JBQ3pCLDRCQUE0Qjs7d0NBVHJDOztTQVlhLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUnVsZXMgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3J1bGVzL21vZGVscy9ydWxlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEFycmF5Q2hlY2tlclNlcnZpY2UgfSBmcm9tICcuL2FycmF5LWNoZWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IERlY2lzaW9uUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9kZWNpc2lvbnBvaW50Lm1vZGVsJztcclxuaW1wb3J0IHsgQnJhbmNoIH0gZnJvbSAnLi4vLi4vLi4vY29yZS8vbW9kZWxzL2JyYW5jaC5tb2RlbCc7XHJcbmltcG9ydCB7IEVuZFBvaW50UmVmIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvZW5kcG9pbnRyZWYubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRhRWxlbWVudFJlZiB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL2RhdGFlbGVtZW50cmVmLm1vZGVsJztcclxuaW1wb3J0IHsgTm90UmVsZXZhbnREYXRhRWxlbWVudHMgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9ub3RyZWxldmFudGRhdGFlbGVtZW50cy5tb2RlbCc7XHJcbmltcG9ydCB7IENvbmRpdGlvbnNDcmVhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbmRpdGlvbnMtY3JlYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXB1dGVkVmFsdWVDcmVhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbXB1dGVkLXZhbHVlLWNyZWF0aW9uLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGVjaXNpb25Qb2ludHNDcmVhdGlvblNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFycmF5Q2hlY2tlclNlcnZpY2U6IEFycmF5Q2hlY2tlclNlcnZpY2UgLFxyXG4gICAgcHJpdmF0ZSBjb25kaXRpb25zQ3JlYXRpb25TZXJ2aWNlOiBDb25kaXRpb25zQ3JlYXRpb25TZXJ2aWNlLFxyXG4gIHByaXZhdGUgY29tcHV0ZWRWYWx1ZUNyZWF0aW9uU2VydmljZTogQ29tcHV0ZWRWYWx1ZUNyZWF0aW9uU2VydmljZSApIHtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVJlbGV2YW50RGF0YUVsZW1lbnRSZWZlcmVuY2VzKGRhdGFFbGVtZW50UmVmSlNPTik6IERhdGFFbGVtZW50UmVmICAgICB7XHJcbiAgICAgIGNvbnN0IGRhdGFFbGVtZW50UmVmID0gbmV3IERhdGFFbGVtZW50UmVmKCk7XHJcbiAgICAgIGRhdGFFbGVtZW50UmVmLmRhdGFFbGVtZW50SWQgPSBkYXRhRWxlbWVudFJlZkpTT04uQXR0ci5EYXRhRWxlbWVudElkO1xyXG4gICAgICByZXR1cm4gZGF0YUVsZW1lbnRSZWY7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSAgcmV0dXJuQnJhbmNoKGJyYW5jaEpTT04pOiBCcmFuY2gge1xyXG4gICAgY29uc3QgYnJhbmNoID0gbmV3IEJyYW5jaCgpO1xyXG4gICAgYnJhbmNoLmxhYmVsID0gYnJhbmNoSlNPTi5MYWJlbDtcclxuICAgIGlmIChicmFuY2hKU09OLkVuZFBvaW50UmVmKSB7XHJcbiAgICAgIGJyYW5jaC5lbmRQb2ludFJlZiA9IG5ldyBFbmRQb2ludFJlZigpO1xyXG4gICAgICBicmFuY2guZW5kUG9pbnRSZWYuZW5kUG9pbnRJZCA9IGJyYW5jaEpTT04uRW5kUG9pbnRSZWYuQXR0ci5FbmRQb2ludElkO1xyXG4gICAgfVxyXG4gICAgYnJhbmNoLmNvbmRpdGlvbiA9IHRoaXMuY29uZGl0aW9uc0NyZWF0aW9uU2VydmljZS5yZXR1cm5Db25kaXRpb24oYnJhbmNoSlNPTik7XHJcbiAgICBicmFuY2guY29tcHV0ZWRWYWx1ZSA9IHRoaXMuY29tcHV0ZWRWYWx1ZUNyZWF0aW9uU2VydmljZS5jcmVhdGVDb21wdXRlZFZhbHVlKGJyYW5jaEpTT04pO1xyXG4gICAgaWYgKHRoaXMuY29uZGl0aW9uc0NyZWF0aW9uU2VydmljZS5pc0NvbXBvc2l0ZShicmFuY2hKU09OKSkge1xyXG4gICAgICAgICBicmFuY2guY29tcG9zaXRlQ29uZGl0aW9uID0gdGhpcy5jb25kaXRpb25zQ3JlYXRpb25TZXJ2aWNlLnJldHVybkNvbXBvc2l0ZUNvbmRpdGlvbihicmFuY2hKU09OKTtcclxuICAgIH1cclxuICAgIGlmIChicmFuY2hKU09OLk5vdFJlbGV2YW50RGF0YUVsZW1lbnRzKSB7XHJcbiAgICAgICAgICAgY29uc3Qgbm90UmVsZXZhbnREYXRhRWxlbWVudHMgPSBuZXcgTm90UmVsZXZhbnREYXRhRWxlbWVudHMoKTtcclxuICAgICAgICAgIG5vdFJlbGV2YW50RGF0YUVsZW1lbnRzLmRhdGFFbGVtZW50UmVmZXJlbmNlcyA9IG5ldyBBcnJheTxEYXRhRWxlbWVudFJlZj4oKTtcclxuICAgICAgICAgIGNvbnN0IGRhdGFFbGVtZW50UmVmcyA9IGJyYW5jaEpTT04uTm90UmVsZXZhbnREYXRhRWxlbWVudHMuRGF0YUVsZW1lbnRSZWY7XHJcbiAgICAgICAgICBpZiAodGhpcy5hcnJheUNoZWNrZXJTZXJ2aWNlLmlzQXJyYXkoZGF0YUVsZW1lbnRSZWZzKSkge1xyXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZGF0YUVsZW1lbnRSZWZKU09OIG9mICBkYXRhRWxlbWVudFJlZnMpIHtcclxuICAgICAgICAgICAgICAgIG5vdFJlbGV2YW50RGF0YUVsZW1lbnRzLmRhdGFFbGVtZW50UmVmZXJlbmNlcy5wdXNoKHRoaXMuY3JlYXRlUmVsZXZhbnREYXRhRWxlbWVudFJlZmVyZW5jZXMoZGF0YUVsZW1lbnRSZWZKU09OKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbm90UmVsZXZhbnREYXRhRWxlbWVudHMuZGF0YUVsZW1lbnRSZWZlcmVuY2VzLnB1c2godGhpcy5jcmVhdGVSZWxldmFudERhdGFFbGVtZW50UmVmZXJlbmNlcyhkYXRhRWxlbWVudFJlZnMpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyYW5jaC5ub3RSZWxldmFudERhdGFFbGVtZW50cyA9IG5vdFJlbGV2YW50RGF0YUVsZW1lbnRzO1xyXG4gICAgfVxyXG4gICAgaWYgKGJyYW5jaEpTT04uRGVjaXNpb25Qb2ludCkge1xyXG4gICAgICAgYnJhbmNoLmRlY2lzaW9uUG9pbnRzID0gbmV3IEFycmF5PERlY2lzaW9uUG9pbnQ+KCk7XHJcbiAgICAgICB0aGlzLmFkZERlY2lzaW9uUG9pbnRzKGJyYW5jaEpTT04uRGVjaXNpb25Qb2ludCwgIGJyYW5jaC5kZWNpc2lvblBvaW50cyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnJhbmNoO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgYWRkRGVjaXNpb25Qb2ludChkZWNzaW9uUG9pbnRBc0pTT046IGFueSAsIGRlY2lzaW9uUG9pbnRzOiBEZWNpc2lvblBvaW50W10pIHtcclxuICAgICBjb25zdCBkZWNpc2lvblBvaW50ID0gbmV3IERlY2lzaW9uUG9pbnQoKTtcclxuICAgICAgaWYgKGRlY3Npb25Qb2ludEFzSlNPTi5BdHRyICYmIGRlY3Npb25Qb2ludEFzSlNPTi5BdHRyLklkKSB7XHJcbiAgICAgICAgZGVjaXNpb25Qb2ludC5pZCA9IGRlY3Npb25Qb2ludEFzSlNPTi5BdHRyLklkO1xyXG4gICAgIH1cclxuICAgICBkZWNpc2lvblBvaW50LmxhYmVsID0gZGVjc2lvblBvaW50QXNKU09OLkxhYmVsO1xyXG4gICAgICBjb25zdCBicmFuY2hlc0pTT04gPSBkZWNzaW9uUG9pbnRBc0pTT04uQnJhbmNoO1xyXG4gICAgIGlmIChicmFuY2hlc0pTT04gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBkZWNpc2lvblBvaW50LmJyYW5jaGVzID0gbmV3IEFycmF5PEJyYW5jaD4oKTtcclxuICAgICAgaWYgKHRoaXMuYXJyYXlDaGVja2VyU2VydmljZS5pc0FycmF5KGJyYW5jaGVzSlNPTikpICB7XHJcbiAgICAgICAgZm9yIChjb25zdCBicmFuY2hKU09OIG9mIGJyYW5jaGVzSlNPTikge1xyXG4gICAgICAgICAgZGVjaXNpb25Qb2ludC5icmFuY2hlcy5wdXNoKHRoaXMucmV0dXJuQnJhbmNoKGJyYW5jaEpTT04pKTtcclxuICAgICAgICB9XHJcbiAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRlY2lzaW9uUG9pbnQuYnJhbmNoZXMucHVzaCh0aGlzLnJldHVybkJyYW5jaChicmFuY2hlc0pTT04pKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkZWZhdWx0QnJhbmNoSlNPTiA9IGRlY3Npb25Qb2ludEFzSlNPTi5EZWZhdWx0QnJhbmNoO1xyXG4gICAgICBpZiAoZGVmYXVsdEJyYW5jaEpTT04gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGRlY2lzaW9uUG9pbnQuZGVmYXVsdEJyYW5jaCA9IHRoaXMuY3JlYXRlRGVmYXVsdEJyYW5jaChkZWZhdWx0QnJhbmNoSlNPTik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgfVxyXG4gICAgIGRlY2lzaW9uUG9pbnRzLnB1c2goZGVjaXNpb25Qb2ludCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZERlY2lzaW9uUG9pbnRzKGRlY3Npb25Qb2ludHNBc0pTT046IGFueSAsIGRlY2lzaW9uUG9pbnRzOiBEZWNpc2lvblBvaW50W10pIHtcclxuICAgIGlmICh0aGlzLmFycmF5Q2hlY2tlclNlcnZpY2UuaXNBcnJheShkZWNzaW9uUG9pbnRzQXNKU09OKSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgZGVjaXNpb25Qb2ludCBvZiAgZGVjc2lvblBvaW50c0FzSlNPTil7XHJcbiAgICAgICAgICB0aGlzLmFkZERlY2lzaW9uUG9pbnQoZGVjaXNpb25Qb2ludCwgZGVjaXNpb25Qb2ludHMpO1xyXG4gICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkRGVjaXNpb25Qb2ludChkZWNzaW9uUG9pbnRzQXNKU09OLCBkZWNpc2lvblBvaW50cyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVEZWNpc2lvblBvaW50cyhkYXRhOiBhbnkpOiBEZWNpc2lvblBvaW50W10ge1xyXG4gICAgY29uc3QgZGVjaXNpb25Qb2ludHMgPSBuZXcgQXJyYXk8RGVjaXNpb25Qb2ludD4oKTtcclxuICAgIHRoaXMuYWRkRGVjaXNpb25Qb2ludHMoZGF0YSwgZGVjaXNpb25Qb2ludHMpO1xyXG4gICAgcmV0dXJuIGRlY2lzaW9uUG9pbnRzO1xyXG4gIH1cclxuXHJcblxyXG4gIGNyZWF0ZURlZmF1bHRCcmFuY2goZGF0YTogYW55KTogQnJhbmNoIHtcclxuICAgIGNvbnN0IGRlZmF1bHRCcmFuY2g6IEJyYW5jaCAgPSBuZXcgQnJhbmNoKCk7XHJcbiAgICBkZWZhdWx0QnJhbmNoLmxhYmVsID0gICdEZWZhdWx0IEJyYW5jaCc7XHJcbiAgICBkZWZhdWx0QnJhbmNoLmNvbXB1dGVkVmFsdWUgPSB0aGlzLmNvbXB1dGVkVmFsdWVDcmVhdGlvblNlcnZpY2UuY3JlYXRlQ29tcHV0ZWRWYWx1ZShkYXRhKTtcclxuICAgIHJldHVybiBkZWZhdWx0QnJhbmNoO1xyXG4gIH1cclxufVxyXG4iXX0=