io.parrots
Version:
Parrots.io App
315 lines (314 loc) • 28.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, Inject, EventEmitter, Output } from '@angular/core';
import { AbstractParrotsDataEditor } from './AbstractParrotsDataEditor';
import { Option, PhloxAppInfoService, DialogService, BackgroundProcessManager, I18N } from 'com.phloxui';
import { ParrotsDataServiceFactory } from '../../service/ParrotsDataServiceFactory.service';
import { ParrotsDataEditorActionProvider } from '../../service/ParrotsDataEditorActionProvider.service';
import { ParrotsDataEditorViewProvider } from '../../service/ParrotsDataEditorViewProvider.service';
import { ParrotsEditorSettingServiceFactory } from '../../service/ParrotsEditorSettingServiceFactory.service';
import { VersionHistoryModelFactory } from './IVersionHistoryModelFactory';
import { InstanceConnectionManager } from '../../service/InstanceConnectionManager.service';
var /** @type {?} */ TYPE_NAME = "parrots-data-editor";
var ParrotsDataEditor = /** @class */ (function (_super) {
tslib_1.__extends(ParrotsDataEditor, _super);
function ParrotsDataEditor(actionProvider, viewProvider, dataFactory, settingServiceFactory, phloxAppService, dialogService, bgProcessMgr, vhModelFactory, instConnectionMgr) {
return _super.call(this, actionProvider, viewProvider, dataFactory, settingServiceFactory, phloxAppService, dialogService, bgProcessMgr, null, null, vhModelFactory, instConnectionMgr) || this;
}
/**
* @return {?}
*/
ParrotsDataEditor.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
// set value from @Input
this.setDataClassName(this.dataClassName);
this.setConfigName(this.configName);
};
/**
* @param {?} model
* @return {?}
*/
ParrotsDataEditor.prototype._isViewModelActive = /**
* @param {?} model
* @return {?}
*/
function (model) {
if (model === null || typeof model === 'undefined') {
return false;
}
try {
for (var _a = tslib_1.__values(this.views), _b = _a.next(); !_b.done; _b = _a.next()) {
var v = _b.value;
if (v.getModel() === model) {
return v.isActive();
}
}
}
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; }
}
return false;
var e_1, _c;
};
/**
* @param {?} $event
* @param {?} view
* @return {?}
*/
ParrotsDataEditor.prototype.onViewBtnClicked = /**
* @param {?} $event
* @param {?} view
* @return {?}
*/
function ($event, view) {
this.showView(view);
};
/**
* @return {?}
*/
ParrotsDataEditor.prototype.getMenuModelFactory = /**
* @return {?}
*/
function () {
return this.menuModelFactory;
};
/**
* @return {?}
*/
ParrotsDataEditor.prototype.getDataComparator = /**
* @return {?}
*/
function () {
return this.dataComparator;
};
/**
* @return {?}
*/
ParrotsDataEditor.prototype.isPageLoaded = /**
* @return {?}
*/
function () {
return true;
};
/**
* @return {?}
*/
ParrotsDataEditor.prototype.newDataObject = /**
* @return {?}
*/
function () {
// new dataObj from schema
var /** @type {?} */ result = {};
if (this.dataSchema !== null && this.dataSchema !== undefined) {
var /** @type {?} */ dataField = this.dataSchema.dataFields;
if (dataField !== null && dataField !== undefined) {
try {
for (var dataField_1 = tslib_1.__values(dataField), dataField_1_1 = dataField_1.next(); !dataField_1_1.done; dataField_1_1 = dataField_1.next()) {
var field = dataField_1_1.value;
var /** @type {?} */ fName = field.name;
var /** @type {?} */ fType = field.type;
if (fType === 'string') {
result[fName] = "";
}
if (fType === 'number') {
result[fName] = 0;
}
if (fType === 'date') {
result[fName] = (new Date()).getTime();
}
else {
result[fName] = null;
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (dataField_1_1 && !dataField_1_1.done && (_a = dataField_1.return)) _a.call(dataField_1);
}
finally { if (e_2) throw e_2.error; }
}
}
}
return result;
var e_2, _a;
};
/**
* @param {?} settings
* @return {?}
*/
ParrotsDataEditor.prototype.onEditorSettingLoaded = /**
* @param {?} settings
* @return {?}
*/
function (settings) {
// do sthing when reload editor setting
};
/**
* @return {?}
*/
ParrotsDataEditor.prototype.getHeaderTitle = /**
* @return {?}
*/
function () {
return this.headerTitle;
};
/**
* @param {?} headerTitle
* @return {?}
*/
ParrotsDataEditor.prototype.setHeaderTitle = /**
* @param {?} headerTitle
* @return {?}
*/
function (headerTitle) {
this.headerTitle = headerTitle;
};
ParrotsDataEditor.TYPE_NAME = TYPE_NAME;
ParrotsDataEditor.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"parrots-data-editor\">\n\t<div class=\"background\">\n\t</div>\n\t<div class=\"wrapper\">\n\t\t<div class=\"content\">\n\t\t\t<div class=\"parrots-editor-header\">\n\t\t\t\t<div class=\"page-info-wrapper\">\n\t\t\t\t\t<div class=\"page-info\" style=\"float: left;\">\n\t\t\t\t\t\t{{getHeaderTitle()}}\n\t\t\t\t\t</div>\n <div class=\"page-search\" style=\"float: left;\">\n\t\t\t\t\t\t<!-- # this will open in the next version -->\n\t\t\t\t\t\t<phx-search-btn [editor]=\"this\"></phx-search-btn>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"page-action-wrapper\">\n\t\t\t\t\t<ul class=\"page-action\">\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<ul class=\"action-button-group\">\n\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t<phx-action-menu-bar #actionMenuBar [models]=\"getActionModels()\"></phx-action-menu-bar>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<div class=\"page-separate\"></div>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<ul class=\"view-button-group\">\n\t\t\t\t\t\t\t\t<li *ngFor=\"let view of getViewModels(); let i = index;\">\n\t\t\t\t\t\t\t\t\t<phx-view-btn [model]=\"view\" [active]=\"_isViewModelActive(view)\" (click)=\"onViewBtnClicked($event,view)\"></phx-view-btn>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t </ul>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\t\t\t</div>\n\t\t\t<div class=\"wrapper\">\n\t\t\t\t<div class=\"parrots-editor-body\">\n\t\t\t\t\t<phx-view-wrapper *ngFor=\"let view of getViewModels()\" [editor]=\"this\" [model]=\"view\"\n\t\t\t\t\t\t[showEventHandler]=\"getViewShowHandler()\" [hideEventHandler]=\"getViewHideHandler()\"></phx-view-wrapper>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n"
},] },
];
/** @nocollapse */
ParrotsDataEditor.ctorParameters = function () { return [
{ type: ParrotsDataEditorActionProvider, },
{ type: ParrotsDataEditorViewProvider, },
{ type: ParrotsDataServiceFactory, },
{ type: ParrotsEditorSettingServiceFactory, },
{ type: PhloxAppInfoService, },
{ type: DialogService, },
{ type: BackgroundProcessManager, },
{ type: undefined, decorators: [{ type: Inject, args: [VersionHistoryModelFactory,] },] },
{ type: InstanceConnectionManager, },
]; };
ParrotsDataEditor.propDecorators = {
"dataCreateEvent": [{ type: Output, args: ['parrotsDataCreate',] },],
"dataUpdateEvent": [{ type: Output, args: ['parrotsDataUpdate',] },],
"dataDeleteEvent": [{ type: Output, args: ['parrotsDataDelete',] },],
"dataDestroyEvent": [{ type: Output, args: ['parrotsDataDestroy',] },],
"dataRevertEvent": [{ type: Output, args: ['parrotsDataRevert',] },],
"dataQueryEvent": [{ type: Output, args: ['parrotsDataQuery',] },],
"dataPromoteEvent": [{ type: Output, args: ['parrotsDataPromote',] },],
"dataReloadEvent": [{ type: Output, args: ['parrotsDataReload',] },],
"dataSchemaReloadEvent": [{ type: Output, args: ['parrotsDataSchemaReload',] },],
"viewShowEvent": [{ type: Output, args: ['parrotsViewShow',] },],
"viewHideEvent": [{ type: Output, args: ['parrotsViewHide',] },],
"dataClassName": [{ type: Input },],
"configName": [{ type: Input },],
"headerTitle": [{ type: Input },],
};
tslib_1.__decorate([
Option('dataCreate'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataCreateEvent", void 0);
tslib_1.__decorate([
Option('dataUpdate'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataUpdateEvent", void 0);
tslib_1.__decorate([
Option('dataDelete'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataDeleteEvent", void 0);
tslib_1.__decorate([
Option('dataDestroy'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataDestroyEvent", void 0);
tslib_1.__decorate([
Option('dataRevert'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataRevertEvent", void 0);
tslib_1.__decorate([
Option('dataQuery'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataQueryEvent", void 0);
tslib_1.__decorate([
Option('dataPromote'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataPromoteEvent", void 0);
tslib_1.__decorate([
Option('dataReload'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataReloadEvent", void 0);
tslib_1.__decorate([
Option('dataSchemaReload'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "dataSchemaReloadEvent", void 0);
tslib_1.__decorate([
Option('viewShow'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "viewShowEvent", void 0);
tslib_1.__decorate([
Option('viewHide'),
tslib_1.__metadata("design:type", EventEmitter)
], ParrotsDataEditor.prototype, "viewHideEvent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ParrotsDataEditor.prototype, "dataClassName", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ParrotsDataEditor.prototype, "configName", void 0);
tslib_1.__decorate([
Option(),
I18N("header.title"),
tslib_1.__metadata("design:type", String)
], ParrotsDataEditor.prototype, "headerTitle", void 0);
return ParrotsDataEditor;
}(AbstractParrotsDataEditor));
export { ParrotsDataEditor };
function ParrotsDataEditor_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ParrotsDataEditor.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ParrotsDataEditor.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ParrotsDataEditor.propDecorators;
/** @type {?} */
ParrotsDataEditor.TYPE_NAME;
/** @type {?} */
ParrotsDataEditor.prototype.dataCreateEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataUpdateEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataDeleteEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataDestroyEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataRevertEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataQueryEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataPromoteEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataReloadEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataSchemaReloadEvent;
/** @type {?} */
ParrotsDataEditor.prototype.viewShowEvent;
/** @type {?} */
ParrotsDataEditor.prototype.viewHideEvent;
/** @type {?} */
ParrotsDataEditor.prototype.dataClassName;
/** @type {?} */
ParrotsDataEditor.prototype.configName;
/** @type {?} */
ParrotsDataEditor.prototype.headerTitle;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFycm90c0RhdGFFZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaW8ucGFycm90cy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZWRpdG9yL1BhcnJvdHNEYXRhRWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsTUFBTSxFQUN3QixtQkFBbUIsRUFBRSxhQUFhLEVBQUUsd0JBQXdCLEVBQ3BCLElBQUksRUFDM0UsTUFBTSxhQUFhLENBQUM7QUFHckIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDeEcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDcEcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDOUcsT0FBTyxFQUErQiwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTVGLHFCQUFNLFNBQVMsR0FBVyxxQkFBcUIsQ0FBQzs7SUFzRFQsNkNBQXlCO0lBZ0Q5RCwyQkFBWSxjQUErQyxFQUFFLFlBQTJDLEVBQUUsV0FBc0MsRUFDOUkscUJBQXlELEVBQUUsZUFBb0MsRUFBRSxhQUE0QixFQUM3SCxZQUFzQyxFQUFzQyxnQkFBNkMsaUJBQTRDO2VBQ3JLLGtCQUFNLGNBQWMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxF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QyxNQUFNLENBQUMsWUFBWSxDQUFDOzBDQUNNLFlBQVk7OztRQUV0QyxNQUFNLENBQUMsa0JBQWtCLENBQUM7MENBQ00sWUFBWTs7O1FBRTVDLE1BQU0sQ0FBQyxVQUFVLENBQUM7MENBQ00sWUFBWTs7O1FBRXBDLE1BQU0sQ0FBQyxVQUFVLENBQUM7MENBQ00sWUFBWTs7O1FBRXBDLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTtRQUNSLElBQUksQ0FBQyxjQUFjLENBQUM7Ozs0QkFuSHZCO0VBc0V1Qyx5QkFBeUI7U0FBbkQsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBJbmplY3QsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFBhcnJvdHNEYXRhRWRpdG9yIH0gZnJvbSAnLi9BYnN0cmFjdFBhcnJvdHNEYXRhRWRpdG9yJztcbmltcG9ydCB7XG4gIE9wdGlvbiwgQWJzdHJhY3REYXRhRWRpdG9yLCBJRGF0YUVkaXRvckFjdGlvblByb3ZpZGVyLCBJRGF0YVNlcnZpY2VGYWN0b3J5LFxuICBJRWRpdG9yU2V0dGluZ1NlcnZpY2VGYWN0b3J5LCBQaGxveEFwcEluZm9TZXJ2aWNlLCBEaWFsb2dTZXJ2aWNlLCBCYWNrZ3JvdW5kUHJvY2Vzc01hbmFnZXIsXG4gIEV2ZW50VXRpbHMsIFZpZXdNb2RlbCwgSU1lbnVNb2RlbEZhY3RvcnksIElEYXRhQ29tcGFyYXRvciwgRGF0YUZpZWxkLCBJMThOXG59IGZyb20gJ2NvbS5waGxveHVpJztcbmltcG9ydCB7IERBVEFfREVTVFJPWV9FVkVOVCwgREFUQV9QUk9NT1RFX0VWRU5ULCBEQVRBX1FVRVJZX0VWRU5UIH0gZnJvbSAnY29tLnBobG94dWknO1xuaW1wb3J0IHsgUGFycm90c0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi9QYXJyb3RzRGF0YVNlcnZpY2UnO1xuaW1wb3J0IHsgUGFycm90c0RhdGFTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvUGFycm90c0RhdGFTZXJ2aWNlRmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IFBhcnJvdHNEYXRhRWRpdG9yQWN0aW9uUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL1BhcnJvdHNEYXRhRWRpdG9yQWN0aW9uUHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQYXJyb3RzRGF0YUVkaXRvclZpZXdQcm92aWRlciB9IGZyb20gJy4uLy4uL3NlcnZpY2UvUGFycm90c0RhdGFFZGl0b3JWaWV3UHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQYXJyb3RzRWRpdG9yU2V0dGluZ1NlcnZpY2VGYWN0b3J5IH0gZnJvbSAnLi4vLi4vc2VydmljZS9QYXJyb3RzRWRpdG9yU2V0dGluZ1NlcnZpY2VGYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVZlcnNpb25IaXN0b3J5TW9kZWxGYWN0b3J5LCBWZXJzaW9uSGlzdG9yeU1vZGVsRmFjdG9yeSB9IGZyb20gJy4vSVZlcnNpb25IaXN0b3J5TW9kZWxGYWN0b3J5JztcbmltcG9ydCB7IEluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL0luc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIuc2VydmljZSc7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwYXJyb3RzLWRhdGEtZWRpdG9yXCI7XG5cbkBDb21wb25lbnQoe1xuICBtb2R1bGVJZDogbW9kdWxlLmlkLFxuICBzZWxlY3RvcjogVFlQRV9OQU1FLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJwYXJyb3RzLWRhdGEtZWRpdG9yXCI+XG5cdDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kXCI+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuXHRcdDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwicGFycm90cy1lZGl0b3ItaGVhZGVyXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJwYWdlLWluZm8td3JhcHBlclwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJwYWdlLWluZm9cIiBzdHlsZT1cImZsb2F0OiBsZWZ0O1wiPlxuXHRcdFx0XHRcdFx0e3tnZXRIZWFkZXJUaXRsZSgpfX1cblx0XHRcdFx0XHQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1zZWFyY2hcIiBzdHlsZT1cImZsb2F0OiBsZWZ0O1wiPlxuXHRcdFx0XHRcdFx0PCEtLSAjIHRoaXMgd2lsbCBvcGVuIGluIHRoZSBuZXh0IHZlcnNpb24gIC0tPlxuXHRcdFx0XHRcdFx0PHBoeC1zZWFyY2gtYnRuIFtlZGl0b3JdPVwidGhpc1wiPjwvcGh4LXNlYXJjaC1idG4+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicGFnZS1hY3Rpb24td3JhcHBlclwiPlxuXHRcdFx0XHRcdDx1bCBjbGFzcz1cInBhZ2UtYWN0aW9uXCI+XG5cdFx0XHRcdFx0XHQ8bGk+XG5cdFx0XHRcdFx0XHRcdDx1bCBjbGFzcz1cImFjdGlvbi1idXR0b24tZ3JvdXBcIj5cblx0XHRcdFx0XHRcdFx0XHQ8bGk+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8cGh4LWFjdGlvbi1tZW51LWJhciAjYWN0aW9uTWVudUJhciBbbW9kZWxzXT1cImdldEFjdGlvbk1vZGVscygpXCI+PC9waHgtYWN0aW9uLW1lbnUtYmFyPlxuXHRcdFx0XHRcdFx0XHRcdDwvbGk+XG5cdFx0XHRcdFx0XHRcdDwvdWw+XG5cdFx0XHRcdFx0XHQ8L2xpPlxuXHRcdFx0XHRcdFx0PGxpPlxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicGFnZS1zZXBhcmF0ZVwiPjwvZGl2PlxuXHRcdFx0XHRcdFx0PC9saT5cblx0XHRcdFx0XHRcdDxsaT5cblx0XHRcdFx0XHRcdFx0PHVsIGNsYXNzPVwidmlldy1idXR0b24tZ3JvdXBcIj5cblx0XHRcdFx0XHRcdFx0XHQ8bGkgKm5nRm9yPVwibGV0IHZpZXcgb2YgZ2V0Vmlld01vZGVscygpOyBsZXQgaSA9IGluZGV4O1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHBoeC12aWV3LWJ0biAgW21vZGVsXT1cInZpZXdcIiBbYWN0aXZlXT1cIl9pc1ZpZXdNb2RlbEFjdGl2ZSh2aWV3KVwiIChjbGljayk9XCJvblZpZXdCdG5DbGlja2VkKCRldmVudCx2aWV3KVwiPjwvcGh4LXZpZXctYnRuPlxuXHRcdFx0XHRcdFx0XHRcdDwvbGk+XG5cdFx0XHQgICAgICAgIDwvdWw+XG5cdFx0XHRcdFx0XHQ8L2xpPlxuXHRcdFx0XHRcdDwvdWw+XG5cdFx0XHRcdDwvZGl2PlxuXG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJwYXJyb3RzLWVkaXRvci1ib2R5XCI+XG5cdFx0XHRcdFx0PHBoeC12aWV3LXdyYXBwZXIgKm5nRm9yPVwibGV0IHZpZXcgb2YgZ2V0Vmlld01vZGVscygpXCIgW2VkaXRvcl09XCJ0aGlzXCIgW21vZGVsXT1cInZpZXdcIlxuXHRcdFx0XHRcdFx0W3Nob3dFdmVudEhhbmRsZXJdPVwiZ2V0Vmlld1Nob3dIYW5kbGVyKClcIiBbaGlkZUV2ZW50SGFuZGxlcl09XCJnZXRWaWV3SGlkZUhhbmRsZXIoKVwiPjwvcGh4LXZpZXctd3JhcHBlcj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgUGFycm90c0RhdGFFZGl0b3IgZXh0ZW5kcyBBYnN0cmFjdFBhcnJvdHNEYXRhRWRpdG9yIHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gIEBPdXRwdXQoJ3BhcnJvdHNEYXRhQ3JlYXRlJylcbiAgQE9wdGlvbignZGF0YUNyZWF0ZScpXG4gIHByb3RlY3RlZCBkYXRhQ3JlYXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwYXJyb3RzRGF0YVVwZGF0ZScpXG4gIEBPcHRpb24oJ2RhdGFVcGRhdGUnKVxuICBwcm90ZWN0ZWQgZGF0YVVwZGF0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGFycm90c0RhdGFEZWxldGUnKVxuICBAT3B0aW9uKCdkYXRhRGVsZXRlJylcbiAgcHJvdGVjdGVkIGRhdGFEZWxldGVFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BhcnJvdHNEYXRhRGVzdHJveScpXG4gIEBPcHRpb24oJ2RhdGFEZXN0cm95JylcbiAgcHJvdGVjdGVkIGRhdGFEZXN0cm95RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwYXJyb3RzRGF0YVJldmVydCcpXG4gIEBPcHRpb24oJ2RhdGFSZXZlcnQnKVxuICBwcm90ZWN0ZWQgZGF0YVJldmVydEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGFycm90c0RhdGFRdWVyeScpXG4gIEBPcHRpb24oJ2RhdGFRdWVyeScpXG4gIHByb3RlY3RlZCBkYXRhUXVlcnlFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BhcnJvdHNEYXRhUHJvbW90ZScpXG4gIEBPcHRpb24oJ2RhdGFQcm9tb3RlJylcbiAgcHJvdGVjdGVkIGRhdGFQcm9tb3RlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwYXJyb3RzRGF0YVJlbG9hZCcpXG4gIEBPcHRpb24oJ2RhdGFSZWxvYWQnKVxuICBwcm90ZWN0ZWQgZGF0YVJlbG9hZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGFycm90c0RhdGFTY2hlbWFSZWxvYWQnKVxuICBAT3B0aW9uKCdkYXRhU2NoZW1hUmVsb2FkJylcbiAgcHJvdGVjdGVkIGRhdGFTY2hlbWFSZWxvYWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BhcnJvdHNWaWV3U2hvdycpXG4gIEBPcHRpb24oJ3ZpZXdTaG93JylcbiAgcHJvdGVjdGVkIHZpZXdTaG93RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwYXJyb3RzVmlld0hpZGUnKVxuICBAT3B0aW9uKCd2aWV3SGlkZScpXG4gIHByb3RlY3RlZCB2aWV3SGlkZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkYXRhQ2xhc3NOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgY29uZmlnTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgQEkxOE4oXCJoZWFkZXIudGl0bGVcIilcbiAgcHJpdmF0ZSBoZWFkZXJUaXRsZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGFjdGlvblByb3ZpZGVyOiBQYXJyb3RzRGF0YUVkaXRvckFjdGlvblByb3ZpZGVyLCB2aWV3UHJvdmlkZXI6IFBhcnJvdHNEYXRhRWRpdG9yVmlld1Byb3ZpZGVyLCBkYXRhRmFjdG9yeTogUGFycm90c0RhdGFTZXJ2aWNlRmFjdG9yeSxcbiAgICBzZXR0aW5nU2VydmljZUZhY3Rvcnk6IFBhcnJvdHNFZGl0b3JTZXR0aW5nU2VydmljZUZhY3RvcnksIHBobG94QXBwU2VydmljZTogUGhsb3hBcHBJbmZvU2VydmljZSwgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICBiZ1Byb2Nlc3NNZ3I6IEJhY2tncm91bmRQcm9jZXNzTWFuYWdlciwgQEluamVjdChWZXJzaW9uSGlzdG9yeU1vZGVsRmFjdG9yeSkgdmhNb2RlbEZhY3Rvcnk6IElWZXJzaW9uSGlzdG9yeU1vZGVsRmFjdG9yeSwgaW5zdENvbm5lY3Rpb25NZ3I6IEluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIpIHtcbiAgICBzdXBlcihhY3Rpb25Qcm92aWRlciwgdmlld1Byb3ZpZGVyLCBkYXRhRmFjdG9yeSwgc2V0dGluZ1NlcnZpY2VGYWN0b3J5LCBwaGxveEFwcFNlcnZpY2UsIGRpYWxvZ1NlcnZpY2UsIGJnUHJvY2Vzc01nciwgbnVsbCwgbnVsbCwgdmhNb2RlbEZhY3RvcnksIGluc3RDb25uZWN0aW9uTWdyKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgLy8gc2V0IHZhbHVlIGZyb20gQElucHV0XG4gICAgdGhpcy5zZXREYXRhQ2xhc3NOYW1lKHRoaXMuZGF0YUNsYXNzTmFtZSk7XG4gICAgdGhpcy5zZXRDb25maWdOYW1lKHRoaXMuY29uZmlnTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgX2lzVmlld01vZGVsQWN0aXZlKG1vZGVsOiBWaWV3TW9kZWwpOiBib29sZWFuIHtcbiAgICBpZiAobW9kZWwgPT09IG51bGwgfHwgdHlwZW9mIG1vZGVsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAobGV0IHYgb2YgdGhpcy52aWV3cykge1xuICAgICAgaWYgKHYuZ2V0TW9kZWwoKSA9PT0gbW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHYuaXNBY3RpdmUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb25WaWV3QnRuQ2xpY2tlZCgkZXZlbnQ6IE1vdXNlRXZlbnQsIHZpZXc6IFZpZXdNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1ZpZXcodmlldyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TWVudU1vZGVsRmFjdG9yeSgpOiBJTWVudU1vZGVsRmFjdG9yeSB7XG4gICAgcmV0dXJuIHRoaXMubWVudU1vZGVsRmFjdG9yeTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhQ29tcGFyYXRvcigpOiBJRGF0YUNvbXBhcmF0b3I8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUNvbXBhcmF0b3I7XG4gIH1cblxuICBwdWJsaWMgaXNQYWdlTG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIG5ld0RhdGFPYmplY3QoKTogYW55IHtcbiAgICAvLyBuZXcgZGF0YU9iaiBmcm9tIHNjaGVtYVxuICAgIGxldCByZXN1bHQ6IGFueSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuZGF0YVNjaGVtYSAhPT0gbnVsbCAmJiB0aGlzLmRhdGFTY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuXG4gICAgICBsZXQgZGF0YUZpZWxkOiBEYXRhRmllbGRbXSA9IHRoaXMuZGF0YVNjaGVtYS5kYXRhRmllbGRzO1xuXG4gICAgICBpZiAoZGF0YUZpZWxkICE9PSBudWxsICYmIGRhdGFGaWVsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAobGV0IGZpZWxkIG9mIGRhdGFGaWVsZCkge1xuICAgICAgICAgIGxldCBmTmFtZSA9IGZpZWxkLm5hbWU7XG4gICAgICAgICAgbGV0IGZUeXBlID0gZmllbGQudHlwZTtcblxuICAgICAgICAgIGlmIChmVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmTmFtZV0gPSBcIlwiO1xuICAgICAgICAgIH0gaWYgKGZUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmVzdWx0W2ZOYW1lXSA9IDA7XG4gICAgICAgICAgfSBpZiAoZlR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICAgICAgcmVzdWx0W2ZOYW1lXSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdFtmTmFtZV0gPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkVkaXRvclNldHRpbmdMb2FkZWQoc2V0dGluZ3M6IGFueSk6IHZvaWQge1xuICAgIC8vIGRvIHN0aGluZyB3aGVuIHJlbG9hZCBlZGl0b3Igc2V0dGluZ1xuICB9XG5cbiAgcHVibGljIGdldEhlYWRlclRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyVGl0bGU7XG4gIH1cblxuICBwdWJsaWMgc2V0SGVhZGVyVGl0bGUoaGVhZGVyVGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaGVhZGVyVGl0bGUgPSBoZWFkZXJUaXRsZTtcbiAgfVxufVxuIl19