iptdevs-design-system
Version:
Library common elements into IPT Plattform.
151 lines (141 loc) • 17.5 kB
JavaScript
import { Component, Input, Output, EventEmitter } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "../../../core/services/user-service/user-service";
import * as i2 from "../../../core/utils/base-service/base.service";
import * as i3 from "../../../core/services/storage-service/storage-service";
import * as i4 from "@angular/common";
import * as i5 from "@angular/material/sidenav";
import * as i6 from "@angular/material/toolbar";
import * as i7 from "@angular/material/list";
import * as i8 from "../../atoms/aside-button/aside-button.component";
export class SidenavComponent {
constructor(userService, baseService, storageService) {
this.userService = userService;
this.baseService = baseService;
this.storageService = storageService;
this.pageChangeEvent = new EventEmitter();
this.appUser = false;
this.routes = [];
this.options = { weekday: 'long', month: 'long', day: 'numeric' };
this.currentDay = new Date().toLocaleDateString('en-EN', this.options);
this.hour = new Date().getHours();
}
ngOnInit() {
let user = this.storageService.getCurrentUser()?.token;
let token = user === undefined ? '' : user;
let request = {
token: token,
department: this.department
};
this.userService.getRoutesForRole(request).subscribe((response) => {
this.routes = response.data;
});
this.appUser = this.baseService.isAnAppUser();
}
clickPage(event) {
this.pageChangeEvent.emit(event);
}
logout() {
this.storageService.logout();
this.pageChangeEvent.emit('logout');
}
}
SidenavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: SidenavComponent, deps: [{ token: i1.UserService }, { token: i2.BaseService }, { token: i3.StorageService }], target: i0.ɵɵFactoryTarget.Component });
SidenavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: SidenavComponent, selector: "ipt-sidenav", inputs: { department: "department", setPage: "setPage", userName: "userName" }, outputs: { pageChangeEvent: "pageChangeEvent" }, ngImport: i0, template: `
<mat-sidenav #sidenav mode="push" >
<mat-toolbar color="primary" (click)="sidenav.toggle()">
<span style="font-size: 15px;">{{department}}</span>
<span class="menu-icon-close"></span>
</mat-toolbar>
<mat-nav-list *ngFor="let route of routes">
<nav class="flex-container-menu">
<ipt-aside-button
[buttonActive]="this.setPage === route.page"
[icon]="route.icon"
[text]="route.text"
(isClicked)="clickPage(route.page)"
(click)="sidenav.toggle()"
>
</ipt-aside-button>
</nav>
</mat-nav-list>
</mat-sidenav>
<mat-toolbar class="header">
<div class="menu-container" (click)="sidenav.toggle()">
<p>Menu</p>
<div class="menu-icon"></div>
</div>
<img class="img-logo" src="./assets/logos/IPT-logo.png" alt="" />
<div class="text-container">
<span class="p1">{{ currentDay }}</span>
<span *ngIf="hour >= 0 && hour < 12" class="p2">
Hey {{ userName }}, Good morning!
</span>
<p *ngIf="hour >= 12 && hour < 18" class="p2">
Hey {{ userName }}, Good afternoon!
</p>
<p *ngIf="hour >= 18 && hour < 24" class="p2">
Hey {{ userName }}, Good evening!
</p>
</div>
<div *ngIf="!this.appUser" class="logout-container" (click)="logout()">
<p class="logout-button">Cerrar sesión</p>
<div class="photo-logout"></div>
</div>
</mat-toolbar>
`, isInline: true, styles: ["*{font-family:Poppins,sans-serif}@media screen and (min-width: 320px){.header{background-color:#fff;display:flex;justify-content:space-between;filter:drop-shadow(0px -1px 7px #000)}mat-sidenav{width:-moz-fit-content!important;width:fit-content!important;background-color:#1c77f7!important}.img-logo,.text-container{display:none}.mat-toolbar.mat-primary{background-color:#fff!important;color:#003d99!important;filter:drop-shadow(0px -1px 7px #000)}.logout-container{box-shadow:#11111a1a 0 8px 24px,#11111a1a 0 16px 56px,#11111a1a 0 24px 80px;height:35px;width:auto;border-radius:30px;display:flex;margin-left:10px}.logout-button{display:flex;align-items:center;color:#1c77f7;font-weight:500;font-size:16px;margin-left:20px;text-align:center;width:150px}.photo-logout{background:url(./assets/icons/exit.png);background-size:25px 25px;background-position:center;background-repeat:no-repeat}.menu-icon{background:url(./assets/icons/icon-menu.png);background-size:25px 25px;background-position:center;background-repeat:no-repeat}.menu-icon-close{background:url(./assets/icons/cruz.png);background-size:25px 25px;background-position:center;background-repeat:no-repeat;width:35px;height:35px}.menu-container{box-shadow:#11111a1a 0 8px 24px,#11111a1a 0 16px 56px,#11111a1a 0 24px 80px;height:35px;width:52.5px;width:auto;border-radius:30px;display:flex}.menu-container:hover{cursor:pointer}.menu-container p{width:85px;display:flex;align-items:center;color:#1c77f7;font-weight:500;font-size:16px;margin:0 0 0 15px;text-align:center}}@media screen and (min-width: 768px){.img-logo{display:flex;width:120px;height:60px}.text-container{border-radius:40px;height:45px;width:100%;display:flex;gap:-100px;justify-content:center;flex-direction:column;align-items:flex-start}}.p1{color:gray;margin-left:30px;font-size:13px;height:20px}.p2{margin-left:30px;font-size:14px;font-weight:600;color:#1c77f7}.flex-container-menu{font-size:18px;color:#fff!important}.mat-nav-list{padding:0}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i7.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { kind: "component", type: i8.AsideButtonComponent, selector: "ipt-aside-button", inputs: ["icon", "text", "buttonActive"], outputs: ["isClicked"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: SidenavComponent, decorators: [{
type: Component,
args: [{ selector: 'ipt-sidenav', template: `
<mat-sidenav #sidenav mode="push" >
<mat-toolbar color="primary" (click)="sidenav.toggle()">
<span style="font-size: 15px;">{{department}}</span>
<span class="menu-icon-close"></span>
</mat-toolbar>
<mat-nav-list *ngFor="let route of routes">
<nav class="flex-container-menu">
<ipt-aside-button
[buttonActive]="this.setPage === route.page"
[icon]="route.icon"
[text]="route.text"
(isClicked)="clickPage(route.page)"
(click)="sidenav.toggle()"
>
</ipt-aside-button>
</nav>
</mat-nav-list>
</mat-sidenav>
<mat-toolbar class="header">
<div class="menu-container" (click)="sidenav.toggle()">
<p>Menu</p>
<div class="menu-icon"></div>
</div>
<img class="img-logo" src="./assets/logos/IPT-logo.png" alt="" />
<div class="text-container">
<span class="p1">{{ currentDay }}</span>
<span *ngIf="hour >= 0 && hour < 12" class="p2">
Hey {{ userName }}, Good morning!
</span>
<p *ngIf="hour >= 12 && hour < 18" class="p2">
Hey {{ userName }}, Good afternoon!
</p>
<p *ngIf="hour >= 18 && hour < 24" class="p2">
Hey {{ userName }}, Good evening!
</p>
</div>
<div *ngIf="!this.appUser" class="logout-container" (click)="logout()">
<p class="logout-button">Cerrar sesión</p>
<div class="photo-logout"></div>
</div>
</mat-toolbar>
`, styles: ["*{font-family:Poppins,sans-serif}@media screen and (min-width: 320px){.header{background-color:#fff;display:flex;justify-content:space-between;filter:drop-shadow(0px -1px 7px #000)}mat-sidenav{width:-moz-fit-content!important;width:fit-content!important;background-color:#1c77f7!important}.img-logo,.text-container{display:none}.mat-toolbar.mat-primary{background-color:#fff!important;color:#003d99!important;filter:drop-shadow(0px -1px 7px #000)}.logout-container{box-shadow:#11111a1a 0 8px 24px,#11111a1a 0 16px 56px,#11111a1a 0 24px 80px;height:35px;width:auto;border-radius:30px;display:flex;margin-left:10px}.logout-button{display:flex;align-items:center;color:#1c77f7;font-weight:500;font-size:16px;margin-left:20px;text-align:center;width:150px}.photo-logout{background:url(./assets/icons/exit.png);background-size:25px 25px;background-position:center;background-repeat:no-repeat}.menu-icon{background:url(./assets/icons/icon-menu.png);background-size:25px 25px;background-position:center;background-repeat:no-repeat}.menu-icon-close{background:url(./assets/icons/cruz.png);background-size:25px 25px;background-position:center;background-repeat:no-repeat;width:35px;height:35px}.menu-container{box-shadow:#11111a1a 0 8px 24px,#11111a1a 0 16px 56px,#11111a1a 0 24px 80px;height:35px;width:52.5px;width:auto;border-radius:30px;display:flex}.menu-container:hover{cursor:pointer}.menu-container p{width:85px;display:flex;align-items:center;color:#1c77f7;font-weight:500;font-size:16px;margin:0 0 0 15px;text-align:center}}@media screen and (min-width: 768px){.img-logo{display:flex;width:120px;height:60px}.text-container{border-radius:40px;height:45px;width:100%;display:flex;gap:-100px;justify-content:center;flex-direction:column;align-items:flex-start}}.p1{color:gray;margin-left:30px;font-size:13px;height:20px}.p2{margin-left:30px;font-size:14px;font-weight:600;color:#1c77f7}.flex-container-menu{font-size:18px;color:#fff!important}.mat-nav-list{padding:0}\n"] }]
}], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.BaseService }, { type: i3.StorageService }]; }, propDecorators: { department: [{
type: Input
}], setPage: [{
type: Input
}], userName: [{
type: Input
}], pageChangeEvent: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBMkQvRSxNQUFNLE9BQU8sZ0JBQWdCO0lBWTNCLFlBQ1UsV0FBd0IsRUFDeEIsV0FBd0IsRUFDeEIsY0FBOEI7UUFGOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBWDlCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV2RCxZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFDbkIsWUFBTyxHQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUNsRSxlQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLFNBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBTTFCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxLQUFLLENBQUM7UUFDdkQsSUFBSSxLQUFLLEdBQVcsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFbkQsSUFBSSxPQUFPLEdBQWlCO1lBQzFCLEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2hFLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OzZHQXpDVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixvTEFsRGpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStDVDsyRkFHVSxnQkFBZ0I7a0JBcEQ1QixTQUFTOytCQUNFLGFBQWEsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ1Q7eUpBSVEsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvYmFzZS1zZXJ2aWNlL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyVG9rZW5ScTIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy91c2VyL3VzZXItcnEubW9kZWwnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3N0b3JhZ2Utc2VydmljZS9zdG9yYWdlLXNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3VzZXItc2VydmljZS91c2VyLXNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpcHQtc2lkZW5hdicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1hdC1zaWRlbmF2ICNzaWRlbmF2IG1vZGU9XCJwdXNoXCIgPlxuICAgICAgPG1hdC10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzaWRlbmF2LnRvZ2dsZSgpXCI+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxNXB4O1wiPnt7ZGVwYXJ0bWVudH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaWNvbi1jbG9zZVwiPjwvc3Bhbj5cbiAgICAgIDwvbWF0LXRvb2xiYXI+XG5cbiAgICAgIDxtYXQtbmF2LWxpc3QgKm5nRm9yPVwibGV0IHJvdXRlIG9mIHJvdXRlc1wiPlxuICAgICAgICA8bmF2IGNsYXNzPVwiZmxleC1jb250YWluZXItbWVudVwiPlxuICAgICAgICAgIDxpcHQtYXNpZGUtYnV0dG9uXG4gICAgICAgICAgICBbYnV0dG9uQWN0aXZlXT1cInRoaXMuc2V0UGFnZSA9PT0gcm91dGUucGFnZVwiXG4gICAgICAgICAgICBbaWNvbl09XCJyb3V0ZS5pY29uXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cInJvdXRlLnRleHRcIlxuICAgICAgICAgICAgKGlzQ2xpY2tlZCk9XCJjbGlja1BhZ2Uocm91dGUucGFnZSlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNpZGVuYXYudG9nZ2xlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2lwdC1hc2lkZS1idXR0b24+XG4gICAgICAgIDwvbmF2PlxuICAgICAgPC9tYXQtbmF2LWxpc3Q+XG4gICAgPC9tYXQtc2lkZW5hdj5cblxuICAgIDxtYXQtdG9vbGJhciBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtY29udGFpbmVyXCIgKGNsaWNrKT1cInNpZGVuYXYudG9nZ2xlKClcIj5cbiAgICAgICAgPHA+TWVudTwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaWNvblwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiIHNyYz1cIi4vYXNzZXRzL2xvZ29zL0lQVC1sb2dvLnBuZ1wiIGFsdD1cIlwiIC8+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNvbnRhaW5lclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInAxXCI+e3sgY3VycmVudERheSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJob3VyID49IDAgJiYgaG91ciA8IDEyXCIgY2xhc3M9XCJwMlwiPlxuICAgICAgICAgIEhleSB7eyB1c2VyTmFtZSB9fSwgR29vZCBtb3JuaW5nIVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxwICpuZ0lmPVwiaG91ciA+PSAxMiAmJiBob3VyIDwgMThcIiBjbGFzcz1cInAyXCI+XG4gICAgICAgICAgSGV5IHt7IHVzZXJOYW1lIH19LCBHb29kIGFmdGVybm9vbiFcbiAgICAgICAgPC9wPlxuICAgICAgICA8cCAqbmdJZj1cImhvdXIgPj0gMTggJiYgaG91ciA8IDI0XCIgY2xhc3M9XCJwMlwiPlxuICAgICAgICAgIEhleSB7eyB1c2VyTmFtZSB9fSwgR29vZCBldmVuaW5nIVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cIiF0aGlzLmFwcFVzZXJcIiBjbGFzcz1cImxvZ291dC1jb250YWluZXJcIiAoY2xpY2spPVwibG9nb3V0KClcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJsb2dvdXQtYnV0dG9uXCI+Q2VycmFyIHNlc2nDs248L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwaG90by1sb2dvdXRcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LXRvb2xiYXI+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3NpZGVuYXYuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNpZGVuYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBkZXBhcnRtZW50ITogc3RyaW5nO1xuICBASW5wdXQoKSBzZXRQYWdlITogc3RyaW5nO1xuICBASW5wdXQoKSB1c2VyTmFtZSE6IHN0cmluZztcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGFwcFVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcm91dGVzOiBhbnlbXSA9IFtdO1xuICBvcHRpb25zOiBhbnkgPSB7IHdlZWtkYXk6ICdsb25nJywgbW9udGg6ICdsb25nJywgZGF5OiAnbnVtZXJpYycgfTtcbiAgY3VycmVudERheSA9IG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1FTicsIHRoaXMub3B0aW9ucyk7XG4gIGhvdXIgPSBuZXcgRGF0ZSgpLmdldEhvdXJzKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNlU2VydmljZTogQmFzZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGxldCB1c2VyID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRDdXJyZW50VXNlcigpPy50b2tlbjtcbiAgICBsZXQgdG9rZW46IHN0cmluZyA9IHVzZXIgPT09IHVuZGVmaW5lZCA/ICcnIDogdXNlcjtcblxuICAgIGxldCByZXF1ZXN0OiBVc2VyVG9rZW5ScTIgPSB7XG4gICAgICB0b2tlbjogdG9rZW4sXG4gICAgICBkZXBhcnRtZW50OiB0aGlzLmRlcGFydG1lbnRcbiAgICB9O1xuXG4gICAgdGhpcy51c2VyU2VydmljZS5nZXRSb3V0ZXNGb3JSb2xlKHJlcXVlc3QpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMucm91dGVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcblxuICAgIHRoaXMuYXBwVXNlciA9IHRoaXMuYmFzZVNlcnZpY2UuaXNBbkFwcFVzZXIoKTtcbiAgfVxuXG4gIGNsaWNrUGFnZShldmVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5wYWdlQ2hhbmdlRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBsb2dvdXQoKSB7XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5sb2dvdXQoKTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2VFdmVudC5lbWl0KCdsb2dvdXQnKTtcbiAgfVxufVxuIl19