UNPKG

@linid-dm/directory-manager-client-core

Version:

Core package by providing a set of angular components for the Directory Manager app.

218 lines 26.6 kB
import { __decorate } from "tslib"; /** * Copyright (C) 2020-2024 Linagora * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version, provided you comply with the Additional Terms applicable for * LinID Directory Manager software by LINAGORA pursuant to Section 7 of the GNU * Affero General Public License, subsections (b), (c), and (e), pursuant to * which these Appropriate Legal Notices must notably (i) retain the display of * the "LinID™" trademark/logo at the top of the interface window, the display * of the “You are using the Open Source and free version of LinID™, powered by * Linagora © 2009–2013. Contribute to LinID R&D by subscribing to an Enterprise * offer!” infobox and in the e-mails sent with the Program, notice appended to * any type of outbound messages (e.g. e-mail and meeting requests) as well as * in the LinID Directory Manager user interface, (ii) retain all hypertext * links between LinID Directory Manager and https://linid.org/, as well as * between LINAGORA and LINAGORA.com, and (iii) refrain from infringing LINAGORA * intellectual property rights over its trademarks and commercial brands. Other * Additional Terms apply, see <http://www.linagora.com/licenses/> for more * details. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License and * its applicable Additional Terms for LinID Directory Manager along with this * program. If not, see <http://www.gnu.org/licenses/> for the GNU Affero * General Public License version 3 and <http://www.linagora.com/licenses/> for * the Additional Terms applicable to the LinID Directory Manager software. */ import { Injectable } from '@angular/core'; import { Action, Selector, State } from '@ngxs/store'; import { distinctUntilChanged, map } from 'rxjs'; import * as Ui from './ui.actions'; import * as i0 from "@angular/core"; const _isLargeScreen = (ss) => ss === 'lg' || ss === 'gt-lg' || ss === 'xl' || ss === 'gt-md'; const _changeSidenavMode = (mode) => mode === 'sidebar' ? 'sidenav' : 'sidebar'; const _changeSidenavModeOnResize = (stateFixed, mode, ss) => !stateFixed ? mode === 'sidenav' && !_isLargeScreen(ss) ? 'sidebar' : mode === 'sidebar' && _isLargeScreen(ss) ? 'sidenav' : mode : mode; const _initSidenavMode = (ss) => _isLargeScreen(ss) ? 'sidenav' : 'sidebar'; const _changeSidenavStateFixed = (mode, ss) => (mode === 'sidenav' && _isLargeScreen(ss)) || (mode === 'sidebar' && !_isLargeScreen(ss)); const _sidenavCollapsed = (sidenavStateFixed, isSidenavCollapsed, ss) => (sidenavStateFixed ? isSidenavCollapsed : !_isLargeScreen(ss)); export const isLargeScreen = (store$) => { return store$ .select((state) => state.ui.screenSize) .pipe(map(_isLargeScreen), distinctUntilChanged()); }; export const isSmallScreen = (store$) => { return isLargeScreen(store$).pipe(map((b) => !b)); }; let UiState = class UiState { static getLanguage(state) { return state.language; } static getSidenavMode(state) { return state.sidenavMode; } static getSidenavStateFixed(state) { return state.sidenavStateFixed; } static getIsSidenavCollapsed(state) { return state.isSidenavCollapsed; } static getScreenSize(state) { return state.screenSize; } static getTheme(state) { return state.theme; } static getGenericAccessibility(state) { return state.genericAccessibility; } static getAdvancedSearchAccessibility(state) { return state.genericAccessibility.advancedSearch; } static getFormAccessibility(state) { return state.genericAccessibility.form; } static getFilterAccessibility(state) { return state.genericAccessibility.filter; } static getArrayAccessibility(state) { return state.genericAccessibility.array; } static getSearchBarAccessibility(state) { return state.genericAccessibility.searchBar; } static getDetailHeaderAccessibility(state) { return state.genericAccessibility.detailHeader; } static getNotFoundAccessibility(state) { return state.genericAccessibility.notFound; } setLanguage(ctx, action) { ctx.setState({ ...ctx.getState(), language: action.payload.language, }); } toggleSidenav(ctx) { ctx.setState({ ...ctx.getState(), sidenavStateFixed: _changeSidenavStateFixed(ctx.getState().sidenavMode, ctx.getState().screenSize), sidenavMode: _changeSidenavMode(ctx.getState().sidenavMode), isSidenavCollapsed: !ctx.getState().isSidenavCollapsed, }); } changeScreenSize(ctx, action) { ctx.setState({ ...ctx.getState(), screenSize: action.payload.screenSize, sidenavMode: ctx.getState().sidenavMode === '' ? _initSidenavMode(action.payload.screenSize) : _changeSidenavModeOnResize(ctx.getState().sidenavStateFixed, ctx.getState().sidenavMode, action.payload.screenSize), isSidenavCollapsed: _sidenavCollapsed(ctx.getState().sidenavStateFixed, ctx.getState().isSidenavCollapsed, action.payload.screenSize), }); } changeTheme(ctx, action) { ctx.setState({ ...ctx.getState(), theme: action.payload.theme, }); } setGenericAccessibility(ctx, action) { ctx.setState({ ...ctx.getState(), genericAccessibility: action.payload, }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: UiState, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: UiState }); } }; __decorate([ Action(Ui.SetLanguage) ], UiState.prototype, "setLanguage", null); __decorate([ Action(Ui.ToggleSidenav) ], UiState.prototype, "toggleSidenav", null); __decorate([ Action(Ui.ChangeScreenSize) ], UiState.prototype, "changeScreenSize", null); __decorate([ Action(Ui.ChangeTheme) ], UiState.prototype, "changeTheme", null); __decorate([ Action(Ui.SetGenericAccessibility) ], UiState.prototype, "setGenericAccessibility", null); __decorate([ Selector() ], UiState, "getLanguage", null); __decorate([ Selector() ], UiState, "getSidenavMode", null); __decorate([ Selector() ], UiState, "getSidenavStateFixed", null); __decorate([ Selector() ], UiState, "getIsSidenavCollapsed", null); __decorate([ Selector() ], UiState, "getScreenSize", null); __decorate([ Selector() ], UiState, "getTheme", null); __decorate([ Selector() ], UiState, "getGenericAccessibility", null); __decorate([ Selector() ], UiState, "getAdvancedSearchAccessibility", null); __decorate([ Selector() ], UiState, "getFormAccessibility", null); __decorate([ Selector() ], UiState, "getFilterAccessibility", null); __decorate([ Selector() ], UiState, "getArrayAccessibility", null); __decorate([ Selector() ], UiState, "getSearchBarAccessibility", null); __decorate([ Selector() ], UiState, "getDetailHeaderAccessibility", null); __decorate([ Selector() ], UiState, "getNotFoundAccessibility", null); UiState = __decorate([ State({ name: 'ui', defaults: { language: '', sidenavStateFixed: false, sidenavMode: '', isSidenavCollapsed: false, screenSize: '', theme: '', genericAccessibility: null, }, }) ], UiState); export { UiState }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: UiState, decorators: [{ type: Injectable }], propDecorators: { setLanguage: [], toggleSidenav: [], changeScreenSize: [], changeTheme: [], setGenericAccessibility: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9saWJzL2NsaWVudC1jb3JlL3NyYy9saWIvc2hhcmVkL3N0YXRlcy91aS91aS5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFZN0QsT0FBTyxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBWW5DLE1BQU0sY0FBYyxHQUFHLENBQUMsRUFBYyxFQUFFLEVBQUUsQ0FDeEMsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssT0FBTyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLE9BQU8sQ0FBQztBQUVqRSxNQUFNLGtCQUFrQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDMUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFFN0MsTUFBTSwwQkFBMEIsR0FBRyxDQUNqQyxVQUFtQixFQUNuQixJQUFZLEVBQ1osRUFBYyxFQUNkLEVBQUUsQ0FDRixDQUFDLFVBQVU7SUFDVCxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFDLFNBQVM7UUFDWCxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxTQUFTO1lBQ1gsQ0FBQyxDQUFDLElBQUk7SUFDVixDQUFDLENBQUMsSUFBSSxDQUFDO0FBRVgsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEVBQWMsRUFBRSxFQUFFLENBQzFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFFN0MsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFjLEVBQUUsRUFBRSxDQUNoRSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRTlDLE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsaUJBQTBCLEVBQzFCLGtCQUEyQixFQUMzQixFQUFjLEVBQ2QsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWEsRUFBdUIsRUFBRTtJQUNsRSxPQUFPLE1BQU07U0FDVixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDO1NBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWEsRUFBdUIsRUFBRTtJQUNsRSxPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQyxDQUFDO0FBZUssSUFBTSxPQUFPLEdBQWIsTUFBTSxPQUFPO0lBRVgsQUFBUCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQW1CO1FBQ3BDLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDO0lBR00sQUFBUCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQW1CO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBR00sQUFBUCxNQUFNLENBQUMsb0JBQW9CLENBQUMsS0FBbUI7UUFDN0MsT0FBTyxLQUFLLENBQUMsaUJBQWlCLENBQUM7SUFDakMsQ0FBQztJQUdNLEFBQVAsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQW1CO1FBQzlDLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDO0lBQ2xDLENBQUM7SUFHTSxBQUFQLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBbUI7UUFDdEMsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQzFCLENBQUM7SUFHTSxBQUFQLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBbUI7UUFDakMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFHTSxBQUFQLE1BQU0sQ0FBQyx1QkFBdUIsQ0FDNUIsS0FBbUI7UUFFbkIsT0FBTyxLQUFLLENBQUMsb0JBQW9CLENBQUM7SUFDcEMsQ0FBQztJQUdNLEFBQVAsTUFBTSxDQUFDLDhCQUE4QixDQUNuQyxLQUFtQjtRQUVuQixPQUFPLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUM7SUFDbkQsQ0FBQztJQUdNLEFBQVAsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEtBQW1CO1FBQzdDLE9BQU8sS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQztJQUN6QyxDQUFDO0lBR00sQUFBUCxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBbUI7UUFDL0MsT0FBTyxLQUFLLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDO0lBQzNDLENBQUM7SUFHTSxBQUFQLE1BQU0sQ0FBQyxxQkFBcUIsQ0FDMUIsS0FBbUI7UUFFbkIsT0FBTyxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFHTSxBQUFQLE1BQU0sQ0FBQyx5QkFBeUIsQ0FDOUIsS0FBbUI7UUFFbkIsT0FBTyxLQUFLLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO0lBQzlDLENBQUM7SUFHTSxBQUFQLE1BQU0sQ0FBQyw0QkFBNEIsQ0FDakMsS0FBbUI7UUFFbkIsT0FBTyxLQUFLLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDO0lBQ2pELENBQUM7SUFHTSxBQUFQLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFtQjtRQUNqRCxPQUFPLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUM7SUFDN0MsQ0FBQztJQUdELFdBQVcsQ0FBQyxHQUErQixFQUFFLE1BQXNCO1FBQ2pFLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDWCxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDakIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUTtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsYUFBYSxDQUFDLEdBQStCO1FBQzNDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDWCxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDakIsaUJBQWlCLEVBQUUsd0JBQXdCLENBQ3pDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQzFCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQzFCO1lBQ0QsV0FBVyxFQUFFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLENBQUM7WUFDM0Qsa0JBQWtCLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsa0JBQWtCO1NBQ3ZELENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxnQkFBZ0IsQ0FDZCxHQUErQixFQUMvQixNQUEyQjtRQUUzQixHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ1gsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQ2pCLFVBQVUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVU7WUFDckMsV0FBVyxFQUNULEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEtBQUssRUFBRTtnQkFDL0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2dCQUM3QyxDQUFDLENBQUMsMEJBQTBCLENBQ3hCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxpQkFBaUIsRUFDaEMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFDMUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQzFCO1lBQ1Asa0JBQWtCLEVBQUUsaUJBQWlCLENBQ25DLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxpQkFBaUIsRUFDaEMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLGtCQUFrQixFQUNqQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FDMUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsV0FBVyxDQUFDLEdBQStCLEVBQUUsTUFBc0I7UUFDakUsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNYLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRTtZQUNqQixLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCx1QkFBdUIsQ0FDckIsR0FBK0IsRUFDL0IsTUFBa0M7UUFFbEMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNYLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRTtZQUNqQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsT0FBTztTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQS9JVSxPQUFPO2tIQUFQLE9BQU87O0FBa0ZsQjtJQURDLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDOzBDQU10QjtBQUdEO0lBREMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7NENBV3hCO0FBR0Q7SUFEQyxNQUFNLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDOytDQXNCM0I7QUFHRDtJQURDLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDOzBDQU10QjtBQUdEO0lBREMsTUFBTSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztzREFTbEM7QUE3SU07SUFETixRQUFRLEVBQUU7Z0NBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTttQ0FHVjtBQUdNO0lBRE4sUUFBUSxFQUFFO3lDQUdWO0FBR007SUFETixRQUFRLEVBQUU7MENBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTtrQ0FHVjtBQUdNO0lBRE4sUUFBUSxFQUFFOzZCQUdWO0FBR007SUFETixRQUFRLEVBQUU7NENBS1Y7QUFHTTtJQUROLFFBQVEsRUFBRTttREFLVjtBQUdNO0lBRE4sUUFBUSxFQUFFO3lDQUdWO0FBR007SUFETixRQUFRLEVBQUU7MkNBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTswQ0FLVjtBQUdNO0lBRE4sUUFBUSxFQUFFOzhDQUtWO0FBR007SUFETixRQUFRLEVBQUU7aURBS1Y7QUFHTTtJQUROLFFBQVEsRUFBRTs2Q0FHVjtBQS9FVSxPQUFPO0lBYm5CLEtBQUssQ0FBZTtRQUNuQixJQUFJLEVBQUUsSUFBSTtRQUNWLFFBQVEsRUFBRTtZQUNSLFFBQVEsRUFBRSxFQUFFO1lBQ1osaUJBQWlCLEVBQUUsS0FBSztZQUN4QixXQUFXLEVBQUUsRUFBRTtZQUNmLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsVUFBVSxFQUFFLEVBQUU7WUFDZCxLQUFLLEVBQUUsRUFBRTtZQUNULG9CQUFvQixFQUFFLElBQUk7U0FDM0I7S0FDRixDQUFDO0dBRVcsT0FBTyxDQWdKbkI7OzJGQWhKWSxPQUFPO2tCQURuQixVQUFVOzhCQW1GVCxXQUFXLE1BUVgsYUFBYSxNQWFiLGdCQUFnQixNQXdCaEIsV0FBVyxNQVFYLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjQgTGluYWdvcmFcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlclxuICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueVxuICogbGF0ZXIgdmVyc2lvbiwgcHJvdmlkZWQgeW91IGNvbXBseSB3aXRoIHRoZSBBZGRpdGlvbmFsIFRlcm1zIGFwcGxpY2FibGUgZm9yXG4gKiBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBzb2Z0d2FyZSBieSBMSU5BR09SQSBwdXJzdWFudCB0byBTZWN0aW9uIDcgb2YgdGhlIEdOVVxuICogQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHN1YnNlY3Rpb25zIChiKSwgKGMpLCBhbmQgKGUpLCBwdXJzdWFudCB0b1xuICogd2hpY2ggdGhlc2UgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyBtdXN0IG5vdGFibHkgKGkpIHJldGFpbiB0aGUgZGlzcGxheSBvZlxuICogdGhlIFwiTGluSUTihKJcIiB0cmFkZW1hcmsvbG9nbyBhdCB0aGUgdG9wIG9mIHRoZSBpbnRlcmZhY2Ugd2luZG93LCB0aGUgZGlzcGxheVxuICogb2YgdGhlIOKAnFlvdSBhcmUgdXNpbmcgdGhlIE9wZW4gU291cmNlIGFuZCBmcmVlIHZlcnNpb24gb2YgTGluSUTihKIsIHBvd2VyZWQgYnlcbiAqIExpbmFnb3JhIMKpIDIwMDnigJMyMDEzLiBDb250cmlidXRlIHRvIExpbklEIFImRCBieSBzdWJzY3JpYmluZyB0byBhbiBFbnRlcnByaXNlXG4gKiBvZmZlciHigJ0gaW5mb2JveCBhbmQgaW4gdGhlIGUtbWFpbHMgc2VudCB3aXRoIHRoZSBQcm9ncmFtLCBub3RpY2UgYXBwZW5kZWQgdG9cbiAqIGFueSB0eXBlIG9mIG91dGJvdW5kIG1lc3NhZ2VzIChlLmcuIGUtbWFpbCBhbmQgbWVldGluZyByZXF1ZXN0cykgYXMgd2VsbCBhc1xuICogaW4gdGhlIExpbklEIERpcmVjdG9yeSBNYW5hZ2VyIHVzZXIgaW50ZXJmYWNlLCAoaWkpIHJldGFpbiBhbGwgaHlwZXJ0ZXh0XG4gKiBsaW5rcyBiZXR3ZWVuIExpbklEIERpcmVjdG9yeSBNYW5hZ2VyIGFuZCBodHRwczovL2xpbmlkLm9yZy8sIGFzIHdlbGwgYXNcbiAqIGJldHdlZW4gTElOQUdPUkEgYW5kIExJTkFHT1JBLmNvbSwgYW5kIChpaWkpIHJlZnJhaW4gZnJvbSBpbmZyaW5naW5nIExJTkFHT1JBXG4gKiBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG92ZXIgaXRzIHRyYWRlbWFya3MgYW5kIGNvbW1lcmNpYWwgYnJhbmRzLiBPdGhlclxuICogQWRkaXRpb25hbCBUZXJtcyBhcHBseSwgc2VlIDxodHRwOi8vd3d3LmxpbmFnb3JhLmNvbS9saWNlbnNlcy8+IGZvciBtb3JlXG4gKiBkZXRhaWxzLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1NcbiAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmVcbiAqIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZFxuICogaXRzIGFwcGxpY2FibGUgQWRkaXRpb25hbCBUZXJtcyBmb3IgTGluSUQgRGlyZWN0b3J5IE1hbmFnZXIgYWxvbmcgd2l0aCB0aGlzXG4gKiBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4gZm9yIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhbmQgPGh0dHA6Ly93d3cubGluYWdvcmEuY29tL2xpY2Vuc2VzLz4gZm9yXG4gKiB0aGUgQWRkaXRpb25hbCBUZXJtcyBhcHBsaWNhYmxlIHRvIHRoZSBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBzb2Z0d2FyZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIElBZHZhbmNlZFNlYXJjaEFjY2Vzc2liaWxpdHksXG4gIElBcnJheUdlbmVyaWNBY2Nlc3NpYmlsaXR5LFxuICBJRGV0YWlsSGVhZGVyQWNjZXNzaWJpbGl0eSxcbiAgSUZpbHRlckFjY2Vzc2liaWxpdHksXG4gIElGb3JtQWNjZXNzaWJpbGl0eSxcbiAgSUdlbmVyaWNBY2Nlc3NpYmlsaXR5Q29uZmlnLFxuICBJTm90Rm91bmRBY2Nlc3NpYmlsaXR5LFxuICBJU2VhcmNoQmFyQWNjZXNzaWJpbGl0eSxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25maWdzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTY3JlZW5TaXplIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy91aS5pbnRlcmZhY2UnO1xuaW1wb3J0ICogYXMgVWkgZnJvbSAnLi91aS5hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBVaVN0YXRlTW9kZWwge1xuICBsYW5ndWFnZTogc3RyaW5nO1xuICBzaWRlbmF2U3RhdGVGaXhlZDogYm9vbGVhbjtcbiAgc2lkZW5hdk1vZGU6IHN0cmluZztcbiAgaXNTaWRlbmF2Q29sbGFwc2VkOiBib29sZWFuO1xuICBzY3JlZW5TaXplOiBTY3JlZW5TaXplO1xuICB0aGVtZTogc3RyaW5nO1xuICBnZW5lcmljQWNjZXNzaWJpbGl0eTogSUdlbmVyaWNBY2Nlc3NpYmlsaXR5Q29uZmlnO1xufVxuXG5jb25zdCBfaXNMYXJnZVNjcmVlbiA9IChzczogU2NyZWVuU2l6ZSkgPT5cbiAgc3MgPT09ICdsZycgfHwgc3MgPT09ICdndC1sZycgfHwgc3MgPT09ICd4bCcgfHwgc3MgPT09ICdndC1tZCc7XG5cbmNvbnN0IF9jaGFuZ2VTaWRlbmF2TW9kZSA9IChtb2RlOiBzdHJpbmcpID0+XG4gIG1vZGUgPT09ICdzaWRlYmFyJyA/ICdzaWRlbmF2JyA6ICdzaWRlYmFyJztcblxuY29uc3QgX2NoYW5nZVNpZGVuYXZNb2RlT25SZXNpemUgPSAoXG4gIHN0YXRlRml4ZWQ6IGJvb2xlYW4sXG4gIG1vZGU6IHN0cmluZyxcbiAgc3M6IFNjcmVlblNpemVcbikgPT5cbiAgIXN0YXRlRml4ZWRcbiAgICA/IG1vZGUgPT09ICdzaWRlbmF2JyAmJiAhX2lzTGFyZ2VTY3JlZW4oc3MpXG4gICAgICA/ICdzaWRlYmFyJ1xuICAgICAgOiBtb2RlID09PSAnc2lkZWJhcicgJiYgX2lzTGFyZ2VTY3JlZW4oc3MpXG4gICAgICAgID8gJ3NpZGVuYXYnXG4gICAgICAgIDogbW9kZVxuICAgIDogbW9kZTtcblxuY29uc3QgX2luaXRTaWRlbmF2TW9kZSA9IChzczogU2NyZWVuU2l6ZSkgPT5cbiAgX2lzTGFyZ2VTY3JlZW4oc3MpID8gJ3NpZGVuYXYnIDogJ3NpZGViYXInO1xuXG5jb25zdCBfY2hhbmdlU2lkZW5hdlN0YXRlRml4ZWQgPSAobW9kZTogc3RyaW5nLCBzczogU2NyZWVuU2l6ZSkgPT5cbiAgKG1vZGUgPT09ICdzaWRlbmF2JyAmJiBfaXNMYXJnZVNjcmVlbihzcykpIHx8XG4gIChtb2RlID09PSAnc2lkZWJhcicgJiYgIV9pc0xhcmdlU2NyZWVuKHNzKSk7XG5cbmNvbnN0IF9zaWRlbmF2Q29sbGFwc2VkID0gKFxuICBzaWRlbmF2U3RhdGVGaXhlZDogYm9vbGVhbixcbiAgaXNTaWRlbmF2Q29sbGFwc2VkOiBib29sZWFuLFxuICBzczogU2NyZWVuU2l6ZVxuKSA9PiAoc2lkZW5hdlN0YXRlRml4ZWQgPyBpc1NpZGVuYXZDb2xsYXBzZWQgOiAhX2lzTGFyZ2VTY3JlZW4oc3MpKTtcblxuZXhwb3J0IGNvbnN0IGlzTGFyZ2VTY3JlZW4gPSAoc3RvcmUkOiBTdG9yZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4gPT4ge1xuICByZXR1cm4gc3RvcmUkXG4gICAgLnNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLnVpLnNjcmVlblNpemUpXG4gICAgLnBpcGUobWFwKF9pc0xhcmdlU2NyZWVuKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTbWFsbFNjcmVlbiA9IChzdG9yZSQ6IFN0b3JlKTogT2JzZXJ2YWJsZTxib29sZWFuPiA9PiB7XG4gIHJldHVybiBpc0xhcmdlU2NyZWVuKHN0b3JlJCkucGlwZShtYXAoKGI6IGJvb2xlYW4pID0+ICFiKSk7XG59O1xuXG5AU3RhdGU8VWlTdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICd1aScsXG4gIGRlZmF1bHRzOiB7XG4gICAgbGFuZ3VhZ2U6ICcnLFxuICAgIHNpZGVuYXZTdGF0ZUZpeGVkOiBmYWxzZSxcbiAgICBzaWRlbmF2TW9kZTogJycsXG4gICAgaXNTaWRlbmF2Q29sbGFwc2VkOiBmYWxzZSxcbiAgICBzY3JlZW5TaXplOiAnJyxcbiAgICB0aGVtZTogJycsXG4gICAgZ2VuZXJpY0FjY2Vzc2liaWxpdHk6IG51bGwsXG4gIH0sXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVpU3RhdGUge1xuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0TGFuZ3VhZ2Uoc3RhdGU6IFVpU3RhdGVNb2RlbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0YXRlLmxhbmd1YWdlO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldFNpZGVuYXZNb2RlKHN0YXRlOiBVaVN0YXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGF0ZS5zaWRlbmF2TW9kZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRTaWRlbmF2U3RhdGVGaXhlZChzdGF0ZTogVWlTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnNpZGVuYXZTdGF0ZUZpeGVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldElzU2lkZW5hdkNvbGxhcHNlZChzdGF0ZTogVWlTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmlzU2lkZW5hdkNvbGxhcHNlZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRTY3JlZW5TaXplKHN0YXRlOiBVaVN0YXRlTW9kZWwpOiBTY3JlZW5TaXplIHtcbiAgICByZXR1cm4gc3RhdGUuc2NyZWVuU2l6ZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRUaGVtZShzdGF0ZTogVWlTdGF0ZU1vZGVsKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RhdGUudGhlbWU7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0R2VuZXJpY0FjY2Vzc2liaWxpdHkoXG4gICAgc3RhdGU6IFVpU3RhdGVNb2RlbFxuICApOiBJR2VuZXJpY0FjY2Vzc2liaWxpdHlDb25maWcge1xuICAgIHJldHVybiBzdGF0ZS5nZW5lcmljQWNjZXNzaWJpbGl0eTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRBZHZhbmNlZFNlYXJjaEFjY2Vzc2liaWxpdHkoXG4gICAgc3RhdGU6IFVpU3RhdGVNb2RlbFxuICApOiBJQWR2YW5jZWRTZWFyY2hBY2Nlc3NpYmlsaXR5IHtcbiAgICByZXR1cm4gc3RhdGUuZ2VuZXJpY0FjY2Vzc2liaWxpdHkuYWR2YW5jZWRTZWFyY2g7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0Rm9ybUFjY2Vzc2liaWxpdHkoc3RhdGU6IFVpU3RhdGVNb2RlbCk6IElGb3JtQWNjZXNzaWJpbGl0eSB7XG4gICAgcmV0dXJuIHN0YXRlLmdlbmVyaWNBY2Nlc3NpYmlsaXR5LmZvcm07XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0RmlsdGVyQWNjZXNzaWJpbGl0eShzdGF0ZTogVWlTdGF0ZU1vZGVsKTogSUZpbHRlckFjY2Vzc2liaWxpdHkge1xuICAgIHJldHVybiBzdGF0ZS5nZW5lcmljQWNjZXNzaWJpbGl0eS5maWx0ZXI7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0QXJyYXlBY2Nlc3NpYmlsaXR5KFxuICAgIHN0YXRlOiBVaVN0YXRlTW9kZWxcbiAgKTogSUFycmF5R2VuZXJpY0FjY2Vzc2liaWxpdHkge1xuICAgIHJldHVybiBzdGF0ZS5nZW5lcmljQWNjZXNzaWJpbGl0eS5hcnJheTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRTZWFyY2hCYXJBY2Nlc3NpYmlsaXR5KFxuICAgIHN0YXRlOiBVaVN0YXRlTW9kZWxcbiAgKTogSVNlYXJjaEJhckFjY2Vzc2liaWxpdHkge1xuICAgIHJldHVybiBzdGF0ZS5nZW5lcmljQWNjZXNzaWJpbGl0eS5zZWFyY2hCYXI7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0RGV0YWlsSGVhZGVyQWNjZXNzaWJpbGl0eShcbiAgICBzdGF0ZTogVWlTdGF0ZU1vZGVsXG4gICk6IElEZXRhaWxIZWFkZXJBY2Nlc3NpYmlsaXR5IHtcbiAgICByZXR1cm4gc3RhdGUuZ2VuZXJpY0FjY2Vzc2liaWxpdHkuZGV0YWlsSGVhZGVyO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldE5vdEZvdW5kQWNjZXNzaWJpbGl0eShzdGF0ZTogVWlTdGF0ZU1vZGVsKTogSU5vdEZvdW5kQWNjZXNzaWJpbGl0eSB7XG4gICAgcmV0dXJuIHN0YXRlLmdlbmVyaWNBY2Nlc3NpYmlsaXR5Lm5vdEZvdW5kO1xuICB9XG5cbiAgQEFjdGlvbihVaS5TZXRMYW5ndWFnZSlcbiAgc2V0TGFuZ3VhZ2UoY3R4OiBTdGF0ZUNvbnRleHQ8VWlTdGF0ZU1vZGVsPiwgYWN0aW9uOiBVaS5TZXRMYW5ndWFnZSk6IHZvaWQge1xuICAgIGN0eC5zZXRTdGF0ZSh7XG4gICAgICAuLi5jdHguZ2V0U3RhdGUoKSxcbiAgICAgIGxhbmd1YWdlOiBhY3Rpb24ucGF5bG9hZC5sYW5ndWFnZSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oVWkuVG9nZ2xlU2lkZW5hdilcbiAgdG9nZ2xlU2lkZW5hdihjdHg6IFN0YXRlQ29udGV4dDxVaVN0YXRlTW9kZWw+KTogdm9pZCB7XG4gICAgY3R4LnNldFN0YXRlKHtcbiAgICAgIC4uLmN0eC5nZXRTdGF0ZSgpLFxuICAgICAgc2lkZW5hdlN0YXRlRml4ZWQ6IF9jaGFuZ2VTaWRlbmF2U3RhdGVGaXhlZChcbiAgICAgICAgY3R4LmdldFN0YXRlKCkuc2lkZW5hdk1vZGUsXG4gICAgICAgIGN0eC5nZXRTdGF0ZSgpLnNjcmVlblNpemVcbiAgICAgICksXG4gICAgICBzaWRlbmF2TW9kZTogX2NoYW5nZVNpZGVuYXZNb2RlKGN0eC5nZXRTdGF0ZSgpLnNpZGVuYXZNb2RlKSxcbiAgICAgIGlzU2lkZW5hdkNvbGxhcHNlZDogIWN0eC5nZXRTdGF0ZSgpLmlzU2lkZW5hdkNvbGxhcHNlZCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oVWkuQ2hhbmdlU2NyZWVuU2l6ZSlcbiAgY2hhbmdlU2NyZWVuU2l6ZShcbiAgICBjdHg6IFN0YXRlQ29udGV4dDxVaVN0YXRlTW9kZWw+LFxuICAgIGFjdGlvbjogVWkuQ2hhbmdlU2NyZWVuU2l6ZVxuICApOiB2b2lkIHtcbiAgICBjdHguc2V0U3RhdGUoe1xuICAgICAgLi4uY3R4LmdldFN0YXRlKCksXG4gICAgICBzY3JlZW5TaXplOiBhY3Rpb24ucGF5bG9hZC5zY3JlZW5TaXplLFxuICAgICAgc2lkZW5hdk1vZGU6XG4gICAgICAgIGN0eC5nZXRTdGF0ZSgpLnNpZGVuYXZNb2RlID09PSAnJ1xuICAgICAgICAgID8gX2luaXRTaWRlbmF2TW9kZShhY3Rpb24ucGF5bG9hZC5zY3JlZW5TaXplKVxuICAgICAgICAgIDogX2NoYW5nZVNpZGVuYXZNb2RlT25SZXNpemUoXG4gICAgICAgICAgICAgIGN0eC5nZXRTdGF0ZSgpLnNpZGVuYXZTdGF0ZUZpeGVkLFxuICAgICAgICAgICAgICBjdHguZ2V0U3RhdGUoKS5zaWRlbmF2TW9kZSxcbiAgICAgICAgICAgICAgYWN0aW9uLnBheWxvYWQuc2NyZWVuU2l6ZVxuICAgICAgICAgICAgKSxcbiAgICAgIGlzU2lkZW5hdkNvbGxhcHNlZDogX3NpZGVuYXZDb2xsYXBzZWQoXG4gICAgICAgIGN0eC5nZXRTdGF0ZSgpLnNpZGVuYXZTdGF0ZUZpeGVkLFxuICAgICAgICBjdHguZ2V0U3RhdGUoKS5pc1NpZGVuYXZDb2xsYXBzZWQsXG4gICAgICAgIGFjdGlvbi5wYXlsb2FkLnNjcmVlblNpemVcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFVpLkNoYW5nZVRoZW1lKVxuICBjaGFuZ2VUaGVtZShjdHg6IFN0YXRlQ29udGV4dDxVaVN0YXRlTW9kZWw+LCBhY3Rpb246IFVpLkNoYW5nZVRoZW1lKTogdm9pZCB7XG4gICAgY3R4LnNldFN0YXRlKHtcbiAgICAgIC4uLmN0eC5nZXRTdGF0ZSgpLFxuICAgICAgdGhlbWU6IGFjdGlvbi5wYXlsb2FkLnRoZW1lLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihVaS5TZXRHZW5lcmljQWNjZXNzaWJpbGl0eSlcbiAgc2V0R2VuZXJpY0FjY2Vzc2liaWxpdHkoXG4gICAgY3R4OiBTdGF0ZUNvbnRleHQ8VWlTdGF0ZU1vZGVsPixcbiAgICBhY3Rpb246IFVpLlNldEdlbmVyaWNBY2Nlc3NpYmlsaXR5XG4gICk6IHZvaWQge1xuICAgIGN0eC5zZXRTdGF0ZSh7XG4gICAgICAuLi5jdHguZ2V0U3RhdGUoKSxcbiAgICAgIGdlbmVyaWNBY2Nlc3NpYmlsaXR5OiBhY3Rpb24ucGF5bG9hZCxcbiAgICB9KTtcbiAgfVxufVxuIl19