@hpe/angular-toolkit
Version:
Hewlett-Packard Enterprise : Angular toolkit for rapid project development
177 lines (176 loc) • 18 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
//=============================================================================
//===
//=== (C) Copyright 2018 Hewlett Packard Enterprise Development LP.
//===
//=== Use of this source code is governed by an MIT-style license that can be
//=== found in the LICENSE file
//=============================================================================
import * as tslib_1 from "tslib";
import { Component } from '@angular/core';
import { AppEvent } from "@hpe/angular-toolkit/model";
import { Credentials } from "@hpe/angular-toolkit/model";
import { Lib } from "@hpe/angular-toolkit/lib";
import { AbstractSubscriber } from "@hpe/angular-toolkit/service";
import { EventBusService } from "@hpe/angular-toolkit/service";
import { HttpService } from "@hpe/angular-toolkit/service";
import { LabelService } from "@hpe/angular-toolkit/service";
import { NotificationService } from "@hpe/angular-toolkit/service";
import { SessionService } from "@hpe/angular-toolkit/service";
var LoginPanel = /** @class */ (function (_super) {
tslib_1.__extends(LoginPanel, _super);
//-------------------------------------------------------------------------
//---
//--- Constructor
//---
//-------------------------------------------------------------------------
function LoginPanel(eventBusService, sessionService, notificationService, labelService, httpService) {
var _this = _super.call(this, eventBusService) || this;
_this.sessionService = sessionService;
_this.notificationService = notificationService;
_this.labelService = labelService;
_this.httpService = httpService;
//-------------------------------------------------------------------------
//---
//--- Variables
//---
//-------------------------------------------------------------------------
_this.cred = new Credentials();
_super.prototype.subscribeToApp.call(_this, AppEvent.LOGIN_FAILED, function (event) { return _this.onLoginFailed(event); });
return _this;
}
/**
* @return {?}
*/
LoginPanel.prototype.login = /**
* @return {?}
*/
function () {
if (!this.areCredentialsValid()) {
var /** @type {?} */ msg = this.labelService.getLabel("login-panel", "missing.info");
this.notificationService.showWarn(msg["title"], msg["descr"]);
}
else {
this.sessionService.login(this.cred);
}
};
Object.defineProperty(LoginPanel.prototype, "title", {
//-------------------------------------------------------------------------
//--- Localized strings
//-------------------------------------------------------------------------
get: /**
* @return {?}
*/
function () {
return this.loc("title");
},
enumerable: true,
configurable: true
});
Object.defineProperty(LoginPanel.prototype, "username", {
//-------------------------------------------------------------------------
get: /**
* @return {?}
*/
function () {
return this.loc("username");
},
enumerable: true,
configurable: true
});
Object.defineProperty(LoginPanel.prototype, "password", {
//-------------------------------------------------------------------------
get: /**
* @return {?}
*/
function () {
return this.loc("password");
},
enumerable: true,
configurable: true
});
Object.defineProperty(LoginPanel.prototype, "button", {
//-------------------------------------------------------------------------
get: /**
* @return {?}
*/
function () {
return this.loc("button");
},
enumerable: true,
configurable: true
});
/**
* @param {?} event
* @return {?}
*/
LoginPanel.prototype.onLoginFailed = /**
* @param {?} event
* @return {?}
*/
function (event) {
var /** @type {?} */ msg = this.labelService.getLabel("login-panel", "login.error");
this.notificationService.showError(msg["title"], msg["descr"]);
};
/**
* @return {?}
*/
LoginPanel.prototype.areCredentialsValid = /**
* @return {?}
*/
function () {
return Lib.str.isProvided(this.cred.username) && Lib.str.isProvided(this.cred.password);
};
/**
* @param {?} code
* @return {?}
*/
LoginPanel.prototype.loc = /**
* @param {?} code
* @return {?}
*/
function (code) {
return this.labelService.getLabel("login-panel", code);
};
LoginPanel.decorators = [
{ type: Component, args: [{
selector: 'hpe-login',
template: "<!--\n=============================================================================\n===\n=== (C) Copyright 2018 Hewlett Packard Enterprise Development LP.\n===\n=== Use of this source code is governed by an MIT-style license that can be\n=== found in the LICENSE file\n=============================================================================\n-->\n\n<hpe-card-panel icon=\"fa-sign-in\" [title]=\"title\" [toggleButton]=\"false\">\n\t<div cpBody>\n\t\t<hpe-form-panel>\n\n\t\t\t<hpe-form-column width=\"500px\">\n\t\t\t\t<hpe-input-text icon=\"fa-user\" [label]=\"username\" [(ngModel)]=\"cred.username\" required></hpe-input-text>\n\t\t\t\t<hpe-input-text icon=\"fa-key\" [label]=\"password\" [(ngModel)]=\"cred.password\" required></hpe-input-text>\n\t\t\t</hpe-form-column>\n\n\t\t</hpe-form-panel>\n\n\t\t<hpe-button-panel>\n\t\t\t<div class=\"spinner\" *ngIf=\"httpService.loading\">\n\t\t\t\t<i class=\"fa fa-circle-o-notch fa-pulse\"></i>\n\t\t\t</div>\n\t\t\t<button mat-button hpeButton (click)=\"login()\">{{button}}</button>\n\t\t</hpe-button-panel>\n\t</div>\n</hpe-card-panel>\n\n\n\n",
styles: [".spinner{position:absolute;left:16px;bottom:16px;font-size:32px}"]
},] },
];
/** @nocollapse */
LoginPanel.ctorParameters = function () { return [
{ type: EventBusService, },
{ type: SessionService, },
{ type: NotificationService, },
{ type: LabelService, },
{ type: HttpService, },
]; };
return LoginPanel;
}(AbstractSubscriber));
export { LoginPanel };
function LoginPanel_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
LoginPanel.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
LoginPanel.ctorParameters;
/** @type {?} */
LoginPanel.prototype.cred;
/** @type {?} */
LoginPanel.prototype.sessionService;
/** @type {?} */
LoginPanel.prototype.notificationService;
/** @type {?} */
LoginPanel.prototype.labelService;
/** @type {?} */
LoginPanel.prototype.httpService;
}
//=============================================================================
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaHBlL2FuZ3VsYXItdG9vbGtpdC9ndWkvZm9ybS8iLCJzb3VyY2VzIjpbImxvZ2luL2xvZ2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFpQiw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQWMsNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFzQiwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTyw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQVUsOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFjLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBYSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQVcsOEJBQThCLENBQUM7O0lBNENqQyxzQ0FBa0I7SUFVakQsMkVBQTJFO0lBQzNFLEtBQUs7SUFDTCxpQkFBaUI7SUFDakIsS0FBSztJQUNMLDJFQUEyRTtJQUUzRSxvQkFBb0IsZUFBb0MsRUFDN0MsZ0JBQ0EscUJBQ0EsY0FDQTtRQUpYLFlBTUMsa0JBQU0sZUFBZSxDQUFDLFNBRXRCO1FBUFUsb0JBQWMsR0FBZCxjQUFjO1FBQ2QseUJBQW1CLEdBQW5CLG1CQUFtQjtRQUNuQixrQkFBWSxHQUFaLFlBQVk7UUFDWixpQkFBVyxHQUFYLFdBQVc7Ozs7OztxQkFaRCxJQUFJLFdBQVcsRUFBRTtRQWVyQyxpQkFBTSxjQUFjLGFBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQXpCLENBQXlCLENBQUMsQ0FBQzs7S0FDaEY7Ozs7SUFRTSwwQkFBSzs7OztRQUVYLEVBQUUsQ0FBQyxDQUFFLENBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25DLHFCQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFFcEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDOUQ7UUFDRCxJQUFJLENBQUMsQ0FBQztZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyQzs7SUFPRixzQkFBSSw2QkFBSztRQUpULDJFQUEyRTtRQUMzRSx1QkFBdUI7UUFDdkIsMkVBQTJFOzs7O1FBRTNFO1lBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDekI7OztPQUFBO0lBSUQsc0JBQUksZ0NBQVE7UUFGWiwyRUFBMkU7Ozs7UUFFM0U7WUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM1Qjs7O09BQUE7SUFJRCxzQkFBSSxnQ0FBUTtRQUZaLDJFQUEyRTs7OztRQUUzRTtZQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzVCOzs7T0FBQTtJQUlELHNCQUFJLDhCQUFNO1FBRlYsMkVBQTJFOzs7O1FBRTNFO1lBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDMUI7OztPQUFBOzs7OztJQVFPLGtDQUFhOzs7O2NBQUMsS0FBZ0I7UUFFckMscUJBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs7Ozs7SUFTeEQsd0NBQW1COzs7O1FBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7OztJQUtqRix3QkFBRzs7OztjQUFDLElBQWE7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQzs7O2dCQXhJeEQsU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBVSxXQUFXO29CQUM3QixRQUFRLEVBQUUsaWxDQWdDYjtvQkFDQSxNQUFNLEVBQUUsQ0FBQyxrRUFBa0UsQ0FBQztpQkFDNUU7Ozs7Z0JBNUNPLGVBQWU7Z0JBSWYsY0FBYztnQkFEZCxtQkFBbUI7Z0JBRG5CLFlBQVk7Z0JBRFosV0FBVzs7cUJBZm5CO0VBOERnQyxrQkFBa0I7U0FBckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vPT09XG4vLz09PSAoQykgQ29weXJpZ2h0IDIwMTggSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFAuXG4vLz09PVxuLy89PT0gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbi8vPT09IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGVcbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0FwcEV2ZW50fSAgICAgICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtDcmVkZW50aWFsc30gICAgICAgICBmcm9tIFwiQGhwZS9hbmd1bGFyLXRvb2xraXQvbW9kZWxcIjtcbmltcG9ydCB7TGlifSAgICAgICAgICAgICAgICAgZnJvbSBcIkBocGUvYW5ndWxhci10b29sa2l0L2xpYlwiO1xuaW1wb3J0IHtBYnN0cmFjdFN1YnNjcmliZXJ9ICBmcm9tIFwiQGhwZS9hbmd1bGFyLXRvb2xraXQvc2VydmljZVwiO1xuaW1wb3J0IHtFdmVudEJ1c1NlcnZpY2V9ICAgICBmcm9tIFwiQGhwZS9hbmd1bGFyLXRvb2xraXQvc2VydmljZVwiO1xuaW1wb3J0IHtIdHRwU2VydmljZX0gICAgICAgICBmcm9tIFwiQGhwZS9hbmd1bGFyLXRvb2xraXQvc2VydmljZVwiO1xuaW1wb3J0IHtMYWJlbFNlcnZpY2V9ICAgICAgICBmcm9tIFwiQGhwZS9hbmd1bGFyLXRvb2xraXQvc2VydmljZVwiO1xuaW1wb3J0IHtOb3RpZmljYXRpb25TZXJ2aWNlfSBmcm9tIFwiQGhwZS9hbmd1bGFyLXRvb2xraXQvc2VydmljZVwiO1xuaW1wb3J0IHtTZXNzaW9uU2VydmljZX0gICAgICBmcm9tIFwiQGhwZS9hbmd1bGFyLXRvb2xraXQvc2VydmljZVwiO1xuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yICAgIDogICAgICdocGUtbG9naW4nLFxuICAgIHRlbXBsYXRlOiBgPCEtLVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbj09PVxuPT09IChDKSBDb3B5cmlnaHQgMjAxOCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUC5cbj09PVxuPT09IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG49PT0gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi0tPlxuXG48aHBlLWNhcmQtcGFuZWwgaWNvbj1cImZhLXNpZ24taW5cIiBbdGl0bGVdPVwidGl0bGVcIiBbdG9nZ2xlQnV0dG9uXT1cImZhbHNlXCI+XG5cdDxkaXYgY3BCb2R5PlxuXHRcdDxocGUtZm9ybS1wYW5lbD5cblxuXHRcdFx0PGhwZS1mb3JtLWNvbHVtbiB3aWR0aD1cIjUwMHB4XCI+XG5cdFx0XHRcdDxocGUtaW5wdXQtdGV4dCBpY29uPVwiZmEtdXNlclwiIFtsYWJlbF09XCJ1c2VybmFtZVwiIFsobmdNb2RlbCldPVwiY3JlZC51c2VybmFtZVwiIHJlcXVpcmVkPjwvaHBlLWlucHV0LXRleHQ+XG5cdFx0XHRcdDxocGUtaW5wdXQtdGV4dCBpY29uPVwiZmEta2V5XCIgIFtsYWJlbF09XCJwYXNzd29yZFwiIFsobmdNb2RlbCldPVwiY3JlZC5wYXNzd29yZFwiIHJlcXVpcmVkPjwvaHBlLWlucHV0LXRleHQ+XG5cdFx0XHQ8L2hwZS1mb3JtLWNvbHVtbj5cblxuXHRcdDwvaHBlLWZvcm0tcGFuZWw+XG5cblx0XHQ8aHBlLWJ1dHRvbi1wYW5lbD5cblx0XHRcdDxkaXYgY2xhc3M9XCJzcGlubmVyXCIgKm5nSWY9XCJodHRwU2VydmljZS5sb2FkaW5nXCI+XG5cdFx0XHRcdDxpIGNsYXNzPVwiZmEgZmEtY2lyY2xlLW8tbm90Y2ggZmEtcHVsc2VcIj48L2k+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxidXR0b24gbWF0LWJ1dHRvbiBocGVCdXR0b24gKGNsaWNrKT1cImxvZ2luKClcIj57e2J1dHRvbn19PC9idXR0b24+XG5cdFx0PC9ocGUtYnV0dG9uLXBhbmVsPlxuXHQ8L2Rpdj5cbjwvaHBlLWNhcmQtcGFuZWw+XG5cblxuXG5gLFxuXHRzdHlsZXM6IFtgLnNwaW5uZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxNnB4O2JvdHRvbToxNnB4O2ZvbnQtc2l6ZTozMnB4fWBdXG59KVxuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjbGFzcyBMb2dpblBhbmVsIGV4dGVuZHMgQWJzdHJhY3RTdWJzY3JpYmVyIHtcblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8tLS1cblx0Ly8tLS0gVmFyaWFibGVzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGNyZWQgOiBDcmVkZW50aWFscyA9IG5ldyBDcmVkZW50aWFscygpO1xuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLVxuXHQvLy0tLSBDb25zdHJ1Y3RvclxuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRjb25zdHJ1Y3RvciggICAgICAgIGV2ZW50QnVzU2VydmljZSAgICA6IEV2ZW50QnVzU2VydmljZSxcblx0XHRcdFx0cHJpdmF0ZSBzZXNzaW9uU2VydmljZSAgICAgOiBTZXNzaW9uU2VydmljZSxcblx0XHRcdFx0cHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuXHRcdFx0XHRwcml2YXRlIGxhYmVsU2VydmljZSAgICAgICA6IExhYmVsU2VydmljZSxcblx0XHRcdFx0cHVibGljICBodHRwU2VydmljZSAgICAgICAgOiBIdHRwU2VydmljZSkge1xuXG5cdFx0c3VwZXIoZXZlbnRCdXNTZXJ2aWNlKTtcblx0XHRzdXBlci5zdWJzY3JpYmVUb0FwcChBcHBFdmVudC5MT0dJTl9GQUlMRUQsIGV2ZW50ID0+IHRoaXMub25Mb2dpbkZhaWxlZChldmVudCkpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tXG5cdC8vLS0tIEFQSSBtZXRob2RzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdHB1YmxpYyBsb2dpbigpIDogdm9pZCB7XG5cblx0XHRpZiAoICEgdGhpcy5hcmVDcmVkZW50aWFsc1ZhbGlkKCkpIHtcblx0XHRcdGxldCBtc2cgPSB0aGlzLmxhYmVsU2VydmljZS5nZXRMYWJlbChcImxvZ2luLXBhbmVsXCIsIFwibWlzc2luZy5pbmZvXCIpO1xuXG5cdFx0XHR0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd1dhcm4obXNnW1widGl0bGVcIl0sIG1zZ1tcImRlc2NyXCJdKTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aGlzLnNlc3Npb25TZXJ2aWNlLmxvZ2luKHRoaXMuY3JlZCk7XG5cdFx0fVxuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tIExvY2FsaXplZCBzdHJpbmdzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGdldCB0aXRsZSgpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sb2MoXCJ0aXRsZVwiKTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGdldCB1c2VybmFtZSgpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sb2MoXCJ1c2VybmFtZVwiKTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGdldCBwYXNzd29yZCgpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sb2MoXCJwYXNzd29yZFwiKTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGdldCBidXR0b24oKSA6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubG9jKFwiYnV0dG9uXCIpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tXG5cdC8vLS0tIEV2ZW50c1xuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRwcml2YXRlIG9uTG9naW5GYWlsZWQoZXZlbnQgOiBBcHBFdmVudCkge1xuXG5cdFx0bGV0IG1zZyA9IHRoaXMubGFiZWxTZXJ2aWNlLmdldExhYmVsKFwibG9naW4tcGFuZWxcIiwgXCJsb2dpbi5lcnJvclwiKTtcblxuXHRcdHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IobXNnW1widGl0bGVcIl0sIG1zZ1tcImRlc2NyXCJdKTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLVxuXHQvLy0tLSBQcml2YXRlIG1ldGhvZHNcblx0Ly8tLS1cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0cHJpdmF0ZSBhcmVDcmVkZW50aWFsc1ZhbGlkKCkge1xuXHRcdHJldHVybiBMaWIuc3RyLmlzUHJvdmlkZWQodGhpcy5jcmVkLnVzZXJuYW1lKSAmJiBMaWIuc3RyLmlzUHJvdmlkZWQodGhpcy5jcmVkLnBhc3N3b3JkKTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdHByaXZhdGUgbG9jKGNvZGUgOiBzdHJpbmcpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sYWJlbFNlcnZpY2UuZ2V0TGFiZWwoXCJsb2dpbi1wYW5lbFwiLCBjb2RlKTtcblx0fVxufVxuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iXX0=