Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

vipera-npm-registry / motif-web-admin-core   js

Repository URL to install this package:

Version: 0.3.1 

/ esm5 / lib / sections / CountersAndThresholds / components / counter-infos / counter-infos-component.js

/**
 * @fileoverview added by tsickle
 * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
 */
import { Component, EventEmitter, Output } from '@angular/core';
import { NGXLogger } from 'web-console-core';
import { WCNotificationCenter, NotificationType } from 'web-console-ui-kit';
import { CountersService } from '@wa-motif-open-api/counters-thresholds-service';
import { WCSubscriptionHandler } from '../../../../components/Commons/wc-subscription-handler';
import { CounterInfosModel } from './data/model';
import { faEdit } from '@fortawesome/free-solid-svg-icons';
/** @type {?} */
var LOG_TAG = '[CounterInfosComponent]';
/**
 * @record
 */
export function SelectionEvent() { }
if (false) {
    /** @type {?} */
    SelectionEvent.prototype.counterInfoName;
    /** @type {?} */
    SelectionEvent.prototype.data;
}
/** @enum {string} */
var EditType = {
    Delete: 'Delete',
    Edit: 'Edit',
    StatusChange: 'StatusChange',
};
export { EditType };
/**
 * @record
 */
export function EditEvent() { }
if (false) {
    /** @type {?} */
    EditEvent.prototype.editType;
    /** @type {?} */
    EditEvent.prototype.dataItem;
}
var CounterInfosComponent = /** @class */ (function () {
    function CounterInfosComponent(logger, notificationCenter, countersService) {
        this.logger = logger;
        this.notificationCenter = notificationCenter;
        this.countersService = countersService;
        this.loading = false;
        this._subHandler = new WCSubscriptionHandler();
        this.faEdit = faEdit;
        this.selectionChange = new EventEmitter();
        this.edit = new EventEmitter();
        this.selectableSettings = {
            mode: 'single',
            enabled: true,
            checkboxOnly: false
        };
        this.statusConfirmationTitleProvider = {
            getTitle: /**
             * @param {?} rowData
             * @return {?}
             */
            function (rowData) {
                if (rowData.enabled) {
                    return "Disable ?";
                }
                else {
                    return "Enable ?";
                }
            }
        };
        this.commands = [
            {
                commandIcon: 'wa-ico-edit',
                commandId: EditType.Edit,
                title: 'Edit'
            },
            {
                commandIcon: 'wa-ico-no',
                commandId: EditType.Delete,
                title: 'Delete',
                hasConfirmation: true,
                confirmationTitle: 'Delete ?'
            }
        ];
    }
    /**
     * @return {?}
     */
    CounterInfosComponent.prototype.ngOnInit = /**
     * @return {?}
     */
    function () {
        this.tableModel = new CounterInfosModel();
        this.reloadData();
    };
    /**
     * @return {?}
     */
    CounterInfosComponent.prototype.ngOnDestroy = /**
     * @return {?}
     */
    function () {
        this.logger.debug(LOG_TAG, 'ngOnDestroy ');
        this.freeMem();
    };
    /**
     * @return {?}
     */
    CounterInfosComponent.prototype.freeMem = /**
     * @return {?}
     */
    function () {
        this.tableModel.close();
    };
    /**
     * @return {?}
     */
    CounterInfosComponent.prototype.reloadData = /**
     * @return {?}
     */
    function () {
        var _this = this;
        this.logger.debug(LOG_TAG, 'reloadData called');
        this.loading = true;
        this._subHandler.add(this.countersService.getCounterInfoList().subscribe((/**
         * @param {?} data
         * @return {?}
         */
        function (data) {
            _this.logger.debug(LOG_TAG, 'getCounterInfoList done: ', data);
            _this.tableModel.loadData(data);
            _this.clearSelection();
            _this.loading = false;
        }), (/**
         * @param {?} error
         * @return {?}
         */
        function (error) {
            _this.logger.error(LOG_TAG, 'getCounterInfoList error: ', error);
            _this.notificationCenter.post({
                name: 'GetCounterInfosError',
                title: 'Get Counter Infos',
                message: 'Error getting counter infos:',
                type: NotificationType.Error,
                error: error,
                closable: true
            });
            _this.clearSelection();
            _this.loading = false;
        })));
    };
    /**
     * @param {?} event
     * @return {?}
     */
    CounterInfosComponent.prototype.onSelectionChange = /**
     * @param {?} event
     * @return {?}
     */
    function (event) {
        this.logger.debug(LOG_TAG, 'onSelectionChange event: ', event);
        /** @type {?} */
        var data = null;
        if (event.selectedRows.length > 0) {
            this.selectedCounterInfo = event.selectedRows[0].dataItem.name;
            data = event.selectedRows[0].dataItem;
        }
        else {
            this.selectedCounterInfo = null;
        }
        this.selectionChange.emit({
            counterInfoName: this.selectedCounterInfo,
            data: data
        });
    };
    /**
     * @private
     * @return {?}
     */
    CounterInfosComponent.prototype.clearSelection = /**
     * @private
     * @return {?}
     */
    function () {
        this.selectedCounterInfo = null;
        this.selectionChange.emit({
            counterInfoName: this.selectedCounterInfo,
            data: null
        });
    };
    /**
     * @param {?} dataItem
     * @return {?}
     */
    CounterInfosComponent.prototype.onStatusTogglePressed = /**
     * @param {?} dataItem
     * @return {?}
     */
    function (dataItem) {
        this.logger.debug(LOG_TAG, 'onStatusTogglePressed dataItem: ', dataItem);
        this.edit.emit({
            editType: EditType.StatusChange,
            dataItem: dataItem
        });
    };
    /**
     * @param {?} event
     * @return {?}
     */
    CounterInfosComponent.prototype.onCommandConfirm = /**
     * @param {?} event
     * @return {?}
     */
    function (event) {
        this.logger.debug(LOG_TAG, 'onCommandConfirm event: ', event);
        this.edit.emit({
            editType: EditType[event.id],
            dataItem: event.rowData.dataItem
        });
    };
    /**
     * @param {?} event
     * @return {?}
     */
    CounterInfosComponent.prototype.onCommandClick = /**
     * @param {?} event
     * @return {?}
     */
    function (event) {
        this.logger.debug(LOG_TAG, 'onCommandClick event: ', event);
        this.edit.emit({
            editType: EditType[event.id],
            dataItem: event.rowData.dataItem
        });
    };
    CounterInfosComponent.decorators = [
        { type: Component, args: [{
                    // tslint:disable-next-line:component-selector
                    selector: 'wa-counter-infos-component',
                    template: "<wc-loading-overlay [visible]='loading'></wc-loading-overlay>\n\n<kendo-grid #datagrid [data]=\"tableModel.data\" [selectable]=\"selectableSettings\" (selectionChange)=\"onSelectionChange($event)\"\n style=\"height: 70%;\">\n\n  <kendo-grid-column field=\"name\" title=\"Name\" width=\"150\">\n  </kendo-grid-column>\n\n  <kendo-grid-column field=\"description\" title=\"Description\">\n  </kendo-grid-column>\n\n  <kendo-grid-column field=\"pattern\" title=\"Pattern\">\n    </kendo-grid-column>\n\n  <kendo-grid-column\n    field=\"created\"\n    title=\"Created\"\n    width=\"150\"\n    format=\"{0:dd/MM/yyyy HH:mm:ss}\"\n  >\n  </kendo-grid-column>\n\n  <kendo-grid-column field=\"enabled\" title=\"Status\">\n        <ng-template kendoGridCellTemplate let-dataItem let-columnIndex=\"columnIndex\" let-rowIndex=\"rowIndex\" let-column=\"column\">\n                <wc-grid-editor-command\n                [motif-acl]=\"['com.vipera.osgi.bss.countersthresholds.api.rest.CountersThresholdsApi:CREATE:enableCounterInfo', \n                                'com.vipera.osgi.bss.countersthresholds.api.rest.CountersThresholdsApi:DELETE:disableCounterInfo']\"\n                [rowIndex]=\"rowIndex\" \n                [hasConfirmation]=\"true\"\n                [confirmationTitleProvider]=\"statusConfirmationTitleProvider\"\n                [columnIndex]=\"columnIndex\" \n                [column]=\"column\" \n                [value]=\"dataItem[column.field]\" \n                [dataItem]=\"dataItem\"\n                (commandConfirm)=\"onStatusTogglePressed(dataItem)\"  \n                >\n                <span *ngIf=\"dataItem.enabled\" class=\"badge badge-status badge-enabled\">\n                        ENABLED\n                    </span>\n                    <span *ngIf=\"!dataItem.enabled\" class=\"badge badge-status  badge-disabled\">\n                            DISABLED\n                    </span>\n                </wc-grid-editor-command>\n        </ng-template>\n</kendo-grid-column>\n\n        <kendo-grid-column title=\"\">\n                <ng-template kendoGridCellTemplate let-dataItem let-columnIndex=\"columnIndex\" let-rowIndex=\"rowIndex\" let-column=\"column\">\n                        <wc-grid-editor-commands-group\n                                [motif-acl]=\"['com.vipera.osgi.bss.countersthresholds.api.rest.CountersThresholdsApi:UPDATE:updateCounterInfo',\n                                                'com.vipera.osgi.bss.countersthresholds.api.rest.CountersThresholdsApi:DELETE:deleteCounterInfo']\"\n                                motif-acl-hidden=\"true\"\n                                [commands]=\"commands\" \n                                [alignMode]=\"'end'\" \n                                [rowIndex]=\"rowIndex\"\n                                [columnIndex]=\"columnIndex\" \n                                [column]=\"column\" \n                                [value]=\"dataItem[column.field]\" \n                                [dataItem]=\"dataItem\"\n                                (commandConfirm)=\"onCommandConfirm($event)\"\n                                (commandClick)=\"onCommandClick($event)\"\n                                ></wc-grid-editor-commands-group>\n                </ng-template>\n        </kendo-grid-column>\n\n    <div *kendoGridDetailTemplate=\"let dataItem\">\n            <wa-counter-info-details [dataItem]=\"dataItem\"></wa-counter-info-details>\n    </div>\n\n</kendo-grid>\n\n",
                    styles: [".badge{border-radius:4px;display:inline-block;padding:1px 7px}.badge-status{cursor:pointer;text-decoration:none;font-size:.63rem;line-height:1.3;font-weight:700;padding:3px 7px;text-align:center;vertical-align:baseline;white-space:nowrap}.counter-info-row-details{padding:0}.counter-info-row-details p{margin:0;padding:.1rem 0}.counter-info-row-details p a{margin-left:10px}"]
                }] }
    ];
    /** @nocollapse */
    CounterInfosComponent.ctorParameters = function () { return [
        { type: NGXLogger },
        { type: WCNotificationCenter },
        { type: CountersService }
    ]; };
    CounterInfosComponent.propDecorators = {
        selectionChange: [{ type: Output }],
        edit: [{ type: Output }]
    };
    return CounterInfosComponent;
}());
export { CounterInfosComponent };
if (false) {
    /** @type {?} */
    CounterInfosComponent.prototype.loading;
    /**
     * @type {?}
     * @private
     */
    CounterInfosComponent.prototype._subHandler;
    /** @type {?} */
    CounterInfosComponent.prototype.tableModel;
    /** @type {?} */
    CounterInfosComponent.prototype.faEdit;
    /** @type {?} */
    CounterInfosComponent.prototype.selectedCounterInfo;
    /** @type {?} */
    CounterInfosComponent.prototype.selectionChange;
    /** @type {?} */
    CounterInfosComponent.prototype.edit;
    /** @type {?} */
    CounterInfosComponent.prototype.selectableSettings;
    /** @type {?} */
    CounterInfosComponent.prototype.statusConfirmationTitleProvider;
    /** @type {?} */
    CounterInfosComponent.prototype.commands;
    /**
     * @type {?}
     * @private
     */
    CounterInfosComponent.prototype.logger;
    /**
     * @type {?}
     * @private
     */
    CounterInfosComponent.prototype.notificationCenter;
    /**
     * @type {?}
     * @private
     */
    CounterInfosComponent.prototype.countersService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRlci1pbmZvcy1jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tb3RpZi13ZWItYWRtaW4tY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZWN0aW9ucy9Db3VudGVyc0FuZFRocmVzaG9sZHMvY29tcG9uZW50cy9jb3VudGVyLWluZm9zL2NvdW50ZXItaW5mb3MtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixZQUFZLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFxQixNQUFNLGdEQUFnRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0lBS3JELE9BQU8sR0FBRyx5QkFBeUI7Ozs7QUFFekMsb0NBR0M7OztJQUZHLHlDQUF3Qjs7SUFDeEIsOEJBQVM7Ozs7SUFJVCxRQUFTLFFBQVE7SUFDakIsTUFBTyxNQUFNO0lBQ2IsY0FBZSxjQUFjOzs7Ozs7QUFHakMsK0JBR0M7OztJQUZHLDZCQUFrQjs7SUFDbEIsNkJBQTRCOztBQUdoQztJQWdESSwrQkFDWSxNQUFpQixFQUNqQixrQkFBd0MsRUFDeEMsZUFBZ0M7UUFGaEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBQ3hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQTNDNUMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNSLGdCQUFXLEdBQTBCLElBQUks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QU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1gsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVCLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVE7U0FDbkMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzs7Ozs7SUFFRCw4Q0FBYzs7OztJQUFkLFVBQWUsS0FBd0M7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1gsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVCLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVE7U0FDbkMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzs7Z0JBeElKLFNBQVMsU0FBQzs7b0JBRVAsUUFBUSxFQUFFLDRCQUE0QjtvQkFFdEMsczZHQUE2Qzs7aUJBQ2hEOzs7O2dCQWpDUSxTQUFTO2dCQUNULG9CQUFvQjtnQkFDcEIsZUFBZTs7O2tDQXdDbkIsTUFBTTt1QkFDTixNQUFNOztJQTRIWCw0QkFBQztDQUFBLEFBM0lELElBMklDO1NBcklZLHFCQUFxQjs7O0lBRTlCLHdDQUFnQjs7Ozs7SUFDaEIsNENBQXlFOztJQUN6RSwyQ0FBcUM7O0lBQ3JDLHVDQUFnQjs7SUFDaEIsb0RBQTRCOztJQUU1QixnREFBOEU7O0lBQzlFLHFDQUF3RTs7SUFFeEUsbURBSUM7O0lBRUQsZ0VBUUM7O0lBRUQseUNBYUU7Ozs7O0lBR0UsdUNBQXlCOzs7OztJQUN6QixtREFBZ0Q7Ozs7O0lBQ2hELGdEQUF3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdDR3JpZEVkaXRvckNvbW1hbmRzQ29uZmlnLCBXQ0dyaWRFZGl0b3JDb21tYW5kQ29tcG9uZW50RXZlbnQsIFdDQ29uZmlybWF0aW9uVGl0bGVQcm92aWRlciB9IGZyb20gJ3dlYi1jb25zb2xlLXVpLWtpdCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HWExvZ2dlcn0gZnJvbSAnd2ViLWNvbnNvbGUtY29yZSc7XG5pbXBvcnQgeyBXQ05vdGlmaWNhdGlvbkNlbnRlciwgTm90aWZpY2F0aW9uVHlwZSB9IGZyb20gJ3dlYi1jb25zb2xlLXVpLWtpdCc7XG5pbXBvcnQgeyBDb3VudGVyc1NlcnZpY2UsIENvdW50ZXJJbmZvRW50aXR5IH0gZnJvbSAnQHdhLW1vdGlmLW9wZW4tYXBpL2NvdW50ZXJzLXRocmVzaG9sZHMtc2VydmljZSc7XG5pbXBvcnQgeyBXQ1N1YnNjcmlwdGlvbkhhbmRsZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzL0NvbW1vbnMvd2Mtc3Vic2NyaXB0aW9uLWhhbmRsZXInO1xuaW1wb3J0IHsgQ291bnRlckluZm9zTW9kZWwgfSBmcm9tICcuL2RhdGEvbW9kZWwnO1xuaW1wb3J0IHsgZmFFZGl0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IFNlbGVjdGFibGVTZXR0aW5ncyB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWdyaWQnO1xuXG5leHBvcnQgeyBDb3VudGVySW5mb0VudGl0eSB9ICBmcm9tICdAd2EtbW90aWYtb3Blbi1hcGkvY291bnRlcnMtdGhyZXNob2xkcy1zZXJ2aWNlJztcblxuY29uc3QgTE9HX1RBRyA9ICdbQ291bnRlckluZm9zQ29tcG9uZW50XSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uRXZlbnQge1xuICAgIGNvdW50ZXJJbmZvTmFtZTogc3RyaW5nO1xuICAgIGRhdGE6IGFueVxufVxuXG5leHBvcnQgZW51bSBFZGl0VHlwZSB7XG4gICAgRGVsZXRlID0gJ0RlbGV0ZScsXG4gICAgRWRpdCA9ICdFZGl0JyxcbiAgICBTdGF0dXNDaGFuZ2UgPSAnU3RhdHVzQ2hhbmdlJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRFdmVudCB7XG4gICAgZWRpdFR5cGU6IEVkaXRUeXBlXG4gICAgZGF0YUl0ZW06IENvdW50ZXJJbmZvRW50aXR5O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICd3YS1jb3VudGVyLWluZm9zLWNvbXBvbmVudCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY291bnRlci1pbmZvcy1jb21wb25lbnQuc2NzcyddLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb3VudGVyLWluZm9zLWNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDb3VudGVySW5mb3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBsb2FkaW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfc3ViSGFuZGxlcjogV0NTdWJzY3JpcHRpb25IYW5kbGVyID0gbmV3IFdDU3Vic2NyaXB0aW9uSGFuZGxlcigpO1xuICAgIHB1YmxpYyB0YWJsZU1vZGVsOiBDb3VudGVySW5mb3NNb2RlbDtcbiAgICBmYUVkaXQgPSBmYUVkaXQ7XG4gICAgc2VsZWN0ZWRDb3VudGVySW5mbzogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA6IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGVkaXQ6IEV2ZW50RW1pdHRlcjxFZGl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFZGl0RXZlbnQ+KCk7XG5cbiAgICBwdWJsaWMgc2VsZWN0YWJsZVNldHRpbmdzOiBTZWxlY3RhYmxlU2V0dGluZ3MgPSB7XG4gICAgICAgIG1vZGU6ICdzaW5nbGUnLFxuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICBjaGVja2JveE9ubHk6IGZhbHNlXG4gICAgfSAgIFxuXG4gICAgc3RhdHVzQ29uZmlybWF0aW9uVGl0bGVQcm92aWRlcjogV0NDb25maXJtYXRpb25UaXRsZVByb3ZpZGVyID0ge1xuICAgICAgICBnZXRUaXRsZShyb3dEYXRhKTogc3RyaW5nIHtcbiAgICAgICAgICAgIGlmIChyb3dEYXRhLmVuYWJsZWQpe1xuICAgICAgICAgICAgICAgIHJldHVybiBcIkRpc2FibGUgP1wiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJFbmFibGUgP1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tbWFuZHM6IFdDR3JpZEVkaXRvckNvbW1hbmRzQ29uZmlnID0gW1xuICAgICAgICB7IFxuICAgICAgICAgICAgY29tbWFuZEljb246ICd3YS1pY28tZWRpdCcsXG4gICAgICAgICAgICBjb21tYW5kSWQ6IEVkaXRUeXBlLkVkaXQsXG4gICAgICAgICAgICB0aXRsZTogJ0VkaXQnXG4gICAgICAgIH0sXG4gICAgICAgIHsgXG4gICAgICAgICAgICBjb21tYW5kSWNvbjogJ3dhLWljby1ubycsXG4gICAgICAgICAgICBjb21tYW5kSWQ6IEVkaXRUeXBlLkRlbGV0ZSxcbiAgICAgICAgICAgIHRpdGxlOiAnRGVsZXRlJyxcbiAgICAgICAgICAgIGhhc0NvbmZpcm1hdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpcm1hdGlvblRpdGxlOiAnRGVsZXRlID8nIFxuICAgICAgICB9XG4gICAgXTtcbiAgICBcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBsb2dnZXI6IE5HWExvZ2dlcixcbiAgICAgICAgcHJpdmF0ZSBub3RpZmljYXRpb25DZW50ZXI6IFdDTm90aWZpY2F0aW9uQ2VudGVyLFxuICAgICAgICBwcml2YXRlIGNvdW50ZXJzU2VydmljZTogQ291bnRlcnNTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudGFibGVNb2RlbCA9IG5ldyBDb3VudGVySW5mb3NNb2RlbCgpO1xuICAgICAgICB0aGlzLnJlbG9hZERhdGEoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRyAsICduZ09uRGVzdHJveSAnKTtcbiAgICAgICAgdGhpcy5mcmVlTWVtKCk7XG4gICAgfVxuXG4gICAgZnJlZU1lbSgpIHtcbiAgICAgICAgdGhpcy50YWJsZU1vZGVsLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcmVsb2FkRGF0YSgpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ3JlbG9hZERhdGEgY2FsbGVkJyk7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuX3N1YkhhbmRsZXIuYWRkKHRoaXMuY291bnRlcnNTZXJ2aWNlLmdldENvdW50ZXJJbmZvTGlzdCgpLnN1YnNjcmliZSggKGRhdGE6IEFycmF5PENvdW50ZXJJbmZvRW50aXR5PikgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ2dldENvdW50ZXJJbmZvTGlzdCBkb25lOiAnLCBkYXRhKTtcbiAgICAgICAgICAgIHRoaXMudGFibGVNb2RlbC5sb2FkRGF0YShkYXRhKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKExPR19UQUcsICdnZXRDb3VudGVySW5mb0xpc3QgZXJyb3I6ICcsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ2VudGVyLnBvc3Qoe1xuICAgICAgICAgICAgICAgIG5hbWU6ICdHZXRDb3VudGVySW5mb3NFcnJvcicsXG4gICAgICAgICAgICAgICAgdGl0bGU6ICdHZXQgQ291bnRlciBJbmZvcycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ0Vycm9yIGdldHRpbmcgY291bnRlciBpbmZvczonLFxuICAgICAgICAgICAgICAgIHR5cGU6IE5vdGlmaWNhdGlvblR5cGUuRXJyb3IsXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgb25TZWxlY3Rpb25DaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ29uU2VsZWN0aW9uQ2hhbmdlIGV2ZW50OiAnLCBldmVudCk7XG4gICAgICAgIGxldCBkYXRhID0gbnVsbDtcbiAgICAgICAgaWYgKGV2ZW50LnNlbGVjdGVkUm93cy5sZW5ndGg+MCl7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRlckluZm8gPSBldmVudC5zZWxlY3RlZFJvd3NbMF0uZGF0YUl0ZW0ubmFtZTtcbiAgICAgICAgICAgIGRhdGEgPSBldmVudC5zZWxlY3RlZFJvd3NbMF0uZGF0YUl0ZW07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRlckluZm8gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgY291bnRlckluZm9OYW1lOiB0aGlzLnNlbGVjdGVkQ291bnRlckluZm8sXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJTZWxlY3Rpb24oKXtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50ZXJJbmZvID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBjb3VudGVySW5mb05hbWU6IHRoaXMuc2VsZWN0ZWRDb3VudGVySW5mbyxcbiAgICAgICAgICAgIGRhdGE6IG51bGxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TdGF0dXNUb2dnbGVQcmVzc2VkKGRhdGFJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKExPR19UQUcsICdvblN0YXR1c1RvZ2dsZVByZXNzZWQgZGF0YUl0ZW06ICcsIGRhdGFJdGVtKTtcbiAgICAgICAgdGhpcy5lZGl0LmVtaXQoe1xuICAgICAgICAgICAgZWRpdFR5cGU6IEVkaXRUeXBlLlN0YXR1c0NoYW5nZSxcbiAgICAgICAgICAgIGRhdGFJdGVtOiBkYXRhSXRlbVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIG9uQ29tbWFuZENvbmZpcm0oZXZlbnQ6IFdDR3JpZEVkaXRvckNvbW1hbmRDb21wb25lbnRFdmVudCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAnb25Db21tYW5kQ29uZmlybSBldmVudDogJywgZXZlbnQpO1xuICAgICAgICB0aGlzLmVkaXQuZW1pdCh7XG4gICAgICAgICAgICBlZGl0VHlwZTogRWRpdFR5cGVbZXZlbnQuaWRdLFxuICAgICAgICAgICAgZGF0YUl0ZW06IGV2ZW50LnJvd0RhdGEuZGF0YUl0ZW1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBvbkNvbW1hbmRDbGljayhldmVudDogV0NHcmlkRWRpdG9yQ29tbWFuZENvbXBvbmVudEV2ZW50KXtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ29uQ29tbWFuZENsaWNrIGV2ZW50OiAnLCBldmVudCk7XG4gICAgICAgIHRoaXMuZWRpdC5lbWl0KHtcbiAgICAgICAgICAgIGVkaXRUeXBlOiBFZGl0VHlwZVtldmVudC5pZF0sXG4gICAgICAgICAgICBkYXRhSXRlbTogZXZlbnQucm93RGF0YS5kYXRhSXRlbVxuICAgICAgICB9KVxuICAgIH1cblxuXG59XG4gXG4iXX0=