UNPKG

e5core-angular-ui

Version:

e5 Anywhere Angular UI

276 lines 21.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Injectable } from '@angular/core'; import { UiDocumentService } from 'e5core-angular-services'; import { DataSourceColumnStatus } from './data-source-column'; import { map } from 'rxjs/operators'; import { of } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "e5core-angular-services"; var DocumentDataSourceService = /** @class */ (function () { function DocumentDataSourceService(uiDocumentService) { this.uiDocumentService = uiDocumentService; this.folderName = ""; this.fieldsToShow = null; this.searchOptions = {}; } /** * @return {?} */ DocumentDataSourceService.prototype.defaultOptions = /** * @return {?} */ function () { return (this.searchOptions); }; /** * @param {?} options * @return {?} */ DocumentDataSourceService.prototype.setDefaultOptions = /** * @param {?} options * @return {?} */ function (options) { this.searchOptions = tslib_1.__assign({}, options); // clone }; /** * @param {?} libraryId * @param {?} folderName * @param {?} includeSelect * @param {?} fieldsToShow * @param {?} searchText * @return {?} */ DocumentDataSourceService.prototype.setLibrary = /** * @param {?} libraryId * @param {?} folderName * @param {?} includeSelect * @param {?} fieldsToShow * @param {?} searchText * @return {?} */ function (libraryId, folderName, includeSelect, fieldsToShow, searchText) { this.libraryId = libraryId; this.folderName = folderName; this.includeSelect = includeSelect; this.fieldsToShow = fieldsToShow; this.searchText = searchText; return (this); }; /** * @return {?} */ DocumentDataSourceService.prototype.columns = /** * @return {?} */ function () { /** @type {?} */ var columns = this.fieldsToShow.filter(function (f) { return f.display; }).map(function (sf) { return (/** @type {?} */ ({ code: sf.fieldCode, label: sf.name, type: "Input", status: DataSourceColumnStatus.Selected })); }); columns = this.addOptionalColumns(columns); return of(columns); }; /** * @private * @param {?} columns * @return {?} */ DocumentDataSourceService.prototype.addOptionalColumns = /** * @private * @param {?} columns * @return {?} */ function (columns) { if (this.includeSelect) // Add to start columns.unshift((/** @type {?} */ ({ label: "", code: "ActionSelect", type: "ActionSelect", status: DataSourceColumnStatus.Selected }))); return (columns); }; /** * @param {?} page * @param {?} pageSize * @param {?} optionsIn * @return {?} */ DocumentDataSourceService.prototype.read = /** * @param {?} page * @param {?} pageSize * @param {?} optionsIn * @return {?} */ function (page, pageSize, optionsIn) { var _this = this; /** @type {?} */ var options = tslib_1.__assign({}, this.searchOptions, optionsIn); /** @type {?} */ var returnFields = ""; if (this.fieldsToShow && typeof (this.fieldsToShow) !== 'undefined') { //var fieldsToRetrieve = fieldsToShow.reduce((fid, fs) => [ ...fid, ...fs.fieldId ], <string[]> []); //.join(",") /** @type {?} */ var fieldsToRetrieve = this.fieldsToShow.filter(function (f) { return f.display; }).reduce(function (a, b) { return [a, b.fieldId]; }, []).toString(); if (fieldsToRetrieve.length > 0) fieldsToRetrieve = fieldsToRetrieve.substring(1); returnFields = fieldsToRetrieve; } /** @type {?} */ var orderBy = (options && options.orderBy) ? options.orderBy : ""; pageSize = (pageSize) ? pageSize : 10; //return this.uiDocumentService.getAll(this.libraryId, returnFields, page, pageSize, "", this.searchText, orderBy) return this.uiDocumentService.getAll(this.libraryId, { returnFields: returnFields, page: page, pageSize: pageSize, orderBy: "", searchBy: this.searchText, filter: "", folderName: "" }) .pipe(map(function (results) { return { total: results.length, data: _this.mapResults(results) }; })); }; /** * @private * @param {?} result * @return {?} */ DocumentDataSourceService.prototype.mapResults = /** * @private * @param {?} result * @return {?} */ function (result) { /** @type {?} */ var results = []; if (result && result.length > 0) { for (var r = 0; r < result.length; r++) { /** @type {?} */ var dataRow = result[r]; /** @type {?} */ var objectRow = {}; for (var c = 0; c < this.fieldsToShow.length; c++) { /** @type {?} */ var field = this.fieldsToShow[c]; objectRow[field.fieldCode] = dataRow.fields[field.fieldCode]; } results[results.length] = objectRow; } } return results; }; // In order to use the foundation service we need to map the DataSourceQuery into // the underlying foundation query // { // "filters": [ // { // "field": "string", // "operator": "string", // "value": "string" // } // ], // "logic": "string" // } // In order to use the foundation service we need to map the DataSourceQuery into // the underlying foundation query // { // "filters": [ // { // "field": "string", // "operator": "string", // "value": "string" // } // ], // "logic": "string" // } /** * @private * @param {?} query * @return {?} */ DocumentDataSourceService.prototype.mapQueryToFilterBy = // In order to use the foundation service we need to map the DataSourceQuery into // the underlying foundation query // { // "filters": [ // { // "field": "string", // "operator": "string", // "value": "string" // } // ], // "logic": "string" // } /** * @private * @param {?} query * @return {?} */ function (query) { /** @type {?} */ var filterBy = {}; if (query && query.Expressions && query.Expressions.length > 0) { /** @type {?} */ var filters = query.Expressions .filter(function (e) { return e.Value; }) .map(function (e) { return { field: e.Field, value: e.Value }; }); filterBy = { filters: filters }; } return (filterBy); }; DocumentDataSourceService.decorators = [ { type: Injectable, args: [{ providedIn: null //'root' },] } ]; /** @nocollapse */ DocumentDataSourceService.ctorParameters = function () { return [ { type: UiDocumentService } ]; }; /** @nocollapse */ DocumentDataSourceService.ngInjectableDef = i0.defineInjectable({ factory: function DocumentDataSourceService_Factory() { return new DocumentDataSourceService(i0.inject(i1.UiDocumentService)); }, token: DocumentDataSourceService, providedIn: null }); return DocumentDataSourceService; }()); export { DocumentDataSourceService }; if (false) { /** @type {?} */ DocumentDataSourceService.prototype.libraryId; /** @type {?} */ DocumentDataSourceService.prototype.folderName; /** @type {?} */ DocumentDataSourceService.prototype.includeSelect; /** @type {?} */ DocumentDataSourceService.prototype.searchText; /** @type {?} */ DocumentDataSourceService.prototype.fieldsToShow; /** @type {?} */ DocumentDataSourceService.prototype.searchOptions; /** * @type {?} * @private */ DocumentDataSourceService.prototype.uiDocumentService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZGF0YS1zb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2U1Y29yZS1hbmd1bGFyLXVpLyIsInNvdXJjZXMiOlsibGliL2RhdGFzb3VyY2UvZG9jdW1lbnQtZGF0YS1zb3VyY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJNUQsT0FBTyxFQUFvQixzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2hGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFFMUI7SUFZQyxtQ0FBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFOeEQsZUFBVSxHQUFZLEVBQUUsQ0FBQztRQUd4QixpQkFBWSxHQUE0QixJQUFJLENBQUM7UUFDOUMsa0JBQWEsR0FBc0IsRUFBRSxDQUFFO0lBR3ZDLENBQUM7Ozs7SUFFTSxrREFBYzs7O0lBQXJCO1FBQ0MsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBRTtJQUM5QixDQUFDOzs7OztJQUVNLHFEQUFpQjs7OztJQUF4QixVQUF5QixPQUF5QjtRQUNqRCxJQUFJLENBQUMsYUFBYSx3QkFBTyxPQUFPLENBQUMsQ0FBRSxDQUFDLFFBQVE7SUFDN0MsQ0FBQzs7Ozs7Ozs7O0lBRU0sOENBQVU7Ozs7Ozs7O0lBQWpCLFVBQWtCLFNBQWtCLEVBQUUsVUFBbUIsRUFBRSxhQUF1QixFQUFFLFlBQW9DLEVBQUUsVUFBa0I7UUFDekksSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFB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Ozs7Ozs7Ozs7Ozs7OztJQUExQixVQUEyQixLQUFxQjs7WUFDM0MsUUFBUSxHQUFHLEVBQUU7UUFDakIsSUFBRyxLQUFLLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7O2dCQUMxRCxPQUFPLEdBQUcsS0FBSyxDQUFDLFdBQVc7aUJBQzdCLE1BQU0sQ0FBRSxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxLQUFLLEVBQVAsQ0FBTyxDQUFFO2lCQUN0QixHQUFHLENBQUUsVUFBQSxDQUFDO2dCQUNOLE9BQU87b0JBQ04sS0FBSyxFQUFHLENBQUMsQ0FBQyxLQUFLO29CQUNmLEtBQUssRUFBRyxDQUFDLENBQUMsS0FBSztpQkFDZixDQUFBO1lBQ0YsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxHQUFHO2dCQUNWLE9BQU8sRUFBRyxPQUFPO2FBQ2pCLENBQUE7U0FDRDtRQUNELE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNsQixDQUFDOztnQkEzSUQsVUFBVSxTQUFDO29CQUNYLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUTtpQkFDekI7Ozs7Z0JBYlEsaUJBQWlCOzs7b0NBRDFCO0NBd0pDLEFBNUlELElBNElDO1NBeklZLHlCQUF5Qjs7O0lBRXBDLDhDQUFtQjs7SUFDcEIsK0NBQXlCOztJQUN6QixrREFBd0I7O0lBQ3hCLCtDQUFvQjs7SUFDbkIsaURBQTZDOztJQUM5QyxrREFBdUM7Ozs7O0lBRTNCLHNEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVpRG9jdW1lbnRTZXJ2aWNlIH0gZnJvbSAnZTVjb3JlLWFuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSURhdGFTb3VyY2UgfSBmcm9tICcuL2RhdGEtc291cmNlJztcbmltcG9ydCB7IERhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS1vcHRpb25zJztcbmltcG9ydCB7IERhdGFTb3VyY2VDb2x1bW4sIERhdGFTb3VyY2VDb2x1bW5TdGF0dXMgfSBmcm9tICcuL2RhdGEtc291cmNlLWNvbHVtbic7XG5pbXBvcnQgeyBEYXRhU291cmNlUXVlcnkgfSBmcm9tICcuL2RhdGEtc291cmNlLXF1ZXJ5JztcbmltcG9ydCB7IERhdGFTb3VyY2VSZXN1bHRzIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS1yZXN1bHRzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZpZWxkRGVmaW5pdGlvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiBudWxsIC8vJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50RGF0YVNvdXJjZVNlcnZpY2UgaW1wbGVtZW50cyBJRGF0YVNvdXJjZSB7XG5cbiAgbGlicmFyeUlkIDogbnVtYmVyO1xuXHRmb2xkZXJOYW1lIDogc3RyaW5nID0gXCJcIjtcblx0aW5jbHVkZVNlbGVjdCA6IGJvb2xlYW47XG5cdHNlYXJjaFRleHQgOiBzdHJpbmc7XG4gIGZpZWxkc1RvU2hvdyA6IEZpZWxkRGVmaW5pdGlvbk1vZGVsW10gPSBudWxsO1xuXHRzZWFyY2hPcHRpb25zOiBEYXRhU291cmNlT3B0aW9ucyA9IHt9IDtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHVpRG9jdW1lbnRTZXJ2aWNlOiBVaURvY3VtZW50U2VydmljZSkge1xuXHR9XG5cblx0cHVibGljIGRlZmF1bHRPcHRpb25zKCk6IERhdGFTb3VyY2VPcHRpb25zIHtcblx0XHRyZXR1cm4gKHRoaXMuc2VhcmNoT3B0aW9ucykgO1xuXHR9XG5cblx0cHVibGljIHNldERlZmF1bHRPcHRpb25zKG9wdGlvbnM6RGF0YVNvdXJjZU9wdGlvbnMpIHtcblx0XHR0aGlzLnNlYXJjaE9wdGlvbnMgPSB7Li4ub3B0aW9uc30gOyAvLyBjbG9uZVxuXHR9XG5cblx0cHVibGljIHNldExpYnJhcnkobGlicmFyeUlkIDogbnVtYmVyLCBmb2xkZXJOYW1lIDogc3RyaW5nLCBpbmNsdWRlU2VsZWN0IDogYm9vbGVhbiwgZmllbGRzVG9TaG93OiBGaWVsZERlZmluaXRpb25Nb2RlbFtdLCBzZWFyY2hUZXh0OiBzdHJpbmcpOiBEb2N1bWVudERhdGFTb3VyY2VTZXJ2aWNlIHtcbiAgICB0aGlzLmxpYnJhcnlJZCA9IGxpYnJhcnlJZDtcblx0XHR0aGlzLmZvbGRlck5hbWUgPSBmb2xkZXJOYW1lO1xuXHRcdHRoaXMuaW5jbHVkZVNlbGVjdCA9IGluY2x1ZGVTZWxlY3Q7XG5cdFx0dGhpcy5maWVsZHNUb1Nob3cgPSBmaWVsZHNUb1Nob3c7XG5cdFx0dGhpcy5zZWFyY2hUZXh0ID0gc2VhcmNoVGV4dDtcblx0XHRyZXR1cm4gKHRoaXMpXG5cdH1cblxuXHRjb2x1bW5zKCk6IE9ic2VydmFibGU8RGF0YVNvdXJjZUNvbHVtbltdPiB7XG5cdFx0bGV0IGNvbHVtbnMgPSB0aGlzLmZpZWxkc1RvU2hvdy5maWx0ZXIoZiA9PiBmLmRpc3BsYXkpLm1hcDxEYXRhU291cmNlQ29sdW1uPihzZiA9PiA8RGF0YVNvdXJjZUNvbHVtbj57XG5cdFx0XHRjb2RlOiBzZi5maWVsZENvZGUsXG5cdFx0XHRsYWJlbDogc2YubmFtZSxcblx0XHRcdHR5cGU6IFwiSW5wdXRcIixcblx0XHRcdHN0YXR1czogRGF0YVNvdXJjZUNvbHVtblN0YXR1cy5TZWxlY3RlZFxuXHRcdH0pO1xuXHRcdGNvbHVtbnMgPSB0aGlzLmFkZE9wdGlvbmFsQ29sdW1ucyhjb2x1bW5zKTtcblx0XHRyZXR1cm4gb2YoY29sdW1ucyk7XG5cdH1cblxuXHRwcml2YXRlIGFkZE9wdGlvbmFsQ29sdW1ucyhjb2x1bW5zOkRhdGFTb3VyY2VDb2x1bW5bXSk6IERhdGFTb3VyY2VDb2x1bW5bXSB7XG5cdFx0aWYodGhpcy5pbmNsdWRlU2VsZWN0KVxuXHRcdFx0Ly8gQWRkIHRvIHN0YXJ0XG5cdFx0XHRjb2x1bW5zLnVuc2hpZnQoPERhdGFTb3VyY2VDb2x1bW4+e1xuXHRcdFx0XHRsYWJlbDogXCJcIixcblx0XHRcdFx0Y29kZTogXCJBY3Rpb25TZWxlY3RcIixcblx0XHRcdFx0dHlwZTogXCJBY3Rpb25TZWxlY3RcIixcblx0XHRcdFx0c3RhdHVzOiBEYXRhU291cmNlQ29sdW1uU3RhdHVzLlNlbGVjdGVkXG5cdFx0XHR9KTtcblx0XHRyZXR1cm4gKGNvbHVtbnMpIDtcblx0fVxuXG5cdHB1YmxpYyByZWFkKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciwgb3B0aW9uc0luOiBEYXRhU291cmNlT3B0aW9ucyk6IE9ic2VydmFibGU8RGF0YVNvdXJjZVJlc3VsdHM+IHtcblx0XHRsZXQgb3B0aW9uczogRGF0YVNvdXJjZU9wdGlvbnMgPSB7XG5cdFx0XHQuLi50aGlzLnNlYXJjaE9wdGlvbnMsXG5cdFx0XHQuLi5vcHRpb25zSW5cblx0XHR9XG5cdFx0XG5cdFx0dmFyIHJldHVybkZpZWxkcyA9IFwiXCI7XG4gICAgaWYgKHRoaXMuZmllbGRzVG9TaG93ICYmIHR5cGVvZih0aGlzLmZpZWxkc1RvU2hvdykgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvL3ZhciBmaWVsZHNUb1JldHJpZXZlID0gZmllbGRzVG9TaG93LnJlZHVjZSgoZmlkLCBmcykgPT4gWyAuLi5maWQsIC4uLmZzLmZpZWxkSWQgXSwgPHN0cmluZ1tdPiBbXSk7XG4gICAgICAvLy5qb2luKFwiLFwiKVxuICAgICAgdmFyIGZpZWxkc1RvUmV0cmlldmUgPSB0aGlzLmZpZWxkc1RvU2hvdy5maWx0ZXIoZiA9PiBmLmRpc3BsYXkpLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7cmV0dXJuIFthLGIuZmllbGRJZF19LCBbXSkudG9TdHJpbmcoKTtcbiAgICAgIGlmIChmaWVsZHNUb1JldHJpZXZlLmxlbmd0aD4gMClcbiAgICAgICAgZmllbGRzVG9SZXRyaWV2ZSA9IGZpZWxkc1RvUmV0cmlldmUuc3Vic3RyaW5nKDEpO1xuICAgICAgcmV0dXJuRmllbGRzID0gZmllbGRzVG9SZXRyaWV2ZTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyQnkgPSAob3B0aW9ucyAmJiBvcHRpb25zLm9yZGVyQnkpID8gb3B0aW9ucy5vcmRlckJ5IDogXCJcIjtcblx0XHRcblx0XHRwYWdlU2l6ZSA9IChwYWdlU2l6ZSkgPyBwYWdlU2l6ZSA6IDEwXG5cblx0XHQvL3JldHVybiB0aGlzLnVpRG9jdW1lbnRTZXJ2aWNlLmdldEFsbCh0aGlzLmxpYnJhcnlJZCwgcmV0dXJuRmllbGRzLCBwYWdlLCBwYWdlU2l6ZSwgXCJcIiwgdGhpcy5zZWFyY2hUZXh0LCBvcmRlckJ5KVxuXHRcdHJldHVybiB0aGlzLnVpRG9jdW1lbnRTZXJ2aWNlLmdldEFsbCh0aGlzLmxpYnJhcnlJZCwgeyBcblx0XHRcdHJldHVybkZpZWxkczogcmV0dXJuRmllbGRzLCBcblx0XHRcdHBhZ2U6IHBhZ2UsIFxuXHRcdFx0cGFnZVNpemU6cGFnZVNpemUsIFxuXHRcdFx0b3JkZXJCeTpcIlwiLCBcblx0XHRcdHNlYXJjaEJ5OnRoaXMuc2VhcmNoVGV4dCwgXG5cdFx0XHRmaWx0ZXI6IFwiXCIsXG5cdFx0XHRmb2xkZXJOYW1lOiBcIlwiXG5cdFx0fSlcblx0XHQucGlwZTxEYXRhU291cmNlUmVzdWx0cz4oXG5cdFx0XHRtYXAocmVzdWx0cyA9PiB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0dG90YWw6IHJlc3VsdHMubGVuZ3RoLFxuXHRcdFx0XHRcdGRhdGE6IHRoaXMubWFwUmVzdWx0cyhyZXN1bHRzKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuICBwcml2YXRlIG1hcFJlc3VsdHMocmVzdWx0OiBhbnkpOiBhbnlbXSB7XG4gICAgbGV0IHJlc3VsdHM6IGFueVtdID0gW107XG5cbiAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKHZhciByOiBudW1iZXIgPSAwOyByIDwgcmVzdWx0Lmxlbmd0aDsgcisrKSB7XG4gICAgICAgIGxldCBkYXRhUm93OiBhbnkgPSByZXN1bHRbcl07XG4gICAgICAgIGxldCBvYmplY3RSb3c6IGFueSA9IHt9O1xuICAgICAgICBmb3IgKHZhciBjOiBudW1iZXIgPSAwOyBjIDwgdGhpcy5maWVsZHNUb1Nob3cubGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICBsZXQgZmllbGQgPSB0aGlzLmZpZWxkc1RvU2hvd1tjXTtcbiAgICAgICAgICBvYmplY3RSb3dbZmllbGQuZmllbGRDb2RlXSA9IGRhdGFSb3cuZmllbGRzW2ZpZWxkLmZpZWxkQ29kZV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0c1tyZXN1bHRzLmxlbmd0aF0gPSBvYmplY3RSb3c7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuXHQvLyBJbiBvcmRlciB0byB1c2UgdGhlIGZvdW5kYXRpb24gc2VydmljZSB3ZSBuZWVkIHRvIG1hcCB0aGUgRGF0YVNvdXJjZVF1ZXJ5IGludG8gXG5cdC8vXHR0aGUgdW5kZXJseWluZyBmb3VuZGF0aW9uIHF1ZXJ5XG5cdC8vIFx0e1xuXHQvLyBcdFx0XCJmaWx0ZXJzXCI6IFtcblx0Ly8gXHQgIFx0XHR7XG5cdC8vIFx0XHRcdFx0XCJmaWVsZFwiOiBcInN0cmluZ1wiLFxuXHQvLyBcdFx0XHRcdFwib3BlcmF0b3JcIjogXCJzdHJpbmdcIixcblx0Ly8gXHRcdFx0XHRcInZhbHVlXCI6IFwic3RyaW5nXCJcblx0Ly8gXHQgIFx0XHR9XG5cdC8vIFx0XHRdLFxuXHQvLyBcdFx0XCJsb2dpY1wiOiBcInN0cmluZ1wiXG5cdC8vIFx0fVxuXHRwcml2YXRlIG1hcFF1ZXJ5VG9GaWx0ZXJCeShxdWVyeTpEYXRhU291cmNlUXVlcnkpOiBhbnkge1xuXHRcdGxldCBmaWx0ZXJCeSA9IHt9IDtcblx0XHRpZihxdWVyeSAmJiBxdWVyeS5FeHByZXNzaW9ucyAmJiBxdWVyeS5FeHByZXNzaW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRsZXQgZmlsdGVycyA9IHF1ZXJ5LkV4cHJlc3Npb25zXG5cdFx0XHRcdC5maWx0ZXIoIGUgPT4gZS5WYWx1ZSApXG5cdFx0XHRcdC5tYXAoIGUgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRmaWVsZCA6IGUuRmllbGQsXG5cdFx0XHRcdFx0XHR2YWx1ZSA6IGUuVmFsdWVcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pIDtcblx0XHRcdGZpbHRlckJ5ID0ge1xuXHRcdFx0XHRmaWx0ZXJzIDogZmlsdGVyc1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gKGZpbHRlckJ5KVxuXHR9XG59XG4iXX0=