UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

990 lines (989 loc) 67.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { EventEmitter } from '@angular/core'; import { ACTIVATE_EVENT, DEACTIVATE_EVENT, ENABLE_EVENT, DISABLE_EVENT, BEFORE_ACTIVATE_EVENT, BEFORE_DEACTIVATE_EVENT, BEFORE_ENABLE_EVENT, BEFORE_DISABLE_EVENT } from '../../share/CustomEventType'; import { AbstractDataView } from './AbstractDataView'; import { Option } from '../../decorator/Option.decorator'; import { EventUtils } from '../../share/utils/EventUtils'; // unsupported: template constraints. /** * @abstract * @template T */ var AbstractAccordion = /** @class */ (function (_super) { tslib_1.__extends(AbstractAccordion, _super); function AbstractAccordion(elementRef) { var _this = _super.call(this, elementRef) || this; _this.itemStatus = []; _this.autoInit = false; _this.multipleExpand = true; _this.activateEvent = new EventEmitter(); _this.deactivateEvent = new EventEmitter(); _this.enableEvent = new EventEmitter(); _this.disableEvent = new EventEmitter(); _this.beforeActivateEvent = new EventEmitter(); _this.beforeDeactivateEvent = new EventEmitter(); _this.beforeEnableEvent = new EventEmitter(); _this.beforeDisableEvent = new EventEmitter(); return _this; } /** * @return {?} */ AbstractAccordion.prototype.ngOnInit = /** * @return {?} */ function () { this.setAccordionItems(this.items); if (this.autoInit !== null && typeof this.autoInit !== 'undefined') { if (this.autoInit) { this.init(); } } }; /** * @param {?} item * @return {?} */ AbstractAccordion.prototype.generateItemStatus = /** * @param {?} item * @return {?} */ function (item) { var /** @type {?} */ result = { active: false, enable: false }; if (item !== null && typeof item !== 'undefined') { result.active = item.active; result.enable = item.enable; } return result; }; /** * @param {?} index * @param {?=} exceptIndex * @return {?} */ AbstractAccordion.prototype.collapseItem = /** * @param {?} index * @param {?=} exceptIndex * @return {?} */ function (index, exceptIndex) { if (index !== null && typeof index !== 'undefined') { if (exceptIndex !== null && exceptIndex !== undefined) { if (index === exceptIndex) { return; } } var /** @type {?} */ item = this.getAccordionItem(index); if (item !== null) { if (item.active) { item.active = false; // update status var /** @type {?} */ status_1 = this.itemStatus[index]; status_1.active = false; } this.onAccordionDeactived(index, item); } } }; /** * @param {?} index * @return {?} */ AbstractAccordion.prototype._activateItem = /** * @param {?} index * @return {?} */ function (index) { if (index === null || index === undefined || index <= -1) { return null; } var /** @type {?} */ item = this.getAccordionItem(index); if (item !== null) { if (!item.active) { item.active = true; // update status var /** @type {?} */ status_2 = this.itemStatus[index]; status_2.active = true; if (!this.multipleExpand) { this.collapseItemAllExceptIndex(index); } this.onAccordionActived(index, item); return item; } } return null; }; /** * @param {?} index * @return {?} */ AbstractAccordion.prototype._deactivateItem = /** * @param {?} index * @return {?} */ function (index) { if (index === null || index === undefined || index <= -1) { return null; } var /** @type {?} */ item = this.getAccordionItem(index); if (item !== null) { if (item.active) { item.active = false; // update status var /** @type {?} */ status_3 = this.itemStatus[index]; status_3.active = false; this.onAccordionDeactived(index, item); return item; } } return null; }; /** * @param {?} index * @return {?} */ AbstractAccordion.prototype._enableItem = /** * @param {?} index * @return {?} */ function (index) { if (index === null || index === undefined || index <= -1) { return null; } var /** @type {?} */ item = this.getAccordionItem(index); if (item !== null && item !== undefined) { if (!item.enable) { item.enable = true; // update status var /** @type {?} */ status_4 = this.itemStatus[index]; status_4.enable = true; this.onAccordionEnabled(index, item); return item; } } return null; }; /** * @param {?} index * @return {?} */ AbstractAccordion.prototype._disableItem = /** * @param {?} index * @return {?} */ function (index) { if (index === null || index === undefined || index <= -1) { return null; } var /** @type {?} */ item = this.getAccordionItem(index); if (item !== null && item !== undefined) { if (item.enable) { this.deactivate(index); item.enable = false; // update status var /** @type {?} */ status_5 = this.itemStatus[index]; status_5.enable = false; this.onAccordionDisabled(index, item); return item; } } return null; }; /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ AbstractAccordion.prototype.emitBeforeActivateEvent = /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ function (item, index, $event) { // emit beforeEvent var /** @type {?} */ bData = { item: item, index: index }; var /** @type {?} */ beforeEV = EventUtils.newCustomEvent(BEFORE_ACTIVATE_EVENT, this, bData, $event); this.beforeActivateEvent.emit(beforeEV); }; /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ AbstractAccordion.prototype.emitActivateEvent = /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ function (item, index, $event) { // emit event var /** @type {?} */ data = { item: item, index: index }; var /** @type {?} */ ev = EventUtils.newCustomEvent(ACTIVATE_EVENT, this, data, $event); this.activateEvent.emit(ev); }; /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ AbstractAccordion.prototype.emitBeforeDeactivateEvent = /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ function (item, index, $event) { // emit beforeEvent var /** @type {?} */ bData = { item: item, index: index }; var /** @type {?} */ beforeEV = EventUtils.newCustomEvent(BEFORE_DEACTIVATE_EVENT, this, bData, $event); this.beforeDeactivateEvent.emit(beforeEV); }; /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ AbstractAccordion.prototype.emitDeactivateEvent = /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ function (item, index, $event) { // emit event var /** @type {?} */ data = { item: item, index: index }; var /** @type {?} */ ev = EventUtils.newCustomEvent(DEACTIVATE_EVENT, this, data, $event); this.deactivateEvent.emit(ev); }; /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ AbstractAccordion.prototype.emitBeforeEnableEvent = /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ function (item, index, $event) { // emit beforeEvent var /** @type {?} */ bData = { item: item, index: index }; var /** @type {?} */ beforeEV = EventUtils.newCustomEvent(BEFORE_ENABLE_EVENT, this, bData, null); this.beforeEnableEvent.emit(beforeEV); }; /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ AbstractAccordion.prototype.emitEnableEvent = /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ function (item, index, $event) { // emit event var /** @type {?} */ data = { item: item, index: index }; var /** @type {?} */ ev = EventUtils.newCustomEvent(ENABLE_EVENT, this, data, $event); this.enableEvent.emit(ev); }; /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ AbstractAccordion.prototype.emitBeforeDisableEvent = /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ function (item, index, $event) { // emit beforeEvent var /** @type {?} */ bData = { item: item, index: index }; var /** @type {?} */ beforeEV = EventUtils.newCustomEvent(BEFORE_DISABLE_EVENT, this, bData, null); this.beforeDisableEvent.emit(beforeEV); }; /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ AbstractAccordion.prototype.emitDisableEvent = /** * @param {?} item * @param {?} index * @param {?=} $event * @return {?} */ function (item, index, $event) { // emit event var /** @type {?} */ data = { item: item, index: index }; var /** @type {?} */ ev = EventUtils.newCustomEvent(DISABLE_EVENT, this, data, $event); this.disableEvent.emit(ev); }; /** * @param {?} index * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstractAccordion.prototype.activate = /** * @param {?} index * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (index, $event, fireEvent) { var _this = this; if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } var /** @type {?} */ item = this.getAccordionItem(index); if (!item.active) { EventUtils.handleBrowserEvent(this, 'beforeActivateEvent', $event, fireEvent, function ($event) { // doEvent // doEvent _this._activateItem(index); }, function ($event) { // emitBeforeEvent // emitBeforeEvent _this.emitBeforeActivateEvent(item, index, $event); }, function ($event) { // emitAfterEvent // emitAfterEvent _this.emitActivateEvent(item, index, $event); }, function ($event) { // doPrevented }); return true; } else { return false; } }; /** * @param {?} index * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstractAccordion.prototype.deactivate = /** * @param {?} index * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (index, $event, fireEvent) { var _this = this; if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } var /** @type {?} */ item = this.getAccordionItem(index); if (item.active) { EventUtils.handleBrowserEvent(this, 'beforeDeactivateEvent', $event, fireEvent, function ($event) { // doEvent // doEvent _this._deactivateItem(index); }, function ($event) { // emitBeforeEvent // emitBeforeEvent _this.emitBeforeDeactivateEvent(item, index, $event); }, function ($event) { // emitAfterEvent // emitAfterEvent _this.emitDeactivateEvent(item, index, $event); }, function ($event) { // doPrevented }); return true; } else { return false; } }; /** * @param {?} index * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstractAccordion.prototype.enable = /** * @param {?} index * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (index, $event, fireEvent) { var _this = this; if (index === null || index === undefined || index <= -1) { return null; } if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } var /** @type {?} */ item = this.getAccordionItem(index); if (!item.enable) { EventUtils.handleBrowserEvent(this, 'beforeEnableEvent', $event, fireEvent, function ($event) { // doEvent // doEvent _this._enableItem(index); }, function ($event) { // emitBeforeEvent // emitBeforeEvent _this.emitBeforeEnableEvent(item, index, $event); }, function ($event) { // emitAfterEvent // emitAfterEvent _this.emitEnableEvent(item, index, $event); }, function ($event) { // doPrevented }); return true; } else { return false; } }; /** * @param {?} index * @param {?=} $event * @param {?=} fireEvent * @return {?} */ AbstractAccordion.prototype.disable = /** * @param {?} index * @param {?=} $event * @param {?=} fireEvent * @return {?} */ function (index, $event, fireEvent) { var _this = this; if (index === null || index === undefined || index <= -1) { return null; } if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } var /** @type {?} */ item = this.getAccordionItem(index); if (item.enable) { EventUtils.handleBrowserEvent(this, 'beforeDisableEvent', $event, fireEvent, function ($event) { // doEvent // doEvent _this._disableItem(index); }, function ($event) { // emitBeforeEvent // emitBeforeEvent _this.emitBeforeDisableEvent(item, index, $event); }, function ($event) { // emitAfterEvent // emitAfterEvent _this.emitDisableEvent(item, index, $event); }, function ($event) { // doPrevented }); return true; } else { return false; } }; /** * @param {?} items * @return {?} */ AbstractAccordion.prototype.setAccordionItems = /** * @param {?} items * @return {?} */ function (items) { this.items = items; this.itemStatus = []; if (this.items !== null && typeof this.items !== 'undefined') { try { for (var _a = tslib_1.__values(this.items), _b = _a.next(); !_b.done; _b = _a.next()) { var item = _b.value; // change status if (!item.enable) { item.active = false; } var /** @type {?} */ wrapItem = this.generateItemStatus(item); this.itemStatus.push(wrapItem); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_b && !_b.done && (_c = _a.return)) _c.call(_a); } finally { if (e_1) throw e_1.error; } } } var e_1, _c; }; /** * @return {?} */ AbstractAccordion.prototype.getAccordionItems = /** * @return {?} */ function () { return this.items; }; /** * @param {?} index * @return {?} */ AbstractAccordion.prototype.getAccordionItem = /** * @param {?} index * @return {?} */ function (index) { if (this.items !== null && typeof this.items !== 'undefined') { if (index < this.items.length) { var /** @type {?} */ item = this.items[index]; return item; } } return null; }; /** * @param {?} index * @return {?} */ AbstractAccordion.prototype.isActive = /** * @param {?} index * @return {?} */ function (index) { if (index !== null && typeof index !== 'undefined') { if (index < this.items.length) { return this.items[index].active; } } return false; }; /** * @param {?} index * @return {?} */ AbstractAccordion.prototype.isEnable = /** * @param {?} index * @return {?} */ function (index) { if (index !== null && typeof index !== 'undefined') { if (index < this.items.length) { return this.items[index].enable; } } return false; }; /** * @param {?} item * @return {?} */ AbstractAccordion.prototype.getAccordionIndex = /** * @param {?} item * @return {?} */ function (item) { if (item !== null && item !== undefined) { var /** @type {?} */ items = this.getAccordionItems(); return items.indexOf(item); } return -1; }; /** * @param {?=} exceptIndex * @return {?} */ AbstractAccordion.prototype.collapseItemAllExceptIndex = /** * @param {?=} exceptIndex * @return {?} */ function (exceptIndex) { var /** @type {?} */ items = this.getAccordionItems(); if (items !== null && items !== undefined) { try { for (var _a = tslib_1.__values(this.items), _b = _a.next(); !_b.done; _b = _a.next()) { var item = _b.value; var /** @type {?} */ index = this.getAccordionIndex(item); this.collapseItem(index, exceptIndex); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_b && !_b.done && (_c = _a.return)) _c.call(_a); } finally { if (e_2) throw e_2.error; } } } var e_2, _c; }; /** * @return {?} */ AbstractAccordion.prototype.isFixedHeight = /** * @return {?} */ function () { if (this.fixedHeight === null || typeof this.fixedHeight === 'undefined' || this.fixedHeight === '') { return false; } return true; }; /** * @return {?} */ AbstractAccordion.prototype.getFixedHeight = /** * @return {?} */ function () { return this.fixedHeight; }; /** * @param {?} fixedHeight * @return {?} */ AbstractAccordion.prototype.setFixedHeight = /** * @param {?} fixedHeight * @return {?} */ function (fixedHeight) { this.fixedHeight = fixedHeight; }; /** * @param {?} activateEvent * @return {?} */ AbstractAccordion.prototype.setActivateEvent = /** * @param {?} activateEvent * @return {?} */ function (activateEvent) { this.activateEvent = activateEvent; }; /** * @return {?} */ AbstractAccordion.prototype.getActivateEvent = /** * @return {?} */ function () { return this.activateEvent; }; /** * @param {?} deactivateEvent * @return {?} */ AbstractAccordion.prototype.setDeactivateEvent = /** * @param {?} deactivateEvent * @return {?} */ function (deactivateEvent) { this.deactivateEvent = deactivateEvent; }; /** * @return {?} */ AbstractAccordion.prototype.getDeactivateEvent = /** * @return {?} */ function () { return this.deactivateEvent; }; /** * @param {?} enableEvent * @return {?} */ AbstractAccordion.prototype.setEnableEvent = /** * @param {?} enableEvent * @return {?} */ function (enableEvent) { this.enableEvent = enableEvent; }; /** * @return {?} */ AbstractAccordion.prototype.getEnableEvent = /** * @return {?} */ function () { return this.enableEvent; }; /** * @param {?} disableEvent * @return {?} */ AbstractAccordion.prototype.setDisableEvent = /** * @param {?} disableEvent * @return {?} */ function (disableEvent) { this.disableEvent = disableEvent; }; /** * @return {?} */ AbstractAccordion.prototype.getDisableEvent = /** * @return {?} */ function () { return this.disableEvent; }; /** * @param {?} beforeActivateEvent * @return {?} */ AbstractAccordion.prototype.setBeforeActivateEvent = /** * @param {?} beforeActivateEvent * @return {?} */ function (beforeActivateEvent) { this.beforeActivateEvent = beforeActivateEvent; }; /** * @return {?} */ AbstractAccordion.prototype.getBeforeActivateEvent = /** * @return {?} */ function () { return this.beforeActivateEvent; }; /** * @param {?} beforeDeactivateEvent * @return {?} */ AbstractAccordion.prototype.setBeforeDeactivateEvent = /** * @param {?} beforeDeactivateEvent * @return {?} */ function (beforeDeactivateEvent) { this.beforeDeactivateEvent = beforeDeactivateEvent; }; /** * @return {?} */ AbstractAccordion.prototype.getBeforeDeactivateEvent = /** * @return {?} */ function () { return this.beforeDeactivateEvent; }; /** * @param {?} beforeEnableEvent * @return {?} */ AbstractAccordion.prototype.setBeforeEnableEvent = /** * @param {?} beforeEnableEvent * @return {?} */ function (beforeEnableEvent) { this.beforeEnableEvent = beforeEnableEvent; }; /** * @return {?} */ AbstractAccordion.prototype.getBeforeEnableEvent = /** * @return {?} */ function () { return this.beforeEnableEvent; }; /** * @param {?} beforeDisableEvent * @return {?} */ AbstractAccordion.prototype.setBeforeDisableEvent = /** * @param {?} beforeDisableEvent * @return {?} */ function (beforeDisableEvent) { this.beforeDisableEvent = beforeDisableEvent; }; /** * @return {?} */ AbstractAccordion.prototype.getBeforeDisableEvent = /** * @return {?} */ function () { return this.beforeDisableEvent; }; /** * @param {?} isAutoInit * @return {?} */ AbstractAccordion.prototype.setAutoInit = /** * @param {?} isAutoInit * @return {?} */ function (isAutoInit) { this.autoInit = isAutoInit; }; /** * @return {?} */ AbstractAccordion.prototype.isAutoInit = /** * @return {?} */ function () { return this.autoInit; }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], AbstractAccordion.prototype, "fixedHeight", void 0); tslib_1.__decorate([ Option('beforeActivate'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractAccordion.prototype, "beforeActivateEvent", void 0); tslib_1.__decorate([ Option('activate'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractAccordion.prototype, "activateEvent", void 0); tslib_1.__decorate([ Option('beforeDeactivate'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractAccordion.prototype, "beforeDeactivateEvent", void 0); tslib_1.__decorate([ Option('deactivate'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractAccordion.prototype, "deactivateEvent", void 0); tslib_1.__decorate([ Option('beforeEnable'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractAccordion.prototype, "beforeEnableEvent", void 0); tslib_1.__decorate([ Option('enable'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractAccordion.prototype, "enableEvent", void 0); tslib_1.__decorate([ Option('beforeDisable'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractAccordion.prototype, "beforeDisableEvent", void 0); tslib_1.__decorate([ Option('disable'), tslib_1.__metadata("design:type", EventEmitter) ], AbstractAccordion.prototype, "disableEvent", void 0); return AbstractAccordion; }(AbstractDataView)); export { AbstractAccordion }; function AbstractAccordion_tsickle_Closure_declarations() { /** @type {?} */ AbstractAccordion.prototype.itemStatus; /** @type {?} */ AbstractAccordion.prototype.items; /** @type {?} */ AbstractAccordion.prototype.fixedHeight; /** @type {?} */ AbstractAccordion.prototype.beforeActivateEvent; /** @type {?} */ AbstractAccordion.prototype.activateEvent; /** @type {?} */ AbstractAccordion.prototype.beforeDeactivateEvent; /** @type {?} */ AbstractAccordion.prototype.deactivateEvent; /** @type {?} */ AbstractAccordion.prototype.beforeEnableEvent; /** @type {?} */ AbstractAccordion.prototype.enableEvent; /** @type {?} */ AbstractAccordion.prototype.beforeDisableEvent; /** @type {?} */ AbstractAccordion.prototype.disableEvent; /** @type {?} */ AbstractAccordion.prototype.autoInit; /** @type {?} */ AbstractAccordion.prototype.multipleExpand; /** * @abstract * @return {?} */ AbstractAccordion.prototype.init = function () { }; /** * @abstract * @param {?} index * @param {?} item * @return {?} */ AbstractAccordion.prototype.onAccordionActived = function (index, item) { }; /** * @abstract * @param {?} index * @param {?} item * @return {?} */ AbstractAccordion.prototype.onAccordionDeactived = function (index, item) { }; /** * @abstract * @param {?} index * @param {?} item * @return {?} */ AbstractAccordion.prototype.onAccordionEnabled = function (index, item) { }; /** * @abstract * @param {?} index * @param {?} item * @return {?} */ AbstractAccordion.prototype.onAccordionDisabled = function (index, item) { }; /** * @abstract * @return {?} */ AbstractAccordion.prototype.reload = function () { }; /** * @abstract * @return {?} */ AbstractAccordion.prototype.reRender = function () { }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RBY2NvcmRpb24uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZGF0YXZpZXcvQWJzdHJhY3RBY2NvcmRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQVUsWUFBWSxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFDTCxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFDN0QscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQzFGLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztJQUVvQiw2Q0FBZ0I7SUF5QjVGLDJCQUFZLFVBQXNCO1FBQWxDLFlBQ0Usa0JBQU0sVUFBVSxDQUFDLFNBWWxCO1FBWEMsS0FBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsS0FBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsS0FBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsS0FBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLEtBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxLQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdEMsS0FBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLEtBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlDLEtBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJ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LElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDOzs7OztJQUd0QixzQ0FBVTs7OztRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDOzs7UUFwaEJ0QixNQUFNLEVBQUU7Ozs7UUFFUixNQUFNLENBQUMsZ0JBQWdCLENBQUM7MENBQ00sWUFBWTs7O1FBQzFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7MENBQ00sWUFBWTs7O1FBQ3BDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQzswQ0FDTSxZQUFZOzs7UUFDNUMsTUFBTSxDQUFDLFlBQVksQ0FBQzswQ0FDTSxZQUFZOzs7UUFDdEMsTUFBTSxDQUFDLGNBQWMsQ0FBQzswQ0FDTSxZQUFZOzs7UUFDeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQzswQ0FDTSxZQUFZOzs7UUFDbEMsTUFBTSxDQUFDLGVBQWUsQ0FBQzswQ0FDTSxZQUFZOzs7UUFDekMsTUFBTSxDQUFDLFNBQVMsQ0FBQzswQ0FDTSxZQUFZOzs0QkEvQnRDO0VBVThFLGdCQUFnQjtTQUF4RSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkluaXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjb3JkaW9uSXRlbU1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvQWNjb3JkaW9uSXRlbU1vZGVsJztcbmltcG9ydCB7XHJcbiAgQUNUSVZBVEVfRVZFTlQsIERFQUNUSVZBVEVfRVZFTlQsIEVOQUJMRV9FVkVOVCwgRElTQUJMRV9FVkVOVCxcbiAgQkVGT1JFX0FDVElWQVRFX0VWRU5ULCBCRUZPUkVfREVBQ1RJVkFURV9FVkVOVCwgQkVGT1JFX0VOQUJMRV9FVkVOVCwgQkVGT1JFX0RJU0FCTEVfRVZFTlRcclxufSBmcm9tICcuLi8uLi9zaGFyZS9DdXN0b21FdmVudFR5cGUnO1xuaW1wb3J0IHsgQWJzdHJhY3REYXRhVmlldyB9IGZyb20gJy4vQWJzdHJhY3REYXRhVmlldyc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBFdmVudFV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmUvdXRpbHMvRXZlbnRVdGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEFjY29yZGlvbjxUIGV4dGVuZHMgQWNjb3JkaW9uSXRlbU1vZGVsPiBleHRlbmRzIEFic3RyYWN0RGF0YVZpZXcgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHByaXZhdGUgaXRlbVN0YXR1czogYW55W107XG4gIHByb3RlY3RlZCBpdGVtczogVFtdO1xuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGZpeGVkSGVpZ2h0OiBzdHJpbmc7IC8vIGhlaWdodCBmb3IgZGV0ZXJtaW5lIGlmIGFjY29yZGlhbiBpbiBmaXhIZWlnaHQgb3Igbm90LlxuICBAT3B0aW9uKCdiZWZvcmVBY3RpdmF0ZScpXG4gIHByb3RlY3RlZCBiZWZvcmVBY3RpdmF0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE9wdGlvbignYWN0aXZhdGUnKVxuICBwcm90ZWN0ZWQgYWN0aXZhdGVFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ2JlZm9yZURlYWN0aXZhdGUnKVxuICBwcm90ZWN0ZWQgYmVmb3JlRGVhY3RpdmF0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE9wdGlvbignZGVhY3RpdmF0ZScpXG4gIHByb3RlY3RlZCBkZWFjdGl2YXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3B0aW9uKCdiZWZvcmVFbmFibGUnKVxuICBwcm90ZWN0ZWQgYmVmb3JlRW5hYmxlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3B0aW9uKCdlbmFibGUnKVxuICBwcm90ZWN0ZWQgZW5hYmxlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3B0aW9uKCdiZWZvcmVEaXNhYmxlJylcbiAgcHJvdGVjdGVkIGJlZm9yZURpc2FibGVFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ2Rpc2FibGUnKVxuICBwcm90ZWN0ZWQgZGlzYWJsZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgcHJvdGVjdGVkIGF1dG9Jbml0OiBib29sZWFuO1xuICBwcm90ZWN0ZWQgbXVsdGlwbGVFeHBhbmQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xuICAgIHRoaXMuaXRlbVN0YXR1cyA9IFtdO1xuICAgIHRoaXMuYXV0b0luaXQgPSBmYWxzZTtcbiAgICB0aGlzLm11bHRpcGxlRXhwYW5kID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2YXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5kZWFjdGl2YXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5lbmFibGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLmRpc2FibGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLmJlZm9yZUFjdGl2YXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5iZWZvcmVEZWFjdGl2YXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5iZWZvcmVFbmFibGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLmJlZm9yZURpc2FibGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEFjY29yZGlvbkl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgIGlmICh0aGlzLmF1dG9Jbml0ICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmF1dG9Jbml0ICE9PSAndW5kZWZpbmVkJykge1xuI