ngx-beautiful-charts
Version:
A library to create charts in Angular
206 lines • 15.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
// @Injectable({
// providedIn: BeautifulChartsModule
// })
var
// @Injectable({
// providedIn: BeautifulChartsModule
// })
ClusteredBarChartService = /** @class */ (function () {
function ClusteredBarChartService() {
}
/**
* @return {?}
*/
ClusteredBarChartService.prototype.computeRectDimensions = /**
* @return {?}
*/
function () {
this.rectHeight = this.height - this.yPadding * 4;
this.rectWidth = this.width * .7 - this.xPadding * 2;
};
/**
* @return {?}
*/
ClusteredBarChartService.prototype.computeLegionDimensions = /**
* @return {?}
*/
function () {
/** @type {?} */
var noOfLines = this.data.length;
this.legionWidth = this.width * .3 - this.xPadding * 2;
this.legionHeight = 60 + 30 * noOfLines - 19;
};
/**
* @param {?} y
* @return {?}
*/
ClusteredBarChartService.prototype.transformY = /**
* @param {?} y
* @return {?}
*/
function (y) {
return this.rectHeight * y / (this.maxY - this.minY);
};
/**
* @param {?} factor
* @param {?} num
* @return {?}
*/
ClusteredBarChartService.prototype.closestMultipleLessThanEqualTo = /**
* @param {?} factor
* @param {?} num
* @return {?}
*/
function (factor, num) {
if (num % factor === 0)
return num;
else
return this.closestMultipleLessThanEqualTo(factor, num - 1);
};
/**
* @param {?} factor
* @param {?} num
* @return {?}
*/
ClusteredBarChartService.prototype.closestMultipleMoreThanEqualTo = /**
* @param {?} factor
* @param {?} num
* @return {?}
*/
function (factor, num) {
if (num % factor === 0)
return num;
else
return this.closestMultipleMoreThanEqualTo(factor, num + 1);
};
/**
* @param {?} __0
* @return {?}
*/
ClusteredBarChartService.prototype.setValues = /**
* @param {?} __0
* @return {?}
*/
function (_a) {
var e_1, _b;
var componentID = _a.componentID, width = _a.width, height = _a.height, xPadding = _a.xPadding, yPadding = _a.yPadding, data = _a.data;
this.componentID = componentID;
this.width = width;
this.height = height;
this.xPadding = xPadding;
this.yPadding = yPadding;
this.data = data;
// console.log('service color scheme: ' + this.colorScheme)
/** @type {?} */
var minVals = [];
/** @type {?} */
var maxVals = [];
minVals = [];
maxVals = [];
try {
for (var _c = tslib_1.__values(this.data), _d = _c.next(); !_d.done; _d = _c.next()) {
var bcD = _d.value;
/** @type {?} */
var min = Math.min.apply(Math, tslib_1.__spread(bcD.data.map((/**
* @param {?} oneData
* @return {?}
*/
function (oneData) { return oneData.value; }))));
/** @type {?} */
var max = Math.max.apply(Math, tslib_1.__spread(bcD.data.map((/**
* @param {?} oneData
* @return {?}
*/
function (oneData) { return oneData.value; }))));
minVals.push(min);
maxVals.push(max);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
/** @type {?} */
var minVal = Math.min.apply(Math, tslib_1.__spread(minVals));
/** @type {?} */
var maxVal = Math.max.apply(Math, tslib_1.__spread(maxVals));
/** @type {?} */
var range = maxVal - minVal;
/** @type {?} */
var limInc = 10;
/** @type {?} */
var lim = 10;
this.diff = 1;
while (range > lim) {
this.diff++;
lim += limInc;
}
this.minY = this.closestMultipleLessThanEqualTo(this.diff, minVal);
this.minY = this.minY - this.diff * 2;
this.maxY = this.closestMultipleMoreThanEqualTo(this.diff, maxVal);
this.maxY = this.maxY + this.diff * 2;
this.computeRectDimensions();
this.computeLegionDimensions();
// this.printAll();
};
/**
* @return {?}
*/
ClusteredBarChartService.prototype.printAll = /**
* @return {?}
*/
function () {
console.log('line-graph-service');
console.log('component ID: ' + this.componentID);
console.log('width: ' + this.width);
console.log('height: ' + this.height);
console.log('minY: ' + this.minY);
console.log('maxY: ' + this.maxY);
console.log('xPadding: ' + this.xPadding);
console.log('yPadding: ' + this.yPadding);
console.log('rectWidth: ' + this.rectWidth);
console.log('rectHeight: ' + this.rectHeight);
};
return ClusteredBarChartService;
}());
// @Injectable({
// providedIn: BeautifulChartsModule
// })
export { ClusteredBarChartService };
if (false) {
/** @type {?} */
ClusteredBarChartService.prototype.width;
/** @type {?} */
ClusteredBarChartService.prototype.height;
/** @type {?} */
ClusteredBarChartService.prototype.minY;
/** @type {?} */
ClusteredBarChartService.prototype.maxY;
/** @type {?} */
ClusteredBarChartService.prototype.xPadding;
/** @type {?} */
ClusteredBarChartService.prototype.yPadding;
/** @type {?} */
ClusteredBarChartService.prototype.componentID;
/** @type {?} */
ClusteredBarChartService.prototype.data;
/** @type {?} */
ClusteredBarChartService.prototype.rectWidth;
/** @type {?} */
ClusteredBarChartService.prototype.rectHeight;
/** @type {?} */
ClusteredBarChartService.prototype.legionWidth;
/** @type {?} */
ClusteredBarChartService.prototype.legionHeight;
/** @type {?} */
ClusteredBarChartService.prototype.diff;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3RlcmVkLWJhci1jaGFydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWJlYXV0aWZ1bC1jaGFydHMvIiwic291cmNlcyI6WyJsaWIvY2x1c3RlcmVkLWJhci1jaGFydC9jbHVzdGVyZWQtYmFyLWNoYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFPQTs7Ozs7SUFpQkU7SUFBZ0IsQ0FBQzs7OztJQUVqQix3REFBcUI7OztJQUFyQjtRQUNFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Ozs7SUFFRCwwREFBdUI7OztJQUF2Qjs7WUFDUSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDL0MsQ0FBQzs7Ozs7SUFFRCw2Q0FBVTs7OztJQUFWLFVBQVcsQ0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7Ozs7O0lBRUQsaUVBQThCOzs7OztJQUE5QixVQUErQixNQUFNLEVBQUUsR0FBRztRQUN4QyxJQUFJLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDOztZQUM5QixPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Ozs7OztJQUVELGlFQUE4Qjs7Ozs7SUFBOUIsVUFBK0IsTUFBTSxFQUFFLEdBQUc7UUFDeEMsSUFBSSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQzs7WUFDOUIsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDOzs7OztJQUVELDRDQUFTOzs7O0lBQVQsVUFBVSxFQU9UOztZQU5DLDRCQUF3QixFQUN4QixnQkFBWSxFQUNaLGtCQUFjLEVBQ2Qsc0JBQWtCLEVBQ2xCLHNCQUFrQixFQUNsQixjQUFVO1FBRVYsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7OztZQUdiLE9BQU8sR0FBRyxFQUFFOztZQUNaLE9BQU8sR0FBRyxFQUFFO1FBQ2hCLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLEdBQUcsRUFBRSxDQUFDOztZQUNiLEtBQWtCLElBQUEsS0FBQSxpQkFBQSxJQUFJLENBQUMsSUFBSSxDQUFBLGdCQUFBLDRCQUFFO2dCQUF4QixJQUFNLEdBQUcsV0FBQTs7b0JBQ04sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQVIsSUFBSSxtQkFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUc7Ozs7Z0JBQUMsVUFBQSxPQUFPLElBQUksT0FBQSxPQUFPLENBQUMsS0FBSyxFQUFiLENBQWEsRUFBQyxFQUFDOztvQkFDekQsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQVIsSUFBSSxtQkFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUc7Ozs7Z0JBQUMsVUFBQSxPQUFPLElBQUksT0FBQSxPQUFPLENBQUMsS0FBSyxFQUFiLENBQWEsRUFBQyxFQUFDO2dCQUMvRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ25COzs7Ozs7Ozs7O1lBQ0ssTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQVIsSUFBSSxtQkFBUSxPQUFPLEVBQUM7O1lBQzdCLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksbUJBQVEsT0FBTyxFQUFDOztZQUM3QixLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU07O1lBRXZCLE1BQU0sR0FBRyxFQUFFOztZQUNiLEdBQUcsR0FBRyxFQUFFO1FBQ1osSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDZCxPQUFPLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDbEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osR0FBRyxJQUFJLE1BQU0sQ0FBQztTQUNmO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsbUJBQW1CO0lBQ3JCLENBQUM7Ozs7SUFFRCwyQ0FBUTs7O0lBQVI7UUFDRSxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0gsK0JBQUM7QUFBRCxDQUFDLEFBdkdELElBdUdDOzs7Ozs7O0lBckdDLHlDQUFjOztJQUNkLDBDQUFlOztJQUNmLHdDQUFhOztJQUNiLHdDQUFhOztJQUNiLDRDQUFpQjs7SUFDakIsNENBQWlCOztJQUNqQiwrQ0FBb0I7O0lBQ3BCLHdDQUFnRjs7SUFFaEYsNkNBQWtCOztJQUNsQiw4Q0FBbUI7O0lBQ25CLCtDQUFvQjs7SUFDcEIsZ0RBQXFCOztJQUNyQix3Q0FBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlYXV0aWZ1bENoYXJ0c01vZHVsZSB9IGZyb20gJy4uL2JlYXV0aWZ1bC1jaGFydHMubW9kdWxlJztcbmltcG9ydCB7IGNvbG9yU2NoZW1lcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb2xvci1zY2hlbWVzJztcblxuLy8gQEluamVjdGFibGUoe1xuLy8gICBwcm92aWRlZEluOiBCZWF1dGlmdWxDaGFydHNNb2R1bGVcbi8vIH0pXG5leHBvcnQgY2xhc3MgQ2x1c3RlcmVkQmFyQ2hhcnRTZXJ2aWNlIHtcblxuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgbWluWTogbnVtYmVyO1xuICBtYXhZOiBudW1iZXI7XG4gIHhQYWRkaW5nOiBudW1iZXI7XG4gIHlQYWRkaW5nOiBudW1iZXI7XG4gIGNvbXBvbmVudElEOiBudW1iZXI7XG4gIGRhdGE6IFt7c2VyaWVzOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcsIGRhdGE6IFt7bmFtZTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIH1dfV07XG5cbiAgcmVjdFdpZHRoOiBudW1iZXI7XG4gIHJlY3RIZWlnaHQ6IG51bWJlcjtcbiAgbGVnaW9uV2lkdGg6IG51bWJlcjtcbiAgbGVnaW9uSGVpZ2h0OiBudW1iZXI7XG4gIGRpZmY6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGNvbXB1dGVSZWN0RGltZW5zaW9ucygpIHtcbiAgICB0aGlzLnJlY3RIZWlnaHQgPSB0aGlzLmhlaWdodCAtIHRoaXMueVBhZGRpbmcgKiA0O1xuICAgIHRoaXMucmVjdFdpZHRoID0gdGhpcy53aWR0aCAqIC43IC0gdGhpcy54UGFkZGluZyAqIDI7XG4gIH1cblxuICBjb21wdXRlTGVnaW9uRGltZW5zaW9ucygpIHtcbiAgICBjb25zdCBub09mTGluZXMgPSB0aGlzLmRhdGEubGVuZ3RoO1xuICAgIHRoaXMubGVnaW9uV2lkdGggPSB0aGlzLndpZHRoICogLjMgLSB0aGlzLnhQYWRkaW5nICogMjtcbiAgICB0aGlzLmxlZ2lvbkhlaWdodCA9IDYwICsgMzAgKiBub09mTGluZXMgLSAxOTtcbiAgfVxuXG4gIHRyYW5zZm9ybVkoeTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMucmVjdEhlaWdodCAqIHkgLyAodGhpcy5tYXhZIC0gdGhpcy5taW5ZKTtcbiAgfVxuXG4gIGNsb3Nlc3RNdWx0aXBsZUxlc3NUaGFuRXF1YWxUbyhmYWN0b3IsIG51bSkge1xuICAgIGlmIChudW0gJSBmYWN0b3IgPT09IDApIHJldHVybiBudW07XG4gICAgZWxzZSByZXR1cm4gdGhpcy5jbG9zZXN0TXVsdGlwbGVMZXNzVGhhbkVxdWFsVG8oZmFjdG9yLCBudW0gLSAxKTtcbiAgfVxuXG4gIGNsb3Nlc3RNdWx0aXBsZU1vcmVUaGFuRXF1YWxUbyhmYWN0b3IsIG51bSkge1xuICAgIGlmIChudW0gJSBmYWN0b3IgPT09IDApIHJldHVybiBudW07XG4gICAgZWxzZSByZXR1cm4gdGhpcy5jbG9zZXN0TXVsdGlwbGVNb3JlVGhhbkVxdWFsVG8oZmFjdG9yLCBudW0gKyAxKTtcbiAgfVxuXG4gIHNldFZhbHVlcyh7XG4gICAgY29tcG9uZW50SUQ6IGNvbXBvbmVudElELFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4UGFkZGluZzogeFBhZGRpbmcsXG4gICAgeVBhZGRpbmc6IHlQYWRkaW5nLFxuICAgIGRhdGE6IGRhdGFcbiAgfSkge1xuICAgIHRoaXMuY29tcG9uZW50SUQgPSBjb21wb25lbnRJRDtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgdGhpcy54UGFkZGluZyA9IHhQYWRkaW5nO1xuICAgIHRoaXMueVBhZGRpbmcgPSB5UGFkZGluZztcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIC8vIGNvbnNvbGUubG9nKCdzZXJ2aWNlIGNvbG9yIHNjaGVtZTogJyArIHRoaXMuY29sb3JTY2hlbWUpXG5cbiAgICBsZXQgbWluVmFscyA9IFtdO1xuICAgIGxldCBtYXhWYWxzID0gW107XG4gICAgbWluVmFscyA9IFtdO1xuICAgIG1heFZhbHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGJjRCBvZiB0aGlzLmRhdGEpIHtcbiAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLmJjRC5kYXRhLm1hcChvbmVEYXRhID0+IG9uZURhdGEudmFsdWUpKTtcbiAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLmJjRC5kYXRhLm1hcChvbmVEYXRhID0+IG9uZURhdGEudmFsdWUpKTtcbiAgICAgIG1pblZhbHMucHVzaChtaW4pO1xuICAgICAgbWF4VmFscy5wdXNoKG1heCk7XG4gICAgfVxuICAgIGNvbnN0IG1pblZhbCA9IE1hdGgubWluKC4uLm1pblZhbHMpO1xuICAgIGNvbnN0IG1heFZhbCA9IE1hdGgubWF4KC4uLm1heFZhbHMpO1xuICAgIGNvbnN0IHJhbmdlID0gbWF4VmFsIC0gbWluVmFsO1xuXG4gICAgY29uc3QgbGltSW5jID0gMTA7XG4gICAgbGV0IGxpbSA9IDEwO1xuICAgIHRoaXMuZGlmZiA9IDE7XG4gICAgd2hpbGUgKHJhbmdlID4gbGltKSB7XG4gICAgICB0aGlzLmRpZmYrKztcbiAgICAgIGxpbSArPSBsaW1JbmM7XG4gICAgfVxuICAgIHRoaXMubWluWSA9IHRoaXMuY2xvc2VzdE11bHRpcGxlTGVzc1RoYW5FcXVhbFRvKHRoaXMuZGlmZiwgbWluVmFsKTtcbiAgICB0aGlzLm1pblkgPSB0aGlzLm1pblkgLSB0aGlzLmRpZmYgKiAyO1xuICAgIHRoaXMubWF4WSA9IHRoaXMuY2xvc2VzdE11bHRpcGxlTW9yZVRoYW5FcXVhbFRvKHRoaXMuZGlmZiwgbWF4VmFsKTtcbiAgICB0aGlzLm1heFkgPSB0aGlzLm1heFkgKyB0aGlzLmRpZmYgKiAyO1xuXG4gICAgdGhpcy5jb21wdXRlUmVjdERpbWVuc2lvbnMoKTtcbiAgICB0aGlzLmNvbXB1dGVMZWdpb25EaW1lbnNpb25zKCk7XG4gICAgLy8gdGhpcy5wcmludEFsbCgpO1xuICB9XG5cbiAgcHJpbnRBbGwoKSB7XG4gICAgY29uc29sZS5sb2coJ2xpbmUtZ3JhcGgtc2VydmljZScpO1xuICAgIGNvbnNvbGUubG9nKCdjb21wb25lbnQgSUQ6ICcgKyB0aGlzLmNvbXBvbmVudElEKTtcbiAgICBjb25zb2xlLmxvZygnd2lkdGg6ICcgKyB0aGlzLndpZHRoKTtcbiAgICBjb25zb2xlLmxvZygnaGVpZ2h0OiAnICsgdGhpcy5oZWlnaHQpO1xuICAgIGNvbnNvbGUubG9nKCdtaW5ZOiAnICsgdGhpcy5taW5ZKTtcbiAgICBjb25zb2xlLmxvZygnbWF4WTogJyArIHRoaXMubWF4WSk7XG4gICAgY29uc29sZS5sb2coJ3hQYWRkaW5nOiAnICsgdGhpcy54UGFkZGluZyk7XG4gICAgY29uc29sZS5sb2coJ3lQYWRkaW5nOiAnICsgdGhpcy55UGFkZGluZyk7XG4gICAgY29uc29sZS5sb2coJ3JlY3RXaWR0aDogJyArIHRoaXMucmVjdFdpZHRoKTtcbiAgICBjb25zb2xlLmxvZygncmVjdEhlaWdodDogJyArIHRoaXMucmVjdEhlaWdodCk7XG4gIH1cbn1cbiJdfQ==