buildingproduct-library 0.2.74 → 0.2.76

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.
Files changed (54) hide show
  1. package/assets/images/newtab.svg +11 -0
  2. package/{buildingproduct-library-0.2.74.tgz → buildingproduct-library-0.2.76.tgz} +0 -0
  3. package/bundles/buildingproduct-library.umd.js +527 -411
  4. package/bundles/buildingproduct-library.umd.js.map +1 -1
  5. package/esm2015/lib/account-dropdown/account-dropdown.component.js +16 -16
  6. package/esm2015/lib/account-dropdown/account-dropdown.module.js +6 -2
  7. package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +2 -2
  8. package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +1 -1
  9. package/esm2015/lib/checkout/order-review/order-review.component.js +1 -1
  10. package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +1 -1
  11. package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +57 -13
  12. package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +1 -1
  13. package/esm2015/lib/custom-navigation/custom-navigation.module.js +1 -11
  14. package/esm2015/lib/custom-order-details/custom-order-details.component.js +8 -6
  15. package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +2 -2
  16. package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +2 -2
  17. package/esm2015/lib/custom-order-history/custom-order-history.component.js +20 -19
  18. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +28 -17
  19. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +2 -2
  20. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +2 -2
  21. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.js +28 -10
  22. package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +4 -4
  23. package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +3 -3
  24. package/esm2015/lib/custom-search/custom-search.component.js +1 -1
  25. package/esm2015/lib/custom-user-account/custom-user-account.component.js +2 -2
  26. package/esm2015/lib/find-store/find-store.component.js +1 -1
  27. package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +6 -7
  28. package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +26 -25
  29. package/esm2015/lib/my-account/my-account.component.js +11 -1
  30. package/esm2015/lib/my-team/my-team.component.js +29 -10
  31. package/esm2015/lib/my-team/team-member.service.js +8 -36
  32. package/esm2015/lib/services/order.review.js +1 -1
  33. package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +6 -4
  34. package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +48 -22
  35. package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +66 -37
  36. package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +2 -4
  37. package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +2 -2
  38. package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +9 -9
  39. package/fesm2015/buildingproduct-library.js +405 -288
  40. package/fesm2015/buildingproduct-library.js.map +1 -1
  41. package/lib/account-dropdown/account-dropdown.component.d.ts +2 -0
  42. package/lib/account-dropdown/account-dropdown.module.d.ts +2 -1
  43. package/lib/custom-mini-cart/custom-mini-cart.component.d.ts +13 -4
  44. package/lib/custom-order-history/custom-order-history.component.d.ts +1 -1
  45. package/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.d.ts +1 -0
  46. package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.d.ts +5 -1
  47. package/lib/my-account/account-dashboard/account-dashboard.component.d.ts +1 -1
  48. package/lib/my-account/invoice-credit/invoice-credit.component.d.ts +2 -4
  49. package/lib/my-team/my-team.component.d.ts +6 -1
  50. package/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.d.ts +9 -10
  51. package/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.d.ts +9 -18
  52. package/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.d.ts +1 -2
  53. package/lib/shared/shared-download-order/shared-download-order.component.d.ts +1 -1
  54. package/package.json +1 -1
@@ -5,17 +5,19 @@ import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/forms";
6
6
  import * as i2 from "./team-member.service";
7
7
  import * as i3 from "@spartacus/core";
