UNPKG

ice-utilities

Version:

Utilities for manage arrays, breadcrumb, dom elements, dates, injectors, local storage, login, objects, router animations, router, session storage, strings and translate utilities, encryption, for angular 6+ with ECMAScript 6 - ECMAScript 2015

361 lines 23.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { PRIMARY_OUTLET } from '@angular/router'; import { TranslateUtils } from './translateUtils'; import { SessionUtils } from './sessionUtils'; import { ArrayUtils } from './arrayUtils'; import { StringUtils } from './stringUtils'; // @dynamic /** * @abstract */ var RouterUtils = /** @class */ (function () { function RouterUtils() { } /** * @param {?=} router * @return {?} */ RouterUtils.setRouterInstance = /** * @param {?=} router * @return {?} */ function (router) { if (!this.router && router) { this.router = router; } }; /** * @param {?} dir * @return {?} */ RouterUtils.setStaticDir = /** * @param {?} dir * @return {?} */ function (dir) { if (!this.staticDir && dir) { this.staticDir = "/" + dir + "/"; this.staticDirR = "/" + dir + "R/"; } }; /** * @param {?} dir * @return {?} */ RouterUtils.setDynamicDir = /** * @param {?} dir * @return {?} */ function (dir) { if (!this.dynamicDir && dir) { this.dynamicDir = "/" + dir + "/"; this.dynamicDirR = "/" + dir + "R/"; } }; /** * @param {?} dir * @return {?} */ RouterUtils.setNotAllowedDir = /** * @param {?} dir * @return {?} */ function (dir) { if (!this.notAllowed && dir) { this.notAllowed = dir; } }; /** * @param {?} dir * @return {?} */ RouterUtils.setListDir = /** * @param {?} dir * @return {?} */ function (dir) { if (!this.listDir && dir) { this.listDir = dir; } }; /** * @param {?} modulo * @param {?} tipo * @param {?=} end * @return {?} */ RouterUtils.getRerouteUrl = /** * @param {?} modulo * @param {?} tipo * @param {?=} end * @return {?} */ function (modulo, tipo, end) { if (this.router) { /** @type {?} */ var url = void 0; /** @type {?} */ var mod = modulo.toUpperCase(); /** @type {?} */ var tt = tipo.toUpperCase(); /** @type {?} */ var urlroute = this.router.url; if (StringUtils.includes(urlroute, "/" + mod + "/")) { url = "/" + mod + "R/" + tt + "/"; } else if (StringUtils.includes(urlroute, "/" + mod + "R/")) { url = "/" + mod + "/" + tt + "/"; } if (end) { url += end.toString(); } return url; } else { return '/'; } }; /** * @param {?} mod * @param {?} id * @return {?} */ RouterUtils.setDinamicDirUrl = /** * @param {?} mod * @param {?} id * @return {?} */ function (mod, id) { return "" + this.dynamicDir + mod.toUpperCase() + "/" + id.toString(); }; /** * @param {?} sys * @param {?} mod * @return {?} */ RouterUtils.setCustomDirUrl = /** * @param {?} sys * @param {?} mod * @return {?} */ function (sys, mod) { return "" + this.staticDir + sys + "/" + mod; }; /** * @param {?=} extra * @return {?} */ RouterUtils.evalPerm = /** * @param {?=} extra * @return {?} */ function (extra) { if (this.router) { /** @type {?} */ var url = this.router.url; /** @type {?} */ var sinDrouter = url.split('('); url = sinDrouter[0]; if (StringUtils.includes(url, ';')) { /** @type {?} */ var surl = url.split(';'); url = surl[0]; } if (extra) { url = url.replace(extra, ''); } if (StringUtils.includes(url, this.dynamicDirR)) { url = url.replace(this.dynamicDirR, this.dynamicDir); } else if (StringUtils.includes(url, this.staticDirR)) { url = url.replace(this.staticDirR, this.staticDir); } if ((StringUtils.includes(url, this.dynamicDir) || StringUtils.includes(url, this.staticDirR) || StringUtils.includes(url, this.staticDir) || StringUtils.includes(url, this.staticDirR)) && this.urlNotAllowed(url)) { this.router.navigate([this.notAllowed]); } } else { this.router.navigate([this.notAllowed]); } }; /** * @param {?} route * @param {?=} params * @param {?=} lista * @return {?} */ RouterUtils.getSegmentsRoute = /** * @param {?} route * @param {?=} params * @param {?=} lista * @return {?} */ function (route, params, lista) { if (params === void 0) { params = {}; } if (lista === void 0) { lista = false; } /** @type {?} */ var tree = this.router.parseUrl(route); /** @type {?} */ var g = tree.root.children[PRIMARY_OUTLET]; /** @type {?} */ var s = g.segments; /** @type {?} */ var final = s.map(function (p) { return p.path; }); if (lista) { return tslib_1.__spread(final, [this.listDir], [params]); } else { return tslib_1.__spread(final, [params]); } }; /** * @param {?} route * @param {?} id * @param {?=} params * @param {?=} lista * @return {?} */ RouterUtils.getSegmentsRouteId = /** * @param {?} route * @param {?} id * @param {?=} params * @param {?=} lista * @return {?} */ function (route, id, params, lista) { if (params === void 0) { params = {}; } if (lista === void 0) { lista = false; } /** @type {?} */ var tree = this.router.parseUrl(route); /** @type {?} */ var g = tree.root.children[PRIMARY_OUTLET]; /** @type {?} */ var s = g.segments; /** @type {?} */ var final = s.map(function (p) { return p.path; }); if (lista) { return tslib_1.__spread(final, [id.toString()], ['Lista'], [params]); } else { return tslib_1.__spread(final, [id.toString()], [params]); } }; /** * @param {?} men * @return {?} */ RouterUtils.setNotAllowMen = /** * @param {?} men * @return {?} */ function (men) { SessionUtils.setSession('notallowedmen', men); }; /** * @param {?} menset * @return {?} */ RouterUtils.getNotAllowMen = /** * @param {?} menset * @return {?} */ function (menset) { /** @type {?} */ var men = SessionUtils.getSession('notallowedmen'); if (men !== null) { SessionUtils.deleteSession('notallowedmen'); } else { men = menset; } return TranslateUtils.Translate(men); }; /** * @param {?} url * @return {?} */ RouterUtils.setAllowedUrl = /** * @param {?} url * @return {?} */ function (url) { SessionUtils.setSession('allowedurl', url); }; /** * @param {?} url * @return {?} */ RouterUtils.urlNotAllowed = /** * @param {?} url * @return {?} */ function (url) { /** @type {?} */ var urlsAllowed = SessionUtils.getSession('allowedurl'); /** @type {?} */ var notA = true; if (urlsAllowed !== null) { notA = ArrayUtils.notInArray(urlsAllowed, url); } return notA; }; RouterUtils.dynamicDir = ''; RouterUtils.staticDir = ''; RouterUtils.dynamicDirR = ''; RouterUtils.staticDirR = ''; RouterUtils.notAllowed = '/'; RouterUtils.listDir = 'list'; return RouterUtils; }()); export { RouterUtils }; if (false) { /** * @type {?} * @private */ RouterUtils.router; /** * @type {?} * @private */ RouterUtils.dynamicDir; /** * @type {?} * @private */ RouterUtils.staticDir; /** * @type {?} * @private */ RouterUtils.dynamicDirR; /** * @type {?} * @private */ RouterUtils.staticDirR; /** * @type {?} * @private */ RouterUtils.notAllowed; /** * @type {?} * @private */ RouterUtils.listDir; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyVXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pY2UtdXRpbGl0aWVzLyIsInNvdXJjZXMiOlsibGliL3V0aWxpdGllcy9yb3V0ZXJVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQStDLE1BQU0saUJBQWlCLENBQUM7QUFDN0YsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7O0FBRTFDO0lBQUE7SUE4SUEsQ0FBQzs7Ozs7SUF0SVEsNkJBQWlCOzs7O0lBQXhCLFVBQTBCLE1BQWU7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQzs7Ozs7SUFDTSx3QkFBWTs7OztJQUFuQixVQUFxQixHQUFXO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUcsRUFBRTtZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQUksR0FBRyxNQUFHLENBQUM7WUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFJLEdBQUcsT0FBSSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQzs7Ozs7SUFDTSx5QkFBYTs7OztJQUFwQixVQUFzQixHQUFXO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQUksR0FBRyxNQUFHLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFJLEdBQUcsT0FBSSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQzs7Ozs7SUFD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SSxFQUFFO1lBQ2hCLFlBQVksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDN0M7YUFBTTtZQUNMLEdBQUcsR0FBRyxNQUFNLENBQUM7U0FDZDtRQUNELE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDOzs7OztJQUNNLHlCQUFhOzs7O0lBQXBCLFVBQXNCLEdBQVE7UUFDNUIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7Ozs7SUFDTSx5QkFBYTs7OztJQUFwQixVQUFzQixHQUFXOztZQUN6QixXQUFXLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7O1lBQ3JELElBQUksR0FBRyxJQUFJO1FBQ2YsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFO1lBQ3hCLElBQUksR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNoRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQTNJYyxzQkFBVSxHQUFHLEVBQUUsQ0FBQztJQUNoQixxQkFBUyxHQUFHLEVBQUUsQ0FBQztJQUNmLHVCQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLHNCQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLHNCQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLG1CQUFPLEdBQUcsTUFBTSxDQUFDO0lBdUlsQyxrQkFBQztDQUFBLEFBOUlELElBOElDO1NBOUlxQixXQUFXOzs7Ozs7SUFDL0IsbUJBQThCOzs7OztJQUM5Qix1QkFBK0I7Ozs7O0lBQy9CLHNCQUE4Qjs7Ozs7SUFDOUIsd0JBQWdDOzs7OztJQUNoQyx1QkFBK0I7Ozs7O0lBQy9CLHVCQUFnQzs7Ozs7SUFDaEMsb0JBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQUklNQVJZX09VVExFVCwgUm91dGVyLCBVcmxTZWdtZW50LCBVcmxTZWdtZW50R3JvdXAsIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7VHJhbnNsYXRlVXRpbHN9IGZyb20gJy4vdHJhbnNsYXRlVXRpbHMnO1xyXG5pbXBvcnQge1Nlc3Npb25VdGlsc30gZnJvbSAnLi9zZXNzaW9uVXRpbHMnO1xyXG5pbXBvcnQge0FycmF5VXRpbHN9IGZyb20gJy4vYXJyYXlVdGlscyc7XHJcbmltcG9ydCB7U3RyaW5nVXRpbHN9IGZyb20gJy4vc3RyaW5nVXRpbHMnO1xyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUm91dGVyVXRpbHMge1xyXG4gIHByaXZhdGUgc3RhdGljIHJvdXRlcjogUm91dGVyO1xyXG4gIHByaXZhdGUgc3RhdGljIGR5bmFtaWNEaXIgPSAnJztcclxuICBwcml2YXRlIHN0YXRpYyBzdGF0aWNEaXIgPSAnJztcclxuICBwcml2YXRlIHN0YXRpYyBkeW5hbWljRGlyUiA9ICcnO1xyXG4gIHByaXZhdGUgc3RhdGljIHN0YXRpY0RpclIgPSAnJztcclxuICBwcml2YXRlIHN0YXRpYyBub3RBbGxvd2VkID0gJy8nO1xyXG4gIHByaXZhdGUgc3RhdGljIGxpc3REaXIgPSAnbGlzdCc7XHJcbiAgc3RhdGljIHNldFJvdXRlckluc3RhbmNlIChyb3V0ZXI/OiBSb3V0ZXIpIHtcclxuICAgIGlmICghdGhpcy5yb3V0ZXIgJiYgcm91dGVyKSB7XHJcbiAgICAgIHRoaXMucm91dGVyID0gcm91dGVyO1xyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgc2V0U3RhdGljRGlyIChkaXI6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLnN0YXRpY0RpciAmJiBkaXIpIHtcclxuICAgICAgdGhpcy5zdGF0aWNEaXIgPSBgLyR7ZGlyfS9gO1xyXG4gICAgICB0aGlzLnN0YXRpY0RpclIgPSBgLyR7ZGlyfVIvYDtcclxuICAgIH1cclxuICB9XHJcbiAgc3RhdGljIHNldER5bmFtaWNEaXIgKGRpcjogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuZHluYW1pY0RpciAmJiBkaXIpIHtcclxuICAgICAgdGhpcy5keW5hbWljRGlyID0gYC8ke2Rpcn0vYDtcclxuICAgICAgdGhpcy5keW5hbWljRGlyUiA9IGAvJHtkaXJ9Ui9gO1xyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgc2V0Tm90QWxsb3dlZERpciAoZGlyOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5ub3RBbGxvd2VkICYmIGRpcikge1xyXG4gICAgICB0aGlzLm5vdEFsbG93ZWQgPSBkaXI7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0YXRpYyBzZXRMaXN0RGlyIChkaXI6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmxpc3REaXIgJiYgZGlyKSB7XHJcbiAgICAgIHRoaXMubGlzdERpciA9IGRpcjtcclxuICAgIH1cclxuICB9XHJcbiAgc3RhdGljIGdldFJlcm91dGVVcmwgKG1vZHVsbzogc3RyaW5nLCB0aXBvOiBzdHJpbmcsIGVuZD86IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5yb3V0ZXIpIHtcclxuICAgICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgICBjb25zdCBtb2QgPSBtb2R1bG8udG9VcHBlckNhc2UoKTtcclxuICAgICAgY29uc3QgdHQgPSB0aXBvLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IHVybHJvdXRlOiBzdHJpbmcgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICAgIGlmIChTdHJpbmdVdGlscy5pbmNsdWRlcyh1cmxyb3V0ZSwgYC8ke21vZH0vYCkpIHtcclxuICAgICAgICB1cmwgPSBgLyR7bW9kfVIvJHt0dH0vYDtcclxuICAgICAgfSBlbHNlIGlmIChTdHJpbmdVdGlscy5pbmNsdWRlcyh1cmxyb3V0ZSwgYC8ke21vZH1SL2ApKSB7XHJcbiAgICAgICAgdXJsID0gYC8ke21vZH0vJHt0dH0vYDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZW5kKSB7XHJcbiAgICAgICAgdXJsICs9IGVuZC50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJy8nO1xyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgc2V0RGluYW1pY0RpclVybChtb2Q6IHN0cmluZywgaWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5keW5hbWljRGlyfSR7bW9kLnRvVXBwZXJDYXNlKCl9LyR7aWQudG9TdHJpbmcoKX1gO1xyXG4gIH1cclxuICBzdGF0aWMgc2V0Q3VzdG9tRGlyVXJsKHN5czogc3RyaW5nLCBtb2Q6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5zdGF0aWNEaXJ9JHtzeXN9LyR7bW9kfWA7XHJcbiAgfVxyXG4gIHN0YXRpYyBldmFsUGVybSAoZXh0cmE/OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJvdXRlcikge1xyXG4gICAgICBsZXQgdXJsOiBzdHJpbmcgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICAgIGNvbnN0IHNpbkRyb3V0ZXIgPSB1cmwuc3BsaXQoJygnKTtcclxuICAgICAgdXJsID0gc2luRHJvdXRlclswXTtcclxuICAgICAgaWYgKFN0cmluZ1V0aWxzLmluY2x1ZGVzKHVybCwgJzsnKSkge1xyXG4gICAgICAgIGNvbnN0IHN1cmwgPSB1cmwuc3BsaXQoJzsnKTtcclxuICAgICAgICB1cmwgPSBzdXJsWzBdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHRyYSkge1xyXG4gICAgICAgIHVybCA9IHVybC5yZXBsYWNlKGV4dHJhLCAnJyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFN0cmluZ1V0aWxzLmluY2x1ZGVzKHVybCwgdGhpcy5keW5hbWljRGlyUikpIHtcclxuICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSh0aGlzLmR5bmFtaWNEaXJSLCB0aGlzLmR5bmFtaWNEaXIpO1xyXG4gICAgICB9IGVsc2UgaWYgKFN0cmluZ1V0aWxzLmluY2x1ZGVzKHVybCwgdGhpcy5zdGF0aWNEaXJSKSkge1xyXG4gICAgICAgIHVybCA9IHVybC5yZXBsYWNlKHRoaXMuc3RhdGljRGlyUiwgdGhpcy5zdGF0aWNEaXIpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICAoXHJcbiAgICAgICAgICBTdHJpbmdVdGlscy5pbmNsdWRlcyh1cmwsIHRoaXMuZHluYW1pY0RpcilcclxuICAgICAgICAgIHx8IFN0cmluZ1V0aWxzLmluY2x1ZGVzKHVybCwgdGhpcy5zdGF0aWNEaXJSKVxyXG4gICAgICAgICAgfHwgU3RyaW5nVXRpbHMuaW5jbHVkZXModXJsLCB0aGlzLnN0YXRpY0RpcilcclxuICAgICAgICAgIHx8IFN0cmluZ1V0aWxzLmluY2x1ZGVzKHVybCwgdGhpcy5zdGF0aWNEaXJSKVxyXG4gICAgICAgIClcclxuICAgICAgICAmJlxyXG4gICAgICAgIHRoaXMudXJsTm90QWxsb3dlZCh1cmwpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLm5vdEFsbG93ZWRdKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMubm90QWxsb3dlZF0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgZ2V0U2VnbWVudHNSb3V0ZShyb3V0ZTogc3RyaW5nLCBwYXJhbXM6IGFueSA9IHt9LCBsaXN0YSA9IGZhbHNlKTogKGFueSB8IGFueSlbXSB7XHJcbiAgICAgIGNvbnN0IHRyZWU6IFVybFRyZWUgPSB0aGlzLnJvdXRlci5wYXJzZVVybChyb3V0ZSk7XHJcbiAgICAgIGNvbnN0IGc6IFVybFNlZ21lbnRHcm91cCA9IHRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XHJcbiAgICAgIGNvbnN0IHM6IFVybFNlZ21lbnRbXSA9IGcuc2VnbWVudHM7XHJcbiAgICAgIGNvbnN0IGZpbmFsOiBhbnlbXSA9IHMubWFwKHAgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHAucGF0aDtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChsaXN0YSkge1xyXG4gICAgICAgICAgcmV0dXJuIFsuLi5maW5hbCwgLi4uW3RoaXMubGlzdERpcl0sIC4uLltwYXJhbXNdXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBbLi4uZmluYWwsIC4uLltwYXJhbXNdXTtcclxuICAgICAgfVxyXG4gIH1cclxuICBzdGF0aWMgZ2V0U2VnbWVudHNSb3V0ZUlkKHJvdXRlOiBzdHJpbmcsIGlkOiBudW1iZXIsIHBhcmFtczogYW55ID0ge30sIGxpc3RhID0gZmFsc2UpOiAoYW55IHwgYW55KVtdIHtcclxuICAgIGNvbnN0IHRyZWU6IFVybFRyZWUgPSB0aGlzLnJvdXRlci5wYXJzZVVybChyb3V0ZSk7XHJcbiAgICBjb25zdCBnOiBVcmxTZWdtZW50R3JvdXAgPSB0cmVlLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdO1xyXG4gICAgY29uc3QgczogVXJsU2VnbWVudFtdID0gZy5zZWdtZW50cztcclxuICAgIGNvbnN0IGZpbmFsOiBhbnlbXSA9IHMubWFwKHAgPT4ge1xyXG4gICAgICByZXR1cm4gcC5wYXRoO1xyXG4gICAgfSk7XHJcbiAgICBpZiAobGlzdGEpIHtcclxuICAgICAgcmV0dXJuIFsuLi5maW5hbCwgLi4uW2lkLnRvU3RyaW5nKCldLCAuLi5bJ0xpc3RhJ10sIC4uLltwYXJhbXNdXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbLi4uZmluYWwsIC4uLltpZC50b1N0cmluZygpXSwgLi4uW3BhcmFtc11dO1xyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgc2V0Tm90QWxsb3dNZW4gKG1lbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBTZXNzaW9uVXRpbHMuc2V0U2Vzc2lvbignbm90YWxsb3dlZG1lbicsIG1lbik7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXROb3RBbGxvd01lbiAobWVuc2V0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IG1lbjogYW55ID0gU2Vzc2lvblV0aWxzLmdldFNlc3Npb24oJ25vdGFsbG93ZWRtZW4nKTtcclxuICAgIGlmIChtZW4gIT09IG51bGwpIHtcclxuICAgICAgU2Vzc2lvblV0aWxzLmRlbGV0ZVNlc3Npb24oJ25vdGFsbG93ZWRtZW4nKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1lbiA9IG1lbnNldDtcclxuICAgIH1cclxuICAgIHJldHVybiBUcmFuc2xhdGVVdGlscy5UcmFuc2xhdGUobWVuKTtcclxuICB9XHJcbiAgc3RhdGljIHNldEFsbG93ZWRVcmwgKHVybDogYW55KTogdm9pZCB7XHJcbiAgICBTZXNzaW9uVXRpbHMuc2V0U2Vzc2lvbignYWxsb3dlZHVybCcsIHVybCk7XHJcbiAgfVxyXG4gIHN0YXRpYyB1cmxOb3RBbGxvd2VkICh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdXJsc0FsbG93ZWQgPSBTZXNzaW9uVXRpbHMuZ2V0U2Vzc2lvbignYWxsb3dlZHVybCcpO1xyXG4gICAgbGV0IG5vdEEgPSB0cnVlO1xyXG4gICAgaWYgKHVybHNBbGxvd2VkICE9PSBudWxsKSB7XHJcbiAgICAgIG5vdEEgPSBBcnJheVV0aWxzLm5vdEluQXJyYXkodXJsc0FsbG93ZWQsIHVybCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm90QTtcclxuICB9XHJcbn1cclxuIl19