ngx-sp-auth 0.0.0-watch → 1.0.2

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.
@@ -1,7 +1,6 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { FormGroup, Validators } from '@angular/forms';
3
3
  import { map, Subscription, take, timer } from 'rxjs';
4
- //import { CustomLoginService } from 'src/app/project/custom/login/custom-login.service';
5
4
  import { FormUtils } from 'ngx-sp-infra';
6
5
  import * as i0 from "@angular/core";
7
6
  import * as i1 from "ngx-bootstrap/modal";
@@ -17,9 +16,7 @@ import * as i10 from "@angular/router";
17
16
  import * as i11 from "ngx-toastr";
18
17
  import * as i12 from "@angular/common";
19
18
  export class LoginComponent {
20
- constructor(
21
- //public _customLoginService: CustomLoginService,
22
- _bsModalService, _messageService, _formBuilder, _authService, _serverService, _environmentService, _authStorageService, _customLoginService, _title, _router, _toastrService) {
19
+ constructor(_bsModalService, _messageService, _formBuilder, _authService, _serverService, _environmentService, _authStorageService, _customLoginService, _title, _router, _toastrService) {
23
20
  this._bsModalService = _bsModalService;
24
21
  this._messageService = _messageService;
25
22
  this._formBuilder = _formBuilder;
@@ -178,7 +175,7 @@ export class LoginComponent {
178
175
  }
179
176
  //Incialização de Senha
180
177
  if (response.InitializePassword) {
181
- let param = btoa(`true$${this.dominio}$${this.usuario}`);
178
+ let param = btoa(`true$${this.dominio}$${this.usuario}$${response.statusSenha}`);
182
179
  this._router.navigate([`auth/login/novaSenha/${param}`]);
183
180
  this._toastrService.success("Verifique no seu e-mail o código de validação.");
184
181
  }
@@ -222,7 +219,7 @@ export class LoginComponent {
222
219
  this._authService.forgottenPassword(this.formFgtPsw.value).subscribe({
223
220
  next: (response) => {
224
221
  this.closeForgottenPasswordModal();
225
- let param = btoa(`false$${this.dominio}$${this.usuario}$${3}`);
222
+ let param = btoa(`false$${this.dominioFgtPsw}$${this.usuarioFgtPsw}$${3}`);
226
223
  this._router.navigate([`auth/login/novaSenha/${param}`]);
227
224
  this._toastrService.success("Verifique no seu e-mail o código de validação.");
228
225
  },
@@ -323,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
323
320
  type: Component,
324
321
  args: [{ selector: 'lib-login', standalone: false, preserveWhitespaces: true, template: "<div class=\"container-fluid\">\r\n\t<div class=\"row\">\r\n\t\t<!-- Conte\u00FAdo da DIV do background -->\r\n\t\t<div class=\"col-md-7\">\r\n\t\t\t<div class=\"background\" style=\"background-image: linear-gradient(to bottom, rgba(10, 44, 81, 0.9), rgba(10, 44, 81, 0.9)), url({{_customLoginService.loginBackground}})\">\r\n\t\t\t\t<div class=\"text-position texto-apresentacao ps-5\">\r\n\t\t\t\t\t<h1 class=\"title\" id=\"title\"></h1>\r\n\t\t\t\t\t<p class=\"subtitle\" id=\"subtitle\"></p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<!-- Conte\u00FAdo da DIV de Login -->\r\n\t\t<div class=\"col-md-5\">\r\n\r\n\t\t\t<div class=\"div-size\">\r\n\t\t\t\t<div class=\"logotipo\">\r\n\t\t\t\t\t<img style=\"height: 95px;\" src=\"{{ this._customLoginService.loginLogotipo }}\" alt=\"{{ this._customLoginService.loginAltLogotipo }}\" />\r\n\t\t\t\t</div>\r\n\t\t\t\t<form *ngIf=\"!showParmsAuthentication2Fa; else Authentication2Fa\" [formGroup]=\"form\" class=\"form-position\">\r\n\t\t\t\t\t<div class=\"input-group input-group-lg form-item\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\" id=\"basic-addon1\"\r\n\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px\">\r\n\t\t\t\t\t\t\t<img src=\"assets/icons/cloud.svg\" alt=\"cloud icon\" />\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"dominio\" id=\"dominio\"\r\n\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"Dom\u00EDnio\" aria-label=\"Dom\u00EDnio\"\r\n\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('dominio'))\">\r\n\t\t\t\t\t\t<app-field-error-message [control]=\"form.get('dominio')\" label=\"Dom\u00EDnio\"></app-field-error-message>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"input-group input-group-lg form-item\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\" id=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px\">\r\n\t\t\t\t\t\t\t<img src=\"assets/icons/at-sign.svg\" alt=\"at-sign icon\" />\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"usuario\" id=\"usuario\"\r\n\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"Usu\u00E1rio\" aria-label=\"Usu\u00E1rio\"\r\n\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('usuario'))\">\r\n\t\t\t\t\t\t<app-field-error-message [control]=\"form.get('usuario')\" label=\"Usu\u00E1rio\"></app-field-error-message>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"input-group input-group-lg form-item\" style=\"margin-bottom: 8px;\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\" id=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px;\">\r\n\t\t\t\t\t\t\t<img src=\"assets/icons/lock.svg\" alt=\"lock-icon\" />\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<input type=\"password\" class=\"form-control\" formControlName=\"senha\" id=\"senha\"\r\n\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"Senha\" aria-label=\"senha\"\r\n\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('senha'))\">\r\n\t\t\t\t\t\t<app-field-error-message [control]=\"form.get('senha')\" label=\"Senha\"></app-field-error-message>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"remember-password\">\r\n\t\t\t\t\t<!-- Lembrar Senha\r\n\t\t\t\t\t\t<input id=\"checkboxLembrarSenha\" type=\"checkbox\" />\r\n\t\t\t\t\t\t<label for=\"checkboxLembrarSenha\"> Lembrar minha senha </label>\r\n \t\t\t\t\t-->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<button [disabled]=\"isLoading\" (click)=\"getServer()\" type=\"submit\"\r\n\t\t\t\t\t\tclass=\"btn btn-primary btn-acessar btn-lg\">\r\n\t\t\t\t\t\t<app-loading-button [isLoading]=\"isLoading\"></app-loading-button>\r\n\t\t\t\t\t\t<span> Acessar </span>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button type=\"button\" (click)=\"openForgottenPasswordModal(forgottenPasswordModal)\" class=\"forgotten-password\">\r\n\t\t\t\t\t\t<span> Esqueceu sua senha? </span>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</form>\r\n\r\n\t\t\t\t<ng-template #Authentication2Fa>\r\n\t\t\t\t\t<form [formGroup]=\"formAuthentication2Fa\" class=\"form-position\">\r\n\t\t\t\t\t\t<div class=\"input-group input-group-lg form-item mb-3\">\r\n\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px;\">\r\n\t\t\t\t\t\t\t\t<img src=\"assets/icons/lock.svg\" alt=\"lock-icon\" />\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"code\" id=\"code\"\r\n\t\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"C\u00F3digo de 2 fatores\" aria-label=\"C\u00F3digo de 2 fatores\"\r\n\t\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAuthentication2Fa.get('code'))\">\r\n\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAuthentication2Fa.get('code')\" label=\"C\u00F3digo de 2 fatores\"></app-field-error-message>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"row mb-3\">\r\n\t\t\t\t\t\t\t<button (click)=\"voltar()\" type=\"button\" class=\"btn btn-acessar glb-btn-outline-dark-disabled col me-1\">\r\n\t\t\t\t\t\t\t\tVoltar\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button [disabled]=\"isLoadingSendAuthentication2Fa\" (click)=\"sendCode()\" type=\"button\" class=\"btn btn-acessar btn-primary col ms-1\">\r\n\t\t\t\t\t\t\t\t<app-loading-button [isLoading]=\"isLoadingSendAuthentication2Fa\"></app-loading-button>\r\n\t\t\t\t\t\t\t\tAcessar\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t<button *ngIf=\"secondsLeft == 0; else newCode\" \r\n\t\t\t\t\t\t\t\t[disabled]=\"isLoading\" (click)=\"getNewCode()\" type=\"button\" class=\"btn btn-acessar btn-outline-primary col\">\r\n\t\t\t\t\t\t\t\t<app-loading-button [isLoading]=\"isLoading\"></app-loading-button>\r\n\t\t\t\t\t\t\t\tEnviar novo c\u00F3digo\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<ng-template #newCode>\r\n\t\t\t\t\t\t\t\t<p class=\"text-center\">{{ secondsLeft}} {{ secondsLeft == 1 ? 'segundo' : 'segundos' }} para obter novo c\u00F3digo</p>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</form>\t\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t\r\n\t\t\t\t<div class=\"footer-position\">\r\n\t\t\t\t\t<footer>\r\n\t\t\t\t\t\t<span class=\"footer\"> \r\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/JmGeNlJdw/1/poli%CC%81tica-de-privacidade/pt_BR?s=1685731510066\" target=\"_blank\" class=\"sispro text-primary\"> Pol\u00EDtica de Privacidade </a>\r\n\t\t\t\t\t\t\t<p class=\"separator\"> | </p>\r\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/Rork35NN2/2/poli%CC%81tica-de-cookies/pt_BR?s=1685731551976\" target=\"_blank\" class=\"sispro text-primary\"> Pol\u00EDtica de Cookies </a>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<span class=\"footer\"> Desenvolvido por \r\n\t\t\t\t\t\t\t<a href=\"https://www.sispro.com.br/\" target=\"_blank\" class=\"sispro text-primary\"> sispro s/a </a>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<span class=\"footer\"> Servi\u00E7os e Tecnologia da informa\u00E7\u00E3o \u00A9 {{ year }} Todos os direitos reservados </span>\r\n\t\t\t\t\t\t\t<div class=\"icons\">\r\n\t\t\t\t\t\t\t\t<a href=\"https://pt-br.facebook.com/SisproERP/\" target=\"_blank\">\r\n\t\t\t\t\t\t\t\t\t<lib-icon class=\"text-primary\" iconName=\"facebook\" iconSize=\"medium-small\"/>\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<a href=\"https://www.instagram.com/accounts/login/?next=/sispro_software/\" target=\"_blank\">\r\n\t\t\t\t\t\t\t\t\t<lib-icon class=\"text-primary\" iconName=\"instagram\" iconSize=\"medium-small\"/>\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<a href=\"https://br.linkedin.com/company/sispro\" target=\"_blank\">\r\n\t\t\t\t\t\t\t\t\t<lib-icon class=\"text-primary\" iconName=\"linkedin\" iconSize=\"medium-small\"/>\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t<div class=\"d-flex justify-content-center\">\r\n\t\t\t\t\t\t\t\t<a [href]=\"geturlErpConfig()\" style=\"text-decoration: none; font-size: 12px;\">\r\n\t\t\t\t\t\t\t\t\tConfigurar ERP\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</footer>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n\r\n<!-- Template do modal de senha esquecida -->\r\n<ng-template #forgottenPasswordModal>\r\n\t<form [formGroup]=\"formFgtPsw\">\r\n\t\t<div class=\"modal-content\" style=\"box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.5);\">\r\n\t\t\t<div class=\"modal-header p-3\">\r\n\t\t\t\t<h4 class=\"modal-title\"> Recupera\u00E7\u00E3o de senha </h4>\r\n\t\t\t\t<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n\t\t\t\t\t(click)=\"closeForgottenPasswordModal()\">\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"modal-body\">\r\n\t\t\t\t<label for=\"inputDominioFgtPsw\" class=\"input-label\"> Dom\u00EDnio <span class=\"text-danger\">*</span></label>\r\n\t\t\t\t<input type=\"text\" id=\"inputDominioFgtPsw\" formControlName=\"dominioFgtPsw\"\r\n\t\t\t\t\tclass=\"form-control input-text\" aria-label=\"Sizing example input\" aria-label=\"Dom\u00EDnio\"\r\n\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('dominioFgtPsw'))\">\r\n\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('dominioFgtPsw')\" label=\"Dom\u00EDnio\"></app-field-error-message>\t\t\t\t\r\n\r\n\t\t\t\t<label for=\"inputUsuarioFgtPsw\" class=\"input-label\"> Usu\u00E1rio <span class=\"text-danger\">*</span></label>\r\n\t\t\t\t<input type=\"text\" id=\"inputUsuarioFgtPsw\" formControlName=\"usuarioFgtPsw\"\r\n\t\t\t\t\tclass=\"form-control input-text\" aria-label=\"Sizing example input\" aria-label=\"Usu\u00E1rio\"\r\n\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('usuarioFgtPsw'))\">\r\n\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('usuarioFgtPsw')\" label=\"Usu\u00E1rio\"></app-field-error-message>\t\t\t\t\r\n\t\t\r\n\t\t\t</div>\r\n\t\t\t<div class=\"modal-footer\">\r\n\t\t\t\t<button type=\"button\" class=\"btn glb-btn-dark-disabled modal-button\" (click)=\"closeForgottenPasswordModal()\">\r\n\t\t\t\t\t<span> Cancelar </span>\r\n\t\t\t\t</button>\r\n\t\t\t\t<button type=\"button\" class=\"btn btn-primary modal-button\" (click)=\"sendForgottenPassword();\">\r\n\t\t\t\t\t<span> Continuar </span>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\r\n\t\t</div>\r\n\t</form>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";*{padding:0;margin:0;font-family:Open Sans,sans-serif}.background{display:grid;height:100vh;align-content:center;background-size:cover;color:#f5f5f5;align-items:center;justify-content:center}.div-size{display:flex;flex-direction:column;justify-content:space-around;width:100%;height:100vh;align-items:center;background-color:#f5f5f5;box-shadow:0 0 15px #333}.title{font-size:3.5vw;text-transform:uppercase;font-weight:700}.subtitle{font-size:21px}.logotipo{display:flex;justify-content:center;margin-top:10%}.form-position{display:flex;flex-direction:column;align-content:center;width:378px}.form-item{margin-bottom:16px}.input-group-text{padding:10px 11px;border-radius:4px 0 0 4px}.remember-password{display:flex;align-items:center;margin-bottom:8px;justify-content:center}.remember-password label{margin-left:8px}.forgotten-password{background-color:#f5f5f5;border:none;text-decoration:underline;font-size:14px;box-shadow:none;margin-top:8px;cursor:pointer}.forgotten-password:focus{outline-style:none}.input-label{font-size:16px;padding:10px 0 8px 16px}.input-label:first-child{font-size:16px;padding-top:16px}.input-text{width:343px;height:38px;margin:0 0 10px 16px;padding:0 8px}.input-text:last-child{font-size:16px;margin-bottom:24px}.form-control{max-width:341px}.footer{display:flex;justify-content:center}.footer-position{font-size:14px;display:flex;justify-content:center;align-items:flex-end}.icons{display:flex;justify-content:center;align-items:center;margin-top:16px}.icons a{padding:4px}.icon-item{margin-left:24px;color:#007bff}.sispro{color:#2847a0;margin-left:5px;text-transform:uppercase;text-decoration:none;font-weight:700}.modal-footer{padding:0}.modal:before{content:\"\";display:inline-block;height:100%;vertical-align:middle}.modal-style{display:flex;align-items:center;justify-content:center}.modal-style h4{font-size:20px;font-weight:700;padding:10px}.modal-button{margin:16px 0;padding:7px 12px}.modal-button:last-child{margin-right:16px;margin-left:8px}.modal-close{display:flex;align-content:center;margin-right:10px;padding:6px}.col-md-7,.col-md-5{padding:0}.btn-acessar{height:48px;outline-style:none}.texto-apresentacao{align-items:start}.separator{margin-left:5px}\n"] }]
325
322
  }], ctorParameters: () => [{ type: i1.BsModalService }, { type: i2.MessageService }, { type: i3.FormBuilder }, { type: i4.AuthService }, { type: i5.ServerService }, { type: i6.EnvironmentService }, { type: i7.AuthStorageService }, { type: i8.LibCustomLoginService }, { type: i9.Title }, { type: i10.Router }, { type: i11.ToastrService }] });
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWF1dGgvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1hdXRoL3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQWUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3BFLE9BQU8sRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLdEQseUZBQXlGO0FBQ3pGLE9BQU8sRUFBRSxTQUFTLEVBQWtCLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQWV6RCxNQUFNLE9BQU8sY0FBYztJQUUxQjtJQUNDLGlEQUFpRDtJQUN6QyxlQUErQixFQUMvQixlQUErQixFQUMvQixZQUF5QixFQUN6QixZQUF5QixFQUN6QixjQUE2QixFQUM3QixtQkFBdUMsRUFDdkMsbUJBQXVDLEVBQ3hDLG1CQUEwQyxFQUN6QyxNQUFhLEVBQ2IsT0FBZSxFQUNmLGNBQTZCO1FBVjdCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN2Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUI7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UzsrQkFDQyxXQUFXLGNBR1QsS0FBSyx1QkFDSSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5cclxuaW1wb3J0IHsgbWFwLCBTdWJzY3JpcHRpb24sIHRha2UsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBCc01vZGFsUmVmLCBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcblxyXG4vL2ltcG9ydCB7IEN1c3RvbUxvZ2luU2VydmljZSB9IGZyb20gJ3NyYy9hcHAvcHJvamVjdC9jdXN0b20vbG9naW4vY3VzdG9tLWxvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtVXRpbHMsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnbmd4LXNwLWluZnJhJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnRzLnNlcnZpY2UnO1xyXG4vLyBpbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudHMnO1xyXG5pbXBvcnQgeyBMaWJDdXN0b21Mb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdXN0b20vY3VzdG9tLWxvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmVyL3NlcnZlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RvcmFnZS9hdXRoLXN0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi1sb2dpbicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2xvZ2luLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9sb2dpbi5jb21wb25lbnQuc2NzcyddLFxyXG5cdHN0YW5kYWxvbmU6IGZhbHNlLFxyXG5cdHByZXNlcnZlV2hpdGVzcGFjZXM6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0Ly9wdWJsaWMgX2N1c3RvbUxvZ2luU2VydmljZTogQ3VzdG9tTG9naW5TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG5cdFx0cHJpdmF0ZSBfYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfc2VydmVyU2VydmljZTogU2VydmVyU2VydmljZSxcclxuXHRcdHByaXZhdGUgX2Vudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfYXV0aFN0b3JhZ2VTZXJ2aWNlOiBBdXRoU3RvcmFnZVNlcnZpY2UsXHJcblx0XHRwdWJsaWMgX2N1c3RvbUxvZ2luU2VydmljZTogTGliQ3VzdG9tTG9naW5TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfdGl0bGU6IFRpdGxlLFxyXG5cdFx0cHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIF90b2FzdHJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlXHJcblx0KSB7IH1cclxuXHJcblx0Ly8gI3JlZ2lvbiA9PT09PT09PT09PiBQUk9QRVJUSUVTIDw9PT09PT09PT09XHJcblxyXG5cdC8vICNyZWdpb24gUFJJVkFURVxyXG5cclxuXHRwcml2YXRlIGlkRmd0UHN3OiBudW1iZXIgPSAxO1xyXG5cclxuXHQvLyAjZW5kcmVnaW9uIFBSSVZBVEVcclxuXHJcblx0Ly8gI3JlZ2lvbiBQVUJMSUNcclxuXHJcblx0cHVibGljIG1vZGFsUmVmPzogQnNNb2RhbFJlZjtcclxuXHJcblx0Ly8gIFZhcmnDoXZlaXMgZXNwZWPDrWZpY2FzIHBhcmEgZnVuY2lvbmFsaWRhZGVzIHBhZHLDtWVzIGRvcyBmb3JtdWzDoXJpb3NcclxuXHRwdWJsaWMgY3VycmVudFRpbWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cdHB1YmxpYyB5ZWFyOiBudW1iZXIgPSB0aGlzLmN1cnJlbnRUaW1lLmdldEZ1bGxZZWFyKCk7XHJcblxyXG5cdHB1YmxpYyBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgaXNMb2FkaW5nU2VuZEF1dGhlbnRpY2F0aW9uMkZhOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIHNob3dQYXJtc0F1dGhlbnRpY2F0aW9uMkZhID0gZmFsc2U7XHJcblx0cHVibGljIGlzTG9hZGluZ0dldE5ld0NvZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Ly9wcm9wcmllZGFkZXMgcXVlIHbDo28gcmVjZWJlciBvcyB2YWxvcmVzIGRvIGN1c3RvbUxvZ2luU2VydmljZSAjIyMjVkVSSUZJQ0FSIERFUE9JUyMjIyNcclxuXHJcblx0Ly8gQElucHV0KCkgY3VzdG9tUHJvcHJpZWRhZGVzTG9naW4/OiBDdXN0b21Qcm9wcmllZGFkZXNMb2dpbjtcclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiBQVUJMSUNcclxuXHJcblx0Ly8gI3JlZ2lvbiBUaW1lclxyXG5cclxuXHRwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHRwcml2YXRlIHRpbWVyRHVyYXRpb246IG51bWJlciA9IDkwO1xyXG5cdHB1YmxpYyBzZWNvbmRzTGVmdDogbnVtYmVyID0gdGhpcy50aW1lckR1cmF0aW9uO1xyXG5cclxuXHRwcml2YXRlIGNvdW50ZG93biQgPSB0aW1lcigwLCAxMDAwKS5waXBlKFxyXG5cdFx0dGFrZSh0aGlzLnRpbWVyRHVyYXRpb24gKyAxKSxcclxuXHJcblx0XHRtYXAoc2Vjb25kc0VsYXBzZWQgPT4gdGhpcy50aW1lckR1cmF0aW9uIC0gc2Vjb25kc0VsYXBzZWQpXHJcblx0KTtcclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiBUaW1lclxyXG5cclxuXHQvLyAjcmVnaW9uID09PT09PT09PT0+IEZPUk0gQlVJTERFUiA8PT09PT09PT09PVxyXG5cdHB1YmxpYyBmb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHRwdWJsaWMgZm9ybUZndFBzdzogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7O1xyXG5cdHB1YmxpYyBmb3JtQXV0aGVudGljYXRpb24yRmE6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pOztcclxuXHJcblx0Ly8gIFByb3ByaWVkYWRlIG5lY2Vzc8OhcmlvIHBhcmEgcXVlIGEgY2xhc3NlIHN0YXRpYyBGb3JtVXRpbHMgcG9zc2Egc2VyIHV0aWxpemFkYSBubyBIdG1sXHJcblx0cHVibGljIGdldCBGb3JtVXRpbHMoKTogdHlwZW9mIEZvcm1VdGlscyB7XHJcblx0XHRyZXR1cm4gRm9ybVV0aWxzO1xyXG5cdH1cclxuXHJcblx0Ly8gI3JlZ2lvbiBGT1JNIERBVEFcclxuXHJcblx0Ly8gIFZhcmnDoXZlaXMgZXNwZWPDrWZpY2FzIHBhcmEgZnVuY2lvbmFsaWRhZGVzIHBhZHLDtWVzIGRvcyBmb3JtdWzDoXJpb3MgKExvZ2luKVxyXG5cdHB1YmxpYyBnZXQgZG9taW5pbygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2RvbWluaW8nKT8udmFsdWU7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZ2V0IHVzdWFyaW8oKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLmZvcm0uZ2V0KCd1c3VhcmlvJyk/LnZhbHVlO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGdldCBzZW5oYSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3NlbmhhJyk/LnZhbHVlO1xyXG5cdH1cclxuXHJcblx0Ly8gIFZhcmnDoXZlaXMgZXNwZWPDrWZpY2FzIHBhcmEgZnVuY2lvbmFsaWRhZGVzIHBhZHLDtWVzIGRvcyBmb3JtdWzDoXJpb3MgKFJlcXVlc3RSZWNvdmVyUGFzc3dvcmQpXHJcblx0cHVibGljIGdldCBkb21pbmlvRmd0UHN3KCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5mb3JtRmd0UHN3LmdldCgnZG9taW5pb0ZndFBzdycpPy52YWx1ZTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBnZXQgdXN1YXJpb0ZndFBzdygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybUZndFBzdy5nZXQoJ3VzdWFyaW9GZ3RQc3cnKT8udmFsdWU7XHJcblx0fVxyXG5cclxuXHQvLyAgVmFyacOhdmVpcyBlc3BlY8OtZmljYXMgcGFyYSBmdW5jaW9uYWxpZGFkZXMgcGFkcsO1ZXMgZG9zIGZvcm11bMOhcmlvcyAoQXV0ZW50aWNhw6fDo28gMiBGYXRvcmVzKVxyXG5cdHB1YmxpYyBnZXQgY29kZSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybUF1dGhlbnRpY2F0aW9uMkZhLmdldCgnY29kZScpPy52YWx1ZTtcclxuXHR9XHJcblxyXG5cdC8vICNlbmRyZWdpb24gRk9STSBEQVRBXHJcblxyXG5cdC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLl90aXRsZS5zZXRUaXRsZSh0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5QYWdlVGl0bGUpO1xyXG5cclxuXHRcdGlmICh0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5UaXRsZSAhPSBcIlwiKSB7XHJcblx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikhLmlubmVySFRNTCA9IHRoaXMuX2N1c3RvbUxvZ2luU2VydmljZS5sb2dpblRpdGxlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5TdWJ0aXRsZSAhPSBcIlwiKSB7XHJcblx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3VidGl0bGVcIikhLmlubmVySFRNTCA9IHRoaXMuX2N1c3RvbUxvZ2luU2VydmljZS5sb2dpblN1YnRpdGxlO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5jcmVhdGVGb3JtKCk7XHJcblx0fVxyXG5cclxuXHQvLyAjcmVnaW9uIEZPUk0gVkFMSURBVE9SU1xyXG5cclxuXHQvLyAgTcOpdG9kbyBwYXJhIGNvbmZpZ3VyYcOnw6NvIGRvcyBjYW1wb3MgZGUgZWRpw6fDo28gZG8gZm9ybXVsw6FyaW8gKExvZ2luKVxyXG5cdHByaXZhdGUgY3JlYXRlRm9ybSgpOiB2b2lkIHtcclxuXHJcblx0XHQvLyAgRGFkb3Mgb3JpZ2luYWlzIGRlIExvZ2luXHJcblx0XHRpZiAodGhpcy5fZW52aXJvbm1lbnRTZXJ2aWNlLnByb2R1Y3Rpb24pIHtcclxuXHRcdFx0dGhpcy5mb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG5cdFx0XHRcdGRvbWluaW86IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxyXG5cdFx0XHRcdHVzdWFyaW86IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldXSxcclxuXHRcdFx0XHRzZW5oYTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKV1dXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdHRoaXMuZm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuXHRcdFx0XHRkb21pbmlvOiBbdGhpcy5fY3VzdG9tTG9naW5TZXJ2aWNlLmxvZ2luRGVzZW52RG9tYWluLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXV0sXHJcblx0XHRcdFx0dXN1YXJpbzogW3RoaXMuX2N1c3RvbUxvZ2luU2VydmljZS5sb2dpbkRlc2VudlVzZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApXV0sXHJcblx0XHRcdFx0c2VuaGE6IFt0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5EZXNlbnZQYXNzd29yZCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldXVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vICBNw6l0b2RvIHBhcmEgY29uZmlndXJhw6fDo28gZG9zIGNhbXBvcyBkZSBlZGnDp8OjbyBkbyBmb3JtdWzDoXJpbyAoUmVxdWVzdFJlY292ZXJQYXNzd29yZClcclxuXHRwcml2YXRlIGNyZWF0ZUZvcm1Gb3Jnb3R0ZW5QYXNzd29yZCgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLmZvcm1GZ3RQc3cgPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cCh7XHJcblx0XHRcdGRvbWluaW9GZ3RQc3c6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxyXG5cdFx0XHR1c3VhcmlvRmd0UHN3OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApXV0sXHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmZvcm1GZ3RQc3cuZ2V0KCdyZWNvdmVyQ2RvbWluaW9GZ3RQc3dvZGVSZWNQc3cnKT8uc2V0VmFsdWUoJycpO1xyXG5cdFx0dGhpcy5mb3JtRmd0UHN3LmdldCgndXN1YXJpb0ZndFBzdycpPy5zZXRWYWx1ZSgnJyk7XHJcblx0fVxyXG5cclxuXHQvLyAgTcOpdG9kbyBwYXJhIGNvbmZpZ3VyYcOnw6NvIGRvcyBjYW1wb3MgZGUgZWRpw6fDo28gZG8gZm9ybXVsw6FyaW8gKEF1dGVudGljYcOnw6NvIDIgRmF0b3JlcylcclxuXHRwcml2YXRlIGNyZWF0ZUZvcm1BdXRoZW50aWNhdGlvbjJGYSgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLmZvcm1BdXRoZW50aWNhdGlvbjJGYSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuXHRcdFx0Y29kZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildXSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuZm9ybS5nZXQoJ2NvZGUnKT8uc2V0VmFsdWUoJycpO1xyXG5cdH1cclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiBGT1JNIFZBTElEQVRPUlNcclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBGT1JNIEJVSUxERVIgPD09PT09PT09PT1cclxuXHJcblx0Ly8gI3JlZ2lvbiA9PT09PT09PT09PiBTRVJWSUNFIE1FVEhPRFMgPD09PT09PT09PT1cclxuXHJcblx0Ly8gI3JlZ2lvbiBHRVRcclxuXHJcblx0Ly8gT2J0w6ltIGEgVXJsIGRvIENvbmZpZyBFcnBcclxuXHRwdWJsaWMgZ2V0dXJsRXJwQ29uZmlnKCk6IHN0cmluZyB7XHJcblx0XHQvLyB2ZXJpZmljYXIgZGVwb2lzIFxyXG5cdFx0cmV0dXJuIGAke3RoaXMuX2Vudmlyb25tZW50U2VydmljZS5ob3N0TmFtZX0vU2lzcHJvRXJwQ2xvdWQvQ29uZmlnRXJwYDtcclxuXHR9XHJcblxyXG5cdC8qXHJcblx0KiBPYnTDqW0gb3MgcGFyw6JtZXRyb3MgZGUgY29uZmlndXJhw6fDo28gZG8gc2Vydmlkb3IgcGFyYSBBdXRlbnRpY2HDp8OjbyBCw6FzaWNhIGRlIHNlZ3VyYW7Dp2FcclxuXHQqL1xyXG5cdHB1YmxpYyBnZXRTZXJ2ZXIoKTogdm9pZCB7XHJcblxyXG5cdFx0aWYgKHRoaXMuZm9ybS52YWxpZCkge1xyXG5cdFx0XHR0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcblxyXG5cdFx0XHR0aGlzLl9zZXJ2ZXJTZXJ2aWNlLmdldFNlcnZlcigpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogcmVzcG9uc2UgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2dPbigpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0XHQvL3RoaXMuX3Byb2plY3RVdGlsc2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKTtcclxuXHRcdFx0XHRcdHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcblxyXG5cdFx0XHRcdFx0Ly9wb2RlIHNlciBzdWJzdGl0dWlkbyBwb3IgY29uc29sZS5lcnJvclxyXG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yKVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdH0pXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRGb3JtVXRpbHMudmFsaWRhdGVGaWVsZHModGhpcy5mb3JtKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vICNlbmRyZWdpb24gR0VUXHJcblxyXG5cdC8vICNyZWdpb24gUE9TVFxyXG5cclxuXHQvLyAgRXhlY3V0YSBvIExvZ2luXHJcblx0cHVibGljIGxvZ09uKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fYXV0aFNlcnZpY2UubG9naW4odGhpcy5mb3JtLnZhbHVlKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuXHRcdFx0XHR0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHRpZiAocmVzcG9uc2UuRmVlZGJhY2tNZXNzYWdlICE9IFwiXCIpIHtcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2Uud2FybmluZyhyZXNwb25zZS5GZWVkYmFja01lc3NhZ2UsXHJcblx0XHRcdFx0XHRcdCcnLFxyXG5cdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0dGltZU91dDogMzAwMCxcclxuXHRcdFx0XHRcdFx0XHRleHRlbmRlZFRpbWVPdXQ6IDIwMDBcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvL0luY2lhbGl6YcOnw6NvIGRlIFNlbmhhXHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlLkluaXRpYWxpemVQYXNzd29yZCkge1xyXG5cdFx0XHRcdFx0bGV0IHBhcmFtOiBzdHJpbmcgPSBidG9hKGB0cnVlJCR7dGhpcy5kb21pbmlvfSQke3RoaXMudXN1YXJpb31gKTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW2BhdXRoL2xvZ2luL25vdmFTZW5oYS8ke3BhcmFtfWBdKTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLl90b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MoXCJWZXJpZmlxdWUgbm8gc2V1IGUtbWFpbCBvIGPDs2RpZ28gZGUgdmFsaWRhw6fDo28uXCIpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlLkluZnJhSW5BdXRoVHlwZUlkID09IDEgJiYgcmVzcG9uc2UuSW5mcmFJbjJGYVR5cGVJZCAhPSBudWxsICYmIHJlc3BvbnNlLkluZnJhSW4yRmFUeXBlSWQgPT0gMSAmJiByZXNwb25zZS5JczJGYUVuYWJsZWQpIHtcclxuXHRcdFx0XHRcdHRoaXMuY3JlYXRlRm9ybUF1dGhlbnRpY2F0aW9uMkZhKCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5jb3VudGRvd24kLnN1YnNjcmliZShzZWNvbmRzTGVmdCA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2Vjb25kc0xlZnQgPSBzZWNvbmRzTGVmdDtcclxuXHRcdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuc2hvd1Bhcm1zQXV0aGVudGljYXRpb24yRmEgPSB0cnVlO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2Uuc3VjY2VzcyhcIlZlcmlmaXF1ZSBubyBzZXUgZS1tYWlsIG8gY8OzZGlnbyBkZSB2YWxpZGHDp8Ojby5cIik7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdC8vdGhpcy5fcHJvamVjdFV0aWxzZXJ2aWNlLnNob3dIdHRwRXJyb3IoZXJyb3IpO1xyXG5cdFx0XHRcdHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yKVxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblxyXG5cdH1cclxuXHJcblx0Ly8gRW52aWEgcmVxdWlzacOnw6NvIHBhcmEgZXNxdWVjZXIgc2VuaGFcclxuXHRwdWJsaWMgc2VuZEZvcmdvdHRlblBhc3N3b3JkKCk6IHZvaWQge1xyXG5cclxuXHRcdGlmICh0aGlzLmZvcm1GZ3RQc3cudmFsaWQpIHtcclxuXHRcdFx0dGhpcy5fc2VydmVyU2VydmljZS5nZXRTZXJ2ZXIoKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6IHJlc3BvbnNlID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuZm9yZ290dGVuUGFzc3dvcmQoKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdC8vdGhpcy5fcHJvamVjdFV0aWxzZXJ2aWNlLnNob3dIdHRwRXJyb3IoZXJyb3IpO1xyXG5cdFx0XHRcdFx0dGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcclxuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihlcnJvcilcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9KVxyXG5cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdEZvcm1VdGlscy52YWxpZGF0ZUZpZWxkcyh0aGlzLmZvcm1GZ3RQc3cpO1xyXG5cdFx0fVxyXG5cclxuXHR9XHJcblxyXG5cdC8vIFJlcXVpc2nDp8OjbyBwYXJhIGVzcXVlY2VyIHNlbmhhXHJcblx0cHVibGljIGZvcmdvdHRlblBhc3N3b3JkKCk6IHZvaWQge1xyXG5cclxuXHRcdHRoaXMuX2F1dGhTZXJ2aWNlLmZvcmdvdHRlblBhc3N3b3JkKHRoaXMuZm9ybUZndFBzdy52YWx1ZSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5jbG9zZUZvcmdvdHRlblBhc3N3b3JkTW9kYWwoKTtcclxuXHJcblx0XHRcdFx0bGV0IHBhcmFtOiBzdHJpbmcgPSBidG9hKGBmYWxzZSQke3RoaXMuZG9taW5pb30kJHt0aGlzLnVzdWFyaW99JCR7M31gKTtcclxuXHJcblx0XHRcdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlKFtgYXV0aC9sb2dpbi9ub3ZhU2VuaGEvJHtwYXJhbX1gXSk7XHJcblxyXG5cdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2Uuc3VjY2VzcyhcIlZlcmlmaXF1ZSBubyBzZXUgZS1tYWlsIG8gY8OzZGlnbyBkZSB2YWxpZGHDp8Ojby5cIik7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHtcclxuXHRcdFx0XHQvL3RoaXMuX3Byb2plY3RVdGlsc2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKTtcclxuXHRcdFx0XHR0aGlzLl9tZXNzYWdlU2VydmljZS5zaG93QWxlcnREYW5nZXIoZXJyb3IpO1xyXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihlcnJvcilcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHR9XHJcblxyXG5cdC8vIEVudmlhIHJlcXVpc2nDp8OjbyBwYXJhIHZhbGlkYXIgY8OzZGlnbyAyIGZhdG9yZXNcclxuXHRwdWJsaWMgc2VuZENvZGUoKTogdm9pZCB7XHJcblxyXG5cdFx0aWYgKHRoaXMuZm9ybUF1dGhlbnRpY2F0aW9uMkZhLnZhbGlkKSB7XHJcblx0XHRcdHRoaXMuaXNMb2FkaW5nU2VuZEF1dGhlbnRpY2F0aW9uMkZhID0gdHJ1ZTtcclxuXHJcblx0XHRcdHRoaXMudmFsaWRhdGVDb2RlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRGb3JtVXRpbHMudmFsaWRhdGVGaWVsZHModGhpcy5mb3JtQXV0aGVudGljYXRpb24yRmEpO1xyXG5cdFx0fVxyXG5cclxuXHR9XHJcblxyXG5cdC8vIFZhbGlkYcOnw6NvIGRvIGPDs2RpZ28gMiBmYXRvcmVzXHJcblx0cHVibGljIHZhbGlkYXRlQ29kZSgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLl9hdXRoU2VydmljZS52YWxpZGF0ZUF1dGhlbnRpY2F0aW9uMkZhKHRoaXMuY29kZSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblxyXG5cdFx0XHRcdHRoaXMuaXNMb2FkaW5nU2VuZEF1dGhlbnRpY2F0aW9uMkZhID0gZmFsc2U7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHtcclxuXHRcdFx0XHR0aGlzLmlzTG9hZGluZ1NlbmRBdXRoZW50aWNhdGlvbjJGYSA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHQvL3RoaXMuX3Byb2plY3RVdGlsc2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKTtcclxuXHRcdFx0XHR0aGlzLl9tZXNzYWdlU2VydmljZS5zaG93QWxlcnREYW5nZXIoZXJyb3IpO1xyXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihlcnJvcilcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHR9XHJcblxyXG5cdC8vIEVudmlhIHJlcXVpc2nDp8OjbyBwYXJhIHZhbGlkYXIgY8OzZGlnbyAyIGZhdG9yZXNcclxuXHRwdWJsaWMgZ2V0TmV3Q29kZSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuaXNMb2FkaW5nR2V0TmV3Q29kZSA9IHRydWU7XHJcblxyXG5cdFx0dGhpcy5fc2VydmVyU2VydmljZS5nZXRTZXJ2ZXIoKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiByZXNwb25zZSA9PiB7XHJcblx0XHRcdFx0dGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5jb3VudGRvd24kLnN1YnNjcmliZShzZWNvbmRzTGVmdCA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnNlY29uZHNMZWZ0ID0gc2Vjb25kc0xlZnQ7XHJcblx0XHRcdFx0fSk7XHJcblxyXG5cdFx0XHRcdHRoaXMuR2V0TmV3Q29kZTJGYSgpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0Ly90aGlzLl9wcm9qZWN0VXRpbHNlcnZpY2Uuc2hvd0h0dHBFcnJvcihlcnJvcik7XHJcblx0XHRcdFx0dGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyb3IpXHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0fVxyXG5cclxuXHQvLyBWYWxpZGHDp8OjbyBkbyBjw7NkaWdvIDIgZmF0b3Jlc1xyXG5cdHB1YmxpYyBHZXROZXdDb2RlMkZhKCk6IHZvaWQge1xyXG5cclxuXHRcdHRoaXMuX2F1dGhTZXJ2aWNlLkdldE5ld0NvZGUyRmEoKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuXHRcdFx0XHR0aGlzLmlzTG9hZGluZ0dldE5ld0NvZGUgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0dGhpcy5fdG9hc3RyU2VydmljZS5zdWNjZXNzKFwiRW52aWFtb3MgdW0gbm92byBjw7NkaWdvIHBhcmEgbyBlbmRlcmXDp28gZGUgZS1tYWlsIHZpbmN1bGFkbyBhbyBzZXUgdXN1w6FyaW8uIFZlcmlmaXF1ZSBvIGxpeG8gZWxldHLDtG5pY28gKFNQQU0pIGRhIHN1YSBjYWl4YSBkZSBlbnRyYWRhLCBjYXNvIG7Do28gdGVuaGEgZW5jb250cmFkbyBub3NzYSBtZW5zYWdlbS5cIik7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHtcclxuXHRcdFx0XHR0aGlzLmlzTG9hZGluZ0dldE5ld0NvZGUgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0Ly90aGlzLl9wcm9qZWN0VXRpbHNlcnZpY2Uuc2hvd0h0dHBFcnJvcihlcnJvcik7XHJcblx0XHRcdFx0dGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblxyXG5cdH1cclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiBQT1NUXHJcblxyXG5cdC8vICNyZWdpb24gVVRJTElEQURFU1xyXG5cclxuXHQvLyBSZXRvcm5vIHBhcmEgYSB0ZWxhIGRlIGxvZ2luXHJcblx0cHVibGljIHZvbHRhcigpOiB2b2lkIHtcclxuXHRcdHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cdFx0dGhpcy5zaG93UGFybXNBdXRoZW50aWNhdGlvbjJGYSA9IGZhbHNlO1xyXG5cclxuXHRcdHRoaXMuX2F1dGhTdG9yYWdlU2VydmljZS5sb2dvdXQoKTtcclxuXHJcblx0XHR0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW1wiL2F1dGgvbG9naW5cIl0pO1xyXG5cdH1cclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiBVVElMSURBREVTXHJcblxyXG5cdC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gU0VSVklDRSBNRVRIT0RTIDw9PT09PT09PT09XHJcblxyXG5cdC8vICNyZWdpb24gPT09PT09PT09PT4gTU9EQUxTIDw9PT09PT09PT09XHJcblxyXG5cdC8vIEV4ZWN1dGEgZXNxdWVjZXIgc2VuaGFcclxuXHRwdWJsaWMgb3BlbkZvcmdvdHRlblBhc3N3b3JkTW9kYWwodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcclxuXHRcdHRoaXMuY3JlYXRlRm9ybUZvcmdvdHRlblBhc3N3b3JkKCk7XHJcblxyXG5cdFx0dGhpcy5tb2RhbFJlZiA9IHRoaXMuX2JzTW9kYWxTZXJ2aWNlLnNob3codGVtcGxhdGUsIHtcclxuXHRcdFx0Y2xhc3M6ICdtb2RhbC1kaWFsb2ctY2VudGVyZWQnLFxyXG5cdFx0XHRpZ25vcmVCYWNrZHJvcENsaWNrOiBmYWxzZSxcclxuXHRcdFx0a2V5Ym9hcmQ6IGZhbHNlLFxyXG5cdFx0XHRpZDogdGhpcy5pZEZndFBzd1xyXG5cdFx0fSk7XHJcblxyXG5cdH1cclxuXHJcblx0Ly8gRW5jZXJyYSBlc3F1ZWNlciBzZW5oYVxyXG5cdHB1YmxpYyBjbG9zZUZvcmdvdHRlblBhc3N3b3JkTW9kYWwoKTogdm9pZCB7XHJcblx0XHR0aGlzLl9ic01vZGFsU2VydmljZS5oaWRlKHRoaXMuaWRGZ3RQc3cpO1xyXG5cdH1cclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBNT0RBTFMgPD09PT09PT09PT1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdDwhLS0gQ29udGXDumRvIGRhIERJViBkbyBiYWNrZ3JvdW5kIC0tPlxyXG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDEwLCA0NCwgODEsIDAuOSksIHJnYmEoMTAsIDQ0LCA4MSwgMC45KSksIHVybCh7e19jdXN0b21Mb2dpblNlcnZpY2UubG9naW5CYWNrZ3JvdW5kfX0pXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcG9zaXRpb24gdGV4dG8tYXByZXNlbnRhY2FvIHBzLTVcIj5cclxuXHRcdFx0XHRcdDxoMSBjbGFzcz1cInRpdGxlXCIgaWQ9XCJ0aXRsZVwiPjwvaDE+XHJcblx0XHRcdFx0XHQ8cCBjbGFzcz1cInN1YnRpdGxlXCIgaWQ9XCJzdWJ0aXRsZVwiPjwvcD5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDwhLS0gQ29udGXDumRvIGRhIERJViBkZSBMb2dpbiAtLT5cclxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImRpdi1zaXplXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImxvZ290aXBvXCI+XHJcblx0XHRcdFx0XHQ8aW1nIHN0eWxlPVwiaGVpZ2h0OiA5NXB4O1wiIHNyYz1cInt7IHRoaXMuX2N1c3RvbUxvZ2luU2VydmljZS5sb2dpbkxvZ290aXBvIH19XCIgYWx0PVwie3sgdGhpcy5fY3VzdG9tTG9naW5TZXJ2aWNlLmxvZ2luQWx0TG9nb3RpcG8gfX1cIiAvPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxmb3JtICAqbmdJZj1cIiFzaG93UGFybXNBdXRoZW50aWNhdGlvbjJGYTsgZWxzZSBBdXRoZW50aWNhdGlvbjJGYVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiZm9ybS1wb3NpdGlvblwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWxnIGZvcm0taXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIiBpZD1cImJhc2ljLWFkZG9uMVwiXHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJwYWRkaW5nOiAxMHB4OyBib3JkZXItcmFkaXVzOiA0cHggMHB4IDBweCA0cHhcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9jbG91ZC5zdmdcIiBhbHQ9XCJjbG91ZCBpY29uXCIgLz5cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImRvbWluaW9cIiBpZD1cImRvbWluaW9cIlxyXG5cdFx0XHRcdFx0XHRcdGFyaWEtbGFiZWw9XCJTaXppbmcgZXhhbXBsZSBpbnB1dFwiIHBsYWNlaG9sZGVyPVwiRG9tw61uaW9cIiBhcmlhLWxhYmVsPVwiRG9tw61uaW9cIlxyXG5cdFx0XHRcdFx0XHRcdGFyaWEtZGVzY3JpYmVkYnk9XCJpbnB1dEdyb3VwLXNpemluZy1sZ1wiXHJcblx0XHRcdFx0XHRcdFx0W2NsYXNzLmlzLWludmFsaWRdPVwiRm9ybVV0aWxzLmlzSW52YWxpZEZpZWxkKGZvcm0uZ2V0KCdkb21pbmlvJykpXCI+XHJcblx0XHRcdFx0XHRcdDxhcHAtZmllbGQtZXJyb3ItbWVzc2FnZSBbY29udHJvbF09XCJmb3JtLmdldCgnZG9taW5pbycpXCIgbGFiZWw9XCJEb23DrW5pb1wiPjwvYXBwLWZpZWxkLWVycm9yLW1lc3NhZ2U+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1sZyBmb3JtLWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCIgaWQ9XCJpbnB1dEdyb3VwLXNpemluZy1sZ1wiXHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJwYWRkaW5nOiAxMHB4OyBib3JkZXItcmFkaXVzOiA0cHggMHB4IDBweCA0cHhcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9hdC1zaWduLnN2Z1wiIGFsdD1cImF0LXNpZ24gaWNvblwiIC8+XHJcblx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c3VhcmlvXCIgaWQ9XCJ1c3VhcmlvXCJcclxuXHRcdFx0XHRcdFx0XHRhcmlhLWxhYmVsPVwiU2l6aW5nIGV4YW1wbGUgaW5wdXRcIiBwbGFjZWhvbGRlcj1cIlVzdcOhcmlvXCIgYXJpYS1sYWJlbD1cIlVzdcOhcmlvXCJcclxuXHRcdFx0XHRcdFx0XHRhcmlhLWRlc2NyaWJlZGJ5PVwiaW5wdXRHcm91cC1zaXppbmctbGdcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5pcy1pbnZhbGlkXT1cIkZvcm1VdGlscy5pc0ludmFsaWRGaWVsZChmb3JtLmdldCgndXN1YXJpbycpKVwiPlxyXG5cdFx0XHRcdFx0XHQ8YXBwLWZpZWxkLWVycm9yLW1lc3NhZ2UgW2NvbnRyb2xdPVwiZm9ybS5nZXQoJ3VzdWFyaW8nKVwiIGxhYmVsPVwiVXN1w6FyaW9cIj48L2FwcC1maWVsZC1lcnJvci1tZXNzYWdlPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtbGcgZm9ybS1pdGVtXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiA4cHg7XCI+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiIGlkPVwiaW5wdXRHcm91cC1zaXppbmctbGdcIlxyXG5cdFx0XHRcdFx0XHRcdHN0eWxlPVwicGFkZGluZzogMTBweDsgYm9yZGVyLXJhZGl1czogNHB4IDBweCAwcHggNHB4O1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2xvY2suc3ZnXCIgYWx0PVwibG9jay1pY29uXCIgLz5cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJzZW5oYVwiIGlkPVwic2VuaGFcIlxyXG5cdFx0XHRcdFx0XHRcdGFyaWEtbGFiZWw9XCJTaXppbmcgZXhhbXBsZSBpbnB1dFwiIHBsYWNlaG9sZGVyPVwiU2VuaGFcIiBhcmlhLWxhYmVsPVwic2VuaGFcIlxyXG5cdFx0XHRcdFx0XHRcdGFyaWEtZGVzY3JpYmVkYnk9XCJpbnB1dEdyb3VwLXNpemluZy1sZ1wiXHJcblx0XHRcdFx0XHRcdFx0W2NsYXNzLmlzLWludmFsaWRdPVwiRm9ybVV0aWxzLmlzSW52YWxpZEZpZWxkKGZvcm0uZ2V0KCdzZW5oYScpKVwiPlxyXG5cdFx0XHRcdFx0XHQ8YXBwLWZpZWxkLWVycm9yLW1lc3NhZ2UgW2NvbnRyb2xdPVwiZm9ybS5nZXQoJ3NlbmhhJylcIiBsYWJlbD1cIlNlbmhhXCI+PC9hcHAtZmllbGQtZXJyb3ItbWVzc2FnZT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJlbWVtYmVyLXBhc3N3b3JkXCI+XHJcblx0XHRcdFx0XHQ8IS0tIExlbWJyYXIgU2VuaGFcclxuXHRcdFx0XHRcdFx0PGlucHV0IGlkPVwiY2hlY2tib3hMZW1icmFyU2VuaGFcIiB0eXBlPVwiY2hlY2tib3hcIiAvPlxyXG5cdFx0XHRcdFx0XHQ8bGFiZWwgZm9yPVwiY2hlY2tib3hMZW1icmFyU2VuaGFcIj4gTGVtYnJhciBtaW5oYSBzZW5oYSA8L2xhYmVsPlxyXG4gXHRcdFx0XHRcdC0tPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdcIiAoY2xpY2spPVwiZ2V0U2VydmVyKClcIiB0eXBlPVwic3VibWl0XCJcclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWFjZXNzYXIgYnRuLWxnXCI+XHJcblx0XHRcdFx0XHRcdDxhcHAtbG9hZGluZy1idXR0b24gW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIj48L2FwcC1sb2FkaW5nLWJ1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4+IEFjZXNzYXIgPC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkZvcmdvdHRlblBhc3N3b3JkTW9kYWwoZm9yZ290dGVuUGFzc3dvcmRNb2RhbClcIiBjbGFzcz1cImZvcmdvdHRlbi1wYXNzd29yZFwiPlxyXG5cdFx0XHRcdFx0XHQ8c3Bhbj4gRXNxdWVjZXUgc3VhIHNlbmhhPyA8L3NwYW4+XHJcblx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHQ8L2Zvcm0+XHJcblxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAjQXV0aGVudGljYXRpb24yRmE+XHJcblx0XHRcdFx0XHQ8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1BdXRoZW50aWNhdGlvbjJGYVwiIGNsYXNzPVwiZm9ybS1wb3NpdGlvblwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtbGcgZm9ybS1pdGVtIG1iLTNcIj5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIiBpZD1cImlucHV0R3JvdXAtc2l6aW5nLWxnXCJcclxuXHRcdFx0XHRcdFx0XHRcdHN0eWxlPVwicGFkZGluZzogMTBweDsgYm9yZGVyLXJhZGl1czogNHB4IDBweCAwcHggNHB4O1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGltZyBzcmM9XCJhc3NldHMvaWNvbnMvbG9jay5zdmdcIiBhbHQ9XCJsb2NrLWljb25cIiAvPlxyXG5cdFx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImNvZGVcIiBpZD1cImNvZGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0YXJpYS1sYWJlbD1cIlNpemluZyBleGFtcGxlIGlucHV0XCIgcGxhY2Vob2xkZXI9XCJDw7NkaWdvIGRlIDIgZmF0b3Jlc1wiIGFyaWEtbGFiZWw9XCJDw7NkaWdvIGRlIDIgZmF0b3Jlc1wiXHJcblx0XHRcdFx0XHRcdFx0XHRhcmlhLWRlc2NyaWJlZGJ5PVwiaW5wdXRHcm91cC1zaXppbmctbGdcIlxyXG5cdFx0XHRcdFx0XHRcdFx0W2NsYXNzLmlzLWludmFsaWRdPVwiRm9ybVV0aWxzLmlzSW52YWxpZEZpZWxkKGZvcm1BdXRoZW50aWNhdGlvbjJGYS5nZXQoJ2NvZGUnKSlcIj5cclxuXHRcdFx0XHRcdFx0XHQ8YXBwLWZpZWxkLWVycm9yLW1lc3NhZ2UgW2NvbnRyb2xdPVwiZm9ybUF1dGhlbnRpY2F0aW9uMkZhLmdldCgnY29kZScpXCIgbGFiZWw9XCJDw7NkaWdvIGRlIDIgZmF0b3Jlc1wiPjwvYXBwLWZpZWxkLWVycm9yLW1lc3NhZ2U+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cclxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uIChjbGljayk9XCJ2b2x0YXIoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tYWNlc3NhciBnbGItYnRuLW91dGxpbmUtZGFyay1kaXNhYmxlZCBjb2wgbWUtMVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0Vm9sdGFyXHJcblx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0PGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nU2VuZEF1dGhlbnRpY2F0aW9uMkZhXCIgKGNsaWNrKT1cInNlbmRDb2RlKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWFjZXNzYXIgYnRuLXByaW1hcnkgY29sIG1zLTFcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhcHAtbG9hZGluZy1idXR0b24gW2lzTG9hZGluZ109XCJpc0xvYWRpbmdTZW5kQXV0aGVudGljYXRpb24yRmFcIj48L2FwcC1sb2FkaW5nLWJ1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHRcdEFjZXNzYXJcclxuXHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uICpuZ0lmPVwic2Vjb25kc0xlZnQgPT0gMDsgZWxzZSBuZXdDb2RlXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCIgKGNsaWNrKT1cImdldE5ld0NvZGUoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tYWNlc3NhciBidG4tb3V0bGluZS1wcmltYXJ5IGNvbFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGFwcC1sb2FkaW5nLWJ1dHRvbiBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiPjwvYXBwLWxvYWRpbmctYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0RW52aWFyIG5vdm8gY8OzZGlnb1xyXG5cdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAjbmV3Q29kZT5cclxuXHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyBzZWNvbmRzTGVmdH19IHt7IHNlY29uZHNMZWZ0ID09IDEgPyAnc2VndW5kbycgOiAnc2VndW5kb3MnIH19IHBhcmEgb2J0ZXIgbm92byBjw7NkaWdvPC9wPlxyXG5cdFx0XHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9mb3JtPlx0XHJcblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9vdGVyLXBvc2l0aW9uXCI+XHJcblx0XHRcdFx0XHQ8Zm9vdGVyPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvb3RlclwiPiBcclxuXHRcdFx0XHRcdFx0XHQ8YSBocmVmPVwiaHR0cHM6Ly9kcG8ucHJpdmFjeXRvb2xzLmNvbS5ici9wb2xpY3ktdmlldy9KbUdlTmxKZHcvMS9wb2xpJUNDJTgxdGljYS1kZS1wcml2YWNpZGFkZS9wdF9CUj9zPTE2ODU3MzE1MTAwNjZcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInNpc3BybyB0ZXh0LXByaW1hcnlcIj4gUG9sw610aWNhIGRlIFByaXZhY2lkYWRlIDwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInNlcGFyYXRvclwiPiB8IDwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8YSBocmVmPVwiaHR0cHM6Ly9kcG8ucHJpdmFjeXRvb2xzLmNvbS5ici9wb2xpY3ktdmlldy9Sb3JrMzVOTjIvMi9wb2xpJUNDJTgxdGljYS1kZS1jb29raWVzL3B0X0JSP3M9MTY4NTczMTU1MTk3NlwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwic2lzcHJvIHRleHQtcHJpbWFyeVwiPiBQb2zDrXRpY2EgZGUgQ29va2llcyA8L2E+XHJcblx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb290ZXJcIj4gRGVzZW52b2x2aWRvIHBvciBcclxuXHRcdFx0XHRcdFx0XHQ8YSBocmVmPVwiaHR0cHM6Ly93d3cuc2lzcHJvLmNvbS5ici9cIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInNpc3BybyB0ZXh0LXByaW1hcnlcIj4gc2lzcHJvIHMvYSA8L2E+XHJcblx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb290ZXJcIj4gU2VydmnDp29zIGUgVGVjbm9sb2dpYSBkYSBpbmZvcm1hw6fDo28gwqkge3sgeWVhciB9fSBUb2RvcyBvcyBkaXJlaXRvcyByZXNlcnZhZG9zIDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaWNvbnNcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGhyZWY9XCJodHRwczovL3B0LWJyLmZhY2Vib29rLmNvbS9TaXNwcm9FUlAvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxsaWItaWNvbiBjbGFzcz1cInRleHQtcHJpbWFyeVwiIGljb25OYW1lPVwiZmFjZWJvb2tcIiBpY29uU2l6ZT1cIm1lZGl1bS1zbWFsbFwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGhyZWY9XCJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL2FjY291bnRzL2xvZ2luLz9uZXh0PS9zaXNwcm9fc29mdHdhcmUvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxsaWItaWNvbiBjbGFzcz1cInRleHQtcHJpbWFyeVwiIGljb25OYW1lPVwiaW5zdGFncmFtXCIgaWNvblNpemU9XCJtZWRpdW0tc21hbGxcIi8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBocmVmPVwiaHR0cHM6Ly9ici5saW5rZWRpbi5jb20vY29tcGFueS9zaXNwcm9cIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxpYi1pY29uIGNsYXNzPVwidGV4dC1wcmltYXJ5XCIgaWNvbk5hbWU9XCJsaW5rZWRpblwiIGljb25TaXplPVwibWVkaXVtLXNtYWxsXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIFtocmVmXT1cImdldHVybEVycENvbmZpZygpXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTJweDtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0Q29uZmlndXJhciBFUlBcclxuXHRcdFx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZm9vdGVyPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gVGVtcGxhdGUgZG8gbW9kYWwgZGUgc2VuaGEgZXNxdWVjaWRhIC0tPlxyXG48bmctdGVtcGxhdGUgI2ZvcmdvdHRlblBhc3N3b3JkTW9kYWw+XHJcblx0PGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtRmd0UHN3XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiIHN0eWxlPVwiYm94LXNoYWRvdzogMnB4IDJweCA1cHggMHB4IHJnYmEoMCwwLDAsMC41KTtcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwLTNcIj5cclxuXHRcdFx0XHQ8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPiBSZWN1cGVyYcOnw6NvIGRlIHNlbmhhIDwvaDQ+XHJcblx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBkYXRhLWJzLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwiY2xvc2VGb3Jnb3R0ZW5QYXNzd29yZE1vZGFsKClcIj5cclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcblx0XHRcdFx0PGxhYmVsIGZvcj1cImlucHV0RG9taW5pb0ZndFBzd1wiIGNsYXNzPVwiaW5wdXQtbGFiZWxcIj4gRG9tw61uaW8gPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+PC9sYWJlbD5cclxuXHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImlucHV0RG9taW5pb0ZndFBzd1wiIGZvcm1Db250cm9sTmFtZT1cImRvbWluaW9GZ3RQc3dcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJmb3JtLWNvbnRyb2wgaW5wdXQtdGV4dFwiIGFyaWEtbGFiZWw9XCJTaXppbmcgZXhhbXBsZSBpbnB1dFwiIGFyaWEtbGFiZWw9XCJEb23DrW5pb1wiXHJcblx0XHRcdFx0XHRhcmlhLWRlc2NyaWJlZGJ5PVwiaW5wdXRHcm91cC1zaXppbmctbGdcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmlzLWludmFsaWRdPVwiRm9ybVV0aWxzLmlzSW52YWxpZEZpZWxkKGZvcm1GZ3RQc3cuZ2V0KCdkb21pbmlvRmd0UHN3JykpXCI+XHJcblx0XHRcdFx0PGFwcC1maWVsZC1lcnJvci1tZXNzYWdlIFtjb250cm9sXT1cImZvcm1GZ3RQc3cuZ2V0KCdkb21pbmlvRmd0UHN3JylcIiBsYWJlbD1cIkRvbcOtbmlvXCI+PC9hcHAtZmllbGQtZXJyb3ItbWVzc2FnZT5cdFx0XHRcdFxyXG5cclxuXHRcdFx0XHQ8bGFiZWwgZm9yPVwiaW5wdXRVc3VhcmlvRmd0UHN3XCIgY2xhc3M9XCJpbnB1dC1sYWJlbFwiPiBVc3XDoXJpbyA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG5cdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiaW5wdXRVc3VhcmlvRmd0UHN3XCIgZm9ybUNvbnRyb2xOYW1lPVwidXN1YXJpb0ZndFBzd1wiXHJcblx0XHRcdFx0XHRjbGFzcz1cImZvcm0tY29udHJvbCBpbnB1dC10ZXh0XCIgYXJpYS1sYWJlbD1cIlNpemluZyBleGFtcGxlIGlucHV0XCIgYXJpYS1sYWJlbD1cIlVzdcOhcmlvXCJcclxuXHRcdFx0XHRcdGFyaWEtZGVzY3JpYmVkYnk9XCJpbnB1dEdyb3VwLXNpemluZy1sZ1wiXHJcblx0XHRcdFx0XHRbY2xhc3MuaXMtaW52YWxpZF09XCJGb3JtVXRpbHMuaXNJbnZhbGlkRmllbGQoZm9ybUZndFBzdy5nZXQoJ3VzdWFyaW9GZ3RQc3cnKSlcIj5cclxuXHRcdFx0XHQ8YXBwLWZpZWxkLWVycm9yLW1lc3NhZ2UgW2NvbnRyb2xdPVwiZm9ybUZndFBzdy5nZXQoJ3VzdWFyaW9GZ3RQc3cnKVwiIGxhYmVsPVwiVXN1w6FyaW9cIj48L2FwcC1maWVsZC1lcnJvci1tZXNzYWdlPlx0XHRcdFx0XHJcblx0XHRcclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBnbGItYnRuLWRhcmstZGlzYWJsZWQgbW9kYWwtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlRm9yZ290dGVuUGFzc3dvcmRNb2RhbCgpXCI+XHJcblx0XHRcdFx0XHQ8c3Bhbj4gQ2FuY2VsYXIgPC9zcGFuPlxyXG5cdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1vZGFsLWJ1dHRvblwiIChjbGljayk9XCJzZW5kRm9yZ290dGVuUGFzc3dvcmQoKTtcIj5cclxuXHRcdFx0XHRcdDxzcGFuPiBDb250aW51YXIgPC9zcGFuPlxyXG5cdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Zvcm0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWF1dGgvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1hdXRoL3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQWUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3BFLE9BQU8sRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJdEQsT0FBTyxFQUFFLFNBQVMsRUFBa0IsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBY3pELE1BQU0sT0FBTyxjQUFjO0lBRTFCLFlBQ1MsZUFBK0IsRUFDL0IsZUFBK0IsRUFDL0IsWUFBeUIsRUFDekIsWUFBeUIsRUFDekIsY0FBNkIsRUFDN0IsbUJBQXVDLEVBQ3ZDLG1CQUF1QyxFQUN4QyxtQkFBMEMsRUFDekMsTUFBYSxFQUNiLE9BQWUsRUFDZixjQUE2QjtRQVY3QixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXVCO1FBQ3pDLFdBQU0sR0FBTixNQUFNLENBQU87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QyxXQUFXLGNBR1QsS0FBSyx1QkFDSSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IG1hcCwgU3Vic2NyaXB0aW9uLCB0YWtlLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCc01vZGFsUmVmLCBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcblxyXG5pbXBvcnQgeyBGb3JtVXRpbHMsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnbmd4LXNwLWluZnJhJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaWJDdXN0b21Mb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdXN0b20vY3VzdG9tLWxvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmVyL3NlcnZlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RvcmFnZS9hdXRoLXN0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi1sb2dpbicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2xvZ2luLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9sb2dpbi5jb21wb25lbnQuc2NzcyddLFxyXG5cdHN0YW5kYWxvbmU6IGZhbHNlLFxyXG5cdHByZXNlcnZlV2hpdGVzcGFjZXM6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBfYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG5cdFx0cHJpdmF0ZSBfYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfc2VydmVyU2VydmljZTogU2VydmVyU2VydmljZSxcclxuXHRcdHByaXZhdGUgX2Vudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfYXV0aFN0b3JhZ2VTZXJ2aWNlOiBBdXRoU3RvcmFnZVNlcnZpY2UsXHJcblx0XHRwdWJsaWMgX2N1c3RvbUxvZ2luU2VydmljZTogTGliQ3VzdG9tTG9naW5TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfdGl0bGU6IFRpdGxlLFxyXG5cdFx0cHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIF90b2FzdHJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlXHJcblx0KSB7IH1cclxuXHJcblx0Ly8gI3JlZ2lvbiA9PT09PT09PT09PiBQUk9QRVJUSUVTIDw9PT09PT09PT09XHJcblxyXG5cdC8vICNyZWdpb24gUFJJVkFURVxyXG5cclxuXHRwcml2YXRlIGlkRmd0UHN3OiBudW1iZXIgPSAxO1xyXG5cclxuXHQvLyAjZW5kcmVnaW9uIFBSSVZBVEVcclxuXHJcblx0Ly8gI3JlZ2lvbiBQVUJMSUNcclxuXHJcblx0cHVibGljIG1vZGFsUmVmPzogQnNNb2RhbFJlZjtcclxuXHJcblx0Ly8gIFZhcmnDoXZlaXMgZXNwZWPDrWZpY2FzIHBhcmEgZnVuY2lvbmFsaWRhZGVzIHBhZHLDtWVzIGRvcyBmb3JtdWzDoXJpb3NcclxuXHRwdWJsaWMgY3VycmVudFRpbWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cdHB1YmxpYyB5ZWFyOiBudW1iZXIgPSB0aGlzLmN1cnJlbnRUaW1lLmdldEZ1bGxZZWFyKCk7XHJcblxyXG5cdHB1YmxpYyBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgaXNMb2FkaW5nU2VuZEF1dGhlbnRpY2F0aW9uMkZhOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIHNob3dQYXJtc0F1dGhlbnRpY2F0aW9uMkZhID0gZmFsc2U7XHJcblx0cHVibGljIGlzTG9hZGluZ0dldE5ld0NvZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Ly9wcm9wcmllZGFkZXMgcXVlIHbDo28gcmVjZWJlciBvcyB2YWxvcmVzIGRvIGN1c3RvbUxvZ2luU2VydmljZSAjIyMjVkVSSUZJQ0FSIERFUE9JUyMjIyNcclxuXHJcblx0Ly8gQElucHV0KCkgY3VzdG9tUHJvcHJpZWRhZGVzTG9naW4/OiBDdXN0b21Qcm9wcmllZGFkZXNMb2dpbjtcclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiBQVUJMSUNcclxuXHJcblx0Ly8gI3JlZ2lvbiBUaW1lclxyXG5cclxuXHRwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHRwcml2YXRlIHRpbWVyRHVyYXRpb246IG51bWJlciA9IDkwO1xyXG5cdHB1YmxpYyBzZWNvbmRzTGVmdDogbnVtYmVyID0gdGhpcy50aW1lckR1cmF0aW9uO1xyXG5cclxuXHRwcml2YXRlIGNvdW50ZG93biQgPSB0aW1lcigwLCAxMDAwKS5waXBlKFxyXG5cdFx0dGFrZSh0aGlzLnRpbWVyRHVyYXRpb24gKyAxKSxcclxuXHJcblx0XHRtYXAoc2Vjb25kc0VsYXBzZWQgPT4gdGhpcy50aW1lckR1cmF0aW9uIC0gc2Vjb25kc0VsYXBzZWQpXHJcblx0KTtcclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiBUaW1lclxyXG5cclxuXHQvLyAjcmVnaW9uID09PT09PT09PT0+IEZPUk0gQlVJTERFUiA8PT09PT09PT09PVxyXG5cdHB1YmxpYyBmb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHRwdWJsaWMgZm9ybUZndFBzdzogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7O1xyXG5cdHB1YmxpYyBmb3JtQXV0aGVudGljYXRpb24yRmE6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pOztcclxuXHJcblx0Ly8gIFByb3ByaWVkYWRlIG5lY2Vzc8OhcmlvIHBhcmEgcXVlIGEgY2xhc3NlIHN0YXRpYyBGb3JtVXRpbHMgcG9zc2Egc2VyIHV0aWxpemFkYSBubyBIdG1sXHJcblx0cHVibGljIGdldCBGb3JtVXRpbHMoKTogdHlwZW9mIEZvcm1VdGlscyB7XHJcblx0XHRyZXR1cm4gRm9ybVV0aWxzO1xyXG5cdH1cclxuXHJcblx0Ly8gI3JlZ2lvbiBGT1JNIERBVEFcclxuXHJcblx0Ly8gIFZhcmnDoXZlaXMgZXNwZWPDrWZpY2FzIHBhcmEgZnVuY2lvbmFsaWRhZGVzIHBhZHLDtWVzIGRvcyBmb3JtdWzDoXJpb3MgKExvZ2luKVxyXG5cdHB1YmxpYyBnZXQgZG9taW5pbygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2RvbWluaW8nKT8udmFsdWU7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZ2V0IHVzdWFyaW8oKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLmZvcm0uZ2V0KCd1c3VhcmlvJyk/LnZhbHVlO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGdldCBzZW5oYSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3NlbmhhJyk/LnZhbHVlO1xyXG5cdH1cclxuXHJcblx0Ly8gIFZhcmnDoXZlaXMgZXNwZWPDrWZpY2FzIHBhcmEgZnVuY2lvbmFsaWRhZGVzIHBhZHLDtWVzIGRvcyBmb3JtdWzDoXJpb3MgKFJlcXVlc3RSZWNvdmVyUGFzc3dvcmQpXHJcblx0cHVibGljIGdldCBkb21pbmlvRmd0UHN3KCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5mb3JtRmd0UHN3LmdldCgnZG9taW5pb0ZndFBzdycpPy52YWx1ZTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBnZXQgdXN1YXJpb0ZndFBzdygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybUZndFBzdy5nZXQoJ3VzdWFyaW9GZ3RQc3cnKT8udmFsdWU7XHJcblx0fVxyXG5cclxuXHQvLyAgVmFyacOhdmVpcyBlc3BlY8OtZmljYXMgcGFyYSBmdW5jaW9uYWxpZGFkZXMgcGFkcsO1ZXMgZG9zIGZvcm11bMOhcmlvcyAoQXV0ZW50aWNhw6fDo28gMiBGYXRvcmVzKVxyXG5cdHB1YmxpYyBnZXQgY29kZSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybUF1dGhlbnRpY2F0aW9uMkZhLmdldCgnY29kZScpPy52YWx1ZTtcclxuXHR9XHJcblxyXG5cdC8vICNlbmRyZWdpb24gRk9STSBEQVRBXHJcblxyXG5cdC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLl90aXRsZS5zZXRUaXRsZSh0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5QYWdlVGl0bGUpO1xyXG5cclxuXHRcdGlmICh0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5UaXRsZSAhPSBcIlwiKSB7XHJcblx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikhLmlubmVySFRNTCA9IHRoaXMuX2N1c3RvbUxvZ2luU2VydmljZS5sb2dpblRpdGxlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5TdWJ0aXRsZSAhPSBcIlwiKSB7XHJcblx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3VidGl0bGVcIikhLmlubmVySFRNTCA9IHRoaXMuX2N1c3RvbUxvZ2luU2VydmljZS5sb2dpblN1YnRpdGxlO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5jcmVhdGVGb3JtKCk7XHJcblx0fVxyXG5cclxuXHQvLyAjcmVnaW9uIEZPUk0gVkFMSURBVE9SU1xyXG5cclxuXHQvLyAgTcOpdG9kbyBwYXJhIGNvbmZpZ3VyYcOnw6NvIGRvcyBjYW1wb3MgZGUgZWRpw6fDo28gZG8gZm9ybXVsw6FyaW8gKExvZ2luKVxyXG5cdHByaXZhdGUgY3JlYXRlRm9ybSgpOiB2b2lkIHtcclxuXHJcblx0XHQvLyAgRGFkb3Mgb3JpZ2luYWlzIGRlIExvZ2luXHJcblx0XHRpZiAodGhpcy5fZW52aXJvbm1lbnRTZXJ2aWNlLnByb2R1Y3Rpb24pIHtcclxuXHRcdFx0dGhpcy5mb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG5cdFx0XHRcdGRvbWluaW86IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxyXG5cdFx0XHRcdHVzdWFyaW86IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldXSxcclxuXHRcdFx0XHRzZW5oYTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKV1dXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdHRoaXMuZm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuXHRcdFx0XHRkb21pbmlvOiBbdGhpcy5fY3VzdG9tTG9naW5TZXJ2aWNlLmxvZ2luRGVzZW52RG9tYWluLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXV0sXHJcblx0XHRcdFx0dXN1YXJpbzogW3RoaXMuX2N1c3RvbUxvZ2luU2VydmljZS5sb2dpbkRlc2VudlVzZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApXV0sXHJcblx0XHRcdFx0c2VuaGE6IFt0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5EZXNlbnZQYXNzd29yZCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldXVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vICBNw6l0b2RvIHBhcmEgY29uZmlndXJhw6fDo28gZG9zIGNhbXBvcyBkZSBlZGnDp8OjbyBkbyBmb3JtdWzDoXJpbyAoUmVxdWVzdFJlY292ZXJQYXNzd29yZClcclxuXHRwcml2YXRlIGNyZWF0ZUZvcm1Gb3Jnb3R0ZW5QYXNzd29yZCgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLmZvcm1GZ3RQc3cgPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cCh7XHJcblx0XHRcdGRvbWluaW9GZ3RQc3c6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxyXG5cdFx0XHR1c3VhcmlvRmd0UHN3OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApXV0sXHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmZvcm1GZ3RQc3cuZ2V0KCdyZWNvdmVyQ2RvbWluaW9GZ3RQc3dvZGVSZWNQc3cnKT8uc2V0VmFsdWUoJycpO1xyXG5cdFx0dGhpcy5mb3JtRmd0UHN3LmdldCgndXN1YXJpb0ZndFBzdycpPy5zZXRWYWx1ZSgnJyk7XHJcblx0fVxyXG5cclxuXHQvLyAgTcOpdG9kbyBwYXJhIGNvbmZpZ3VyYcOnw6NvIGRvcyBjYW1wb3MgZGUgZWRpw6fDo28gZG8gZm9ybXVsw6FyaW8gKEF1dGVudGljYcOnw6NvIDIgRmF0b3JlcylcclxuXHRwcml2YXRlIGNyZWF0ZUZvcm1BdXRoZW50aWNhdGlvbjJGYSgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLmZvcm1BdXRoZW50aWNhdGlvbjJGYSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuXHRcdFx0Y29kZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildXSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuZm9ybS5nZXQoJ2NvZGUnKT8uc2V0VmFsdWUoJycpO1xyXG5cdH1cclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiBGT1JNIFZBTElEQVRPUlNcclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBGT1JNIEJVSUxERVIgPD09PT09PT09PT1cclxuXHJcblx0Ly8gI3JlZ2lvbiA9PT09PT09PT09PiBTRVJWSUNFIE1FVEhPRFMgPD09PT09PT09PT1cclxuXHJcblx0Ly8gI3JlZ2lvbiBHRVRcclxuXHJcblx0Ly8gT2J0w6ltIGEgVXJsIGRvIENvbmZpZyBFcnBcclxuXHRwdWJsaWMgZ2V0dXJsRXJwQ29uZmlnKCk6IHN0cmluZyB7XHJcblx0XHQvLyB2ZXJpZmljYXIgZGVwb2lzIFxyXG5cdFx0cmV0dXJuIGAke3RoaXMuX2Vudmlyb25tZW50U2VydmljZS5ob3N0TmFtZX0vU2lzcHJvRXJwQ2xvdWQvQ29uZmlnRXJwYDtcclxuXHR9XHJcblxyXG5cdC8qXHJcblx0KiBPYnTDqW0gb3MgcGFyw6JtZXRyb3MgZGUgY29uZmlndXJhw6fDo28gZG8gc2Vydmlkb3IgcGFyYSBBdXRlbnRpY2HDp8OjbyBCw6FzaWNhIGRlIHNlZ3VyYW7Dp2FcclxuXHQqL1xyXG5cdHB1YmxpYyBnZXRTZXJ2ZXIoKTogdm9pZCB7XHJcblxyXG5cdFx0aWYgKHRoaXMuZm9ybS52YWxpZCkge1xyXG5cdFx0XHR0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcblxyXG5cdFx0XHR0aGlzLl9zZXJ2ZXJTZXJ2aWNlLmdldFNlcnZlcigpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogcmVzcG9uc2UgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2dPbigpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0XHQvL3RoaXMuX3Byb2plY3RVdGlsc2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKTtcclxuXHRcdFx0XHRcdHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcblxyXG5cdFx0XHRcdFx0Ly9wb2RlIHNlciBzdWJzdGl0dWlkbyBwb3IgY29uc29sZS5lcnJvclxyXG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yKVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdH0pXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRGb3JtVXRpbHMudmFsaWRhdGVGaWVsZHModGhpcy5mb3JtKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vICNlbmRyZWdpb24gR0VUXHJcblxyXG5cdC8vICNyZWdpb24gUE9TVFxyXG5cclxuXHQvLyAgRXhlY3V0YSBvIExvZ2luXHJcblx0cHVibGljIGxvZ09uKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fYXV0aFNlcnZpY2UubG9naW4odGhpcy5mb3JtLnZhbHVlKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuXHRcdFx0XHR0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHRpZiAocmVzcG9uc2UuRmVlZGJhY2tNZXNzYWdlICE9IFwiXCIpIHtcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2Uud2FybmluZyhyZXNwb25zZS5GZWVkYmFja01lc3NhZ2UsXHJcblx0XHRcdFx0XHRcdCcnLFxyXG5cdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0dGltZU91dDogMzAwMCxcclxuXHRcdFx0XHRcdFx0XHRleHRlbmRlZFRpbWVPdXQ6IDIwMDBcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvL0luY2lhbGl6YcOnw6NvIGRlIFNlbmhhXHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlLkluaXRpYWxpemVQYXNzd29yZCkge1xyXG5cdFx0XHRcdFx0bGV0IHBhcmFtOiBzdHJpbmcgPSBidG9hKGB0cnVlJCR7IHRoaXMuZG9taW5pbyB9JCR7IHRoaXMudXN1YXJpbyB9JCR7cmVzcG9uc2Uuc3RhdHVzU2VuaGF9YCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlKFtgYXV0aC9sb2dpbi9ub3ZhU2VuaGEvJHtwYXJhbX1gXSk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5fdG9hc3RyU2VydmljZS5zdWNjZXNzKFwiVmVyaWZpcXVlIG5vIHNldSBlLW1haWwgbyBjw7NkaWdvIGRlIHZhbGlkYcOnw6NvLlwiKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGlmIChyZXNwb25zZS5JbmZyYUluQXV0aFR5cGVJZCA9PSAxICYmIHJlc3BvbnNlLkluZnJhSW4yRmFUeXBlSWQgIT0gbnVsbCAmJiByZXNwb25zZS5JbmZyYUluMkZhVHlwZUlkID09IDEgJiYgcmVzcG9uc2UuSXMyRmFFbmFibGVkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmNyZWF0ZUZvcm1BdXRoZW50aWNhdGlvbjJGYSgpO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuX3N1YnNjcmlwdGlvbiA9IHRoaXMuY291bnRkb3duJC5zdWJzY3JpYmUoc2Vjb25kc0xlZnQgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNlY29uZHNMZWZ0ID0gc2Vjb25kc0xlZnQ7XHJcblx0XHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLnNob3dQYXJtc0F1dGhlbnRpY2F0aW9uMkZhID0gdHJ1ZTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLl90b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MoXCJWZXJpZmlxdWUgbm8gc2V1IGUtbWFpbCBvIGPDs2RpZ28gZGUgdmFsaWRhw6fDo28uXCIpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHtcclxuXHRcdFx0XHR0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHQvL3RoaXMuX3Byb2plY3RVdGlsc2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKTtcclxuXHRcdFx0XHR0aGlzLl9tZXNzYWdlU2VydmljZS5zaG93QWxlcnREYW5nZXIoZXJyb3IpO1xyXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihlcnJvcilcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHR9XHJcblxyXG5cdC8vIEVudmlhIHJlcXVpc2nDp8OjbyBwYXJhIGVzcXVlY2VyIHNlbmhhXHJcblx0cHVibGljIHNlbmRGb3Jnb3R0ZW5QYXNzd29yZCgpOiB2b2lkIHtcclxuXHJcblx0XHRpZiAodGhpcy5mb3JtRmd0UHN3LnZhbGlkKSB7XHJcblx0XHRcdHRoaXMuX3NlcnZlclNlcnZpY2UuZ2V0U2VydmVyKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiByZXNwb25zZSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmZvcmdvdHRlblBhc3N3b3JkKCk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHQvL3RoaXMuX3Byb2plY3RVdGlsc2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKTtcclxuXHRcdFx0XHRcdHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyb3IpXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSlcclxuXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRGb3JtVXRpbHMudmFsaWRhdGVGaWVsZHModGhpcy5mb3JtRmd0UHN3KTtcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHQvLyBSZXF1aXNpw6fDo28gcGFyYSBlc3F1ZWNlciBzZW5oYVxyXG5cdHB1YmxpYyBmb3Jnb3R0ZW5QYXNzd29yZCgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLl9hdXRoU2VydmljZS5mb3Jnb3R0ZW5QYXNzd29yZCh0aGlzLmZvcm1GZ3RQc3cudmFsdWUpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuY2xvc2VGb3Jnb3R0ZW5QYXNzd29yZE1vZGFsKCk7XHJcblxyXG5cdFx0XHRcdGxldCBwYXJhbTogc3RyaW5nID0gYnRvYShgZmFsc2UkJHt0aGlzLmRvbWluaW9GZ3RQc3d9JCR7dGhpcy51c3VhcmlvRmd0UHN3fSQkezN9YCk7XHJcblxyXG5cdFx0XHRcdHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbYGF1dGgvbG9naW4vbm92YVNlbmhhLyR7cGFyYW19YF0pO1xyXG5cclxuXHRcdFx0XHR0aGlzLl90b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MoXCJWZXJpZmlxdWUgbm8gc2V1IGUtbWFpbCBvIGPDs2RpZ28gZGUgdmFsaWRhw6fDo28uXCIpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0Ly90aGlzLl9wcm9qZWN0VXRpbHNlcnZpY2Uuc2hvd0h0dHBFcnJvcihlcnJvcik7XHJcblx0XHRcdFx0dGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyb3IpXHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0fVxyXG5cclxuXHQvLyBFbnZpYSByZXF1aXNpw6fDo28gcGFyYSB2YWxpZGFyIGPDs2RpZ28gMiBmYXRvcmVzXHJcblx0cHVibGljIHNlbmRDb2RlKCk6IHZvaWQge1xyXG5cclxuXHRcdGlmICh0aGlzLmZvcm1BdXRoZW50aWNhdGlvbjJGYS52YWxpZCkge1xyXG5cdFx0XHR0aGlzLmlzTG9hZGluZ1NlbmRBdXRoZW50aWNhdGlvbjJGYSA9IHRydWU7XHJcblxyXG5cdFx0XHR0aGlzLnZhbGlkYXRlQ29kZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Rm9ybVV0aWxzLnZhbGlkYXRlRmllbGRzKHRoaXMuZm9ybUF1dGhlbnRpY2F0aW9uMkZhKTtcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHQvLyBWYWxpZGHDp8OjbyBkbyBjw7NkaWdvIDIgZmF0b3Jlc1xyXG5cdHB1YmxpYyB2YWxpZGF0ZUNvZGUoKTogdm9pZCB7XHJcblxyXG5cdFx0dGhpcy5fYXV0aFNlcnZpY2UudmFsaWRhdGVBdXRoZW50aWNhdGlvbjJGYSh0aGlzLmNvZGUpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cclxuXHRcdFx0XHR0aGlzLmlzTG9hZGluZ1NlbmRBdXRoZW50aWNhdGlvbjJGYSA9IGZhbHNlO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5pc0xvYWRpbmdTZW5kQXV0aGVudGljYXRpb24yRmEgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0Ly90aGlzLl9wcm9qZWN0VXRpbHNlcnZpY2Uuc2hvd0h0dHBFcnJvcihlcnJvcik7XHJcblx0XHRcdFx0dGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyb3IpXHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0fVxyXG5cclxuXHQvLyBFbnZpYSByZXF1aXNpw6fDo28gcGFyYSB2YWxpZGFyIGPDs2RpZ28gMiBmYXRvcmVzXHJcblx0cHVibGljIGdldE5ld0NvZGUoKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzTG9hZGluZ0dldE5ld0NvZGUgPSB0cnVlO1xyXG5cclxuXHRcdHRoaXMuX3NlcnZlclNlcnZpY2UuZ2V0U2VydmVyKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogcmVzcG9uc2UgPT4ge1xyXG5cdFx0XHRcdHRoaXMuX3N1YnNjcmlwdGlvbiA9IHRoaXMuY291bnRkb3duJC5zdWJzY3JpYmUoc2Vjb25kc0xlZnQgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWNvbmRzTGVmdCA9IHNlY29uZHNMZWZ0O1xyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHR0aGlzLkdldE5ld0NvZGUyRmEoKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdC8vdGhpcy5fcHJvamVjdFV0aWxzZXJ2aWNlLnNob3dIdHRwRXJyb3IoZXJyb3IpO1xyXG5cdFx0XHRcdHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yKVxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblxyXG5cdH1cclxuXHJcblx0Ly8gVmFsaWRhw6fDo28gZG8gY8OzZGlnbyAyIGZhdG9yZXNcclxuXHRwdWJsaWMgR2V0TmV3Q29kZTJGYSgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLl9hdXRoU2VydmljZS5HZXROZXdDb2RlMkZhKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5pc0xvYWRpbmdHZXROZXdDb2RlID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2Uuc3VjY2VzcyhcIkVudmlhbW9zIHVtIG5vdm8gY8OzZGlnbyBwYXJhIG8gZW5kZXJlw6dvIGRlIGUtbWFpbCB2aW5jdWxhZG8gYW8gc2V1IHVzdcOhcmlvLiBWZXJpZmlxdWUgbyBsaXhvIGVsZXRyw7RuaWNvIChTUEFNKSBkYSBzdWEgY2FpeGEgZGUgZW50cmFkYSwgY2FzbyBuw6NvIHRlbmhhIGVuY29udHJhZG8gbm9zc2EgbWVuc2FnZW0uXCIpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5pc0xvYWRpbmdHZXROZXdDb2RlID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdC8vdGhpcy5fcHJvamVjdFV0aWxzZXJ2aWNlLnNob3dIdHRwRXJyb3IoZXJyb3IpO1xyXG5cdFx0XHRcdHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yKTtcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHR9XHJcblxyXG5cdC8vICNlbmRyZWdpb24gUE9TVFxyXG5cclxuXHQvLyAjcmVnaW9uIFVUSUxJREFERVNcclxuXHJcblx0Ly8gUmV0b3JubyBwYXJhIGEgdGVsYSBkZSBsb2dpblxyXG5cdHB1YmxpYyB2b2x0YXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdHRoaXMuc2hvd1Bhcm1zQXV0aGVudGljYXRpb24yRmEgPSBmYWxzZTtcclxuXHJcblx0XHR0aGlzLl9hdXRoU3RvcmFnZVNlcnZpY2UubG9nb3V0KCk7XHJcblxyXG5cdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlKFtcIi9hdXRoL2xvZ2luXCJdKTtcclxuXHR9XHJcblxyXG5cdC8vICNlbmRyZWdpb24gVVRJTElEQURFU1xyXG5cclxuXHQvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFNFUlZJQ0UgTUVUSE9EUyA8PT09PT09PT09PVxyXG5cclxuXHQvLyAjcmVnaW9uID09PT09PT09PT0+IE1PREFMUyA8PT09PT09PT09PVxyXG5cclxuXHQvLyBFeGVjdXRhIGVzcXVlY2VyIHNlbmhhXHJcblx0cHVibGljIG9wZW5Gb3Jnb3R0ZW5QYXNzd29yZE1vZGFsKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XHJcblx0XHR0aGlzLmNyZWF0ZUZvcm1Gb3Jnb3R0ZW5QYXNzd29yZCgpO1xyXG5cclxuXHRcdHRoaXMubW9kYWxSZWYgPSB0aGlzLl9ic01vZGFsU2VydmljZS5zaG93KHRlbXBsYXRlLCB7XHJcblx0XHRcdGNsYXNzOiAnbW9kYWwtZGlhbG9nLWNlbnRlcmVkJyxcclxuXHRcdFx0aWdub3JlQmFja2Ryb3BDbGljazogZmFsc2UsXHJcblx0XHRcdGtleWJvYXJkOiBmYWxzZSxcclxuXHRcdFx0aWQ6IHRoaXMuaWRGZ3RQc3dcclxuXHRcdH0pO1xyXG5cclxuXHR9XHJcblxyXG5cdC8vIEVuY2VycmEgZXNxdWVjZXIgc2VuaGFcclxuXHRwdWJsaWMgY2xvc2VGb3Jnb3R0ZW5QYXNzd29yZE1vZGFsKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fYnNNb2RhbFNlcnZpY2UuaGlkZSh0aGlzLmlkRmd0UHN3KTtcclxuXHR9XHJcblxyXG5cdC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gTU9EQUxTIDw9PT09PT09PT09XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuXHQ8ZGl2IGNsYXNzPVwicm93XCI+XHJcblx0XHQ8IS0tIENvbnRlw7pkbyBkYSBESVYgZG8gYmFja2dyb3VuZCAtLT5cclxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZFwiIHN0eWxlPVwiYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgxMCwgNDQsIDgxLCAwLjkpLCByZ2JhKDEwLCA0NCwgODEsIDAuOSkpLCB1cmwoe3tfY3VzdG9tTG9naW5TZXJ2aWNlLmxvZ2luQmFja2dyb3VuZH19KVwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXBvc2l0aW9uIHRleHRvLWFwcmVzZW50YWNhbyBwcy01XCI+XHJcblx0XHRcdFx0XHQ8aDEgY2xhc3M9XCJ0aXRsZVwiIGlkPVwidGl0bGVcIj48L2gxPlxyXG5cdFx0XHRcdFx0PHAgY2xhc3M9XCJzdWJ0aXRsZVwiIGlkPVwic3VidGl0bGVcIj48L3A+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8IS0tIENvbnRlw7pkbyBkYSBESVYgZGUgTG9naW4gLS0+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuXHJcblx0XHRcdDxkaXYgY2xhc3M9XCJkaXYtc2l6ZVwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJsb2dvdGlwb1wiPlxyXG5cdFx0XHRcdFx0PGltZyBzdHlsZT1cImhlaWdodDogOTVweDtcIiBzcmM9XCJ7eyB0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5Mb2dvdGlwbyB9fVwiIGFsdD1cInt7IHRoaXMuX2N1c3RvbUxvZ2luU2VydmljZS5sb2dpbkFsdExvZ290aXBvIH19XCIgLz5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8Zm9ybSAgKm5nSWY9XCIhc2hvd1Bhcm1zQXV0aGVudGljYXRpb24yRmE7IGVsc2UgQXV0aGVudGljYXRpb24yRmFcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImZvcm0tcG9zaXRpb25cIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1sZyBmb3JtLWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCIgaWQ9XCJiYXNpYy1hZGRvbjFcIlxyXG5cdFx0XHRcdFx0XHRcdHN0eWxlPVwicGFkZGluZzogMTBweDsgYm9yZGVyLXJhZGl1czogNHB4IDBweCAwcHggNHB4XCI+XHJcblx0XHRcdFx0XHRcdFx0PGltZyBzcmM9XCJhc3NldHMvaWNvbnMvY2xvdWQuc3ZnXCIgYWx0PVwiY2xvdWQgaWNvblwiIC8+XHJcblx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkb21pbmlvXCIgaWQ9XCJkb21pbmlvXCJcclxuXHRcdFx0XHRcdFx0XHRhcmlhLWxhYmVsPVwiU2l6aW5nIGV4YW1wbGUgaW5wdXRcIiBwbGFjZWhvbGRlcj1cIkRvbcOtbmlvXCIgYXJpYS1sYWJlbD1cIkRvbcOtbmlvXCJcclxuXHRcdFx0XHRcdFx0XHRhcmlhLWRlc2NyaWJlZGJ5PVwiaW5wdXRHcm91cC1zaXppbmctbGdcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5pcy1pbnZhbGlkXT1cIkZvcm1VdGlscy5pc0ludmFsaWRGaWVsZChmb3JtLmdldCgnZG9taW5pbycpKVwiPlxyXG5cdFx0XHRcdFx0XHQ8YXBwLWZpZWxkLWVycm9yLW1lc3NhZ2UgW2NvbnRyb2xdPVwiZm9ybS5nZXQoJ2RvbWluaW8nKVwiIGxhYmVsPVwiRG9tw61uaW9cIj48L2FwcC1maWVsZC1lcnJvci1tZXNzYWdlPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtbGcgZm9ybS1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiIGlkPVwiaW5wdXRHcm91cC1zaXppbmctbGdcIlxyXG5cdFx0XHRcdFx0XHRcdHN0eWxlPVwicGFkZGluZzogMTBweDsgYm9yZGVyLXJhZGl1czogNHB4IDBweCAwcHggNHB4XCI+XHJcblx0XHRcdFx0XHRcdFx0PGltZyBzcmM9XCJhc3NldHMvaWNvbnMvYXQtc2lnbi5zdmdcIiBhbHQ9XCJhdC1zaWduIGljb25cIiAvPlxyXG5cdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwidXN1YXJpb1wiIGlkPVwidXN1YXJpb1wiXHJcblx0XHRcdFx0XHRcdFx0YXJpYS1sYWJlbD1cIlNpemluZyBleGFtcGxlIGlucHV0XCIgcGxhY2Vob2xkZXI9XCJVc3XDoXJpb1wiIGFyaWEtbGFiZWw9XCJVc3XDoXJpb1wiXHJcblx0XHRcdFx0XHRcdFx0YXJpYS1kZXNjcmliZWRieT1cImlucHV0R3JvdXAtc2l6aW5nLWxnXCJcclxuXHRcdFx0XHRcdFx0XHRbY2xhc3MuaXMtaW52YWxpZF09XCJGb3JtVXRpbHMuaXNJbnZhbGlkRmllbGQoZm9ybS5nZXQoJ3VzdWFyaW8nKSlcIj5cclxuXHRcdFx0XHRcdFx0PGFwcC1maWVsZC1lcnJvci1tZXNzYWdlIFtjb250cm9sXT1cImZvcm0uZ2V0KCd1c3VhcmlvJylcIiBsYWJlbD1cIlVzdcOhcmlvXCI+PC9hcHAtZmllbGQtZXJyb3ItbWVzc2FnZT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWxnIGZvcm0taXRlbVwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogOHB4O1wiPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIiBpZD1cImlucHV0R3JvdXAtc2l6aW5nLWxnXCJcclxuXHRcdFx0XHRcdFx0XHRzdHlsZT1cInBhZGRpbmc6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDRweCAwcHggMHB4IDRweDtcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9sb2NrLnN2Z1wiIGFsdD1cImxvY2staWNvblwiIC8+XHJcblx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VuaGFcIiBpZD1cInNlbmhhXCJcclxuXHRcdFx0XHRcdFx0XHRhcmlhLWxhYmVsPVwiU2l6aW5nIGV4YW1wbGUgaW5wdXRcIiBwbGFjZWhvbGRlcj1cIlNlbmhhXCIgYXJpYS1sYWJlbD1cInNlbmhhXCJcclxuXHRcdFx0XHRcdFx0XHRhcmlhLWRlc2NyaWJlZGJ5PVwiaW5wdXRHcm91cC1zaXppbmctbGdcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5pcy1pbnZhbGlkXT1cIkZvcm1VdGlscy5pc0ludmFsaWRGaWVsZChmb3JtLmdldCgnc2VuaGEnKSlcIj5cclxuXHRcdFx0XHRcdFx0PGFwcC1maWVsZC1lcnJvci1tZXNzYWdlIFtjb250cm9sXT1cImZvcm0uZ2V0KCdzZW5oYScpXCIgbGFiZWw9XCJTZW5oYVwiPjwvYXBwLWZpZWxkLWVycm9yLW1lc3NhZ2U+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyZW1lbWJlci1wYXNzd29yZFwiPlxyXG5cdFx0XHRcdFx0PCEtLSBMZW1icmFyIFNlbmhhXHJcblx0XHRcdFx0XHRcdDxpbnB1dCBpZD1cImNoZWNrYm94TGVtYnJhclNlbmhhXCIgdHlwZT1cImNoZWNrYm94XCIgLz5cclxuXHRcdFx0XHRcdFx0PGxhYmVsIGZvcj1cImNoZWNrYm94TGVtYnJhclNlbmhhXCI+IExlbWJyYXIgbWluaGEgc2VuaGEgPC9sYWJlbD5cclxuIFx0XHRcdFx0XHQtLT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCIgKGNsaWNrKT1cImdldFNlcnZlcigpXCIgdHlwZT1cInN1Ym1pdFwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1hY2Vzc2FyIGJ0bi1sZ1wiPlxyXG5cdFx0XHRcdFx0XHQ8YXBwLWxvYWRpbmctYnV0dG9uIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCI+PC9hcHAtbG9hZGluZy1idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuPiBBY2Vzc2FyIDwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5Gb3Jnb3R0ZW5QYXNzd29yZE1vZGFsKGZvcmdvdHRlblBhc3N3b3JkTW9kYWwpXCIgY2xhc3M9XCJmb3Jnb3R0ZW4tcGFzc3dvcmRcIj5cclxuXHRcdFx0XHRcdFx0PHNwYW4+IEVzcXVlY2V1IHN1YSBzZW5oYT8gPC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0PC9mb3JtPlxyXG5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgI0F1dGhlbnRpY2F0aW9uMkZhPlxyXG5cdFx0XHRcdFx0PGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtQXV0aGVudGljYXRpb24yRmFcIiBjbGFzcz1cImZvcm0tcG9zaXRpb25cIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWxnIGZvcm0taXRlbSBtYi0zXCI+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCIgaWQ9XCJpbnB1dEdyb3VwLXNpemluZy1sZ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cInBhZGRpbmc6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDRweCAwcHggMHB4IDRweDtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2xvY2suc3ZnXCIgYWx0PVwibG9jay1pY29uXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJjb2RlXCIgaWQ9XCJjb2RlXCJcclxuXHRcdFx0XHRcdFx0XHRcdGFyaWEtbGFiZWw9XCJTaXppbmcgZXhhbXBsZSBpbnB1dFwiIHBsYWNlaG9sZGVyPVwiQ8OzZGlnbyBkZSAyIGZhdG9yZXNcIiBhcmlhLWxhYmVsPVwiQ8OzZGlnbyBkZSAyIGZhdG9yZXNcIlxyXG5cdFx0XHRcdFx0XHRcdFx0YXJpYS1kZXNjcmliZWRieT1cImlucHV0R3JvdXAtc2l6aW5nLWxnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFtjbGFzcy5pcy1pbnZhbGlkXT1cIkZvcm1VdGlscy5pc0ludmFsaWRGaWVsZChmb3JtQXV0aGVudGljYXRpb24yRmEuZ2V0KCdjb2RlJykpXCI+XHJcblx0XHRcdFx0XHRcdFx0PGFwcC1maWVsZC1lcnJvci1tZXNzYWdlIFtjb250cm9sXT1cImZvcm1BdXRoZW50aWNhdGlvbjJGYS5nZXQoJ2NvZGUnKVwiIGxhYmVsPVwiQ8OzZGlnbyBkZSAyIGZhdG9yZXNcIj48L2FwcC1maWVsZC1lcnJvci1tZXNzYWdlPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XHJcblx0XHRcdFx0XHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwidm9sdGFyKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWFjZXNzYXIgZ2xiLWJ0bi1vdXRsaW5lLWRhcmstZGlzYWJsZWQgY29sIG1lLTFcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFZvbHRhclxyXG5cdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdDxidXR0b24gW2Rpc2FibGVkXT1cImlzTG9hZGluZ1NlbmRBdXRoZW50aWNhdGlvbjJGYVwiIChjbGljayk9XCJzZW5kQ29kZSgpXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1hY2Vzc2FyIGJ0bi1wcmltYXJ5IGNvbCBtcy0xXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YXBwLWxvYWRpbmctYnV0dG9uIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nU2VuZEF1dGhlbnRpY2F0aW9uMkZhXCI+PC9hcHAtbG9hZGluZy1idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRBY2Vzc2FyXHJcblx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XHJcblx0XHRcdFx0XHRcdFx0PGJ1dHRvbiAqbmdJZj1cInNlY29uZHNMZWZ0ID09IDA7IGVsc2UgbmV3Q29kZVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImlzTG9hZGluZ1wiIChjbGljayk9XCJnZXROZXdDb2RlKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWFjZXNzYXIgYnRuLW91dGxpbmUtcHJpbWFyeSBjb2xcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhcHAtbG9hZGluZy1idXR0b24gW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIj48L2FwcC1sb2FkaW5nLWJ1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHRcdEVudmlhciBub3ZvIGPDs2RpZ29cclxuXHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgI25ld0NvZGU+XHJcblx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInRleHQtY2VudGVyXCI+e3sgc2Vjb25kc0xlZnR9fSB7eyBzZWNvbmRzTGVmdCA9PSAxID8gJ3NlZ3VuZG8nIDogJ3NlZ3VuZG9zJyB9fSBwYXJhIG9idGVyIG5vdm8gY8OzZGlnbzwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZm9ybT5cdFxyXG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImZvb3Rlci1wb3NpdGlvblwiPlxyXG5cdFx0XHRcdFx0PGZvb3Rlcj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb290ZXJcIj4gXHJcblx0XHRcdFx0XHRcdFx0PGEgaHJlZj1cImh0dHBzOi8vZHBvLnByaXZhY3l0b29scy5jb20uYnIvcG9saWN5LXZpZXcvSm1HZU5sSmR3LzEvcG9saSVDQyU4MXRpY2EtZGUtcHJpdmFjaWRhZGUvcHRfQlI/cz0xNjg1NzMxNTEwMDY2XCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJzaXNwcm8gdGV4dC1wcmltYXJ5XCI+IFBvbMOtdGljYSBkZSBQcml2YWNpZGFkZSA8L2E+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJzZXBhcmF0b3JcIj4gfCA8L3A+XHJcblx0XHRcdFx0XHRcdFx0PGEgaHJlZj1cImh0dHBzOi8vZHBvLnByaXZhY3l0b29scy5jb20uYnIvcG9saWN5LXZpZXcvUm9yazM1Tk4yLzIvcG9saSVDQyU4MXRpY2EtZGUtY29va2llcy9wdF9CUj9zPTE2ODU3MzE1NTE5NzZcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInNpc3BybyB0ZXh0LXByaW1hcnlcIj4gUG9sw610aWNhIGRlIENvb2tpZXMgPC9hPlxyXG5cdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9vdGVyXCI+IERlc2Vudm9sdmlkbyBwb3IgXHJcblx0XHRcdFx0XHRcdFx0PGEgaHJlZj1cImh0dHBzOi8vd3d3LnNpc3Byby5jb20uYnIvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJzaXNwcm8gdGV4dC1wcmltYXJ5XCI+IHNpc3BybyBzL2EgPC9hPlxyXG5cdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9vdGVyXCI+IFNlcnZpw6dvcyBlIFRlY25vbG9naWEgZGEgaW5mb3JtYcOnw6NvIMKpIHt7IHllYXIgfX0gVG9kb3Mgb3MgZGlyZWl0b3MgcmVzZXJ2YWRvcyA8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImljb25zXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBocmVmPVwiaHR0cHM6Ly9wdC1ici5mYWNlYm9vay5jb20vU2lzcHJvRVJQL1wiIHRhcmdldD1cIl9ibGFua1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bGliLWljb24gY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIiBpY29uTmFtZT1cImZhY2Vib29rXCIgaWNvblNpemU9XCJtZWRpdW0tc21hbGxcIi8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBocmVmPVwiaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9hY2NvdW50cy9sb2dpbi8/bmV4dD0vc2lzcHJvX3NvZnR3YXJlL1wiIHRhcmdldD1cIl9ibGFua1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bGliLWljb24gY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIiBpY29uTmFtZT1cImluc3RhZ3JhbVwiIGljb25TaXplPVwibWVkaXVtLXNtYWxsXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgaHJlZj1cImh0dHBzOi8vYnIubGlua2VkaW4uY29tL2NvbXBhbnkvc2lzcHJvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxsaWItaWNvbiBjbGFzcz1cInRleHQtcHJpbWFyeVwiIGljb25OYW1lPVwibGlua2VkaW5cIiBpY29uU2l6ZT1cIm1lZGl1bS1zbWFsbFwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBbaHJlZl09XCJnZXR1cmxFcnBDb25maWcoKVwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXNpemU6IDEycHg7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdENvbmZpZ3VyYXIgRVJQXHJcblx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Zvb3Rlcj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIFRlbXBsYXRlIGRvIG1vZGFsIGRlIHNlbmhhIGVzcXVlY2lkYSAtLT5cclxuPG5nLXRlbXBsYXRlICNmb3Jnb3R0ZW5QYXNzd29yZE1vZGFsPlxyXG5cdDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUZndFBzd1wiPlxyXG5cdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIiBzdHlsZT1cImJveC1zaGFkb3c6IDJweCAycHggNXB4IDBweCByZ2JhKDAsMCwwLDAuNSk7XCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcC0zXCI+XHJcblx0XHRcdFx0PGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj4gUmVjdXBlcmHDp8OjbyBkZSBzZW5oYSA8L2g0PlxyXG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgZGF0YS1icy1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cImNsb3NlRm9yZ290dGVuUGFzc3dvcmRNb2RhbCgpXCI+XHJcblx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG5cdFx0XHRcdDxsYWJlbCBmb3I9XCJpbnB1dERvbWluaW9GZ3RQc3dcIiBjbGFzcz1cImlucHV0LWxhYmVsXCI+IERvbcOtbmlvIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcblx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJpbnB1dERvbWluaW9GZ3RQc3dcIiBmb3JtQ29udHJvbE5hbWU9XCJkb21pbmlvRmd0UHN3XCJcclxuXHRcdFx0XHRcdGNsYXNzPVwiZm9ybS1jb250cm9sIGlucHV0LXRleHRcIiBhcmlhLWxhYmVsPVwiU2l6aW5nIGV4YW1wbGUgaW5wdXRcIiBhcmlhLWxhYmVsPVwiRG9tw61uaW9cIlxyXG5cdFx0XHRcdFx0YXJpYS1kZXNjcmliZWRieT1cImlucHV0R3JvdXAtc2l6aW5nLWxnXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5pcy1pbnZhbGlkXT1cIkZvcm1VdGlscy5pc0ludmFsaWRGaWVsZChmb3JtRmd0UHN3LmdldCgnZG9taW5pb0ZndFBzdycpKVwiPlxyXG5cdFx0XHRcdDxhcHAtZmllbGQtZXJyb3ItbWVzc2FnZSBbY29udHJvbF09XCJmb3JtRmd0UHN3LmdldCgnZG9taW5pb0ZndFBzdycpXCIgbGFiZWw9XCJEb23DrW5pb1wiPjwvYXBwLWZpZWxkLWVycm9yLW1lc3NhZ2U+XHRcdFx0XHRcclxuXHJcblx0XHRcdFx0PGxhYmVsIGZvcj1cImlucHV0VXN1YXJpb0ZndFBzd1wiIGNsYXNzPVwiaW5wdXQtbGFiZWxcIj4gVXN1w6FyaW8gPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+PC9sYWJlbD5cclxuXHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImlucHV0VXN1YXJpb0ZndFBzd1wiIGZvcm1Db250cm9sTmFtZT1cInVzdWFyaW9GZ3RQc3dcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJmb3JtLWNvbnRyb2wgaW5wdXQtdGV4dFwiIGFyaWEtbGFiZWw9XCJTaXppbmcgZXhhbXBsZSBpbnB1dFwiIGFyaWEtbGFiZWw9XCJVc3XDoXJpb1wiXHJcblx0XHRcdFx0XHRhcmlhLWRlc2NyaWJlZGJ5PVwiaW5wdXRHcm91cC1zaXppbmctbGdcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmlzLWludmFsaWRdPVwiRm9ybVV0aWxzLmlzSW52YWxpZEZpZWxkKGZvcm1GZ3RQc3cuZ2V0KCd1c3VhcmlvRmd0UHN3JykpXCI+XHJcblx0XHRcdFx0PGFwcC1maWVsZC1lcnJvci1tZXNzYWdlIFtjb250cm9sXT1cImZvcm1GZ3RQc3cuZ2V0KCd1c3VhcmlvRmd0UHN3JylcIiBsYWJlbD1cIlVzdcOhcmlvXCI+PC9hcHAtZmllbGQtZXJyb3ItbWVzc2FnZT5cdFx0XHRcdFxyXG5cdFx0XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcblx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gZ2xiLWJ0bi1kYXJrLWRpc2FibGVkIG1vZGFsLWJ1dHRvblwiIChjbGljayk9XCJjbG9zZUZvcmdvdHRlblBhc3N3b3JkTW9kYWwoKVwiPlxyXG5cdFx0XHRcdFx0PHNwYW4+IENhbmNlbGFyIDwvc3Bhbj5cclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtb2RhbC1idXR0b25cIiAoY2xpY2spPVwic2VuZEZvcmdvdHRlblBhc3N3b3JkKCk7XCI+XHJcblx0XHRcdFx0XHQ8c3Bhbj4gQ29udGludWFyIDwvc3Bhbj5cclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0PC9kaXY+XHJcblx0PC9mb3JtPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -14,7 +14,6 @@ export class PrimaryDropdownComponent {
14
14
  this.primaryDropdown = [];
15
15
  }
16
16
  ngOnInit() {
17
- console.log('ngOnInit');
18
17
  this.buttonWasClicked.subscribe(() => { this.selectDataState = true; });
19
18
  // Resolver colisão de eventos
20
19
  if (this._customMenuService.menuDynamic) {
@@ -65,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
65
64
  }], ctorParameters: () => [{ type: i1.LibCustomMenuService }], propDecorators: { buttonWasClicked: [{
66
65
  type: Input
67
66
  }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvbWVudS1sYXRlcmFsL2Ryb3Bkb3duL3ByaW1hcnktZHJvcGRvd24vcHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvbWVudS1sYXRlcmFsL2Ryb3Bkb3duL3ByaW1hcnktZHJvcGRvd24vcHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBR2xDLG1GQUFtRjtBQUNuRixzRUFBc0U7QUFPdEUsTUFBTSxPQUFPLHdCQUF3QjtJQVUvQixZQUNjLGtCQUF3QztRQUF4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBTjdDLHFCQUFnQixHQUF3QixJQUFJLFVBQVUsQ0FBQztRQUV6RCxvQkFBZSxHQUFlLEVBQ3BDLENBQUE7SUFLRyxDQUFDO0lBRUwsUUFBUTtRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZFLDhCQUE4QjtRQUM5QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNWLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzdHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNmLENBQUM7aUJBQU0sQ0FBQztnQkFDRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdHLENBQUM7UUFFUCxDQUFDO2FBQU0sQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0csQ0FBQztJQUVQLENBQUM7SUFFTSxZQUFZLENBQUMsTUFBVyxFQUFFLGVBQWlDO1FBQzVELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXJCLElBQUksZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLENBQUM7YUFBTSxDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDbkMsQ0FBQztJQUNQLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxDQUFRLEVBQUUsR0FBbUI7UUFDL0MsSUFBSSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLENBQUM7SUFDUCxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQWE7UUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVNLG1CQUFtQjtRQUNwQixNQUFNLEdBQUcsR0FBVyw0REFBNEQsQ0FBQztRQUVqRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBYztRQUNoQyxNQUFNLEdBQUcsR0FBVyxvREFBb0QsTUFBTSxFQUFFLENBQUM7UUFFakYsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQzsrR0FsRU0sd0JBQXdCO21HQUF4Qix3QkFBd0IsOEdDWnJDLDBpQ0FtQk07OzRGRFBPLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDTSxzQkFBc0I7eUZBU3ZCLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTGliQ3VzdG9tTWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jdXN0b20vY3VzdG9tLW1lbnUuc2VydmljZSc7XHJcbi8vaW1wb3J0IHsgUHJvamVjdFV0aWxzZXJ2aWNlIH0gZnJvbSAnc3JjL2FwcC9wcm9qZWN0L3V0aWxzL3Byb2plY3QtdXRpbHMuc2VydmljZSc7XHJcbi8vaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgICBzZWxlY3RvcjogJ2FwcC1wcmltYXJ5LWRyb3Bkb3duJyxcclxuICAgICAgdGVtcGxhdGVVcmw6ICcuL3ByaW1hcnktZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgICBzdHlsZVVybHM6IFsnLi9wcmltYXJ5LWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmltYXJ5RHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgICAgcHVibGljIHNlbGVjdERhdGFTdGF0ZSE6IGJvb2xlYW47XHJcbiAgICAgIHB1YmxpYyBtb2R1bG86IGFueTtcclxuXHJcbiAgICAgIEBJbnB1dCgpIGJ1dHRvbldhc0NsaWNrZWQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBuZXcgT2JzZXJ2YWJsZTtcclxuXHJcbiAgICAgIHB1YmxpYyBwcmltYXJ5RHJvcGRvd246IEFycmF5PGFueT4gPSBbXHJcbiAgICAgIF1cclxuXHJcbiAgICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgICAgICBwcml2YXRlIF9jdXN0b21NZW51U2VydmljZTogTGliQ3VzdG9tTWVudVNlcnZpY2UsXHJcbiAgICAgICAgICAgIC8vcHJpdmF0ZSBfcHJvamVjdFV0aWxzZXJ2aWNlOiBQcm9qZWN0VXRpbHNlcnZpY2VcclxuICAgICAgKSB7IH1cclxuXHJcbiAgICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnbmdPbkluaXQnKTtcclxuICAgICAgICAgICAgdGhpcy5idXR0b25XYXNDbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMuc2VsZWN0RGF0YVN0YXRlID0gdHJ1ZSB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJlc29sdmVyIGNvbGlzw6NvIGRlIGV2ZW50b3NcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1lbnVEeW5hbWljKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1lbnVDb25maWcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJpbWFyeURyb3Bkb3duID0gdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudUNvbmZpZy5pbml0aWFsaXplTWVudURyb3Bkb3duKHRoaXMucHJpbWFyeURyb3Bkb3duKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJpbWFyeURyb3Bkb3duID0gdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudUNvbmZpZy5pbml0aWFsaXplTWVudURyb3Bkb3duKHRoaXMucHJpbWFyeURyb3Bkb3duKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcmltYXJ5RHJvcGRvd24gPSB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51Q29uZmlnLmluaXRpYWxpemVNZW51RHJvcGRvd24odGhpcy5wcmltYXJ5RHJvcGRvd24pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBwdWJsaWMgb3BlbkRyb3Bkb3duKG1vZHVsbzogYW55LCBkZXNpcmVkRHJvcGRvd246IFRlbXBsYXRlUmVmPGFueT4pIHtcclxuICAgICAgICAgICAgdGhpcy5tb2R1bG8gPSBtb2R1bG87XHJcblxyXG4gICAgICAgICAgICBpZiAoZGVzaXJlZERyb3Bkb3duID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRhU3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERhdGFTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHB1YmxpYyBvbkNsaWNrZWRPdXRzaWRlKGU6IEV2ZW50LCByZWY6IEhUTUxEaXZFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdERhdGFTdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0YVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBwdWJsaWMgYmFja1RvUHJpbWFyeShkYXRhOiBib29sZWFuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0YVN0YXRlID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcHVibGljIHJlZGlyZWN0VG9QcmVQb3J0YWwoKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybDogc3RyaW5nID0gYGh0dHBzOi8vc2lzY2FuZGVzdjYuc2lzcHJvLmNvbS5ici9TaXNwcm9FcnBDbG91ZC9QcmVQb3J0YWxgO1xyXG5cclxuICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHB1YmxpYyByZWRpcmVjdFRvTW9kdWxvKG1vZHVsbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybDogc3RyaW5nID0gYGh0dHBzOi8vc2lzY2FuZGVzdjYuc2lzcHJvLmNvbS5ici9TaXNwcm9FcnBDbG91ZC8ke21vZHVsb31gO1xyXG5cclxuICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInAtMlwiPlxyXG4gICAgPGRpdiAqbmdJZj1cInNlbGVjdERhdGFTdGF0ZTsgZWxzZSBzZWNvbmRhcnlfZHJvcGRvd25cIiBjbGFzcz1cIm1iLTIgdy0xMDBcIj5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtb2R1bG8gb2YgcHJpbWFyeURyb3Bkb3duXCIgKGNsaWNrKT1cIihtb2R1bG8uc2Vjb25kYXJ5X2xldmVsICE9IG51bGwgPyBvcGVuRHJvcGRvd24obW9kdWxvLCBzZWNvbmRhcnlfZHJvcGRvd24pIDogcmVkaXJlY3RUb01vZHVsbyhtb2R1bG8uVVJMKSlcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7eyBtb2R1bG8uaWNvbiB9fVwiIGFsdD1cInt7IG1vZHVsby5sYWJlbCB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG1vZHVsby5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8aHIgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+XHJcbiAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBsaW5rLXBvcnRhbCBtdC0yXCIgKGNsaWNrKT1cInJlZGlyZWN0VG9QcmVQb3J0YWwoKVwiIHRhcmdldD1cIl9ibGFua1wiPlBvcnRhbCBTaXNwcm88L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3NlY29uZGFyeV9kcm9wZG93bj5cclxuICAgICAgICA8ZGl2ICNzZWNvbmRhcnlfcmVmIChjbGlja091dHNpZGUpPVwib25DbGlja2VkT3V0c2lkZSgkZXZlbnQsIHNlY29uZGFyeV9yZWYpXCI+XHJcbiAgICAgICAgICAgIDxhcHAtc2Vjb25kYXJ5LWRyb3Bkb3duIFttb2R1bG9dPVwidGhpcy5tb2R1bG9cIiAoYmFja1ByaW1hcnlEcm9wZG93bik9XCJiYWNrVG9QcmltYXJ5KCRldmVudClcIj48L2FwcC1zZWNvbmRhcnktZHJvcGRvd24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvbWVudS1sYXRlcmFsL2Ryb3Bkb3duL3ByaW1hcnktZHJvcGRvd24vcHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvbWVudS1sYXRlcmFsL2Ryb3Bkb3duL3ByaW1hcnktZHJvcGRvd24vcHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBR2xDLG1GQUFtRjtBQUNuRixzRUFBc0U7QUFPdEUsTUFBTSxPQUFPLHdCQUF3QjtJQVUvQixZQUNjLGtCQUF3QztRQUF4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBTjdDLHFCQUFnQixHQUF3QixJQUFJLFVBQVUsQ0FBQztRQUV6RCxvQkFBZSxHQUFlLEVBQ3BDLENBQUE7SUFLRyxDQUFDO0lBRUwsUUFBUTtRQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RSw4QkFBOEI7UUFDOUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3RyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDZixDQUFDO2lCQUFNLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3RyxDQUFDO1FBRVAsQ0FBQzthQUFNLENBQUM7WUFDRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdHLENBQUM7SUFFUCxDQUFDO0lBRU0sWUFBWSxDQUFDLE1BQVcsRUFBRSxlQUFpQztRQUM1RCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ25DLENBQUM7SUFDUCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsQ0FBUSxFQUFFLEdBQW1CO1FBQy9DLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFhO1FBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxtQkFBbUI7UUFDcEIsTUFBTSxHQUFHLEdBQVcsNERBQTRELENBQUM7UUFFakYsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLE1BQWM7UUFDaEMsTUFBTSxHQUFHLEdBQVcsb0RBQW9ELE1BQU0sRUFBRSxDQUFDO1FBRWpGLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7K0dBakVNLHdCQUF3QjttR0FBeEIsd0JBQXdCLDhHQ1pyQywwaUNBbUJNOzs0RkRQTyx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ00sc0JBQXNCO3lGQVN2QixnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IExpYkN1c3RvbU1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY3VzdG9tL2N1c3RvbS1tZW51LnNlcnZpY2UnO1xyXG4vL2ltcG9ydCB7IFByb2plY3RVdGlsc2VydmljZSB9IGZyb20gJ3NyYy9hcHAvcHJvamVjdC91dGlscy9wcm9qZWN0LXV0aWxzLnNlcnZpY2UnO1xyXG4vL2ltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgICAgc2VsZWN0b3I6ICdhcHAtcHJpbWFyeS1kcm9wZG93bicsXHJcbiAgICAgIHRlbXBsYXRlVXJsOiAnLi9wcmltYXJ5LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICAgICAgc3R5bGVVcmxzOiBbJy4vcHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJpbWFyeURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICAgIHB1YmxpYyBzZWxlY3REYXRhU3RhdGUhOiBib29sZWFuO1xyXG4gICAgICBwdWJsaWMgbW9kdWxvOiBhbnk7XHJcblxyXG4gICAgICBASW5wdXQoKSBidXR0b25XYXNDbGlja2VkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gbmV3IE9ic2VydmFibGU7XHJcblxyXG4gICAgICBwdWJsaWMgcHJpbWFyeURyb3Bkb3duOiBBcnJheTxhbnk+ID0gW1xyXG4gICAgICBdXHJcblxyXG4gICAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICAgICAgcHJpdmF0ZSBfY3VzdG9tTWVudVNlcnZpY2U6IExpYkN1c3RvbU1lbnVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAvL3ByaXZhdGUgX3Byb2plY3RVdGlsc2VydmljZTogUHJvamVjdFV0aWxzZXJ2aWNlXHJcbiAgICAgICkgeyB9XHJcblxyXG4gICAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAgICAgdGhpcy5idXR0b25XYXNDbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMuc2VsZWN0RGF0YVN0YXRlID0gdHJ1ZSB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJlc29sdmVyIGNvbGlzw6NvIGRlIGV2ZW50b3NcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1lbnVEeW5hbWljKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1lbnVDb25maWcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJpbWFyeURyb3Bkb3duID0gdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudUNvbmZpZy5pbml0aWFsaXplTWVudURyb3Bkb3duKHRoaXMucHJpbWFyeURyb3Bkb3duKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJpbWFyeURyb3Bkb3duID0gdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudUNvbmZpZy5pbml0aWFsaXplTWVudURyb3Bkb3duKHRoaXMucHJpbWFyeURyb3Bkb3duKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcmltYXJ5RHJvcGRvd24gPSB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51Q29uZmlnLmluaXRpYWxpemVNZW51RHJvcGRvd24odGhpcy5wcmltYXJ5RHJvcGRvd24pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBwdWJsaWMgb3BlbkRyb3Bkb3duKG1vZHVsbzogYW55LCBkZXNpcmVkRHJvcGRvd246IFRlbXBsYXRlUmVmPGFueT4pIHtcclxuICAgICAgICAgICAgdGhpcy5tb2R1bG8gPSBtb2R1bG87XHJcblxyXG4gICAgICAgICAgICBpZiAoZGVzaXJlZERyb3Bkb3duID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRhU3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERhdGFTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHB1YmxpYyBvbkNsaWNrZWRPdXRzaWRlKGU6IEV2ZW50LCByZWY6IEhUTUxEaXZFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdERhdGFTdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0YVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBwdWJsaWMgYmFja1RvUHJpbWFyeShkYXRhOiBib29sZWFuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0YVN0YXRlID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcHVibGljIHJlZGlyZWN0VG9QcmVQb3J0YWwoKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybDogc3RyaW5nID0gYGh0dHBzOi8vc2lzY2FuZGVzdjYuc2lzcHJvLmNvbS5ici9TaXNwcm9FcnBDbG91ZC9QcmVQb3J0YWxgO1xyXG5cclxuICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHB1YmxpYyByZWRpcmVjdFRvTW9kdWxvKG1vZHVsbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybDogc3RyaW5nID0gYGh0dHBzOi8vc2lzY2FuZGVzdjYuc2lzcHJvLmNvbS5ici9TaXNwcm9FcnBDbG91ZC8ke21vZHVsb31gO1xyXG5cclxuICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInAtMlwiPlxyXG4gICAgPGRpdiAqbmdJZj1cInNlbGVjdERhdGFTdGF0ZTsgZWxzZSBzZWNvbmRhcnlfZHJvcGRvd25cIiBjbGFzcz1cIm1iLTIgdy0xMDBcIj5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtb2R1bG8gb2YgcHJpbWFyeURyb3Bkb3duXCIgKGNsaWNrKT1cIihtb2R1bG8uc2Vjb25kYXJ5X2xldmVsICE9IG51bGwgPyBvcGVuRHJvcGRvd24obW9kdWxvLCBzZWNvbmRhcnlfZHJvcGRvd24pIDogcmVkaXJlY3RUb01vZHVsbyhtb2R1bG8uVVJMKSlcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7eyBtb2R1bG8uaWNvbiB9fVwiIGFsdD1cInt7IG1vZHVsby5sYWJlbCB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG1vZHVsby5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8aHIgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+XHJcbiAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBsaW5rLXBvcnRhbCBtdC0yXCIgKGNsaWNrKT1cInJlZGlyZWN0VG9QcmVQb3J0YWwoKVwiIHRhcmdldD1cIl9ibGFua1wiPlBvcnRhbCBTaXNwcm88L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3NlY29uZGFyeV9kcm9wZG93bj5cclxuICAgICAgICA8ZGl2ICNzZWNvbmRhcnlfcmVmIChjbGlja091dHNpZGUpPVwib25DbGlja2VkT3V0c2lkZSgkZXZlbnQsIHNlY29uZGFyeV9yZWYpXCI+XHJcbiAgICAgICAgICAgIDxhcHAtc2Vjb25kYXJ5LWRyb3Bkb3duIFttb2R1bG9dPVwidGhpcy5tb2R1bG9cIiAoYmFja1ByaW1hcnlEcm9wZG93bik9XCJiYWNrVG9QcmltYXJ5KCRldmVudClcIj48L2FwcC1zZWNvbmRhcnktZHJvcGRvd24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj4iXX0=
@@ -56,7 +56,6 @@ export class MenuLateralComponent {
56
56
  this._menuServices.getNewUserImageEvent().subscribe(() => { this.getMenuUserImg(); });
57
57
  }
58
58
  ngOnInit() {
59
- console.log(this.menuConfig);
60
59
  // Inscreva-se no evento NavigationEnd para receber notificações quando a rota mudar, serve para atualizar a seleção do menu corretamente
61
60
  this._router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe((event) => {
62
61
  this._customMenuService.menuItems = this._customMenuService.menuConfig.updateRouteSelection(this._router.url, this._customMenuService.menuItems);
@@ -96,7 +95,7 @@ export class MenuLateralComponent {
96
95
  }
97
96
  getMenuUserImg() {
98
97
  this._menuServices.getImagemMenu().subscribe({
99
- next: response => { this.footerUserImgSrc = response.InfraUsuarioImg.IMAGEM; },
98
+ next: response => { this.footerUserImgSrc = response.InfraUsuarioImg.Imagem; },
100
99
  error: error => {
101
100
  //this._projectUtilService.showHttpError(error);
102
101
  this._messageService.showAlertDanger(error);
@@ -167,7 +166,6 @@ export class MenuLateralComponent {
167
166
  this.submenuList = [];
168
167
  }
169
168
  else {
170
- console.log(ref);
171
169
  console.warn('ref is undefined or null');
172
170
  }
173
171
  }
@@ -232,4 +230,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
232
230
  type: ContentChild,
233
231
  args: [TemplateRef]
234
232
  }] } });
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1sYXRlcmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1hdXRoL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWxhdGVyYWwvbWVudS9tZW51LWxhdGVyYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWF1dGgvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtbGF0ZXJhbC9tZW51L21lbnUtbGF0ZXJhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU12QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVl4RSxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQ1Msa0JBQXdDLEVBQ3ZDLG1CQUF1QyxFQUN2QyxlQUErQixFQUMvQixhQUFrQyxFQUNsQyxlQUErQjtJQUN2QyxrREFBa0Q7SUFDMUMsT0FBZSxFQUNmLFlBQXlCO1FBUDFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7UUFDdkMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUUvQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsaUJBQVksR0FBWixZQUFZLENBQWE7UUErQ25CLDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUUzQyx3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SUFFTSxjQUFjLENBQUMsR0FBVztRQUMvQixPQUFPLG9EQUFvRCxHQUFHLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQsK0NBQStDO0lBRS9DLHlDQUF5QztJQUV6Qzs7O01BR0U7SUFDRixTQUFTLENBQUMsUUFBMEIsRUFBRSxPQUFlO1FBQ25ELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQyxLQUFLLEVBQUUsZ0NBQWdDO1lBQ3ZDLG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsUUFBUSxFQUFFLEtBQUs7WUFDZixFQUFFLEVBQUUsT0FBTztTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxPQUFlO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBN1BVLG9CQUFvQjttR0FBcEIsb0JBQW9CLG9HQXNEakIsV0FBVyxxUEM1RTNCLHFwVkFpTkE7OzRGRDNMYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCO3FRQXFESyxjQUFjO3NCQUE5QyxTQUFTO3VCQUFDLFlBQVk7Z0JBSU8sUUFBUTtzQkFBckMsU0FBUzt1QkFBQyxVQUFVO2dCQUNhLGNBQWM7c0JBQS9DLFlBQVk7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICduZ3gtc3AtaW5mcmEnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTGliQ3VzdG9tTWVudVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL2N1c3RvbS9jdXN0b20tbWVudS5zZXJ2aWNlJztcclxuXHJcbi8vaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnRzJztcclxuLy9pbXBvcnQgeyBQcm9qZWN0VXRpbHNlcnZpY2UgfSBmcm9tICdzcmMvYXBwL3Byb2plY3QvdXRpbHMvcHJvamVjdC11dGlscy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZW51Q29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS9tZW51LWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmFnZS9hdXRoLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lbnVTZXJ2aWNlc1NlcnZpY2UgfSBmcm9tICcuLi9tZW51LXNlcnZpY2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJTWVudUl0ZW1TdHJ1Y3R1cmUgfSBmcm9tICcuLi9tb2RlbC9pbWVudS1pdGVtLXN0cnVjdHVyZS5tb2RlbCc7XHJcbmltcG9ydCB7IElTdWJtZW51SXRlbVN0cnVjdHVyZSB9IGZyb20gJy4uL21vZGVsL2lzdWJtZW51LWl0ZW0tc3RydWN0dXJlLm1vZGVsJztcclxuaW1wb3J0IHsgVXN1YXJpb19JTUcgfSBmcm9tICcuLi9tb2RlbC91c3VhcmlvLWltZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tZW51LWxhdGVyYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LWxhdGVyYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lbnUtbGF0ZXJhbC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVudUxhdGVyYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIF9jdXN0b21NZW51U2VydmljZTogTGliQ3VzdG9tTWVudVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hdXRoU3RvcmFnZVNlcnZpY2U6IEF1dGhTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2JzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcclxuICAgIHByaXZhdGUgX21lbnVTZXJ2aWNlczogTWVudVNlcnZpY2VzU2VydmljZSxcclxuICAgIHByaXZhdGUgX21lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIC8vcHJpdmF0ZSBfcHJvamVjdFV0aWxTZXJ2aWNlOiBQcm9qZWN0VXRpbHNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZVxyXG4gICkge1xyXG4gICAgLy8gSW1wbGVtZW50YcOnw6NvIHF1ZSB2ZXJpZmljYSBldmVudG9zIGFjaW9uYWRvcyBuYSBjbGFzc2UgZGUgc2VydmljZS5cclxuICAgIHRoaXMuX21lbnVTZXJ2aWNlcy5nZXROZXdVc2VySW1hZ2VFdmVudCgpLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMuZ2V0TWVudVVzZXJJbWcoKTsgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLm1lbnVDb25maWcpXHJcblxyXG4gICAgLy8gSW5zY3JldmEtc2Ugbm8gZXZlbnRvIE5hdmlnYXRpb25FbmQgcGFyYSByZWNlYmVyIG5vdGlmaWNhw6fDtWVzIHF1YW5kbyBhIHJvdGEgbXVkYXIsIHNlcnZlIHBhcmEgYXR1YWxpemFyIGEgc2VsZcOnw6NvIGRvIG1lbnUgY29ycmV0YW1lbnRlXHJcbiAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51SXRlbXMgPSB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51Q29uZmlnLnVwZGF0ZVJvdXRlU2VsZWN0aW9uKHRoaXMuX3JvdXRlci51cmwsIHRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1lbnVJdGVtcylcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudUR5bmFtaWMpIHtcclxuICAgICAgdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudUNvbmZpZy5zZXRNZW51U3RhdGljKHRydWUpO1xyXG4gICAgICB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51SXRlbXMgPSB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51Q29uZmlnLmluaXRpYWxpemVNZW51KHRoaXMuX3JvdXRlci51cmwpOyAgICBcclxuXHJcbiAgICAgIC8vIE3DqXRvZG8gY29tIGN1c3RvbWl6YcOnw7VlcyBwYXJhIGluaWNpYWxpemHDp8OjbyBkbyBNZW51IEVzdMOhdGljb1xyXG4gICAgICB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51U3RhdGljT25Jbml0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gTcOpdG9kbyBjb20gY3VzdG9taXphw6fDtWVzIHBhcmEgaW5pY2lhbGl6YcOnw6NvIGRvIE1lbnUgRGluw6JtaWNvXHJcbiAgICAgIHRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1lbnVEeW5hbWljT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ub21lRXN0YWJlbGVjaW1lbnRvID0gdGhpcy5fYXV0aFN0b3JhZ2VTZXJ2aWNlLmluZnJhRXN0YWJOb21lO1xyXG4gICAgdGhpcy5mb290ZXJVc2VyTmFtZSA9IHRoaXMuX2F1dGhTdG9yYWdlU2VydmljZS51c2VyTmFtZTtcclxuXHJcbiAgICB0aGlzLmNoZWNrRm9yQ2FjaGVkSW1hZ2UoKTtcclxuXHJcbiAgICB0aGlzLmdldFVzZXJFbWFpbCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBQUk9QRVJUSUVTIDw9PT09PT09PT09XHJcblxyXG4gIC8vICNyZWdpb24gUFJJVkFURVxyXG5cclxuICAvLyBFUklDSzogdm91IG1hbnRlciBlc3RlIHBvciBlbnF1YW50byBwYXJhIHF1YW5kbyBmb3IgbmVjZXNzw6FyaW8gZXN0YSBmdW5jaW9uYWxpZGFkZSBldSBjb25zaWdhIHJlZmF6w6otbGFzIHNlbSBtdWl0byBwcm9ibGVtYVxyXG4gIEBWaWV3Q2hpbGQoXCJub3RpZl9tZW51XCIpIHByaXZhdGUgbm90aWZfdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvLyAjcmVnaW9uIFBVQkxJQ1xyXG5cclxuICBAVmlld0NoaWxkKCdtZW51TGluaycpIHB1YmxpYyBtZW51TGluaz86IEhUTUxBbmNob3JFbGVtZW50O1xyXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpIHB1YmxpYyBkZXNpcmVkQ29udGVudD86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBNT0RBTF9FU1RBQkVMRUNJTUVOVE86IG51bWJlciA9IDE7XHJcblxyXG4gIHB1YmxpYyBub21lRXN0YWJlbGVjaW1lbnRvOiBzdHJpbmcgPSAnRXN0YWJlbGVjaW1lbnRvIHBhZHLDo28nO1xyXG4gIHB1YmxpYyB0aXRsZVN1Ym1lbnU6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHVibGljIHN1Ym1lbnVMaXN0OiAoSVN1Ym1lbnVJdGVtU3RydWN0dXJlIHwgdW5kZWZpbmVkKVtdID0gW107XHJcblxyXG4gIHB1YmxpYyBtZXNzYWdlSWZDbGlja2VkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLyoqIEVzdGEgdmFyacOhdmVsIMOpIHVzYWRhIG5hIGFiZXJ0dXJhIGRvIHN1Ym1lbnUgZSBkbyBzdWJtZW51IHNlY3VuZMOhcmlvIHBhcmEgXHJcbiAgICAqIHF1ZSBhIGZ1bsOnw6NvIG9uQ2xpY2tlZE91dHNpZGUoKSBxdWUgZXN0w6EgbmEgc2VndW5kYSBkaXYgcHJpbmNpcGFsIGRvIEhUTUwgZG9cclxuICAgICogY29tcG9uZW50ZSBuw6NvIHNlamEgYXRpdmFkYSwgcG9pcyBzZSBlbGEgZm9yIGF0aXZhZGEgZWxhIGlyw6EgZmVjaGFyIG8gbWVudVxyXG4gICAgKiBsYXRlcmFsLCBlIHF1YW5kbyB2YW1vcyBkbyBzdWJtZW51IHBhcmEgbyBzdWJtZW51IHNlY3VuZMOhcmlvIG7Do28gcXVlcmVtb3NcclxuICAgICogZmVjaGFyIG8gbWVudSBsYXRlcmFsLCBlIHF1YW5kbyB2YW1vcyBkbyBzdWJtZW51IHNlY3VuZMOhcmlvIHBhcmEgbyBzdWJtZW51XHJcbiAgICAqIHRhbWLDqW0gbsOjbyBxdWVyZW1vcyBmZWNoYXIgbyBtZW51IGxhdGVyYWw7XHJcbiAgKi9cclxuICBwdWJsaWMgY2xvc2VNZW51OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqIFV0aWxpemFkYSBjb21vIGEgZm9udGUgZGEgaW1hZ2VtIGRlIHBlcmZpbCBkbyB1c3XDoXJpbyBsb2dhZG8gbm8gc2lzdGVtYS4gKi9cclxuICBwdWJsaWMgZm9vdGVyVXNlckltZ1NyYzogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLyoqIEVtYWkgZG8gdXN1w6FyaW8gbG9nYWRvIHBhcmEgc2VyIGV4aWJpZG8gbm8gcG9wb3ZlciAqL1xyXG4gIHB1YmxpYyBmb290ZXJVc2VyRW1haWw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8qKiBOb21lIGRvIHVzdcOhcmlvIGxvZ2FkbyBwYXJhIHNlciBleGliaWRvIG5vIHJvZGFww6kgZG8gbWVudS4gKi9cclxuICBwdWJsaWMgZm9vdGVyVXNlck5hbWU6IHN0cmluZyA9IFwiVXN1w6FyaW9cIjtcclxuXHJcbiAgcHVibGljIGlzUG9wb3ZlclZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0JhbGxvb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG5cclxuICAvLyBwcm9wcmllZGFkZXMgaW5pY2lhZGFzIHF1YW5kbyBwYXNzYXIgbyBDdXN0b21NZW51U2VydmljZVxyXG5cclxuICBwdWJsaWMgbWVudUR5bmFtaWM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbWVudUNvbmZpZzogTWVudUNvbmZpZ1NlcnZpY2UgPSBuZXcgTWVudUNvbmZpZ1NlcnZpY2U7XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUFVCTElDXHJcblxyXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxyXG5cclxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IFNFUlZJQ0VTIDw9PT09PT09PT09XHJcblxyXG4gIC8vICNyZWdpb24gR0VUXHJcbiAgcHJpdmF0ZSBnZXRFc3RhYmVsZWNpbWVudG9TZXNzaW9uKGVzdGFiSUQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fbWVudVNlcnZpY2VzLmdldEVzdGFiZWxlY2ltZW50b1Nlc3Npb24oZXN0YWJJRCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHRoaXMubm9tZUVzdGFiZWxlY2ltZW50byA9IHJlc3BvbnNlLkluZnJhRXN0YWJOb21lO1xyXG4gICAgICAgIHRoaXMuX2F1dGhTdG9yYWdlU2VydmljZS5pbmZyYUVtcHJlc2FJZCA9IHJlc3BvbnNlLkluZnJhRW1wcmVzYUlkO1xyXG4gICAgICAgIHRoaXMuX2F1dGhTdG9yYWdlU2VydmljZS5pbmZyYUVtcHJlc2FOb21lID0gcmVzcG9uc2UuSW5mcmFFbXByZXNhTm9tZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICAvL3RoaXMuX3Byb2plY3RVdGlsU2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKTsgXHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNZW51VXNlckltZygpOiB2b2lkIHtcclxuICAgIHRoaXMuX21lbnVTZXJ2aWNlcy5nZXRJbWFnZW1NZW51KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4geyB0aGlzLmZvb3RlclVzZXJJbWdTcmMgPSByZXNwb25zZS5JbmZyYVVzdWFyaW9JbWcuSU1BR0VNOyB9LFxyXG4gICAgICBlcnJvcjogZXJyb3IgPT4ge1xyXG4gICAgICAgIC8vdGhpcy5fcHJvamVjdFV0aWxTZXJ2aWNlLnNob3dIdHRwRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRVc2VyRW1haWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tZW51U2VydmljZXMuZ2V0VXN1YXJpb0VtYWlsKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4geyB0aGlzLmZvb3RlclVzZXJFbWFpbCA9IHJlc3BvbnNlLkVtYWlsOyB9LFxyXG4gICAgICBlcnJvcjogZXJyb3IgPT4ge1xyXG4gICAgICAgIC8vdGhpcy5fcHJvamVjdFV0aWxTZXJ2aWNlLnNob3dIdHRwRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvbiBHRVRcclxuXHJcbiAgLy8gI3JlZ2lvbiBVUERBVEVcclxuICBwdWJsaWMgdXBkYXRlTGFzdExvZ0VzdGFiZWxlY2ltZW50byhlc3RhYjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tZW51U2VydmljZXMudXBkYXRlTGFzdExvZ0VzdGFiSUQoZXN0YWIuc3BsaXQoXCIgLSBcIilbMF0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5zaG93QWxlcnRTdWNjZXNzKCdFc3RhYmVsZWNpbWVudG8gYWx0ZXJhZG8gY29tIHN1Y2Vzc28hJyk7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0RXN0YWJlbGVjaW1lbnRvU2Vzc2lvbihlc3RhYi5zcGxpdChcIiAtIFwiKVswXSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5fYXV0aFN0b3JhZ2VTZXJ2aWNlLmluZnJhRXN0YWJJZCA9IGVzdGFiLnNwbGl0KFwiIC0gXCIpWzBdO1xyXG4gICAgdGhpcy5fYXV0aFN0b3JhZ2VTZXJ2aWNlLmluZnJhRXN0YWJOb21lID0gZXN0YWIuc3BsaXQoXCIgLSBcIilbMV07XHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb24gVVBEQVRFXHJcblxyXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gU0VSVklDRVMgPD09PT09PT09PT1cclxuXHJcbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBVVElMSVRJRVMgPD09PT09PT09PT1cclxuXHJcbiAgcHVibGljIHRvZ2dsZVBvcG92ZXIoKSB7IHRoaXMuc2hvd0JhbGxvb24gPSAhdGhpcy5zaG93QmFsbG9vbjsgfVxyXG5cclxuICBwdWJsaWMgZHJvcGRvd25XYXNPcGVuZWQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHsgdGhpcy5tZXNzYWdlSWZDbGlja2VkLm5leHQodmFsdWUpOyB9XHJcblxyXG4gIHB1YmxpYyBvcGVuRXhwYW5zaWJsZU1lbnUocmVmOiBIVE1MRGl2RWxlbWVudCk6IHZvaWQge1xyXG4gICAgcmVmLmNsYXNzTGlzdC50b2dnbGUoXCJjbG9zZWRcIik7XHJcbiAgICByZWYuY2xhc3NMaXN0LnRvZ2dsZShcImNvbFwiKTtcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2lkZWJhci1jb250cm9sXCIpPy5jbGFzc0xpc3QudG9nZ2xlKFwiY29sXCIpO1xyXG5cclxuICAgIC8vIE3DqXRvZG8gY29tIGN1c3RvbWl6YcOnw7VlcyBwYXJhIGluaWNpYWxpemHDp8OjbyBkbyBNZW51IEVzdMOhdGljb1xyXG4gICAgdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudW9wZW5FeHBhbnNpYmxlTWVudShyZWYpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5TdWJtZW51KG1lbnU6IElNZW51SXRlbVN0cnVjdHVyZSwgcmVmOiBIVE1MRGl2RWxlbWVudCwgZGVzaXJlZE1lbnU6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcclxuXHJcbiAgICBpZiAobWVudS5jaGlsZHJlbiAmJiBtZW51LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50aXRsZVN1Ym1lbnUgPSBtZW51LmxhYmVsXHJcbiAgICAgIHRoaXMuZGVzaXJlZENvbnRlbnQgPSBkZXNpcmVkTWVudTtcclxuICAgICAgcmVmLmNsYXNzTGlzdC5yZW1vdmUoXCJvcGVuZWQtbm90aWYtc3ViXCIpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc3VibWVudUxpc3QgPT09IG1lbnUuY2hpbGRyZW4pIHtcclxuICAgICAgICB0aGlzLmNsb3NlTWVudSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCFyZWYuY2xhc3NMaXN0LmNvbnRhaW5zKFwib3BlbmVkLXN1YlwiKSkgeyByZWYuY2xhc3NMaXN0LnRvZ2dsZShcIm9wZW5lZC1zdWJcIik7IH1cclxuICAgICAgdGhpcy5zdWJtZW51TGlzdCA9IG1lbnUuY2hpbGRyZW47XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAoIW1lbnUuY2hpbGRyZW4gfHwgKG1lbnUuY2hpbGRyZW4gJiYgbWVudS5jaGlsZHJlbi5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgdGhpcy5zdWJtZW51TGlzdCA9IFtdO1xyXG4gICAgICByZWYuY2xhc3NMaXN0LnRvZ2dsZShcInNlbGVjdGVkSXRlbVwiKTtcclxuICAgICAgdGhpcy5vbkNsaWNrZWRPdXRzaWRlKG5ldyBFdmVudChcIlwiKSwgcmVmKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBvbkNsaWNrZWRPdXRzaWRlKGU6IEV2ZW50LCByZWY6IEhUTUxEaXZFbGVtZW50KTogdm9pZCB7XHJcbiAgLy8gICByZWYuY2xhc3NMaXN0LnJlbW92ZShcIm9wZW5lZC1zdWJcIik7XHJcbiAgLy8gICB0aGlzLnN1Ym1lbnVMaXN0ID0gW107XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgb25DbGlja2VkT3V0c2lkZShlOiBFdmVudCwgcmVmOiBIVE1MRGl2RWxlbWVudCk6IHZvaWQge1xyXG4gICAgaWYgKHJlZikge1xyXG4gICAgICAgIHJlZi5jbGFzc0xpc3QucmVtb3ZlKFwib3BlbmVkLXN1YlwiKTtcclxuICAgICAgICB0aGlzLnN1Ym1lbnVMaXN0ID0gW107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlZilcclxuICAgICAgICBjb25zb2xlLndhcm4oJ3JlZiBpcyB1bmRlZmluZWQgb3IgbnVsbCcpO1xyXG4gICAgfVxyXG59XHJcblxyXG4gIC8vICNyZWdpb24gTUVOVSBGT09URVIgVVNFUiBJTUFHRVxyXG4gIHByaXZhdGUgdmFsaWRhdGVDYWNoZWRJbWcoZm9vdGVySW1nOiBVc3VhcmlvX0lNRyB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIGxldCB1c3VhcmlvSWQ6IHN0cmluZyA9IHRoaXMuX2F1dGhTdG9yYWdlU2VydmljZS5pbmZyYVVzdWFyaW9JZDtcclxuXHJcbiAgICBpZiAoIWZvb3RlckltZyB8fCBmb290ZXJJbWcgPT0gbnVsbCkgeyByZXR1cm4gdHJ1ZTsgfVxyXG5cclxuICAgIGlmICh1c3VhcmlvSWQgIT0gZm9vdGVySW1nLlVTVUFSSU9JRCkgeyByZXR1cm4gdHJ1ZTsgfVxyXG5cclxuICAgIHRoaXMuZm9vdGVyVXNlckltZ1NyYyA9IGZvb3RlckltZy5GSUxFO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0ZvckNhY2hlZEltYWdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaXNBUElSZXF1ZXN0TmVlZGVkID0gdGhpcy52YWxpZGF0ZUNhY2hlZEltZyh0aGlzLl9tZW51U2VydmljZXMuZ2V0TWVudUZvb3RlckltZygpKTtcclxuICAgIGlmIChpc0FQSVJlcXVlc3ROZWVkZWQpIHsgdGhpcy5nZXRNZW51VXNlckltZygpOyB9XHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb24gTUVOVSBGT09URVIgVVNFUiBJTUFHRVxyXG5cclxuICBwdWJsaWMgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXV0aFNlcnZpY2UubG9nb3V0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RXh0ZXJuYWxVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBgaHR0cHM6Ly9zaXNjYW5kZXN2Ni5zaXNwcm8uY29tLmJyL1Npc3Byb0VycENsb3VkLyR7dXJsfWA7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFVUSUxJVElFUyA8PT09PT09PT09PVxyXG5cclxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IE1PREFMUyA8PT09PT09PT09PVxyXG5cclxuICAvKiogRnVuw6fDo28gc2ltcGxlcyBjb20gbyBvYmpldGl2byBkZSBhYnJpciBvcyBtb2RhaXMgbm8gY2VudHJvIGRhIHRlbGEuXHJcbiAgICogQHBhcmFtIHRlbXBsYXRlIFRlbXBsYXRlIEhUTUwgZG8gbW9kYWwgcXVlIHNlcsOhIGFiZXJ0by5cclxuICAgKiBAcGFyYW0gbW9kYWxJRCBJRCBkbyBtb2RhbCBxdWUgc2Vyw6EgYWJlcnRvLCBwYXJhIHF1ZSBwb3NzYSBzZXIgcmVmZXJlbmNpYWRvIGRlcG9pcy5cclxuICAqL1xyXG4gIG9wZW5Nb2RhbCh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiwgbW9kYWxJRDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9ic01vZGFsU2VydmljZS5zaG93KHRlbXBsYXRlLCB7XHJcbiAgICAgIGNsYXNzOiAnbW9kYWwtZGlhbG9nLWNlbnRlcmVkIG1vZGFsLWxnJyxcclxuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogZmFsc2UsXHJcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcclxuICAgICAgaWQ6IG1vZGFsSURcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIEZ1bsOnw6NvIHNpbXBsZXMgY29tIG8gb2JqZXRpdm8gZGUgZmVjaGFyIG9zIG1vZGFpcyBxdWUgZXN0aXZlcmVtIGFiZXJ0b3MgKGJhc2VhZG9zIHBlbG8gSUQpLlxyXG4gICAqIEBwYXJhbSBtb2RhbElEIElEIGRvIG1vZGFsIHF1ZSBzZXLDoSBmZWNoYWRvLlxyXG4gICAqL1xyXG4gIGNsb3NlTW9kYWwobW9kYWxJRDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9ic01vZGFsU2VydmljZS5oaWRlKG1vZGFsSUQpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBNT0RBTFMgPD09PT09PT09PT1cclxuXHJcbn1cclxuIiwiPCEtLSAjcmVnaW9uIE1BSU4gQ09OVEVOVCAtLT5cclxuPGRpdiBjbGFzcz1cIm1haW4gY29sLTEyXCI+XHJcblxyXG4gIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwMHZoOyB6LWluZGV4OiAzO1wiIGNsYXNzPVwic2lkZWJhci1jb250cm9sIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LXJvd1wiIFxyXG4gICAgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZU1lbnUgPT0gdHJ1ZSA/IG9uQ2xpY2tlZE91dHNpZGUoJGV2ZW50LCBzdWJtZW51X3JlZikgOiBjbG9zZU1lbnUgPSB0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2lkZWJhciB7e19jdXN0b21NZW51U2VydmljZS50aGVtZUNvbG9yfX0gY2xvc2VkXCIgI3NpZGViYXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWhlYWRlclwiPlxyXG4gICAgICAgIDx1bD5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ28taGFtYnVyZ3VlclwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2xvZ290aXBvLXNpc3Byby5zdmdcIiBhbHQ9XCJsb2dvLXNpc3Byb1wiIGNsYXNzPVwibG9nby1zaXNwcm9cIiB0aXRsZT1cImxvZ29cIiB3aWR0aD1cIjEzNnB4XCIgaGVpZ2h0PVwiNDhweFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24taGFtYnVyZ3VlclwiIChjbGljayk9XCJvcGVuRXhwYW5zaWJsZU1lbnUoc2lkZWJhcilcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL21lbnUuc3ZnXCIgYWx0PVwibWVudSBoYW1idXJndWVyXCI+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICA8IS0tICNyZWdpb24gTcOTRFVMT1MgLS0+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0zXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogOHB4OyBtYXJnaW4tcmlnaHQ6IDhweFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZHJvcGRvd25XYXNPcGVuZWQodHJ1ZSlcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJkcm9wZG93bi1idXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcclxuICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGRhdGEtYnMtYXV0by1jbG9zZT1cIm91dHNpZGVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiX2N1c3RvbU1lbnVTZXJ2aWNlLm1vZHVsZUltZyAhPSAnJzsgZWxzZSBtb2R1bGVTVkdcIiBbc3JjXT1cIl9jdXN0b21NZW51U2VydmljZS5tb2R1bGVJbWdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcy0yXCI+IHt7IHRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1vZHVsZU5hbWUgfX0gPGxpYi1pY29uIGljb25OYW1lPVwic2V0YS1kaXJlaXRhXCIgaWNvbkNvbG9yPVwid2hpdGVcIiAvPiA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21vZHVsZVNWRz5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWljb24gaWNvbkNvbG9yPVwid2hpdGVcIiBbaWNvbk5hbWVdPVwiX2N1c3RvbU1lbnVTZXJ2aWNlLm1vZHVsZVN2Z1wiLz5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgI2Ryb3Bkb3duX3JlZj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcHJpbWFyeS1kcm9wZG93biBbYnV0dG9uV2FzQ2xpY2tlZF09XCJtZXNzYWdlSWZDbGlja2VkXCI+PC9hcHAtcHJpbWFyeS1kcm9wZG93bj5cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8IS0tICNlbmRyZWdpb24gTcOTRFVMT1MgLS0+XHJcblxyXG4gICAgICAgICAgPCEtLSAjcmVnaW9uIEVTVEFCRUxFQ0lNRU5UT1MgLS0+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJteC0zXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxNnB4O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1lc3RhYmVsZWNpbWVudG9cIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTW9kYWwobW9kYWxFc3RhYmVsZWNpbWVudG8sIE1PREFMX0VTVEFCRUxFQ0lNRU5UTylcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiIXNpZGViYXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbG9zZWQnKSA/ICcnIDogbm9tZUVzdGFiZWxlY2ltZW50b1wiIHBsYWNlbWVudD1cInJpZ2h0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGxpYi1pY29uIGNsYXNzPVwiY29sLTFcIiBpY29uTmFtZT1cInByZWRpb1wiIGljb25Db2xvcj1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNpZGViYXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbG9zZWQnKVwiIGNsYXNzPVwiY29sLTkgcHMtMiBnbGItdGV4dC13aWR0aC0xNjAgdGV4dC1zdGFydCB0ZXh0LXRydW5jYXRlXCI+IHt7IG5vbWVFc3RhYmVsZWNpbWVudG8gfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1pY29uICpuZ0lmPVwiIXNpZGViYXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbG9zZWQnKVwiIGNsYXNzPVwiY29sLTFcIiBpY29uTmFtZT1cInNldGEtZGlyZWl0YVwiIGljb25Db2xvcj1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIEVTVEFCRUxFQ0lNRU5UT1MgLS0+XHJcblxyXG4gICAgICAgIDwvdWw+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gI3JlZ2lvbiBNRU5VUyBERSBOQVZFR0HDh8ODTyAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tbWVudVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LW1lbnUgcHgtMiBwYi0xXCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tICNyZWdpb24gTUVOVSBESU7Dgk1JQ08gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLW1lbnVcIj5cclxuICAgICAgICAgICAgICA8dWwgI2R5bmFtaWNfbWVudV9pdGVtcyAqbmdJZj1cIl9jdXN0b21NZW51U2VydmljZS5tZW51SXRlbXM7IGVsc2UgaXNMb2FkaW5nXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtZW51SXRlbSBvZiBfY3VzdG9tTWVudVNlcnZpY2UubWVudUl0ZW1zOyBsZXQgaSA9IGluZGV4XCIgXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC0xIHJvdW5kZWRcIiBcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5TdWJtZW51KG1lbnVJdGVtLCBzdWJtZW51X3JlZiwgZHluYW1pY19tZW51KVwiIFxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRJdGVtXT1cIm1lbnVJdGVtLmlzU2VsZWN0ZWRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiIW1lbnVJdGVtLmlzRXh0ZXJuYWw7IGVsc2UgZXh0ZXJuYWxNZW51XCJcclxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJtZW51SXRlbS5yb3V0ZSAhPSAnJyA/IG1lbnVJdGVtLnJvdXRlIDogbnVsbFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCInaXRlbScgKyBtZW51SXRlbS5pZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIiFzaWRlYmFyLmNsYXNzTGlzdC5jb250YWlucygnY2xvc2VkJykgPyAnJyA6IG1lbnVJdGVtLmxhYmVsXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiIGNsYXNzPVwidy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBidXR0b24taWNvbnMgdGV4dC1kZWNvcmF0aW9uLW5vbmUgcC0xIGdsYi1jdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJzaWRlYmFyLmNsYXNzTGlzdC5jb250YWlucygnY2xvc2VkJykgPyAnanVzdGlmeS1jb250ZW50LWNlbnRlcicgOiAnanVzdGlmeS1jb250ZW50LWJldHdlZW4nXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaWItaWNvbiAqbmdJZj1cIiFtZW51SXRlbS5pY29uLmluY2x1ZGVzKCdhc3NldHMvaWNvbnMnKTsgZWxzZSBpY29uSW1nXCIgW2ljb25OYW1lXT1cIm1lbnVJdGVtLmljb25cIiBpY29uQ29sb3I9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi1tYWluXCI+e3sgbWVudUl0ZW0ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ljb25JbWc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZW51SXRlbS5pY29uXCIgW2FsdF09XCInaWNvbmU6ICcgKyBtZW51SXRlbS5sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWljb24gKm5nSWY9XCIobWVudUl0ZW0uY2hpbGRyZW4gJiYgbWVudUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkgJiYgIXNpZGViYXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbG9zZWQnKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbk5hbWU9XCJzZXRhLWRpcmVpdGFcIiBpY29uQ29sb3I9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNleHRlcm5hbE1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiZ2V0RXh0ZXJuYWxVcmwobWVudUl0ZW0ucm91dGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidpdGVtJyArIG1lbnVJdGVtLmlkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCIhc2lkZWJhci5jbGFzc0xpc3QuY29udGFpbnMoJ2Nsb3NlZCcpID8gJycgOiBtZW51SXRlbS5sYWJlbFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiIGNsYXNzPVwidy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBidXR0b24taWNvbnMgdGV4dC1kZWNvcmF0aW9uLW5vbmUgcC0xIGdsYi1jdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInNpZGViYXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbG9zZWQnKSA/ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyA6ICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbidcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItaWNvbiAqbmdJZj1cIiFtZW51SXRlbS5pY29uLmluY2x1ZGVzKCdhc3NldHMvaWNvbnMnKTsgZWxzZSBpY29uSW1nRXh0ZXJuYWxcIiBbaWNvbk5hbWVdPVwibWVudUl0ZW0uaWNvblwiIGljb25Db2xvcj1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwYW4tbWFpblwiPnt7IG1lbnVJdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ljb25JbWdFeHRlcm5hbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwibWVudUl0ZW0uaWNvblwiIFthbHRdPVwiJ2ljb25lOiAnICsgbWVudUl0ZW0ubGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpYi1pY29uICpuZ0lmPVwiKG1lbnVJdGVtLmNoaWxkcmVuICYmIG1lbnVJdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApICYmICFzaWRlYmFyLmNsYXNzTGlzdC5jb250YWlucygnY2xvc2VkJylcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbk5hbWU9XCJzZXRhLWRpcmVpdGFcIiBpY29uQ29sb3I9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXNMb2FkaW5nPlxyXG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIG10LTJcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9saT5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIE1FTlUgRElOw4JNSUNPIC0tPlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSAjZW5kcmVnaW9uIE1FTlVTIERFIE5BVkVHQcOHw4NPIC0tPlxyXG5cclxuICAgICAgPCEtLSAjcmVnaW9uIEZPT1RFUiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1tZW51XCIgKG1vdXNlZW50ZXIpPVwic2hvd0JhbGxvb24gPSB0cnVlXCIgKG1vdXNlbGVhdmUpPVwic2hvd0JhbGxvb24gPSBmYWxzZVwiXHJcbiAgICAgICAgW3BvcG92ZXJdPVwicG9wb3ZlckNvbnRlbnRcIiBwbGFjZW1lbnQ9XCJyaWdodCBib3R0b21cIiBbb3V0c2lkZUNsaWNrXT1cInRydWVcIiBjb250YWluZXJDbGFzcz1cIndpZHRoOiAyMDBweFwiID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWNvbXBvbmVudHMgcHMtMSBwdC0yXCIgW2NsYXNzLm9wZW5dPVwic2hvd0JhbGxvb25cIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJmb290ZXJVc2VySW1nU3JjOyBlbHNlIG5vVXNlckltZ1wiIGNsYXNzPVwicGhvdG8tcHJvZmlsZSBtcy0xXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cIlsnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgZm9vdGVyVXNlckltZ1NyY11cIiBhbHQ9XCJmb3RvLXBlcmZpbFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vVXNlckltZz5cclxuICAgICAgICAgICAgICA8bGliLWljb24gaWNvbk5hbWU9XCJjb250cmFwYXJ0ZVwiIGljb25Db2xvcj1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdsYi10ZXh0LXdpZHRoLTEyMCB3LWF1dG8gZnctYm9sZCB0ZXh0LXN0YXJ0IHRleHQtdHJ1bmNhdGUgbXMtMSBtZS0xXCI+XHJcbiAgICAgICAgICAgICAge3sgZm9vdGVyVXNlck5hbWUgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBcclxuICAgICAgPG5nLXRlbXBsYXRlICNwb3BvdmVyQ29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLW1lbnVcIiBzdHlsZT1cIndpZHRoOiAxMDAwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPiBcclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImZvb3RlclVzZXJJbWdTcmM7IGVsc2Ugbm9Vc2VySW1nXCIgY2xhc3M9XCJwaG90by1wcm9maWxlXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cIlsnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgZm9vdGVyVXNlckltZ1NyY11cIiBhbHQ9XCJmb3RvLXBlcmZpbFwiPiBcclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1VzZXJJbWc+XHJcbiAgICAgICAgICAgICAgPGxpYi1pY29uIGljb25OYW1lPVwiY29udHJhcGFydGVcIiBpY29uQ29sb3I9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtcy0xXCI+IFxyXG4gICAgICAgICAgICAgIDxkaXYgW3Rvb2x0aXBdPVwiZm9vdGVyVXNlck5hbWVcIiBjbGFzcz1cImR5bmFtaWMtY29udGFpbmVyXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwOyBmbGV4LWdyb3c6IDE7bWF4LXdpZHRoOiAyMDBweDsgZm9udC1zaXplOiAxNnB4O1wiPnt7Zm9vdGVyVXNlck5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgW3Rvb2x0aXBdPVwiZm9vdGVyVXNlckVtYWlsXCIgY2xhc3M9XCJkeW5hbWljLWNvbnRhaW5lclwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDsgZm9udC1zaXplOiAxMnB4OyBmbGV4LWdyb3c6IDE7bWF4LXdpZHRoOiAyMDBweDtcIj57e2Zvb3RlclVzZXJFbWFpbH19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGhyIGNsYXNzPVwibWItMiBtdC0yXCI+XHJcbiAgICAgICAgPGRpdiByb3V0ZXJMaW5rPVwibWV1LXBlcmZpbFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgICAgPGxpYi1pY29uIFtpY29uU2l6ZV09XCInc21hbGwnXCIgaWNvbk5hbWU9XCJjb250cmFwYXJ0ZVwiLz4gTWV1IFBlcmZpbFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCIgKGNsaWNrKT1cImxvZ291dCgpXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XHJcbiAgICAgICAgICA8bGliLWljb24gW2ljb25TaXplXT1cIidzbWFsbCdcIiAgaWNvbk5hbWU9XCJsb2dvdXRcIi8+IFNhaXJcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPCEtLSAjZW5kcmVnaW9uIEZPT1RFUiAtLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic3VibWVudVwiICNzdWJtZW51X3JlZj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImRlc2lyZWRDb250ZW50ICE9PSBudWxsXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXNpcmVkQ29udGVudCE7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHN1Ym1lbnVMaXN0fVwiPjwvbmctY29udGVudD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIFxyXG4gIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnQgY29sIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1jb250ZW50LWJldHdlZW5cIiBpZD1cImJvZHktY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGFwcC1mb290ZXI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuPCEtLSAjZW5kcmVnaW9uIE1BSU4gQ09OVEVOVCAtLT5cclxuXHJcbjwhLS0gI3JlZ2lvbiBURU1QTEFURVMgLS0+XHJcbjwhLS0gdGVtIHF1ZSBwZXJndW50YXIgcHJvIEVyaWNrIC0tPlxyXG48IS0tIFtzdWJtZW51UmVmXT1cInN1Ym1lbnVfcmVmXCIgIC0tPlxyXG48bmctdGVtcGxhdGUgI2R5bmFtaWNfbWVudSBsZXQtZGF0YT5cclxuICA8YXBwLWR5bmFtaWMtbWVudSBcclxuICAgIFtzdWJtZW51TGlzdF09XCJkYXRhXCJcclxuICAgIFt0aXRsZVN1Ym1lbnVdPVwidGl0bGVTdWJtZW51XCJcclxuICAgIFtzdWJtZW51UmVmXT1cInN1Ym1lbnVfcmVmXCJcclxuICAgIFtyZWNlYmVQYXJhbV09XCJvbkNsaWNrZWRPdXRzaWRlLmJpbmQodGhpcylcIj5cclxuICA8L2FwcC1keW5hbWljLW1lbnU+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI25vdGlmX21lbnU+XHJcbiAgPGFwcC1ub3RpZi1zdWJtZW51PjwvYXBwLW5vdGlmLXN1Ym1lbnU+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tICNyZWdpb24gTU9EQUwgU0VMRUNBTyBFU1RBQkVMRUNJTUVOVE8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbW9kYWxFc3RhYmVsZWNpbWVudG8+XHJcbiAgPHNlbGVjYW8tZXN0YWJlbGVjaW1lbnRvcy1tb2RhbCAob25DbG9zZSk9XCJjbG9zZU1vZGFsKE1PREFMX0VTVEFCRUxFQ0lNRU5UTylcIlxyXG4gICAgKG9uU2VsZWN0ZWQpPVwiY2xvc2VNb2RhbChNT0RBTF9FU1RBQkVMRUNJTUVOVE8pOyB1cGRhdGVMYXN0TG9nRXN0YWJlbGVjaW1lbnRvKCRldmVudCk7XCI+PC9zZWxlY2FvLWVzdGFiZWxlY2ltZW50b3MtbW9kYWw+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0gI2VuZHJlZ2lvbiBNT0RBTCBTRUxFQ0FPIEVTVEFCRUxFQ0lNRU5UTyAtLT5cclxuXHJcbjwhLS0gI2VuZHJlZ2lvbiBURU1QTEFURVMgLS0+XHJcbiJdfQ==
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1sYXRlcmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1hdXRoL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWxhdGVyYWwvbWVudS9tZW51LWxhdGVyYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWF1dGgvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtbGF0ZXJhbC9tZW51L21lbnUtbGF0ZXJhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU12QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVl4RSxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQ1Msa0JBQXdDLEVBQ3ZDLG1CQUF1QyxFQUN2QyxlQUErQixFQUMvQixhQUFrQyxFQUNsQyxlQUErQjtJQUN2QyxrREFBa0Q7SUFDMUMsT0FBZSxFQUNmLFlBQXlCO1FBUDFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7UUFDdkMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUUvQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsaUJBQVksR0FBWixZQUFZLENBQWE7UUE2Q25CLDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUUzQyx3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ekM7OztNQUdFO0lBQ0YsU0FBUyxDQUFDLFFBQTBCLEVBQUUsT0FBZTtRQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEMsS0FBSyxFQUFFLGdDQUFnQztZQUN2QyxtQkFBbUIsRUFBRSxLQUFLO1lBQzFCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsRUFBRSxFQUFFLE9BQU87U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsT0FBZTtRQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDOytHQTFQVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixvR0FvRGpCLFdBQVcscVBDMUUzQixxcFZBaU5BOzs0RkQzTGEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjtxUUFtREssY0FBYztzQkFBOUMsU0FBUzt1QkFBQyxZQUFZO2dCQUlPLFFBQVE7c0JBQXJDLFNBQVM7dUJBQUMsVUFBVTtnQkFDYSxjQUFjO3NCQUEvQyxZQUFZO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnbmd4LXNwLWluZnJhJztcclxuaW1wb3J0IHsgZmlsdGVyLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExpYkN1c3RvbU1lbnVTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9jdXN0b20vY3VzdG9tLW1lbnUuc2VydmljZSc7XHJcblxyXG4vL2ltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50cyc7XHJcbi8vaW1wb3J0IHsgUHJvamVjdFV0aWxzZXJ2aWNlIH0gZnJvbSAnc3JjL2FwcC9wcm9qZWN0L3V0aWxzL3Byb2plY3QtdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVudUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20vbWVudS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JhZ2UvYXV0aC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZW51U2VydmljZXNTZXJ2aWNlIH0gZnJvbSAnLi4vbWVudS1zZXJ2aWNlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSU1lbnVJdGVtU3RydWN0dXJlIH0gZnJvbSAnLi4vbW9kZWwvaW1lbnUtaXRlbS1zdHJ1Y3R1cmUubW9kZWwnO1xyXG5pbXBvcnQgeyBJU3VibWVudUl0ZW1TdHJ1Y3R1cmUgfSBmcm9tICcuLi9tb2RlbC9pc3VibWVudS1pdGVtLXN0cnVjdHVyZS5tb2RlbCc7XHJcbmltcG9ydCB7IFVzdWFyaW9fSU1HIH0gZnJvbSAnLi4vbW9kZWwvdXN1YXJpby1pbWcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbWVudS1sYXRlcmFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS1sYXRlcmFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZW51LWxhdGVyYWwuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1lbnVMYXRlcmFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBfY3VzdG9tTWVudVNlcnZpY2U6IExpYkN1c3RvbU1lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYXV0aFN0b3JhZ2VTZXJ2aWNlOiBBdXRoU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9ic01vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZW51U2VydmljZXM6IE1lbnVTZXJ2aWNlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICAvL3ByaXZhdGUgX3Byb2plY3RVdGlsU2VydmljZTogUHJvamVjdFV0aWxzZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9hdXRoU2VydmljZTogQXV0aFNlcnZpY2VcclxuICApIHtcclxuICAgIC8vIEltcGxlbWVudGHDp8OjbyBxdWUgdmVyaWZpY2EgZXZlbnRvcyBhY2lvbmFkb3MgbmEgY2xhc3NlIGRlIHNlcnZpY2UuXHJcbiAgICB0aGlzLl9tZW51U2VydmljZXMuZ2V0TmV3VXNlckltYWdlRXZlbnQoKS5zdWJzY3JpYmUoKCkgPT4geyB0aGlzLmdldE1lbnVVc2VySW1nKCk7IH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gSW5zY3JldmEtc2Ugbm8gZXZlbnRvIE5hdmlnYXRpb25FbmQgcGFyYSByZWNlYmVyIG5vdGlmaWNhw6fDtWVzIHF1YW5kbyBhIHJvdGEgbXVkYXIsIHNlcnZlIHBhcmEgYXR1YWxpemFyIGEgc2VsZcOnw6NvIGRvIG1lbnUgY29ycmV0YW1lbnRlXHJcbiAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51SXRlbXMgPSB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51Q29uZmlnLnVwZGF0ZVJvdXRlU2VsZWN0aW9uKHRoaXMuX3JvdXRlci51cmwsIHRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1lbnVJdGVtcylcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudUR5bmFtaWMpIHtcclxuICAgICAgdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudUNvbmZpZy5zZXRNZW51U3RhdGljKHRydWUpO1xyXG4gICAgICB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51SXRlbXMgPSB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51Q29uZmlnLmluaXRpYWxpemVNZW51KHRoaXMuX3JvdXRlci51cmwpO1xyXG5cclxuICAgICAgLy8gTcOpdG9kbyBjb20gY3VzdG9taXphw6fDtWVzIHBhcmEgaW5pY2lhbGl6YcOnw6NvIGRvIE1lbnUgRXN0w6F0aWNvXHJcbiAgICAgIHRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1lbnVTdGF0aWNPbkluaXQoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBNw6l0b2RvIGNvbSBjdXN0b21pemHDp8O1ZXMgcGFyYSBpbmljaWFsaXphw6fDo28gZG8gTWVudSBEaW7Dom1pY29cclxuICAgICAgdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudUR5bmFtaWNPbkluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm5vbWVFc3RhYmVsZWNpbWVudG8gPSB0aGlzLl9hdXRoU3RvcmFnZVNlcnZpY2UuaW5mcmFFc3RhYk5vbWU7XHJcbiAgICB0aGlzLmZvb3RlclVzZXJOYW1lID0gdGhpcy5fYXV0aFN0b3JhZ2VTZXJ2aWNlLnVzZXJOYW1lO1xyXG5cclxuICAgIHRoaXMuY2hlY2tGb3JDYWNoZWRJbWFnZSgpO1xyXG5cclxuICAgIHRoaXMuZ2V0VXNlckVtYWlsKCk7XHJcbiAgfVxyXG5cclxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IFBST1BFUlRJRVMgPD09PT09PT09PT1cclxuXHJcbiAgLy8gI3JlZ2lvbiBQUklWQVRFXHJcblxyXG4gIC8vIEVSSUNLOiB2b3UgbWFudGVyIGVzdGUgcG9yIGVucXVhbnRvIHBhcmEgcXVhbmRvIGZvciBuZWNlc3PDoXJpbyBlc3RhIGZ1bmNpb25hbGlkYWRlIGV1IGNvbnNpZ2EgcmVmYXrDqi1sYXMgc2VtIG11aXRvIHByb2JsZW1hXHJcbiAgQFZpZXdDaGlsZChcIm5vdGlmX21lbnVcIikgcHJpdmF0ZSBub3RpZl90ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8vICNyZWdpb24gUFVCTElDXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21lbnVMaW5rJykgcHVibGljIG1lbnVMaW5rPzogSFRNTEFuY2hvckVsZW1lbnQ7XHJcbiAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgcHVibGljIGRlc2lyZWRDb250ZW50PzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IE1PREFMX0VTVEFCRUxFQ0lNRU5UTzogbnVtYmVyID0gMTtcclxuXHJcbiAgcHVibGljIG5vbWVFc3RhYmVsZWNpbWVudG86IHN0cmluZyA9ICdFc3RhYmVsZWNpbWVudG8gcGFkcsOjbyc7XHJcbiAgcHVibGljIHRpdGxlU3VibWVudTogc3RyaW5nID0gXCJcIjtcclxuICBwdWJsaWMgc3VibWVudUxpc3Q6IChJU3VibWVudUl0ZW1TdHJ1Y3R1cmUgfCB1bmRlZmluZWQpW10gPSBbXTtcclxuXHJcbiAgcHVibGljIG1lc3NhZ2VJZkNsaWNrZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICAvKiogRXN0YSB2YXJpw6F2ZWwgw6kgdXNhZGEgbmEgYWJlcnR1cmEgZG8gc3VibWVudSBlIGRvIHN1Ym1lbnUgc2VjdW5kw6FyaW8gcGFyYSBcclxuICAgICogcXVlIGEgZnVuw6fDo28gb25DbGlja2VkT3V0c2lkZSgpIHF1ZSBlc3TDoSBuYSBzZWd1bmRhIGRpdiBwcmluY2lwYWwgZG8gSFRNTCBkb1xyXG4gICAgKiBjb21wb25lbnRlIG7Do28gc2VqYSBhdGl2YWRhLCBwb2lzIHNlIGVsYSBmb3IgYXRpdmFkYSBlbGEgaXLDoSBmZWNoYXIgbyBtZW51XHJcbiAgICAqIGxhdGVyYWwsIGUgcXVhbmRvIHZhbW9zIGRvIHN1Ym1lbnUgcGFyYSBvIHN1Ym1lbnUgc2VjdW5kw6FyaW8gbsOjbyBxdWVyZW1vc1xyXG4gICAgKiBmZWNoYXIgbyBtZW51IGxhdGVyYWwsIGUgcXVhbmRvIHZhbW9zIGRvIHN1Ym1lbnUgc2VjdW5kw6FyaW8gcGFyYSBvIHN1Ym1lbnVcclxuICAgICogdGFtYsOpbSBuw6NvIHF1ZXJlbW9zIGZlY2hhciBvIG1lbnUgbGF0ZXJhbDtcclxuICAqL1xyXG4gIHB1YmxpYyBjbG9zZU1lbnU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKiogVXRpbGl6YWRhIGNvbW8gYSBmb250ZSBkYSBpbWFnZW0gZGUgcGVyZmlsIGRvIHVzdcOhcmlvIGxvZ2FkbyBubyBzaXN0ZW1hLiAqL1xyXG4gIHB1YmxpYyBmb290ZXJVc2VySW1nU3JjOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKiogRW1haSBkbyB1c3XDoXJpbyBsb2dhZG8gcGFyYSBzZXIgZXhpYmlkbyBubyBwb3BvdmVyICovXHJcbiAgcHVibGljIGZvb3RlclVzZXJFbWFpbDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLyoqIE5vbWUgZG8gdXN1w6FyaW8gbG9nYWRvIHBhcmEgc2VyIGV4aWJpZG8gbm8gcm9kYXDDqSBkbyBtZW51LiAqL1xyXG4gIHB1YmxpYyBmb290ZXJVc2VyTmFtZTogc3RyaW5nID0gXCJVc3XDoXJpb1wiO1xyXG5cclxuICBwdWJsaWMgaXNQb3BvdmVyVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93QmFsbG9vbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcblxyXG4gIC8vIHByb3ByaWVkYWRlcyBpbmljaWFkYXMgcXVhbmRvIHBhc3NhciBvIEN1c3RvbU1lbnVTZXJ2aWNlXHJcblxyXG4gIHB1YmxpYyBtZW51RHluYW1pYzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBtZW51Q29uZmlnOiBNZW51Q29uZmlnU2VydmljZSA9IG5ldyBNZW51Q29uZmlnU2VydmljZTtcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQVUJMSUNcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBQUk9QRVJUSUVTIDw9PT09PT09PT09XHJcblxyXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gU0VSVklDRVMgPD09PT09PT09PT1cclxuXHJcbiAgLy8gI3JlZ2lvbiBHRVRcclxuICBwcml2YXRlIGdldEVzdGFiZWxlY2ltZW50b1Nlc3Npb24oZXN0YWJJRDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tZW51U2VydmljZXMuZ2V0RXN0YWJlbGVjaW1lbnRvU2Vzc2lvbihlc3RhYklEKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub21lRXN0YWJlbGVjaW1lbnRvID0gcmVzcG9uc2UuSW5mcmFFc3RhYk5vbWU7XHJcbiAgICAgICAgdGhpcy5fYXV0aFN0b3JhZ2VTZXJ2aWNlLmluZnJhRW1wcmVzYUlkID0gcmVzcG9uc2UuSW5mcmFFbXByZXNhSWQ7XHJcbiAgICAgICAgdGhpcy5fYXV0aFN0b3JhZ2VTZXJ2aWNlLmluZnJhRW1wcmVzYU5vbWUgPSByZXNwb25zZS5JbmZyYUVtcHJlc2FOb21lO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZXJyb3IgPT4ge1xyXG4gICAgICAgIC8vdGhpcy5fcHJvamVjdFV0aWxTZXJ2aWNlLnNob3dIdHRwRXJyb3IoZXJyb3IpOyBcclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5zaG93QWxlcnREYW5nZXIoZXJyb3IpO1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE1lbnVVc2VySW1nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbWVudVNlcnZpY2VzLmdldEltYWdlbU1lbnUoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7IHRoaXMuZm9vdGVyVXNlckltZ1NyYyA9IHJlc3BvbnNlLkluZnJhVXN1YXJpb0ltZy5JbWFnZW07IH0sXHJcbiAgICAgIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgLy90aGlzLl9wcm9qZWN0VXRpbFNlcnZpY2Uuc2hvd0h0dHBFcnJvcihlcnJvcik7XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFVzZXJFbWFpbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX21lbnVTZXJ2aWNlcy5nZXRVc3VhcmlvRW1haWwoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7IHRoaXMuZm9vdGVyVXNlckVtYWlsID0gcmVzcG9uc2UuRW1haWw7IH0sXHJcbiAgICAgIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgLy90aGlzLl9wcm9qZWN0VXRpbFNlcnZpY2Uuc2hvd0h0dHBFcnJvcihlcnJvcik7XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uIEdFVFxyXG5cclxuICAvLyAjcmVnaW9uIFVQREFURVxyXG4gIHB1YmxpYyB1cGRhdGVMYXN0TG9nRXN0YWJlbGVjaW1lbnRvKGVzdGFiOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX21lbnVTZXJ2aWNlcy51cGRhdGVMYXN0TG9nRXN0YWJJRChlc3RhYi5zcGxpdChcIiAtIFwiKVswXSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydFN1Y2Nlc3MoJ0VzdGFiZWxlY2ltZW50byBhbHRlcmFkbyBjb20gc3VjZXNzbyEnKTtcclxuXHJcbiAgICAgICAgdGhpcy5nZXRFc3RhYmVsZWNpbWVudG9TZXNzaW9uKGVzdGFiLnNwbGl0KFwiIC0gXCIpWzBdKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLl9hdXRoU3RvcmFnZVNlcnZpY2UuaW5mcmFFc3RhYklkID0gZXN0YWIuc3BsaXQoXCIgLSBcIilbMF07XHJcbiAgICB0aGlzLl9hdXRoU3RvcmFnZVNlcnZpY2UuaW5mcmFFc3RhYk5vbWUgPSBlc3RhYi5zcGxpdChcIiAtIFwiKVsxXTtcclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvbiBVUERBVEVcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBTRVJWSUNFUyA8PT09PT09PT09PVxyXG5cclxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IFVUSUxJVElFUyA8PT09PT09PT09PVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlUG9wb3ZlcigpIHsgdGhpcy5zaG93QmFsbG9vbiA9ICF0aGlzLnNob3dCYWxsb29uOyB9XHJcblxyXG4gIHB1YmxpYyBkcm9wZG93bldhc09wZW5lZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQgeyB0aGlzLm1lc3NhZ2VJZkNsaWNrZWQubmV4dCh2YWx1ZSk7IH1cclxuXHJcbiAgcHVibGljIG9wZW5FeHBhbnNpYmxlTWVudShyZWY6IEhUTUxEaXZFbGVtZW50KTogdm9pZCB7XHJcbiAgICByZWYuY2xhc3NMaXN0LnRvZ2dsZShcImNsb3NlZFwiKTtcclxuICAgIHJlZi5jbGFzc0xpc3QudG9nZ2xlKFwiY29sXCIpO1xyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5zaWRlYmFyLWNvbnRyb2xcIik/LmNsYXNzTGlzdC50b2dnbGUoXCJjb2xcIik7XHJcblxyXG4gICAgLy8gTcOpdG9kbyBjb20gY3VzdG9taXphw6fDtWVzIHBhcmEgaW5pY2lhbGl6YcOnw6NvIGRvIE1lbnUgRXN0w6F0aWNvXHJcbiAgICB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51b3BlbkV4cGFuc2libGVNZW51KHJlZik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlblN1Ym1lbnUobWVudTogSU1lbnVJdGVtU3RydWN0dXJlLCByZWY6IEhUTUxEaXZFbGVtZW50LCBkZXNpcmVkTWVudTogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQge1xyXG5cclxuICAgIGlmIChtZW51LmNoaWxkcmVuICYmIG1lbnUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnRpdGxlU3VibWVudSA9IG1lbnUubGFiZWxcclxuICAgICAgdGhpcy5kZXNpcmVkQ29udGVudCA9IGRlc2lyZWRNZW51O1xyXG4gICAgICByZWYuY2xhc3NMaXN0LnJlbW92ZShcIm9wZW5lZC1ub3RpZi1zdWJcIik7XHJcblxyXG4gICAgICBpZiAodGhpcy5zdWJtZW51TGlzdCA9PT0gbWVudS5jaGlsZHJlbikge1xyXG4gICAgICAgIHRoaXMuY2xvc2VNZW51ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIXJlZi5jbGFzc0xpc3QuY29udGFpbnMoXCJvcGVuZWQtc3ViXCIpKSB7IHJlZi5jbGFzc0xpc3QudG9nZ2xlKFwib3BlbmVkLXN1YlwiKTsgfVxyXG4gICAgICB0aGlzLnN1Ym1lbnVMaXN0ID0gbWVudS5jaGlsZHJlbjtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICghbWVudS5jaGlsZHJlbiB8fCAobWVudS5jaGlsZHJlbiAmJiBtZW51LmNoaWxkcmVuLmxlbmd0aCA9PSAwKSkge1xyXG4gICAgICB0aGlzLnN1Ym1lbnVMaXN0ID0gW107XHJcbiAgICAgIHJlZi5jbGFzc0xpc3QudG9nZ2xlKFwic2VsZWN0ZWRJdGVtXCIpO1xyXG4gICAgICB0aGlzLm9uQ2xpY2tlZE91dHNpZGUobmV3IEV2ZW50KFwiXCIpLCByZWYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIG9uQ2xpY2tlZE91dHNpZGUoZTogRXZlbnQsIHJlZjogSFRNTERpdkVsZW1lbnQpOiB2b2lkIHtcclxuICAvLyAgIHJlZi5jbGFzc0xpc3QucmVtb3ZlKFwib3BlbmVkLXN1YlwiKTtcclxuICAvLyAgIHRoaXMuc3VibWVudUxpc3QgPSBbXTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBvbkNsaWNrZWRPdXRzaWRlKGU6IEV2ZW50LCByZWY6IEhUTUxEaXZFbGVtZW50KTogdm9pZCB7XHJcbiAgICBpZiAocmVmKSB7XHJcbiAgICAgIHJlZi5jbGFzc0xpc3QucmVtb3ZlKFwib3BlbmVkLXN1YlwiKTtcclxuICAgICAgdGhpcy5zdWJtZW51TGlzdCA9IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKCdyZWYgaXMgdW5kZWZpbmVkIG9yIG51bGwnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gTUVOVSBGT09URVIgVVNFUiBJTUFHRVxyXG4gIHByaXZhdGUgdmFsaWRhdGVDYWNoZWRJbWcoZm9vdGVySW1nOiBVc3VhcmlvX0lNRyB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIGxldCB1c3VhcmlvSWQ6IHN0cmluZyA9IHRoaXMuX2F1dGhTdG9yYWdlU2VydmljZS5pbmZyYVVzdWFyaW9JZDtcclxuXHJcbiAgICBpZiAoIWZvb3RlckltZyB8fCBmb290ZXJJbWcgPT0gbnVsbCkgeyByZXR1cm4gdHJ1ZTsgfVxyXG5cclxuICAgIGlmICh1c3VhcmlvSWQgIT0gZm9vdGVySW1nLlVTVUFSSU9JRCkgeyByZXR1cm4gdHJ1ZTsgfVxyXG5cclxuICAgIHRoaXMuZm9vdGVyVXNlckltZ1NyYyA9IGZvb3RlckltZy5GSUxFO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0ZvckNhY2hlZEltYWdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaXNBUElSZXF1ZXN0TmVlZGVkID0gdGhpcy52YWxpZGF0ZUNhY2hlZEltZyh0aGlzLl9tZW51U2VydmljZXMuZ2V0TWVudUZvb3RlckltZygpKTtcclxuICAgIGlmIChpc0FQSVJlcXVlc3ROZWVkZWQpIHsgdGhpcy5nZXRNZW51VXNlckltZygpOyB9XHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb24gTUVOVSBGT09URVIgVVNFUiBJTUFHRVxyXG5cclxuICBwdWJsaWMgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXV0aFNlcnZpY2UubG9nb3V0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RXh0ZXJuYWxVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBgaHR0cHM6Ly9zaXNjYW5kZXN2Ni5zaXNwcm8uY29tLmJyL1Npc3Byb0VycENsb3VkLyR7dXJsfWA7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFVUSUxJVElFUyA8PT09PT09PT09PVxyXG5cclxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IE1PREFMUyA8PT09PT09PT09PVxyXG5cclxuICAvKiogRnVuw6fDo28gc2ltcGxlcyBjb20gbyBvYmpldGl2byBkZSBhYnJpciBvcyBtb2RhaXMgbm8gY2VudHJvIGRhIHRlbGEuXHJcbiAgICogQHBhcmFtIHRlbXBsYXRlIFRlbXBsYXRlIEhUTUwgZG8gbW9kYWwgcXVlIHNlcsOhIGFiZXJ0by5cclxuICAgKiBAcGFyYW0gbW9kYWxJRCBJRCBkbyBtb2RhbCBxdWUgc2Vyw6EgYWJlcnRvLCBwYXJhIHF1ZSBwb3NzYSBzZXIgcmVmZXJlbmNpYWRvIGRlcG9pcy5cclxuICAqL1xyXG4gIG9wZW5Nb2RhbCh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiwgbW9kYWxJRDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9ic01vZGFsU2VydmljZS5zaG93KHRlbXBsYXRlLCB7XHJcbiAgICAgIGNsYXNzOiAnbW9kYWwtZGlhbG9nLWNlbnRlcmVkIG1vZGFsLWxnJyxcclxuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogZmFsc2UsXHJcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcclxuICAgICAgaWQ6IG1vZGFsSURcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIEZ1bsOnw6NvIHNpbXBsZXMgY29tIG8gb2JqZXRpdm8gZGUgZmVjaGFyIG9zIG1vZGFpcyBxdWUgZXN0aXZlcmVtIGFiZXJ0b3MgKGJhc2VhZG9zIHBlbG8gSUQpLlxyXG4gICAqIEBwYXJhbSBtb2RhbElEIElEIGRvIG1vZGFsIHF1ZSBzZXLDoSBmZWNoYWRvLlxyXG4gICAqL1xyXG4gIGNsb3NlTW9kYWwobW9kYWxJRDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9ic01vZGFsU2VydmljZS5oaWRlKG1vZGFsSUQpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBNT0RBTFMgPD09PT09PT09PT1cclxuXHJcbn1cclxuIiwiPCEtLSAjcmVnaW9uIE1BSU4gQ09OVEVOVCAtLT5cclxuPGRpdiBjbGFzcz1cIm1haW4gY29sLTEyXCI+XHJcblxyXG4gIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwMHZoOyB6LWluZGV4OiAzO1wiIGNsYXNzPVwic2lkZWJhci1jb250cm9sIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LXJvd1wiIFxyXG4gICAgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZU1lbnUgPT0gdHJ1ZSA/IG9uQ2xpY2tlZE91dHNpZGUoJGV2ZW50LCBzdWJtZW51X3JlZikgOiBjbG9zZU1lbnUgPSB0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2lkZWJhciB7e19jdXN0b21NZW51U2VydmljZS50aGVtZUNvbG9yfX0gY2xvc2VkXCIgI3NpZGViYXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWhlYWRlclwiPlxyXG4gICAgICAgIDx1bD5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ28taGFtYnVyZ3VlclwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2xvZ290aXBvLXNpc3Byby5zdmdcIiBhbHQ9XCJsb2dvLXNpc3Byb1wiIGNsYXNzPVwibG9nby1zaXNwcm9cIiB0aXRsZT1cImxvZ29cIiB3aWR0aD1cIjEzNnB4XCIgaGVpZ2h0PVwiNDhweFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24taGFtYnVyZ3VlclwiIChjbGljayk9XCJvcGVuRXhwYW5zaWJsZU1lbnUoc2lkZWJhcilcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL21lbnUuc3ZnXCIgYWx0PVwibWVudSBoYW1idXJndWVyXCI+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICA8IS0tICNyZWdpb24gTcOTRFVMT1MgLS0+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0zXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogOHB4OyBtYXJnaW4tcmlnaHQ6IDhweFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZHJvcGRvd25XYXNPcGVuZWQodHJ1ZSlcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJkcm9wZG93bi1idXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcclxuICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGRhdGEtYnMtYXV0by1jbG9zZT1cIm91dHNpZGVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiX2N1c3RvbU1lbnVTZXJ2aWNlLm1vZHVsZUltZyAhPSAnJzsgZWxzZSBtb2R1bGVTVkdcIiBbc3JjXT1cIl9jdXN0b21NZW51U2VydmljZS5tb2R1bGVJbWdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcy0yXCI+IHt7IHRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1vZHVsZU5hbWUgfX0gPGxpYi1pY29uIGljb25OYW1lPVwic2V0YS1kaXJlaXRhXCIgaWNvbkNvbG9yPVwid2hpdGVcIiAvPiA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21vZHVsZVNWRz5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWljb24gaWNvbkNvbG9yPVwid2hpdGVcIiBbaWNvbk5hbWVdPVwiX2N1c3RvbU1lbnVTZXJ2aWNlLm1vZHVsZVN2Z1wiLz5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgI2Ryb3Bkb3duX3JlZj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcHJpbWFyeS1kcm9wZG93biBbYnV0dG9uV2FzQ2xpY2tlZF09XCJtZXNzYWdlSWZDbGlja2VkXCI+PC9hcHAtcHJpbWFyeS1kcm9wZG93bj5cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8IS0tICNlbmRyZWdpb24gTcOTRFVMT1MgLS0+XHJcblxyXG4gICAgICAgICAgPCEtLSAjcmVnaW9uIEVTVEFCRUxFQ0lNRU5UT1MgLS0+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJteC0zXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxNnB4O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1lc3RhYmVsZWNpbWVudG9cIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTW9kYWwobW9kYWxFc3RhYmVsZWNpbWVudG8sIE1PREFMX0VTVEFCRUxFQ0lNRU5UTylcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiIXNpZGViYXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbG9zZWQnKSA/ICcnIDogbm9tZUVzdGFiZWxlY2ltZW50b1wiIHBsYWNlbWVudD1cInJpZ2h0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGxpYi1pY29uIGNsYXNzPVwiY29sLTFcIiBpY29uTmFtZT1cInByZWRpb1wiIGljb25Db2xvcj1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNpZGViYXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbG9zZWQnKVwiIGNsYXNzPVwiY29sLTkgcHMtMiBnbGItdGV4dC13aWR0aC0xNjAgdGV4dC1zdGFydCB0ZXh0LXRydW5jYXRlXCI+IHt7IG5vbWVFc3RhYmVsZWNpbWVudG8gfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1pY29uICpuZ0lmPVwiIXNpZGViYXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbG9zZWQnKVwiIGNsYXNzPVwiY29sLTFcIiBpY29uTmFtZT1cInNldGEtZGlyZWl0YVwiIGljb25Db2xvcj1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIEVTVEFCRUxFQ0lNRU5UT1MgLS0+XHJcblxyXG4gICAgICAgIDwvdWw+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gI3JlZ2lvbiBNRU5VUyBERSBOQVZFR0HDh8ODTyAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tbWVudVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LW1lbnUgcHgtMiBwYi0xXCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tICNyZWdpb24gTUVOVSBESU7Dgk1JQ08gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLW1lbnVcIj5cclxuICAgICAgICAgICAgICA8dWwgI2R5bmFtaWNfbWVudV9pdGVtcyAqbmdJZj1cIl9jdXN0b21NZW51U2VydmljZS5tZW51SXRlbXM7IGVsc2UgaXNMb2FkaW5nXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtZW51SXRlbSBvZiBfY3VzdG9tTWVudVNlcnZpY2UubWVudUl0ZW1zOyBsZXQgaSA9IGluZGV4XCIgXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC0xIHJvdW5kZWRcIiBcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5TdWJtZW51KG1lbnVJdGVtLCBzdWJtZW51X3JlZiwgZHluYW1pY19tZW51KVwiIFxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRJdGVtXT1cIm1lbnVJdGVtLmlzU2VsZWN0ZWRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiIW1lbnVJdGVtLmlzRXh0ZXJuYWw7IGVsc2UgZXh0ZXJuYWxNZW51XCJcclxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJtZW51SXRlbS5yb3V0ZSAhPSAnJyA/IG1lbnVJdGVtLnJvdXRlIDogbnVsbFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCInaXRlbScgKyBtZW51SXRlbS5pZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIiFzaWRlYmFyLmNsYXNzTGlzdC5jb250YWlucygnY2xvc2VkJykgPyAnJyA6IG1lbnVJdGVtLmxhYmVsXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiIGNsYXNzPVwidy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBidXR0b24taWNvbnMgdGV4dC1kZWNvcmF0aW9uLW5vbmUgcC0xIGdsYi1jdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJzaWRlYmFyLmNsYXNzTGlzdC5jb250YWlucygnY2xvc2VkJykgPyAnanVzdGlmeS1jb250ZW50LWNlbnRlcicgOiAnanVzdGlmeS1jb250ZW50LWJldHdlZW4nXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaWItaWNvbiAqbmdJZj1cIiFtZW51SXRlbS5pY29uLmluY2x1ZGVzKCdhc3NldHMvaWNvbnMnKTsgZWxzZSBpY29uSW1nXCIgW2ljb25OYW1lXT1cIm1lbnVJdGVtLmljb25cIiBpY29uQ29sb3I9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi1tYWluXCI+e3sgbWVudUl0ZW0ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ljb25JbWc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZW51SXRlbS5pY29uXCIgW2FsdF09XCInaWNvbmU6ICcgKyBtZW51SXRlbS5sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWljb24gKm5nSWY9XCIobWVudUl0ZW0uY2hpbGRyZW4gJiYgbWVudUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkgJiYgIXNpZGViYXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbG9zZWQnKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbk5hbWU9XCJzZXRhLWRpcmVpdGFcIiBpY29uQ29sb3I9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNleHRlcm5hbE1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiZ2V0RXh0ZXJuYWxVcmwobWVudUl0ZW0ucm91dGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidpdGVtJyArIG1lbnVJdGVtLmlkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCIhc2lkZWJhci5jbGFzc0xpc3QuY29udGFpbnMoJ2Nsb3NlZCcpID8gJycgOiBtZW51SXRlbS5sYWJlbFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiIGNsYXNzPVwidy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBidXR0b24taWNvbnMgdGV4dC1kZWNvcmF0aW9uLW5vbmUgcC0xIGdsYi1jdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInNpZGViYXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbG9zZWQnKSA/ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyA6ICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbidcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItaWNvbiAqbmdJZj1cIiFtZW51SXRlbS5pY29uLmluY2x1ZGVzKCdhc3NldHMvaWNvbnMnKTsgZWxzZSBpY29uSW1nRXh0ZXJuYWxcIiBbaWNvbk5hbWVdPVwibWVudUl0ZW0uaWNvblwiIGljb25Db2xvcj1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwYW4tbWFpblwiPnt7IG1lbnVJdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ljb25JbWdFeHRlcm5hbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwibWVudUl0ZW0uaWNvblwiIFthbHRdPVwiJ2ljb25lOiAnICsgbWVudUl0ZW0ubGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpYi1pY29uICpuZ0lmPVwiKG1lbnVJdGVtLmNoaWxkcmVuICYmIG1lbnVJdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApICYmICFzaWRlYmFyLmNsYXNzTGlzdC5jb250YWlucygnY2xvc2VkJylcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbk5hbWU9XCJzZXRhLWRpcmVpdGFcIiBpY29uQ29sb3I9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXNMb2FkaW5nPlxyXG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIG10LTJcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9saT5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIE1FTlUgRElOw4JNSUNPIC0tPlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSAjZW5kcmVnaW9uIE1FTlVTIERFIE5BVkVHQcOHw4NPIC0tPlxyXG5cclxuICAgICAgPCEtLSAjcmVnaW9uIEZPT1RFUiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1tZW51XCIgKG1vdXNlZW50ZXIpPVwic2hvd0JhbGxvb24gPSB0cnVlXCIgKG1vdXNlbGVhdmUpPVwic2hvd0JhbGxvb24gPSBmYWxzZVwiXHJcbiAgICAgICAgW3BvcG92ZXJdPVwicG9wb3ZlckNvbnRlbnRcIiBwbGFjZW1lbnQ9XCJyaWdodCBib3R0b21cIiBbb3V0c2lkZUNsaWNrXT1cInRydWVcIiBjb250YWluZXJDbGFzcz1cIndpZHRoOiAyMDBweFwiID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWNvbXBvbmVudHMgcHMtMSBwdC0yXCIgW2NsYXNzLm9wZW5dPVwic2hvd0JhbGxvb25cIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJmb290ZXJVc2VySW1nU3JjOyBlbHNlIG5vVXNlckltZ1wiIGNsYXNzPVwicGhvdG8tcHJvZmlsZSBtcy0xXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cIlsnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgZm9vdGVyVXNlckltZ1NyY11cIiBhbHQ9XCJmb3RvLXBlcmZpbFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vVXNlckltZz5cclxuICAgICAgICAgICAgICA8bGliLWljb24gaWNvbk5hbWU9XCJjb250cmFwYXJ0ZVwiIGljb25Db2xvcj1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdsYi10ZXh0LXdpZHRoLTEyMCB3LWF1dG8gZnctYm9sZCB0ZXh0LXN0YXJ0IHRleHQtdHJ1bmNhdGUgbXMtMSBtZS0xXCI+XHJcbiAgICAgICAgICAgICAge3sgZm9vdGVyVXNlck5hbWUgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBcclxuICAgICAgPG5nLXRlbXBsYXRlICNwb3BvdmVyQ29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLW1lbnVcIiBzdHlsZT1cIndpZHRoOiAxMDAwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPiBcclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImZvb3RlclVzZXJJbWdTcmM7IGVsc2Ugbm9Vc2VySW1nXCIgY2xhc3M9XCJwaG90by1wcm9maWxlXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cIlsnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgZm9vdGVyVXNlckltZ1NyY11cIiBhbHQ9XCJmb3RvLXBlcmZpbFwiPiBcclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1VzZXJJbWc+XHJcbiAgICAgICAgICAgICAgPGxpYi1pY29uIGljb25OYW1lPVwiY29udHJhcGFydGVcIiBpY29uQ29sb3I9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtcy0xXCI+IFxyXG4gICAgICAgICAgICAgIDxkaXYgW3Rvb2x0aXBdPVwiZm9vdGVyVXNlck5hbWVcIiBjbGFzcz1cImR5bmFtaWMtY29udGFpbmVyXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwOyBmbGV4LWdyb3c6IDE7bWF4LXdpZHRoOiAyMDBweDsgZm9udC1zaXplOiAxNnB4O1wiPnt7Zm9vdGVyVXNlck5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgW3Rvb2x0aXBdPVwiZm9vdGVyVXNlckVtYWlsXCIgY2xhc3M9XCJkeW5hbWljLWNvbnRhaW5lclwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDsgZm9udC1zaXplOiAxMnB4OyBmbGV4LWdyb3c6IDE7bWF4LXdpZHRoOiAyMDBweDtcIj57e2Zvb3RlclVzZXJFbWFpbH19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGhyIGNsYXNzPVwibWItMiBtdC0yXCI+XHJcbiAgICAgICAgPGRpdiByb3V0ZXJMaW5rPVwibWV1LXBlcmZpbFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgICAgPGxpYi1pY29uIFtpY29uU2l6ZV09XCInc21hbGwnXCIgaWNvbk5hbWU9XCJjb250cmFwYXJ0ZVwiLz4gTWV1IFBlcmZpbFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCIgKGNsaWNrKT1cImxvZ291dCgpXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XHJcbiAgICAgICAgICA8bGliLWljb24gW2ljb25TaXplXT1cIidzbWFsbCdcIiAgaWNvbk5hbWU9XCJsb2dvdXRcIi8+IFNhaXJcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPCEtLSAjZW5kcmVnaW9uIEZPT1RFUiAtLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic3VibWVudVwiICNzdWJtZW51X3JlZj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImRlc2lyZWRDb250ZW50ICE9PSBudWxsXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXNpcmVkQ29udGVudCE7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHN1Ym1lbnVMaXN0fVwiPjwvbmctY29udGVudD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIFxyXG4gIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnQgY29sIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1jb250ZW50LWJldHdlZW5cIiBpZD1cImJvZHktY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGFwcC1mb290ZXI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuPCEtLSAjZW5kcmVnaW9uIE1BSU4gQ09OVEVOVCAtLT5cclxuXHJcbjwhLS0gI3JlZ2lvbiBURU1QTEFURVMgLS0+XHJcbjwhLS0gdGVtIHF1ZSBwZXJndW50YXIgcHJvIEVyaWNrIC0tPlxyXG48IS0tIFtzdWJtZW51UmVmXT1cInN1Ym1lbnVfcmVmXCIgIC0tPlxyXG48bmctdGVtcGxhdGUgI2R5bmFtaWNfbWVudSBsZXQtZGF0YT5cclxuICA8YXBwLWR5bmFtaWMtbWVudSBcclxuICAgIFtzdWJtZW51TGlzdF09XCJkYXRhXCJcclxuICAgIFt0aXRsZVN1Ym1lbnVdPVwidGl0bGVTdWJtZW51XCJcclxuICAgIFtzdWJtZW51UmVmXT1cInN1Ym1lbnVfcmVmXCJcclxuICAgIFtyZWNlYmVQYXJhbV09XCJvbkNsaWNrZWRPdXRzaWRlLmJpbmQodGhpcylcIj5cclxuICA8L2FwcC1keW5hbWljLW1lbnU+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI25vdGlmX21lbnU+XHJcbiAgPGFwcC1ub3RpZi1zdWJtZW51PjwvYXBwLW5vdGlmLXN1Ym1lbnU+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tICNyZWdpb24gTU9EQUwgU0VMRUNBTyBFU1RBQkVMRUNJTUVOVE8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbW9kYWxFc3RhYmVsZWNpbWVudG8+XHJcbiAgPHNlbGVjYW8tZXN0YWJlbGVjaW1lbnRvcy1tb2RhbCAob25DbG9zZSk9XCJjbG9zZU1vZGFsKE1PREFMX0VTVEFCRUxFQ0lNRU5UTylcIlxyXG4gICAgKG9uU2VsZWN0ZWQpPVwiY2xvc2VNb2RhbChNT0RBTF9FU1RBQkVMRUNJTUVOVE8pOyB1cGRhdGVMYXN0TG9nRXN0YWJlbGVjaW1lbnRvKCRldmVudCk7XCI+PC9zZWxlY2FvLWVzdGFiZWxlY2ltZW50b3MtbW9kYWw+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0gI2VuZHJlZ2lvbiBNT0RBTCBTRUxFQ0FPIEVTVEFCRUxFQ0lNRU5UTyAtLT5cclxuXHJcbjwhLS0gI2VuZHJlZ2lvbiBURU1QTEFURVMgLS0+XHJcbiJdfQ==