info-library 2.10.78 → 2.10.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -258,6 +258,7 @@ export class InfoTopbarComponent {
258
258
  * @return {?}
259
259
  */
260
260
  logout() {
261
+ alert('logout');
261
262
  this._dialog.YesOrNo('DesejaRealmenteSair').subscribe((/**
262
263
  * @param {?} r
263
264
  * @return {?}
@@ -271,7 +272,7 @@ export class InfoTopbarComponent {
271
272
  InfoTopbarComponent.decorators = [
272
273
  { type: Component, args: [{
273
274
  selector: 'info-topbar',
274
- template: "<ng-container *ngIf=\"_platform.Config.ux >= 3\">\r\n <div class=\"site-navbar\">\r\n <a class=\"logo\" >\r\n <i class=\"logo-img\"></i>\r\n <i class=\"logo-img-resp\"></i>\r\n </a>\r\n \r\n <div class=\"nav-items\">\r\n <div class=\"nav-item usuario-logado\">\r\n <dl (click)=\"navigate(profileurl)\">\r\n <dt>{{ _session.Perfil }}</dt>\r\n <dd>{{ _session.Usuario }}</dd>\r\n </dl>\r\n </div>\r\n \r\n <div class=\"nav-item selecao-empresa\" [ngClass]=\"{ 'opened' : topMenu.empresa }\">\r\n <dl (click)=\"open('empresa')\">\r\n <dt>{{ 'Empresa' | translate }}</dt>\r\n <dd>{{ _session.Empresa }}</dd>\r\n </dl>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Empresas' | translate }}</h4>\r\n \r\n <ul class=\"empresas\">\r\n <li *ngFor=\"let company of _session.Empresas\" >\r\n <a (click)=\"setCompany(company); divModal.click();\">{{ company.Nome }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"fastsearchform\">\r\n <button mat-icon-button (click)=\"openFastSearch()\" [matTooltip]=\"fastsearchtitle | translate\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n \r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened' : topMenu.notificacao }\" *ngIf=\"notificationapi\">\r\n <button mat-icon-button (click)=\"setNotificationStatus(true, false, false);open('notificacao')\" [matTooltip]=\"'Notificacoes' | translate\"><mat-icon>notifications_none</mat-icon>\r\n <span class=\"badge\" *ngIf=\"notifications.Count > 0\">{{ notifications.Count }}</span>\r\n </button>\r\n \r\n <div class=\"menu-lateral-direita\" >\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Notificacoes' | translate }}</h4>\r\n \r\n <ul>\r\n <li *ngIf=\"notifications.Itens.length == 0\">\r\n <a style=\"cursor: default;\">\r\n <mat-icon>notifications</mat-icon>\r\n <div class=\"content\">\r\n <span>{{ 'TNotificacoesNenhuma' | translate }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n \r\n <ng-container *ngIf=\"notifications.Itens.length > 0\">\r\n <li *ngFor=\"let item of notifications.Itens\">\r\n <a (click)=\"navigate(item.Url);close()\">\r\n <dl>\r\n <dt>{{ 'Dia' | translate }} {{ item.Date }}</dt>\r\n <dd [innerHtml]=\"item.Description | translate\"></dd>\r\n </dl>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <!-- <div class=\"nav-item\">\r\n <button mat-icon-button (click)=\"alternarModo()\" [matTooltip]=\"'AlternarModo' | translate\"><mat-icon>brightness_6</mat-icon></button>\r\n </div> -->\r\n \r\n <div class=\"nav-item selecao-tema\" [ngClass]=\"{ 'opened': topMenu.tema }\" *ngIf=\"!prodution && themes.length > 0\">\r\n <button mat-icon-button (click)=\"open('tema')\" [matTooltip]=\"'Tema' | translate\"><mat-icon>invert_colors</mat-icon></button>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Temas' | translate }}</h4>\r\n \r\n <ul class=\"temas\">\r\n <li *ngFor=\"let theme of themes\">\r\n <a (click)=\"setTheme(theme.name); divModal.click();\"> {{ theme.description | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"_platform.Config.enabledPrime\">\r\n <button mat-icon-button [matTooltip]=\"(_platform.ModoPrime ? 'ModoPadrao' : 'Prime') | translate\" (click)=\"toggleMode()\"><mat-icon>brightness_6</mat-icon></button>\r\n </div>\r\n \r\n <div class=\"nav-item selecao-idioma\" [ngClass]=\"{ 'opened': topMenu.idioma }\" *ngIf=\"languages.length > 0\">\r\n <button mat-icon-button (click)=\"open('idioma')\" [matTooltip]=\"'Idioma' | translate\"><mat-icon>public</mat-icon></button>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Idiomas' | translate }}</h4>\r\n \r\n <ul class=\"idiomas\">\r\n <li *ngFor=\"let lang of languages\">\r\n <a (click)=\"setLanguage(lang.lang); divModal.click();\">{{ lang.name | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\">\r\n <button mat-icon-button [matTooltip]=\"'Sair' | translate\" (click)=\"logout()\"><mat-icon>power_settings_new</mat-icon></button>\r\n </div>\r\n \r\n <div class=\"items-overlay\" (click)=\"close()\" #divModal></div>\r\n </div>\r\n \r\n <div class=\"navbar-button\" [ngClass]=\"{ 'open' : opened }\" (click)=\"openSidebar()\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <sub>{{ 'Menu' | translate }}</sub>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"_platform.Config.ux <= 2\">\r\n <div class=\"site-navbar\">\r\n <div class=\"sessao-clone text-lightgray\" *ngIf=\"_session.Clone\">\r\n <div><label>({{ 'ModoClone' | translate }})</label></div>\r\n </div>\r\n\r\n <div class=\"navbar-button\" [ngClass]=\"{ 'open' : opened }\" (click)=\"openSidebar()\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n\r\n <h1 id=\"page-title\" class=\"page-title\" *ngIf=\"_platform.PaginaAtiva\">\r\n <mat-icon>{{ _platform.PaginaAtiva.Icone }}</mat-icon> {{ _platform.PaginaAtiva.Titulo | translate }}\r\n </h1>\r\n\r\n <div class=\"nav-items\">\r\n <div class=\"nav-item user-profile\" [ngClass]=\"{ 'opened' : topMenu.empresa }\">\r\n <button mat-button (click)=\"open('empresa')\">\r\n <mat-icon>fingerprint</mat-icon>\r\n <div class=\"name\">\r\n <label>{{ \"Empresa\" | translate }}</label>\r\n <span>{{ _session.Empresa }}</span>\r\n </div>\r\n </button>\r\n\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Empresa' | translate }}</h4>\r\n\r\n <ul class=\"company\">\r\n <li *ngFor=\"let company of _session.Empresas\" >\r\n <a (click)=\"setCompany(company); divModal.click();\">{{ company.Nome }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened' : topMenu.notificacao }\" *ngIf=\"notificationapi\">\r\n <button mat-icon-button (click)=\"setNotificationStatus(true, false, false);open('notificacao')\" [matTooltip]=\"'Notificacoes' | translate\"><mat-icon>notifications_none</mat-icon>\r\n <span class=\"badge\" *ngIf=\"notifications.Count > 0\">{{ notifications.Count }}</span>\r\n </button>\r\n\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Notificacoes' | translate }}</h4>\r\n\r\n <ul>\r\n <li *ngIf=\"notifications.Itens.length == 0\">\r\n <a style=\"cursor: default;\">\r\n <mat-icon>notifications_off</mat-icon>\r\n <div class=\"content\">\r\n <span>{{ 'TNotificacoesNenhuma' | translate }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n\r\n <ng-container *ngIf=\"notifications.Itens.length > 0\">\r\n <li *ngFor=\"let item of notifications.Itens\">\r\n <a (click)=\"navigate(item.Url);close()\">\r\n <mat-icon>{{ item.Icon }}</mat-icon>\r\n <div class=\"content\">\r\n <span class=\"desc\" [innerHtml]=\"item.Description | translate\"></span>\r\n <span class=\"date\">{{ item.Date }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened': topMenu.idioma }\" *ngIf=\"languages.length > 0\">\r\n <button mat-icon-button (click)=\"open('idioma')\" [matTooltip]=\"'Idioma' | translate\"><mat-icon>public</mat-icon></button>\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Idioma' | translate }}</h4>\r\n <ul class=\"languages\">\r\n <li *ngFor=\"let lang of languages\">\r\n <a (click)=\"setLanguage(lang.lang); divModal.click();\">{{ lang.name | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened': topMenu.tema }\" *ngIf=\"!prodution && themes.length > 0\">\r\n <button mat-icon-button (click)=\"open('tema')\" [matTooltip]=\"'Tema' | translate\"><mat-icon>invert_colors</mat-icon></button>\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Temas' | translate }}</h4>\r\n <ul class=\"themes\">\r\n <li *ngFor=\"let theme of themes\">\r\n <a (click)=\"setTheme(theme.name); divModal.click();\"> {{ theme.description | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"fastsearchform\">\r\n <button mat-icon-button (click)=\"openFastSearch()\" [matTooltip]=\"fastsearchtitle | translate\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"profileurl != ''\">\r\n <button mat-icon-button [matTooltip]=\"'MeuPerfil' | translate\" [routerLink]=\"profileurl\"><mat-icon>person</mat-icon></button>\r\n </div>\r\n\r\n <div class=\"nav-item\">\r\n <button mat-icon-button [matTooltip]=\"'Sair' | translate\" (click)=\"logout()\"><mat-icon>power_settings_new</mat-icon></button>\r\n </div>\r\n\r\n <div class=\"items-overlay\" (click)=\"close()\" #divModal></div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<section class=\"loading-bar\" *ngIf=\"loading\"><mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar></section>\r\n<div class=\"block\" *ngIf=\"loading\"></div>",
275
+ template: "<ng-container *ngIf=\"_platform.Config.ux >= 3\">\r\n <div class=\"site-navbar\">\r\n <a class=\"logo\" >\r\n <i class=\"logo-img\"></i>\r\n <i class=\"logo-img-resp\"></i>\r\n </a>\r\n \r\n <div class=\"nav-items\">\r\n <div class=\"nav-item usuario-logado\">\r\n <dl (click)=\"navigate(profileurl)\">\r\n <dt>{{ _session.Perfil }}</dt>\r\n <dd>{{ _session.Usuario }}</dd>\r\n </dl>\r\n </div>\r\n \r\n <div class=\"nav-item selecao-empresa\" [ngClass]=\"{ 'opened' : topMenu.empresa }\">\r\n <dl (click)=\"open('empresa')\">\r\n <dt>{{ 'Empresa' | translate }}</dt>\r\n <dd>{{ _session.Empresa }}</dd>\r\n </dl>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Empresas' | translate }}</h4>\r\n \r\n <ul class=\"empresas\">\r\n <li *ngFor=\"let company of _session.Empresas\" >\r\n <a (click)=\"setCompany(company); divModal.click();\">{{ company.Nome }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"fastsearchform\">\r\n <button mat-icon-button (click)=\"openFastSearch()\" [matTooltip]=\"fastsearchtitle | translate\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n \r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened' : topMenu.notificacao }\" *ngIf=\"notificationapi\">\r\n <button mat-icon-button (click)=\"setNotificationStatus(true, false, false);open('notificacao')\" [matTooltip]=\"'Notificacoes' | translate\"><mat-icon>notifications_none</mat-icon>\r\n <span class=\"badge\" *ngIf=\"notifications.Count > 0\">{{ notifications.Count }}</span>\r\n </button>\r\n \r\n <div class=\"menu-lateral-direita\" >\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Notificacoes' | translate }}</h4>\r\n \r\n <ul>\r\n <li *ngIf=\"notifications.Itens.length == 0\">\r\n <a style=\"cursor: default;\">\r\n <mat-icon>notifications</mat-icon>\r\n <div class=\"content\">\r\n <span>{{ 'TNotificacoesNenhuma' | translate }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n \r\n <ng-container *ngIf=\"notifications.Itens.length > 0\">\r\n <li *ngFor=\"let item of notifications.Itens\">\r\n <a (click)=\"navigate(item.Url);close()\">\r\n <dl>\r\n <dt>{{ 'Dia' | translate }} {{ item.Date }}</dt>\r\n <dd [innerHtml]=\"item.Description | translate\"></dd>\r\n </dl>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <!-- <div class=\"nav-item\">\r\n <button mat-icon-button (click)=\"alternarModo()\" [matTooltip]=\"'AlternarModo' | translate\"><mat-icon>brightness_6</mat-icon></button>\r\n </div> -->\r\n \r\n <div class=\"nav-item selecao-tema\" [ngClass]=\"{ 'opened': topMenu.tema }\" *ngIf=\"!prodution && themes.length > 0\">\r\n <button mat-icon-button (click)=\"open('tema')\" [matTooltip]=\"'Tema' | translate\"><mat-icon>invert_colors</mat-icon></button>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Temas' | translate }}</h4>\r\n \r\n <ul class=\"temas\">\r\n <li *ngFor=\"let theme of themes\">\r\n <a (click)=\"setTheme(theme.name); divModal.click();\"> {{ theme.description | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"_platform.Config.enabledPrime\">\r\n <button mat-icon-button [matTooltip]=\"(_platform.ModoPrime ? 'ModoPadrao' : 'Prime') | translate\" (click)=\"toggleMode()\"><mat-icon>brightness_6</mat-icon></button>\r\n </div>\r\n \r\n <div class=\"nav-item selecao-idioma\" [ngClass]=\"{ 'opened': topMenu.idioma }\" *ngIf=\"languages.length > 0\">\r\n <button mat-icon-button (click)=\"open('idioma')\" [matTooltip]=\"'Idioma' | translate\"><mat-icon>public</mat-icon></button>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Idiomas' | translate }}</h4>\r\n \r\n <ul class=\"idiomas\">\r\n <li *ngFor=\"let lang of languages\">\r\n <a (click)=\"setLanguage(lang.lang); divModal.click();\">{{ lang.name | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\">\r\n <button mat-icon-button [matTooltip]=\"'Sair' | translate\" (click)=\"logout()\"><mat-icon>warning</mat-icon></button>\r\n </div>\r\n \r\n <div class=\"items-overlay\" (click)=\"close()\" #divModal></div>\r\n </div>\r\n \r\n <div class=\"navbar-button\" [ngClass]=\"{ 'open' : opened }\" (click)=\"openSidebar()\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <sub>{{ 'Menu' | translate }}</sub>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"_platform.Config.ux <= 2\">\r\n <div class=\"site-navbar\">\r\n <div class=\"sessao-clone text-lightgray\" *ngIf=\"_session.Clone\">\r\n <div><label>({{ 'ModoClone' | translate }})</label></div>\r\n </div>\r\n\r\n <div class=\"navbar-button\" [ngClass]=\"{ 'open' : opened }\" (click)=\"openSidebar()\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n\r\n <h1 id=\"page-title\" class=\"page-title\" *ngIf=\"_platform.PaginaAtiva\">\r\n <mat-icon>{{ _platform.PaginaAtiva.Icone }}</mat-icon> {{ _platform.PaginaAtiva.Titulo | translate }}\r\n </h1>\r\n\r\n <div class=\"nav-items\">\r\n <div class=\"nav-item user-profile\" [ngClass]=\"{ 'opened' : topMenu.empresa }\">\r\n <button mat-button (click)=\"open('empresa')\">\r\n <mat-icon>fingerprint</mat-icon>\r\n <div class=\"name\">\r\n <label>{{ \"Empresa\" | translate }}</label>\r\n <span>{{ _session.Empresa }}</span>\r\n </div>\r\n </button>\r\n\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Empresa' | translate }}</h4>\r\n\r\n <ul class=\"company\">\r\n <li *ngFor=\"let company of _session.Empresas\" >\r\n <a (click)=\"setCompany(company); divModal.click();\">{{ company.Nome }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened' : topMenu.notificacao }\" *ngIf=\"notificationapi\">\r\n <button mat-icon-button (click)=\"setNotificationStatus(true, false, false);open('notificacao')\" [matTooltip]=\"'Notificacoes' | translate\"><mat-icon>notifications_none</mat-icon>\r\n <span class=\"badge\" *ngIf=\"notifications.Count > 0\">{{ notifications.Count }}</span>\r\n </button>\r\n\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Notificacoes' | translate }}</h4>\r\n\r\n <ul>\r\n <li *ngIf=\"notifications.Itens.length == 0\">\r\n <a style=\"cursor: default;\">\r\n <mat-icon>notifications_off</mat-icon>\r\n <div class=\"content\">\r\n <span>{{ 'TNotificacoesNenhuma' | translate }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n\r\n <ng-container *ngIf=\"notifications.Itens.length > 0\">\r\n <li *ngFor=\"let item of notifications.Itens\">\r\n <a (click)=\"navigate(item.Url);close()\">\r\n <mat-icon>{{ item.Icon }}</mat-icon>\r\n <div class=\"content\">\r\n <span class=\"desc\" [innerHtml]=\"item.Description | translate\"></span>\r\n <span class=\"date\">{{ item.Date }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened': topMenu.idioma }\" *ngIf=\"languages.length > 0\">\r\n <button mat-icon-button (click)=\"open('idioma')\" [matTooltip]=\"'Idioma' | translate\"><mat-icon>public</mat-icon></button>\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Idioma' | translate }}</h4>\r\n <ul class=\"languages\">\r\n <li *ngFor=\"let lang of languages\">\r\n <a (click)=\"setLanguage(lang.lang); divModal.click();\">{{ lang.name | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened': topMenu.tema }\" *ngIf=\"!prodution && themes.length > 0\">\r\n <button mat-icon-button (click)=\"open('tema')\" [matTooltip]=\"'Tema' | translate\"><mat-icon>invert_colors</mat-icon></button>\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Temas' | translate }}</h4>\r\n <ul class=\"themes\">\r\n <li *ngFor=\"let theme of themes\">\r\n <a (click)=\"setTheme(theme.name); divModal.click();\"> {{ theme.description | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"fastsearchform\">\r\n <button mat-icon-button (click)=\"openFastSearch()\" [matTooltip]=\"fastsearchtitle | translate\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"profileurl != ''\">\r\n <button mat-icon-button [matTooltip]=\"'MeuPerfil' | translate\" [routerLink]=\"profileurl\"><mat-icon>person</mat-icon></button>\r\n </div>\r\n\r\n <div class=\"nav-item\">\r\n <button mat-icon-button [matTooltip]=\"'Sair' | translate\" (click)=\"logout()\"><mat-icon>warning</mat-icon></button>\r\n </div>\r\n\r\n <div class=\"items-overlay\" (click)=\"close()\" #divModal></div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<section class=\"loading-bar\" *ngIf=\"loading\"><mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar></section>\r\n<div class=\"block\" *ngIf=\"loading\"></div>",
275
276
  styles: [":host.topmenu{border-bottom-width:0!important;box-shadow:none!important}:host.uxc3{display:block;height:85px;left:0;position:fixed;right:0;top:0;transition:left .2s ease-in-out;z-index:9998}@media screen and (max-width:991px){:host.uxc3{left:0}:host.uxc3 .nav-items{width:100%}:host.uxc3 .logo{position:absolute;top:17px}:host.uxc3 .logo .logo-img{display:none!important}:host.uxc3 .logo .logo-img-resp{display:block!important;height:45px!important}:host.uxc3 .usuario-logado{border-right:none!important;left:-100%;margin:0!important;padding-left:25px!important;padding-top:15px!important;position:absolute;top:70px!important;transition:left .2s ease-in-out;width:calc(100% + 6px)}:host.uxc3 .usuario-logado.menu-aberto{left:0}:host.uxc3 .usuario-logado dl{text-align:left!important}:host.uxc3 .usuario-logado dl dt{display:inline-block;font-size:14px}:host.uxc3 .usuario-logado dl dd{display:inline-block;margin-right:5px;padding-right:20px;position:relative}:host.uxc3 .usuario-logado dl dd:after{content:\"-\";height:10px;position:absolute;right:0;top:2px;width:10px}:host.uxc3 .selecao-empresa{left:-100%;margin:0!important;padding:5px 15px 6px 25px;position:absolute;top:115px!important;transition:left .2s ease-in-out;width:calc(100% + 6px)}:host.uxc3 .selecao-empresa.menu-aberto{left:0}:host.uxc3 .selecao-empresa button,:host.uxc3 .selecao-empresa dl{width:100%!important}}:host.uxc3 .site-navbar{align-items:center;display:flex;flex-wrap:nowrap;height:100%;justify-content:space-between;padding:0 22px}@media screen and (max-width:991px){:host.uxc3 .site-navbar{flex-wrap:wrap}}:host.uxc3 .site-navbar .logo{display:block;height:60px;width:500px}:host.uxc3 .site-navbar .logo .logo-img{display:block;height:100%;width:100%}:host.uxc3 .site-navbar .logo .logo-img-resp{display:none;height:100%;width:100%}:host.uxc3 .site-navbar .navbar-button{cursor:pointer;display:none;height:24px;left:70px;margin:0;position:absolute;top:20px;transform:rotate(0deg);width:35px}@media screen and (max-width:991px){:host.uxc3 .site-navbar .navbar-button{display:block}}:host.uxc3 .site-navbar .navbar-button sub{bottom:-10px;position:absolute;text-transform:uppercase}:host.uxc3 .site-navbar .navbar-button span{display:block;height:3px;opacity:1;position:absolute;top:10px;transform:rotate(0deg);transition:.25s ease-in-out;width:50%}:host.uxc3 .site-navbar .navbar-button span:nth-child(2n){left:50%}:host.uxc3 .site-navbar .navbar-button span:nth-child(odd){left:0}:host.uxc3 .site-navbar .navbar-button span:first-child,:host.uxc3 .site-navbar .navbar-button span:nth-child(2){top:0}:host.uxc3 .site-navbar .navbar-button span:nth-child(3),:host.uxc3 .site-navbar .navbar-button span:nth-child(4){top:10px}:host.uxc3 .site-navbar .navbar-button span:nth-child(5),:host.uxc3 .site-navbar .navbar-button span:nth-child(6){top:20px}:host.uxc3 .site-navbar .navbar-button.open span:first-child,:host.uxc3 .site-navbar .navbar-button.open span:nth-child(6){transform:rotate(45deg)}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(2),:host.uxc3 .site-navbar .navbar-button.open span:nth-child(5){transform:rotate(-45deg)}:host.uxc3 .site-navbar .navbar-button.open span:first-child{left:2px;top:6px}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(2){left:calc(50% - 7px);top:6px}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(3){left:-50%;opacity:0}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(4){left:100%;opacity:0}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(5){left:2px;top:15px}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(6){left:calc(50% - 7px);top:15px}:host.uxc3 dl{line-height:20px;text-transform:none;transition:border .2s ease-in-out}:host.uxc3 dl dt{font-size:10px;font-weight:500;transition:color .2s ease-in-out}:host.uxc3 dl dd{font-size:14px;font-weight:600;margin-bottom:0;position:relative;top:0;transition:color .2s ease-in-out}:host.uxc3 .selecao-empresa,:host.uxc3 .usuario-logado{cursor:pointer;padding:5px 20px 5px 0;top:-1px}:host.uxc3 .selecao-empresa dl,:host.uxc3 .usuario-logado dl{margin:0;top:5px}:host.uxc3 .selecao-empresa dl mat-icon,:host.uxc3 .usuario-logado dl mat-icon{font-size:22px;position:absolute;right:0;text-align:center;top:17px}:host.uxc3 .usuario-logado{margin:0!important;padding-left:10px}:host.uxc3 .usuario-logado dl{text-align:right}:host.uxc3 .usuario-logado dl mat-icon{left:0}:host.uxc3 .selecao-empresa{padding-left:20px}:host.uxc3 .nav-items{display:block;height:100%;margin:0 -5px;text-align:right}@media screen and (min-width:544px){:host.uxc3 .nav-items{width:100%}}@media screen and (max-width:991px){:host.uxc3 .nav-items{display:block;position:absolute;right:10px;top:0}}:host.uxc3 .nav-items .nav-item{align-items:center;display:inline-block;margin:15px 3px 0 0;text-align:left}@media screen and (min-width:544px){:host.uxc3 .nav-items .nav-item{position:relative}}:host.uxc3 .nav-items .nav-item .mat-button,:host.uxc3 .nav-items .nav-item .mat-icon-button{cursor:pointer;min-width:40px;padding:0;position:relative;top:-14px;transition:color .2s ease-in-out}:host.uxc3 .nav-items .nav-item .mat-button .mat-button-wrapper,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-wrapper{display:flex;height:100%;padding:5px;width:100%}:host.uxc3 .nav-items .nav-item .mat-button .mat-button-wrapper .mat-icon,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-wrapper .mat-icon{font-size:24px;height:auto!important;line-height:auto!important;vertical-align:middle;width:auto!important}:host.uxc3 .nav-items .nav-item .mat-button .mat-button-wrapper .mat-icon .marker,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-wrapper .mat-icon .marker{border-radius:50%;height:6px;position:absolute;right:0;top:0;width:6px}:host.uxc3 .nav-items .nav-item .mat-button .mat-button-wrapper .badge,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-wrapper .badge{background:#af1b11;border-radius:8px;color:#fff;font-size:10px;line-height:16px;padding:0 5px;position:absolute;right:0;top:0}:host.uxc3 .nav-items .nav-item .mat-button .mat-button-focus-overlay,:host.uxc3 .nav-items .nav-item .mat-button .mat-button-ripple,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-focus-overlay,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-ripple{display:none}:host.uxc3 .nav-items .nav-item .menu-lateral-direita{display:none;height:100%;padding:0;position:fixed;right:0;top:0;width:420px;z-index:9999}@media screen and (max-width:991px){:host.uxc3 .nav-items .nav-item .menu-lateral-direita{left:auto;margin-left:0;right:0}}@media screen and (max-width:543px){:host.uxc3 .nav-items .nav-item .menu-lateral-direita{left:0;margin-left:0;width:100%}}:host.uxc3 .nav-items .nav-item .menu-lateral-direita:before{border:10px solid transparent;bottom:100%;content:\"\";left:50%;margin:0 0 0 -10px;position:absolute}@media screen and (max-width:991px){:host.uxc3 .nav-items .nav-item .menu-lateral-direita:before{left:100%;margin-left:-34px}}@media screen and (max-width:543px){:host.uxc3 .nav-items .nav-item .menu-lateral-direita:before{display:none}}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>.fechar{cursor:pointer;font-size:28px;opacity:.8;position:absolute;right:30px;top:30px}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>.fechar:hover{opacity:1}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>h4{font-size:24px;font-weight:500;margin:30px 0 30px 38px}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul{border-radius:0 0 4px 4px;height:calc(100% - 170px);list-style-type:none;margin:0;overflow-y:auto;padding:0}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li:hover{background:rgba(0,0,0,.05)}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li.disabled>a{cursor:default!important;opacity:.4}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li:last-child{border-bottom:0}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li dl{line-height:20px;margin-bottom:0;padding:5px 0}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li dl dt{font-size:13px;font-weight:600;margin-bottom:5px}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li dl dd{font-size:14px;font-weight:500}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li>a{align-items:center;cursor:pointer;display:flex;font-size:14px;font-weight:500;padding:10px 40px!important;padding:11px;transition:background .2s ease-in-out}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li>a .mat-icon{background:hsla(0,0%,100%,.1);border-radius:50%;font-size:22px;height:auto;margin-right:11px;padding:7px;width:auto}:host.uxc3 .nav-items .nav-item.opened .lista-empresas,:host.uxc3 .nav-items .nav-item.opened .menu-lateral-direita{display:block}:host.uxc3 .nav-items .nav-item.opened~.items-overlay{opacity:.5;transition:opacity .2s ease-in-out 0s,visibility 0s ease-in-out 0s;visibility:visible}:host.uxc3 .nav-items .items-overlay{height:100%;left:0;opacity:0;position:fixed;top:0;transition:opacity .2s ease-in-out 0s,visibility 0s ease-in-out .2s;visibility:hidden;width:100%;z-index:9998}@media screen and (max-width:991px){:host.uxc3{width:100%}}:host.uxc2{background:#fff;border-bottom:1px solid #e4e9f0;display:block;height:70px;left:240px;position:fixed;right:0;top:0;z-index:9998}@media (max-width:991px){:host.uxc2{left:0}}:host.uxc2 .sessao-clone{background-color:#a80707;padding:8px;position:absolute;top:0;z-index:1}:host.uxc2 .sessao-clone .mat-icon-button{font-size:10px}:host.uxc2 .site-navbar{align-items:center;display:flex;flex-wrap:nowrap;height:100%;justify-content:space-between;padding:0 22px}@media (max-width:991px){:host.uxc2 .site-navbar{flex-wrap:wrap}}:host.uxc2 .site-navbar .navbar-button{cursor:pointer;display:none;height:24px;margin:0;position:relative;transform:rotate(0deg);width:30px}@media (max-width:991px){:host.uxc2 .site-navbar .navbar-button{display:block}}:host.uxc2 .site-navbar .navbar-button span{display:block;height:3px;opacity:1;position:absolute;transform:rotate(0deg);transition:.25s ease-in-out;width:50%}:host.uxc2 .site-navbar .navbar-button span:nth-child(2n){left:50%}:host.uxc2 .site-navbar .navbar-button span:nth-child(odd){left:0}:host.uxc2 .site-navbar .navbar-button span:first-child,:host.uxc2 .site-navbar .navbar-button span:nth-child(2){top:0}:host.uxc2 .site-navbar .navbar-button span:nth-child(3),:host.uxc2 .site-navbar .navbar-button span:nth-child(4){top:10px}:host.uxc2 .site-navbar .navbar-button span:nth-child(5),:host.uxc2 .site-navbar .navbar-button span:nth-child(6){top:20px}:host.uxc2 .site-navbar .navbar-button.open span:first-child,:host.uxc2 .site-navbar .navbar-button.open span:nth-child(6){transform:rotate(45deg)}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(2),:host.uxc2 .site-navbar .navbar-button.open span:nth-child(5){transform:rotate(-45deg)}:host.uxc2 .site-navbar .navbar-button.open span:first-child{left:3px;top:6px}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(2){left:calc(50% - 3px);top:6px}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(3){left:-50%;opacity:0}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(4){left:100%;opacity:0}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(5){left:3px;top:15px}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(6){left:calc(50% - 3px);top:15px}:host.uxc2 .page-title{font-size:1.4rem;font-weight:400;line-height:1;margin:0;width:100%}:host.uxc2 .page-title mat-icon{font-size:1.1em;left:0;top:4px}@media (max-width:991px){:host.uxc2 .page-title{display:none}}:host.uxc2 .nav-items{display:block;height:100%;margin:0 -5px;text-align:right}@media (min-width:544px){:host.uxc2 .nav-items{width:100%}}:host.uxc2 .nav-items .nav-item{align-items:center;display:inline-block;margin:15px 3px 0 0;text-align:left}@media (min-width:544px){:host.uxc2 .nav-items .nav-item{position:relative}}:host.uxc2 .nav-items .nav-item /deep/ .mat-button,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button{cursor:pointer;min-width:40px;padding:0;position:relative;transition:color .2s ease-in-out}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper{display:flex;height:100%;padding:5px;width:100%}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .mat-icon,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .mat-icon{font-size:22px;height:30px;line-height:30px;vertical-align:top;width:30px}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .mat-icon .marker,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .mat-icon .marker{border-radius:50%;height:6px;position:absolute;right:0;top:0;width:6px}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .badge,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .badge{background:#af1b11;border-radius:8px;color:#fff;font-size:10px;line-height:16px;padding:0 5px;position:absolute;right:0;top:0}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .avatar,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .avatar{border-radius:50%;height:40px;overflow:hidden;width:40px}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .name,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .name{font-size:12px;line-height:19px;margin-top:-3px;padding-left:10px;text-align:left;top:10px;white-space:nowrap}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .name label,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .name label{display:block;font-size:10px;line-height:12px;margin:0}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .name span,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .name span{top:-3px}@media (max-width:991px){:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .name,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .name{display:none}}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-focus-overlay,:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-ripple,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-focus-overlay,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-ripple{display:none}:host.uxc2 .nav-items .nav-item .dropdown-menu{box-shadow:0 5px 10px 2px rgba(0,0,0,.25);display:none;left:50%;margin:0 0 0 -150px;padding:0;position:absolute;top:100%;width:300px;z-index:9999}@media (max-width:991px){:host.uxc2 .nav-items .nav-item .dropdown-menu{left:auto;margin-left:0;right:0}}@media (max-width:543px){:host.uxc2 .nav-items .nav-item .dropdown-menu{left:0;margin-left:0;width:100%}}:host.uxc2 .nav-items .nav-item .dropdown-menu.calendar{left:-34%}:host.uxc2 .nav-items .nav-item .dropdown-menu.calendar:before{left:60%}:host.uxc2 .nav-items .nav-item .dropdown-menu:before{border:10px solid transparent;bottom:100%;content:\"\";left:50%;margin:0 0 0 -10px;position:absolute}@media (max-width:991px){:host.uxc2 .nav-items .nav-item .dropdown-menu:before{left:100%;margin-left:-34px}}@media (max-width:543px){:host.uxc2 .nav-items .nav-item .dropdown-menu:before{display:none}}:host.uxc2 .nav-items .nav-item .dropdown-menu .company a,:host.uxc2 .nav-items .nav-item .dropdown-menu .languages a,:host.uxc2 .nav-items .nav-item .dropdown-menu .themesa a{cursor:pointer!important}:host.uxc2 .nav-items .nav-item .dropdown-menu .themes{max-height:500px}:host.uxc2 .nav-items .nav-item .dropdown-menu .pesquisa-rapida input{color:#fff}:host.uxc2 .nav-items .nav-item .dropdown-menu .menu-footer,:host.uxc2 .nav-items .nav-item .dropdown-menu .menu-title{margin:0;padding:11px;text-align:center}:host.uxc2 .nav-items .nav-item .dropdown-menu .menu-title{border-bottom:1px solid hsla(0,0%,100%,.1);color:#fff;font-size:16px;line-height:1.3}:host.uxc2 .nav-items .nav-item .dropdown-menu .menu-footer a{color:#fff}:host.uxc2 .nav-items .nav-item .dropdown-menu .menu-footer a:hover{color:hsla(0,0%,100%,.8)}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul{list-style-type:none;margin:0;max-height:241px;overflow:auto;padding:0}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li{border-bottom:1px solid hsla(0,0%,100%,.05)}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li.disabled>a{cursor:default!important;opacity:.4}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li.disabled>a:hover{background:inherit!important}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li:last-child{border-bottom:0}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a{align-items:center;color:#fff;cursor:pointer;display:flex;padding:11px;transition:background .2s ease-in-out}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .mat-icon{background:hsla(0,0%,100%,.1);border-radius:50%;font-size:22px;height:auto;margin-right:11px;padding:7px;width:auto}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .avatar{border-radius:50%;height:40px;margin-right:11px;width:40px}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .content{font-size:.85rem}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .content .desc{display:block}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .content .date{display:block;font-size:.75rem;font-style:italic;margin-top:4px;opacity:.6}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .content .meta{align-items:flex-end;display:flex;justify-content:space-between;line-height:1.3;margin-bottom:4px}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .content .meta .date{margin:0 0 0 11px}:host.uxc2 .nav-items .nav-item .dropdown-menu.mini-menu{left:auto;right:0;width:220px}@media (max-width:543px){:host.uxc2 .nav-items .nav-item .dropdown-menu.mini-menu{width:100%}}:host.uxc2 .nav-items .nav-item .dropdown-menu.mini-menu:before{display:none}:host.uxc2 .nav-items .nav-item .dropdown-menu.mini-menu>ul>li>a{cursor:pointer;padding-bottom:8px;padding-top:8px}:host.uxc2 .nav-items .nav-item .dropdown-menu.mini-menu>ul>li>a .fa{margin-right:11px;min-width:15px}:host.uxc2 .nav-items .nav-item.opened .dropdown-menu{display:block}:host.uxc2 .nav-items .nav-item.opened~.items-overlay{opacity:1;transition:opacity .2s ease-in-out 0s,visibility 0s ease-in-out 0s;visibility:visible}:host.uxc2 .nav-items .items-overlay{height:100%;left:0;opacity:0;position:fixed;top:0;transition:opacity .2s ease-in-out 0s,visibility 0s ease-in-out .2s;visibility:hidden;width:100%;z-index:9998}"]
276
277
  }] }
277
278
  ];
@@ -403,4 +404,4 @@ if (false) {
403
404
  */
404
405
  InfoTopbarComponent.prototype._utilities;
405
406
  }
406
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJEOi9pbmZvL2Rldi91dGlsaXRpZXMvaW5mbyBsaWJyYXJ5IGExMC9JbmZvIExpYnJhcnkgLSBBbmd1bGFyL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvIiwic291cmNlcyI6WyJsYXlvdXRzL3RvcGJhci90b3BiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBT2xELE1BQU0sT0FBTyxtQkFBbUI7Ozs7Ozs7Ozs7Ozs7OztJQStCNUIsWUFBb0IsaUJBQXVDLEVB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O0lBQzdCLHFDQUEwQjs7SUFDMUIsOENBQXFDOztJQUNyQyxvREFBK0M7O0lBQy9DLHFEQUE2RDs7SUFDN0QsdURBQXFEOztJQUNyRCx3REFBbUQ7O0lBQ25ELDZDQUFvQzs7SUFDcEMsa0RBQTRDOztJQUM1Qyw4Q0FBNEQ7O0lBQzVELHlDQUFpQzs7SUFDakMsc0RBQWtEOztJQUNsRCw0Q0FBNkM7O0lBQzdDLGdEQUFpRDs7SUFDakQsbURBQW9EOztJQUVwRCx1Q0FBcUI7O0lBQ3JCLHNDQUF5Qjs7SUFDekIsd0NBQTJCOztJQUMzQiw0Q0FBbUU7O0lBRW5FLHNDQU1FOzs7OztJQUVVLGdEQUErQzs7SUFDL0MscURBQXdEOzs7OztJQUN4RCwyQ0FBcUM7Ozs7O0lBQ3JDLDRDQUF1Qzs7Ozs7SUFDdkMsc0NBQXVCOzs7OztJQUFFLHNDQUFnQzs7SUFDekQsdUNBQWlDOztJQUNqQyx3Q0FBbUM7Ozs7O0lBQ25DLHFDQUF5Qjs7Ozs7SUFDekIsd0NBQTRCOzs7OztJQUM1Qix1Q0FBNEI7Ozs7O0lBQzVCLHlDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFJlbmRlcmVyMiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbmZvRGlhbG9nTW9kYWwgfSBmcm9tICcuLi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dCdXR0b25zIH0gZnJvbSAnLi4vLi4vZW51bSc7XHJcbmltcG9ydCB7IEluZm9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEluZm9BdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmZvRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEluZm9UaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RoZW1lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmZvTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbC9ub3RpZmljYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvU2Vzc2lvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2Vzc2lvbi5tb2RlbCc7IFxyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbGl0aWVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLXRvcGJhcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9wYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RvcGJhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvVG9wYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIG9wZW5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbGFuZ3VhZ2VzOiBhbnkgPSBbXTtcclxuICAgIEBJbnB1dCgpIHRoZW1lczogYW55ID0gW107XHJcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25hcGk6IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25nZXRtZXRob2Q6IHN0cmluZyA9ICdHZXQnO1xyXG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9ucG9zdG1ldGhvZDogc3RyaW5nID0gJ1Bvc3ROb3RpZmljYXRpb24nO1xyXG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9udmVyaWZ5bWV0aG9kOiBzdHJpbmcgPSAnVmVyaWZ5JztcclxuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbnZlcmlmeWVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZmFzdHNlYXJjaGZvcm06IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBmYXN0c2VhcmNoZm9ybXdpZHRoOiBudW1iZXIgPSAxMjAwO1xyXG4gICAgQElucHV0KCkgZmFzdHNlYXJjaHRpdGxlOiBzdHJpbmcgPSAnUGVzcXVpc2FSYXBpZGFDYXJ0ZWlyYSc7XHJcbiAgICBASW5wdXQoKSBwcm9maWxldXJsOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIHNldHRoZW1lb25jaGFuZ2Vjb21wYW55OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBAT3V0cHV0KCkgb25jaGFuZ2VzdGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbmdldG5vdGlmaWNhdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbnZlcmlmeW5vdGlmaWNhdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBtb2RhbFJlZjogYW55ID0gbnVsbDtcclxuICAgIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb2R1dGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbm90aWZpY2F0aW9uczogSW5mb05vdGlmaWNhdGlvbk1vZGVsID0gbmV3IEluZm9Ob3RpZmljYXRpb25Nb2RlbCgpO1xyXG5cclxuICAgIHRvcE1lbnU6IGFueSA9IHtcclxuICAgICAgICBlbXByZXNhOiBmYWxzZSxcclxuICAgICAgICB0ZW1hOiBmYWxzZSxcclxuICAgICAgICBpZGlvbWE6IGZhbHNlLFxyXG4gICAgICAgIG5vdGlmaWNhY2FvOiBmYWxzZSxcclxuICAgICAgICBjYWxlbmRhcmlvOiBmYWxzZVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBJbmZvVHJhbnNsYXRlU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgX2F1dGhlbnRpY2F0aW9uU2VydmljZTogSW5mb0F1dGhlbnRpY2F0aW9uU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9kYXRhU2VydmljZTogSW5mb0RhdGFTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3RoZW1lU2VydmljZTogSW5mb1RoZW1lU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBfZGlhbG9nOiBJbmZvRGlhbG9nTW9kYWwsIFxyXG4gICAgICAgICAgICAgICAgcHVibGljIF9zZXNzaW9uOiBJbmZvU2Vzc2lvbk1vZGVsLCBcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBfcGxhdGZvcm06IEluZm9QbGF0Zm9ybU1vZGVsLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX21vZGFsOiBNYXREaWFsb2csXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdXRpbGl0aWVzOiBVdGlsaXRpZXMpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3V4YycgKyB0aGlzLl9wbGF0Zm9ybS5Db25maWcudXgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLl9wbGF0Zm9ybS5Db25maWcudG9wTWVudSlcclxuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAndG9wbWVudScpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB0aGlzLnByb2R1dGlvbiA9IHRoaXMuX3BsYXRmb3JtLkNvbmZpZy5wcm9kdWN0aW9uO1xyXG4gICAgICAgIHRoaXMuZ2V0Tm90aWZpY2F0aW9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldENvbXBhbnkoY29tcGFueSkge1xyXG4gICAgICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS50cm9jYXJFbXByZXNhKHRoaXMuX3Nlc3Npb24uTG9naW4sIGNvbXBhbnkuSWQpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgnbG9hZGluZycsICd0cnVlJyk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24uUGVybWlzc29lcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5FbXByZXNhSWQgPSBjb21wYW55LklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5FbXByZXNhID0gY29tcGFueS5Ob21lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5UZW1hSWQgPSBjb21wYW55LlRlbWFJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RoZW1lU2VydmljZS5zZXRUaGVtZUJ5TG9nZ2VkQ29tcGFueSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwiRGFzaGJvYXJkXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0Zm9ybS5TZXNzaW9uS2V5LCBKU09OLnN0cmluZ2lmeSh0aGlzLl9zZXNzaW9uKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnJykudGhlbihyID0+IGxvY2F0aW9uLnJlbG9hZCgpKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9IGVsc2UgdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmxvZ291dCgpO1xyXG4gICAgICAgIH0sIGVyciA9PiB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UubG9nb3V0KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLnNldChsYW5ndWFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGhlbWUodGhlbWUpIHtcclxuICAgICAgICB0aGlzLl90aGVtZVNlcnZpY2Uuc2V0VGhlbWUodGhlbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZU1vZGUoKXtcclxuICAgICAgICB0aGlzLl90aGVtZVNlcnZpY2Uuc2V0TW9kZVByaW1lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkZhc3RTZWFyY2goKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tb2RhbFJlZiAhPSBudWxsKSBcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGFsUmVmID0gdGhpcy5fbW9kYWwub3Blbih0aGlzLmZhc3RzZWFyY2hmb3JtLCB7XHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuZmFzdHNlYXJjaGZvcm13aWR0aCArICdweCdcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoci5rZXkgPT0gXCJFc2NhcGVcIiB8fCByLmtleSA9PSBcIkVzY1wiIHx8IHIua2V5ID09IFwiMjdcIikpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGFsUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMubW9kYWxSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUociA9PiB7IHRoaXMubW9kYWxSZWYgPSBudWxsIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW4oYWNodGl2ZU1lbnUpIHtcclxuICAgICAgICB0aGlzLnRvcE1lbnUuZW1wcmVzYSA9IGFjaHRpdmVNZW51ID09ICdlbXByZXNhJztcclxuICAgICAgICB0aGlzLnRvcE1lbnUudGVtYSA9IGFjaHRpdmVNZW51ID09ICd0ZW1hJztcclxuICAgICAgICB0aGlzLnRvcE1lbnUuaWRpb21hID0gYWNodGl2ZU1lbnUgPT0gJ2lkaW9tYSc7XHJcbiAgICAgICAgdGhpcy50b3BNZW51Lm5vdGlmaWNhY2FvID0gYWNodGl2ZU1lbnUgPT0gJ25vdGlmaWNhY2FvJztcclxuICAgICAgICB0aGlzLnRvcE1lbnUuY2FsZW5kYXJpbyA9IGFjaHRpdmVNZW51ID09ICdjYWxlbmRhcmlvJztcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZSgpIHtcclxuICAgICAgICB0aGlzLnRvcE1lbnUuZW1wcmVzYSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9wTWVudS50ZW1hID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LmlkaW9tYSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9wTWVudS5ub3RpZmljYWNhbyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9wTWVudS5jYWxlbmRhcmlvID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblNpZGViYXIoKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuZWQgPSAhdGhpcy5vcGVuZWQ7XHJcbiAgICAgICAgdGhpcy5vbmNoYW5nZXN0YXRlLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXROb3RpZmljYXRpb25zKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmlzTG9nZ2VkKCkgfHwgdGhpcy5ub3RpZmljYXRpb25hcGkgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLl9kYXRhU2VydmljZS5nZXQodGhpcy5ub3RpZmljYXRpb25hcGksIHRoaXMubm90aWZpY2F0aW9uZ2V0bWV0aG9kLCBudWxsKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5Db3VudCA9IHIuZGF0YS5Db3VudDtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5JdGVucyA9IHIuZGF0YS5JdGVucztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ub3RpZmljYXRpb252ZXJpZnllbmFibGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5Tm90aWZpY2F0aW9ucygpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMub25nZXRub3RpZmljYXRpb24uZW1pdCh0aGlzLm5vdGlmaWNhdGlvbnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmVyaWZ5Tm90aWZpY2F0aW9ucygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5pc0xvZ2dlZCgpIHx8IHRoaXMubm90aWZpY2F0aW9uYXBpID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YVNlcnZpY2UuZ2V0KHRoaXMubm90aWZpY2F0aW9uYXBpLCB0aGlzLm5vdGlmaWNhdGlvbnZlcmlmeW1ldGhvZCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICBpZiAoci5kYXRhID09IC0xKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubm90aWZpY2F0aW9ucy5Db3VudCA9PSByLmRhdGEpXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy52ZXJpZnlOb3RpZmljYXRpb25zKCk7IH0sIDE1MDAwKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5nZXROb3RpZmljYXRpb25zKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9udmVyaWZ5bm90aWZpY2F0aW9uLmVtaXQoey4uLnRoaXMubm90aWZpY2F0aW9ucywgVmVyaWZ5Q291bnQ6IHIuZGF0YX0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE5vdGlmaWNhdGlvblN0YXR1cyhyZWFkLCBhY2Nlc3MsIHJlbW92ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvbnMuQ291bnQgPT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLl9kYXRhU2VydmljZS5wb3N0KHRoaXMubm90aWZpY2F0aW9uYXBpLCB7IElkOiAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJywgQWNlc3NvOiBhY2Nlc3MsIExlaXR1cmE6IHJlYWQsIEV4Y2x1c2FvOiByZW1vdmUgfSwgdGhpcy5ub3RpZmljYXRpb25wb3N0bWV0aG9kKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHRoaXMubm90aWZpY2F0aW9ucy5Db3VudCA9IDApO1xyXG4gICAgfVxyXG5cclxuICAgIG5hdmlnYXRlKHVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFt1cmwucmVwbGFjZSgnLyMnLCAnJyldKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dvdXQoKSB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nLlllc09yTm8oJ0Rlc2VqYVJlYWxtZW50ZVNhaXInKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyLmJ1dHRvbiA9PSBJbmZvRGlhbG9nQnV0dG9ucy5ZZXMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UubG9nb3V0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXX0=
407
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJEOi9pbmZvL2Rldi91dGlsaXRpZXMvaW5mbyBsaWJyYXJ5IGExMC9JbmZvIExpYnJhcnkgLSBBbmd1bGFyL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvIiwic291cmNlcyI6WyJsYXlvdXRzL3RvcGJhci90b3BiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBT2xELE1BQU0sT0FBTyxtQkFBbUI7Ozs7Ozs7Ozs7Ozs7OztJQStCNUIsWUFBb0IsaUJBQXVDLEVB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TTs7OztJQWZQLHFDQUFpQzs7SUFDakMsd0NBQTZCOztJQUM3QixxQ0FBMEI7O0lBQzFCLDhDQUFxQzs7SUFDckMsb0RBQStDOztJQUMvQyxxREFBNkQ7O0lBQzdELHVEQUFxRDs7SUFDckQsd0RBQW1EOztJQUNuRCw2Q0FBb0M7O0lBQ3BDLGtEQUE0Qzs7SUFDNUMsOENBQTREOztJQUM1RCx5Q0FBaUM7O0lBQ2pDLHNEQUFrRDs7SUFDbEQsNENBQTZDOztJQUM3QyxnREFBaUQ7O0lBQ2pELG1EQUFvRDs7SUFFcEQsdUNBQXFCOztJQUNyQixzQ0FBeUI7O0lBQ3pCLHdDQUEyQjs7SUFDM0IsNENBQW1FOztJQUVuRSxzQ0FNRTs7Ozs7SUFFVSxnREFBK0M7O0lBQy9DLHFEQUF3RDs7Ozs7SUFDeEQsMkNBQXFDOzs7OztJQUNyQyw0Q0FBdUM7Ozs7O0lBQ3ZDLHNDQUF1Qjs7Ozs7SUFBRSxzQ0FBZ0M7O0lBQ3pELHVDQUFpQzs7SUFDakMsd0NBQW1DOzs7OztJQUNuQyxxQ0FBeUI7Ozs7O0lBQ3pCLHdDQUE0Qjs7Ozs7SUFDNUIsdUNBQTRCOzs7OztJQUM1Qix5Q0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBSZW5kZXJlcjIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5mb0RpYWxvZ01vZGFsIH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJbmZvRGlhbG9nQnV0dG9ucyB9IGZyb20gJy4uLy4uL2VudW0nO1xyXG5pbXBvcnQgeyBJbmZvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmZvVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS90aGVtZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb05vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvbm90aWZpY2F0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb1Nlc3Npb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL3Nlc3Npb24ubW9kZWwnOyBcclxuaW1wb3J0IHsgSW5mb1BsYXRmb3JtTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbC9wbGF0Zm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnaW5mby10b3BiYXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvcGJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90b3BiYXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb1RvcGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBvcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGxhbmd1YWdlczogYW55ID0gW107XHJcbiAgICBASW5wdXQoKSB0aGVtZXM6IGFueSA9IFtdO1xyXG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9uYXBpOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9uZ2V0bWV0aG9kOiBzdHJpbmcgPSAnR2V0JztcclxuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbnBvc3RtZXRob2Q6IHN0cmluZyA9ICdQb3N0Tm90aWZpY2F0aW9uJztcclxuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbnZlcmlmeW1ldGhvZDogc3RyaW5nID0gJ1ZlcmlmeSc7XHJcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb252ZXJpZnllbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGZhc3RzZWFyY2hmb3JtOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgZmFzdHNlYXJjaGZvcm13aWR0aDogbnVtYmVyID0gMTIwMDtcclxuICAgIEBJbnB1dCgpIGZhc3RzZWFyY2h0aXRsZTogc3RyaW5nID0gJ1Blc3F1aXNhUmFwaWRhQ2FydGVpcmEnO1xyXG4gICAgQElucHV0KCkgcHJvZmlsZXVybDogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBzZXR0aGVtZW9uY2hhbmdlY29tcGFueTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQE91dHB1dCgpIG9uY2hhbmdlc3RhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25nZXRub3RpZmljYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb252ZXJpZnlub3RpZmljYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgbW9kYWxSZWY6IGFueSA9IG51bGw7XHJcbiAgICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm9kdXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIG5vdGlmaWNhdGlvbnM6IEluZm9Ob3RpZmljYXRpb25Nb2RlbCA9IG5ldyBJbmZvTm90aWZpY2F0aW9uTW9kZWwoKTtcclxuXHJcbiAgICB0b3BNZW51OiBhbnkgPSB7XHJcbiAgICAgICAgZW1wcmVzYTogZmFsc2UsXHJcbiAgICAgICAgdGVtYTogZmFsc2UsXHJcbiAgICAgICAgaWRpb21hOiBmYWxzZSxcclxuICAgICAgICBub3RpZmljYWNhbzogZmFsc2UsXHJcbiAgICAgICAgY2FsZW5kYXJpbzogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogSW5mb1RyYW5zbGF0ZVNlcnZpY2UsIFxyXG4gICAgICAgICAgICAgICAgcHVibGljIF9hdXRoZW50aWNhdGlvblNlcnZpY2U6IEluZm9BdXRoZW50aWNhdGlvblNlcnZpY2UsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZGF0YVNlcnZpY2U6IEluZm9EYXRhU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90aGVtZVNlcnZpY2U6IEluZm9UaGVtZVNlcnZpY2UsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgX2RpYWxvZzogSW5mb0RpYWxvZ01vZGFsLCBcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBfc2Vzc2lvbjogSW5mb1Nlc3Npb25Nb2RlbCwgXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgX3BsYXRmb3JtOiBJbmZvUGxhdGZvcm1Nb2RlbCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9tb2RhbDogTWF0RGlhbG9nLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3V0aWxpdGllczogVXRpbGl0aWVzKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd1eGMnICsgdGhpcy5fcGxhdGZvcm0uQ29uZmlnLnV4KTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5fcGxhdGZvcm0uQ29uZmlnLnRvcE1lbnUpXHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3RvcG1lbnUnKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgdGhpcy5wcm9kdXRpb24gPSB0aGlzLl9wbGF0Zm9ybS5Db25maWcucHJvZHVjdGlvbjtcclxuICAgICAgICB0aGlzLmdldE5vdGlmaWNhdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRDb21wYW55KGNvbXBhbnkpIHtcclxuICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UudHJvY2FyRW1wcmVzYSh0aGlzLl9zZXNzaW9uLkxvZ2luLCBjb21wYW55LklkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoJ2xvYWRpbmcnLCAndHJ1ZScpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLlBlcm1pc3NvZXMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24uRW1wcmVzYUlkID0gY29tcGFueS5JZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24uRW1wcmVzYSA9IGNvbXBhbnkuTm9tZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24uVGVtYUlkID0gY29tcGFueS5UZW1hSWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90aGVtZVNlcnZpY2Uuc2V0VGhlbWVCeUxvZ2dlZENvbXBhbnkoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcIkRhc2hib2FyZFwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGZvcm0uU2Vzc2lvbktleSwgSlNPTi5zdHJpbmdpZnkodGhpcy5fc2Vzc2lvbikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJycpLnRoZW4ociA9PiBsb2NhdGlvbi5yZWxvYWQoKSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSBlbHNlIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5sb2dvdXQoKTtcclxuICAgICAgICB9LCBlcnIgPT4gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmxvZ291dCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5zZXQobGFuZ3VhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRoZW1lKHRoZW1lKSB7XHJcbiAgICAgICAgdGhpcy5fdGhlbWVTZXJ2aWNlLnNldFRoZW1lKHRoZW1lKTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVNb2RlKCl7XHJcbiAgICAgICAgdGhpcy5fdGhlbWVTZXJ2aWNlLnNldE1vZGVQcmltZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5GYXN0U2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubW9kYWxSZWYgIT0gbnVsbCkgXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMuX21vZGFsLm9wZW4odGhpcy5mYXN0c2VhcmNoZm9ybSwge1xyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLmZhc3RzZWFyY2hmb3Jtd2lkdGggKyAncHgnXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMubW9kYWxSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmcgJiYgKHIua2V5ID09IFwiRXNjYXBlXCIgfHwgci5rZXkgPT0gXCJFc2NcIiB8fCByLmtleSA9PSBcIjI3XCIpKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RhbFJlZi5jbG9zZSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGFsUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHIgPT4geyB0aGlzLm1vZGFsUmVmID0gbnVsbCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuKGFjaHRpdmVNZW51KSB7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LmVtcHJlc2EgPSBhY2h0aXZlTWVudSA9PSAnZW1wcmVzYSc7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LnRlbWEgPSBhY2h0aXZlTWVudSA9PSAndGVtYSc7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LmlkaW9tYSA9IGFjaHRpdmVNZW51ID09ICdpZGlvbWEnO1xyXG4gICAgICAgIHRoaXMudG9wTWVudS5ub3RpZmljYWNhbyA9IGFjaHRpdmVNZW51ID09ICdub3RpZmljYWNhbyc7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LmNhbGVuZGFyaW8gPSBhY2h0aXZlTWVudSA9PSAnY2FsZW5kYXJpbyc7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKSB7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LmVtcHJlc2EgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvcE1lbnUudGVtYSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9wTWVudS5pZGlvbWEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvcE1lbnUubm90aWZpY2FjYW8gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvcE1lbnUuY2FsZW5kYXJpbyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5TaWRlYmFyKCkge1xyXG4gICAgICAgIHRoaXMub3BlbmVkID0gIXRoaXMub3BlbmVkO1xyXG4gICAgICAgIHRoaXMub25jaGFuZ2VzdGF0ZS5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Tm90aWZpY2F0aW9ucygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5pc0xvZ2dlZCgpIHx8IHRoaXMubm90aWZpY2F0aW9uYXBpID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YVNlcnZpY2UuZ2V0KHRoaXMubm90aWZpY2F0aW9uYXBpLCB0aGlzLm5vdGlmaWNhdGlvbmdldG1ldGhvZCwgbnVsbCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuQ291bnQgPSByLmRhdGEuQ291bnQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuSXRlbnMgPSByLmRhdGEuSXRlbnM7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubm90aWZpY2F0aW9udmVyaWZ5ZW5hYmxlZClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeU5vdGlmaWNhdGlvbnMoKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uZ2V0bm90aWZpY2F0aW9uLmVtaXQodGhpcy5ub3RpZmljYXRpb25zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHZlcmlmeU5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuaXNMb2dnZWQoKSB8fCB0aGlzLm5vdGlmaWNhdGlvbmFwaSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuX2RhdGFTZXJ2aWNlLmdldCh0aGlzLm5vdGlmaWNhdGlvbmFwaSwgdGhpcy5ub3RpZmljYXRpb252ZXJpZnltZXRob2QpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgaWYgKHIuZGF0YSA9PSAtMSlcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5vdGlmaWNhdGlvbnMuQ291bnQgPT0gci5kYXRhKVxyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMudmVyaWZ5Tm90aWZpY2F0aW9ucygpOyB9LCAxNTAwMCk7XHJcblxyXG4gICAgICAgICAgICBlbHNlIHRoaXMuZ2V0Tm90aWZpY2F0aW9ucygpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbnZlcmlmeW5vdGlmaWNhdGlvbi5lbWl0KHsuLi50aGlzLm5vdGlmaWNhdGlvbnMsIFZlcmlmeUNvdW50OiByLmRhdGF9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXROb3RpZmljYXRpb25TdGF0dXMocmVhZCwgYWNjZXNzLCByZW1vdmUpIHtcclxuICAgICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25zLkNvdW50ID09IDApIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YVNlcnZpY2UucG9zdCh0aGlzLm5vdGlmaWNhdGlvbmFwaSwgeyBJZDogJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCcsIEFjZXNzbzogYWNjZXNzLCBMZWl0dXJhOiByZWFkLCBFeGNsdXNhbzogcmVtb3ZlIH0sIHRoaXMubm90aWZpY2F0aW9ucG9zdG1ldGhvZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuQ291bnQgPSAwKTtcclxuICAgIH1cclxuXHJcbiAgICBuYXZpZ2F0ZSh1cmw6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbdXJsLnJlcGxhY2UoJy8jJywgJycpXSk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9nb3V0KCkge1xyXG4gICAgICAgIGFsZXJ0KCdsb2dvdXQnKTtcclxuICAgICAgICB0aGlzLl9kaWFsb2cuWWVzT3JObygnRGVzZWphUmVhbG1lbnRlU2FpcicpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgaWYgKHIuYnV0dG9uID09IEluZm9EaWFsb2dCdXR0b25zLlllcylcclxuICAgICAgICAgICAgICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5sb2dvdXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdfQ==
@@ -263,7 +263,9 @@ export class InfoAuthenticationService {
263
263
  * @return {?}
264
264
  */
265
265
  logout() {
266
+ alert('logout');
266
267
  if (this.isLogged()) {
268
+ alert('centrocontrole/usuario/Logout');
267
269
  this._http.post(this._plataforma.Config.webapiUrl + 'centrocontrole/usuario/Logout', null, { headers: this._dataService.getHeaderToken() })
268
270
  .subscribe((/**
269
271
  * @return {?}
@@ -495,13 +497,17 @@ export class InfoAuthenticationService {
495
497
  * @return {?}
496
498
  */
497
499
  removeSessao() {
500
+ alert('removeSessao');
498
501
  Object.keys(localStorage).forEach((/**
499
502
  * @param {?} key
500
503
  * @return {?}
501
504
  */
502
505
  (key) => {
503
- if (!key.includes('Dashboard,cols'))
506
+ console.log('remove sessoes', key);
507
+ if (!key.includes('Dashboard,cols')) {
508
+ alert(key);
504
509
  delete localStorage[key];
510
+ }
505
511
  }));
506
512
  }
507
513
  /**
@@ -729,4 +735,4 @@ if (false) {
729
735
  */
730
736
  RefreshSessionTimeModalComponent.prototype._ref;
731
737
  }
732
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJEOi9pbmZvL2Rldi91dGlsaXRpZXMvaW5mbyBsaWJyYXJ5IGExMC9JbmZvIExpYnJhcnkgLSBBbmd1bGFyL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvIiwic291cmNlcyI6WyJzZXJ2aWNlL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUE0RCxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQW1CLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7OztBQUsvQyxN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RCxDQUFDOzs7O0lBRTFFLFFBQVE7UUFDSixhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVzs7O1FBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO2dCQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDWDtnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2hDO1FBQ0wsQ0FBQyxHQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQzs7Ozs7SUFFRCxLQUFLLENBQUMsS0FBYztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7OztZQTVCSixTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFOzs7O0VBSVQ7YUFDRDs7OztZQXRZbUIsWUFBWTs7OztJQXdZNUIsZ0RBQVU7O0lBQ1Ysb0RBQVM7Ozs7O0lBRUEsZ0RBQTREIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZUlucHV0LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW5mb1Nlc3Npb25Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3Nlc3Npb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb0xvZ2luTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9sb2dpbi5tb2RlbCc7XHJcbmltcG9ydCB7IEluZm9EYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb0Zvcm1Qcm9wTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9mb3JtLXByb3AubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEluZm9Nb2RhbEFjdGlvbiB9IGZyb20gJy4uL2VudW0nO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBJbmZvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXRpZXMgfSBmcm9tICcuLi91dGlscy91dGlsaXRpZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvblRpbWVJbnRlcnZhbDtcclxuICAgIHByaXZhdGUgX3Nlc3Npb25BY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfc2Vzc2FvOiBJbmZvU2Vzc2lvbk1vZGVsLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3BsYXRhZm9ybWE6IEluZm9QbGF0Zm9ybU1vZGVsLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZGF0YVNlcnZpY2U6IEluZm9EYXRhU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX21vZGFsOiBNYXREaWFsb2csIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdXRpbGl0aWVzOiBVdGlsaXRpZXMsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBJbmZvVHJhbnNsYXRlU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90aXRsZTogVGl0bGUpIHsgfVxyXG5cclxuICAgIGdldFNlc3NhbygpOiBJbmZvU2Vzc2lvbk1vZGVse1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzYW87XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGxhdGZvcm0oKTogSW5mb1BsYXRmb3JtTW9kZWwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wbGF0YWZvcm1hO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbkFjdGl2YXRlKGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHJvdXRlclN0YXRlU25hcHNob3Q6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0xvZ2dlZCgpIHx8ICF0aGlzLl9zZXNzaW9uQWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXJsID0gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5kYXRhWydVUkwnXSB8fCByb3V0ZXJTdGF0ZVNuYXBzaG90LnVybDtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25UaW1lKCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfSwgMTAwMCk7XHJcblxyXG4gICAgICAgIHRoaXMuZGVmaW5lUGFnaW5hQXRpdmEodXJsKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGVybWlzc2lvbih1cmwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJsID09ICcvJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbih1cmwpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCdub3ZvJykgPiAtMSAmJiAhdGhpcy5oYXNQZXJtaXNzaW9uKHVybCwgJ25ldycpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCd2aXN1YWxpemFyJykgPCAtMSAmJiBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSAhPSBudWxsICYmICF0aGlzLmhhc1Blcm1pc3Npb24odXJsLCAnZWRpdCcpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSkgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcm1pc3NhbyA9IGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZGF0YVsnUGVybWlzc2FvJ107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwZXJtaXNzYW8pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmFtcyA9IChwZXJtaXNzYW9bMl0gfHwgJycpLnJlcGxhY2UoUmVnRXhwKC9cXHsoLio/KVxcfS8sICdnJyksIChfLCBwKSA9PiBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnBhcmFtc1twXSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhd2FpdCB0aGlzLl9kYXRhU2VydmljZS5nZXQocGVybWlzc2FvWzBdLCBwZXJtaXNzYW9bMV0sIHBhcmFtcykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIuc3VjY2VzcyB8fCByLmRhdGEgIT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgncGVybWlzc2lvbicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNMb2dnZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLl91dGlsaXRpZXMuZ2V0TG9jYWxTdG9yYWdlKHRoaXMuX3BsYXRhZm9ybWEuVG9rZW5LZXkpICE9IG51bGwpO1xyXG4gICAgfVxyXG5cclxuXHRyZWZyZXNoU2Vzc2lvblRpbWUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9zZXNzaW9uQWN0aXZlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZSA9PSBudWxsIHx8IHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlIDw9IDApXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgdGVtcG9TZXNzYW8gPSB0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbXMnLCBuZXcgRGF0ZSgpLnZhbHVlT2YoKS50b1N0cmluZygpKTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl9zZXNzaW9uVGltZUludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgaWYgKHRlbXBvU2Vzc2FvID4gMCkgIHtcclxuICAgICAgICAgICAgICAgIHRlbXBvU2Vzc2FvLS07XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCB0ZW1wb1Jlc3RhbnRlID0gTWF0aC5yb3VuZCh0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZSAtICgobmV3IERhdGUoKS52YWx1ZU9mKCkgLSBwYXJzZUludChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbXMnKSkpIC8gMTAwMCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFpc05hTih0ZW1wb1Jlc3RhbnRlKSAmJiB0ZW1wb1Jlc3RhbnRlID4gMCl7XHJcbiAgICAgICAgICAgICAgICB0ZW1wb1Nlc3NhbyA9IHRlbXBvUmVzdGFudGU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25BY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpc05hTih0ZW1wb1Jlc3RhbnRlKSlcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgZWxzZSB0aGlzLnNob3dNZXNzYWdlKCk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcblx0fVxyXG5cclxuICAgIHNob3dNZXNzYWdlKCl7XHJcbiAgICAgICAgbGV0IHJlZiA9IHRoaXMuX21vZGFsLm9wZW4oUmVmcmVzaFNlc3Npb25UaW1lTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgZGF0YTogbnVsbCxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogJzUwMHB4J1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHI6IEluZm9Gb3JtUHJvcE1vZGVsKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAociAhPSBudWxsICYmIChyLm1vZGFsQWN0aW9uID09IEluZm9Nb2RhbEFjdGlvbi5ZZXMgfHwgKHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlIC0gKChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAtIHBhcnNlSW50KGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtcycpKSkgLyAxMDAwKSkgPiAwKSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25UaW1lKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dpbih1c3VhcmlvOiBzdHJpbmcsIHNlbmhhOiBzdHJpbmcsIHJlQ2FwdGNoYVRva2VuOiBzdHJpbmcgPSBudWxsLCBjb2RpZ28yRkE6IHN0cmluZyA9IG51bGwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9hdXRlbnRpY2FyJywgeyBVc3VhcmlvOiB1c3VhcmlvLCBTZW5oYTogc2VuaGEsIFJlQ2FwdGNoYVRva2VuOiByZUNhcHRjaGFUb2tlbiwgQ29kaWdvMkZBOiBjb2RpZ28yRkEgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91dGlsaXRpZXMuc2V0TG9jYWxTdG9yYWdlKHRoaXMuX3BsYXRhZm9ybWEuVG9rZW5LZXksIHIuRGF0YS5Ub2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0cm9jYXJFbXByZXNhKHVzdWFyaW86IHN0cmluZywgZW1wcmVzYUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby90cm9jYXJlbXByZXNhJywgeyBFbXByZXNhSWQ6IGVtcHJlc2FJZCB9LCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCkgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5LCByLkRhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNsb25hcih1c3VhcmlvOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9jbG9uYXInLCB7IFVzdWFyaW86IHVzdWFyaW8gfSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5TdWNjZXNzICYmIHIuRGF0YSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5Ub2tlbktleSwgci5EYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGxvZ291dCgpIHtcclxuICAgICAgICBpZiAodGhpcy5pc0xvZ2dlZCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2h0dHAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9Mb2dvdXQnLCBudWxsLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCkgfSlcclxuICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ2xvZ2luJykudGhlbihyID0+IHsgbG9jYXRpb24ucmVsb2FkKCk7IH0pOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdsb2dpbicpLnRoZW4ociA9PiB7IGxvY2F0aW9uLnJlbG9hZCgpOyB9KTsgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRQZXJtaXNzaW9ucyh1cmw6IHN0cmluZywgbG9nQXRpdmlkYWRlOiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL2dldHBlcm1pc3Nhbz91cmw9JyArIHVybCArICcmbG9nYXRpdmlkYWRlPScgKyBsb2dBdGl2aWRhZGUudG9TdHJpbmcoKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VHJvY2FTZW5oYShtb2RlbDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLnBvc3QodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vVHJvY2FyU2VuaGEnLCBtb2RlbCwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UmVjdXBlcmFyU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1JlY3VwZXJhclNlbmhhJywgbW9kZWwsIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyOiBhbnkpID0+IG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFJlc2V0YXJTZW5oYShtb2RlbDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLnBvc3QodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vUmVzZXRhclNlbmhhJywgbW9kZWwpXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TG9naW5SZXNvdXJjZXMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLmdldCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvYXBwL0dldExvZ2luUmVzb3VyY2VzJylcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNQZXJtaXNzaW9uKHVybDogc3RyaW5nLCBrZXlGdW5jdGlvbjogc3RyaW5nID0gJ3ZpZXcnKTogYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGlmICh1cmwgPT0gJy8nICYmIGtleUZ1bmN0aW9uID09ICd2aWV3JylcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIGxldCB1cmxHZW5lcmljYSA9IHRoaXMuZ2V0VXJsR2VuZXJpY2EodXJsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2Vzc2FvLlBlcm1pc3NvZXMuc29tZShzID0+IHMuVVJMID09IHVybEdlbmVyaWNhICYmIHMuQ2hhdmVGdW5jaW9uYWxpZGFkZSA9PSBrZXlGdW5jdGlvbiAmJiBzLkFjZXNzbyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGVybWlzc2lvbih1cmw6IHN0cmluZywgbG9nQXRpdmlkYWRlOiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuXHJcbiAgICAgICAgbGV0IHVybEdlbmVyaWNhID0gdGhpcy5nZXRVcmxHZW5lcmljYSh1cmwpO1xyXG4gICAgICAgIGxldCBjb250ZW1VcmwgPSB0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5zb21lKHMgPT4gcy5VUkwgPT0gdXJsR2VuZXJpY2EpO1xyXG4gICAgICAgIGlmIChjb250ZW1VcmwpIHtcclxuICAgICAgICAgICAgaWYgKGxvZ0F0aXZpZGFkZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhU2Vzc2FvKHVybCkucGlwZShtYXAocmV0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJldC5zdWNjZXNzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHsgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDEpIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChvYnNlcnZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGVybWlzc2lvbnModXJsR2VuZXJpY2EsIGxvZ0F0aXZpZGFkZSkucGlwZShtYXAocmV0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXQuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXQuZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0LmRhdGEuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Nlc3Nhby5QZXJtaXNzb2VzLmZpbHRlcihzID0+IHMuVVJMID09IGl0ZW0uVVJMICYmIHMuQ2hhdmVGdW5jaW9uYWxpZGFkZSA9PSBpdGVtLkNoYXZlRnVuY2lvbmFsaWRhZGUpLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2FvLlBlcm1pc3NvZXMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0LmRhdGEuc29tZShzID0+IHMuVVJMID09IHVybEdlbmVyaWNhKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl91dGlsaXRpZXMuc2V0TG9jYWxTdG9yYWdlKHRoaXMuX3BsYXRhZm9ybWEuU2Vzc2lvbktleSwgSlNPTi5zdHJpbmdpZnkodGhpcy5fc2Vzc2FvKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHsgXHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSkgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2YWxpZGFTZXNzYW8odXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vdmFsaWRhc2Vzc2FvP3VybD0nICsgdXJsLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCkgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4gbmV3IEluZm9Mb2dpbk1vZGVsKHIgPT09IHRydWUsICcnLCByKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVNlc3NhbygpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWtleS5pbmNsdWRlcygnRGFzaGJvYXJkLGNvbHMnKSkgZGVsZXRlIGxvY2FsU3RvcmFnZVtrZXldO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmluZVBhZ2luYUF0aXZhKHVybCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fcGxhdGFmb3JtYS5NZW51ID09IG51bGwgfHwgdXJsID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IG51bGw7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBhdXg6IHN0cmluZ1tdID0gdXJsLnN1YnN0cmluZygxKS5yZXBsYWNlKC8tL2csICcnKS50b0xvd2VyQ2FzZSgpLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgbGV0IHRpdHVsb01lbnU6IHN0cmluZyA9IGF1eC5sZW5ndGggPiAwID8gYXV4WzBdLnRvU3RyaW5nKCkgOiB1cmw7XHJcbiAgICAgICAgbGV0IHBhcmFtZXRyb3NVcmw6IHN0cmluZ1tdID0gdXJsLnNwbGl0KCcvJykuc2xpY2UoMik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRpdHVsb01lbnUuaW5kZXhPZignYXNoYm9hcmQnKSA+IC0xKVxyXG4gICAgICAgICAgICB0aGlzLl9wbGF0YWZvcm1hLlBhZ2luYUF0aXZhID0geyBJY29uZTogJ3dpZGdldHMnLCBUaXR1bG86ICdEYXNoYm9hcmQnIH07ICBcclxuXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBhbnkgPSB0aGlzLl9wbGF0YWZvcm1hLk1lbnUuZmlsdGVyKG0gPT4gbS5UaXRsZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGl0dWxvTWVudSkgPiAtMSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHN1YlRpdHVsbyA9IFwiXCI7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1ldHJvc1VybC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzR3VpZChwYXJhbWV0cm9zVXJsW2ldKSAmJiBpc05hTihwYXJzZUZsb2F0KHBhcmFtZXRyb3NVcmxbaV0pKSlcclxuICAgICAgICAgICAgICAgICAgICBzdWJUaXR1bG8gKz0gXCIgLSBcIiArIHRoaXMuX3RyYW5zbGF0ZS50cmFuc2xhdGUodGhpcy50b1Bhc2NhbENhc2UocGFyYW1ldHJvc1VybFtpXSkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoaXRlbSAhPSBudWxsICYmIGl0ZW0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IHsgSWNvbmU6IGl0ZW1bMF0uSWNvbiwgVGl0dWxvOiBpdGVtWzBdLlRpdGxlIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90aXRsZS5zZXRUaXRsZShcIlBsYXRhZm9ybWEgLSBcIiArIHRoaXMuX3RyYW5zbGF0ZS50cmFuc2xhdGUoaXRlbVswXS5UaXRsZSkgKyBzdWJUaXR1bG8pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIHRoaXMuX3BsYXRhZm9ybWEuUGFnaW5hQXRpdmEgPSB7IEljb25lOiAnc2VjdXJpdHknLCBUaXR1bG86ICdQbGF0YWZvcm1hJyB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRVcmxHZW5lcmljYSh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHJldG9ybm8gPSBcIlwiO1xyXG4gICAgICAgIGxldCB1cmxQYXJ0czogc3RyaW5nW10gPSB1cmwuc3BsaXQoJy8nKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVybFBhcnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNOYU4ocGFyc2VGbG9hdCh1cmxQYXJ0c1tpXSkpIHx8IHRoaXMuaXNHdWlkKHVybFBhcnRzW2ldKSB8fCB1cmxQYXJ0c1tpXS50b0xvd2VyQ2FzZSgpID09ICdub3ZvJylcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICByZXRvcm5vICs9ICcvJyArIHVybFBhcnRzW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0b3Juby5zdWJzdHJpbmcoMSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsaW5nKGU6IEh0dHBFcnJvclJlc3BvbnNlKTogT2JzZXJ2YWJsZUlucHV0PEluZm9Mb2dpbk1vZGVsPiB7XHJcbiAgICAgICAgaWYgKGUuc3RhdHVzID09IDQwMSkgXHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKGUuc3RhdHVzID09IDUwMClcclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJzUwMCcpO1xyXG5cclxuICAgICAgICBlbHNlIGlmIChlLmVycm9yICE9IG51bGwgJiYgZS5lcnJvci5lcnJvcl9kZXNjcmlwdGlvbiAhPSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gb2YobmV3IEluZm9Mb2dpbk1vZGVsKGZhbHNlLCBlLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uKSk7XHJcblxyXG4gICAgICAgIGVsc2UgcmV0dXJuIG9mKG5ldyBJbmZvTG9naW5Nb2RlbChmYWxzZSwgJ0hvdXZlIHVtIHByb2JsZW1hIGUgbsOjbyBmb2kgcG9zc8OtdmVsIGNvbmVjdGFyJykpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNHdWlkKHZhbHVlKSA6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodmFsdWUgfHwgJycpLm1hdGNoKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpICE9PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdG9QYXNjYWxDYXNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmd7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyheXFx3fC1cXHcpL2csICh3MSwgdzIsIGkpID0+IGkgPT0gMCA/IHcxLnRvVXBwZXJDYXNlKCkgOiB3MVsxXS50b1VwcGVyQ2FzZSgpKTtcclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0dGVtcGxhdGU6IGBcclxuXHRcdDxpbmZvLW1vZGFsIG1vZGFsdGl0bGU9XCJJbmF0aXZpZGFkZVwiIChvbnNhdmUpPVwiYXRpdm8odHJ1ZSlcIiBsYWJlbHN1Ym1pdD1cIlNpbVwiIGxhYmVsY2FuY2VsPVwiKHt7IHRpbWUgfX0pIHt7ICdOYW8nIHwgdHJhbnNsYXRlIH19XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT1cImZvbnQtc2l6ZToxMzAlXCI+e3sgJ1ZvY2VBaW5kYUVzdGFVdGlsaXphbmRvUGxhdGFmb3JtYScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG5cdFx0PC9pbmZvLW1vZGFsPlxyXG5cdGBcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlZnJlc2hTZXNzaW9uVGltZU1vZGFsQ29tcG9uZW50IHtcclxuICAgIHRpbWUgPSAxNTtcclxuICAgIGludGVydmFsO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9yZWY6IE1hdERpYWxvZ1JlZjxSZWZyZXNoU2Vzc2lvblRpbWVNb2RhbENvbXBvbmVudD4pIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGltZSA+IDApXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWUtLTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF0aXZvKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgYXRpdm8oYXRpdm86IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9yZWYuY2xvc2UoeyBtb2RhbEFjdGlvbjogYXRpdm8gPyBJbmZvTW9kYWxBY3Rpb24uWWVzIDogSW5mb01vZGFsQWN0aW9uLk5vIH0pO1xyXG4gICAgfVxyXG59Il19
738
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJEOi9pbmZvL2Rldi91dGlsaXRpZXMvaW5mbyBsaWJyYXJ5IGExMC9JbmZvIExpYnJhcnkgLSBBbmd1bGFyL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvIiwic291cmNlcyI6WyJzZXJ2aWNlL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUE0RCxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQW1CLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7OztBQUsvQyxN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Qzs7Ozs7SUFDdEMsaURBQXFDOzs7OztJQUNyQywyQ0FBeUI7Ozs7O0lBQ3pCLCtDQUE2Qjs7Ozs7SUFDN0IsK0NBQXdDOzs7OztJQUN4QywyQ0FBcUI7O0FBMFhyQyxNQUFNLE9BQU8sZ0NBQWdDOzs7O0lBSTVDLFlBQW9CLElBQW9EO1FBQXBELFNBQUksR0FBSixJQUFJLENBQWdEO1FBSHJFLFNBQUksR0FBRyxFQUFFLENBQUM7SUFHK0QsQ0FBQzs7OztJQUUxRSxRQUFRO1FBQ0osYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3QixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVc7OztRQUFDLEdBQUcsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztnQkFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ1g7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEIsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNoQztRQUNMLENBQUMsR0FBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7Ozs7O0lBRUQsS0FBSyxDQUFDLEtBQWM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDOzs7WUE1QkosU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRTs7OztFQUlUO2FBQ0Q7Ozs7WUE5WW1CLFlBQVk7Ozs7SUFnWjVCLGdEQUFVOztJQUNWLG9EQUFTOzs7OztJQUVBLGdEQUE0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIE9ic2VydmFibGVJbnB1dCwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEluZm9TZXNzaW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9zZXNzaW9uLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb1BsYXRmb3JtTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9wbGF0Zm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IEluZm9Mb2dpbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvbG9naW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEluZm9Gb3JtUHJvcE1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvZm9ybS1wcm9wLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJbmZvTW9kYWxBY3Rpb24gfSBmcm9tICcuLi9lbnVtJztcclxuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgSW5mb1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbGl0aWVzIH0gZnJvbSAnLi4vdXRpbHMvdXRpbGl0aWVzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0F1dGhlbnRpY2F0aW9uU2VydmljZSBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcclxuICAgIHByaXZhdGUgX3Nlc3Npb25UaW1lSW50ZXJ2YWw7XHJcbiAgICBwcml2YXRlIF9zZXNzaW9uQWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3Nlc3NhbzogSW5mb1Nlc3Npb25Nb2RlbCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wbGF0YWZvcm1hOiBJbmZvUGxhdGZvcm1Nb2RlbCxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2RhdGFTZXJ2aWNlOiBJbmZvRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9tb2RhbDogTWF0RGlhbG9nLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3V0aWxpdGllczogVXRpbGl0aWVzLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogSW5mb1RyYW5zbGF0ZVNlcnZpY2UsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdGl0bGU6IFRpdGxlKSB7IH1cclxuXHJcbiAgICBnZXRTZXNzYW8oKTogSW5mb1Nlc3Npb25Nb2RlbHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2Vzc2FvO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBsYXRmb3JtKCk6IEluZm9QbGF0Zm9ybU1vZGVsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcGxhdGFmb3JtYTtcclxuICAgIH1cclxuXHJcbiAgICBjYW5BY3RpdmF0ZShhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCByb3V0ZXJTdGF0ZVNuYXBzaG90OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IGJvb2xlYW4ge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNMb2dnZWQoKSB8fCAhdGhpcy5fc2Vzc2lvbkFjdGl2ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHVybCA9IGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZGF0YVsnVVJMJ10gfHwgcm91dGVyU3RhdGVTbmFwc2hvdC51cmw7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hTZXNzaW9uVGltZSgpOyAgICAgICAgICAgIFxyXG4gICAgICAgIH0sIDEwMDApO1xyXG5cclxuICAgICAgICB0aGlzLmRlZmluZVBhZ2luYUF0aXZhKHVybCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFBlcm1pc3Npb24odXJsLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybCA9PSAnLycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1Blcm1pc3Npb24odXJsKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgncGVybWlzc2lvbicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZignbm92bycpID4gLTEgJiYgIXRoaXMuaGFzUGVybWlzc2lvbih1cmwsICduZXcnKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgncGVybWlzc2lvbicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZigndmlzdWFsaXphcicpIDwgLTEgJiYgYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJykgIT0gbnVsbCAmJiAhdGhpcy5oYXNQZXJtaXNzaW9uKHVybCwgJ2VkaXQnKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgncGVybWlzc2lvbicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDEpIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKSkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKGFzeW5jIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwZXJtaXNzYW8gPSBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmRhdGFbJ1Blcm1pc3NhbyddO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGVybWlzc2FvKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJhbXMgPSAocGVybWlzc2FvWzJdIHx8ICcnKS5yZXBsYWNlKFJlZ0V4cCgvXFx7KC4qPylcXH0vLCAnZycpLCAoXywgcCkgPT4gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5wYXJhbXNbcF0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYXdhaXQgdGhpcy5fZGF0YVNlcnZpY2UuZ2V0KHBlcm1pc3Nhb1swXSwgcGVybWlzc2FvWzFdLCBwYXJhbXMpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyLnN1Y2Nlc3MgfHwgci5kYXRhICE9IHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ3Blcm1pc3Npb24nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTG9nZ2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5fdXRpbGl0aWVzLmdldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5KSAhPSBudWxsKTtcclxuICAgIH1cclxuXHJcblx0cmVmcmVzaFNlc3Npb25UaW1lKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fc2Vzc2lvbkFjdGl2ZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX3Nlc3Npb25UaW1lSW50ZXJ2YWwpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fc2Vzc2FvLlRlbXBvSW5hdGl2aWRhZGUgPT0gbnVsbCB8fCB0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZSA8PSAwKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHRlbXBvU2Vzc2FvID0gdGhpcy5fc2Vzc2FvLlRlbXBvSW5hdGl2aWRhZGU7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21zJywgbmV3IERhdGUoKS52YWx1ZU9mKCkudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmICh0ZW1wb1Nlc3NhbyA+IDApICB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wb1Nlc3Nhby0tO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgdGVtcG9SZXN0YW50ZSA9IE1hdGgucm91bmQodGhpcy5fc2Vzc2FvLlRlbXBvSW5hdGl2aWRhZGUgLSAoKG5ldyBEYXRlKCkudmFsdWVPZigpIC0gcGFyc2VJbnQobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21zJykpKSAvIDEwMDApKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghaXNOYU4odGVtcG9SZXN0YW50ZSkgJiYgdGVtcG9SZXN0YW50ZSA+IDApe1xyXG4gICAgICAgICAgICAgICAgdGVtcG9TZXNzYW8gPSB0ZW1wb1Jlc3RhbnRlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX3Nlc3Npb25UaW1lSW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uQWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNOYU4odGVtcG9SZXN0YW50ZSkpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5zaG93TWVzc2FnZSgpO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG5cdH1cclxuXHJcbiAgICBzaG93TWVzc2FnZSgpe1xyXG4gICAgICAgIGxldCByZWYgPSB0aGlzLl9tb2RhbC5vcGVuKFJlZnJlc2hTZXNzaW9uVGltZU1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGRhdGE6IG51bGwsXHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgd2lkdGg6ICc1MDBweCdcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyOiBJbmZvRm9ybVByb3BNb2RlbCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCAmJiAoci5tb2RhbEFjdGlvbiA9PSBJbmZvTW9kYWxBY3Rpb24uWWVzIHx8ICh0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZSAtICgobmV3IERhdGUoKS52YWx1ZU9mKCkgLSBwYXJzZUludChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbXMnKSkpIC8gMTAwMCkpID4gMCkpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbkFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hTZXNzaW9uVGltZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9naW4odXN1YXJpbzogc3RyaW5nLCBzZW5oYTogc3RyaW5nLCByZUNhcHRjaGFUb2tlbjogc3RyaW5nID0gbnVsbCwgY29kaWdvMkZBOiBzdHJpbmcgPSBudWxsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICB0aGlzLnJlbW92ZVNlc3NhbygpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLnBvc3QodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vYXV0ZW50aWNhcicsIHsgVXN1YXJpbzogdXN1YXJpbywgU2VuaGE6IHNlbmhhLCBSZUNhcHRjaGFUb2tlbjogcmVDYXB0Y2hhVG9rZW4sIENvZGlnbzJGQTogY29kaWdvMkZBIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5TdWNjZXNzICYmIHIuRGF0YSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5LCByLkRhdGEuVG9rZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdHJvY2FyRW1wcmVzYSh1c3VhcmlvOiBzdHJpbmcsIGVtcHJlc2FJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLnBvc3QodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vdHJvY2FyZW1wcmVzYScsIHsgRW1wcmVzYUlkOiBlbXByZXNhSWQgfSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5TdWNjZXNzICYmIHIuRGF0YSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5Ub2tlbktleSwgci5EYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjbG9uYXIodXN1YXJpbzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLnBvc3QodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vY2xvbmFyJywgeyBVc3VhcmlvOiB1c3VhcmlvIH0sIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuU3VjY2VzcyAmJiByLkRhdGEgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91dGlsaXRpZXMuc2V0TG9jYWxTdG9yYWdlKHRoaXMuX3BsYXRhZm9ybWEuVG9rZW5LZXksIHIuRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dvdXQoKSB7XHJcbiAgICAgICAgYWxlcnQoJ2xvZ291dCcpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc0xvZ2dlZCgpKSB7XHJcbiAgICAgICAgICAgIGFsZXJ0KCdjZW50cm9jb250cm9sZS91c3VhcmlvL0xvZ291dCcpO1xyXG4gICAgICAgICAgICB0aGlzLl9odHRwLnBvc3QodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vTG9nb3V0JywgbnVsbCwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVNlc3NhbygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdsb2dpbicpLnRoZW4ociA9PiB7IGxvY2F0aW9uLnJlbG9hZCgpOyB9KTsgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVNlc3NhbygpO1xyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnbG9naW4nKS50aGVuKHIgPT4geyBsb2NhdGlvbi5yZWxvYWQoKTsgfSk7ICAgICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGVybWlzc2lvbnModXJsOiBzdHJpbmcsIGxvZ0F0aXZpZGFkZTogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLmdldCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9nZXRwZXJtaXNzYW8/dXJsPScgKyB1cmwgKyAnJmxvZ2F0aXZpZGFkZT0nICsgbG9nQXRpdmlkYWRlLnRvU3RyaW5nKCksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyOiBhbnkpID0+IG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRyb2NhU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1Ryb2NhclNlbmhhJywgbW9kZWwsIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyOiBhbnkpID0+IG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFJlY3VwZXJhclNlbmhhKG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9SZWN1cGVyYXJTZW5oYScsIG1vZGVsLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCkgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSZXNldGFyU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1Jlc2V0YXJTZW5oYScsIG1vZGVsKVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyOiBhbnkpID0+IG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldExvZ2luUmVzb3VyY2VzKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5nZXQodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL2FwcC9HZXRMb2dpblJlc291cmNlcycpXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzUGVybWlzc2lvbih1cmw6IHN0cmluZywga2V5RnVuY3Rpb246IHN0cmluZyA9ICd2aWV3Jyk6IGJvb2xlYW4ge1xyXG5cclxuICAgICAgICBpZiAodXJsID09ICcvJyAmJiBrZXlGdW5jdGlvbiA9PSAndmlldycpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICBsZXQgdXJsR2VuZXJpY2EgPSB0aGlzLmdldFVybEdlbmVyaWNhKHVybCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nlc3Nhby5QZXJtaXNzb2VzLnNvbWUocyA9PiBzLlVSTCA9PSB1cmxHZW5lcmljYSAmJiBzLkNoYXZlRnVuY2lvbmFsaWRhZGUgPT0ga2V5RnVuY3Rpb24gJiYgcy5BY2Vzc28pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBlcm1pc3Npb24odXJsOiBzdHJpbmcsIGxvZ0F0aXZpZGFkZTogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcblxyXG4gICAgICAgIGxldCB1cmxHZW5lcmljYSA9IHRoaXMuZ2V0VXJsR2VuZXJpY2EodXJsKTtcclxuICAgICAgICBsZXQgY29udGVtVXJsID0gdGhpcy5fc2Vzc2FvLlBlcm1pc3NvZXMuc29tZShzID0+IHMuVVJMID09IHVybEdlbmVyaWNhKTtcclxuICAgICAgICBpZiAoY29udGVtVXJsKSB7XHJcbiAgICAgICAgICAgIGlmIChsb2dBdGl2aWRhZGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbGlkYVNlc3Nhbyh1cmwpLnBpcGUobWFwKHJldCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXQuc3VjY2VzcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAxKSB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBlcm1pc3Npb25zKHVybEdlbmVyaWNhLCBsb2dBdGl2aWRhZGUpLnBpcGUobWFwKHJldCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmV0LnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmV0LmRhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldC5kYXRhLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5maWx0ZXIocyA9PiBzLlVSTCA9PSBpdGVtLlVSTCAmJiBzLkNoYXZlRnVuY2lvbmFsaWRhZGUgPT0gaXRlbS5DaGF2ZUZ1bmNpb25hbGlkYWRlKS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Nhby5QZXJtaXNzb2VzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldC5kYXRhLnNvbWUocyA9PiBzLlVSTCA9PSB1cmxHZW5lcmljYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlNlc3Npb25LZXksIEpTT04uc3RyaW5naWZ5KHRoaXMuX3Nlc3NhbykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7IFxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDEpIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhU2Vzc2FvKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAuZ2V0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL3ZhbGlkYXNlc3Nhbz91cmw9JyArIHVybCwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyOiBhbnkpID0+IG5ldyBJbmZvTG9naW5Nb2RlbChyID09PSB0cnVlLCAnJywgcikpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVTZXNzYW8oKSB7XHJcbiAgICAgICAgYWxlcnQoJ3JlbW92ZVNlc3NhbycpO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZW1vdmUgc2Vzc29lcycsIGtleSk7XHJcbiAgICAgICAgICAgIGlmICgha2V5LmluY2x1ZGVzKCdEYXNoYm9hcmQsY29scycpKSB7XHJcbiAgICAgICAgICAgICAgICBhbGVydChrZXkpO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsU3RvcmFnZVtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVmaW5lUGFnaW5hQXRpdmEodXJsKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9wbGF0YWZvcm1hLk1lbnUgPT0gbnVsbCB8fCB1cmwgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wbGF0YWZvcm1hLlBhZ2luYUF0aXZhID0gbnVsbDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGF1eDogc3RyaW5nW10gPSB1cmwuc3Vic3RyaW5nKDEpLnJlcGxhY2UoLy0vZywgJycpLnRvTG93ZXJDYXNlKCkuc3BsaXQoJy8nKTtcclxuICAgICAgICBsZXQgdGl0dWxvTWVudTogc3RyaW5nID0gYXV4Lmxlbmd0aCA+IDAgPyBhdXhbMF0udG9TdHJpbmcoKSA6IHVybDtcclxuICAgICAgICBsZXQgcGFyYW1ldHJvc1VybDogc3RyaW5nW10gPSB1cmwuc3BsaXQoJy8nKS5zbGljZSgyKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGl0dWxvTWVudS5pbmRleE9mKCdhc2hib2FyZCcpID4gLTEpXHJcbiAgICAgICAgICAgIHRoaXMuX3BsYXRhZm9ybWEuUGFnaW5hQXRpdmEgPSB7IEljb25lOiAnd2lkZ2V0cycsIFRpdHVsbzogJ0Rhc2hib2FyZCcgfTsgIFxyXG5cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW06IGFueSA9IHRoaXMuX3BsYXRhZm9ybWEuTWVudS5maWx0ZXIobSA9PiBtLlRpdGxlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aXR1bG9NZW51KSA+IC0xKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgc3ViVGl0dWxvID0gXCJcIjtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0cm9zVXJsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNHdWlkKHBhcmFtZXRyb3NVcmxbaV0pICYmIGlzTmFOKHBhcnNlRmxvYXQocGFyYW1ldHJvc1VybFtpXSkpKVxyXG4gICAgICAgICAgICAgICAgICAgIHN1YlRpdHVsbyArPSBcIiAtIFwiICsgdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnRvUGFzY2FsQ2FzZShwYXJhbWV0cm9zVXJsW2ldKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpdGVtICE9IG51bGwgJiYgaXRlbS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wbGF0YWZvcm1hLlBhZ2luYUF0aXZhID0geyBJY29uZTogaXRlbVswXS5JY29uLCBUaXR1bG86IGl0ZW1bMF0uVGl0bGUgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RpdGxlLnNldFRpdGxlKFwiUGxhdGFmb3JtYSAtIFwiICsgdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZShpdGVtWzBdLlRpdGxlKSArIHN1YlRpdHVsbyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IHsgSWNvbmU6ICdzZWN1cml0eScsIFRpdHVsbzogJ1BsYXRhZm9ybWEnIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFVybEdlbmVyaWNhKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcmV0b3JubyA9IFwiXCI7XHJcbiAgICAgICAgbGV0IHVybFBhcnRzOiBzdHJpbmdbXSA9IHVybC5zcGxpdCgnLycpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXJsUGFydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKCFpc05hTihwYXJzZUZsb2F0KHVybFBhcnRzW2ldKSkgfHwgdGhpcy5pc0d1aWQodXJsUGFydHNbaV0pIHx8IHVybFBhcnRzW2ldLnRvTG93ZXJDYXNlKCkgPT0gJ25vdm8nKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJldG9ybm8gKz0gJy8nICsgdXJsUGFydHNbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXRvcm5vLnN1YnN0cmluZygxKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVycm9ySGFuZGxpbmcoZTogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlSW5wdXQ8SW5mb0xvZ2luTW9kZWw+IHtcclxuICAgICAgICBpZiAoZS5zdGF0dXMgPT0gNDAxKSBcclxuICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAoZS5zdGF0dXMgPT0gNTAwKVxyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnNTAwJyk7XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKGUuZXJyb3IgIT0gbnVsbCAmJiBlLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uICE9IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBvZihuZXcgSW5mb0xvZ2luTW9kZWwoZmFsc2UsIGUuZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24pKTtcclxuXHJcbiAgICAgICAgZWxzZSByZXR1cm4gb2YobmV3IEluZm9Mb2dpbk1vZGVsKGZhbHNlLCAnSG91dmUgdW0gcHJvYmxlbWEgZSBuw6NvIGZvaSBwb3Nzw612ZWwgY29uZWN0YXInKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0d1aWQodmFsdWUpIDogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh2YWx1ZSB8fCAnJykubWF0Y2goJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgIT09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0b1Bhc2NhbENhc2UodmFsdWU6IHN0cmluZyk6IHN0cmluZ3tcclxuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvKF5cXHd8LVxcdykvZywgKHcxLCB3MiwgaSkgPT4gaSA9PSAwID8gdzEudG9VcHBlckNhc2UoKSA6IHcxWzFdLnRvVXBwZXJDYXNlKCkpO1xyXG4gICAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PGluZm8tbW9kYWwgbW9kYWx0aXRsZT1cIkluYXRpdmlkYWRlXCIgKG9uc2F2ZSk9XCJhdGl2byh0cnVlKVwiIGxhYmVsc3VibWl0PVwiU2ltXCIgbGFiZWxjYW5jZWw9XCIoe3sgdGltZSB9fSkge3sgJ05hbycgfCB0cmFuc2xhdGUgfX1cIj5cclxuICAgICAgICAgICAgPGxhYmVsIHN0eWxlPVwiZm9udC1zaXplOjEzMCVcIj57eyAnVm9jZUFpbmRhRXN0YVV0aWxpemFuZG9QbGF0YWZvcm1hJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XHJcblx0XHQ8L2luZm8tbW9kYWw+XHJcblx0YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVmcmVzaFNlc3Npb25UaW1lTW9kYWxDb21wb25lbnQge1xyXG4gICAgdGltZSA9IDE1O1xyXG4gICAgaW50ZXJ2YWw7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3JlZjogTWF0RGlhbG9nUmVmPFJlZnJlc2hTZXNzaW9uVGltZU1vZGFsQ29tcG9uZW50PikgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy50aW1lID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZS0tO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXRpdm8oZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMDApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBhdGl2byhhdGl2bzogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3JlZi5jbG9zZSh7IG1vZGFsQWN0aW9uOiBhdGl2byA/IEluZm9Nb2RhbEFjdGlvbi5ZZXMgOiBJbmZvTW9kYWxBY3Rpb24uTm8gfSk7XHJcbiAgICB9XHJcbn0iXX0=