com.phloxui
Version:
PhloxUI Ng2+ Framework
302 lines (301 loc) • 19.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { AbstractI18NApplicable } from '../../share/AbstractI18NApplicable';
import { Option } from '../../decorator/Option.decorator';
import { TableCellModel } from './TableCellModel';
export class TableRowModel extends AbstractI18NApplicable {
/**
* @param {?} tableModel
*/
constructor(tableModel) {
super();
this.tableModel = tableModel;
this.cellModels = [];
// Set default values
this.editable = false;
this.resizable = false;
this.selectable = false;
this.draggable = false;
}
/**
* @param {?} options
* @return {?}
*/
setOptions(options) {
// Call super.setOptions() to auto resolve @Option fields
super.setOptions(options);
// Call set component type name to auto resolve compoent type
this.setComponentTypeName(this.getComponentTypeName());
}
/**
* @return {?}
*/
isEditable() {
return this.editable;
}
/**
* @param {?} editable
* @return {?}
*/
setEditable(editable) {
this.editable = editable;
}
/**
* @return {?}
*/
isResizable() {
return this.resizable;
}
/**
* @param {?} resizable
* @return {?}
*/
setResizable(resizable) {
this.resizable = resizable;
}
/**
* @return {?}
*/
isSelectable() {
return this.selectable;
}
/**
* @param {?} selectable
* @return {?}
*/
setSelectable(selectable) {
this.selectable = selectable;
}
/**
* @return {?}
*/
isDraggable() {
return this.draggable;
}
/**
* @param {?} draggable
* @return {?}
*/
setDraggable(draggable) {
this.draggable = draggable;
}
/**
* @return {?}
*/
getHeight() {
return this.height;
}
/**
* @param {?} height
* @return {?}
*/
setHeight(height) {
this.height = height;
}
/**
* @return {?}
*/
getTableModel() {
return this.tableModel;
}
/**
* @param {?} typeName
* @return {?}
*/
resolveType(typeName) {
if (this.tableModel === null && typeof this.tableModel === 'undefined') {
return null;
}
return this.tableModel.resolveType(typeName);
}
/**
* @return {?}
*/
getComponentTypeName() {
return this.componentTypeName;
}
/**
* @param {?} typeName
* @return {?}
*/
setComponentTypeName(typeName) {
this.componentTypeName = typeName;
this.componentType = this.resolveType(typeName);
}
/**
* @return {?}
*/
getComponentOptions() {
return this.componentOptions;
}
/**
* @param {?} options
* @return {?}
*/
setComponentOptions(options) {
this.componentOptions = options;
}
/**
* @return {?}
*/
getComponentType() {
return this.componentType;
}
/**
* @return {?}
*/
getCSSClass() {
return this.cssClass;
}
/**
* @param {?} clazz
* @return {?}
*/
setCSSClass(clazz) {
this.cssClass = clazz;
}
/**
* @return {?}
*/
getCellModels() {
return [].concat(this.cellModels);
}
/**
* @param {?} index
* @return {?}
*/
getCellModelByIndex(index) {
if (typeof index !== 'number') {
return null;
}
if (index < 0 || index >= this.cellModels.length) {
return null;
}
return this.cellModels[index];
}
/**
* @param {?} cellModel
* @return {?}
*/
getCellModelIndex(cellModel) {
if (cellModel === null || typeof cellModel === 'undefined') {
return -1;
}
return this.cellModels.indexOf(cellModel);
}
/**
* @return {?}
*/
_clear() {
this.cellModels = [];
}
/**
* @param {?} index
* @param {?} options
* @return {?}
*/
_addCellModelAtIndex(index, options) {
if (typeof index !== 'number') {
index = this.cellModels.length;
}
if (index < 0 || index > this.cellModels.length) {
throw new Error('The given "index" is out of bound [len=' + this.cellModels.length + ']');
}
let /** @type {?} */ cellModel = new TableCellModel(this);
cellModel.setOptions(options);
// Insert cellModel into specified "index".
this.cellModels.splice(index, 0, cellModel);
return cellModel;
}
/**
* @param {?} options
* @return {?}
*/
_addCellModel(options) {
return this._addCellModelAtIndex(this.cellModels.length, options);
}
/**
* @param {?} cellModel
* @return {?}
*/
_removeCellModel(cellModel) {
let /** @type {?} */ index = this.getCellModelIndex(cellModel);
if (index < 0) {
return false;
}
this.cellModels.splice(index, 1);
return true;
}
/**
* @param {?} index
* @return {?}
*/
_removeCellModelByIndex(index) {
let /** @type {?} */ cellModel = this.getCellModelByIndex(index);
if (cellModel === null) {
return null;
}
this.cellModels.splice(index, 1);
return cellModel;
}
}
tslib_1.__decorate([
Option('type'),
tslib_1.__metadata("design:type", String)
], TableRowModel.prototype, "componentTypeName", void 0);
tslib_1.__decorate([
Option('options'),
tslib_1.__metadata("design:type", Object)
], TableRowModel.prototype, "componentOptions", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], TableRowModel.prototype, "editable", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], TableRowModel.prototype, "resizable", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], TableRowModel.prototype, "selectable", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], TableRowModel.prototype, "draggable", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], TableRowModel.prototype, "height", void 0);
tslib_1.__decorate([
Option('class'),
tslib_1.__metadata("design:type", String)
], TableRowModel.prototype, "cssClass", void 0);
function TableRowModel_tsickle_Closure_declarations() {
/** @type {?} */
TableRowModel.prototype.componentTypeName;
/** @type {?} */
TableRowModel.prototype.componentOptions;
/** @type {?} */
TableRowModel.prototype.editable;
/** @type {?} */
TableRowModel.prototype.resizable;
/** @type {?} */
TableRowModel.prototype.selectable;
/** @type {?} */
TableRowModel.prototype.draggable;
/** @type {?} */
TableRowModel.prototype.height;
/** @type {?} */
TableRowModel.prototype.cssClass;
/** @type {?} */
TableRowModel.prototype.tableModel;
/** @type {?} */
TableRowModel.prototype.componentType;
/** @type {?} */
TableRowModel.prototype.cellModels;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVSb3dNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9tb2RlbC9UYWJsZVJvd01vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSTFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRCxNQUFNLG9CQUFxQixTQUFRLHNCQUFzQjs7OztnQkF1QnBDLFVBQXNCO1FBQ3ZDLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7O1FBR3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDOzs7Ozs7SUFJbEIsVUFBVSxDQUFDLE9BQVk7O1FBRTVCLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7O1FBRzFCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDOzs7OztJQUdsRCxVQUFVO1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Ozs7OztJQUdoQixXQUFXLENBQUMsUUFBaUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7Ozs7O0lBR3BCLFdBQVc7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Ozs7OztJQUdqQixZQUFZLENBQUMsU0FBa0I7UUFDcEMsSUFBSSxDQUFD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LEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFakMsTUFBTSxDQUFDLFNBQVMsQ0FBQzs7Q0FHcEI7O0lBck1FLE1BQU0sQ0FBQyxNQUFNLENBQUM7Ozs7SUFFZCxNQUFNLENBQUMsU0FBUyxDQUFDOzs7O0lBRWpCLE1BQU0sRUFBRTs7OztJQUVSLE1BQU0sRUFBRTs7OztJQUVSLE1BQU0sRUFBRTs7OztJQUVSLE1BQU0sRUFBRTs7OztJQUVSLE1BQU0sRUFBRTs7OztJQUVSLE1BQU0sQ0FBQyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFic3RyYWN0STE4TkFwcGxpY2FibGUgfSBmcm9tICcuLi8uLi9zaGFyZS9BYnN0cmFjdEkxOE5BcHBsaWNhYmxlJztcblxuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgSTE4TiB9IGZyb20gJy4uLy4uL2RlY29yYXRvci9JMThOLmRlY29yYXRvcic7XG5cbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuL1RhYmxlTW9kZWwnO1xuaW1wb3J0IHsgVGFibGVDZWxsTW9kZWwgfSBmcm9tICcuL1RhYmxlQ2VsbE1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlUm93TW9kZWwgZXh0ZW5kcyBBYnN0cmFjdEkxOE5BcHBsaWNhYmxlIHtcblxuICBAT3B0aW9uKCd0eXBlJylcbiAgcHJvdGVjdGVkIGNvbXBvbmVudFR5cGVOYW1lOiBzdHJpbmc7XG4gIEBPcHRpb24oJ29wdGlvbnMnKVxuICBwcm90ZWN0ZWQgY29tcG9uZW50T3B0aW9uczogYW55O1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGVkaXRhYmxlOiBib29sZWFuO1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIHJlc2l6YWJsZTogYm9vbGVhbjtcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBzZWxlY3RhYmxlOiBib29sZWFuO1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRyYWdnYWJsZTogYm9vbGVhbjtcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBoZWlnaHQ6IHN0cmluZztcbiAgQE9wdGlvbignY2xhc3MnKVxuICBwcm90ZWN0ZWQgY3NzQ2xhc3M6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgdGFibGVNb2RlbDogVGFibGVNb2RlbDtcbiAgcHJvdGVjdGVkIGNvbXBvbmVudFR5cGU6IFR5cGU8YW55PjtcbiAgcHJvdGVjdGVkIGNlbGxNb2RlbHM6IFRhYmxlQ2VsbE1vZGVsW107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHRhYmxlTW9kZWw6IFRhYmxlTW9kZWwpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy50YWJsZU1vZGVsID0gdGFibGVNb2RlbDtcbiAgICB0aGlzLmNlbGxNb2RlbHMgPSBbXTtcblxuICAgIC8vIFNldCBkZWZhdWx0IHZhbHVlc1xuICAgIHRoaXMuZWRpdGFibGUgPSBmYWxzZTtcbiAgICB0aGlzLnJlc2l6YWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0YWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuZHJhZ2dhYmxlID0gZmFsc2U7XG4gIH1cblxuICAvLyBPdmVycmlkZVxuICBwdWJsaWMgc2V0T3B0aW9ucyhvcHRpb25zOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBDYWxsIHN1cGVyLnNldE9wdGlvbnMoKSB0byBhdXRvIHJlc29sdmUgQE9wdGlvbiBmaWVsZHNcbiAgICBzdXBlci5zZXRPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgLy8gQ2FsbCBzZXQgY29tcG9uZW50IHR5cGUgbmFtZSB0byBhdXRvIHJlc29sdmUgY29tcG9lbnQgdHlwZVxuICAgIHRoaXMuc2V0Q29tcG9uZW50VHlwZU5hbWUodGhpcy5nZXRDb21wb25lbnRUeXBlTmFtZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0VkaXRhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVkaXRhYmxlO1xuICB9XG5cbiAgcHVibGljIHNldEVkaXRhYmxlKGVkaXRhYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0YWJsZSA9IGVkaXRhYmxlO1xuICB9XG5cbiAgcHVibGljIGlzUmVzaXphYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc2l6YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSZXNpemFibGUocmVzaXphYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemFibGUgPSByZXNpemFibGU7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxlY3RhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGU7XG4gIH1cblxuICBwdWJsaWMgc2V0U2VsZWN0YWJsZShzZWxlY3RhYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RhYmxlID0gc2VsZWN0YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0RyYWdnYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kcmFnZ2FibGU7XG4gIH1cblxuICBwdWJsaWMgc2V0RHJhZ2dhYmxlKGRyYWdnYWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZHJhZ2dhYmxlID0gZHJhZ2dhYmxlO1xuICB9XG5cbiAgcHVibGljIGdldEhlaWdodCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmhlaWdodDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRIZWlnaHQoaGVpZ2h0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUYWJsZU1vZGVsKCk6IFRhYmxlTW9kZWwge1xuICAgIHJldHVybiB0aGlzLnRhYmxlTW9kZWw7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZVR5cGUodHlwZU5hbWU6IHN0cmluZyk6IFR5cGU8YW55PiB7XG4gICAgaWYgKHRoaXMudGFibGVNb2RlbCA9PT0gbnVsbCAmJiB0eXBlb2YgdGhpcy50YWJsZU1vZGVsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFibGVNb2RlbC5yZXNvbHZlVHlwZSh0eXBlTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tcG9uZW50VHlwZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRUeXBlTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb21wb25lbnRUeXBlTmFtZSh0eXBlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnRUeXBlTmFtZSA9IHR5cGVOYW1lO1xuICAgIHRoaXMuY29tcG9uZW50VHlwZSA9IHRoaXMucmVzb2x2ZVR5cGUodHlwZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudE9wdGlvbnMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHNldENvbXBvbmVudE9wdGlvbnMob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnRPcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb21wb25lbnRUeXBlKCk6IFR5cGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDU1NDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNzc0NsYXNzO1xuICB9XG5cbiAgcHVibGljIHNldENTU0NsYXNzKGNsYXp6OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNzc0NsYXNzID0gY2xheno7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbE1vZGVscygpOiBUYWJsZUNlbGxNb2RlbFtdIHtcbiAgICByZXR1cm4gW10uY29uY2F0KHRoaXMuY2VsbE1vZGVscyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbE1vZGVsQnlJbmRleChpbmRleDogbnVtYmVyKTogVGFibGVDZWxsTW9kZWwge1xuICAgIGlmICh0eXBlb2YgaW5kZXggIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmNlbGxNb2RlbHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jZWxsTW9kZWxzW2luZGV4XTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDZWxsTW9kZWxJbmRleChjZWxsTW9kZWw6IFRhYmxlQ2VsbE1vZGVsKTogbnVtYmVyIHtcbiAgICBpZiAoY2VsbE1vZGVsID09PSBudWxsIHx8IHR5cGVvZiBjZWxsTW9kZWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2VsbE1vZGVscy5pbmRleE9mKGNlbGxNb2RlbCk7XG4gIH1cblxuICBwdWJsaWMgX2NsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuY2VsbE1vZGVscyA9IFtdO1xuICB9XG5cbiAgcHVibGljIF9hZGRDZWxsTW9kZWxBdEluZGV4KGluZGV4OiBudW1iZXIsIG9wdGlvbnM6IGFueSk6IFRhYmxlQ2VsbE1vZGVsIHtcbiAgICBpZiAodHlwZW9mIGluZGV4ICE9PSAnbnVtYmVyJykge1xuICAgICAgaW5kZXggPSB0aGlzLmNlbGxNb2RlbHMubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gdGhpcy5jZWxsTW9kZWxzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZ2l2ZW4gXCJpbmRleFwiIGlzIG91dCBvZiBib3VuZCBbbGVuPScgKyB0aGlzLmNlbGxNb2RlbHMubGVuZ3RoICsgJ10nKTtcbiAgICB9XG5cbiAgICBsZXQgY2VsbE1vZGVsOiBUYWJsZUNlbGxNb2RlbCA9IG5ldyBUYWJsZUNlbGxNb2RlbCh0aGlzKTtcblxuICAgIGNlbGxNb2RlbC5zZXRPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgLy8gSW5zZXJ0IGNlbGxNb2RlbCBpbnRvIHNwZWNpZmllZCBcImluZGV4XCIuXG4gICAgdGhpcy5jZWxsTW9kZWxzLnNwbGljZShpbmRleCwgMCwgY2VsbE1vZGVsKTtcblxuICAgIHJldHVybiBjZWxsTW9kZWw7XG4gIH1cblxuICBwdWJsaWMgX2FkZENlbGxNb2RlbChvcHRpb25zOiBhbnkpOiBUYWJsZUNlbGxNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENlbGxNb2RlbEF0SW5kZXgodGhpcy5jZWxsTW9kZWxzLmxlbmd0aCwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgX3JlbW92ZUNlbGxNb2RlbChjZWxsTW9kZWw6IFRhYmxlQ2VsbE1vZGVsKTogYm9vbGVhbiB7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLmdldENlbGxNb2RlbEluZGV4KGNlbGxNb2RlbCk7XG5cbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5jZWxsTW9kZWxzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBfcmVtb3ZlQ2VsbE1vZGVsQnlJbmRleChpbmRleDogbnVtYmVyKTogVGFibGVDZWxsTW9kZWwge1xuICAgIGxldCBjZWxsTW9kZWw6IFRhYmxlQ2VsbE1vZGVsID0gdGhpcy5nZXRDZWxsTW9kZWxCeUluZGV4KGluZGV4KTtcblxuICAgIGlmIChjZWxsTW9kZWwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuY2VsbE1vZGVscy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgcmV0dXJuIGNlbGxNb2RlbDtcbiAgfVxuXG59XG4iXX0=