chi-app-lib
Version:
This is a custom component (input dropdown grid textarea map captcha) published to npm.
368 lines • 25.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, forwardRef, Output, EventEmitter } from '@angular/core';
import { FormControl, Validators, NG_VALUE_ACCESSOR } from '@angular/forms';
/** @type {?} */
var noop = (/**
* @return {?}
*/
function () {
});
var ɵ0 = noop;
/**
* Error when invalid control is dirty or touched
*/
var /**
* Error when invalid control is dirty or touched
*/
TextAreaErrorStateMatcher = /** @class */ (function () {
function TextAreaErrorStateMatcher() {
}
/**
* @param {?} control
* @param {?} form
* @return {?}
*/
TextAreaErrorStateMatcher.prototype.isErrorState = /**
* @param {?} control
* @param {?} form
* @return {?}
*/
function (control, form) {
return !!(control && control.invalid && (control.dirty || control.touched));
};
return TextAreaErrorStateMatcher;
}());
/**
* Error when invalid control is dirty or touched
*/
export { TextAreaErrorStateMatcher };
/** @type {?} */
export var Text_Area_Component_CONTROL_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
function () { return TextAreaComponent; })),
multi: true
};
var TextAreaComponent = /** @class */ (function () {
function TextAreaComponent() {
this.type = 'text';
this.direction = 'rtl';
this.pattern = '';
this.showValidatorMessage = true;
this.isValid = new EventEmitter();
this.matcher = new TextAreaErrorStateMatcher();
this.id = 'chi-textarea' + this.idGenerator();
this.element = new FormControl('');
// The internal data model
this.innerValue = '';
// Placeholders for the callbacks which are later provided
// by the Control Value Accessor
this.onTouchedCallback = noop;
this.onChangeCallback = noop;
if (this.required && this.minLength && this.maxLength && this.pattern) {
this.element = new FormControl('', [
Validators.required,
Validators.pattern(this.pattern),
Validators.minLength(this.minLength),
Validators.maxLength(this.maxLength)
]);
}
else if (this.required && !this.minLength && !this.maxLength && !this.pattern) {
this.element = new FormControl('', [Validators.required]);
}
else if (!this.required && !this.minLength && !this.maxLength && this.pattern) {
this.element = new FormControl('', [Validators.maxLength(this.maxLength)]);
}
else if (!this.required && this.minLength && !this.maxLength && !this.pattern) {
this.element = new FormControl('', [Validators.minLength(this.minLength)]);
}
else if (!this.required && !this.minLength && this.maxLength && !this.pattern) {
this.element = new FormControl('', [Validators.maxLength(this.maxLength)]);
}
}
Object.defineProperty(TextAreaComponent.prototype, "value", {
//
// get accessor
get:
//
// get accessor
/**
* @return {?}
*/
function () {
return this.innerValue;
},
// set accessor including call the onchange callback
set:
// set accessor including call the onchange callback
/**
* @param {?} v
* @return {?}
*/
function (v) {
var _this = this;
if (v !== this.innerValue) {
this.innerValue = v;
this.onChangeCallback(v);
setTimeout((/**
* @param {?} _
* @return {?}
*/
function (_) {
_this.isValid.emit(_this.element.valid);
}), 100);
}
},
enumerable: true,
configurable: true
});
// Set touched on blur
// Set touched on blur
/**
* @param {?} validate
* @return {?}
*/
TextAreaComponent.prototype.onBlur =
// Set touched on blur
/**
* @param {?} validate
* @return {?}
*/
function (validate) {
this.onTouchedCallback();
this.isValid.emit(this.element.valid);
};
// From ControlValueAccessor interface
// From ControlValueAccessor interface
/**
* @param {?} value
* @return {?}
*/
TextAreaComponent.prototype.writeValue =
// From ControlValueAccessor interface
/**
* @param {?} value
* @return {?}
*/
function (value) {
var _this = this;
if (value !== this.innerValue) {
this.innerValue = value;
setTimeout((/**
* @param {?} _
* @return {?}
*/
function (_) {
_this.isValid.emit(_this.element.valid);
}), 100);
}
};
// From ControlValueAccessor interface
// From ControlValueAccessor interface
/**
* @param {?} fn
* @return {?}
*/
TextAreaComponent.prototype.registerOnChange =
// From ControlValueAccessor interface
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onChangeCallback = fn;
};
// From ControlValueAccessor interface
// From ControlValueAccessor interface
/**
* @param {?} fn
* @return {?}
*/
TextAreaComponent.prototype.registerOnTouched =
// From ControlValueAccessor interface
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onTouchedCallback = fn;
};
/**
* @param {?} event
* @param {?} validate
* @return {?}
*/
TextAreaComponent.prototype.changedInput = /**
* @param {?} event
* @param {?} validate
* @return {?}
*/
function (event, validate) {
var _this = this;
setTimeout((/**
* @param {?} _
* @return {?}
*/
function (_) {
_this.isValid.emit(_this.element.valid);
}), 100);
};
/**
* @param {?} validate
* @return {?}
*/
TextAreaComponent.prototype.onFocused = /**
* @param {?} validate
* @return {?}
*/
function (validate) {
this.isValid.emit(this.element.valid);
};
/**
* @return {?}
*/
TextAreaComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
};
/**
* @param {?} changes
* @return {?}
*/
TextAreaComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
/** @type {?} */
var name = changes.isDirty;
if ((name || {})['currentValue']) {
this.element.markAsDirty({ onlySelf: true });
}
};
/**
* @return {?}
*/
TextAreaComponent.prototype.getErrorMessage = /**
* @return {?}
*/
function () {
return this.element.hasError('required') ? ' لا يمكن أن يكون هذا الحقل فارغًا!' :
this.element.hasError('pattern') ? 'رقم غیر صحیح!' :
this.element.hasError('minlength') ? ' حداقل ' + this.minLength + ' کاراکتر وارد نمایید!' :
this.element.hasError('maxlength') ? ' حداکثر ' + this.maxLength + ' کاراکتر وارد نمایید!' :
'';
};
/**
* @param {?} val
* @return {?}
*/
TextAreaComponent.prototype.getElement = /**
* @param {?} val
* @return {?}
*/
function (val) {
// console.log(val);
};
/**
* @return {?}
*/
TextAreaComponent.prototype.idGenerator = /**
* @return {?}
*/
function () {
/** @type {?} */
var number = Math.random();
number.toString(36);
return number.toString(36).substr(2, 9);
};
TextAreaComponent.decorators = [
{ type: Component, args: [{
selector: 'lib-text-area',
template: "<div class=\"element-container\" [ngClass]=\"className\" dir=\"{{direction}}\">\n <mat-form-field [hideRequiredMarker]=\"true\">\n <textarea matInput\n id=\"{{id}}\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"2\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"{{placeHolder}}\"\n [formControl]=\"element\"\n required=\"{{required}}\"\n [(ngModel)]=\"value\"\n (input)=\"getElement($event)\"\n [disabled]=\"readonly\"\n [minlength]=\"minLength\"\n [maxlength]=\"maxLength\"\n (ngModelChange)=\"changedInput($event,element.valid)\"\n (focus)=\"onFocused(element.valid)\"\n (blur)=\"onBlur(element.valid)\"\n [errorStateMatcher]=\"matcher\">\n </textarea>\n\n <mat-hint align=\"end\" *ngIf=\"showCountValue\">\n {{(value || '').length}}/{{maxLength}}\n </mat-hint>\n\n <mat-hint align=\"start\" *ngIf=\"hintText\"><strong>{{hintText}}</strong></mat-hint>\n <mat-error *ngIf=\"element.invalid&&showValidatorMessage\">{{getErrorMessage()}}</mat-error>\n </mat-form-field>\n</div>\n",
providers: [Text_Area_Component_CONTROL_VALUE_ACCESSOR],
styles: [".element-container{display:flex;flex-direction:column}.element-container>*{width:100%}"]
}] }
];
/** @nocollapse */
TextAreaComponent.ctorParameters = function () { return []; };
TextAreaComponent.propDecorators = {
type: [{ type: Input }],
direction: [{ type: Input }],
pattern: [{ type: Input }],
className: [{ type: Input }],
readonly: [{ type: Input }],
required: [{ type: Input }],
placeHolder: [{ type: Input }],
hintText: [{ type: Input }],
minLength: [{ type: Input }],
maxLength: [{ type: Input }],
showCountValue: [{ type: Input }],
isDirty: [{ type: Input }],
showValidatorMessage: [{ type: Input }],
isValid: [{ type: Output }]
};
return TextAreaComponent;
}());
export { TextAreaComponent };
if (false) {
/** @type {?} */
TextAreaComponent.prototype.type;
/** @type {?} */
TextAreaComponent.prototype.direction;
/** @type {?} */
TextAreaComponent.prototype.pattern;
/** @type {?} */
TextAreaComponent.prototype.className;
/** @type {?} */
TextAreaComponent.prototype.readonly;
/** @type {?} */
TextAreaComponent.prototype.required;
/** @type {?} */
TextAreaComponent.prototype.placeHolder;
/** @type {?} */
TextAreaComponent.prototype.hintText;
/** @type {?} */
TextAreaComponent.prototype.minLength;
/** @type {?} */
TextAreaComponent.prototype.maxLength;
/** @type {?} */
TextAreaComponent.prototype.showCountValue;
/** @type {?} */
TextAreaComponent.prototype.isDirty;
/** @type {?} */
TextAreaComponent.prototype.showValidatorMessage;
/** @type {?} */
TextAreaComponent.prototype.isValid;
/** @type {?} */
TextAreaComponent.prototype.name;
/** @type {?} */
TextAreaComponent.prototype.matcher;
/** @type {?} */
TextAreaComponent.prototype.id;
/** @type {?} */
TextAreaComponent.prototype.element;
/**
* @type {?}
* @private
*/
TextAreaComponent.prototype.innerValue;
/**
* @type {?}
* @private
*/
TextAreaComponent.prototype.onTouchedCallback;
/**
* @type {?}
* @private
*/
TextAreaComponent.prototype.onChangeCallback;
}
export { ɵ0 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NoaS1hcHAtbGliLyIsInNvdXJjZXMiOlsibGliL3RleHQtYXJlYS90ZXh0LWFyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFVLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFFM0QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFdBQVcsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBRTNDLE1BQU0sZ0JBQWdCLENBQUM7O0lBSWxCLElBQUk7OztBQUFHO0FBQ2IsQ0FBQyxDQUFBOzs7OztBQUdEOzs7O0lBQUE7SUFJQSxDQUFDOzs7Ozs7SUFIQyxnREFBWTs7Ozs7SUFBWixVQUFhLE9BQTJCLEVBQUUsSUFBd0M7UUFDaEYsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUNILGdDQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7Ozs7OztBQUVELE1BQU0sS0FBTywwQ0FBMEMsR0FBUTtJQUM3RCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVOzs7SUFBQyxjQUFNLE9BQUEsaUJBQWlCLEVBQWpCLENBQWlCLEVBQUM7SUFDaEQsS0FBSyxFQUFFLElBQUk7Q0FDWjtBQUNEO0lBc0ZFO1FBOUVTLFNBQUksR0FBRyxNQUFNLENBQUM7UUFDZCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFVYix5QkFBb0IsR0FBRyxJQUFJLENBQUU7UUFDNUIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFaEQsWUFBTyxHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQztRQUMx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QyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7O2dCQW5JRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLHNzQ0FBeUM7b0JBRXpDLFNBQVMsRUFBRSxDQUFDLDBDQUEwQyxDQUFDOztpQkFDeEQ7Ozs7O3VCQUdFLEtBQUs7NEJBQ0wsS0FBSzswQkFDTCxLQUFLOzRCQUNMLEtBQUs7MkJBQ0wsS0FBSzsyQkFDTCxLQUFLOzhCQUNMLEtBQUs7MkJBQ0wsS0FBSzs0QkFDTCxLQUFLOzRCQUNMLEtBQUs7aUNBQ0wsS0FBSzswQkFDTCxLQUFLO3VDQUNMLEtBQUs7MEJBQ0wsTUFBTTs7SUErR1Qsd0JBQUM7Q0FBQSxBQXBJRCxJQW9JQztTQTlIWSxpQkFBaUI7OztJQUU1QixpQ0FBdUI7O0lBQ3ZCLHNDQUEyQjs7SUFDM0Isb0NBQXNCOztJQUN0QixzQ0FBbUI7O0lBQ25CLHFDQUFrQjs7SUFDbEIscUNBQWtCOztJQUNsQix3Q0FBcUI7O0lBQ3JCLHFDQUFrQjs7SUFDbEIsc0NBQW9COztJQUNwQixzQ0FBb0I7O0lBQ3BCLDJDQUF5Qjs7SUFDekIsb0NBQWtCOztJQUNsQixpREFBc0M7O0lBQ3RDLG9DQUFnRDs7SUFDaEQsaUNBQUs7O0lBQ0wsb0NBQTBDOztJQUMxQywrQkFBeUM7O0lBQ3pDLG9DQUE4Qjs7Ozs7SUFHOUIsdUNBQTZCOzs7OztJQUk3Qiw4Q0FBNkM7Ozs7O0lBQzdDLDZDQUFrRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgZm9yd2FyZFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFNpbXBsZUNoYW5nZXMsIFNpbXBsZUNoYW5nZSxcbiAgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICBOZ0Zvcm1cbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0Vycm9yU3RhdGVNYXRjaGVyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7XG59O1xuXG4vKiogRXJyb3Igd2hlbiBpbnZhbGlkIGNvbnRyb2wgaXMgZGlydHkgb3IgdG91Y2hlZCovXG5leHBvcnQgY2xhc3MgVGV4dEFyZWFFcnJvclN0YXRlTWF0Y2hlciBpbXBsZW1lbnRzIEVycm9yU3RhdGVNYXRjaGVyIHtcbiAgaXNFcnJvclN0YXRlKGNvbnRyb2w6IEZvcm1Db250cm9sIHwgbnVsbCwgZm9ybTogRm9ybUdyb3VwRGlyZWN0aXZlIHwgTmdGb3JtIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiAoY29udHJvbC5kaXJ0eSB8fCBjb250cm9sLnRvdWNoZWQgKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFRleHRfQXJlYV9Db21wb25lbnRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGV4dEFyZWFDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10ZXh0LWFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1hcmVhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1hcmVhLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1RleHRfQXJlYV9Db21wb25lbnRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgVGV4dEFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIHR5cGUgPSAndGV4dCc7XG4gIEBJbnB1dCgpIGRpcmVjdGlvbiA9ICdydGwnO1xuICBASW5wdXQoKSBwYXR0ZXJuID0gJyc7XG4gIEBJbnB1dCgpIGNsYXNzTmFtZTtcbiAgQElucHV0KCkgcmVhZG9ubHk7XG4gIEBJbnB1dCgpIHJlcXVpcmVkO1xuICBASW5wdXQoKSBwbGFjZUhvbGRlcjtcbiAgQElucHV0KCkgaGludFRleHQ7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aCA7XG4gIEBJbnB1dCgpIG1heExlbmd0aCA7XG4gIEBJbnB1dCgpIHNob3dDb3VudFZhbHVlIDtcbiAgQElucHV0KCkgaXNEaXJ0eSA7XG4gIEBJbnB1dCgpIHNob3dWYWxpZGF0b3JNZXNzYWdlID0gdHJ1ZSA7XG4gIEBPdXRwdXQoKSBpc1ZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBuYW1lO1xuICBtYXRjaGVyID0gbmV3IFRleHRBcmVhRXJyb3JTdGF0ZU1hdGNoZXIoKTtcbiAgaWQgPSAnY2hpLXRleHRhcmVhJyArIHRoaXMuaWRHZW5lcmF0b3IoKTtcbiAgZWxlbWVudCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgLy8gVGhlIGludGVybmFsIGRhdGEgbW9kZWxcbiAgcHJpdmF0ZSBpbm5lclZhbHVlOiBhbnkgPSAnJztcblxuICAvLyBQbGFjZWhvbGRlcnMgZm9yIHRoZSBjYWxsYmFja3Mgd2hpY2ggYXJlIGxhdGVyIHByb3ZpZGVkXG4gIC8vIGJ5IHRoZSBDb250cm9sIFZhbHVlIEFjY2Vzc29yXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuICAvL1xuICAvLyBnZXQgYWNjZXNzb3JcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJWYWx1ZTtcbiAgfVxuXG4gIC8vIHNldCBhY2Nlc3NvciBpbmNsdWRpbmcgY2FsbCB0aGUgb25jaGFuZ2UgY2FsbGJhY2tcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIGlmICh2ICE9PSB0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHY7XG4gICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodik7XG4gICAgICBzZXRUaW1lb3V0KF8gPT4ge1xuICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdCh0aGlzLmVsZW1lbnQudmFsaWQpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgdG91Y2hlZCBvbiBibHVyXG4gIG9uQmx1cih2YWxpZGF0ZSkge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmlzVmFsaWQuZW1pdCh0aGlzLmVsZW1lbnQudmFsaWQpO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5pbm5lclZhbHVlKSB7XG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHNldFRpbWVvdXQoXyA9PiB7XG4gICAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KHRoaXMuZWxlbWVudC52YWxpZCk7XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIGNoYW5nZWRJbnB1dChldmVudCwgdmFsaWRhdGUpIHtcbiAgICBzZXRUaW1lb3V0KF8gPT4ge1xuICAgICAgdGhpcy5pc1ZhbGlkLmVtaXQodGhpcy5lbGVtZW50LnZhbGlkKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgb25Gb2N1c2VkKHZhbGlkYXRlKSB7XG4gICAgdGhpcy5pc1ZhbGlkLmVtaXQodGhpcy5lbGVtZW50LnZhbGlkKTtcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiB0aGlzLm1pbkxlbmd0aCAmJiB0aGlzLm1heExlbmd0aCAmJiB0aGlzLnBhdHRlcm4pIHtcbiAgICAgIHRoaXMuZWxlbWVudCA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5wYXR0ZXJuKSxcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5taW5MZW5ndGgpLFxuICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heExlbmd0aCldLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMubWluTGVuZ3RoICYmICF0aGlzLm1heExlbmd0aCAmJiAhdGhpcy5wYXR0ZXJuKSB7XG4gICAgICB0aGlzLmVsZW1lbnQgPSBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5yZXF1aXJlZCAmJiAhdGhpcy5taW5MZW5ndGggJiYgIXRoaXMubWF4TGVuZ3RoICYmIHRoaXMucGF0dGVybikge1xuICAgICAgdGhpcy5lbGVtZW50ID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5tYXhMZW5ndGgpXSk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5yZXF1aXJlZCAmJiB0aGlzLm1pbkxlbmd0aCAmJiAhdGhpcy5tYXhMZW5ndGggJiYgIXRoaXMucGF0dGVybikge1xuICAgICAgdGhpcy5lbGVtZW50ID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5taW5MZW5ndGgpXSk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5yZXF1aXJlZCAmJiAhdGhpcy5taW5MZW5ndGggJiYgdGhpcy5tYXhMZW5ndGggJiYgIXRoaXMucGF0dGVybikge1xuICAgICAgdGhpcy5lbGVtZW50ID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5tYXhMZW5ndGgpXSk7XG4gICAgfVxuXG4gIH1cblxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IG5hbWU6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMuaXNEaXJ0eTtcblxuICAgIGlmICgobmFtZSB8fCB7fSlbJ2N1cnJlbnRWYWx1ZSddKSB7XG4gICAgICB0aGlzLmVsZW1lbnQubWFya0FzRGlydHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cbiAgZ2V0RXJyb3JNZXNzYWdlKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQuaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnINmE2Kcg2YrZhdmD2YYg2KPZhiDZitmD2YjZhiDZh9iw2Kcg2KfZhNit2YLZhCDZgdin2LHYutmL2KchJyA6XG4gICAgICB0aGlzLmVsZW1lbnQuaGFzRXJyb3IoJ3BhdHRlcm4nKSA/ICfYsdmC2YUg2LrbjNixINi12K3bjNitIScgOlxuICAgICAgICB0aGlzLmVsZW1lbnQuaGFzRXJyb3IoJ21pbmxlbmd0aCcpID8gJyDYrdiv2KfZgtmEICcgKyB0aGlzLm1pbkxlbmd0aCArICcg2qnYp9ix2Kfaqdiq2LEg2YjYp9ix2K8g2YbZhdin24zbjNivIScgOlxuICAgICAgICAgIHRoaXMuZWxlbWVudC5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnINit2K/Yp9qp2KvYsSAnICsgdGhpcy5tYXhMZW5ndGggKyAnINqp2KfYsdin2qnYqtixINmI2KfYsdivINmG2YXYp9uM24zYryEnIDpcbiAgICAgICAgICAgICcnO1xuICB9XG4gIGdldEVsZW1lbnQodmFsKSB7XG4gICAgLy8gY29uc29sZS5sb2codmFsKTtcbiAgfVxuICBpZEdlbmVyYXRvcigpIHtcbiAgICBjb25zdCBudW1iZXIgPSBNYXRoLnJhbmRvbSgpO1xuICAgIG51bWJlci50b1N0cmluZygzNik7XG4gICAgcmV0dXJuIG51bWJlci50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpO1xuICB9XG59XG4iXX0=