8
- import * as i4 from "../shared/custom-breadcrum/custom-breadcrum.component";
9
- import * as i5 from "@angular/material/paginator";
10
- import * as i6 from "@ng-bootstrap/ng-bootstrap";
11
- import * as i7 from "@angular/common";
12
- import * as i8 from "../directives/custom-paginatior.directive";
8
+ import * as i4 from "@spartacus/user/account/core";
9
+ import * as i5 from "../shared/custom-breadcrum/custom-breadcrum.component";
10
+ import * as i6 from "@angular/material/paginator";
11
+ import * as i7 from "@ng-bootstrap/ng-bootstrap";
12
+ import * as i8 from "@angular/common";
13
+ import * as i9 from "../directives/custom-paginatior.directive";
13
14
  export class MyTeamComponent {
14
- constructor(formBuilder, teamMemberService, cd, cmsService) {
15
+ constructor(formBuilder, teamMemberService, cd, cmsService, userService) {
15
16
  this.formBuilder = formBuilder;
16
17
  this.teamMemberService = teamMemberService;
17
18
  this.cd = cd;
18
19
  this.cmsService = cmsService;
20
+ this.userService = userService;
19
21
  this.submitted = false;
20
22
  this.sortbyOptions = [
21
23
  { name: 'Name (Ascending)', value: 'byName' },
@@ -60,6 +62,8 @@ export class MyTeamComponent {
60
62
  this.totalLength = [];
61
63
  this.childrenLength = [];
62
64
  this.accountLength = [];
65
+ this.currentUserRole = '';
66
+ this.showActiveDeactiveModal = false;
63
67
  }
64
68
  ngOnInit() {
65
69
  this.breadcrumbData.push({ url: '/', name: 'Home' }, { url: '/', name: 'My Team' });
@@ -70,6 +74,12 @@ export class MyTeamComponent {
70
74
  .subscribe((data) => {
71
75
  this.myTeamParagraph = data;
72
76
  });
77
+ this.userService.get().subscribe((data) => {
78
+ if (data) {
79
+ this.currentUserRole = sessionStorage.getItem('role');
80
+ this.currentUserEmail = data === null || data === void 0 ? void 0 : data.email;
81
+ }
82
+ });
73
83
  }
74
84
  initializeInviteForm() {
75
85
  this.registerForm = this.formBuilder.group({
@@ -205,6 +215,10 @@ export class MyTeamComponent {
205
215
  this.cd.detectChanges();
206
216
  }
207
217
  editMember(data) {
218
+ if (this.currentUserEmail == data.displayUid) {
219
+ this.showModal = false;
220
+ return;
221
+ }
208
222
  this.selectedItemsList = [];
209
223
  this.selectedOrgUnits = [];
210
224
  this.isEdit = true;
@@ -216,9 +230,14 @@ export class MyTeamComponent {
216
230
  this.getRoles();
217
231
  }
218
232
  changeStatus(data) {
233
+ if (this.currentUserEmail == data.displayUid) {
234
+ this.showActiveDeactiveModal = false;
235
+ return;
236
+ }
219
237
  this.selectedUserName = data.name;
220
238
  this.selectedUid = data.customerId;
221
239
  this.selectedStatus = data.active;
240
+ this.showActiveDeactiveModal = true;
222
241
  if (data.active == true) {
223
242
  this.isActive = true;
224
243
  }
@@ -399,8 +418,8 @@ export class MyTeamComponent {
399
418
  return false;
400
419
  }
401
420
  }
402
- MyTeamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MyTeamComponent, deps: [{ token: i1.FormBuilder }, { token: i2.TeamMemberService }, { token: i0.ChangeDetectorRef }, { token: i3.CmsService }], target: i0.ɵɵFactoryTarget.Component });
403
- MyTeamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MyTeamComponent, selector: "lib-my-team", viewQueries: [{ propertyName: "closeConfirmModal", first: true, predicate: ["closeConfirmModal"], descendants: true }, { propertyName: "closeInviteModal", first: true, predicate: ["closeInviteModal"], descendants: true }], ngImport: i0, template: "<div class=\"loading \" *ngIf=\"showWaitCursor | async \">Loading&#8230;</div>\r\n<app-custom-breadcrum [customCrumbData]=\"breadcrumbData\" class=\"products-breadcums\"></app-custom-breadcrum>\r\n<ng-container *ngIf=\"isTeamAvailable == 'hasData' \">\r\n <div class=\"team-members\">\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-8 col-12 m-auto\">\r\n <h1 class=\"heading\">\r\n My Team\r\n </h1>\r\n <p>{{myTeamParagraph?.content}}</p>\r\n </div>\r\n <div class=\"col-sm-4 col-12 d-flex justify-content-end\">\r\n <div class=\"invite-btn-bg\">\r\n <button type=\"button\" class=\"btn mobile-invite-btn dimond-primary-btn\" data-toggle=\"modal\"\r\n data-target=\"#inviteMemberModal\" (click)=\"inviteMember()\">Invite Member</button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col col-12 m-auto\">\r\n <div class=\"dropdown sort-by d-flex align-items-center justify-content-between\">\r\n <h6 class=\"members-count\">{{totalRecords}} members in your team</h6>\r\n <select name=\"\" id=\"\" class=\"sort-btn\" (change)=\"sortBy($event)\">\r\n <option value=\"byName\" selected>Sort by: Name (Ascending)</option>\r\n <option value=\"byNameDesc\">Sort by: Name (Descending)</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table members-table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">Name</th>\r\n <th scope=\"col\">Account</th>\r\n <th scope=\"col\">Role</th>\r\n <th scope=\"col\">Email</th>\r\n <th scope=\"col\">Mobile #</th>\r\n <th scope=\"col\">Status</th>\r\n <th scope=\"col\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr [ngClass]=\"{'disabled-text': team.active == false}\"\r\n *ngFor=\"let team of dataSource; let i= index\">\r\n <td>{{team.name}}</td>\r\n <td>\r\n <ul>\r\n <li class=\"ellipsis\" *ngFor=\"let account of team?.accounts?.slice(0,3)\">\r\n {{account.name}}</li>\r\n <ng-container *ngIf=\"team?.accounts?.length > 3\">\r\n <li class=\"viewMore-link\" data-toggle=\"modal\"\r\n data-target=\"#accountModal\"\r\n (click)=\"viewMore(team.accounts, team.name)\">+\r\n {{getMoreCount(team.accounts, team)}} more</li>\r\n </ng-container>\r\n </ul>\r\n </td>\r\n <td>\r\n <ul>\r\n <li *ngFor=\"let role of team?.roles?.slice(0,3)\">{{role}}</li>\r\n <ng-container *ngIf=\"team?.roles?.length > 3\">\r\n <li class=\"viewMore-link\" data-toggle=\"modal\"\r\n data-target=\"#rolesModal\"\r\n (click)=\"viewMoreRoles(team.roles, team.name )\">+\r\n {{team.roles.length - 3}} more</li>\r\n </ng-container>\r\n </ul>\r\n </td>\r\n <td>{{team.displayUid}}</td>\r\n <td>{{team.phoneNumber}}</td>\r\n <td [ngClass]=\"team.active == true ? 'status-active' : 'status-deactive'\">\r\n {{team.active == true ? 'Active' : 'Deactivated'}}</td>\r\n <td>\r\n <div class=\"d-flex justify-content-between action-item\">\r\n <img [src]=\"team.active == false ?'../../../../assets/images/EditIcondisabled.svg' : '../../../../assets/images/EditIconEnabled.svg'\"\r\n [ngClass]=\"{'disabled': team.active == false}\" alt=\"edit\"\r\n data-toggle=\"modal\" data-target=\"#inviteMemberModal\"\r\n (click)=\"editMember(dataSource[i])\">\r\n <img placement=\"bottom\"\r\n ngbTooltip=\"{{team.active == false ? 'Activate' : 'Deactivate'}}\"\r\n [src]=\"team.active == false ? '../../../../assets/images/ActivateIcon.svg' : '../../../../assets/images/DisableIcon.svg' \"\r\n alt=\"activate\" data-toggle=\"modal\" data-target=\"#memberActivateModal\"\r\n (click)=\"changeStatus(dataSource[i])\">\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <mat-paginator appPagination [hidden]=\"myTeamListData && myTeamListData?.length == 0\"\r\n [length]=\"testPaginator?.length\" [pageSizeOptions]=\"[20, 40, 60 ]\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"isTeamAvailable == 'noData'\">\r\n <div class=\"container noteam-text\">\r\n <div class=\"row justify-content-md-center\">\r\n <div class=\"col-sm-9 col-sm-offset-3\">\r\n <div class=\"text-center\">\r\n <img class=\"mb-4\" src=\"../../../../assets/images/AlertIcon.svg\" alt=\"alert\">\r\n <h3 class=\"mb-2\">Your team list is empty!</h3>\r\n <p>{{myTeamParagraph?.content}}</p>\r\n <button type=\"button\" class=\"btn add-btn\" data-toggle=\"modal\"\r\n data-target=\"#inviteMemberModal\" (click)=\"inviteMember()\">Invite Member</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n<div class=\"modal fade\" id=\"inviteMemberModal\" role=\"dialog\" aria-labelledby=\"inviteMemberLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" role=\"document\" *ngIf=\"showModal\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{isEdit == true ? 'Edit' : 'Invite'}} Member</h5>\r\n <i class=\"icon-close invite-pop-close\" #closeInviteModal data-dismiss=\"modal\" aria-label=\"Close\"\r\n (click)=\"clearEdit()\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"register-form\">\r\n <form [formGroup]=\"registerForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"modal-scroll\">\r\n <div class=\"form-group\">\r\n <label class=\"required\">First Name</label>\r\n <input type=\"text\" formControlName=\"firstName\" class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.firstName.errors }\"\r\n [(ngModel)]=\"selectedRowData.firstName\" />\r\n <div *ngIf=\"submitted && f.firstName.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.firstName.errors.required\">First name is required</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Last Name</label>\r\n <input type=\"text\" formControlName=\"lastName\" class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.lastName.errors }\"\r\n [(ngModel)]=\"selectedRowData.lastName\" />\r\n <div *ngIf=\"submitted && f.lastName.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.lastName.errors.required\">Last name is required</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Email</label>\r\n <input type=\"text\" formControlName=\"email\" class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.email.errors }\"\r\n [(ngModel)]=\"selectedRowData.displayUid\" [readonly]=\"isEdit == true\" />\r\n <div *ngIf=\"submitted && f.email.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.email.errors.required\">Email is required</div>\r\n <div *ngIf=\"f.email.errors.email\">Email is invalid</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Mobile</label>\r\n <input type=\"text\" formControlName=\"mobile\" maxlength=\"16\" class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': submitted && f.mobile.errors }\"\r\n [(ngModel)]=\"selectedRowData.phoneNumber\" (keypress)=\"numberOnly($event)\" (keyup)=\"numberMobile($event)\" />\r\n <div *ngIf=\"submitted && f.mobile.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.mobile.errors.required\">Mobile is required</div>\r\n <div *ngIf=\"f.mobile.errors.minlength\">\r\n Number must be at least 10 characters\r\n </div>\r\n <div *ngIf=\"f.mobile.errors.maxlength\">\r\n Number must not exceed 16 characters\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Desk Phone</label>\r\n <input type=\"text\" formControlName=\"deskPhone\" class=\"form-control\" \r\n (keypress)=\"numberOnly($event)\" (keyup)=\"numberMobile($event)\"\r\n [(ngModel)]=\"selectedRowData.deskPhone\"/>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Job Title</label>\r\n <input type=\"text\" formControlName=\"jobTitle\" class=\"form-control\" [(ngModel)]=\"selectedRowData.jobTitle\"/>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Account</label>\r\n <button [ngClass]=\"{ 'isAccount-invalid': submitted && selectedOrgUnits?.length == 0 }\" class=\"btn account-custom-input position-relative\" type=\"button\"\r\n id=\"branchAccountDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n aria-expanded=\"false\">\r\n <i class=\"fas fa-chevron-down account-downarrow float-right\"></i>\r\n Please Select <span *ngIf=\"selectedOrgUnits?.length > 0\"class=\"float-right pr-3\">{{selectedOrgUnits?.length}} Selected</span>\r\n </button>\r\n <div *ngIf=\"selectedOrgUnits?.length == 0 && submitted\" class=\"isInvalid\"> Account is required </div>\r\n <div class=\"dropdown-menu account-dropdown\" aria-labelledby=\"dropdownMenuButton\">\r\n <ul class=\"accounts-list\" *ngIf=\"orgUnits\">\r\n <div *ngFor=\"let unit of orgUnits\">\r\n <li class=\"list-border-bottom\" >\r\n <label class=\"accountItem\">\r\n <input type=\"checkbox\" [checked]=\"getCheckedStatuses(unit.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0 form-control\"\r\n (change)=\"checkOrgUnit($event , {uid: unit.uid} )\"\r\n [value]=\"unit.uid\" />\r\n {{unit.name}}\r\n </label>\r\n </li>\r\n <li *ngFor=\"let data of unit?.children; let ind = index\"\r\n class=\"sec-child list-border-bottom\">\r\n <div\r\n [ngClass]=\"data?.children?.length > 0 ? 'list-border-bottom secPaddingLft' : ''\">\r\n <label class=\"accountItem \">\r\n <input type=\"checkbox\" [checked]=\"getCheckedStatuses(data.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n (change)=\"checkOrgUnit($event , {uid: data.uid} ) \"\r\n [value]=\"data.uid\" />\r\n {{data.name}}\r\n </label>\r\n </div>\r\n\r\n <ul class=\"thrd-child\">\r\n <li *ngFor=\"let child of data?.children\">\r\n <label class=\"accountItem\">\r\n <input type=\"checkbox\" [checked]=\"getCheckedStatuses(child.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n (change)=\"checkOrgUnit($event , {uid: child.uid} )\"\r\n [value]=\"child.uid\" />\r\n {{child.name}}\r\n </label>\r\n <ul *ngIf=\"child && child.children\">\r\n <li *ngFor=\"let check of child?.children\">\r\n <label class=\"accountItem\">\r\n <input type=\"checkbox\"\r\n [checked]=\"getCheckedStatuses(check.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n (change)=\"checkOrgUnit($event , {uid: check.uid} )\"\r\n [value]=\"check.uid\" />\r\n {{check.name}}\r\n </label>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </li>\r\n </div>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Roles</label>\r\n <div *ngFor=\"let role of defaultRoles; let i = index;\" class=\"role-checkbox\">\r\n <label>\r\n <input type=\"checkbox\" [value]=\"role.uid\" name=\"role-dropdown-group\"\r\n (change)=\"changeSelection($event, {uid: role.uid})\" class=\"form-control\"\r\n [checked]=\"role?.selected === true\"> {{role?.name}}<br>\r\n </label>\r\n </div>\r\n <div *ngIf=\"selectedItemsList?.length == 0 && submitted\" class=\"isInvalid\"> Role is required </div>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"d-sm-flex justify-content-end d-block btn-mobile-view\">\r\n <button type=\"button\" class=\"btn mobile-cancel-btn dimond-secondary-btn mr-5\"\r\n data-dismiss=\"modal\" (click)=\"clearEdit()\">Cancel</button>\r\n <button type=\"submit\" class=\"btn mobile-save-btn dimond-primary-btn float-right\">{{isEdit ? 'Save' : 'Invite'}}</button>\r\n </div>\r\n <div *ngIf=\"isError\" class=\"error-block alert alert-danger justify-content-start\" role=\"alert\">\r\n <img class=\"mr-3\" src=\"../../../../assets/images/erroricon.svg\" alt=\"alert\">\r\n <p>{{errorMessage}}</p>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal fade\" id=\"memberActivateModal\" role=\"dialog\" aria-labelledby=\"memberActivateLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{isActive ? 'Deactivate' : 'Activate'}} Member</h5>\r\n <i class=\"icon-close invite-pop-close\" #closeConfirmModal data-dismiss=\"modal\" aria-label=\"Close\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <span>Are you sure you want to {{isActive ? 'deactivate' : 'activate'}} <b>{{selectedUserName}}</b> from\r\n your team list?</span>\r\n <div class=\"d-block d-sm-flex justify-content-end mobile-action-btn mt-4\">\r\n <button type=\"button\" class=\"btn dimond-secondary-btn mobile-cancel-btn mr-5\"\r\n data-dismiss=\"modal\">No</button>\r\n <button type=\"submit\" class=\"btn dimond-primary-btn float-right mobile-save-btn\"\r\n (click)=\"updateStatus()\">Yes</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal fade\" id=\"accountModal\" role=\"dialog\" aria-labelledby=\"accountLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Accounts</h5>\r\n <i class=\"icon-close invite-pop-close\" data-dismiss=\"modal\" aria-label=\"Close\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <h4>{{selectedUserName}}</h4>\r\n <span>{{userAllAccounts.length + childrenLength}} accounts</span>\r\n <ul class=\"accounts-list account-data-table\">\r\n <li *ngFor=\"let data of userAllAccounts; let i = index;\">\r\n <div class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"indexId py-2\"></span>\r\n <label class=\"index-lebel\" style=\"padding-left: 15px ;\">{{data.name}}</label>\r\n </div>\r\n <div *ngIf=\"data?.children?.length\">\r\n <ul>\r\n <li *ngFor=\"let childrenData of data.children\">\r\n <div class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"indexId py-2\"></span>\r\n <label class=\"index-lebel\"\r\n style=\"padding-left: 50px ;\">{{childrenData.name}}</label>\r\n </div>\r\n <div *ngIf=\"childrenData?.children?.length\">\r\n <ul>\r\n <li *ngFor=\"let grandChild of childrenData.children\">\r\n <div class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"indexId py-2\"></span>\r\n <label class=\"index-lebel\"\r\n style=\"padding-left: 75px ;\">{{grandChild.name}}</label>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal fade\" id=\"rolesModal\" role=\"dialog\" aria-labelledby=\"accountLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Roles</h5>\r\n <i class=\"icon-close invite-pop-close\" data-dismiss=\"modal\" aria-label=\"Close\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <h4>{{selectedUserName}}</h4>\r\n <span>{{userAllRoles.length}} roles</span>\r\n <div class=\"accounts-list account-data-table\">\r\n <ul>\r\n <li *ngFor=\"let data of userAllRoles; let i = index;\" class=\"d-flex flex-row align-items-center list-border-bottom\"> \r\n <span class=\"roleIndex py-2\">{{i+1}}</span>\r\n <span class=\"index-lebel pl-2\">{{data}}</span> \r\n </li>\r\n </ul>\r\n </div> \r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ngb-toast *ngIf=\"showToast\" [autohide]=\"true\" [delay]=\"4000\">\r\n <img [src]=\"!isActive ?'../../../../assets/images/ActivateIcon.svg' : '../../../../assets/images/DisableIcon.svg'\">\r\n {{isActive ? 'Deactivated' : 'Activated'}} {{selectedUserName}}\r\n <i class=\"icon-close toast-close\" aria-label=\"Close\" (click)=\"closeToast()\"></i>\r\n</ngb-toast>\r\n<ngb-toast *ngIf=\"createUpdateToast\" [autohide]=\"true\" [delay]=\"4000\">\r\n <img src=\"../../../../assets/images/Invited.svg\"> {{isCreate ? 'One new member invited !' : 'Save was successful'}}\r\n <i class=\"icon-close toast-close\" aria-label=\"Close\" (click)=\"closeUpdateToast()\"></i>\r\n</ngb-toast>", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative;z-index:10}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.isAccount-invalid{border:1px solid var(--cx-color-danger)!important}.isInvalid{color:#db0002;margin-top:.25rem;font-size:.875rem}.team-members{margin:40px 0}.team-members .sort-by .sort-btn{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;height:40px;padding:0 15px;text-transform:none;text-align:left;position:relative}.team-members .sort-by .sort-btn .arrow-down{position:absolute;right:10px}.team-members .sort-by .sort-btn option{height:40px}.team-members .sort-by .dropdown-toggle:after{display:none}.team-members .sort-by .dropdown-menu.show{top:-11px!important;width:200px}.members-count{font-family:\"Arial Bold\",sans-serif;margin-bottom:0}.heading{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:54px;color:#1d1d1b;margin-bottom:25px}.add-btn{text-transform:uppercase;background-color:#1d1d1b;color:#fff;padding:8px 25px;font-size:var(--fontsize14);border:none;border-radius:0;height:40px}.search-input{border:none;border-bottom:1px solid #707070;background-color:transparent}.members-table{margin-top:30px;background-color:#fff}.members-table thead{background-color:#646363}.members-table thead th{color:#fff;text-align:left;font-family:\"Arial Bold\",sans-serif;font-size:var(--fontsize14)}.members-table tr.disabled-text td{color:#8d8d8d}.members-table td{border-bottom:1px solid #E0E0E0;position:relative;color:#1d1d1b}.members-table td i{cursor:pointer}.members-table td .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:200px}.members-table td:first-child{font-family:\"Arial Bold\",sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:100px}.members-table td:nth-child(2){white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:100px}.members-table .viewMore-link{color:#b61828;cursor:pointer;text-decoration:underline}.members-table .action-item{padding-right:30px}.members-table .action-item img{cursor:pointer}.status-default,.status-deactive:before,.status-expired:before,.status-pending:before,.status-active:before{content:\"\";width:8px;height:8px;border-radius:50%;position:absolute;left:0px;top:50%;transform:translate(-50%,-50%)}.status-active:before{background-color:#2aa900}.status-pending:before{background-color:#ff7d00}.status-expired:before{background-color:#d0021b}.status-deactive{color:#8d8d8d}.status-deactive:before{background-color:#8d8d8d}.noteam-text{padding:5rem 3rem;display:flex;align-items:center}#inviteMemberModal .modal-header .invite-pop-close,#memberActivateModal .modal-header .invite-pop-close,#rolesModal .modal-header .invite-pop-close,#accountModal .modal-header .invite-pop-close{font-size:var(--fontsize24);font-family:\"Arial Bold\",sans-serif;cursor:pointer}#inviteMemberModal .modal-header .modal-title,#memberActivateModal .modal-header .modal-title,#rolesModal .modal-header .modal-title,#accountModal .modal-header .modal-title{font-size:var(--fontsize28)}.register-form .modal-scroll{max-height:480px;overflow:auto;padding-right:15px}.register-form .form-group>label{font-family:\"Arial Bold\",sans-serif}.register-form .form-group>.form-control{border-radius:0;font-family:\"Arial Regular\",sans-serif;color:#1d1d1d}.register-form .required:after{content:\" *\";color:#b61828}.register-form .form-control.is-invalid{background-image:none!important}.register-form .role-checkbox{margin-left:36px;position:relative}.register-form .role-checkbox label{display:inline-block;cursor:pointer}.register-form .role-checkbox input[type=checkbox]{accent-color:#B61828;top:-4px}.register-form .account-dropdown .form-check input[type=checkbox]:checked{background-color:#b61828;border-color:#fafafa}.error-block{margin-top:30px;border-radius:3px;padding:10px 40px;text-align:left;font-weight:normal}.error-block .alert-icon{color:#b61828;margin-right:1rem}.error-block p{font-size:13px;margin-bottom:0}.disabled{pointer-events:none}#accountModal .modal-body h4{font-family:\"Arial Bold\",sans-serif}::ng-deep .tooltip-inner{padding:2px 10px!important}::ng-deep .toast{top:20%;left:50%;position:fixed;min-width:500px;max-width:500px;transform:translate(-50%);z-index:9999;background-color:#1d1d1b}::ng-deep .toast .toast-body{color:#fff}::ng-deep .toast .toast-body img{margin-right:10px}::ng-deep .toast .toast-body .toast-close{top:50%;right:5%;position:absolute;transform:translate(-50%,-50%);cursor:pointer}::ng-deep .toast .toast-header{background-color:#1d1d1b;color:#fff;padding:15px;border-radius:0}::ng-deep .toast .toast-header .close{color:#fff;opacity:1;text-shadow:none}::ng-deep .mat-paginator .mat-paginator-range-label{display:none!important}::ng-deep .mat-paginator .mat-icon-button{background-color:#b61828!important}::ng-deep .mat-paginator .mat-mini-fab,::ng-deep .mat-paginator .mat-icon-button{width:30px;height:30px;line-height:30px}::ng-deep .mat-paginator .mat-paginator-page-size-label,::ng-deep .mat-paginator .mat-select-value-text{font-size:var(--fontsize16);color:#1d1d1b;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-select-panel .mat-option-text{font-size:var(--fontsize16)!important;color:#1d1d1b!important;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-container .mat-paginator-page-size{margin-right:40px;align-items:center}::ng-deep .mat-paginator-container .mat-paginator-page-size .mat-paginator-page-size-select{margin:0}::ng-deep .mat-paginator-container .mat-paginator-page-size .mat-form-field-wrapper{padding-bottom:0}::ng-deep .mat-paginator-container .mat-form-field-infix{border:1px solid #E0E0E0;padding:6px;height:40px;display:flex;align-items:center;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-container .mat-form-field-underline{background:none}::ng-deep .mat-paginator-container .mat-form-field-underline .mat-form-field-ripple{display:none}::ng-deep .mat-paginator-container .mat-select-arrow{color:#1d1d1b}::ng-deep .mat-paginator-container .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:#1d1d1b}::ng-deep body .cdk-overlay-container .mat-tooltip{display:none}::ng-deep .mat-paginator-range-actions button{margin:0!important}::ng-deep .mat-paginator-range-actions .mat-icon-button{width:60px;height:40px;line-height:40px;border-radius:0;background-color:#fff!important;color:#1d1d1b!important;border:1px solid #E0E0E0;cursor:pointer}::ng-deep .mat-paginator-range-actions .mat-mini-fab{border-radius:0;margin:0!important;box-shadow:none;height:40px;width:35px;display:flex;align-items:center;justify-content:center;border:1px solid #E0E0E0;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-range-actions .mat-button-disabled{color:#8d8d8d!important}::ng-deep .mat-paginator-range-actions .mat-paginator-page-size{margin-right:30px}::ng-deep .mat-paginator-range-actions .mat-paginator-icon{display:none}::ng-deep .mat-paginator-range-actions .mat-paginator-navigation-previous .mat-button-wrapper:before{content:\"PREV\";position:absolute;left:50%;top:0;width:auto;transform:translate(-50%);font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-range-actions .mat-paginator-navigation-next .mat-button-wrapper:before{content:\"NEXT\";position:absolute;left:50%;top:0;width:auto;transform:translate(-50%);font-family:\"Arial Bold\",sans-serif}.accounts-list .list-border-bottom{border-bottom:1px solid #E0E0E0}.accounts-list input[type=checkbox]{margin-top:0}.accounts-list .accountItem{padding:10px 0 10px 45px;margin-bottom:0}.accounts-list .secPaddingLft{margin-left:-50px}.accounts-list .secPaddingLft .accountItem{padding-left:95px}.accounts-list .sec-child{padding-left:50px}.accounts-list .sec-child :last-child{border-bottom:0}.accounts-list .thrd-child{padding-left:50px}.account-data-table{border:1px solid #E0E0E0;max-height:300px;overflow:auto;margin:15px 0;counter-reset:my-sec-counter}.account-data-table .indexId{display:inline-block;padding:0 15px;border-right:1px solid #E0E0E0}.account-data-table .indexId:before{counter-increment:my-sec-counter;content:counter(my-sec-counter)}.account-data-table .roleIndex{display:inline-block;padding:0 15px;border-right:1px solid #E0E0E0}.account-data-table .index-lebel{margin-bottom:0}@media (max-width: 991px) and (min-width: 768px){.modal-lg{max-width:720px!important;min-width:720px!important}.action-item{padding-right:0!important}}@media screen and (max-width: 767px){::ng-deep .CompanyPageTemplate .BodyContent{display:block}.add-btn{width:100%}.team-members .sort-by{display:block!important}.team-members .sort-by .dropdown-menu.show{width:100%!important}.team-members .sort-by .sort-btn{width:100%}.team-members .members-count{margin-bottom:2rem}#accountModal .modal-body,#rolesModal .modal-body,#inviteMemberModal .modal-body,#memberActivateModal .modal-body{padding:1rem}#accountModal .modal-content,#rolesModal .modal-content,#inviteMemberModal .modal-content,#memberActivateModal .modal-content{min-height:100vh}#accountModal .mobile-action-btn,#rolesModal .mobile-action-btn,#inviteMemberModal .mobile-action-btn,#memberActivateModal .mobile-action-btn{position:fixed;bottom:0;left:15px;right:15px}.action-item{padding-right:0!important}.invite-btn-bg{border:2px solid #E0E0E0;width:100%;height:80px;position:fixed;bottom:0;z-index:20;left:0;background:#ffffff;display:flex;align-items:center}.mobile-invite-btn{position:absolute;z-index:9;left:15px;max-width:100%;width:calc(100% - 30px)}.mobile-cancel-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}.mobile-save-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}.btn-mobile-view{position:absolute;bottom:0;max-width:100%;right:20px;left:20px}::ng-deep .toast{min-width:300px;max-width:300px}::ng-deep .mat-paginator-container{display:contents!important}}::ng-deep cx-page-layout.CompanyPageTemplate .BodyContent{margin:0!important}.account-custom-input{background-color:#fff;border:1px solid #E0E0E0;border-radius:0;padding:.375rem .75rem;font-size:var(--fontsize16);line-height:var(--fontsize22);width:100%;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.placeholder-icon{position:relative;right:30px;top:0;z-index:4}::placeholder{color:#fff}.btn:focus{box-shadow:none}.menu .parent-dropdown-item{cursor:pointer}.custom-arrow{position:absolute;right:20px;top:10px}.register-form .dropdown-menu{background-color:#fff;top:-11px!important;left:-5px!important;width:calc(100% - 79px);padding:0}.register-form .dropdown-menu .menu{max-height:28rem;overflow:auto;padding:0 15px}.register-form .dropdown-menu .menu .parent-dropdown-item{background-color:#393939;color:#c6c6c6;border-bottom:1px solid #525252}.register-form .dropdown-menu .menu .parent-dropdown-item.selected{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .accountdata{width:90%;display:inline-block}.register-form .dropdown-menu .menu .parent-dropdown-item .accountIcon{width:10%}.register-form .dropdown-menu .menu .parent-dropdown-item .labelOneChild{padding:7px 0}.register-form .dropdown-menu .menu .parent-dropdown-item .labelOneChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .labelTwoChild{padding:7px 0 7px 15px}.register-form .dropdown-menu .menu .parent-dropdown-item .labelTwoChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .labelThreeChild{padding:7px 0 7px 30px}.register-form .dropdown-menu .menu .parent-dropdown-item .labelThreeChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .child-menu{padding:0}.register-form .dropdown-menu .menu .child-menu .child-dropdown-item{border-top:1px solid #525252;padding:0}.register-form .dropdown-menu .menu .subchild-menu .subdropdown-item{border-top:1px solid #525252}\n"], components: [{ type: i4.CustomBreadcrumComponent, selector: "app-custom-breadcrum", inputs: ["customCrumbData"] }, { type: i5.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i6.NgbToast, selector: "ngb-toast", inputs: ["delay", "autohide", "animation", "header"], outputs: ["shown", "hidden"], exportAs: ["ngbToast"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i8.AppPaginationDirective, selector: "[appPagination]", inputs: ["showTotalPages"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }], pipes: { "async": i7.AsyncPipe } });
421
+ MyTeamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MyTeamComponent, deps: [{ token: i1.FormBuilder }, { token: i2.TeamMemberService }, { token: i0.ChangeDetectorRef }, { token: i3.CmsService }, { token: i4.UserAccountService }], target: i0.ɵɵFactoryTarget.Component });
422
+ MyTeamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MyTeamComponent, selector: "lib-my-team", viewQueries: [{ propertyName: "closeConfirmModal", first: true, predicate: ["closeConfirmModal"], descendants: true }, { propertyName: "closeInviteModal", first: true, predicate: ["closeInviteModal"], descendants: true }], ngImport: i0, template: "<div class=\"loading \" *ngIf=\"showWaitCursor | async \">Loading&#8230;</div>\r\n<app-custom-breadcrum [customCrumbData]=\"breadcrumbData\" class=\"products-breadcums\"></app-custom-breadcrum>\r\n<ng-container *ngIf=\"isTeamAvailable == 'hasData' \">\r\n <div class=\"team-members\">\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-8 col-12 m-auto\">\r\n <h1 class=\"heading\">\r\n My Team\r\n </h1>\r\n <p>{{myTeamParagraph?.content}}</p>\r\n </div>\r\n <div class=\"col-sm-4 col-12 d-flex justify-content-end\">\r\n <div class=\"invite-btn-bg\">\r\n <button type=\"button\" class=\"btn mobile-invite-btn dimond-primary-btn\" data-toggle=\"modal\" data-target=\"#inviteMemberModal\" (click)=\"inviteMember()\">Invite Member</button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col col-12 m-auto\">\r\n <div class=\"dropdown sort-by d-flex align-items-center justify-content-between\">\r\n <h6 class=\"members-count\">{{totalRecords}} members in your team</h6>\r\n <select name=\"\" id=\"\" class=\"sort-btn\" (change)=\"sortBy($event)\">\r\n <option value=\"byName\" selected>Sort by: Name (Ascending)</option>\r\n <option value=\"byNameDesc\">Sort by: Name (Descending)</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table members-table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">Name</th>\r\n <th scope=\"col\">Account</th>\r\n <th scope=\"col\">Role</th>\r\n <th scope=\"col\">Email</th>\r\n <th scope=\"col\">Mobile #</th>\r\n <th scope=\"col\">Status</th>\r\n <th scope=\"col\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr [ngClass]=\"{'disabled-text': team.active == false}\" *ngFor=\"let team of dataSource; let i= index\">\r\n <td>{{team.name}}</td>\r\n <td>\r\n <ul>\r\n <li class=\"ellipsis\" *ngFor=\"let account of team?.accounts?.slice(0,3)\">\r\n {{account.name}}</li>\r\n <ng-container *ngIf=\"team?.accounts?.length > 3\">\r\n <li class=\"viewMore-link\" data-toggle=\"modal\" data-target=\"#accountModal\" (click)=\"viewMore(team.accounts, team.name)\">+ {{getMoreCount(team.accounts, team)}} more</li>\r\n </ng-container>\r\n </ul>\r\n </td>\r\n <td>\r\n <ul>\r\n <li *ngFor=\"let role of team?.displayRoles?.slice(0,3)\">{{role}}</li>\r\n <ng-container *ngIf=\"team?.displayRoles?.length > 3\">\r\n <li class=\"viewMore-link\" data-toggle=\"modal\" data-target=\"#rolesModal\" (click)=\"viewMoreRoles(team.displayRoles, team.name )\">+ {{team.displayRoles.length - 3}} more</li>\r\n </ng-container>\r\n </ul>\r\n </td>\r\n <td>{{team.displayUid}}</td>\r\n <td>{{team.phoneNumber}}</td>\r\n <td [ngClass]=\"team.active == true ? 'status-active' : 'status-deactive'\">\r\n {{team.active == true ? 'Active' : 'Deactivated'}}</td>\r\n <td>\r\n <div class=\"d-flex justify-content-between action-item\">\r\n <img [src]=\"team.active == false || (currentUserRole == 'B2B Manager' && team?.roles.includes('B2B Owner')) ?'../../../../assets/images/EditIcondisabled.svg' : '../../../../assets/images/EditIconEnabled.svg'\" [ngClass]=\"{'disabled': (team.active == false || (currentUserRole == 'B2B Manager' && team?.roles.includes('B2B Owner')) )}\"\r\n alt=\"edit\" data-toggle=\"modal\" data-target=\"#inviteMemberModal\" (click)=\"editMember(dataSource[i])\">\r\n <img placement=\"bottom\" ngbTooltip=\"{{team.active == false ? 'Activate' : 'Deactivate'}}\" [src]=\"team.active == false ? '../../../../assets/images/ActivateIcon.svg' : '../../../../assets/images/DisableIcon.svg' \" [ngClass]=\"{'disabled': (currentUserEmail == team?.displayUid || (currentUserRole == 'B2B Manager' && team?.roles.includes('B2B Owner')))}\"\r\n alt=\"activate\" data-toggle=\"modal\" data-target=\"#memberActivateModal\" (click)=\"changeStatus(dataSource[i])\">\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <mat-paginator appPagination [hidden]=\"myTeamListData && myTeamListData?.length == 0\" [length]=\"testPaginator?.length\" [pageSizeOptions]=\"[20, 40, 60 ]\" (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"isTeamAvailable == 'noData'\">\r\n <div class=\"container noteam-text\">\r\n <div class=\"row justify-content-md-center\">\r\n <div class=\"col-sm-9 col-sm-offset-3\">\r\n <div class=\"text-center\">\r\n <img class=\"mb-4\" src=\"../../../../assets/images/AlertIcon.svg\" alt=\"alert\">\r\n <h3 class=\"mb-2\">Your team list is empty!</h3>\r\n <p>{{myTeamParagraph?.content}}</p>\r\n <button type=\"button\" class=\"btn add-btn\" data-toggle=\"modal\" data-target=\"#inviteMemberModal\" (click)=\"inviteMember()\">Invite Member</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n<div class=\"modal fade\" *ngIf=\"showModal\" id=\"inviteMemberModal\" role=\"dialog\" aria-labelledby=\"inviteMemberLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" role=\"document\" *ngIf=\"showModal\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{isEdit == true ? 'Edit' : 'Invite'}} Member</h5>\r\n <i class=\"icon-close invite-pop-close\" #closeInviteModal data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"clearEdit()\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"register-form\">\r\n <form [formGroup]=\"registerForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"modal-scroll\">\r\n <div class=\"form-group\">\r\n <label class=\"required\">First Name</label>\r\n <input type=\"text\" formControlName=\"firstName\" class=\"form-control\" [ngClass]=\"{ 'is-invalid': submitted && f.firstName.errors }\" [(ngModel)]=\"selectedRowData.firstName\" />\r\n <div *ngIf=\"submitted && f.firstName.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.firstName.errors.required\">First name is required</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Last Name</label>\r\n <input type=\"text\" formControlName=\"lastName\" class=\"form-control\" [ngClass]=\"{ 'is-invalid': submitted && f.lastName.errors }\" [(ngModel)]=\"selectedRowData.lastName\" />\r\n <div *ngIf=\"submitted && f.lastName.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.lastName.errors.required\">Last name is required</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Email</label>\r\n <input type=\"text\" formControlName=\"email\" class=\"form-control\" [ngClass]=\"{ 'is-invalid': submitted && f.email.errors }\" [(ngModel)]=\"selectedRowData.displayUid\" [readonly]=\"isEdit == true\" />\r\n <div *ngIf=\"submitted && f.email.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.email.errors.required\">Email is required</div>\r\n <div *ngIf=\"f.email.errors.email\">Email is invalid</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Mobile</label>\r\n <input inputmode=\"numeric\" type=\"tel\" formControlName=\"mobile\" maxlength=\"16\" class=\"form-control\" [ngClass]=\"{ 'is-invalid': submitted && f.mobile.errors }\" [(ngModel)]=\"selectedRowData.phoneNumber\" (keypress)=\"numberOnly($event)\" (keyup)=\"numberMobile($event)\"\r\n />\r\n <div *ngIf=\"submitted && f.mobile.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.mobile.errors.required\">Mobile is required</div>\r\n <div *ngIf=\"f.mobile.errors.minlength\">\r\n Number must be at least 10 characters\r\n </div>\r\n <div *ngIf=\"f.mobile.errors.maxlength\">\r\n Number must not exceed 16 characters\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Desk Phone</label>\r\n <input inputmode=\"numeric\" type=\"tel\" formControlName=\"deskPhone\" class=\"form-control\" (keypress)=\"numberOnly($event)\" (keyup)=\"numberMobile($event)\" [(ngModel)]=\"selectedRowData.deskPhone\" />\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Job Title</label>\r\n <input type=\"text\" formControlName=\"jobTitle\" class=\"form-control\" [(ngModel)]=\"selectedRowData.jobTitle\" />\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Account</label>\r\n <button [disabled]=\" currentUserEmail == selectedRowData?.displayUid\" [ngClass]=\"{ 'isAccount-invalid': submitted && selectedOrgUnits?.length == 0 }\" class=\"btn account-custom-input position-relative\" type=\"button\" id=\"branchAccountDropdown\" data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i class=\"fas fa-chevron-down account-downarrow float-right\"></i>\r\n Please Select <span *ngIf=\"selectedOrgUnits?.length > 0\"class=\"float-right pr-3\">{{selectedOrgUnits?.length}} Selected</span>\r\n </button>\r\n <div *ngIf=\"selectedOrgUnits?.length == 0 && submitted\" class=\"isInvalid\"> Account is required </div>\r\n <div class=\"dropdown-menu account-dropdown\" aria-labelledby=\"dropdownMenuButton\">\r\n <ul class=\"accounts-list\" *ngIf=\"orgUnits\">\r\n <div *ngFor=\"let unit of orgUnits\">\r\n <li class=\"list-border-bottom\">\r\n <label class=\"accountItem\">\r\n <input type=\"checkbox\" [checked]=\"getCheckedStatuses(unit.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0 form-control\"\r\n (change)=\"checkOrgUnit($event , {uid: unit.uid} )\"\r\n [value]=\"unit.uid\" />\r\n {{unit.name}}\r\n </label>\r\n </li>\r\n <li *ngFor=\"let data of unit?.children; let ind = index\" class=\"sec-child list-border-bottom\">\r\n <div [ngClass]=\"data?.children?.length > 0 ? 'list-border-bottom secPaddingLft' : ''\">\r\n <label class=\"accountItem \">\r\n <input type=\"checkbox\" [checked]=\"getCheckedStatuses(data.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n (change)=\"checkOrgUnit($event , {uid: data.uid} ) \"\r\n [value]=\"data.uid\" />\r\n {{data.name}}\r\n </label>\r\n </div>\r\n\r\n <ul class=\"thrd-child\">\r\n <li *ngFor=\"let child of data?.children\">\r\n <label class=\"accountItem\">\r\n <input type=\"checkbox\" [checked]=\"getCheckedStatuses(child.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n (change)=\"checkOrgUnit($event , {uid: child.uid} )\"\r\n [value]=\"child.uid\" />\r\n {{child.name}}\r\n </label>\r\n <ul *ngIf=\"child && child.children\">\r\n <li *ngFor=\"let check of child?.children\">\r\n <label class=\"accountItem\">\r\n <input type=\"checkbox\"\r\n [checked]=\"getCheckedStatuses(check.uid)\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n (change)=\"checkOrgUnit($event , {uid: check.uid} )\"\r\n [value]=\"check.uid\" />\r\n {{check.name}}\r\n </label>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </li>\r\n </div>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"required\">Roles</label>\r\n <div *ngFor=\"let role of defaultRoles; let i = index;\" class=\"role-checkbox\">\r\n <label>\r\n <input type=\"checkbox\" [value]=\"role.uid\" name=\"role-dropdown-group\"\r\n (change)=\"changeSelection($event, {uid: role.uid})\" class=\"form-control\"\r\n [disabled]=\" currentUserEmail == selectedRowData?.displayUid\" [checked]=\"role?.selected === true\"> {{role?.name}}<br>\r\n </label>\r\n </div>\r\n <div *ngIf=\"selectedItemsList?.length == 0 && submitted\" class=\"isInvalid\"> Role is required </div>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"d-sm-flex justify-content-end d-block btn-mobile-view\">\r\n <button type=\"button\" class=\"btn mobile-cancel-btn dimond-secondary-btn mr-5\" data-dismiss=\"modal\" (click)=\"clearEdit()\">Cancel</button>\r\n <button type=\"submit\" class=\"btn mobile-save-btn dimond-primary-btn float-right\">{{isEdit ? 'Save' : 'Invite'}}</button>\r\n </div>\r\n <div *ngIf=\"isError\" class=\"error-block alert alert-danger justify-content-start\" role=\"alert\">\r\n <img class=\"mr-3\" src=\"../../../../assets/images/erroricon.svg\" alt=\"alert\">\r\n <p>{{errorMessage}}</p>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal fade\" *ngIf=\"showActiveDeactiveModal\" id=\"memberActivateModal\" role=\"dialog\" aria-labelledby=\"memberActivateLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{isActive ? 'Deactivate' : 'Activate'}} Member</h5>\r\n <i class=\"icon-close invite-pop-close\" #closeConfirmModal data-dismiss=\"modal\" aria-label=\"Close\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <span>Are you sure you want to {{isActive ? 'deactivate' : 'activate'}} <b>{{selectedUserName}}</b> from\r\n your team list?</span>\r\n <div class=\"d-block d-sm-flex justify-content-end mobile-action-btn mt-4\">\r\n <button type=\"button\" class=\"btn dimond-secondary-btn mobile-cancel-btn mr-5\" data-dismiss=\"modal\">No</button>\r\n <button type=\"submit\" class=\"btn dimond-primary-btn float-right mobile-save-btn\" (click)=\"updateStatus()\">Yes</button>\r\n </div>\r\n <div *ngIf=\"isError\" class=\"error-block alert alert-danger justify-content-start\" role=\"alert\">\r\n <img class=\"mr-3\" src=\"../../../../assets/images/erroricon.svg\" alt=\"alert\">\r\n <p>{{errorMessage}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal fade\" id=\"accountModal\" role=\"dialog\" aria-labelledby=\"accountLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Accounts</h5>\r\n <i class=\"icon-close invite-pop-close\" data-dismiss=\"modal\" aria-label=\"Close\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <h4>{{selectedUserName}}</h4>\r\n <span>{{userAllAccounts.length + childrenLength}} accounts</span>\r\n <ul class=\"accounts-list account-data-table\">\r\n <li *ngFor=\"let data of userAllAccounts; let i = index;\">\r\n <div class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"indexId py-2\"></span>\r\n <label class=\"index-lebel\" style=\"padding-left: 15px ;\">{{data.name}}</label>\r\n </div>\r\n <div *ngIf=\"data?.children?.length\">\r\n <ul>\r\n <li *ngFor=\"let childrenData of data.children\">\r\n <div class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"indexId py-2\"></span>\r\n <label class=\"index-lebel\" style=\"padding-left: 50px ;\">{{childrenData.name}}</label>\r\n </div>\r\n <div *ngIf=\"childrenData?.children?.length\">\r\n <ul>\r\n <li *ngFor=\"let grandChild of childrenData.children\">\r\n <div class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"indexId py-2\"></span>\r\n <label class=\"index-lebel\" style=\"padding-left: 75px ;\">{{grandChild.name}}</label>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal fade\" id=\"rolesModal\" role=\"dialog\" aria-labelledby=\"accountLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">Roles</h5>\r\n <i class=\"icon-close invite-pop-close\" data-dismiss=\"modal\" aria-label=\"Close\"></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <h4>{{selectedUserName}}</h4>\r\n <span>{{userAllRoles.length}} roles</span>\r\n <div class=\"accounts-list account-data-table\">\r\n <ul>\r\n <li *ngFor=\"let data of userAllRoles; let i = index;\" class=\"d-flex flex-row align-items-center list-border-bottom\">\r\n <span class=\"roleIndex py-2\">{{i+1}}</span>\r\n <span class=\"index-lebel pl-2\">{{data}}</span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ngb-toast *ngIf=\"showToast\" [autohide]=\"true\" [delay]=\"4000\">\r\n <img [src]=\"!isActive ?'../../../../assets/images/ActivateIcon.svg' : '../../../../assets/images/DisableIcon.svg'\"> {{isActive ? 'Deactivated' : 'Activated'}} {{selectedUserName}}\r\n <i class=\"icon-close toast-close\" aria-label=\"Close\" (click)=\"closeToast()\"></i>\r\n</ngb-toast>\r\n<ngb-toast *ngIf=\"createUpdateToast\" [autohide]=\"true\" [delay]=\"4000\">\r\n <img src=\"../../../../assets/images/Invited.svg\"> {{isCreate ? 'One new member invited !' : 'Save was successful'}}\r\n <i class=\"icon-close toast-close\" aria-label=\"Close\" (click)=\"closeUpdateToast()\"></i>\r\n</ngb-toast>", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative;z-index:10}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.isAccount-invalid{border:1px solid var(--cx-color-danger)!important}.isInvalid{color:#db0002;margin-top:.25rem;font-size:.875rem}.team-members{margin:40px 0}.team-members .sort-by .sort-btn{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;height:40px;padding:0 15px;text-transform:none;text-align:left;position:relative}.team-members .sort-by .sort-btn .arrow-down{position:absolute;right:10px}.team-members .sort-by .sort-btn option{height:40px}.team-members .sort-by .dropdown-toggle:after{display:none}.team-members .sort-by .dropdown-menu.show{top:-11px!important;width:200px}.members-count{font-family:\"Arial Bold\",sans-serif;margin-bottom:0}.heading{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:54px;color:#1d1d1b;margin-bottom:25px}.add-btn{text-transform:uppercase;background-color:#1d1d1b;color:#fff;padding:8px 25px;font-size:var(--fontsize14);border:none;border-radius:0;height:40px}.search-input{border:none;border-bottom:1px solid #707070;background-color:transparent}.members-table{margin-top:30px;background-color:#fff}.members-table thead{background-color:#646363}.members-table thead th{color:#fff;text-align:left;font-family:\"Arial Bold\",sans-serif;font-size:var(--fontsize14)}.members-table tr.disabled-text td{color:#8d8d8d}.members-table td{border-bottom:1px solid #E0E0E0;position:relative;color:#1d1d1b}.members-table td i{cursor:pointer}.members-table td .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:200px}.members-table td:first-child{font-family:\"Arial Bold\",sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:100px}.members-table td:nth-child(2){white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:100px}.members-table .viewMore-link{color:#b61828;cursor:pointer;text-decoration:underline}.members-table .action-item{padding-right:30px}.members-table .action-item img{cursor:pointer}.members-table .action-item .disabled{opacity:.5}.status-default,.status-deactive:before,.status-expired:before,.status-pending:before,.status-active:before{content:\"\";width:8px;height:8px;border-radius:50%;position:absolute;left:0px;top:50%;transform:translate(-50%,-50%)}.status-active:before{background-color:#2aa900}.status-pending:before{background-color:#ff7d00}.status-expired:before{background-color:#d0021b}.status-deactive{color:#8d8d8d}.status-deactive:before{background-color:#8d8d8d}.noteam-text{padding:5rem 3rem;display:flex;align-items:center}#inviteMemberModal .modal-header .invite-pop-close,#memberActivateModal .modal-header .invite-pop-close,#rolesModal .modal-header .invite-pop-close,#accountModal .modal-header .invite-pop-close{font-size:var(--fontsize24);font-family:\"Arial Bold\",sans-serif;cursor:pointer}#inviteMemberModal .modal-header .modal-title,#memberActivateModal .modal-header .modal-title,#rolesModal .modal-header .modal-title,#accountModal .modal-header .modal-title{font-size:var(--fontsize28)}.register-form .modal-scroll{max-height:70vh;overflow:auto;padding-right:15px}.register-form .form-group>label{font-family:\"Arial Bold\",sans-serif}.register-form .form-group>.form-control{border-radius:0;font-family:\"Arial Regular\",sans-serif;color:#1d1d1d}.register-form .required:after{content:\" *\";color:#b61828}.register-form .form-control.is-invalid{background-image:none!important}.register-form .role-checkbox{margin-left:36px;position:relative}.register-form .role-checkbox label{display:inline-block;cursor:pointer}.register-form .role-checkbox input[type=checkbox]{accent-color:#B61828;top:-4px}.register-form .account-dropdown .form-check input[type=checkbox]:checked{background-color:#b61828;border-color:#fafafa}.error-block{margin-top:30px;border-radius:3px;padding:10px 40px;text-align:left;font-weight:normal}.error-block .alert-icon{color:#b61828;margin-right:1rem}.error-block p{font-size:13px;margin-bottom:0}.disabled{pointer-events:none}#accountModal .modal-body h4{font-family:\"Arial Bold\",sans-serif}::ng-deep .tooltip-inner{padding:2px 10px!important}::ng-deep .toast{top:20%;left:50%;position:fixed;min-width:500px;max-width:500px;transform:translate(-50%);z-index:9999;background-color:#1d1d1b}::ng-deep .toast .toast-body{color:#fff}::ng-deep .toast .toast-body img{margin-right:10px}::ng-deep .toast .toast-body .toast-close{top:50%;right:5%;position:absolute;transform:translate(-50%,-50%);cursor:pointer}::ng-deep .toast .toast-header{background-color:#1d1d1b;color:#fff;padding:15px;border-radius:0}::ng-deep .toast .toast-header .close{color:#fff;opacity:1;text-shadow:none}::ng-deep .mat-paginator .mat-paginator-range-label{display:none!important}::ng-deep .mat-paginator .mat-icon-button{background-color:#b61828!important}::ng-deep .mat-paginator .mat-mini-fab,::ng-deep .mat-paginator .mat-icon-button{width:30px;height:30px;line-height:30px}::ng-deep .mat-paginator .mat-paginator-page-size-label,::ng-deep .mat-paginator .mat-select-value-text{font-size:var(--fontsize16);color:#1d1d1b;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-select-panel .mat-option-text{font-size:var(--fontsize16)!important;color:#1d1d1b!important;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-container .mat-paginator-page-size{margin-right:40px;align-items:center}::ng-deep .mat-paginator-container .mat-paginator-page-size .mat-paginator-page-size-select{margin:0}::ng-deep .mat-paginator-container .mat-paginator-page-size .mat-form-field-wrapper{padding-bottom:0}::ng-deep .mat-paginator-container .mat-form-field-infix{border:1px solid #E0E0E0;padding:6px;height:40px;display:flex;align-items:center;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-container .mat-form-field-underline{background:none}::ng-deep .mat-paginator-container .mat-form-field-underline .mat-form-field-ripple{display:none}::ng-deep .mat-paginator-container .mat-select-arrow{color:#1d1d1b}::ng-deep .mat-paginator-container .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:#1d1d1b}::ng-deep body .cdk-overlay-container .mat-tooltip{display:none}::ng-deep .mat-paginator-range-actions button{margin:0!important}::ng-deep .mat-paginator-range-actions .mat-icon-button{width:60px;height:40px;line-height:40px;border-radius:0;background-color:#fff!important;color:#1d1d1b!important;border:1px solid #E0E0E0;cursor:pointer}::ng-deep .mat-paginator-range-actions .mat-mini-fab{border-radius:0;margin:0!important;box-shadow:none;height:40px;width:35px;display:flex;align-items:center;justify-content:center;border:1px solid #E0E0E0;font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-range-actions .mat-button-disabled{color:#8d8d8d!important}::ng-deep .mat-paginator-range-actions .mat-paginator-page-size{margin-right:30px}::ng-deep .mat-paginator-range-actions .mat-paginator-icon{display:none}::ng-deep .mat-paginator-range-actions .mat-paginator-navigation-previous .mat-button-wrapper:before{content:\"PREV\";position:absolute;left:50%;top:0;width:auto;transform:translate(-50%);font-family:\"Arial Bold\",sans-serif}::ng-deep .mat-paginator-range-actions .mat-paginator-navigation-next .mat-button-wrapper:before{content:\"NEXT\";position:absolute;left:50%;top:0;width:auto;transform:translate(-50%);font-family:\"Arial Bold\",sans-serif}.accounts-list .list-border-bottom{border-bottom:1px solid #E0E0E0}.accounts-list input[type=checkbox]{margin-top:0}.accounts-list .accountItem{padding:10px 0 10px 45px;margin-bottom:0}.accounts-list .secPaddingLft{margin-left:-50px}.accounts-list .secPaddingLft .accountItem{padding-left:95px}.accounts-list .sec-child{padding-left:50px}.accounts-list .sec-child :last-child{border-bottom:0}.accounts-list .thrd-child{padding-left:50px}.account-data-table{border:1px solid #E0E0E0;max-height:300px;overflow:auto;margin:15px 0;counter-reset:my-sec-counter}.account-data-table .indexId{display:inline-block;padding:0 15px;border-right:1px solid #E0E0E0}.account-data-table .indexId:before{counter-increment:my-sec-counter;content:counter(my-sec-counter)}.account-data-table .roleIndex{display:inline-block;padding:0 15px;border-right:1px solid #E0E0E0}.account-data-table .index-lebel{margin-bottom:0}@media (max-width: 991px) and (min-width: 768px){.modal-lg{max-width:720px!important;min-width:720px!important}.action-item{padding-right:0!important}}@media screen and (max-width: 767px){::ng-deep .CompanyPageTemplate .BodyContent{display:block}.add-btn{width:100%}.team-members .sort-by{display:block!important}.team-members .sort-by .dropdown-menu.show{width:100%!important}.team-members .sort-by .sort-btn{width:100%}.team-members .members-count{margin-bottom:2rem}#accountModal .modal-body,#rolesModal .modal-body,#inviteMemberModal .modal-body,#memberActivateModal .modal-body{padding:1rem}#accountModal .modal-content,#rolesModal .modal-content,#inviteMemberModal .modal-content,#memberActivateModal .modal-content{min-height:100vh}#accountModal .mobile-action-btn,#rolesModal .mobile-action-btn,#inviteMemberModal .mobile-action-btn,#memberActivateModal .mobile-action-btn{position:fixed;bottom:0;left:15px;right:15px}.action-item{padding-right:0!important}.invite-btn-bg{border:2px solid #E0E0E0;width:100%;height:80px;position:fixed;bottom:0;z-index:20;left:0;background:#ffffff;display:flex;align-items:center}.mobile-invite-btn{position:absolute;z-index:9;left:15px;max-width:100%;width:calc(100% - 30px)}.mobile-cancel-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}.mobile-save-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}.btn-mobile-view{position:absolute;bottom:0;max-width:100%;right:20px;left:20px}::ng-deep .toast{min-width:300px;max-width:300px}::ng-deep .mat-paginator-container{display:contents!important}}::ng-deep cx-page-layout.CompanyPageTemplate .BodyContent{margin:0!important}.account-custom-input{background-color:#fff;border:1px solid #E0E0E0;border-radius:0;padding:.375rem .75rem;font-size:var(--fontsize16);line-height:var(--fontsize22);width:100%;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.placeholder-icon{position:relative;right:30px;top:0;z-index:4}::placeholder{color:#fff}.btn:focus{box-shadow:none}.menu .parent-dropdown-item{cursor:pointer}.custom-arrow{position:absolute;right:20px;top:10px}.register-form .dropdown-menu{background-color:#fff;top:-11px!important;left:-5px!important;width:calc(100% - 79px);padding:0}.register-form .dropdown-menu .menu{max-height:28rem;overflow:auto;padding:0 15px}.register-form .dropdown-menu .menu .parent-dropdown-item{background-color:#393939;color:#c6c6c6;border-bottom:1px solid #525252}.register-form .dropdown-menu .menu .parent-dropdown-item.selected{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .accountdata{width:90%;display:inline-block}.register-form .dropdown-menu .menu .parent-dropdown-item .accountIcon{width:10%}.register-form .dropdown-menu .menu .parent-dropdown-item .labelOneChild{padding:7px 0}.register-form .dropdown-menu .menu .parent-dropdown-item .labelOneChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .labelTwoChild{padding:7px 0 7px 15px}.register-form .dropdown-menu .menu .parent-dropdown-item .labelTwoChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .parent-dropdown-item .labelThreeChild{padding:7px 0 7px 30px}.register-form .dropdown-menu .menu .parent-dropdown-item .labelThreeChild:hover{background-color:#474747}.register-form .dropdown-menu .menu .child-menu{padding:0}.register-form .dropdown-menu .menu .child-menu .child-dropdown-item{border-top:1px solid #525252;padding:0}.register-form .dropdown-menu .menu .subchild-menu .subdropdown-item{border-top:1px solid #525252}\n"], components: [{ type: i5.CustomBreadcrumComponent, selector: "app-custom-breadcrum", inputs: ["customCrumbData"] }, { type: i6.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i7.NgbToast, selector: "ngb-toast", inputs: ["delay", "autohide", "animation", "header"], outputs: ["shown", "hidden"], exportAs: ["ngbToast"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i9.AppPaginationDirective, selector: "[appPagination]", inputs: ["showTotalPages"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }], pipes: { "async": i8.AsyncPipe } });
404
423
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MyTeamComponent, decorators: [{
405
424
  type: Component,
406
425
  args: [{
@@ -408,11 +427,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
408
427
  templateUrl: './my-team.component.html',
409
428
  styleUrls: ['./my-team.component.scss'],
410
429
  }]
411
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.TeamMemberService }, { type: i0.ChangeDetectorRef }, { type: i3.CmsService }]; }, propDecorators: { closeConfirmModal: [{
430
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.TeamMemberService }, { type: i0.ChangeDetectorRef }, { type: i3.CmsService }, { type: i4.UserAccountService }]; }, propDecorators: { closeConfirmModal: [{
412
431
  type: ViewChild,
413
432
  args: ['closeConfirmModal']
414
433
  }], closeInviteModal: [{
415
434
  type: ViewChild,
416
435
  args: ['closeInviteModal']
417
436
  }] } });
418
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktdGVhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL215LXRlYW0vbXktdGVhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL215LXRlYW0vbXktdGVhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBUXZDLE1BQU0sT0FBTyxlQUFlO0lBdUQzQixZQUNVLFdBQXdCLEVBQ3hCLGlCQUFvQyxFQUNyQyxFQUFxQixFQUNyQixVQUFzQjtRQUhyQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3JDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF6RC9CLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsa0JBQWEsR0FBRztZQUNkLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDN0MsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtTQUNuRCxDQUFDO1FBQ0YsVUFBSyxHQUFHO1lBQ04sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7WUFDM0MsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7WUFDdkMsRUFBRSxJQUFJLEVBQUUs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LE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUM3Qjs7WUFBTSxPQUFPLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQ0QsVUFBVSxDQUFDLEtBQVU7UUFDbkIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUMzRCxJQUFJLFFBQVEsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRTtZQUN4RCxPQUFPLEtBQUssQ0FBQztTQUNYO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsWUFBWSxDQUFDLENBQU07UUFDakIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OzZHQWxiVyxlQUFlO2lHQUFmLGVBQWUsa1JDWDVCLG1xekJBeVhZOzRGRDlXQyxlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxhQUFhO29CQUN2QixXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxTQUFTLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztpQkFDdkM7MkxBc0RnQyxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNDLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDbXNTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRlYW1NZW1iZXJTZXJ2aWNlIH0gZnJvbSAnLi90ZWFtLW1lbWJlci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLW15LXRlYW0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9teS10ZWFtLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9teS10ZWFtLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNeVRlYW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdHJlZ2lzdGVyRm9ybSE6IEZvcm1Hcm91cDtcclxuXHRzdWJtaXR0ZWQgPSBmYWxzZTtcclxuXHRzb3J0YnlPcHRpb25zID0gW1xyXG5cdCAgeyBuYW1lOiAnTmFtZSAoQXNjZW5kaW5nKScsIHZhbHVlOiAnYnlOYW1lJyB9LFxyXG5cdCAgeyBuYW1lOiAnTmFtZSAoRGVzY2VuZGluZyknLCB2YWx1ZTogJ2J5TmFtZURlc2MnIH0sXHJcblx0XTtcclxuXHRyb2xlcyA9IFtcclxuXHQgIHsgcm9sZTogJ0FkbWluaXN0cmF0b3InLCBpc0NoZWNrZWQ6IGZhbHNlIH0sXHJcblx0ICB7IHJvbGU6ICdQdXJjaGFzZXInLCBpc0NoZWNrZWQ6IGZhbHNlIH0sXHJcblx0ICB7IHJvbGU6ICdBY2NvdW50cycsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHQgIHsgcm9sZTogJ1N1cHBvcnQnLCBpc0NoZWNrZWQ6IGZhbHNlIH0sXHJcblx0XTtcclxuXHRpc1RlYW06IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRpc0VkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRpc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XHJcblx0c2hvd01vZGFsOiBib29sZWFuID0gZmFsc2U7XHJcblx0aXNWaWV3TW9yZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGlzQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcblx0c2hvd1RvYXN0OiBib29sZWFuID0gZmFsc2U7XHJcblx0Y3JlYXRlVXBkYXRlVG9hc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRpc0NyZWF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGJ1dHRvblBsYWNlaG9sZGVyOiBhbnkgPSAnSW52aXRlJztcclxuXHRteVRlYW1MaXN0RGF0YTogYW55ID0gW107XHJcblx0c2VsZWN0ZWRJdGVtc0xpc3Q6IGFueSA9IFtdO1xyXG5cdG15VGVhbVBhcmFncmFwaDogYW55O1xyXG5cdHNlbGVjdGVkUm93RGF0YTogYW55O1xyXG5cdHNlbGVjdGVkVXNlck5hbWU6IGFueTtcclxuXHRzZWxlY3RlZFVpZDogYW55O1xyXG5cdGVycm9yTWVzc2FnZTogYW55O1xyXG5cdHNvcnRCeVZhbHVlOiBhbnk7XHJcblx0ZGF0YVNvdXJjZTogYW55ID0gW107XHJcblx0ZGVmYXVsdFJvbGVzOiBhbnkgPSBbXTtcclxuXHR0ZXN0UGFnaW5hdG9yID0ge1xyXG5cdCAgbGVuZ3RoOiAxMDAsXHJcblx0ICBwYWdlU2l6ZTogMjAsXHJcblx0ICBwYWdlSW5kZXg6IDAsXHJcblx0fTtcclxuXHRvcmdVbml0czogYW55ID0gW107XHJcblx0cGFnZVNpemU6IG51bWJlciA9IDIwO1xyXG5cdGN1cnJlbnRQYWdlOiBudW1iZXIgPSAwO1xyXG5cdHRvdGFsUmVzdWx0czogbnVtYmVyID0gMDtcclxuXHRpc1RlYW1BdmFpbGFibGU6IHN0cmluZyA9ICcnO1xyXG5cdHNlbGVjdGVkU3RhdHVzOiBib29sZWFuID0gZmFsc2U7XHJcblx0c2hvd1dhaXRDdXJzb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHNlbGVjdGVkT3JnVW5pdHM6IGFueSA9IFtdO1xyXG5cdGJyZWFkY3J1bWJEYXRhOiBhbnkgPSBbXTtcclxuXHR0b3RhbFJlY29yZHM6IGFueTtcclxuXHR1c2VyQWxsQWNjb3VudHM6IGFueSA9IFtdO1xyXG5cdHVzZXJBbGxSb2xlczogYW55ID0gW107XHJcblx0dG90YWxMZW5ndGg6IGFueSA9IFtdO1xyXG5cdGNoaWxkcmVuTGVuZ3RoOiBhbnkgPSBbXTtcclxuXHRhY2NvdW50TGVuZ3RoOiBhbnkgPSBbXTtcclxuXHRAVmlld0NoaWxkKCdjbG9zZUNvbmZpcm1Nb2RhbCcpIGNsb3NlQ29uZmlybU1vZGFsOiBhbnk7XHJcblx0QFZpZXdDaGlsZCgnY2xvc2VJbnZpdGVNb2RhbCcpIGNsb3NlSW52aXRlTW9kYWw6IGFueTtcclxuXHRjb25zdHJ1Y3RvcihcclxuXHQgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG5cdCAgcHJpdmF0ZSB0ZWFtTWVtYmVyU2VydmljZTogVGVhbU1lbWJlclNlcnZpY2UsXHJcblx0ICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdCAgcHVibGljIGNtc1NlcnZpY2U6IENtc1NlcnZpY2VcclxuXHQpIHt9XHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0ICB0aGlzLmJyZWFkY3J1bWJEYXRhLnB1c2goXHJcblx0XHR7IHVybDogJy8nLCBuYW1lOiAnSG9tZScgfSxcclxuXHRcdHsgdXJsOiAnLycsIG5hbWU6ICdNeSBUZWFtJyB9XHJcblx0ICApO1xyXG5cdCAgdGhpcy5nZXRUZWFtTGlzdCgpO1xyXG5cdCAgdGhpcy5pbml0aWFsaXplSW52aXRlRm9ybSgpO1xyXG5cdCAgdGhpcy5jbXNTZXJ2aWNlXHJcblx0XHQuZ2V0Q29tcG9uZW50RGF0YSgnVXNlcnNQYWdlUGFyYWdyYXBoQ29tcG9uZW50JylcclxuXHRcdC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuXHRcdCAgdGhpcy5teVRlYW1QYXJhZ3JhcGggPSBkYXRhO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cdGluaXRpYWxpemVJbnZpdGVGb3JtKCkge1xyXG5cdCAgdGhpcy5yZWdpc3RlckZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuXHRcdGZpcnN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG5cdFx0bGFzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuXHRcdGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXHJcblx0XHRtb2JpbGU6IFtcclxuXHRcdCAgJycsXHJcblx0XHQgIFtcclxuXHRcdFx0VmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuXHRcdFx0VmFsaWRhdG9ycy5taW5MZW5ndGgoMTApLFxyXG5cdFx0XHRWYWxpZGF0b3JzLm1heExlbmd0aCgxNiksXHJcblx0XHQgIF0sXHJcblx0XHRdLFxyXG5cdFx0YWNjb3VudDogWycnXSxcclxuXHRcdHJvbGVzOiBbJyddLFxyXG5cdFx0ZGVza1Bob25lOiBbJyddLFxyXG5cdFx0am9iVGl0bGU6IFsnJ10sXHJcblx0ICB9KTtcclxuXHR9XHJcblx0Z2V0VGVhbUxpc3QoKSB7XHJcblx0ICB0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlXHJcblx0XHQuZ2V0TXlUZWFtTGlzdCh0aGlzLnBhZ2VTaXplLCB0aGlzLmN1cnJlbnRQYWdlLCB0aGlzLnNvcnRCeVZhbHVlKVxyXG5cdFx0LnN1YnNjcmliZShcclxuXHRcdCAgKGRhdGE6IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAoZGF0YSAmJiBkYXRhLnVzZXJzICYmIGRhdGEudXNlcnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHQgIHRoaXMuaXNUZWFtID0gdHJ1ZTtcclxuXHRcdFx0ICB0aGlzLmlzVGVhbUF2YWlsYWJsZSA9ICdoYXNEYXRhJztcclxuXHRcdFx0ICB0aGlzLm15VGVhbUxpc3REYXRhID0gZGF0YT8udXNlcnM7XHJcblx0XHRcdCAgdGhpcy5kYXRhU291cmNlID0gZGF0YT8udXNlcnM7XHJcblx0XHRcdCAgdGhpcy50ZXN0UGFnaW5hdG9yLmxlbmd0aCA9IGRhdGEucGFnaW5hdGlvbi50b3RhbFJlc3VsdHM7XHJcblx0XHRcdCAgdGhpcy50b3RhbFJlY29yZHMgPSBkYXRhLnBhZ2luYXRpb24udG90YWxSZXN1bHRzO1xyXG5cdFx0XHQgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0ICB0aGlzLmlzVGVhbUF2YWlsYWJsZSA9ICdub0RhdGEnO1xyXG5cdFx0XHR9XHJcblx0XHQgIH0sXHJcblx0XHQgIChlcnJvcjogYW55KSA9PiB7XHJcblx0XHRcdHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHRcdHRoaXMuaXNUZWFtQXZhaWxhYmxlID0gJ25vRGF0YSc7XHJcblx0XHQgIH1cclxuXHRcdCk7XHJcblx0fVxyXG4gIFxyXG5cdHBhZ2VFdmVudCgkZXZlbnQ6IGFueSkge1xyXG5cdCAgdGhpcy5wYWdlU2l6ZSA9ICRldmVudC5wYWdlU2l6ZTtcclxuXHQgIHRoaXMuY3VycmVudFBhZ2UgPSAkZXZlbnQucGFnZUluZGV4O1xyXG5cdCAgdGhpcy5nZXRUZWFtTGlzdCgpO1xyXG5cdH1cclxuXHRnZXQgZigpIHtcclxuXHQgIHJldHVybiB0aGlzLnJlZ2lzdGVyRm9ybS5jb250cm9scztcclxuXHR9XHJcblx0Y2xlYXJFZGl0KCkge1xyXG5cdCAgdGhpcy5pc0VkaXQgPSBmYWxzZTtcclxuXHQgIHRoaXMuc2VsZWN0ZWRJdGVtc0xpc3QgPSBbXTtcclxuXHQgIHRoaXMub3JnVW5pdHMgPSBudWxsO1xyXG5cdCAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0ICB0aGlzLnNlbGVjdGVkT3JnVW5pdHMgPSBbXTtcclxuXHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0fVxyXG5cdG9uU3VibWl0KCk6IHZvaWQge1xyXG5cdCAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG5cdCAgaWYgKFxyXG5cdFx0dGhpcy5yZWdpc3RlckZvcm0uaW52YWxpZCB8fFxyXG5cdFx0dGhpcy5zZWxlY3RlZE9yZ1VuaXRzLmxlbmd0aCA9PSAwIHx8XHJcblx0XHR0aGlzLnNlbGVjdGVkSXRlbXNMaXN0Lmxlbmd0aCA9PSAwXHJcblx0ICApIHtcclxuXHRcdHJldHVybjtcclxuXHQgIH1cclxuXHQgIGxldCBzZWxlY3RlZFJvbGVzOiBhbnkgPSBbXTtcclxuXHQgIHRoaXMuc2VsZWN0ZWRJdGVtc0xpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcblx0XHRzZWxlY3RlZFJvbGVzLnB1c2goZWxlbWVudC51aWQpO1xyXG5cdCAgfSk7XHJcblx0ICBjb25zdCB7IHZhbHVlIH0gPSB0aGlzLnJlZ2lzdGVyRm9ybTtcclxuXHQgIGxldCB1c2VyID0ge1xyXG5cdFx0Y3VzdG9tZXJJZDogdGhpcy5zZWxlY3RlZFVpZCA/IHRoaXMuc2VsZWN0ZWRVaWQgOiBudWxsLFxyXG5cdFx0dGl0bGVDb2RlOiAnbXInLFxyXG5cdFx0Zmlyc3ROYW1lOiB2YWx1ZT8uZmlyc3ROYW1lLFxyXG5cdFx0bGFzdE5hbWU6IHZhbHVlPy5sYXN0TmFtZSxcclxuXHRcdGVtYWlsOiB2YWx1ZT8uZW1haWwsXHJcblx0XHRwaG9uZU51bWJlcjogdmFsdWU/Lm1vYmlsZSxcclxuXHRcdGFjY291bnRzOiB0aGlzLnNlbGVjdGVkT3JnVW5pdHMsXHJcblx0XHRyb2xlczogc2VsZWN0ZWRSb2xlcyxcclxuXHRcdGRlc2tQaG9uZTogdmFsdWU/LmRlc2tQaG9uZSxcclxuXHRcdGpvYlRpdGxlOiB2YWx1ZT8uam9iVGl0bGUsXHJcblx0ICB9O1xyXG5cdCAgaWYgKCF0aGlzLmlzRWRpdCAmJiB0aGlzLnJlZ2lzdGVyRm9ybS52YWxpZCkge1xyXG5cdFx0ZGVsZXRlIHVzZXIuY3VzdG9tZXJJZDtcclxuXHRcdHRoaXMudGVhbU1lbWJlclNlcnZpY2UuY3JlYXRlTWVtYmVyKHVzZXIpLnN1YnNjcmliZShcclxuXHRcdCAgKHJlcykgPT4ge1xyXG5cdFx0XHR0aGlzLmlzQ3JlYXRlID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5jcmVhdGVVcGRhdGVUb2FzdCA9IHRydWU7XHJcblx0XHRcdHRoaXMuY2xvc2VJbnZpdGVNb2RhbC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcblx0XHRcdHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHRcdHRoaXMuZ2V0VGVhbUxpc3QoKTtcclxuXHRcdFx0dGhpcy5yZWdpc3RlckZvcm0ucmVzZXQoKTtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdCAgdGhpcy5jcmVhdGVVcGRhdGVUb2FzdCA9IGZhbHNlO1xyXG5cdFx0XHR9LCA0MDAwKTtcclxuXHRcdCAgfSxcclxuXHRcdCAgKGVycm9yOiBhbnkpID0+IHtcclxuXHRcdFx0dGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvci5lcnJvcnNbMF0ubWVzc2FnZTtcclxuXHRcdFx0dGhpcy5pc0Vycm9yID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdCAgfVxyXG5cdFx0KTtcclxuXHQgIH0gZWxzZSBpZiAodGhpcy5pc0VkaXQgJiYgdGhpcy5yZWdpc3RlckZvcm0udmFsaWQpIHtcclxuXHRcdHRoaXMudGVhbU1lbWJlclNlcnZpY2UudXBkYXRlTWVtYmVyKHVzZXIpLnN1YnNjcmliZShcclxuXHRcdCAgKHJlcykgPT4ge1xyXG5cdFx0XHR0aGlzLmlzQ3JlYXRlID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuY3JlYXRlVXBkYXRlVG9hc3QgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmNsb3NlSW52aXRlTW9kYWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG5cdFx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0XHR0aGlzLmdldFRlYW1MaXN0KCk7XHJcblx0XHRcdHRoaXMuY2xlYXJFZGl0KCk7XHJcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHQgIHRoaXMuY3JlYXRlVXBkYXRlVG9hc3QgPSBmYWxzZTtcclxuXHRcdFx0fSwgNDAwMCk7XHJcblx0XHQgIH0sXHJcblx0XHQgIChlcnJvcjogYW55KSA9PiB7XHJcblx0XHRcdHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IuZXJyb3IuZXJyb3JzWzBdLm1lc3NhZ2U7XHJcblx0XHRcdHRoaXMuaXNFcnJvciA9IHRydWU7XHJcblx0XHRcdHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHQgIH1cclxuXHRcdCk7XHJcblx0ICB9XHJcbiAgXHJcblx0ICBpZiAodGhpcy5yZWdpc3RlckZvcm0uaW52YWxpZCkge1xyXG5cdFx0cmV0dXJuO1xyXG5cdCAgfVxyXG5cdCAgdGhpcy5pc0Vycm9yID0gZmFsc2U7XHJcblx0fVxyXG5cdGludml0ZU1lbWJlcigpIHtcclxuXHQgIHRoaXMuc2VsZWN0ZWRSb3dEYXRhID0ge307XHJcblx0ICB0aGlzLnNob3dNb2RhbCA9IHRydWU7XHJcblx0ICB0aGlzLmdldEFsbFVuaXRzKCk7XHJcblx0ICB0aGlzLnNlbGVjdGVkVWlkID0gdW5kZWZpbmVkO1xyXG5cdCAgdGhpcy5zZWxlY3RlZE9yZ1VuaXRzID0gW107XHJcblx0ICB0aGlzLmdldFJvbGVzKCk7XHJcblx0ICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG5cdCAgdGhpcy5yZWdpc3RlckZvcm0ucmVzZXQoKTtcclxuXHQgIHRoaXMuaW5pdGlhbGl6ZUludml0ZUZvcm0oKTtcclxuXHQgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHRlZGl0TWVtYmVyKGRhdGE6IGFueSkge1xyXG5cdCAgdGhpcy5zZWxlY3RlZEl0ZW1zTGlzdCA9IFtdO1xyXG5cdCAgdGhpcy5zZWxlY3RlZE9yZ1VuaXRzID0gW107XHJcblx0ICB0aGlzLmlzRWRpdCA9IHRydWU7XHJcblx0ICB0aGlzLnNob3dNb2RhbCA9IHRydWU7XHJcblx0ICB0aGlzLnNlbGVjdGVkUm93RGF0YSA9IGRhdGE7XHJcblx0ICB0aGlzLnNlbGVjdGVkVWlkID0gZGF0YS5jdXN0b21lcklkO1xyXG5cdCAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuXHQgIHRoaXMuZ2V0QWxsVW5pdHMoKTtcclxuXHQgIHRoaXMuZ2V0Um9sZXMoKTtcclxuXHR9XHJcblx0Y2hhbmdlU3RhdHVzKGRhdGE6IGFueSkge1xyXG5cdCAgdGhpcy5zZWxlY3RlZFVzZXJOYW1lID0gZGF0YS5uYW1lO1xyXG5cdCAgdGhpcy5zZWxlY3RlZFVpZCA9IGRhdGEuY3VzdG9tZXJJZDtcclxuXHQgIHRoaXMuc2VsZWN0ZWRTdGF0dXMgPSBkYXRhLmFjdGl2ZTtcclxuXHQgIGlmIChkYXRhLmFjdGl2ZSA9PSB0cnVlKSB7XHJcblx0XHR0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcclxuXHQgIH0gZWxzZSB7XHJcblx0XHR0aGlzLmlzQWN0aXZlID0gZmFsc2U7XHJcblx0ICB9XHJcblx0fVxyXG5cdHVwZGF0ZVN0YXR1cygpIHtcclxuXHQgIGxldCByZXFEYXRhOiBhbnkgPSB7XHJcblx0XHRjdXN0b21lcklkOiB0aGlzLnNlbGVjdGVkVWlkLFxyXG5cdFx0YWN0aXZlOiAhdGhpcy5zZWxlY3RlZFN0YXR1cyxcclxuXHRcdHJvbGVzOiBbXSxcclxuXHQgIH07XHJcblx0ICB0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlLmFjdGl2ZURlYWN0aXZlKHJlcURhdGEpLnN1YnNjcmliZShcclxuXHRcdChyZXMpID0+IHtcclxuXHRcdCAgdGhpcy5zaG93VG9hc3QgPSB0cnVlO1xyXG5cdFx0ICB0aGlzLmNsb3NlQ29uZmlybU1vZGFsLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuXHRcdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdCAgdGhpcy5nZXRUZWFtTGlzdCgpO1xyXG5cdFx0fSxcclxuXHRcdChlcnJvcjogYW55KSA9PiB7XHJcblx0XHQgIHRoaXMuc2hvd1RvYXN0ID0gZmFsc2U7XHJcblx0XHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHR9XHJcblx0ICApO1xyXG5cdCAgc2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHR0aGlzLnNob3dUb2FzdCA9IGZhbHNlO1xyXG5cdCAgfSwgNDAwMCk7XHJcblx0fVxyXG5cdGdldE1vcmVDb3VudChhY2NvdW50RGF0YTogYW55LCB0ZWFtOiBhbnkpIHtcclxuXHQgIHRoaXMudXNlckFsbEFjY291bnRzID0gW107XHJcblx0ICB0aGlzLmNoaWxkcmVuTGVuZ3RoID0gW107XHJcblx0ICB0aGlzLmFjY291bnRMZW5ndGggPSBbXTtcclxuXHQgIHRoaXMudXNlckFsbEFjY291bnRzID0gYWNjb3VudERhdGE7XHJcblx0ICB0aGlzLnVzZXJBbGxBY2NvdW50cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuXHRcdHRoaXMudG90YWxMZW5ndGggPSBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcclxuXHRcdHRoaXMuYWNjb3VudExlbmd0aC5wdXNoKHRoaXMudG90YWxMZW5ndGgpO1xyXG5cdFx0ZWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG5cdFx0ICBpZiAoZWxlLmNoaWxkcmVuKSB7XHJcblx0XHRcdHRoaXMuYWNjb3VudExlbmd0aC5wdXNoKGVsZS5jaGlsZHJlbi5sZW5ndGgpO1xyXG5cdFx0ICB9XHJcblx0XHR9KTtcclxuXHQgIH0pO1xyXG5cdCAgdGhpcy5jaGlsZHJlbkxlbmd0aCA9IHRoaXMuYWNjb3VudExlbmd0aC5yZWR1Y2UoXHJcblx0XHQoYTogYW55LCBiOiBhbnkpID0+IGEgKyBiLFxyXG5cdFx0MFxyXG5cdCAgKTtcclxuXHQgIHJldHVybiB0ZWFtLmFjY291bnRzLmxlbmd0aCArIHRoaXMuY2hpbGRyZW5MZW5ndGggLSAzO1xyXG5cdH1cclxuICBcclxuXHR2aWV3TW9yZShhY2NvdW50RGF0YTogYW55LCBuYW1lOiBzdHJpbmcpIHtcclxuXHQgIHRoaXMudXNlckFsbEFjY291bnRzID0gW107XHJcblx0ICB0aGlzLmNoaWxkcmVuTGVuZ3RoID0gW107XHJcblx0ICB0aGlzLmFjY291bnRMZW5ndGggPSBbXTtcclxuXHQgIHRoaXMuc2VsZWN0ZWRVc2VyTmFtZSA9IG5hbWU7XHJcblx0ICB0aGlzLnVzZXJBbGxBY2NvdW50cyA9IGFjY291bnREYXRhO1xyXG5cdCAgdGhpcy51c2VyQWxsQWNjb3VudHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcblx0XHR0aGlzLnRvdGFsTGVuZ3RoID0gZWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7XHJcblx0XHR0aGlzLmFjY291bnRMZW5ndGgucHVzaCh0aGlzLnRvdGFsTGVuZ3RoKTtcclxuXHRcdGVsZW1lbnQuY2hpbGRyZW4uZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuXHRcdCAgaWYgKGVsZS5jaGlsZHJlbikge1xyXG5cdFx0XHR0aGlzLmFjY291bnRMZW5ndGgucHVzaChlbGUuY2hpbGRyZW4ubGVuZ3RoKTtcclxuXHRcdCAgfVxyXG5cdFx0fSk7XHJcblx0ICB9KTtcclxuXHQgIHRoaXMuY2hpbGRyZW5MZW5ndGggPSB0aGlzLmFjY291bnRMZW5ndGgucmVkdWNlKFxyXG5cdFx0KGE6IGFueSwgYjogYW55KSA9PiBhICsgYixcclxuXHRcdDBcclxuXHQgICk7XHJcblx0fVxyXG5cdHZpZXdNb3JlUm9sZXMocm9sZXNEYXRhOiBhbnksIG5hbWU6IHN0cmluZykge1xyXG5cdCAgdGhpcy51c2VyQWxsUm9sZXMgPSBbXTtcclxuXHQgIHRoaXMuc2VsZWN0ZWRVc2VyTmFtZSA9IG5hbWU7XHJcblx0ICB0aGlzLnVzZXJBbGxSb2xlcyA9IHJvbGVzRGF0YTtcclxuXHR9XHJcbiAgXHJcblx0Y2hhbmdlU2VsZWN0aW9uKGV2ZW50OiBhbnksIGRhdGE6IGFueSkge1xyXG5cdCAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQuY2hlY2tlZCkge1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zTGlzdC5wdXNoKGRhdGEpO1xyXG5cdCAgfSBlbHNlIHtcclxuXHRcdGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRJdGVtc0xpc3QuZmluZEluZGV4KFxyXG5cdFx0ICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LnVpZCA9PSBkYXRhLnVpZFxyXG5cdFx0KTtcclxuXHRcdHRoaXMuc2VsZWN0ZWRJdGVtc0xpc3Quc3BsaWNlKGluZCwgMSk7XHJcblx0ICB9XHJcblx0fVxyXG5cdGZldGNoU2VsZWN0ZWRJdGVtcygpIHtcclxuXHQgIHRoaXMuc2VsZWN0ZWRJdGVtc0xpc3QgPSBbXTtcclxuXHQgIHRoaXMucm9sZXMuZmlsdGVyKCh2YWx1ZSwgaW5kZXgpID0+IHtcclxuXHRcdGlmICh2YWx1ZS5pc0NoZWNrZWQpIHtcclxuXHRcdCAgdGhpcy5zZWxlY3RlZEl0ZW1zTGlzdC5wdXNoKHZhbHVlLnJvbGUpO1xyXG5cdFx0fVxyXG5cdCAgfSk7XHJcblx0fVxyXG4gIFxyXG5cdHNvcnRCeShlOiBhbnkpIHtcclxuXHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuXHQgIHRoaXMuc29ydEJ5VmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcclxuXHQgIHRoaXMudGVhbU1lbWJlclNlcnZpY2Uuc29ydE15VGVhbSh0aGlzLnNvcnRCeVZhbHVlKS5zdWJzY3JpYmUoXHJcblx0XHQocmVzOiBhbnkpID0+IHtcclxuXHRcdCAgdGhpcy5kYXRhU291cmNlID0gcmVzPy51c2VycztcclxuXHRcdCAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdH0sXHJcblx0XHQoZXJyb3IpID0+IHtcclxuXHRcdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdH1cclxuXHQgICk7XHJcblx0fVxyXG4gIFxyXG5cdGF2YWlsYWJsZVVuaXRzKCkge1xyXG5cdCAgdGhpcy50ZWFtTWVtYmVyU2VydmljZS5hdmFpbGFibGVPcmdVbml0cygpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRpZiAoZGF0YSkge1xyXG5cdFx0ICB0aGlzLm9yZ1VuaXRzID0gZGF0YS51bml0Tm9kZXM7XHJcblx0XHR9XHJcblx0ICB9KTtcclxuXHR9XHJcbiAgXHJcblx0Z2V0QWxsVW5pdHMoKSB7XHJcblx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcblx0ICBjb25zdCBkYXRhOiBhbnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQWNjb3VudERhdGEnKTtcclxuXHQgIHRoaXMub3JnVW5pdHMgPSBKU09OLnBhcnNlKGRhdGEpO1xyXG5cdCAgaWYodGhpcy5zZWxlY3RlZFVpZCAhPSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RlZFVpZCkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkUm93RGF0YS5iMmJVbml0cz8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcblx0XHQgIHRoaXMuc2VsZWN0ZWRPcmdVbml0cy5wdXNoKHsgdWlkOiBlbGVtZW50IH0pO1xyXG5cdFx0XHR9KTtcclxuXHQgIH1cclxuXHQgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcblx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdH1cclxuICBcclxuXHRnZXRSb2xlcygpIHtcclxuXHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuXHQgIHRoaXMudGVhbU1lbWJlclNlcnZpY2UuZ2V0QWxsUm9sZXMoKS5zdWJzY3JpYmUoXHJcblx0XHQoZGF0YTogYW55KSA9PiB7XHJcblx0XHQgIGlmIChkYXRhKSB7XHJcblx0XHRcdHRoaXMuZGVmYXVsdFJvbGVzID0gZGF0YTtcclxuXHRcdFx0dGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdFx0dGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkVWlkICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVWlkKSB7XHJcblx0XHRcdCAgdGhpcy5zZWxlY3RlZFJvd0RhdGEucm9sZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5kZWZhdWx0Um9sZXMuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdFx0ICBpZiAoZGF0YS51aWQgPT09IGVsZW1lbnQpIHtcclxuXHRcdFx0XHRcdGRhdGEuc2VsZWN0ZWQgPSB0cnVlO1xyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1zTGlzdC5wdXNoKHsgdWlkOiBlbGVtZW50IH0pO1xyXG5cdFx0XHRcdFx0dGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdFx0XHQgIH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0ICB9KTtcclxuXHRcdFx0fVxyXG5cdFx0ICB9XHJcblx0XHR9LFxyXG5cdFx0KGVycm9yOiBhbnkpID0+IHtcclxuXHRcdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdH1cclxuXHQgICk7XHJcblx0fVxyXG4gIFxyXG5cdGNsb3NlVG9hc3QoKSB7XHJcblx0ICB0aGlzLnNob3dUb2FzdCA9IGZhbHNlO1xyXG5cdCAgcmV0dXJuO1xyXG5cdH1cclxuXHRjbG9zZVVwZGF0ZVRvYXN0KCkge1xyXG5cdCAgdGhpcy5jcmVhdGVVcGRhdGVUb2FzdCA9IGZhbHNlO1xyXG5cdH1cclxuXHRjaGVja09yZ1VuaXQoZXZlbnQ6IGFueSwgZGF0YTogYW55KSB7XHJcblx0ICBpZiAoZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkT3JnVW5pdHMucHVzaChkYXRhKTtcclxuXHQgIH0gZWxzZSB7XHJcblx0XHRjb25zdCBpbmQgPSB0aGlzLnNlbGVjdGVkT3JnVW5pdHMuZmluZEluZGV4KFxyXG5cdFx0ICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LnVpZCA9PSBkYXRhLnVpZFxyXG5cdFx0KTtcclxuXHRcdHRoaXMuc2VsZWN0ZWRPcmdVbml0cy5zcGxpY2UoaW5kLCAxKTtcclxuXHQgIH1cclxuXHR9XHJcblx0Z2V0Q2hlY2tlZFN0YXR1c2VzKGlkOiBhbnkpIHtcclxuXHQgIGlmICh0aGlzLnNlbGVjdGVkVWlkICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVWlkKSB7XHJcblx0XHRsZXQgaW5kID0gdGhpcy5zZWxlY3RlZFJvd0RhdGEuYjJiVW5pdHMuZmluZEluZGV4KFxyXG5cdFx0ICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IGlkXHJcblx0XHQpO1xyXG5cdFx0cmV0dXJuIGluZCA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdCAgfSBlbHNlIHJldHVybiBmYWxzZTtcclxuXHR9XHJcbiAgXHJcblx0Z2V0Q2hlY2tlZFN0YXR1c2VzUm9sZShpZDogYW55KSB7XHJcblx0ICBpZiAodGhpcy5zZWxlY3RlZFVpZCAhPSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RlZFVpZCkge1xyXG5cdFx0bGV0IGluZCA9IHRoaXMuc2VsZWN0ZWRSb3dEYXRhLnJvbGVzLmZpbmRJbmRleChcclxuXHRcdCAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudCA9PSBpZFxyXG5cdFx0KTtcclxuXHRcdHJldHVybiBpbmQgPiAtMSA/IHRydWUgOiBmYWxzZTtcclxuXHQgIH0gZWxzZSByZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cdG51bWJlck9ubHkoZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG5cdCAgY29uc3QgY2hhckNvZGUgPSBldmVudC53aGljaCA/IGV2ZW50LndoaWNoIDogZXZlbnQua2V5Q29kZTtcclxuXHQgIGlmIChjaGFyQ29kZSA+IDMxICYmIChjaGFyQ29kZSA8IDQ4IHx8IGNoYXJDb2RlID4gNTcpKSB7XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0ICB9XHJcblx0ICByZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblx0bnVtYmVyTW9iaWxlKGU6IGFueSkge1xyXG5cdCAgZS50YXJnZXQudmFsdWUgPSBlLnRhcmdldC52YWx1ZS5yZXBsYWNlKC9bXlxcZF0vZywgJycpO1xyXG5cdCAgcmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuICB9XHJcbiIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nIFwiICpuZ0lmPVwic2hvd1dhaXRDdXJzb3IgfCBhc3luYyBcIj5Mb2FkaW5nJiM4MjMwOzwvZGl2PlxyXG48YXBwLWN1c3RvbS1icmVhZGNydW0gW2N1c3RvbUNydW1iRGF0YV09XCJicmVhZGNydW1iRGF0YVwiIGNsYXNzPVwicHJvZHVjdHMtYnJlYWRjdW1zXCI+PC9hcHAtY3VzdG9tLWJyZWFkY3J1bT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVhbUF2YWlsYWJsZSA9PSAnaGFzRGF0YScgXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGVhbS1tZW1iZXJzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTggY29sLTEyIG0tYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgTXkgVGVhbVxyXG4gICAgICAgICAgICAgICAgICAgIDwvaDE+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+e3tteVRlYW1QYXJhZ3JhcGg/LmNvbnRlbnR9fTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00IGNvbC0xMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZpdGUtYnRuLWJnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIG1vYmlsZS1pbnZpdGUtYnRuIGRpbW9uZC1wcmltYXJ5LWJ0blwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjaW52aXRlTWVtYmVyTW9kYWxcIiAoY2xpY2spPVwiaW52aXRlTWVtYmVyKClcIj5JbnZpdGUgTWVtYmVyPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbC0xMiBtLWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24gc29ydC1ieSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1lbWJlcnMtY291bnRcIj57e3RvdGFsUmVjb3Jkc319IG1lbWJlcnMgaW4geW91ciB0ZWFtPC9oNj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwiXCIgaWQ9XCJcIiBjbGFzcz1cInNvcnQtYnRuXCIgKGNoYW5nZSk9XCJzb3J0QnkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJ5TmFtZVwiIHNlbGVjdGVkPlNvcnQgYnk6IE5hbWUgKEFzY2VuZGluZyk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJieU5hbWVEZXNjXCI+U29ydCBieTogTmFtZSAoRGVzY2VuZGluZyk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBtZW1iZXJzLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5OYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+QWNjb3VudDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlJvbGU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5FbWFpbDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPk1vYmlsZSAjPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U3RhdHVzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+QWN0aW9uczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQtdGV4dCc6IHRlYW0uYWN0aXZlID09IGZhbHNlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0ZWFtIG9mIGRhdGFTb3VyY2U7IGxldCBpPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t0ZWFtLm5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJlbGxpcHNpc1wiICpuZ0Zvcj1cImxldCBhY2NvdW50IG9mIHRlYW0/LmFjY291bnRzPy5zbGljZSgwLDMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YWNjb3VudC5uYW1lfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZWFtPy5hY2NvdW50cz8ubGVuZ3RoID4gM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2aWV3TW9yZS1saW5rXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRhcmdldD1cIiNhY2NvdW50TW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdNb3JlKHRlYW0uYWNjb3VudHMsIHRlYW0ubmFtZSlcIj4rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2dldE1vcmVDb3VudCh0ZWFtLmFjY291bnRzLCB0ZWFtKX19IG1vcmU8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcm9sZSBvZiB0ZWFtPy5yb2xlcz8uc2xpY2UoMCwzKVwiPnt7cm9sZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVhbT8ucm9sZXM/Lmxlbmd0aCA+IDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidmlld01vcmUtbGlua1wiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjcm9sZXNNb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld01vcmVSb2xlcyh0ZWFtLnJvbGVzLCB0ZWFtLm5hbWUgKVwiPitcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dGVhbS5yb2xlcy5sZW5ndGggLSAzfX0gbW9yZTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t0ZWFtLmRpc3BsYXlVaWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3RlYW0ucGhvbmVOdW1iZXJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ0ZWFtLmFjdGl2ZSA9PSB0cnVlID8gJ3N0YXR1cy1hY3RpdmUnIDogJ3N0YXR1cy1kZWFjdGl2ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dGVhbS5hY3RpdmUgPT0gdHJ1ZSA/ICdBY3RpdmUnIDogJ0RlYWN0aXZhdGVkJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ0ZWFtLmFjdGl2ZSA9PSBmYWxzZSA/Jy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvRWRpdEljb25kaXNhYmxlZC5zdmcnIDogJy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvRWRpdEljb25FbmFibGVkLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogdGVhbS5hY3RpdmUgPT0gZmFsc2V9XCIgYWx0PVwiZWRpdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNpbnZpdGVNZW1iZXJNb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0TWVtYmVyKGRhdGFTb3VyY2VbaV0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3t0ZWFtLmFjdGl2ZSA9PSBmYWxzZSA/ICdBY3RpdmF0ZScgOiAnRGVhY3RpdmF0ZSd9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwidGVhbS5hY3RpdmUgPT0gZmFsc2UgPyAnLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9BY3RpdmF0ZUljb24uc3ZnJyA6ICcuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0Rpc2FibGVJY29uLnN2ZycgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiYWN0aXZhdGVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjbWVtYmVyQWN0aXZhdGVNb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VTdGF0dXMoZGF0YVNvdXJjZVtpXSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFnaW5hdG9yIGFwcFBhZ2luYXRpb24gW2hpZGRlbl09XCJteVRlYW1MaXN0RGF0YSAmJiBteVRlYW1MaXN0RGF0YT8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cInRlc3RQYWdpbmF0b3I/Lmxlbmd0aFwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwiWzIwLCA0MCwgNjAgXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlKT1cInBhZ2VFdmVudCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiaXNUZWFtQXZhaWxhYmxlID09ICdub0RhdGEnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIG5vdGVhbS10ZXh0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOSBjb2wtc20tb2Zmc2V0LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtYi00XCIgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9BbGVydEljb24uc3ZnXCIgYWx0PVwiYWxlcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtYi0yXCI+WW91ciB0ZWFtIGxpc3QgaXMgZW1wdHkhPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8cD57e215VGVhbVBhcmFncmFwaD8uY29udGVudH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGFkZC1idG5cIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjaW52aXRlTWVtYmVyTW9kYWxcIiAoY2xpY2spPVwiaW52aXRlTWVtYmVyKClcIj5JbnZpdGUgTWVtYmVyPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgaWQ9XCJpbnZpdGVNZW1iZXJNb2RhbFwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJpbnZpdGVNZW1iZXJMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiICpuZ0lmPVwic2hvd01vZGFsXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj57e2lzRWRpdCA9PSB0cnVlID8gJ0VkaXQnIDogJ0ludml0ZSd9fSBNZW1iZXI8L2g1PlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIiAjY2xvc2VJbnZpdGVNb2RhbCBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRWRpdCgpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWdpc3Rlci1mb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJyZWdpc3RlckZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJlcXVpcmVkXCI+Rmlyc3QgTmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZmlyc3ROYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYuZmlyc3ROYW1lLmVycm9ycyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFJvd0RhdGEuZmlyc3ROYW1lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYuZmlyc3ROYW1lLmVycm9yc1wiIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZi5maXJzdE5hbWUuZXJyb3JzLnJlcXVpcmVkXCI+Rmlyc3QgbmFtZSBpcyByZXF1aXJlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyZXF1aXJlZFwiPkxhc3QgTmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwibGFzdE5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5sYXN0TmFtZS5lcnJvcnMgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dEYXRhLmxhc3ROYW1lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYubGFzdE5hbWUuZXJyb3JzXCIgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmLmxhc3ROYW1lLmVycm9ycy5yZXF1aXJlZFwiPkxhc3QgbmFtZSBpcyByZXF1aXJlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyZXF1aXJlZFwiPkVtYWlsPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLmVtYWlsLmVycm9ycyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFJvd0RhdGEuZGlzcGxheVVpZFwiIFtyZWFkb25seV09XCJpc0VkaXQgPT0gdHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLmVtYWlsLmVycm9yc1wiIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZi5lbWFpbC5lcnJvcnMucmVxdWlyZWRcIj5FbWFpbCBpcyByZXF1aXJlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZi5lbWFpbC5lcnJvcnMuZW1haWxcIj5FbWFpbCBpcyBpbnZhbGlkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJlcXVpcmVkXCI+TW9iaWxlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJtb2JpbGVcIiBtYXhsZW5ndGg9XCIxNlwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLm1vYmlsZS5lcnJvcnMgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dEYXRhLnBob25lTnVtYmVyXCIgKGtleXByZXNzKT1cIm51bWJlck9ubHkoJGV2ZW50KVwiIChrZXl1cCk9XCJudW1iZXJNb2JpbGUoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLm1vYmlsZS5lcnJvcnNcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYubW9iaWxlLmVycm9ycy5yZXF1aXJlZFwiPk1vYmlsZSBpcyByZXF1aXJlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZi5tb2JpbGUuZXJyb3JzLm1pbmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyIG11c3QgYmUgYXQgbGVhc3QgMTAgY2hhcmFjdGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYubW9iaWxlLmVycm9ycy5tYXhsZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlciBtdXN0IG5vdCBleGNlZWQgMTYgY2hhcmFjdGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkRlc2sgUGhvbmU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2tQaG9uZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm51bWJlck9ubHkoJGV2ZW50KVwiIChrZXl1cCk9XCJudW1iZXJNb2JpbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFJvd0RhdGEuZGVza1Bob25lXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+Sm9iIFRpdGxlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJqb2JUaXRsZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFJvd0RhdGEuam9iVGl0bGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJlcXVpcmVkXCI+QWNjb3VudDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbbmdDbGFzc109XCJ7ICdpc0FjY291bnQtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBzZWxlY3RlZE9yZ1VuaXRzPy5sZW5ndGggPT0gMCB9XCIgY2xhc3M9XCJidG4gYWNjb3VudC1jdXN0b20taW5wdXQgcG9zaXRpb24tcmVsYXRpdmVcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJicmFuY2hBY2NvdW50RHJvcGRvd25cIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIGFjY291bnQtZG93bmFycm93IGZsb2F0LXJpZ2h0XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2UgU2VsZWN0IDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRPcmdVbml0cz8ubGVuZ3RoID4gMFwiY2xhc3M9XCJmbG9hdC1yaWdodCBwci0zXCI+e3tzZWxlY3RlZE9yZ1VuaXRzPy5sZW5ndGh9fSBTZWxlY3RlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRPcmdVbml0cz8ubGVuZ3RoID09IDAgJiYgc3VibWl0dGVkXCIgY2xhc3M9XCJpc0ludmFsaWRcIj4gQWNjb3VudCBpcyByZXF1aXJlZCA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBhY2NvdW50LWRyb3Bkb3duXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NZW51QnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjY291bnRzLWxpc3RcIiAqbmdJZj1cIm9yZ1VuaXRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB1bml0IG9mIG9yZ1VuaXRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ib3JkZXItYm90dG9tXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhY2NvdW50SXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImdldENoZWNrZWRTdGF0dXNlcyh1bml0LnVpZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wIGZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGVja09yZ1VuaXQoJGV2ZW50ICwge3VpZDogdW5pdC51aWR9IClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ1bml0LnVpZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3VuaXQubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgdW5pdD8uY2hpbGRyZW47IGxldCBpbmQgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VjLWNoaWxkIGxpc3QtYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhPy5jaGlsZHJlbj8ubGVuZ3RoID4gMCA/ICdsaXN0LWJvcmRlci1ib3R0b20gc2VjUGFkZGluZ0xmdCcgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYWNjb3VudEl0ZW0gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImdldENoZWNrZWRTdGF0dXNlcyhkYXRhLnVpZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIiBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hlY2tPcmdVbml0KCRldmVudCAsICB7dWlkOiBkYXRhLnVpZH0gKSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS51aWRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidGhyZC1jaGlsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBkYXRhPy5jaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImFjY291bnRJdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJnZXRDaGVja2VkU3RhdHVzZXMoY2hpbGQudWlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIiBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNoZWNrT3JnVW5pdCgkZXZlbnQgLCAge3VpZDogY2hpbGQudWlkfSAgKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY2hpbGQudWlkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjaGlsZC5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdJZj1cImNoaWxkICYmIGNoaWxkLmNoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2hlY2sgb2YgY2hpbGQ/LmNoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhY2NvdW50SXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkU3RhdHVzZXMoY2hlY2sudWlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGVja09yZ1VuaXQoJGV2ZW50ICwgIHt1aWQ6IGNoZWNrLnVpZH0gIClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY2hlY2sudWlkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NoZWNrLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJlcXVpcmVkXCI+Um9sZXM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvbGUgb2YgZGVmYXVsdFJvbGVzOyBsZXQgaSA9IGluZGV4O1wiIGNsYXNzPVwicm9sZS1jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW3ZhbHVlXT1cInJvbGUudWlkXCIgbmFtZT1cInJvbGUtZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlU2VsZWN0aW9uKCRldmVudCwge3VpZDogcm9sZS51aWR9KVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyb2xlPy5zZWxlY3RlZCA9PT0gdHJ1ZVwiPiB7e3JvbGU/Lm5hbWV9fTxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRJdGVtc0xpc3Q/Lmxlbmd0aCA9PSAwICYmIHN1Ym1pdHRlZFwiIGNsYXNzPVwiaXNJbnZhbGlkXCI+IFJvbGUgaXMgcmVxdWlyZWQgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxocj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtc20tZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGQtYmxvY2sgYnRuLW1vYmlsZS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBtb2JpbGUtY2FuY2VsLWJ0biBkaW1vbmQtc2Vjb25kYXJ5LWJ0biBtci01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJjbGVhckVkaXQoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gbW9iaWxlLXNhdmUtYnRuIGRpbW9uZC1wcmltYXJ5LWJ0biBmbG9hdC1yaWdodFwiPnt7aXNFZGl0ID8gJ1NhdmUnIDogJ0ludml0ZSd9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRXJyb3JcIiBjbGFzcz1cImVycm9yLWJsb2NrIGFsZXJ0IGFsZXJ0LWRhbmdlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIiByb2xlPVwiYWxlcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtci0zXCIgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9lcnJvcmljb24uc3ZnXCIgYWx0PVwiYWxlcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7ZXJyb3JNZXNzYWdlfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgaWQ9XCJtZW1iZXJBY3RpdmF0ZU1vZGFsXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cIm1lbWJlckFjdGl2YXRlTGFiZWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkIG1vZGFsLWxnXCIgcm9sZT1cImRvY3VtZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj57e2lzQWN0aXZlID8gJ0RlYWN0aXZhdGUnIDogJ0FjdGl2YXRlJ319IE1lbWJlcjwvaDU+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24tY2xvc2UgaW52aXRlLXBvcC1jbG9zZVwiICNjbG9zZUNvbmZpcm1Nb2RhbCBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8ge3tpc0FjdGl2ZSA/ICdkZWFjdGl2YXRlJyA6ICdhY3RpdmF0ZSd9fSA8Yj57e3NlbGVjdGVkVXNlck5hbWV9fTwvYj4gZnJvbVxyXG4gICAgICAgICAgICAgICAgICAgIHlvdXIgdGVhbSBsaXN0Pzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWJsb2NrIGQtc20tZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG1vYmlsZS1hY3Rpb24tYnRuIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBkaW1vbmQtc2Vjb25kYXJ5LWJ0biBtb2JpbGUtY2FuY2VsLWJ0biBtci01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5ObzwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGRpbW9uZC1wcmltYXJ5LWJ0biBmbG9hdC1yaWdodCBtb2JpbGUtc2F2ZS1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlU3RhdHVzKClcIj5ZZXM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgaWQ9XCJhY2NvdW50TW9kYWxcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwiYWNjb3VudExhYmVsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+QWNjb3VudHM8L2g1PlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8aDQ+e3tzZWxlY3RlZFVzZXJOYW1lfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t1c2VyQWxsQWNjb3VudHMubGVuZ3RoICsgY2hpbGRyZW5MZW5ndGh9fSBhY2NvdW50czwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjY291bnRzLWxpc3QgYWNjb3VudC1kYXRhLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIHVzZXJBbGxBY2NvdW50czsgbGV0IGkgPSBpbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgbGlzdC1ib3JkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZGV4SWQgcHktMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImluZGV4LWxlYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDE1cHggO1wiPnt7ZGF0YS5uYW1lfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGE/LmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGNoaWxkcmVuRGF0YSBvZiBkYXRhLmNoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyICBsaXN0LWJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5kZXhJZCBweS0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5kZXgtbGViZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA1MHB4IDtcIj57e2NoaWxkcmVuRGF0YS5uYW1lfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNoaWxkcmVuRGF0YT8uY2hpbGRyZW4/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZ3JhbmRDaGlsZCBvZiBjaGlsZHJlbkRhdGEuY2hpbGRyZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgbGlzdC1ib3JkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZGV4SWQgcHktMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImluZGV4LWxlYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctbGVmdDogNzVweCA7XCI+e3tncmFuZENoaWxkLm5hbWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiBpZD1cInJvbGVzTW9kYWxcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwiYWNjb3VudExhYmVsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+Um9sZXM8L2g1PlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8aDQ+e3tzZWxlY3RlZFVzZXJOYW1lfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t1c2VyQWxsUm9sZXMubGVuZ3RofX0gcm9sZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3VudHMtbGlzdCBhY2NvdW50LWRhdGEtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgdXNlckFsbFJvbGVzOyBsZXQgaSA9IGluZGV4O1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBsaXN0LWJvcmRlci1ib3R0b21cIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvbGVJbmRleCBweS0yXCI+e3tpKzF9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5kZXgtbGViZWwgcGwtMlwiPnt7ZGF0YX19PC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZ2ItdG9hc3QgKm5nSWY9XCJzaG93VG9hc3RcIiBbYXV0b2hpZGVdPVwidHJ1ZVwiIFtkZWxheV09XCI0MDAwXCI+XHJcbiAgICA8aW1nIFtzcmNdPVwiIWlzQWN0aXZlID8nLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9BY3RpdmF0ZUljb24uc3ZnJyA6ICcuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0Rpc2FibGVJY29uLnN2ZydcIj5cclxuICAgIHt7aXNBY3RpdmUgPyAnRGVhY3RpdmF0ZWQnIDogJ0FjdGl2YXRlZCd9fSB7e3NlbGVjdGVkVXNlck5hbWV9fVxyXG4gICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIHRvYXN0LWNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImNsb3NlVG9hc3QoKVwiPjwvaT5cclxuPC9uZ2ItdG9hc3Q+XHJcbjxuZ2ItdG9hc3QgKm5nSWY9XCJjcmVhdGVVcGRhdGVUb2FzdFwiIFthdXRvaGlkZV09XCJ0cnVlXCIgW2RlbGF5XT1cIjQwMDBcIj5cclxuICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9JbnZpdGVkLnN2Z1wiPiB7e2lzQ3JlYXRlID8gJ09uZSBuZXcgbWVtYmVyIGludml0ZWQgIScgOiAnU2F2ZSB3YXMgc3VjY2Vzc2Z1bCd9fVxyXG4gICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIHRvYXN0LWNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImNsb3NlVXBkYXRlVG9hc3QoKVwiPjwvaT5cclxuPC9uZ2ItdG9hc3Q+Il19
437
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktdGVhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL215LXRlYW0vbXktdGVhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL215LXRlYW0vbXktdGVhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQVF2QyxNQUFNLE9BQU8sZUFBZTtJQTBEM0IsWUFDVSxXQUF3QixFQUN4QixpQkFBb0MsRUFDckMsRUFBcUIsRUFDckIsVUFBc0IsRUFDdEIsV0FBK0I7UUFKOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNyQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQTdEeEMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixrQkFBYSxHQUFHO1lBQ2QsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUM3QyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO1NBQ25ELENBQUM7UUFDRixVQUFLLEdBQUc7WUFDTixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTtZQUMzQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUs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QUU7WUFDeEQsT0FBTyxLQUFLLENBQUM7U0FDWDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELFlBQVksQ0FBQyxDQUFNO1FBQ2pCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs2R0FyY1csZUFBZTtpR0FBZixlQUFlLGtSQ1o1Qixza3lCQTBWWTs0RkQ5VUMsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3ZDOzROQXlEZ0MsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDQyxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ21zU2VydmljZSB9IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XHJcbmltcG9ydCB7IFVzZXJBY2NvdW50U2VydmljZSB9IGZyb20gJ0BzcGFydGFjdXMvdXNlci9hY2NvdW50L2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVGVhbU1lbWJlclNlcnZpY2UgfSBmcm9tICcuL3RlYW0tbWVtYmVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdsaWItbXktdGVhbScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL215LXRlYW0uY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL215LXRlYW0uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE15VGVhbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0cmVnaXN0ZXJGb3JtITogRm9ybUdyb3VwO1xyXG5cdHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG5cdHNvcnRieU9wdGlvbnMgPSBbXHJcblx0ICB7IG5hbWU6ICdOYW1lIChBc2NlbmRpbmcpJywgdmFsdWU6ICdieU5hbWUnIH0sXHJcblx0ICB7IG5hbWU6ICdOYW1lIChEZXNjZW5kaW5nKScsIHZhbHVlOiAnYnlOYW1lRGVzYycgfSxcclxuXHRdO1xyXG5cdHJvbGVzID0gW1xyXG5cdCAgeyByb2xlOiAnQWRtaW5pc3RyYXRvcicsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHQgIHsgcm9sZTogJ1B1cmNoYXNlcicsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHQgIHsgcm9sZTogJ0FjY291bnRzJywgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG5cdCAgeyByb2xlOiAnU3VwcG9ydCcsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHRdO1xyXG5cdGlzVGVhbTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGlzRWRpdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGlzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRzaG93TW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRpc1ZpZXdNb3JlOiBib29sZWFuID0gZmFsc2U7XHJcblx0aXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRzaG93VG9hc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRjcmVhdGVVcGRhdGVUb2FzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGlzQ3JlYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblx0YnV0dG9uUGxhY2Vob2xkZXI6IGFueSA9ICdJbnZpdGUnO1xyXG5cdG15VGVhbUxpc3REYXRhOiBhbnkgPSBbXTtcclxuXHRzZWxlY3RlZEl0ZW1zTGlzdDogYW55ID0gW107XHJcblx0bXlUZWFtUGFyYWdyYXBoOiBhbnk7XHJcblx0c2VsZWN0ZWRSb3dEYXRhOiBhbnk7XHJcblx0c2VsZWN0ZWRVc2VyTmFtZTogYW55O1xyXG5cdHNlbGVjdGVkVWlkOiBhbnk7XHJcblx0ZXJyb3JNZXNzYWdlOiBhbnk7XHJcblx0c29ydEJ5VmFsdWU6IGFueTtcclxuXHRkYXRhU291cmNlOiBhbnkgPSBbXTtcclxuXHRkZWZhdWx0Um9sZXM6IGFueSA9IFtdO1xyXG5cdHRlc3RQYWdpbmF0b3IgPSB7XHJcblx0ICBsZW5ndGg6IDEwMCxcclxuXHQgIHBhZ2VTaXplOiAyMCxcclxuXHQgIHBhZ2VJbmRleDogMCxcclxuXHR9O1xyXG5cdG9yZ1VuaXRzOiBhbnkgPSBbXTtcclxuXHRwYWdlU2l6ZTogbnVtYmVyID0gMjA7XHJcblx0Y3VycmVudFBhZ2U6IG51bWJlciA9IDA7XHJcblx0dG90YWxSZXN1bHRzOiBudW1iZXIgPSAwO1xyXG5cdGlzVGVhbUF2YWlsYWJsZTogc3RyaW5nID0gJyc7XHJcblx0c2VsZWN0ZWRTdGF0dXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRzaG93V2FpdEN1cnNvciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0c2VsZWN0ZWRPcmdVbml0czogYW55ID0gW107XHJcblx0YnJlYWRjcnVtYkRhdGE6IGFueSA9IFtdO1xyXG5cdHRvdGFsUmVjb3JkczogYW55O1xyXG5cdHVzZXJBbGxBY2NvdW50czogYW55ID0gW107XHJcblx0dXNlckFsbFJvbGVzOiBhbnkgPSBbXTtcclxuXHR0b3RhbExlbmd0aDogYW55ID0gW107XHJcblx0Y2hpbGRyZW5MZW5ndGg6IGFueSA9IFtdO1xyXG5cdGFjY291bnRMZW5ndGg6IGFueSA9IFtdO1xyXG5cdGN1cnJlbnRVc2VyRW1haWw6IGFueTtcclxuXHRjdXJyZW50VXNlclJvbGU6IGFueSA9ICcnO1xyXG4gIFx0c2hvd0FjdGl2ZURlYWN0aXZlTW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRAVmlld0NoaWxkKCdjbG9zZUNvbmZpcm1Nb2RhbCcpIGNsb3NlQ29uZmlybU1vZGFsOiBhbnk7XHJcblx0QFZpZXdDaGlsZCgnY2xvc2VJbnZpdGVNb2RhbCcpIGNsb3NlSW52aXRlTW9kYWw6IGFueTtcclxuXHRjb25zdHJ1Y3RvcihcclxuXHQgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG5cdCAgcHJpdmF0ZSB0ZWFtTWVtYmVyU2VydmljZTogVGVhbU1lbWJlclNlcnZpY2UsXHJcblx0ICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdCAgcHVibGljIGNtc1NlcnZpY2U6IENtc1NlcnZpY2UsXHJcblx0ICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJBY2NvdW50U2VydmljZVxyXG5cdCkge31cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHQgIHRoaXMuYnJlYWRjcnVtYkRhdGEucHVzaChcclxuXHRcdHsgdXJsOiAnLycsIG5hbWU6ICdIb21lJyB9LFxyXG5cdFx0eyB1cmw6ICcvJywgbmFtZTogJ015IFRlYW0nIH1cclxuXHQgICk7XHJcblx0ICB0aGlzLmdldFRlYW1MaXN0KCk7XHJcblx0ICB0aGlzLmluaXRpYWxpemVJbnZpdGVGb3JtKCk7XHJcblx0ICB0aGlzLmNtc1NlcnZpY2VcclxuXHRcdC5nZXRDb21wb25lbnREYXRhKCdVc2Vyc1BhZ2VQYXJhZ3JhcGhDb21wb25lbnQnKVxyXG5cdFx0LnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG5cdFx0ICB0aGlzLm15VGVhbVBhcmFncmFwaCA9IGRhdGE7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMudXNlclNlcnZpY2UuZ2V0KCkuc3Vic2NyaWJlKCAoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdGlmKGRhdGEpIHtcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRVc2VyUm9sZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JvbGUnKTtcclxuXHRcdFx0ICBcdHRoaXMuY3VycmVudFVzZXJFbWFpbCA9IGRhdGE/LmVtYWlsO1xyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH1cclxuXHRpbml0aWFsaXplSW52aXRlRm9ybSgpIHtcclxuXHQgIHRoaXMucmVnaXN0ZXJGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcblx0XHRmaXJzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuXHRcdGxhc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcblx0XHRlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxyXG5cdFx0bW9iaWxlOiBbXHJcblx0XHQgICcnLFxyXG5cdFx0ICBbXHJcblx0XHRcdFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcblx0XHRcdFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSxcclxuXHRcdFx0VmFsaWRhdG9ycy5tYXhMZW5ndGgoMTYpLFxyXG5cdFx0ICBdLFxyXG5cdFx0XSxcclxuXHRcdGFjY291bnQ6IFsnJ10sXHJcblx0XHRyb2xlczogWycnXSxcclxuXHRcdGRlc2tQaG9uZTogWycnXSxcclxuXHRcdGpvYlRpdGxlOiBbJyddLFxyXG5cdCAgfSk7XHJcblx0fVxyXG5cdGdldFRlYW1MaXN0KCkge1xyXG5cdCAgdGhpcy50ZWFtTWVtYmVyU2VydmljZVxyXG5cdFx0LmdldE15VGVhbUxpc3QodGhpcy5wYWdlU2l6ZSwgdGhpcy5jdXJyZW50UGFnZSwgdGhpcy5zb3J0QnlWYWx1ZSlcclxuXHRcdC5zdWJzY3JpYmUoXHJcblx0XHQgIChkYXRhOiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKGRhdGEgJiYgZGF0YS51c2VycyAmJiBkYXRhLnVzZXJzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0ICB0aGlzLmlzVGVhbSA9IHRydWU7XHJcblx0XHRcdCAgdGhpcy5pc1RlYW1BdmFpbGFibGUgPSAnaGFzRGF0YSc7XHJcblx0XHRcdCAgdGhpcy5teVRlYW1MaXN0RGF0YSA9IGRhdGE/LnVzZXJzO1xyXG5cdFx0XHQgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGE/LnVzZXJzO1xyXG5cdFx0XHQgIHRoaXMudGVzdFBhZ2luYXRvci5sZW5ndGggPSBkYXRhLnBhZ2luYXRpb24udG90YWxSZXN1bHRzO1xyXG5cdFx0XHQgIHRoaXMudG90YWxSZWNvcmRzID0gZGF0YS5wYWdpbmF0aW9uLnRvdGFsUmVzdWx0cztcclxuXHRcdFx0ICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0XHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdCAgdGhpcy5pc1RlYW1BdmFpbGFibGUgPSAnbm9EYXRhJztcclxuXHRcdFx0fVxyXG5cdFx0ICB9LFxyXG5cdFx0ICAoZXJyb3I6IGFueSkgPT4ge1xyXG5cdFx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0XHR0aGlzLmlzVGVhbUF2YWlsYWJsZSA9ICdub0RhdGEnO1xyXG5cdFx0ICB9XHJcblx0XHQpO1xyXG5cdH1cclxuICBcclxuXHRwYWdlRXZlbnQoJGV2ZW50OiBhbnkpIHtcclxuXHQgIHRoaXMucGFnZVNpemUgPSAkZXZlbnQucGFnZVNpemU7XHJcblx0ICB0aGlzLmN1cnJlbnRQYWdlID0gJGV2ZW50LnBhZ2VJbmRleDtcclxuXHQgIHRoaXMuZ2V0VGVhbUxpc3QoKTtcclxuXHR9XHJcblx0Z2V0IGYoKSB7XHJcblx0ICByZXR1cm4gdGhpcy5yZWdpc3RlckZvcm0uY29udHJvbHM7XHJcblx0fVxyXG5cdGNsZWFyRWRpdCgpIHtcclxuXHQgIHRoaXMuaXNFZGl0ID0gZmFsc2U7XHJcblx0ICB0aGlzLnNlbGVjdGVkSXRlbXNMaXN0ID0gW107XHJcblx0ICB0aGlzLm9yZ1VuaXRzID0gbnVsbDtcclxuXHQgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdCAgdGhpcy5zZWxlY3RlZE9yZ1VuaXRzID0gW107XHJcblx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdH1cclxuXHRvblN1Ym1pdCgpOiB2b2lkIHtcclxuXHQgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuXHQgIGlmIChcclxuXHRcdHRoaXMucmVnaXN0ZXJGb3JtLmludmFsaWQgfHxcclxuXHRcdHRoaXMuc2VsZWN0ZWRPcmdVbml0cy5sZW5ndGggPT0gMCB8fFxyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zTGlzdC5sZW5ndGggPT0gMFxyXG5cdCAgKSB7XHJcblx0XHRyZXR1cm47XHJcblx0ICB9XHJcblx0ICBsZXQgc2VsZWN0ZWRSb2xlczogYW55ID0gW107XHJcblx0ICB0aGlzLnNlbGVjdGVkSXRlbXNMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG5cdFx0c2VsZWN0ZWRSb2xlcy5wdXNoKGVsZW1lbnQudWlkKTtcclxuXHQgIH0pO1xyXG5cdCAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5yZWdpc3RlckZvcm07XHJcblx0ICBsZXQgdXNlciA9IHtcclxuXHRcdGN1c3RvbWVySWQ6IHRoaXMuc2VsZWN0ZWRVaWQgPyB0aGlzLnNlbGVjdGVkVWlkIDogbnVsbCxcclxuXHRcdHRpdGxlQ29kZTogJ21yJyxcclxuXHRcdGZpcnN0TmFtZTogdmFsdWU/LmZpcnN0TmFtZSxcclxuXHRcdGxhc3ROYW1lOiB2YWx1ZT8ubGFzdE5hbWUsXHJcblx0XHRlbWFpbDogdmFsdWU/LmVtYWlsLFxyXG5cdFx0cGhvbmVOdW1iZXI6IHZhbHVlPy5tb2JpbGUsXHJcblx0XHRhY2NvdW50czogdGhpcy5zZWxlY3RlZE9yZ1VuaXRzLFxyXG5cdFx0cm9sZXM6IHNlbGVjdGVkUm9sZXMsXHJcblx0XHRkZXNrUGhvbmU6IHZhbHVlPy5kZXNrUGhvbmUsXHJcblx0XHRqb2JUaXRsZTogdmFsdWU/LmpvYlRpdGxlLFxyXG5cdCAgfTtcclxuXHQgIGlmICghdGhpcy5pc0VkaXQgJiYgdGhpcy5yZWdpc3RlckZvcm0udmFsaWQpIHtcclxuXHRcdGRlbGV0ZSB1c2VyLmN1c3RvbWVySWQ7XHJcblx0XHR0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlLmNyZWF0ZU1lbWJlcih1c2VyKS5zdWJzY3JpYmUoXHJcblx0XHQgIChyZXMpID0+IHtcclxuXHRcdFx0dGhpcy5pc0NyZWF0ZSA9IHRydWU7XHJcblx0XHRcdHRoaXMuY3JlYXRlVXBkYXRlVG9hc3QgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmNsb3NlSW52aXRlTW9kYWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG5cdFx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0XHR0aGlzLmdldFRlYW1MaXN0KCk7XHJcblx0XHRcdHRoaXMucmVnaXN0ZXJGb3JtLnJlc2V0KCk7XHJcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHQgIHRoaXMuY3JlYXRlVXBkYXRlVG9hc3QgPSBmYWxzZTtcclxuXHRcdFx0fSwgNDAwMCk7XHJcblx0XHQgIH0sXHJcblx0XHQgIChlcnJvcjogYW55KSA9PiB7XHJcblx0XHRcdHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IuZXJyb3IuZXJyb3JzWzBdLm1lc3NhZ2U7XHJcblx0XHRcdHRoaXMuaXNFcnJvciA9IHRydWU7XHJcblx0XHRcdHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0XHQgIH1cclxuXHRcdCk7XHJcblx0ICB9IGVsc2UgaWYgKHRoaXMuaXNFZGl0ICYmIHRoaXMucmVnaXN0ZXJGb3JtLnZhbGlkKSB7XHJcblx0XHR0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlLnVwZGF0ZU1lbWJlcih1c2VyKS5zdWJzY3JpYmUoXHJcblx0XHQgIChyZXMpID0+IHtcclxuXHRcdFx0dGhpcy5pc0NyZWF0ZSA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLmNyZWF0ZVVwZGF0ZVRvYXN0ID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5jbG9zZUludml0ZU1vZGFsLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuXHRcdFx0dGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdFx0dGhpcy5nZXRUZWFtTGlzdCgpO1xyXG5cdFx0XHR0aGlzLmNsZWFyRWRpdCgpO1xyXG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0ICB0aGlzLmNyZWF0ZVVwZGF0ZVRvYXN0ID0gZmFsc2U7XHJcblx0XHRcdH0sIDQwMDApO1xyXG5cdFx0ICB9LFxyXG5cdFx0ICAoZXJyb3I6IGFueSkgPT4ge1xyXG5cdFx0XHR0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLmVycm9yLmVycm9yc1swXS5tZXNzYWdlO1xyXG5cdFx0XHR0aGlzLmlzRXJyb3IgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0ICB9XHJcblx0XHQpO1xyXG5cdCAgfVxyXG4gIFxyXG5cdCAgaWYgKHRoaXMucmVnaXN0ZXJGb3JtLmludmFsaWQpIHtcclxuXHRcdHJldHVybjtcclxuXHQgIH1cclxuXHQgIHRoaXMuaXNFcnJvciA9IGZhbHNlO1xyXG5cdH1cclxuXHRpbnZpdGVNZW1iZXIoKSB7XHJcblx0ICB0aGlzLnNlbGVjdGVkUm93RGF0YSA9IHt9O1xyXG5cdCAgdGhpcy5zaG93TW9kYWwgPSB0cnVlO1xyXG5cdCAgdGhpcy5nZXRBbGxVbml0cygpO1xyXG5cdCAgdGhpcy5zZWxlY3RlZFVpZCA9IHVuZGVmaW5lZDtcclxuXHQgIHRoaXMuc2VsZWN0ZWRPcmdVbml0cyA9IFtdO1xyXG5cdCAgdGhpcy5nZXRSb2xlcygpO1xyXG5cdCAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuXHQgIHRoaXMucmVnaXN0ZXJGb3JtLnJlc2V0KCk7XHJcblx0ICB0aGlzLmluaXRpYWxpemVJbnZpdGVGb3JtKCk7XHJcblx0ICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblx0ZWRpdE1lbWJlcihkYXRhOiBhbnkpIHtcclxuXHQgIGlmKHRoaXMuY3VycmVudFVzZXJFbWFpbCA9PSBkYXRhLmRpc3BsYXlVaWQpIHtcclxuXHRcdFx0dGhpcy5zaG93TW9kYWwgPSBmYWxzZTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdCAgfVxyXG5cdCAgdGhpcy5zZWxlY3RlZEl0ZW1zTGlzdCA9IFtdO1xyXG5cdCAgdGhpcy5zZWxlY3RlZE9yZ1VuaXRzID0gW107XHJcblx0ICB0aGlzLmlzRWRpdCA9IHRydWU7XHJcblx0ICB0aGlzLnNob3dNb2RhbCA9IHRydWU7XHJcblx0ICB0aGlzLnNlbGVjdGVkUm93RGF0YSA9IGRhdGE7XHJcblx0ICB0aGlzLnNlbGVjdGVkVWlkID0gZGF0YS5jdXN0b21lcklkO1xyXG5cdCAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuXHQgIHRoaXMuZ2V0QWxsVW5pdHMoKTtcclxuXHQgIHRoaXMuZ2V0Um9sZXMoKTtcclxuXHR9XHJcblx0Y2hhbmdlU3RhdHVzKGRhdGE6IGFueSkge1xyXG5cdFx0aWYodGhpcy5jdXJyZW50VXNlckVtYWlsID09IGRhdGEuZGlzcGxheVVpZCkge1xyXG5cdFx0dGhpcy5zaG93QWN0aXZlRGVhY3RpdmVNb2RhbCA9IGZhbHNlO1xyXG5cdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdCAgdGhpcy5zZWxlY3RlZFVzZXJOYW1lID0gZGF0YS5uYW1lO1xyXG5cdCAgdGhpcy5zZWxlY3RlZFVpZCA9IGRhdGEuY3VzdG9tZXJJZDtcclxuXHQgIHRoaXMuc2VsZWN0ZWRTdGF0dXMgPSBkYXRhLmFjdGl2ZTtcclxuXHQgIHRoaXMuc2hvd0FjdGl2ZURlYWN0aXZlTW9kYWwgPSB0cnVlO1xyXG5cdCAgaWYgKGRhdGEuYWN0aXZlID09IHRydWUpIHtcclxuXHRcdHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xyXG5cdCAgfSBlbHNlIHtcclxuXHRcdHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcclxuXHQgIH1cclxuXHR9XHJcblx0dXBkYXRlU3RhdHVzKCkge1xyXG5cdCAgbGV0IHJlcURhdGE6IGFueSA9IHtcclxuXHRcdGN1c3RvbWVySWQ6IHRoaXMuc2VsZWN0ZWRVaWQsXHJcblx0XHRhY3RpdmU6ICF0aGlzLnNlbGVjdGVkU3RhdHVzLFxyXG5cdFx0cm9sZXM6IFtdLFxyXG5cdCAgfTtcclxuXHQgIHRoaXMudGVhbU1lbWJlclNlcnZpY2UuYWN0aXZlRGVhY3RpdmUocmVxRGF0YSkuc3Vic2NyaWJlKFxyXG5cdFx0KHJlcykgPT4ge1xyXG5cdFx0ICB0aGlzLnNob3dUb2FzdCA9IHRydWU7XHJcblx0XHQgIHRoaXMuY2xvc2VDb25maXJtTW9kYWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG5cdFx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0ICB0aGlzLmdldFRlYW1MaXN0KCk7XHJcblx0XHR9LFxyXG5cdFx0KGVycm9yOiBhbnkpID0+IHtcclxuXHRcdCAgdGhpcy5zaG93VG9hc3QgPSBmYWxzZTtcclxuXHRcdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuXHRcdH1cclxuXHQgICk7XHJcblx0ICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdHRoaXMuc2hvd1RvYXN0ID0gZmFsc2U7XHJcblx0ICB9LCA0MDAwKTtcclxuXHR9XHJcblx0Z2V0TW9yZUNvdW50KGFjY291bnREYXRhOiBhbnksIHRlYW06IGFueSkge1xyXG5cdCAgdGhpcy51c2VyQWxsQWNjb3VudHMgPSBbXTtcclxuXHQgIHRoaXMuY2hpbGRyZW5MZW5ndGggPSBbXTtcclxuXHQgIHRoaXMuYWNjb3VudExlbmd0aCA9IFtdO1xyXG5cdCAgdGhpcy51c2VyQWxsQWNjb3VudHMgPSBhY2NvdW50RGF0YTtcclxuXHQgIHRoaXMudXNlckFsbEFjY291bnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG5cdFx0dGhpcy50b3RhbExlbmd0aCA9IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoO1xyXG5cdFx0dGhpcy5hY2NvdW50TGVuZ3RoLnB1c2godGhpcy50b3RhbExlbmd0aCk7XHJcblx0XHRlbGVtZW50LmNoaWxkcmVuLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcblx0XHQgIGlmIChlbGUuY2hpbGRyZW4pIHtcclxuXHRcdFx0dGhpcy5hY2NvdW50TGVuZ3RoLnB1c2goZWxlLmNoaWxkcmVuLmxlbmd0aCk7XHJcblx0XHQgIH1cclxuXHRcdH0pO1xyXG5cdCAgfSk7XHJcblx0ICB0aGlzLmNoaWxkcmVuTGVuZ3RoID0gdGhpcy5hY2NvdW50TGVuZ3RoLnJlZHVjZShcclxuXHRcdChhOiBhbnksIGI6IGFueSkgPT4gYSArIGIsXHJcblx0XHQwXHJcblx0ICApO1xyXG5cdCAgcmV0dXJuIHRlYW0uYWNjb3VudHMubGVuZ3RoICsgdGhpcy5jaGlsZHJlbkxlbmd0aCAtIDM7XHJcblx0fVxyXG4gIFxyXG5cdHZpZXdNb3JlKGFjY291bnREYXRhOiBhbnksIG5hbWU6IHN0cmluZykge1xyXG5cdCAgdGhpcy51c2VyQWxsQWNjb3VudHMgPSBbXTtcclxuXHQgIHRoaXMuY2hpbGRyZW5MZW5ndGggPSBbXTtcclxuXHQgIHRoaXMuYWNjb3VudExlbmd0aCA9IFtdO1xyXG5cdCAgdGhpcy5zZWxlY3RlZFVzZXJOYW1lID0gbmFtZTtcclxuXHQgIHRoaXMudXNlckFsbEFjY291bnRzID0gYWNjb3VudERhdGE7XHJcblx0ICB0aGlzLnVzZXJBbGxBY2NvdW50cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuXHRcdHRoaXMudG90YWxMZW5ndGggPSBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcclxuXHRcdHRoaXMuYWNjb3VudExlbmd0aC5wdXNoKHRoaXMudG90YWxMZW5ndGgpO1xyXG5cdFx0ZWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG5cdFx0ICBpZiAoZWxlLmNoaWxkcmVuKSB7XHJcblx0XHRcdHRoaXMuYWNjb3VudExlbmd0aC5wdXNoKGVsZS5jaGlsZHJlbi5sZW5ndGgpO1xyXG5cdFx0ICB9XHJcblx0XHR9KTtcclxuXHQgIH0pO1xyXG5cdCAgdGhpcy5jaGlsZHJlbkxlbmd0aCA9IHRoaXMuYWNjb3VudExlbmd0aC5yZWR1Y2UoXHJcblx0XHQoYTogYW55LCBiOiBhbnkpID0+IGEgKyBiLFxyXG5cdFx0MFxyXG5cdCAgKTtcclxuXHR9XHJcblx0dmlld01vcmVSb2xlcyhyb2xlc0RhdGE6IGFueSwgbmFtZTogc3RyaW5nKSB7XHJcblx0ICB0aGlzLnVzZXJBbGxSb2xlcyA9IFtdO1xyXG5cdCAgdGhpcy5zZWxlY3RlZFVzZXJOYW1lID0gbmFtZTtcclxuXHQgIHRoaXMudXNlckFsbFJvbGVzID0gcm9sZXNEYXRhO1xyXG5cdH1cclxuICBcclxuXHRjaGFuZ2VTZWxlY3Rpb24oZXZlbnQ6IGFueSwgZGF0YTogYW55KSB7XHJcblx0ICBpZiAoZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkSXRlbXNMaXN0LnB1c2goZGF0YSk7XHJcblx0ICB9IGVsc2Uge1xyXG5cdFx0Y29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZEl0ZW1zTGlzdC5maW5kSW5kZXgoXHJcblx0XHQgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudWlkID09IGRhdGEudWlkXHJcblx0XHQpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1zTGlzdC5zcGxpY2UoaW5kLCAxKTtcclxuXHQgIH1cclxuXHR9XHJcblx0ZmV0Y2hTZWxlY3RlZEl0ZW1zKCkge1xyXG5cdCAgdGhpcy5zZWxlY3RlZEl0ZW1zTGlzdCA9IFtdO1xyXG5cdCAgdGhpcy5yb2xlcy5maWx0ZXIoKHZhbHVlLCBpbmRleCkgPT4ge1xyXG5cdFx0aWYgKHZhbHVlLmlzQ2hlY2tlZCkge1xyXG5cdFx0ICB0aGlzLnNlbGVjdGVkSXRlbXNMaXN0LnB1c2godmFsdWUucm9sZSk7XHJcblx0XHR9XHJcblx0ICB9KTtcclxuXHR9XHJcbiAgXHJcblx0c29ydEJ5KGU6IGFueSkge1xyXG5cdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG5cdCAgdGhpcy5zb3J0QnlWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG5cdCAgdGhpcy50ZWFtTWVtYmVyU2VydmljZS5zb3J0TXlUZWFtKHRoaXMuc29ydEJ5VmFsdWUpLnN1YnNjcmliZShcclxuXHRcdChyZXM6IGFueSkgPT4ge1xyXG5cdFx0ICB0aGlzLmRhdGFTb3VyY2UgPSByZXM/LnVzZXJzO1xyXG5cdFx0ICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0fSxcclxuXHRcdChlcnJvcikgPT4ge1xyXG5cdFx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0fVxyXG5cdCAgKTtcclxuXHR9XHJcbiAgXHJcblx0YXZhaWxhYmxlVW5pdHMoKSB7XHJcblx0ICB0aGlzLnRlYW1NZW1iZXJTZXJ2aWNlLmF2YWlsYWJsZU9yZ1VuaXRzKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuXHRcdGlmIChkYXRhKSB7XHJcblx0XHQgIHRoaXMub3JnVW5pdHMgPSBkYXRhLnVuaXROb2RlcztcclxuXHRcdH1cclxuXHQgIH0pO1xyXG5cdH1cclxuICBcclxuXHRnZXRBbGxVbml0cygpIHtcclxuXHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuXHQgIGNvbnN0IGRhdGE6IGFueSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdBY2NvdW50RGF0YScpO1xyXG5cdCAgdGhpcy5vcmdVbml0cyA9IEpTT04ucGFyc2UoZGF0YSk7XHJcblx0ICBpZih0aGlzLnNlbGVjdGVkVWlkICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVWlkKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRSb3dEYXRhLmIyYlVuaXRzPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuXHRcdCAgdGhpcy5zZWxlY3RlZE9yZ1VuaXRzLnB1c2goeyB1aWQ6IGVsZW1lbnQgfSk7XHJcblx0XHRcdH0pO1xyXG5cdCAgfVxyXG5cdCAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHQgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcblx0fVxyXG4gIFxyXG5cdGdldFJvbGVzKCkge1xyXG5cdCAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG5cdCAgdGhpcy50ZWFtTWVtYmVyU2VydmljZS5nZXRBbGxSb2xlcygpLnN1YnNjcmliZShcclxuXHRcdChkYXRhOiBhbnkpID0+IHtcclxuXHRcdCAgaWYgKGRhdGEpIHtcclxuXHRcdFx0dGhpcy5kZWZhdWx0Um9sZXMgPSBkYXRhO1xyXG5cdFx0XHR0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0XHR0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRVaWQgIT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRVaWQpIHtcclxuXHRcdFx0ICB0aGlzLnNlbGVjdGVkUm93RGF0YS5yb2xlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmRlZmF1bHRSb2xlcy5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuXHRcdFx0XHQgIGlmIChkYXRhLnVpZCA9PT0gZWxlbWVudCkge1xyXG5cdFx0XHRcdFx0ZGF0YS5zZWxlY3RlZCA9IHRydWU7XHJcblx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkSXRlbXNMaXN0LnB1c2goeyB1aWQ6IGVsZW1lbnQgfSk7XHJcblx0XHRcdFx0XHR0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0XHRcdCAgfVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHQgIH0pO1xyXG5cdFx0XHR9XHJcblx0XHQgIH1cclxuXHRcdH0sXHJcblx0XHQoZXJyb3I6IGFueSkgPT4ge1xyXG5cdFx0ICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG5cdFx0fVxyXG5cdCAgKTtcclxuXHR9XHJcbiAgXHJcblx0Y2xvc2VUb2FzdCgpIHtcclxuXHQgIHRoaXMuc2hvd1RvYXN0ID0gZmFsc2U7XHJcblx0ICByZXR1cm47XHJcblx0fVxyXG5cdGNsb3NlVXBkYXRlVG9hc3QoKSB7XHJcblx0ICB0aGlzLmNyZWF0ZVVwZGF0ZVRvYXN0ID0gZmFsc2U7XHJcblx0fVxyXG5cdGNoZWNrT3JnVW5pdChldmVudDogYW55LCBkYXRhOiBhbnkpIHtcclxuXHQgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRPcmdVbml0cy5wdXNoKGRhdGEpO1xyXG5cdCAgfSBlbHNlIHtcclxuXHRcdGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRPcmdVbml0cy5maW5kSW5kZXgoXHJcblx0XHQgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudWlkID09IGRhdGEudWlkXHJcblx0XHQpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZE9yZ1VuaXRzLnNwbGljZShpbmQsIDEpO1xyXG5cdCAgfVxyXG5cdH1cclxuXHRnZXRDaGVja2VkU3RhdHVzZXMoaWQ6IGFueSkge1xyXG5cdCAgaWYgKHRoaXMuc2VsZWN0ZWRVaWQgIT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRVaWQpIHtcclxuXHRcdGxldCBpbmQgPSB0aGlzLnNlbGVjdGVkUm93RGF0YS5iMmJVbml0cy5maW5kSW5kZXgoXHJcblx0XHQgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQgPT0gaWRcclxuXHRcdCk7XHJcblx0XHRyZXR1cm4gaW5kID4gLTEgPyB0cnVlIDogZmFsc2U7XHJcblx0ICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuICBcclxuXHRnZXRDaGVja2VkU3RhdHVzZXNSb2xlKGlkOiBhbnkpIHtcclxuXHQgIGlmICh0aGlzLnNlbGVjdGVkVWlkICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVWlkKSB7XHJcblx0XHRsZXQgaW5kID0gdGhpcy5zZWxlY3RlZFJvd0RhdGEucm9sZXMuZmluZEluZGV4KFxyXG5cdFx0ICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IGlkXHJcblx0XHQpO1xyXG5cdFx0cmV0dXJuIGluZCA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdCAgfSBlbHNlIHJldHVybiBmYWxzZTtcclxuXHR9XHJcblx0bnVtYmVyT25seShldmVudDogYW55KTogYm9vbGVhbiB7XHJcblx0ICBjb25zdCBjaGFyQ29kZSA9IGV2ZW50LndoaWNoID8gZXZlbnQud2hpY2ggOiBldmVudC5rZXlDb2RlO1xyXG5cdCAgaWYgKGNoYXJDb2RlID4gMzEgJiYgKGNoYXJDb2RlIDwgNDggfHwgY2hhckNvZGUgPiA1NykpIHtcclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHQgIH1cclxuXHQgIHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHRudW1iZXJNb2JpbGUoZTogYW55KSB7XHJcblx0ICBlLnRhcmdldC52YWx1ZSA9IGUudGFyZ2V0LnZhbHVlLnJlcGxhY2UoL1teXFxkXS9nLCAnJyk7XHJcblx0ICByZXR1cm4gZmFsc2U7XHJcblx0fVxyXG4gIH1cclxuIiwiPGRpdiBjbGFzcz1cImxvYWRpbmcgXCIgKm5nSWY9XCJzaG93V2FpdEN1cnNvciB8IGFzeW5jIFwiPkxvYWRpbmcmIzgyMzA7PC9kaXY+XHJcbjxhcHAtY3VzdG9tLWJyZWFkY3J1bSBbY3VzdG9tQ3J1bWJEYXRhXT1cImJyZWFkY3J1bWJEYXRhXCIgY2xhc3M9XCJwcm9kdWN0cy1icmVhZGN1bXNcIj48L2FwcC1jdXN0b20tYnJlYWRjcnVtPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiaXNUZWFtQXZhaWxhYmxlID09ICdoYXNEYXRhJyBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZWFtLW1lbWJlcnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOCBjb2wtMTIgbS1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNeSBUZWFtXHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMT5cclxuICAgICAgICAgICAgICAgICAgICA8cD57e215VGVhbVBhcmFncmFwaD8uY29udGVudH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTQgY29sLTEyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludml0ZS1idG4tYmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gbW9iaWxlLWludml0ZS1idG4gZGltb25kLXByaW1hcnktYnRuXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2ludml0ZU1lbWJlck1vZGFsXCIgKGNsaWNrKT1cImludml0ZU1lbWJlcigpXCI+SW52aXRlIE1lbWJlcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtMTIgbS1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIHNvcnQtYnkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJtZW1iZXJzLWNvdW50XCI+e3t0b3RhbFJlY29yZHN9fSBtZW1iZXJzIGluIHlvdXIgdGVhbTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIlwiIGlkPVwiXCIgY2xhc3M9XCJzb3J0LWJ0blwiIChjaGFuZ2UpPVwic29ydEJ5KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJieU5hbWVcIiBzZWxlY3RlZD5Tb3J0IGJ5OiBOYW1lIChBc2NlbmRpbmcpPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYnlOYW1lRGVzY1wiPlNvcnQgYnk6IE5hbWUgKERlc2NlbmRpbmcpPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgbWVtYmVycy10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+TmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkFjY291bnQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Sb2xlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+RW1haWw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Nb2JpbGUgIzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlN0YXR1czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBbbmdDbGFzc109XCJ7J2Rpc2FibGVkLXRleHQnOiB0ZWFtLmFjdGl2ZSA9PSBmYWxzZX1cIiAqbmdGb3I9XCJsZXQgdGVhbSBvZiBkYXRhU291cmNlOyBsZXQgaT0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7dGVhbS5uYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZWxsaXBzaXNcIiAqbmdGb3I9XCJsZXQgYWNjb3VudCBvZiB0ZWFtPy5hY2NvdW50cz8uc2xpY2UoMCwzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2FjY291bnQubmFtZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVhbT8uYWNjb3VudHM/Lmxlbmd0aCA+IDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidmlld01vcmUtbGlua1wiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNhY2NvdW50TW9kYWxcIiAoY2xpY2spPVwidmlld01vcmUodGVhbS5hY2NvdW50cywgdGVhbS5uYW1lKVwiPisge3tnZXRNb3JlQ291bnQodGVhbS5hY2NvdW50cywgdGVhbSl9fSBtb3JlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJvbGUgb2YgdGVhbT8uZGlzcGxheVJvbGVzPy5zbGljZSgwLDMpXCI+e3tyb2xlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZWFtPy5kaXNwbGF5Um9sZXM/Lmxlbmd0aCA+IDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidmlld01vcmUtbGlua1wiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNyb2xlc01vZGFsXCIgKGNsaWNrKT1cInZpZXdNb3JlUm9sZXModGVhbS5kaXNwbGF5Um9sZXMsIHRlYW0ubmFtZSApXCI+KyB7e3RlYW0uZGlzcGxheVJvbGVzLmxlbmd0aCAtIDN9fSBtb3JlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3RlYW0uZGlzcGxheVVpZH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7dGVhbS5waG9uZU51bWJlcn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInRlYW0uYWN0aXZlID09IHRydWUgPyAnc3RhdHVzLWFjdGl2ZScgOiAnc3RhdHVzLWRlYWN0aXZlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t0ZWFtLmFjdGl2ZSA9PSB0cnVlID8gJ0FjdGl2ZScgOiAnRGVhY3RpdmF0ZWQnfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInRlYW0uYWN0aXZlID09IGZhbHNlIHx8IChjdXJyZW50VXNlclJvbGUgPT0gJ0IyQiBNYW5hZ2VyJyAmJiB0ZWFtPy5yb2xlcy5pbmNsdWRlcygnQjJCIE93bmVyJykpID8nLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9FZGl0SWNvbmRpc2FibGVkLnN2ZycgOiAnLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9FZGl0SWNvbkVuYWJsZWQuc3ZnJ1wiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiAodGVhbS5hY3RpdmUgPT0gZmFsc2UgIHx8IChjdXJyZW50VXNlclJvbGUgPT0gJ0IyQiBNYW5hZ2VyJyAmJiB0ZWFtPy5yb2xlcy5pbmNsdWRlcygnQjJCIE93bmVyJykpICl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiZWRpdFwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNpbnZpdGVNZW1iZXJNb2RhbFwiIChjbGljayk9XCJlZGl0TWVtYmVyKGRhdGFTb3VyY2VbaV0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBwbGFjZW1lbnQ9XCJib3R0b21cIiBuZ2JUb29sdGlwPVwie3t0ZWFtLmFjdGl2ZSA9PSBmYWxzZSA/ICdBY3RpdmF0ZScgOiAnRGVhY3RpdmF0ZSd9fVwiIFtzcmNdPVwidGVhbS5hY3RpdmUgPT0gZmFsc2UgPyAnLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9BY3RpdmF0ZUljb24uc3ZnJyA6ICcuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0Rpc2FibGVJY29uLnN2ZycgXCIgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IChjdXJyZW50VXNlckVtYWlsID09IHRlYW0/LmRpc3BsYXlVaWQgfHwgKGN1cnJlbnRVc2VyUm9sZSA9PSAnQjJCIE1hbmFnZXInICYmIHRlYW0/LnJvbGVzLmluY2x1ZGVzKCdCMkIgT3duZXInKSkpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImFjdGl2YXRlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI21lbWJlckFjdGl2YXRlTW9kYWxcIiAoY2xpY2spPVwiY2hhbmdlU3RhdHVzKGRhdGFTb3VyY2VbaV0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhZ2luYXRvciBhcHBQYWdpbmF0aW9uIFtoaWRkZW5dPVwibXlUZWFtTGlzdERhdGEgJiYgbXlUZWFtTGlzdERhdGE/Lmxlbmd0aCA9PSAwXCIgW2xlbmd0aF09XCJ0ZXN0UGFnaW5hdG9yPy5sZW5ndGhcIiBbcGFnZVNpemVPcHRpb25zXT1cIlsyMCwgNDAsIDYwIF1cIiAocGFnZSk9XCJwYWdlRXZlbnQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhZ2luYXRvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVhbUF2YWlsYWJsZSA9PSAnbm9EYXRhJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBub3RlYW0tdGV4dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LW1kLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTkgY29sLXNtLW9mZnNldC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibWItNFwiIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvQWxlcnRJY29uLnN2Z1wiIGFsdD1cImFsZXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibWItMlwiPllvdXIgdGVhbSBsaXN0IGlzIGVtcHR5ITwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+e3tteVRlYW1QYXJhZ3JhcGg/LmNvbnRlbnR9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBhZGQtYnRuXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2ludml0ZU1lbWJlck1vZGFsXCIgKGNsaWNrKT1cImludml0ZU1lbWJlcigpXCI+SW52aXRlIE1lbWJlcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiICpuZ0lmPVwic2hvd01vZGFsXCIgaWQ9XCJpbnZpdGVNZW1iZXJNb2RhbFwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJpbnZpdGVNZW1iZXJMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiICpuZ0lmPVwic2hvd01vZGFsXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj57e2lzRWRpdCA9PSB0cnVlID8gJ0VkaXQnIDogJ0ludml0ZSd9fSBNZW1iZXI8L2g1PlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIiAjY2xvc2VJbnZpdGVNb2RhbCBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJjbGVhckVkaXQoKVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVnaXN0ZXItZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwicmVnaXN0ZXJGb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyZXF1aXJlZFwiPkZpcnN0IE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImZpcnN0TmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLmZpcnN0TmFtZS5lcnJvcnMgfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dEYXRhLmZpcnN0TmFtZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLmZpcnN0TmFtZS5lcnJvcnNcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYuZmlyc3ROYW1lLmVycm9ycy5yZXF1aXJlZFwiPkZpcnN0IG5hbWUgaXMgcmVxdWlyZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicmVxdWlyZWRcIj5MYXN0IE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImxhc3ROYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYubGFzdE5hbWUuZXJyb3JzIH1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUm93RGF0YS5sYXN0TmFtZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLmxhc3ROYW1lLmVycm9yc1wiIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZi5sYXN0TmFtZS5lcnJvcnMucmVxdWlyZWRcIj5MYXN0IG5hbWUgaXMgcmVxdWlyZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicmVxdWlyZWRcIj5FbWFpbDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5lbWFpbC5lcnJvcnMgfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dEYXRhLmRpc3BsYXlVaWRcIiBbcmVhZG9ubHldPVwiaXNFZGl0ID09IHRydWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5lbWFpbC5lcnJvcnNcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLnJlcXVpcmVkXCI+RW1haWwgaXMgcmVxdWlyZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLmVtYWlsXCI+RW1haWwgaXMgaW52YWxpZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyZXF1aXJlZFwiPk1vYmlsZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlucHV0bW9kZT1cIm51bWVyaWNcIiB0eXBlPVwidGVsXCIgZm9ybUNvbnRyb2xOYW1lPVwibW9iaWxlXCIgbWF4bGVuZ3RoPVwiMTZcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5tb2JpbGUuZXJyb3JzIH1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUm93RGF0YS5waG9uZU51bWJlclwiIChrZXlwcmVzcyk9XCJudW1iZXJPbmx5KCRldmVudClcIiAoa2V5dXApPVwibnVtYmVyTW9iaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLm1vYmlsZS5lcnJvcnNcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYubW9iaWxlLmVycm9ycy5yZXF1aXJlZFwiPk1vYmlsZSBpcyByZXF1aXJlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZi5tb2JpbGUuZXJyb3JzLm1pbmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyIG11c3QgYmUgYXQgbGVhc3QgMTAgY2hhcmFjdGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImYubW9iaWxlLmVycm9ycy5tYXhsZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlciBtdXN0IG5vdCBleGNlZWQgMTYgY2hhcmFjdGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkRlc2sgUGhvbmU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpbnB1dG1vZGU9XCJudW1lcmljXCIgdHlwZT1cInRlbFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2tQaG9uZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGtleXByZXNzKT1cIm51bWJlck9ubHkoJGV2ZW50KVwiIChrZXl1cCk9XCJudW1iZXJNb2JpbGUoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dEYXRhLmRlc2tQaG9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Kb2IgVGl0bGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImpvYlRpdGxlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUm93RGF0YS5qb2JUaXRsZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJlcXVpcmVkXCI+QWNjb3VudDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIGN1cnJlbnRVc2VyRW1haWwgPT0gc2VsZWN0ZWRSb3dEYXRhPy5kaXNwbGF5VWlkXCIgW25nQ2xhc3NdPVwieyAnaXNBY2NvdW50LWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgc2VsZWN0ZWRPcmdVbml0cz8ubGVuZ3RoID09IDAgfVwiIGNsYXNzPVwiYnRuIGFjY291bnQtY3VzdG9tLWlucHV0IHBvc2l0aW9uLXJlbGF0aXZlXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwiYnJhbmNoQWNjb3VudERyb3Bkb3duXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBhY2NvdW50LWRvd25hcnJvdyBmbG9hdC1yaWdodFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIFNlbGVjdCA8c3BhbiAqbmdJZj1cInNlbGVjdGVkT3JnVW5pdHM/Lmxlbmd0aCA+IDBcImNsYXNzPVwiZmxvYXQtcmlnaHQgcHItM1wiPnt7c2VsZWN0ZWRPcmdVbml0cz8ubGVuZ3RofX0gU2VsZWN0ZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkT3JnVW5pdHM/Lmxlbmd0aCA9PSAwICYmIHN1Ym1pdHRlZFwiIGNsYXNzPVwiaXNJbnZhbGlkXCI+IEFjY291bnQgaXMgcmVxdWlyZWQgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgYWNjb3VudC1kcm9wZG93blwiIGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duTWVudUJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY2NvdW50cy1saXN0XCIgKm5nSWY9XCJvcmdVbml0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdW5pdCBvZiBvcmdVbml0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhY2NvdW50SXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImdldENoZWNrZWRTdGF0dXNlcyh1bml0LnVpZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wIGZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGVja09yZ1VuaXQoJGV2ZW50ICwge3VpZDogdW5pdC51aWR9IClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ1bml0LnVpZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3VuaXQubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgdW5pdD8uY2hpbGRyZW47IGxldCBpbmQgPSBpbmRleFwiIGNsYXNzPVwic2VjLWNoaWxkIGxpc3QtYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImRhdGE/LmNoaWxkcmVuPy5sZW5ndGggPiAwID8gJ2xpc3QtYm9yZGVyLWJvdHRvbSBzZWNQYWRkaW5nTGZ0JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhY2NvdW50SXRlbSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZFN0YXR1c2VzKGRhdGEudWlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGVja09yZ1VuaXQoJGV2ZW50ICwgIHt1aWQ6IGRhdGEudWlkfSApIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnVpZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ0aHJkLWNoaWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGRhdGE/LmNoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYWNjb3VudEl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImdldENoZWNrZWRTdGF0dXNlcyhjaGlsZC51aWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hlY2tPcmdVbml0KCRldmVudCAsICB7dWlkOiBjaGlsZC51aWR9ICApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjaGlsZC51aWRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NoaWxkLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiY2hpbGQgJiYgY2hpbGQuY2hpbGRyZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjaGVjayBvZiBjaGlsZD8uY2hpbGRyZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImFjY291bnRJdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRTdGF0dXNlcyhjaGVjay51aWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCIgY2xhc3M9XCJyb3VuZGVkLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNoZWNrT3JnVW5pdCgkZXZlbnQgLCAge3VpZDogY2hlY2sudWlkfSAgKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjaGVjay51aWRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2hlY2submFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicmVxdWlyZWRcIj5Sb2xlczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm9sZSBvZiBkZWZhdWx0Um9sZXM7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJyb2xlLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbdmFsdWVdPVwicm9sZS51aWRcIiBuYW1lPVwicm9sZS1kcm9wZG93bi1ncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VTZWxlY3Rpb24oJGV2ZW50LCB7dWlkOiByb2xlLnVpZH0pXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiBjdXJyZW50VXNlckVtYWlsID09IHNlbGVjdGVkUm93RGF0YT8uZGlzcGxheVVpZFwiIFtjaGVja2VkXT1cInJvbGU/LnNlbGVjdGVkID09PSB0cnVlXCI+IHt7cm9sZT8ubmFtZX19PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEl0ZW1zTGlzdD8ubGVuZ3RoID09IDAgJiYgc3VibWl0dGVkXCIgY2xhc3M9XCJpc0ludmFsaWRcIj4gUm9sZSBpcyByZXF1aXJlZCA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGhyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1zbS1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgZC1ibG9jayBidG4tbW9iaWxlLXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIG1vYmlsZS1jYW5jZWwtYnRuIGRpbW9uZC1zZWNvbmRhcnktYnRuIG1yLTVcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJjbGVhckVkaXQoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gbW9iaWxlLXNhdmUtYnRuIGRpbW9uZC1wcmltYXJ5LWJ0biBmbG9hdC1yaWdodFwiPnt7aXNFZGl0ID8gJ1NhdmUnIDogJ0ludml0ZSd9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRXJyb3JcIiBjbGFzcz1cImVycm9yLWJsb2NrIGFsZXJ0IGFsZXJ0LWRhbmdlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIiByb2xlPVwiYWxlcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtci0zXCIgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9lcnJvcmljb24uc3ZnXCIgYWx0PVwiYWxlcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7ZXJyb3JNZXNzYWdlfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgKm5nSWY9XCJzaG93QWN0aXZlRGVhY3RpdmVNb2RhbFwiIGlkPVwibWVtYmVyQWN0aXZhdGVNb2RhbFwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJtZW1iZXJBY3RpdmF0ZUxhYmVsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+e3tpc0FjdGl2ZSA/ICdEZWFjdGl2YXRlJyA6ICdBY3RpdmF0ZSd9fSBNZW1iZXI8L2g1PlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIiAjY2xvc2VDb25maXJtTW9kYWwgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHt7aXNBY3RpdmUgPyAnZGVhY3RpdmF0ZScgOiAnYWN0aXZhdGUnfX0gPGI+e3tzZWxlY3RlZFVzZXJOYW1lfX08L2I+IGZyb21cclxuICAgICAgICAgICAgICAgICAgICB5b3VyIHRlYW0gbGlzdD88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ibG9jayBkLXNtLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtb2JpbGUtYWN0aW9uLWJ0biBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gZGltb25kLXNlY29uZGFyeS1idG4gbW9iaWxlLWNhbmNlbC1idG4gbXItNVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Tm88L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBkaW1vbmQtcHJpbWFyeS1idG4gZmxvYXQtcmlnaHQgbW9iaWxlLXNhdmUtYnRuXCIgKGNsaWNrKT1cInVwZGF0ZVN0YXR1cygpXCI+WWVzPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0Vycm9yXCIgY2xhc3M9XCJlcnJvci1ibG9jayBhbGVydCBhbGVydC1kYW5nZXIganVzdGlmeS1jb250ZW50LXN0YXJ0XCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm1yLTNcIiBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Vycm9yaWNvbi5zdmdcIiBhbHQ9XCJhbGVydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPnt7ZXJyb3JNZXNzYWdlfX08L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiIGlkPVwiYWNjb3VudE1vZGFsXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cImFjY291bnRMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctY2VudGVyZWQgbW9kYWwtbGdcIiByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkFjY291bnRzPC9oNT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi1jbG9zZSBpbnZpdGUtcG9wLWNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPGg0Pnt7c2VsZWN0ZWRVc2VyTmFtZX19PC9oND5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7dXNlckFsbEFjY291bnRzLmxlbmd0aCArIGNoaWxkcmVuTGVuZ3RofX0gYWNjb3VudHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY2NvdW50cy1saXN0IGFjY291bnQtZGF0YS10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiB1c2VyQWxsQWNjb3VudHM7IGxldCBpID0gaW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGxpc3QtYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmRleElkIHB5LTJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbmRleC1sZWJlbFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAxNXB4IDtcIj57e2RhdGEubmFtZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhPy5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjaGlsZHJlbkRhdGEgb2YgZGF0YS5jaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciAgbGlzdC1ib3JkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZGV4SWQgcHktMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImluZGV4LWxlYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDUwcHggO1wiPnt7Y2hpbGRyZW5EYXRhLm5hbWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2hpbGRyZW5EYXRhPy5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncmFuZENoaWxkIG9mIGNoaWxkcmVuRGF0YS5jaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBsaXN0LWJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5kZXhJZCBweS0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5kZXgtbGViZWxcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogNzVweCA7XCI+e3tncmFuZENoaWxkLm5hbWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiBpZD1cInJvbGVzTW9kYWxcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwiYWNjb3VudExhYmVsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+Um9sZXM8L2g1PlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8aDQ+e3tzZWxlY3RlZFVzZXJOYW1lfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t1c2VyQWxsUm9sZXMubGVuZ3RofX0gcm9sZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3VudHMtbGlzdCBhY2NvdW50LWRhdGEtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiB1c2VyQWxsUm9sZXM7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGxpc3QtYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb2xlSW5kZXggcHktMlwiPnt7aSsxfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZGV4LWxlYmVsIHBsLTJcIj57e2RhdGF9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48bmdiLXRvYXN0ICpuZ0lmPVwic2hvd1RvYXN0XCIgW2F1dG9oaWRlXT1cInRydWVcIiBbZGVsYXldPVwiNDAwMFwiPlxyXG4gICAgPGltZyBbc3JjXT1cIiFpc0FjdGl2ZSA/Jy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvQWN0aXZhdGVJY29uLnN2ZycgOiAnLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9EaXNhYmxlSWNvbi5zdmcnXCI+IHt7aXNBY3RpdmUgPyAnRGVhY3RpdmF0ZWQnIDogJ0FjdGl2YXRlZCd9fSB7e3NlbGVjdGVkVXNlck5hbWV9fVxyXG4gICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIHRvYXN0LWNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImNsb3NlVG9hc3QoKVwiPjwvaT5cclxuPC9uZ2ItdG9hc3Q+XHJcbjxuZ2ItdG9hc3QgKm5nSWY9XCJjcmVhdGVVcGRhdGVUb2FzdFwiIFthdXRvaGlkZV09XCJ0cnVlXCIgW2RlbGF5XT1cIjQwMDBcIj5cclxuICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9JbnZpdGVkLnN2Z1wiPiB7e2lzQ3JlYXRlID8gJ09uZSBuZXcgbWVtYmVyIGludml0ZWQgIScgOiAnU2F2ZSB3YXMgc3VjY2Vzc2Z1bCd9fVxyXG4gICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlIHRvYXN0LWNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImNsb3NlVXBkYXRlVG9hc3QoKVwiPjwvaT5cclxuPC9uZ2ItdG9hc3Q+Il19