@kre-form/ionic
Version:
220 lines • 19.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Input, ContentChild, Directive, Renderer2, ElementRef, } from "@angular/core";
import { Platform, IonText } from "@ionic/angular";
import * as _ from "lodash";
var IonKreFormFloat = /** @class */ (function () {
function IonKreFormFloat(el, renderer, plt) {
this.el = el;
this.plt = plt;
this.selectedColor = "";
this.decimalNumber = -1; // 保留小数位数,默认不限制
// 保留小数位数,默认不限制
this.max = 6;
this.floattype = "base"; // 固定整数取6位 base:兼容除流程外的数字精度显示,为base表示整数固定取6位
// 固定整数取6位 base:兼容除流程外的数字精度显示,为base表示整数固定取6位
this.allowminus = true; // 允许负数 -true 允许 -false 不允许
this.isblur = false;
}
/**
* @param {?} e
* @return {?}
*/
IonKreFormFloat.prototype.onfocus = /**
* @param {?} e
* @return {?}
*/
function (e) {
this.isblur = false;
};
/**
* @param {?} e
* @return {?}
*/
IonKreFormFloat.prototype.onBlur = /**
* @param {?} e
* @return {?}
*/
function (e) {
this.isblur = true;
if (e.currentTarget.value !== "" && !isNaN(e.currentTarget.value)) {
/** @type {?} */
var val = e.currentTarget.value;
if (this.decimalNumber > -1) {
val = Number(e.currentTarget.value).toFixed(this.decimalNumber);
}
e.currentTarget.value = val;
}
else {
e.currentTarget.value = "";
}
};
/**
* @param {?} event
* @return {?}
*/
IonKreFormFloat.prototype.onModelChange = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.isblur)
return;
var value = event.detail.value;
if (value === 0)
value = "";
if (!_.isNumber(value)) {
event.currentTarget.value = value;
}
else {
event.currentTarget.value = value = this.checkValue(value);
}
};
/**
* @param {?} event
* @return {?}
*/
IonKreFormFloat.prototype.checkValue = /**
* @param {?} event
* @return {?}
*/
function (event) {
/** @type {?} */
var oldValue = event;
/** @type {?} */
var mark = "";
if (this.allowminus) {
mark = event.charAt(0);
}
if (this.decimalNumber === 0) {
if (_.isNumber(oldValue)) {
oldValue = Number(oldValue).toFixed(0); // 保留整数
}
else {
// oldValue = oldValue;
}
}
else {
oldValue = oldValue.replace(/[^\d\.]/g, ""); // 清除"数字"和"."以外的字符
}
/** @type {?} */
var newValue = "";
if (oldValue === ".") {
newValue = "";
}
else if (oldValue.indexOf(".") >= 0) {
if (this.floattype !== "base") {
/** @type {?} */
var index = event.indexOf(".");
/** @type {?} */
var opintInLast = event.lastIndexOf(".") === event.length - 1;
/** @type {?} */
var totlaLength = index !== -1 && !opintInLast ? this.max + 1 : this.max;
event = totlaLength > 0 ? event.substr(0, totlaLength) : event;
oldValue = oldValue.split(".");
oldValue.length = 2;
/** @type {?} */
var floatLength = oldValue[1] ? oldValue[1].length : 0;
floatLength =
floatLength > this.decimalNumber ? this.decimalNumber : floatLength;
/** @type {?} */
var intPart = this.max > 0
? oldValue[0].substr(0, this.max - floatLength)
: oldValue[0];
if (this.decimalNumber === 0 || intPart.length >= this.max) {
newValue = String(Math.abs(Number(intPart)));
}
else {
/** @type {?} */
var floatPart = floatLength
? oldValue[1].substr(0, floatLength)
: oldValue[1].substr(0, 3);
newValue = String(Math.abs(Number(intPart)) + "." + floatPart);
}
}
else {
if (this.decimalNumber > 0) {
newValue =
oldValue.split(".")[0].substr(0, 6) +
"." +
oldValue.split(".")[1].substr(0, this.decimalNumber);
}
else {
newValue =
oldValue.split(".")[0].substr(0, 6) +
"." +
oldValue.split(".")[1].substr(0);
}
}
}
else {
if (this.floattype !== "base") {
newValue = oldValue.substr(0, this.max);
}
else {
newValue = oldValue.substr(0, 6);
}
}
if (String(newValue).substr(0, 1) === "0" &&
String(newValue).substr(1, 1) !== ".") {
newValue = "0";
}
if (this.allowminus && mark === "-") {
event = "" + mark + newValue;
newValue = "" + mark + newValue;
}
else {
event = newValue;
}
return event;
};
IonKreFormFloat.decorators = [
{ type: Directive, args: [{
selector: "[ionKreFormFloat]",
host: {
"(ionBlur)": "onBlur($event)",
"(ionChange)": "onModelChange($event)",
"(ionFocus)": "onfocus($event)",
},
},] }
];
/** @nocollapse */
IonKreFormFloat.ctorParameters = function () { return [
{ type: ElementRef },
{ type: Renderer2 },
{ type: Platform }
]; };
IonKreFormFloat.propDecorators = {
selectedColor: [{ type: Input }],
decimalNumber: [{ type: Input }],
max: [{ type: Input }],
floattype: [{ type: Input }],
allowminus: [{ type: Input }],
_ionInput: [{ type: ContentChild, args: [IonText, { static: false },] }]
};
return IonKreFormFloat;
}());
export { IonKreFormFloat };
if (false) {
/** @type {?} */
IonKreFormFloat.prototype.selectedColor;
/** @type {?} */
IonKreFormFloat.prototype.decimalNumber;
/** @type {?} */
IonKreFormFloat.prototype.max;
/** @type {?} */
IonKreFormFloat.prototype.floattype;
/** @type {?} */
IonKreFormFloat.prototype.allowminus;
/** @type {?} */
IonKreFormFloat.prototype._ionInput;
/** @type {?} */
IonKreFormFloat.prototype.isblur;
/** @type {?} */
IonKreFormFloat.prototype.el;
/** @type {?} */
IonKreFormFloat.prototype.plt;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3JlLWZvcm0uZmxvYXQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa3JlLWZvcm0vaW9uaWMvIiwic291cmNlcyI6WyJsaWIva3JlLWZvcm0uZmxvYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUI7SUFpQkUseUJBQ1MsRUFBYyxFQUNyQixRQUFtQixFQUNaLEdBQWE7UUFGYixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBRWQsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQVhiLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlOztRQUNuQyxRQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsY0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLDRDQUE0Qzs7UUFDaEUsZUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLDRCQUE0QjtRQUV4RCxXQUFNLEdBQUcsS0FBSyxDQUFDO0lBTVosQ0FBQzs7Ozs7SUFDSixpQ0FBTzs7OztJQUFQLFVBQVEsQ0FBQztRQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBQ0QsZ0NBQU07Ozs7SUFBTixVQUFPLENBQUM7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUVuQixJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFOztnQkFDN0QsR0FBRyxHQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSztZQUVwQyxJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQzNCLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ2pFO1lBQ0QsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1NBQzdCO2FBQU07WUFDTCxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDOzs7OztJQUNELHVDQUFhOzs7O0lBQWIsVUFBYyxLQUFLO1FBQ2pCLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ2xCLElBQUEsMEJBQUs7UUFDWCxJQUFJLEtBQUssS0FBSyxDQUFDO1lBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN0QixLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDbkM7YUFBTTtZQUNMLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQzs7Ozs7SUFDRCxvQ0FBVTs7OztJQUFWLFVBQVcsS0FBSzs7WUFDVixRQUFRLEdBQUcsS0FBSzs7WUFDaEIsSUFBSSxHQUFHLEVBQUU7UUFDYixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEI7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDeEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO2FBQ2pEO2lCQUFNO2dCQUNMLHVCQUF1QjthQUN4QjtTQUNGO2FBQU07WUFDTCxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0I7U0FDaEU7O1lBQ0csUUFBUSxHQUFRLEVBQUU7UUFFdEIsSUFBSSxRQUFRLEtBQUssR0FBRyxFQUFFO1lBQ3BCLFFBQVEsR0FBRyxFQUFFLENBQUM7U0FDZjthQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sRUFBRTs7b0JBQ3ZCLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQzs7b0JBQzFCLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQzs7b0JBQ3pELFdBQVcsR0FDZixLQUFLLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFDeEQsS0FBSyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBRS9ELFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQixRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzs7b0JBQ2hCLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELFdBQVc7b0JBQ1QsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQzs7b0JBQ2hFLE9BQU8sR0FDWCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7b0JBQ1YsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO29CQUMvQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFFakIsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQzFELFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5QztxQkFBTTs7d0JBQ0MsU0FBUyxHQUFHLFdBQVc7d0JBQzNCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUM7d0JBQ3BDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzVCLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUM7aUJBQ2hFO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsRUFBRTtvQkFDMUIsUUFBUTt3QkFDTixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNuQyxHQUFHOzRCQUNILFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3hEO3FCQUFNO29CQUNMLFFBQVE7d0JBQ04sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDbkMsR0FBRzs0QkFDSCxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDcEM7YUFDRjtTQUNGO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTSxFQUFFO2dCQUM3QixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3pDO2lCQUFNO2dCQUNMLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNsQztTQUNGO1FBQ0QsSUFDRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHO1lBQ3JDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFDckM7WUFDQSxRQUFRLEdBQUcsR0FBRyxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksS0FBSyxHQUFHLEVBQUU7WUFDbkMsS0FBSyxHQUFHLEtBQUcsSUFBSSxHQUFHLFFBQVUsQ0FBQztZQUM3QixRQUFRLEdBQUcsS0FBRyxJQUFJLEdBQUcsUUFBVSxDQUFDO1NBQ2pDO2FBQU07WUFDTCxLQUFLLEdBQUcsUUFBUSxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOztnQkEvSEYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLElBQUksRUFBRTt3QkFDSixXQUFXLEVBQUUsZ0JBQWdCO3dCQUM3QixhQUFhLEVBQUUsdUJBQXVCO3dCQUN0QyxZQUFZLEVBQUUsaUJBQWlCO3FCQUNoQztpQkFDRjs7OztnQkFaQyxVQUFVO2dCQURWLFNBQVM7Z0JBR0YsUUFBUTs7O2dDQVlkLEtBQUs7Z0NBQ0wsS0FBSztzQkFDTCxLQUFLOzRCQUNMLEtBQUs7NkJBQ0wsS0FBSzs0QkFDTCxZQUFZLFNBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7SUFrSDFDLHNCQUFDO0NBQUEsQUFoSUQsSUFnSUM7U0F4SFksZUFBZTs7O0lBQzFCLHdDQUE0Qjs7SUFDNUIsd0NBQTRCOztJQUM1Qiw4QkFBaUI7O0lBQ2pCLG9DQUE0Qjs7SUFDNUIscUNBQTJCOztJQUMzQixvQ0FBNkQ7O0lBQzdELGlDQUFlOztJQUdiLDZCQUFxQjs7SUFFckIsOEJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5wdXQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBSZW5kZXJlcjIsXG4gIEVsZW1lbnRSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBQbGF0Zm9ybSwgSW9uVGV4dCB9IGZyb20gXCJAaW9uaWMvYW5ndWxhclwiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbaW9uS3JlRm9ybUZsb2F0XVwiLFxuICBob3N0OiB7XG4gICAgXCIoaW9uQmx1cilcIjogXCJvbkJsdXIoJGV2ZW50KVwiLFxuICAgIFwiKGlvbkNoYW5nZSlcIjogXCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIixcbiAgICBcIihpb25Gb2N1cylcIjogXCJvbmZvY3VzKCRldmVudClcIixcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgSW9uS3JlRm9ybUZsb2F0IHtcbiAgQElucHV0KCkgc2VsZWN0ZWRDb2xvciA9IFwiXCI7XG4gIEBJbnB1dCgpIGRlY2ltYWxOdW1iZXIgPSAtMTsgLy8g5L+d55WZ5bCP5pWw5L2N5pWwLOm7mOiupOS4jemZkOWItlxuICBASW5wdXQoKSBtYXggPSA2O1xuICBASW5wdXQoKSBmbG9hdHR5cGUgPSBcImJhc2VcIjsgLy8g5Zu65a6a5pW05pWw5Y+WNuS9jSBiYXNlOuWFvOWuuemZpOa1geeoi+WklueahOaVsOWtl+eyvuW6puaYvuekuu+8jOS4umJhc2XooajnpLrmlbTmlbDlm7rlrprlj5Y25L2NXG4gIEBJbnB1dCgpIGFsbG93bWludXMgPSB0cnVlOyAvLyDlhYHorrjotJ/mlbAgIC10cnVlIOWFgeiuuCAtZmFsc2Ug5LiN5YWB6K64XG4gIEBDb250ZW50Q2hpbGQoSW9uVGV4dCwgeyBzdGF0aWM6IGZhbHNlIH0pIF9pb25JbnB1dDogSW9uVGV4dDtcbiAgaXNibHVyID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHVibGljIHBsdDogUGxhdGZvcm1cbiAgKSB7fVxuICBvbmZvY3VzKGUpIHtcbiAgICB0aGlzLmlzYmx1ciA9IGZhbHNlO1xuICB9XG4gIG9uQmx1cihlKSB7XG4gICAgdGhpcy5pc2JsdXIgPSB0cnVlO1xuXG4gICAgaWYgKGUuY3VycmVudFRhcmdldC52YWx1ZSAhPT0gXCJcIiAmJiAhaXNOYU4oZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSkge1xuICAgICAgbGV0IHZhbDogYW55ID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuXG4gICAgICBpZiAodGhpcy5kZWNpbWFsTnVtYmVyID4gLTEpIHtcbiAgICAgICAgdmFsID0gTnVtYmVyKGUuY3VycmVudFRhcmdldC52YWx1ZSkudG9GaXhlZCh0aGlzLmRlY2ltYWxOdW1iZXIpO1xuICAgICAgfVxuICAgICAgZS5jdXJyZW50VGFyZ2V0LnZhbHVlID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICBlLmN1cnJlbnRUYXJnZXQudmFsdWUgPSBcIlwiO1xuICAgIH1cbiAgfVxuICBvbk1vZGVsQ2hhbmdlKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNibHVyKSByZXR1cm47XG4gICAgbGV0IHsgdmFsdWUgfSA9IGV2ZW50LmRldGFpbDtcbiAgICBpZiAodmFsdWUgPT09IDApIHZhbHVlID0gXCJcIjtcbiAgICBpZiAoIV8uaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWUgPSB2YWx1ZSA9IHRoaXMuY2hlY2tWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIGNoZWNrVmFsdWUoZXZlbnQpIHtcbiAgICBsZXQgb2xkVmFsdWUgPSBldmVudDtcbiAgICBsZXQgbWFyayA9IFwiXCI7XG4gICAgaWYgKHRoaXMuYWxsb3dtaW51cykge1xuICAgICAgbWFyayA9IGV2ZW50LmNoYXJBdCgwKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGVjaW1hbE51bWJlciA9PT0gMCkge1xuICAgICAgaWYgKF8uaXNOdW1iZXIob2xkVmFsdWUpKSB7XG4gICAgICAgIG9sZFZhbHVlID0gTnVtYmVyKG9sZFZhbHVlKS50b0ZpeGVkKDApOyAvLyAg5L+d55WZ5pW05pWwXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBvbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvbGRWYWx1ZSA9IG9sZFZhbHVlLnJlcGxhY2UoL1teXFxkXFwuXS9nLCBcIlwiKTsgLy8g5riF6ZmkXCLmlbDlrZdcIuWSjFwiLlwi5Lul5aSW55qE5a2X56ymXG4gICAgfVxuICAgIGxldCBuZXdWYWx1ZTogYW55ID0gXCJcIjtcblxuICAgIGlmIChvbGRWYWx1ZSA9PT0gXCIuXCIpIHtcbiAgICAgIG5ld1ZhbHVlID0gXCJcIjtcbiAgICB9IGVsc2UgaWYgKG9sZFZhbHVlLmluZGV4T2YoXCIuXCIpID49IDApIHtcbiAgICAgIGlmICh0aGlzLmZsb2F0dHlwZSAhPT0gXCJiYXNlXCIpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBldmVudC5pbmRleE9mKFwiLlwiKTtcbiAgICAgICAgY29uc3Qgb3BpbnRJbkxhc3QgPSBldmVudC5sYXN0SW5kZXhPZihcIi5cIikgPT09IGV2ZW50Lmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IHRvdGxhTGVuZ3RoID1cbiAgICAgICAgICBpbmRleCAhPT0gLTEgJiYgIW9waW50SW5MYXN0ID8gdGhpcy5tYXggKyAxIDogdGhpcy5tYXg7XG4gICAgICAgIGV2ZW50ID0gdG90bGFMZW5ndGggPiAwID8gZXZlbnQuc3Vic3RyKDAsIHRvdGxhTGVuZ3RoKSA6IGV2ZW50O1xuXG4gICAgICAgIG9sZFZhbHVlID0gb2xkVmFsdWUuc3BsaXQoXCIuXCIpO1xuICAgICAgICBvbGRWYWx1ZS5sZW5ndGggPSAyO1xuICAgICAgICBsZXQgZmxvYXRMZW5ndGggPSBvbGRWYWx1ZVsxXSA/IG9sZFZhbHVlWzFdLmxlbmd0aCA6IDA7XG4gICAgICAgIGZsb2F0TGVuZ3RoID1cbiAgICAgICAgICBmbG9hdExlbmd0aCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGZsb2F0TGVuZ3RoO1xuICAgICAgICBjb25zdCBpbnRQYXJ0ID1cbiAgICAgICAgICB0aGlzLm1heCA+IDBcbiAgICAgICAgICAgID8gb2xkVmFsdWVbMF0uc3Vic3RyKDAsIHRoaXMubWF4IC0gZmxvYXRMZW5ndGgpXG4gICAgICAgICAgICA6IG9sZFZhbHVlWzBdO1xuXG4gICAgICAgIGlmICh0aGlzLmRlY2ltYWxOdW1iZXIgPT09IDAgfHwgaW50UGFydC5sZW5ndGggPj0gdGhpcy5tYXgpIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IFN0cmluZyhNYXRoLmFicyhOdW1iZXIoaW50UGFydCkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBmbG9hdFBhcnQgPSBmbG9hdExlbmd0aFxuICAgICAgICAgICAgPyBvbGRWYWx1ZVsxXS5zdWJzdHIoMCwgZmxvYXRMZW5ndGgpXG4gICAgICAgICAgICA6IG9sZFZhbHVlWzFdLnN1YnN0cigwLCAzKTtcbiAgICAgICAgICBuZXdWYWx1ZSA9IFN0cmluZyhNYXRoLmFicyhOdW1iZXIoaW50UGFydCkpICsgXCIuXCIgKyBmbG9hdFBhcnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5kZWNpbWFsTnVtYmVyID4gMCkge1xuICAgICAgICAgIG5ld1ZhbHVlID1cbiAgICAgICAgICAgIG9sZFZhbHVlLnNwbGl0KFwiLlwiKVswXS5zdWJzdHIoMCwgNikgK1xuICAgICAgICAgICAgXCIuXCIgK1xuICAgICAgICAgICAgb2xkVmFsdWUuc3BsaXQoXCIuXCIpWzFdLnN1YnN0cigwLCB0aGlzLmRlY2ltYWxOdW1iZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1ZhbHVlID1cbiAgICAgICAgICAgIG9sZFZhbHVlLnNwbGl0KFwiLlwiKVswXS5zdWJzdHIoMCwgNikgK1xuICAgICAgICAgICAgXCIuXCIgK1xuICAgICAgICAgICAgb2xkVmFsdWUuc3BsaXQoXCIuXCIpWzFdLnN1YnN0cigwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5mbG9hdHR5cGUgIT09IFwiYmFzZVwiKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUuc3Vic3RyKDAsIHRoaXMubWF4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUuc3Vic3RyKDAsIDYpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBTdHJpbmcobmV3VmFsdWUpLnN1YnN0cigwLCAxKSA9PT0gXCIwXCIgJiZcbiAgICAgIFN0cmluZyhuZXdWYWx1ZSkuc3Vic3RyKDEsIDEpICE9PSBcIi5cIlxuICAgICkge1xuICAgICAgbmV3VmFsdWUgPSBcIjBcIjtcbiAgICB9XG4gICAgaWYgKHRoaXMuYWxsb3dtaW51cyAmJiBtYXJrID09PSBcIi1cIikge1xuICAgICAgZXZlbnQgPSBgJHttYXJrfSR7bmV3VmFsdWV9YDtcbiAgICAgIG5ld1ZhbHVlID0gYCR7bWFya30ke25ld1ZhbHVlfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50ID0gbmV3VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBldmVudDtcbiAgfVxufVxuIl19