UNPKG

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

Version:

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

271 lines 27 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 * as User from './user.actions'; import * as i0 from "@angular/core"; export function initUserStateDefaultValues() { return { id: null, userName: null, displayName: null, photo: null, canAssignOrMove: [], isConnected: false, isDisconnected: true, isConnecting: false, isDisconnecting: false, connectionFailed: false, codeConnectionError: null, connectionErrorMessage: null, disconnectionFailed: false, codeDisconnectionError: null, disconnectionErrorMessage: null, }; } let UserState = class UserState { static getUser(state) { return state; } static getCurrentUserDetail(state) { return { id: state.id, userName: state.userName, displayName: state.displayName, photo: state.photo, canAssignOrMove: state.canAssignOrMove, }; } static getId(state) { return state.id; } static getDisplayName(state) { return state.displayName; } static getPhoto(state) { return state.photo; } static getCanAssignOrMoveAuthorizedTypes(state) { return state.canAssignOrMove; } static getIsConnected(state) { return state.isConnected; } static getIsDisconnected(state) { return state.isDisconnected; } static getIsConnecting(state) { return state.isConnecting; } static getIsDisconnecting(state) { return state.isDisconnected; } static getConnectionFailed(state) { return state.connectionFailed; } static getCodeConnectionError(state) { return state.codeConnectionError; } static getConnectionErrorMessage(state) { return state.connectionFailed; } static getDisconnectionFailed(state) { return state.disconnectionFailed; } static getCodeDisconnectionError(state) { return state.codeDisconnectionError; } static getDisonnectionErrorMessage(state) { return state.disconnectionErrorMessage; } setCurrentUserConfig(ctx, action) { ctx.setState({ ...ctx.getState(), id: action.payload.id, userName: action.payload.userName, displayName: action.payload.displayName, photo: action.payload.photo, canAssignOrMove: action.payload.canAssignOrMove, }); } updateCurrentUserConfig(ctx, action) { ctx.setState({ ...ctx.getState(), displayName: action.payload.userInfo.displayName, photo: action.payload.userInfo.photo, }); } connect(ctx, action) { ctx.setState({ ...ctx.getState(), displayName: action.payload.userInfo.displayName, isConnecting: true, connectionFailed: false, codeConnectionError: null, connectionErrorMessage: null, }); } connectError(ctx, action) { ctx.setState({ ...ctx.getState(), displayName: null, isConnecting: false, connectionFailed: true, codeConnectionError: action.payload.code, connectionErrorMessage: action.payload.message, }); } connectSuccess(ctx) { ctx.setState({ ...ctx.getState(), isConnecting: false, isConnected: true, isDisconnected: false, }); } disconnect(ctx) { ctx.setState({ ...ctx.getState(), isDisconnecting: true, disconnectionFailed: false, codeDisconnectionError: null, disconnectionErrorMessage: null, }); } disconnectError(ctx, action) { ctx.setState({ ...ctx.getState(), isDisconnecting: false, disconnectionFailed: true, codeDisconnectionError: action.payload.code, disconnectionErrorMessage: action.payload.message, }); } disconnectSuccess(ctx) { ctx.setState({ ...ctx.getState(), displayName: null, photo: null, isDisconnecting: false, isDisconnected: true, isConnected: false, }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: UserState, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: UserState }); } }; __decorate([ Action(User.SetCurrentUserConfig) ], UserState.prototype, "setCurrentUserConfig", null); __decorate([ Action(User.UpdateCurrentUserConfig) ], UserState.prototype, "updateCurrentUserConfig", null); __decorate([ Action(User.Connect) ], UserState.prototype, "connect", null); __decorate([ Action(User.ConnectError) ], UserState.prototype, "connectError", null); __decorate([ Action(User.ConnectSuccess) ], UserState.prototype, "connectSuccess", null); __decorate([ Action(User.Disconnect) ], UserState.prototype, "disconnect", null); __decorate([ Action(User.DisconnectError) ], UserState.prototype, "disconnectError", null); __decorate([ Action(User.DisconnectSuccess) ], UserState.prototype, "disconnectSuccess", null); __decorate([ Selector() ], UserState, "getUser", null); __decorate([ Selector() ], UserState, "getCurrentUserDetail", null); __decorate([ Selector() ], UserState, "getId", null); __decorate([ Selector() ], UserState, "getDisplayName", null); __decorate([ Selector() ], UserState, "getPhoto", null); __decorate([ Selector() ], UserState, "getCanAssignOrMoveAuthorizedTypes", null); __decorate([ Selector() ], UserState, "getIsConnected", null); __decorate([ Selector() ], UserState, "getIsDisconnected", null); __decorate([ Selector() ], UserState, "getIsConnecting", null); __decorate([ Selector() ], UserState, "getIsDisconnecting", null); __decorate([ Selector() ], UserState, "getConnectionFailed", null); __decorate([ Selector() ], UserState, "getCodeConnectionError", null); __decorate([ Selector() ], UserState, "getConnectionErrorMessage", null); __decorate([ Selector() ], UserState, "getDisconnectionFailed", null); __decorate([ Selector() ], UserState, "getCodeDisconnectionError", null); __decorate([ Selector() ], UserState, "getDisonnectionErrorMessage", null); UserState = __decorate([ State({ name: 'user', defaults: initUserStateDefaultValues(), }) ], UserState); export { UserState }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: UserState, decorators: [{ type: Injectable }], propDecorators: { setCurrentUserConfig: [], updateCurrentUserConfig: [], connect: [], connectError: [], connectSuccess: [], disconnect: [], disconnectError: [], disconnectSuccess: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xpYnMvY2xpZW50LWNvcmUvc3JjL2xpYi9zaGFyZWQvc3RhdGVzL3VzZXIvdXNlci5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBRXBFLE9BQU8sS0FBSyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7O0FBb0J2QyxNQUFNLFVBQVUsMEJBQTBCO0lBQ3hDLE9BQU87UUFDTCxFQUFFLEVBQUUsSUFBSTtRQUNSLFFBQVEsRUFBRSxJQUFJO1FBQ2QsV0FBVyxFQUFFLElBQUk7UUFDakIsS0FBSyxFQUFFLElBQUk7UUFDWCxlQUFlLEVBQUUsRUFBRTtRQUNuQixXQUFXLEVBQUUsS0FBSztRQUNsQixjQUFjLEVBQUUsSUFBSTtRQUNwQixZQUFZLEVBQUUsS0FBSztRQUNuQixlQUFlLEVBQUUsS0FBSztRQUN0QixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLG1CQUFtQixFQUFFLElBQUk7UUFDekIsc0JBQXNCLEVBQUUsSUFBSTtRQUM1QixtQkFBbUIsRUFBRSxLQUFLO1FBQzFCLHNCQUFzQixFQUFFLElBQUk7UUFDNUIseUJBQXlCLEVBQUUsSUFBSTtLQUNoQyxDQUFDO0FBQ0osQ0FBQztBQU9NLElBQU0sU0FBUyxHQUFmLE1BQU0sU0FBUztJQUViLEFBQVAsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFxQjtRQUNsQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFHTSxBQUFQLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxLQUFxQjtRQUMvQyxPQUFPO1lBQ0wsRUFB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QUFHTTtJQUROLFFBQVEsRUFBRTsyQ0FTVjtBQUdNO0lBRE4sUUFBUSxFQUFFOzRCQUdWO0FBR007SUFETixRQUFRLEVBQUU7cUNBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTsrQkFHVjtBQUdNO0lBRE4sUUFBUSxFQUFFO3dEQUdWO0FBR007SUFETixRQUFRLEVBQUU7cUNBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTt3Q0FHVjtBQUdNO0lBRE4sUUFBUSxFQUFFO3NDQUdWO0FBR007SUFETixRQUFRLEVBQUU7eUNBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTswQ0FHVjtBQUdNO0lBRE4sUUFBUSxFQUFFOzZDQUdWO0FBR007SUFETixRQUFRLEVBQUU7Z0RBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTs2Q0FHVjtBQUdNO0lBRE4sUUFBUSxFQUFFO2dEQUdWO0FBR007SUFETixRQUFRLEVBQUU7a0RBR1Y7QUFyRlUsU0FBUztJQUxyQixLQUFLLENBQWlCO1FBQ3JCLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLDBCQUEwQixFQUFFO0tBQ3ZDLENBQUM7R0FFVyxTQUFTLENBMkxyQjs7MkZBM0xZLFNBQVM7a0JBRHJCLFVBQVU7OEJBeUZULG9CQUFvQixNQWVwQix1QkFBdUIsTUFZdkIsT0FBTyxNQVlQLFlBQVksTUFlWixjQUFjLE1BVWQsVUFBVSxNQVdWLGVBQWUsTUFjZixpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoQykgMjAyMC0yMDI0IExpbmFnb3JhXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXJcbiAqIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZVxuICogU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnlcbiAqIGxhdGVyIHZlcnNpb24sIHByb3ZpZGVkIHlvdSBjb21wbHkgd2l0aCB0aGUgQWRkaXRpb25hbCBUZXJtcyBhcHBsaWNhYmxlIGZvclxuICogTGluSUQgRGlyZWN0b3J5IE1hbmFnZXIgc29mdHdhcmUgYnkgTElOQUdPUkEgcHVyc3VhbnQgdG8gU2VjdGlvbiA3IG9mIHRoZSBHTlVcbiAqIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBzdWJzZWN0aW9ucyAoYiksIChjKSwgYW5kIChlKSwgcHVyc3VhbnQgdG9cbiAqIHdoaWNoIHRoZXNlIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXMgbXVzdCBub3RhYmx5IChpKSByZXRhaW4gdGhlIGRpc3BsYXkgb2ZcbiAqIHRoZSBcIkxpbklE4oSiXCIgdHJhZGVtYXJrL2xvZ28gYXQgdGhlIHRvcCBvZiB0aGUgaW50ZXJmYWNlIHdpbmRvdywgdGhlIGRpc3BsYXlcbiAqIG9mIHRoZSDigJxZb3UgYXJlIHVzaW5nIHRoZSBPcGVuIFNvdXJjZSBhbmQgZnJlZSB2ZXJzaW9uIG9mIExpbklE4oSiLCBwb3dlcmVkIGJ5XG4gKiBMaW5hZ29yYSDCqSAyMDA54oCTMjAxMy4gQ29udHJpYnV0ZSB0byBMaW5JRCBSJkQgYnkgc3Vic2NyaWJpbmcgdG8gYW4gRW50ZXJwcmlzZVxuICogb2ZmZXIh4oCdIGluZm9ib3ggYW5kIGluIHRoZSBlLW1haWxzIHNlbnQgd2l0aCB0aGUgUHJvZ3JhbSwgbm90aWNlIGFwcGVuZGVkIHRvXG4gKiBhbnkgdHlwZSBvZiBvdXRib3VuZCBtZXNzYWdlcyAoZS5nLiBlLW1haWwgYW5kIG1lZXRpbmcgcmVxdWVzdHMpIGFzIHdlbGwgYXNcbiAqIGluIHRoZSBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciB1c2VyIGludGVyZmFjZSwgKGlpKSByZXRhaW4gYWxsIGh5cGVydGV4dFxuICogbGlua3MgYmV0d2VlbiBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBhbmQgaHR0cHM6Ly9saW5pZC5vcmcvLCBhcyB3ZWxsIGFzXG4gKiBiZXR3ZWVuIExJTkFHT1JBIGFuZCBMSU5BR09SQS5jb20sIGFuZCAoaWlpKSByZWZyYWluIGZyb20gaW5mcmluZ2luZyBMSU5BR09SQVxuICogaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvdmVyIGl0cyB0cmFkZW1hcmtzIGFuZCBjb21tZXJjaWFsIGJyYW5kcy4gT3RoZXJcbiAqIEFkZGl0aW9uYWwgVGVybXMgYXBwbHksIHNlZSA8aHR0cDovL3d3dy5saW5hZ29yYS5jb20vbGljZW5zZXMvPiBmb3IgbW9yZVxuICogZGV0YWlscy5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTXG4gKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlXG4gKiBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmRcbiAqIGl0cyBhcHBsaWNhYmxlIEFkZGl0aW9uYWwgVGVybXMgZm9yIExpbklEIERpcmVjdG9yeSBNYW5hZ2VyIGFsb25nIHdpdGggdGhpc1xuICogcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+IGZvciB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYW5kIDxodHRwOi8vd3d3LmxpbmFnb3JhLmNvbS9saWNlbnNlcy8+IGZvclxuICogdGhlIEFkZGl0aW9uYWwgVGVybXMgYXBwbGljYWJsZSB0byB0aGUgTGluSUQgRGlyZWN0b3J5IE1hbmFnZXIgc29mdHdhcmUuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IElDdXJyZW50VXNlckNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29uZmlncy5pbnRlcmZhY2UnO1xuaW1wb3J0ICogYXMgVXNlciBmcm9tICcuL3VzZXIuYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclN0YXRlTW9kZWwge1xuICBpZDogc3RyaW5nO1xuICB1c2VyTmFtZTogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBwaG90bzogc3RyaW5nO1xuICBjYW5Bc3NpZ25Pck1vdmU6IHN0cmluZ1tdO1xuICBpc0Nvbm5lY3RlZDogYm9vbGVhbjtcbiAgaXNEaXNjb25uZWN0ZWQ6IGJvb2xlYW47XG4gIGlzQ29ubmVjdGluZzogYm9vbGVhbjtcbiAgaXNEaXNjb25uZWN0aW5nOiBib29sZWFuO1xuICBjb25uZWN0aW9uRmFpbGVkOiBib29sZWFuO1xuICBjb2RlQ29ubmVjdGlvbkVycm9yOiBudW1iZXI7XG4gIGNvbm5lY3Rpb25FcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgZGlzY29ubmVjdGlvbkZhaWxlZDogYm9vbGVhbjtcbiAgY29kZURpc2Nvbm5lY3Rpb25FcnJvcjogbnVtYmVyO1xuICBkaXNjb25uZWN0aW9uRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0VXNlclN0YXRlRGVmYXVsdFZhbHVlcygpIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogbnVsbCxcbiAgICB1c2VyTmFtZTogbnVsbCxcbiAgICBkaXNwbGF5TmFtZTogbnVsbCxcbiAgICBwaG90bzogbnVsbCxcbiAgICBjYW5Bc3NpZ25Pck1vdmU6IFtdLFxuICAgIGlzQ29ubmVjdGVkOiBmYWxzZSxcbiAgICBpc0Rpc2Nvbm5lY3RlZDogdHJ1ZSxcbiAgICBpc0Nvbm5lY3Rpbmc6IGZhbHNlLFxuICAgIGlzRGlzY29ubmVjdGluZzogZmFsc2UsXG4gICAgY29ubmVjdGlvbkZhaWxlZDogZmFsc2UsXG4gICAgY29kZUNvbm5lY3Rpb25FcnJvcjogbnVsbCxcbiAgICBjb25uZWN0aW9uRXJyb3JNZXNzYWdlOiBudWxsLFxuICAgIGRpc2Nvbm5lY3Rpb25GYWlsZWQ6IGZhbHNlLFxuICAgIGNvZGVEaXNjb25uZWN0aW9uRXJyb3I6IG51bGwsXG4gICAgZGlzY29ubmVjdGlvbkVycm9yTWVzc2FnZTogbnVsbCxcbiAgfTtcbn1cblxuQFN0YXRlPFVzZXJTdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICd1c2VyJyxcbiAgZGVmYXVsdHM6IGluaXRVc2VyU3RhdGVEZWZhdWx0VmFsdWVzKCksXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJTdGF0ZSB7XG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRVc2VyKHN0YXRlOiBVc2VyU3RhdGVNb2RlbCk6IFVzZXJTdGF0ZU1vZGVsIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0Q3VycmVudFVzZXJEZXRhaWwoc3RhdGU6IFVzZXJTdGF0ZU1vZGVsKTogSUN1cnJlbnRVc2VyQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHN0YXRlLmlkLFxuICAgICAgdXNlck5hbWU6IHN0YXRlLnVzZXJOYW1lLFxuICAgICAgZGlzcGxheU5hbWU6IHN0YXRlLmRpc3BsYXlOYW1lLFxuICAgICAgcGhvdG86IHN0YXRlLnBob3RvLFxuICAgICAgY2FuQXNzaWduT3JNb3ZlOiBzdGF0ZS5jYW5Bc3NpZ25Pck1vdmUsXG4gICAgfTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRJZChzdGF0ZTogVXNlclN0YXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGF0ZS5pZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXREaXNwbGF5TmFtZShzdGF0ZTogVXNlclN0YXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGF0ZS5kaXNwbGF5TmFtZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRQaG90byhzdGF0ZTogVXNlclN0YXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGF0ZS5waG90bztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRDYW5Bc3NpZ25Pck1vdmVBdXRob3JpemVkVHlwZXMoc3RhdGU6IFVzZXJTdGF0ZU1vZGVsKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBzdGF0ZS5jYW5Bc3NpZ25Pck1vdmU7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0SXNDb25uZWN0ZWQoc3RhdGU6IFVzZXJTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmlzQ29ubmVjdGVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldElzRGlzY29ubmVjdGVkKHN0YXRlOiBVc2VyU3RhdGVNb2RlbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGF0ZS5pc0Rpc2Nvbm5lY3RlZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRJc0Nvbm5lY3Rpbmcoc3RhdGU6IFVzZXJTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmlzQ29ubmVjdGluZztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRJc0Rpc2Nvbm5lY3Rpbmcoc3RhdGU6IFVzZXJTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmlzRGlzY29ubmVjdGVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldENvbm5lY3Rpb25GYWlsZWQoc3RhdGU6IFVzZXJTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmNvbm5lY3Rpb25GYWlsZWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0Q29kZUNvbm5lY3Rpb25FcnJvcihzdGF0ZTogVXNlclN0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5jb2RlQ29ubmVjdGlvbkVycm9yO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldENvbm5lY3Rpb25FcnJvck1lc3NhZ2Uoc3RhdGU6IFVzZXJTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmNvbm5lY3Rpb25GYWlsZWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0RGlzY29ubmVjdGlvbkZhaWxlZChzdGF0ZTogVXNlclN0YXRlTW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUuZGlzY29ubmVjdGlvbkZhaWxlZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRDb2RlRGlzY29ubmVjdGlvbkVycm9yKHN0YXRlOiBVc2VyU3RhdGVNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLmNvZGVEaXNjb25uZWN0aW9uRXJyb3I7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0RGlzb25uZWN0aW9uRXJyb3JNZXNzYWdlKHN0YXRlOiBVc2VyU3RhdGVNb2RlbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0YXRlLmRpc2Nvbm5lY3Rpb25FcnJvck1lc3NhZ2U7XG4gIH1cblxuICBAQWN0aW9uKFVzZXIuU2V0Q3VycmVudFVzZXJDb25maWcpXG4gIHNldEN1cnJlbnRVc2VyQ29uZmlnKFxuICAgIGN0eDogU3RhdGVDb250ZXh0PFVzZXJTdGF0ZU1vZGVsPixcbiAgICBhY3Rpb246IFVzZXIuU2V0Q3VycmVudFVzZXJDb25maWdcbiAgKTogdm9pZCB7XG4gICAgY3R4LnNldFN0YXRlKHtcbiAgICAgIC4uLmN0eC5nZXRTdGF0ZSgpLFxuICAgICAgaWQ6IGFjdGlvbi5wYXlsb2FkLmlkLFxuICAgICAgdXNlck5hbWU6IGFjdGlvbi5wYXlsb2FkLnVzZXJOYW1lLFxuICAgICAgZGlzcGxheU5hbWU6IGFjdGlvbi5wYXlsb2FkLmRpc3BsYXlOYW1lLFxuICAgICAgcGhvdG86IGFjdGlvbi5wYXlsb2FkLnBob3RvLFxuICAgICAgY2FuQXNzaWduT3JNb3ZlOiBhY3Rpb24ucGF5bG9hZC5jYW5Bc3NpZ25Pck1vdmUsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFVzZXIuVXBkYXRlQ3VycmVudFVzZXJDb25maWcpXG4gIHVwZGF0ZUN1cnJlbnRVc2VyQ29uZmlnKFxuICAgIGN0eDogU3RhdGVDb250ZXh0PFVzZXJTdGF0ZU1vZGVsPixcbiAgICBhY3Rpb246IFVzZXIuVXBkYXRlQ3VycmVudFVzZXJDb25maWdcbiAgKSB7XG4gICAgY3R4LnNldFN0YXRlKHtcbiAgICAgIC4uLmN0eC5nZXRTdGF0ZSgpLFxuICAgICAgZGlzcGxheU5hbWU6IGFjdGlvbi5wYXlsb2FkLnVzZXJJbmZvLmRpc3BsYXlOYW1lLFxuICAgICAgcGhvdG86IGFjdGlvbi5wYXlsb2FkLnVzZXJJbmZvLnBob3RvLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihVc2VyLkNvbm5lY3QpXG4gIGNvbm5lY3QoY3R4OiBTdGF0ZUNvbnRleHQ8VXNlclN0YXRlTW9kZWw+LCBhY3Rpb246IFVzZXIuQ29ubmVjdCk6IHZvaWQge1xuICAgIGN0eC5zZXRTdGF0ZSh7XG4gICAgICAuLi5jdHguZ2V0U3RhdGUoKSxcbiAgICAgIGRpc3BsYXlOYW1lOiBhY3Rpb24ucGF5bG9hZC51c2VySW5mby5kaXNwbGF5TmFtZSxcbiAgICAgIGlzQ29ubmVjdGluZzogdHJ1ZSxcbiAgICAgIGNvbm5lY3Rpb25GYWlsZWQ6IGZhbHNlLFxuICAgICAgY29kZUNvbm5lY3Rpb25FcnJvcjogbnVsbCxcbiAgICAgIGNvbm5lY3Rpb25FcnJvck1lc3NhZ2U6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFVzZXIuQ29ubmVjdEVycm9yKVxuICBjb25uZWN0RXJyb3IoXG4gICAgY3R4OiBTdGF0ZUNvbnRleHQ8VXNlclN0YXRlTW9kZWw+LFxuICAgIGFjdGlvbjogVXNlci5Db25uZWN0RXJyb3JcbiAgKTogdm9pZCB7XG4gICAgY3R4LnNldFN0YXRlKHtcbiAgICAgIC4uLmN0eC5nZXRTdGF0ZSgpLFxuICAgICAgZGlzcGxheU5hbWU6IG51bGwsXG4gICAgICBpc0Nvbm5lY3Rpbmc6IGZhbHNlLFxuICAgICAgY29ubmVjdGlvbkZhaWxlZDogdHJ1ZSxcbiAgICAgIGNvZGVDb25uZWN0aW9uRXJyb3I6IGFjdGlvbi5wYXlsb2FkLmNvZGUsXG4gICAgICBjb25uZWN0aW9uRXJyb3JNZXNzYWdlOiBhY3Rpb24ucGF5bG9hZC5tZXNzYWdlLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihVc2VyLkNvbm5lY3RTdWNjZXNzKVxuICBjb25uZWN0U3VjY2VzcyhjdHg6IFN0YXRlQ29udGV4dDxVc2VyU3RhdGVNb2RlbD4pOiB2b2lkIHtcbiAgICBjdHguc2V0U3RhdGUoe1xuICAgICAgLi4uY3R4LmdldFN0YXRlKCksXG4gICAgICBpc0Nvbm5lY3Rpbmc6IGZhbHNlLFxuICAgICAgaXNDb25uZWN0ZWQ6IHRydWUsXG4gICAgICBpc0Rpc2Nvbm5lY3RlZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFVzZXIuRGlzY29ubmVjdClcbiAgZGlzY29ubmVjdChjdHg6IFN0YXRlQ29udGV4dDxVc2VyU3RhdGVNb2RlbD4pOiB2b2lkIHtcbiAgICBjdHguc2V0U3RhdGUoe1xuICAgICAgLi4uY3R4LmdldFN0YXRlKCksXG4gICAgICBpc0Rpc2Nvbm5lY3Rpbmc6IHRydWUsXG4gICAgICBkaXNjb25uZWN0aW9uRmFpbGVkOiBmYWxzZSxcbiAgICAgIGNvZGVEaXNjb25uZWN0aW9uRXJyb3I6IG51bGwsXG4gICAgICBkaXNjb25uZWN0aW9uRXJyb3JNZXNzYWdlOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihVc2VyLkRpc2Nvbm5lY3RFcnJvcilcbiAgZGlzY29ubmVjdEVycm9yKFxuICAgIGN0eDogU3RhdGVDb250ZXh0PFVzZXJTdGF0ZU1vZGVsPixcbiAgICBhY3Rpb246IFVzZXIuQ29ubmVjdEVycm9yXG4gICk6IHZvaWQge1xuICAgIGN0eC5zZXRTdGF0ZSh7XG4gICAgICAuLi5jdHguZ2V0U3RhdGUoKSxcbiAgICAgIGlzRGlzY29ubmVjdGluZzogZmFsc2UsXG4gICAgICBkaXNjb25uZWN0aW9uRmFpbGVkOiB0cnVlLFxuICAgICAgY29kZURpc2Nvbm5lY3Rpb25FcnJvcjogYWN0aW9uLnBheWxvYWQuY29kZSxcbiAgICAgIGRpc2Nvbm5lY3Rpb25FcnJvck1lc3NhZ2U6IGFjdGlvbi5wYXlsb2FkLm1lc3NhZ2UsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFVzZXIuRGlzY29ubmVjdFN1Y2Nlc3MpXG4gIGRpc2Nvbm5lY3RTdWNjZXNzKGN0eDogU3RhdGVDb250ZXh0PFVzZXJTdGF0ZU1vZGVsPik6IHZvaWQge1xuICAgIGN0eC5zZXRTdGF0ZSh7XG4gICAgICAuLi5jdHguZ2V0U3RhdGUoKSxcbiAgICAgIGRpc3BsYXlOYW1lOiBudWxsLFxuICAgICAgcGhvdG86IG51bGwsXG4gICAgICBpc0Rpc2Nvbm5lY3Rpbmc6IGZhbHNlLFxuICAgICAgaXNEaXNjb25uZWN0ZWQ6IHRydWUsXG4gICAgICBpc0Nvbm5lY3RlZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==