tango-app-ui-analyse-trax 3.7.13-eyetest-7 → 3.7.13-eyetest-8

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.
@@ -811,13 +811,13 @@ export class SettingsAuditComponent {
811
811
  localStorage.setItem("header-filters", JSON.stringify(data1));
812
812
  }
813
813
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SettingsAuditComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.FormBuilder }, { token: i2.PageInfoService }, { token: i3.ToastService }, { token: i4.ActivatedRoute }, { token: i5.EyeTestAuditService }, { token: i6.NgbModal }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component });
814
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SettingsAuditComponent, selector: "lib-settings-audit", host: { listeners: { "document:click": "onClickOutside($event)" } }, ngImport: i0, template: "<div class=\"d-flex align-items-center my-5\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div><span class=\"ms-2 title-head\">Audit Settings</span>\r\n</div>\r\n\r\n\r\n<div class=\"row mt-5\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\"\r\n (show)=\"openItem($event)\">\r\n <div class=\"settings-accordian-card \" ngbAccordionItem [collapsed]=\"false\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"!editMode\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit()\" type=\"button\"\r\n class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"w-80\">\r\n <label class=\"my-2 form-label fs-4 fw-bold\">Assign Audit Users</label>\r\n <div *ngIf=\"editMode; else readonlyView\">\r\n <lib-chip-dropdown [data]=\"userConfigList\" [selectedData]=\"configData\"\r\n (selectedList)=\"updateOwner($event)\">\r\n </lib-chip-dropdown>\r\n </div>\r\n\r\n <ng-template #readonlyView>\r\n <div class=\"flex flex-wrap gap-2 border-2 border-gray-300 p-3 rounded\">\r\n <ng-container *ngFor=\"let chip of configData\">\r\n <span class=\"p-1 rounded-5 chip px-2 my-3 py-1 bg-gray-200\">\r\n {{ chip?.name || chip }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <div class=\"mt-3 text-end\" *ngIf=\"editMode\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelEdit()\">Cancel</button>\r\n <button class=\"btn btn-primary\" (click)=\"submitOwners()\">Save</button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"editMode1\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit1();\" type=\"button\"\r\n class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"fw-semibold mb-3\">\r\n Compliance Threshold\r\n </div>\r\n <form [formGroup]=\"complianceForm\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"threshold\" [data]=\"complianceThresholds\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"percentage\" [data]=\"compliancePercentage\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!editMode1\" class=\"mt-3 text-end\">\r\n <button type=\"button\" class=\"btn btn-outline me-2\"\r\n (click)=\"cancelCompliance()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary \"\r\n (click)=\"submitCompliance()\">Save</button>\r\n </div>\r\n </form>\r\n <div class=\"my-3\">\r\n <span class=\"fw-semibold me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_762_15430)\">\r\n <path\r\n d=\"M8.00004 10.6663V7.99967M8.00004 5.33301H8.00671M14.6667 7.99967C14.6667 11.6816 11.6819 14.6663 8.00004 14.6663C4.31814 14.6663 1.33337 11.6816 1.33337 7.99967C1.33337 4.31778 4.31814 1.33301 8.00004 1.33301C11.6819 1.33301 14.6667 4.31778 14.6667 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_762_15430\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n Email will be automatically sent if the compliance doesn\u2019t meet the\r\n <span class=\"fw-bold\">{{complianceForm.value?.percentage}}</span> to the given Email IDs\r\n above.\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Logs</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"d-flex justify-content-end align-items-center mb-10\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\"\r\n class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"d-flex align-items-center position-relative me-2\">\r\n <input class=\"fx-date-range form-control ps-14\"\r\n style=\"min-width: 260px !important;\" type=\"text\" matInput\r\n ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\"\r\n [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\"\r\n [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"position-relative\">\r\n\r\n <button type=\"button\" (click)=\"opendropdown()\"\r\n class=\"btn btn-outline mx-2 rounded-3 text-nowrap border-val\">\r\n <span class=\"me-2\">Filter</span> <svg width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\"\r\n stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n\r\n\r\n <div *ngIf=\"Opendropdown\"\r\n class=\"card p-4 dropdown2 position-absolute z-1 end-0\"\r\n (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-3\">\r\n <span>Filter Options</span>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"dropdown-container mb-3\">\r\n <div class=\"position-relative dropdown-header\"\r\n (click)=\"toggleRmDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer\"\r\n value=\"RMs\" readonly placeholder=\"Select RMs\" />\r\n <span *ngIf=\"getSelectedRmsCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge-light-default text-white text-xs rounded-full px-2 py-0.5\">\r\n {{ getSelectedRmsCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"rmOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search RMs\" [(ngModel)]=\"searchRmText\"\r\n (ngModelChange)=\"filterRms()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n id=\"selectAllRms\" [checked]=\"isAllRmsSelected()\"\r\n (change)=\"toggleSelectAllRms($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllRms\">Select\r\n All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\"\r\n *ngFor=\"let rm of filteredRms\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n [id]=\"rm.email\" [(ngModel)]=\"rm.checked\"\r\n (change)=\"updateSelectedRms()\" />\r\n <label class=\"form-check-label\" [for]=\"rm.email\">{{\r\n rm.userName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"dropdown-container\">\r\n <div class=\"dropdown-header position-relative\"\r\n (click)=\"toggleClusterDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer pe-5\"\r\n value=\"Clusters\" readonly placeholder=\"Select Clusters\" />\r\n\r\n\r\n <span *ngIf=\"getSelectedClustersCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge badge-light-default text-white rounded-pill px-2 py-0\">\r\n {{ getSelectedClustersCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"clusterOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search clusters\"\r\n [(ngModel)]=\"searchClusterText\"\r\n (ngModelChange)=\"filterClusters()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n id=\"selectAllClusters\"\r\n [checked]=\"isAllClustersSelected()\"\r\n (change)=\"toggleSelectAllClusters($event)\" />\r\n <label class=\"form-check-label\"\r\n for=\"selectAllClusters\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\"\r\n *ngFor=\"let cluster of filteredClusters\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n [id]=\"cluster._id\" [(ngModel)]=\"cluster.checked\"\r\n (change)=\"updateSelectedClusters()\" />\r\n <label class=\"form-check-label\" [for]=\"cluster._id\">{{\r\n cluster.clusterName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex gap-2 mt-3\">\r\n <button class=\"btn btn-outline btn-sm w-50\"\r\n (click)=\"Reset()\">Reset</button>\r\n <button class=\"btn btn-primary btn-sm w-50\"\r\n (click)=\"Apply()\">Apply</button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <button type=\"button\" (click)=\"exportXLSX()\" *ngIf=\"!noData && !loading\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-nowrap text-start\"> <span class=\"cursor-pointer\"\r\n > RM Name \r\n </span></th>\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n > Cluster Name\r\n </span></th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optumId')\"> Optom ID <svg\r\n [ngClass]=\"sortedColumn === 'optumId' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optumId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optomEmailId')\"> Optom\r\n Email <svg\r\n [ngClass]=\"sortedColumn === 'optomEmailId' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optomEmailId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('storeName')\"> Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('auditedBy')\"> Audited By <svg\r\n [ngClass]=\"sortedColumn === 'auditedBy' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedBy' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('complianceScore')\"> Tango\r\n Score <svg\r\n [ngClass]=\"sortedColumn === 'complianceScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'complianceScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\"> Trust Score\r\n <svg [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('humanScore')\"> Human\r\n Audited Score <svg\r\n [ngClass]=\"sortedColumn === 'humanScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'humanScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-nowrap text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of tableData\">\r\n <td class=\"text-nowrap\">\r\n <span class=\"rm-truncate\" [title]=\"item.RMName\">{{ item.RMName }}</span>\r\n </td>\r\n <td class=\"text-nowrap\">\r\n <span class=\"rm-truncate\" [title]=\"item.cluster\">{{ item.cluster }}</span>\r\n </td>\r\n <td class=\"text-nowrap\">{{item.optumId}}</td>\r\n <td class=\"text-nowrap\">{{item.optomEmailId}}</td>\r\n <td class=\"text-nowrap\">{{item.storeName}}</td>\r\n <td class=\"text-nowrap\">{{item.auditedBy}}</td>\r\n <td class=\"text-nowrap\">{{item.complianceScore ?? \"--\" }}</td>\r\n <td class=\"text-nowrap\">{{item.trustScore}}</td>\r\n <td class=\"text-nowrap\">{{item.humanScore}}</td>\r\n <td class=\"text-nowrap\">\r\n <button type=\"button\" [disabled]=\"!item.auditedId\"\r\n (click)=\"eyeTestView(item)\"\r\n class=\"btn btn-link p-0 m-0 border-0 bg-transparent\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M0.833252 9.99967C0.833252 9.99967 4.16658 3.33301 9.99992 3.33301C15.8333 3.33301 19.1666 9.99967 19.1666 9.99967C19.1666 9.99967 15.8333 16.6663 9.99992 16.6663C4.16658 16.6663 0.833252 9.99967 0.833252 9.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M9.99992 12.4997C11.3806 12.4997 12.4999 11.3804 12.4999 9.99967C12.4999 8.61896 11.3806 7.49967 9.99992 7.49967C8.61921 7.49967 7.49992 8.61896 7.49992 9.99967C7.49992 11.3804 8.61921 12.4997 9.99992 12.4997Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n </td>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>", styles: [".header-card{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;color:var(--Black, #101828);font-size:18px;line-height:32px}.text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.video-position{position:absolute;top:50%;transform:translateY(-50%)}.btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.btn.btn-success:hover:not(.btn-active),.btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}table tr td{color:var(--Gray-500, #667085);font-size:14px!important;font-weight:500;line-height:20px}.custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.scroll-container{display:flex;width:100%}.scroll-container .item{width:100%;text-align:start}.scroll-container .items:hover,.scroll-container .tems.focus,.scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.scroll-section:last-child{border-right:none}.scroll-section div{padding:8px;cursor:pointer}.scroll-section div.selected{background:#007bff;color:#fff}.bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.rm-truncate{display:inline-block;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}@media (max-width: 768px){.rm-truncate{max-width:120px}}.text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.custom-tooltip-content{font-size:12px!important;text-align:left!important}::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.h-auto{height:370px!important;object-fit:fill}}.ts700px{min-height:auto!important;max-height:700px!important}.title-head{color:var(--Gray-700, #101828);font-size:18px;font-weight:600;line-height:28px}.rotate{rotate:180deg;transition:1s}#chartdiv{width:100%;height:240px}.sankey-container,#sankeyChart{width:100%;height:600px;overflow-x:auto}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.filter-label{color:var(--Gray-500, #667085)!important;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.position-relative{position:relative}.filter-icon{cursor:pointer}.dropdown-container{position:relative;display:inline-block;width:100%}.dropdown-header{cursor:pointer;width:100%}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize;width:100%;box-sizing:border-box}.dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;max-height:230px;overflow-y:auto;display:block;box-sizing:border-box;padding:10px 5px}.dropdown-item{padding:6px 0}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.dropdown2{position:absolute;top:70px;min-width:270px!important}.dropdown2 .dropdown-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:24px}.dropdown2 .dropdown{position:relative;display:inline-block}.dropdown2 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.form-check-label{color:var(--Gray-700, #344054)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:35px}.border-2{border:1px solid var(--bs-gray-300)!important;border-radius:.475rem!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}table th,table td{height:44px!important;gap:12px;align-self:stretch}table th{border-bottom:1px solid var(--Gray-200, #EAECF0)!important;background:var(--Gray-50, #F9FAFB)!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:500!important;line-height:18px}.bottom-border td{border-bottom:1px solid var(--Gray-200, #EAECF0)!important}table tr{vertical-align:middle}table tr td{color:var(--Gray-900, #667085);font-size:14px!important;font-weight:500!important;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", 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]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }, { kind: "directive", type: i6.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i6.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i6.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i6.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i6.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i6.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "component", type: i9.ReactiveSelectComponent, selector: "lib-reactive-select", inputs: ["idField", "nameField", "label", "data"], outputs: ["itemChange"] }, { kind: "component", type: i10.ChipDropdownComponent, selector: "lib-chip-dropdown", inputs: ["data", "selectedData"], outputs: ["selectedList"] }] });
814
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SettingsAuditComponent, selector: "lib-settings-audit", host: { listeners: { "document:click": "onClickOutside($event)" } }, ngImport: i0, template: "<div class=\"d-flex align-items-center my-5\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div><span class=\"ms-2 title-head\">Audit Settings</span>\r\n</div>\r\n\r\n\r\n<div class=\"row mt-5\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\"\r\n (show)=\"openItem($event)\">\r\n <div class=\"settings-accordian-card \" ngbAccordionItem [collapsed]=\"false\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"!editMode\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit()\" type=\"button\"\r\n class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"w-80\">\r\n <label class=\"my-2 form-label fs-4 fw-bold\">Assign Audit Users</label>\r\n <div *ngIf=\"editMode; else readonlyView\">\r\n <lib-chip-dropdown [data]=\"userConfigList\" [selectedData]=\"configData\"\r\n (selectedList)=\"updateOwner($event)\">\r\n </lib-chip-dropdown>\r\n </div>\r\n\r\n <ng-template #readonlyView>\r\n <div class=\"flex flex-wrap gap-2 border-2 border-gray-300 p-3 rounded\">\r\n <ng-container *ngFor=\"let chip of configData\">\r\n <span class=\"p-1 rounded-5 chip px-2 my-3 py-1 bg-gray-200\">\r\n {{ chip?.name || chip }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <div class=\"mt-3 text-end\" *ngIf=\"editMode\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelEdit()\">Cancel</button>\r\n <button class=\"btn btn-primary\" (click)=\"submitOwners()\">Save</button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"editMode1\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit1();\" type=\"button\"\r\n class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"fw-semibold mb-3\">\r\n Compliance Threshold\r\n </div>\r\n <form [formGroup]=\"complianceForm\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"threshold\" [data]=\"complianceThresholds\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"percentage\" [data]=\"compliancePercentage\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!editMode1\" class=\"mt-3 text-end\">\r\n <button type=\"button\" class=\"btn btn-outline me-2\"\r\n (click)=\"cancelCompliance()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary \"\r\n (click)=\"submitCompliance()\">Save</button>\r\n </div>\r\n </form>\r\n <div class=\"my-3\">\r\n <span class=\"fw-semibold me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_762_15430)\">\r\n <path\r\n d=\"M8.00004 10.6663V7.99967M8.00004 5.33301H8.00671M14.6667 7.99967C14.6667 11.6816 11.6819 14.6663 8.00004 14.6663C4.31814 14.6663 1.33337 11.6816 1.33337 7.99967C1.33337 4.31778 4.31814 1.33301 8.00004 1.33301C11.6819 1.33301 14.6667 4.31778 14.6667 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_762_15430\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n Email will be automatically sent if the compliance doesn\u2019t meet the\r\n <span class=\"fw-bold\">{{complianceForm.value?.percentage}}</span> to the respective Optometrist.\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Logs</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"d-flex justify-content-end align-items-center mb-10\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\"\r\n class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"d-flex align-items-center position-relative me-2\">\r\n <input class=\"fx-date-range form-control ps-14\"\r\n style=\"min-width: 260px !important;\" type=\"text\" matInput\r\n ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\"\r\n [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\"\r\n [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"position-relative\">\r\n\r\n <button type=\"button\" (click)=\"opendropdown()\"\r\n class=\"btn btn-outline mx-2 rounded-3 text-nowrap border-val\">\r\n <span class=\"me-2\">Filter</span> <svg width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\"\r\n stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n\r\n\r\n <div *ngIf=\"Opendropdown\"\r\n class=\"card p-4 dropdown2 position-absolute z-1 end-0\"\r\n (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-3\">\r\n <span>Filter Options</span>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"dropdown-container mb-3\">\r\n <div class=\"position-relative dropdown-header\"\r\n (click)=\"toggleRmDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer\"\r\n value=\"RMs\" readonly placeholder=\"Select RMs\" />\r\n <span *ngIf=\"getSelectedRmsCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge-light-default text-white text-xs rounded-full px-2 py-0.5\">\r\n {{ getSelectedRmsCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"rmOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search RMs\" [(ngModel)]=\"searchRmText\"\r\n (ngModelChange)=\"filterRms()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n id=\"selectAllRms\" [checked]=\"isAllRmsSelected()\"\r\n (change)=\"toggleSelectAllRms($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllRms\">Select\r\n All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\"\r\n *ngFor=\"let rm of filteredRms\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n [id]=\"rm.email\" [(ngModel)]=\"rm.checked\"\r\n (change)=\"updateSelectedRms()\" />\r\n <label class=\"form-check-label\" [for]=\"rm.email\">{{\r\n rm.userName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"dropdown-container\">\r\n <div class=\"dropdown-header position-relative\"\r\n (click)=\"toggleClusterDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer pe-5\"\r\n value=\"Clusters\" readonly placeholder=\"Select Clusters\" />\r\n\r\n\r\n <span *ngIf=\"getSelectedClustersCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge badge-light-default text-white rounded-pill px-2 py-0\">\r\n {{ getSelectedClustersCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"clusterOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search clusters\"\r\n [(ngModel)]=\"searchClusterText\"\r\n (ngModelChange)=\"filterClusters()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n id=\"selectAllClusters\"\r\n [checked]=\"isAllClustersSelected()\"\r\n (change)=\"toggleSelectAllClusters($event)\" />\r\n <label class=\"form-check-label\"\r\n for=\"selectAllClusters\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\"\r\n *ngFor=\"let cluster of filteredClusters\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n [id]=\"cluster._id\" [(ngModel)]=\"cluster.checked\"\r\n (change)=\"updateSelectedClusters()\" />\r\n <label class=\"form-check-label\" [for]=\"cluster._id\">{{\r\n cluster.clusterName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex gap-2 mt-3\">\r\n <button class=\"btn btn-outline btn-sm w-50\"\r\n (click)=\"Reset()\">Reset</button>\r\n <button class=\"btn btn-primary btn-sm w-50\"\r\n (click)=\"Apply()\">Apply</button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <button type=\"button\" (click)=\"exportXLSX()\" *ngIf=\"!noData && !loading\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-nowrap text-start\"> <span class=\"cursor-pointer\"\r\n > RM Name \r\n </span></th>\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n > Cluster Name\r\n </span></th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optumId')\"> Optom ID <svg\r\n [ngClass]=\"sortedColumn === 'optumId' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optumId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optomEmailId')\"> Optom\r\n Email <svg\r\n [ngClass]=\"sortedColumn === 'optomEmailId' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optomEmailId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('storeName')\"> Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('auditedBy')\"> Audited By <svg\r\n [ngClass]=\"sortedColumn === 'auditedBy' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedBy' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('complianceScore')\"> Tango\r\n Score <svg\r\n [ngClass]=\"sortedColumn === 'complianceScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'complianceScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\"> Trust Score\r\n <svg [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('humanScore')\"> Human\r\n Audited Score <svg\r\n [ngClass]=\"sortedColumn === 'humanScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'humanScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-nowrap text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of tableData\">\r\n <td class=\"text-nowrap\">\r\n <span class=\"rm-truncate\" [title]=\"item.RMName\">{{ item.RMName }}</span>\r\n </td>\r\n <td class=\"text-nowrap\">\r\n <span class=\"rm-truncate\" [title]=\"item.cluster\">{{ item.cluster }}</span>\r\n </td>\r\n <td class=\"text-nowrap\">{{item.optumId}}</td>\r\n <td class=\"text-nowrap\">{{item.optomEmailId}}</td>\r\n <td class=\"text-nowrap\">{{item.storeName}}</td>\r\n <td class=\"text-nowrap\">{{item.auditedBy}}</td>\r\n <td class=\"text-nowrap\">{{item.complianceScore ?? \"--\" }}</td>\r\n <td class=\"text-nowrap\">{{item.trustScore}}</td>\r\n <td class=\"text-nowrap\">{{item.humanScore}}</td>\r\n <td class=\"text-nowrap\">\r\n <button type=\"button\" [disabled]=\"!item.auditedId\"\r\n (click)=\"eyeTestView(item)\"\r\n class=\"btn btn-link p-0 m-0 border-0 bg-transparent\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M0.833252 9.99967C0.833252 9.99967 4.16658 3.33301 9.99992 3.33301C15.8333 3.33301 19.1666 9.99967 19.1666 9.99967C19.1666 9.99967 15.8333 16.6663 9.99992 16.6663C4.16658 16.6663 0.833252 9.99967 0.833252 9.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M9.99992 12.4997C11.3806 12.4997 12.4999 11.3804 12.4999 9.99967C12.4999 8.61896 11.3806 7.49967 9.99992 7.49967C8.61921 7.49967 7.49992 8.61896 7.49992 9.99967C7.49992 11.3804 8.61921 12.4997 9.99992 12.4997Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n </td>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>", styles: [".header-card{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;color:var(--Black, #101828);font-size:18px;line-height:32px}.text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.video-position{position:absolute;top:50%;transform:translateY(-50%)}.btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.btn.btn-success:hover:not(.btn-active),.btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}table tr td{color:var(--Gray-500, #667085);font-size:14px!important;font-weight:500;line-height:20px}.custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.scroll-container{display:flex;width:100%}.scroll-container .item{width:100%;text-align:start}.scroll-container .items:hover,.scroll-container .tems.focus,.scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.scroll-section:last-child{border-right:none}.scroll-section div{padding:8px;cursor:pointer}.scroll-section div.selected{background:#007bff;color:#fff}.bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.rm-truncate{display:inline-block;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}@media (max-width: 768px){.rm-truncate{max-width:120px}}.text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.custom-tooltip-content{font-size:12px!important;text-align:left!important}::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.h-auto{height:370px!important;object-fit:fill}}.ts700px{min-height:auto!important;max-height:700px!important}.title-head{color:var(--Gray-700, #101828);font-size:18px;font-weight:600;line-height:28px}.rotate{rotate:180deg;transition:1s}#chartdiv{width:100%;height:240px}.sankey-container,#sankeyChart{width:100%;height:600px;overflow-x:auto}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.filter-label{color:var(--Gray-500, #667085)!important;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.position-relative{position:relative}.filter-icon{cursor:pointer}.dropdown-container{position:relative;display:inline-block;width:100%}.dropdown-header{cursor:pointer;width:100%}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize;width:100%;box-sizing:border-box}.dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;max-height:230px;overflow-y:auto;display:block;box-sizing:border-box;padding:10px 5px}.dropdown-item{padding:6px 0}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.dropdown2{position:absolute;top:70px;min-width:270px!important}.dropdown2 .dropdown-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:24px}.dropdown2 .dropdown{position:relative;display:inline-block}.dropdown2 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.form-check-label{color:var(--Gray-700, #344054)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:35px}.border-2{border:1px solid var(--bs-gray-300)!important;border-radius:.475rem!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}table th,table td{height:44px!important;gap:12px;align-self:stretch}table th{border-bottom:1px solid var(--Gray-200, #EAECF0)!important;background:var(--Gray-50, #F9FAFB)!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:500!important;line-height:18px}.bottom-border td{border-bottom:1px solid var(--Gray-200, #EAECF0)!important}table tr{vertical-align:middle}table tr td{color:var(--Gray-900, #667085);font-size:14px!important;font-weight:500!important;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", 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]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }, { kind: "directive", type: i6.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i6.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i6.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i6.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i6.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i6.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "component", type: i9.ReactiveSelectComponent, selector: "lib-reactive-select", inputs: ["idField", "nameField", "label", "data"], outputs: ["itemChange"] }, { kind: "component", type: i10.ChipDropdownComponent, selector: "lib-chip-dropdown", inputs: ["data", "selectedData"], outputs: ["selectedList"] }] });
815
815
  }
816
816
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SettingsAuditComponent, decorators: [{
817
817
  type: Component,
818
- args: [{ selector: "lib-settings-audit", template: "<div class=\"d-flex align-items-center my-5\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div><span class=\"ms-2 title-head\">Audit Settings</span>\r\n</div>\r\n\r\n\r\n<div class=\"row mt-5\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\"\r\n (show)=\"openItem($event)\">\r\n <div class=\"settings-accordian-card \" ngbAccordionItem [collapsed]=\"false\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"!editMode\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit()\" type=\"button\"\r\n class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"w-80\">\r\n <label class=\"my-2 form-label fs-4 fw-bold\">Assign Audit Users</label>\r\n <div *ngIf=\"editMode; else readonlyView\">\r\n <lib-chip-dropdown [data]=\"userConfigList\" [selectedData]=\"configData\"\r\n (selectedList)=\"updateOwner($event)\">\r\n </lib-chip-dropdown>\r\n </div>\r\n\r\n <ng-template #readonlyView>\r\n <div class=\"flex flex-wrap gap-2 border-2 border-gray-300 p-3 rounded\">\r\n <ng-container *ngFor=\"let chip of configData\">\r\n <span class=\"p-1 rounded-5 chip px-2 my-3 py-1 bg-gray-200\">\r\n {{ chip?.name || chip }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <div class=\"mt-3 text-end\" *ngIf=\"editMode\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelEdit()\">Cancel</button>\r\n <button class=\"btn btn-primary\" (click)=\"submitOwners()\">Save</button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"editMode1\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit1();\" type=\"button\"\r\n class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"fw-semibold mb-3\">\r\n Compliance Threshold\r\n </div>\r\n <form [formGroup]=\"complianceForm\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"threshold\" [data]=\"complianceThresholds\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"percentage\" [data]=\"compliancePercentage\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!editMode1\" class=\"mt-3 text-end\">\r\n <button type=\"button\" class=\"btn btn-outline me-2\"\r\n (click)=\"cancelCompliance()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary \"\r\n (click)=\"submitCompliance()\">Save</button>\r\n </div>\r\n </form>\r\n <div class=\"my-3\">\r\n <span class=\"fw-semibold me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_762_15430)\">\r\n <path\r\n d=\"M8.00004 10.6663V7.99967M8.00004 5.33301H8.00671M14.6667 7.99967C14.6667 11.6816 11.6819 14.6663 8.00004 14.6663C4.31814 14.6663 1.33337 11.6816 1.33337 7.99967C1.33337 4.31778 4.31814 1.33301 8.00004 1.33301C11.6819 1.33301 14.6667 4.31778 14.6667 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_762_15430\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n Email will be automatically sent if the compliance doesn\u2019t meet the\r\n <span class=\"fw-bold\">{{complianceForm.value?.percentage}}</span> to the given Email IDs\r\n above.\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Logs</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"d-flex justify-content-end align-items-center mb-10\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\"\r\n class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"d-flex align-items-center position-relative me-2\">\r\n <input class=\"fx-date-range form-control ps-14\"\r\n style=\"min-width: 260px !important;\" type=\"text\" matInput\r\n ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\"\r\n [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\"\r\n [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"position-relative\">\r\n\r\n <button type=\"button\" (click)=\"opendropdown()\"\r\n class=\"btn btn-outline mx-2 rounded-3 text-nowrap border-val\">\r\n <span class=\"me-2\">Filter</span> <svg width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\"\r\n stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n\r\n\r\n <div *ngIf=\"Opendropdown\"\r\n class=\"card p-4 dropdown2 position-absolute z-1 end-0\"\r\n (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-3\">\r\n <span>Filter Options</span>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"dropdown-container mb-3\">\r\n <div class=\"position-relative dropdown-header\"\r\n (click)=\"toggleRmDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer\"\r\n value=\"RMs\" readonly placeholder=\"Select RMs\" />\r\n <span *ngIf=\"getSelectedRmsCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge-light-default text-white text-xs rounded-full px-2 py-0.5\">\r\n {{ getSelectedRmsCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"rmOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search RMs\" [(ngModel)]=\"searchRmText\"\r\n (ngModelChange)=\"filterRms()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n id=\"selectAllRms\" [checked]=\"isAllRmsSelected()\"\r\n (change)=\"toggleSelectAllRms($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllRms\">Select\r\n All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\"\r\n *ngFor=\"let rm of filteredRms\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n [id]=\"rm.email\" [(ngModel)]=\"rm.checked\"\r\n (change)=\"updateSelectedRms()\" />\r\n <label class=\"form-check-label\" [for]=\"rm.email\">{{\r\n rm.userName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"dropdown-container\">\r\n <div class=\"dropdown-header position-relative\"\r\n (click)=\"toggleClusterDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer pe-5\"\r\n value=\"Clusters\" readonly placeholder=\"Select Clusters\" />\r\n\r\n\r\n <span *ngIf=\"getSelectedClustersCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge badge-light-default text-white rounded-pill px-2 py-0\">\r\n {{ getSelectedClustersCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"clusterOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search clusters\"\r\n [(ngModel)]=\"searchClusterText\"\r\n (ngModelChange)=\"filterClusters()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n id=\"selectAllClusters\"\r\n [checked]=\"isAllClustersSelected()\"\r\n (change)=\"toggleSelectAllClusters($event)\" />\r\n <label class=\"form-check-label\"\r\n for=\"selectAllClusters\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\"\r\n *ngFor=\"let cluster of filteredClusters\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n [id]=\"cluster._id\" [(ngModel)]=\"cluster.checked\"\r\n (change)=\"updateSelectedClusters()\" />\r\n <label class=\"form-check-label\" [for]=\"cluster._id\">{{\r\n cluster.clusterName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex gap-2 mt-3\">\r\n <button class=\"btn btn-outline btn-sm w-50\"\r\n (click)=\"Reset()\">Reset</button>\r\n <button class=\"btn btn-primary btn-sm w-50\"\r\n (click)=\"Apply()\">Apply</button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <button type=\"button\" (click)=\"exportXLSX()\" *ngIf=\"!noData && !loading\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-nowrap text-start\"> <span class=\"cursor-pointer\"\r\n > RM Name \r\n </span></th>\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n > Cluster Name\r\n </span></th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optumId')\"> Optom ID <svg\r\n [ngClass]=\"sortedColumn === 'optumId' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optumId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optomEmailId')\"> Optom\r\n Email <svg\r\n [ngClass]=\"sortedColumn === 'optomEmailId' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optomEmailId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('storeName')\"> Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('auditedBy')\"> Audited By <svg\r\n [ngClass]=\"sortedColumn === 'auditedBy' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedBy' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('complianceScore')\"> Tango\r\n Score <svg\r\n [ngClass]=\"sortedColumn === 'complianceScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'complianceScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\"> Trust Score\r\n <svg [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('humanScore')\"> Human\r\n Audited Score <svg\r\n [ngClass]=\"sortedColumn === 'humanScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'humanScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-nowrap text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of tableData\">\r\n <td class=\"text-nowrap\">\r\n <span class=\"rm-truncate\" [title]=\"item.RMName\">{{ item.RMName }}</span>\r\n </td>\r\n <td class=\"text-nowrap\">\r\n <span class=\"rm-truncate\" [title]=\"item.cluster\">{{ item.cluster }}</span>\r\n </td>\r\n <td class=\"text-nowrap\">{{item.optumId}}</td>\r\n <td class=\"text-nowrap\">{{item.optomEmailId}}</td>\r\n <td class=\"text-nowrap\">{{item.storeName}}</td>\r\n <td class=\"text-nowrap\">{{item.auditedBy}}</td>\r\n <td class=\"text-nowrap\">{{item.complianceScore ?? \"--\" }}</td>\r\n <td class=\"text-nowrap\">{{item.trustScore}}</td>\r\n <td class=\"text-nowrap\">{{item.humanScore}}</td>\r\n <td class=\"text-nowrap\">\r\n <button type=\"button\" [disabled]=\"!item.auditedId\"\r\n (click)=\"eyeTestView(item)\"\r\n class=\"btn btn-link p-0 m-0 border-0 bg-transparent\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M0.833252 9.99967C0.833252 9.99967 4.16658 3.33301 9.99992 3.33301C15.8333 3.33301 19.1666 9.99967 19.1666 9.99967C19.1666 9.99967 15.8333 16.6663 9.99992 16.6663C4.16658 16.6663 0.833252 9.99967 0.833252 9.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M9.99992 12.4997C11.3806 12.4997 12.4999 11.3804 12.4999 9.99967C12.4999 8.61896 11.3806 7.49967 9.99992 7.49967C8.61921 7.49967 7.49992 8.61896 7.49992 9.99967C7.49992 11.3804 8.61921 12.4997 9.99992 12.4997Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n </td>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>", styles: [".header-card{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;color:var(--Black, #101828);font-size:18px;line-height:32px}.text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.video-position{position:absolute;top:50%;transform:translateY(-50%)}.btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.btn.btn-success:hover:not(.btn-active),.btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}table tr td{color:var(--Gray-500, #667085);font-size:14px!important;font-weight:500;line-height:20px}.custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.scroll-container{display:flex;width:100%}.scroll-container .item{width:100%;text-align:start}.scroll-container .items:hover,.scroll-container .tems.focus,.scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.scroll-section:last-child{border-right:none}.scroll-section div{padding:8px;cursor:pointer}.scroll-section div.selected{background:#007bff;color:#fff}.bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.rm-truncate{display:inline-block;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}@media (max-width: 768px){.rm-truncate{max-width:120px}}.text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.custom-tooltip-content{font-size:12px!important;text-align:left!important}::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.h-auto{height:370px!important;object-fit:fill}}.ts700px{min-height:auto!important;max-height:700px!important}.title-head{color:var(--Gray-700, #101828);font-size:18px;font-weight:600;line-height:28px}.rotate{rotate:180deg;transition:1s}#chartdiv{width:100%;height:240px}.sankey-container,#sankeyChart{width:100%;height:600px;overflow-x:auto}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.filter-label{color:var(--Gray-500, #667085)!important;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.position-relative{position:relative}.filter-icon{cursor:pointer}.dropdown-container{position:relative;display:inline-block;width:100%}.dropdown-header{cursor:pointer;width:100%}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize;width:100%;box-sizing:border-box}.dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;max-height:230px;overflow-y:auto;display:block;box-sizing:border-box;padding:10px 5px}.dropdown-item{padding:6px 0}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.dropdown2{position:absolute;top:70px;min-width:270px!important}.dropdown2 .dropdown-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:24px}.dropdown2 .dropdown{position:relative;display:inline-block}.dropdown2 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.form-check-label{color:var(--Gray-700, #344054)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:35px}.border-2{border:1px solid var(--bs-gray-300)!important;border-radius:.475rem!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}table th,table td{height:44px!important;gap:12px;align-self:stretch}table th{border-bottom:1px solid var(--Gray-200, #EAECF0)!important;background:var(--Gray-50, #F9FAFB)!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:500!important;line-height:18px}.bottom-border td{border-bottom:1px solid var(--Gray-200, #EAECF0)!important}table tr{vertical-align:middle}table tr td{color:var(--Gray-900, #667085);font-size:14px!important;font-weight:500!important;line-height:20px}\n"] }]
818
+ args: [{ selector: "lib-settings-audit", template: "<div class=\"d-flex align-items-center my-5\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div><span class=\"ms-2 title-head\">Audit Settings</span>\r\n</div>\r\n\r\n\r\n<div class=\"row mt-5\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\"\r\n (show)=\"openItem($event)\">\r\n <div class=\"settings-accordian-card \" ngbAccordionItem [collapsed]=\"false\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"!editMode\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit()\" type=\"button\"\r\n class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"w-80\">\r\n <label class=\"my-2 form-label fs-4 fw-bold\">Assign Audit Users</label>\r\n <div *ngIf=\"editMode; else readonlyView\">\r\n <lib-chip-dropdown [data]=\"userConfigList\" [selectedData]=\"configData\"\r\n (selectedList)=\"updateOwner($event)\">\r\n </lib-chip-dropdown>\r\n </div>\r\n\r\n <ng-template #readonlyView>\r\n <div class=\"flex flex-wrap gap-2 border-2 border-gray-300 p-3 rounded\">\r\n <ng-container *ngFor=\"let chip of configData\">\r\n <span class=\"p-1 rounded-5 chip px-2 my-3 py-1 bg-gray-200\">\r\n {{ chip?.name || chip }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <div class=\"mt-3 text-end\" *ngIf=\"editMode\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelEdit()\">Cancel</button>\r\n <button class=\"btn btn-primary\" (click)=\"submitOwners()\">Save</button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"editMode1\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit1();\" type=\"button\"\r\n class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"fw-semibold mb-3\">\r\n Compliance Threshold\r\n </div>\r\n <form [formGroup]=\"complianceForm\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"threshold\" [data]=\"complianceThresholds\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"percentage\" [data]=\"compliancePercentage\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!editMode1\" class=\"mt-3 text-end\">\r\n <button type=\"button\" class=\"btn btn-outline me-2\"\r\n (click)=\"cancelCompliance()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary \"\r\n (click)=\"submitCompliance()\">Save</button>\r\n </div>\r\n </form>\r\n <div class=\"my-3\">\r\n <span class=\"fw-semibold me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_762_15430)\">\r\n <path\r\n d=\"M8.00004 10.6663V7.99967M8.00004 5.33301H8.00671M14.6667 7.99967C14.6667 11.6816 11.6819 14.6663 8.00004 14.6663C4.31814 14.6663 1.33337 11.6816 1.33337 7.99967C1.33337 4.31778 4.31814 1.33301 8.00004 1.33301C11.6819 1.33301 14.6667 4.31778 14.6667 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_762_15430\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n Email will be automatically sent if the compliance doesn\u2019t meet the\r\n <span class=\"fw-bold\">{{complianceForm.value?.percentage}}</span> to the respective Optometrist.\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Logs</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"d-flex justify-content-end align-items-center mb-10\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\"\r\n class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"d-flex align-items-center position-relative me-2\">\r\n <input class=\"fx-date-range form-control ps-14\"\r\n style=\"min-width: 260px !important;\" type=\"text\" matInput\r\n ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\"\r\n [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\"\r\n [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"position-relative\">\r\n\r\n <button type=\"button\" (click)=\"opendropdown()\"\r\n class=\"btn btn-outline mx-2 rounded-3 text-nowrap border-val\">\r\n <span class=\"me-2\">Filter</span> <svg width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\"\r\n stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n\r\n\r\n <div *ngIf=\"Opendropdown\"\r\n class=\"card p-4 dropdown2 position-absolute z-1 end-0\"\r\n (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-3\">\r\n <span>Filter Options</span>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"dropdown-container mb-3\">\r\n <div class=\"position-relative dropdown-header\"\r\n (click)=\"toggleRmDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer\"\r\n value=\"RMs\" readonly placeholder=\"Select RMs\" />\r\n <span *ngIf=\"getSelectedRmsCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge-light-default text-white text-xs rounded-full px-2 py-0.5\">\r\n {{ getSelectedRmsCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"rmOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search RMs\" [(ngModel)]=\"searchRmText\"\r\n (ngModelChange)=\"filterRms()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n id=\"selectAllRms\" [checked]=\"isAllRmsSelected()\"\r\n (change)=\"toggleSelectAllRms($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllRms\">Select\r\n All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\"\r\n *ngFor=\"let rm of filteredRms\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n [id]=\"rm.email\" [(ngModel)]=\"rm.checked\"\r\n (change)=\"updateSelectedRms()\" />\r\n <label class=\"form-check-label\" [for]=\"rm.email\">{{\r\n rm.userName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"dropdown-container\">\r\n <div class=\"dropdown-header position-relative\"\r\n (click)=\"toggleClusterDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer pe-5\"\r\n value=\"Clusters\" readonly placeholder=\"Select Clusters\" />\r\n\r\n\r\n <span *ngIf=\"getSelectedClustersCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge badge-light-default text-white rounded-pill px-2 py-0\">\r\n {{ getSelectedClustersCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"clusterOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search clusters\"\r\n [(ngModel)]=\"searchClusterText\"\r\n (ngModelChange)=\"filterClusters()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n id=\"selectAllClusters\"\r\n [checked]=\"isAllClustersSelected()\"\r\n (change)=\"toggleSelectAllClusters($event)\" />\r\n <label class=\"form-check-label\"\r\n for=\"selectAllClusters\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\"\r\n *ngFor=\"let cluster of filteredClusters\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n [id]=\"cluster._id\" [(ngModel)]=\"cluster.checked\"\r\n (change)=\"updateSelectedClusters()\" />\r\n <label class=\"form-check-label\" [for]=\"cluster._id\">{{\r\n cluster.clusterName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex gap-2 mt-3\">\r\n <button class=\"btn btn-outline btn-sm w-50\"\r\n (click)=\"Reset()\">Reset</button>\r\n <button class=\"btn btn-primary btn-sm w-50\"\r\n (click)=\"Apply()\">Apply</button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <button type=\"button\" (click)=\"exportXLSX()\" *ngIf=\"!noData && !loading\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-nowrap text-start\"> <span class=\"cursor-pointer\"\r\n > RM Name \r\n </span></th>\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n > Cluster Name\r\n </span></th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optumId')\"> Optom ID <svg\r\n [ngClass]=\"sortedColumn === 'optumId' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optumId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optomEmailId')\"> Optom\r\n Email <svg\r\n [ngClass]=\"sortedColumn === 'optomEmailId' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optomEmailId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('storeName')\"> Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n\r\n <th class=\"text-nowrap text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('auditedBy')\"> Audited By <svg\r\n [ngClass]=\"sortedColumn === 'auditedBy' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditedBy' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('complianceScore')\"> Tango\r\n Score <svg\r\n [ngClass]=\"sortedColumn === 'complianceScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'complianceScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\"> Trust Score\r\n <svg [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-nowrap text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('humanScore')\"> Human\r\n Audited Score <svg\r\n [ngClass]=\"sortedColumn === 'humanScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'humanScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-nowrap text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of tableData\">\r\n <td class=\"text-nowrap\">\r\n <span class=\"rm-truncate\" [title]=\"item.RMName\">{{ item.RMName }}</span>\r\n </td>\r\n <td class=\"text-nowrap\">\r\n <span class=\"rm-truncate\" [title]=\"item.cluster\">{{ item.cluster }}</span>\r\n </td>\r\n <td class=\"text-nowrap\">{{item.optumId}}</td>\r\n <td class=\"text-nowrap\">{{item.optomEmailId}}</td>\r\n <td class=\"text-nowrap\">{{item.storeName}}</td>\r\n <td class=\"text-nowrap\">{{item.auditedBy}}</td>\r\n <td class=\"text-nowrap\">{{item.complianceScore ?? \"--\" }}</td>\r\n <td class=\"text-nowrap\">{{item.trustScore}}</td>\r\n <td class=\"text-nowrap\">{{item.humanScore}}</td>\r\n <td class=\"text-nowrap\">\r\n <button type=\"button\" [disabled]=\"!item.auditedId\"\r\n (click)=\"eyeTestView(item)\"\r\n class=\"btn btn-link p-0 m-0 border-0 bg-transparent\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M0.833252 9.99967C0.833252 9.99967 4.16658 3.33301 9.99992 3.33301C15.8333 3.33301 19.1666 9.99967 19.1666 9.99967C19.1666 9.99967 15.8333 16.6663 9.99992 16.6663C4.16658 16.6663 0.833252 9.99967 0.833252 9.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M9.99992 12.4997C11.3806 12.4997 12.4999 11.3804 12.4999 9.99967C12.4999 8.61896 11.3806 7.49967 9.99992 7.49967C8.61921 7.49967 7.49992 8.61896 7.49992 9.99967C7.49992 11.3804 8.61921 12.4997 9.99992 12.4997Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n </td>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>", styles: [".header-card{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;color:var(--Black, #101828);font-size:18px;line-height:32px}.text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.video-position{position:absolute;top:50%;transform:translateY(-50%)}.btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.btn.btn-success:hover:not(.btn-active),.btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}table tr td{color:var(--Gray-500, #667085);font-size:14px!important;font-weight:500;line-height:20px}.custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.scroll-container{display:flex;width:100%}.scroll-container .item{width:100%;text-align:start}.scroll-container .items:hover,.scroll-container .tems.focus,.scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.scroll-section:last-child{border-right:none}.scroll-section div{padding:8px;cursor:pointer}.scroll-section div.selected{background:#007bff;color:#fff}.bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.rm-truncate{display:inline-block;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}@media (max-width: 768px){.rm-truncate{max-width:120px}}.text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.custom-tooltip-content{font-size:12px!important;text-align:left!important}::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.h-auto{height:370px!important;object-fit:fill}}.ts700px{min-height:auto!important;max-height:700px!important}.title-head{color:var(--Gray-700, #101828);font-size:18px;font-weight:600;line-height:28px}.rotate{rotate:180deg;transition:1s}#chartdiv{width:100%;height:240px}.sankey-container,#sankeyChart{width:100%;height:600px;overflow-x:auto}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.filter-label{color:var(--Gray-500, #667085)!important;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.position-relative{position:relative}.filter-icon{cursor:pointer}.dropdown-container{position:relative;display:inline-block;width:100%}.dropdown-header{cursor:pointer;width:100%}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize;width:100%;box-sizing:border-box}.dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;max-height:230px;overflow-y:auto;display:block;box-sizing:border-box;padding:10px 5px}.dropdown-item{padding:6px 0}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.dropdown2{position:absolute;top:70px;min-width:270px!important}.dropdown2 .dropdown-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:24px}.dropdown2 .dropdown{position:relative;display:inline-block}.dropdown2 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.form-check-label{color:var(--Gray-700, #344054)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:35px}.border-2{border:1px solid var(--bs-gray-300)!important;border-radius:.475rem!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}table th,table td{height:44px!important;gap:12px;align-self:stretch}table th{border-bottom:1px solid var(--Gray-200, #EAECF0)!important;background:var(--Gray-50, #F9FAFB)!important;color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:500!important;line-height:18px}.bottom-border td{border-bottom:1px solid var(--Gray-200, #EAECF0)!important}table tr{vertical-align:middle}table tr td{color:var(--Gray-900, #667085);font-size:14px!important;font-weight:500!important;line-height:20px}\n"] }]
819
819
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.FormBuilder }, { type: i2.PageInfoService }, { type: i3.ToastService }, { type: i4.ActivatedRoute }, { type: i5.EyeTestAuditService }, { type: i6.NgbModal }, { type: i4.Router }], propDecorators: { onClickOutside: [{
820
820
  type: HostListener,
821
821
  args: ['document:click', ['$event']]
822
822
  }] } });
823
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtYXVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9leWUtdGVzdC1hdWRpdC9leWUtdGVzdC1hdWRpdC9zZXR0aW5ncy1hdWRpdC9zZXR0aW5ncy1hdWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2V5ZS10ZXN0LWF1ZGl0L2V5ZS10ZXN0LWF1ZGl0L3NldHRpbmdzLWF1ZGl0L3NldHRpbmdzLWF1ZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxHQUtiLE1BQU0sZUFBZSxDQUFDO0FBTXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixDQUFDO0FBR3pCLGdEQUFnRDtBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7OztBQU8zQyxNQUFNLE9BQU8sc0JBQXNCO0lBS3ZCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQVpWLE9BQU8sQ0FBTTtJQUNiLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxjQUFjLENBQVk7SUFDMUIsWUFDVSxFQUFxQixFQUNyQixJQUFZLEVBQ1osRUFBZSxFQUNmLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLEtBQXFCLEVBQ3JCLElBQXlCLEVBQ3pCLFlBQXNCLEVBQ3RCLE1BQWM7UUFSZCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFR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RUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVE7U0FDckMsQ0FBQztRQUNHLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7d0dBaDJCVSxzQkFBc0I7NEZBQXRCLHNCQUFzQiwrSEM3Qm5DLDJqd0NBMGVVOzs0RkQ3Y0csc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQjt5U0FvQjlCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCB7IEV5ZVRlc3RBdWRpdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZXllLXRlc3QtYXVkaXQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcImRheWpzL2xvY2FsZS9lblwiO1xyXG5pbXBvcnQgeyBhbnkgfSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNS8uaW50ZXJuYWwvY29yZS91dGlsL0FycmF5XCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuLy8gaW1wb3J0ICogYXMgUGxvdGx5IGZyb20gJ3Bsb3RseS5qcy1kaXN0LW1pbic7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXNldHRpbmdzLWF1ZGl0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZXR0aW5ncy1hdWRpdC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vc2V0dGluZ3MtYXVkaXQuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQXVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEF1ZGl0SWQ6IGFueTtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIGNvbXBsaWFuY2VGb3JtOiBGb3JtR3JvdXA7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlICRhcGk6IEV5ZVRlc3RBdWRpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICkge31cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bjInKSAmJiAhdGFyZ2V0LmNsb3Nlc3QoJy5idG4nKSkge1xyXG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiQXVkaXQgLSBFeWUgVGVzdFwiKTtcclxuXHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiBcIlRhbmdvIFRyYXhcIixcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiVGFuZ28gVHJheFwiLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIF0pO1xyXG4gIH1cclxuICBhbGVydFVzZXJzOiBhbnkgPSBbXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcIjY2ODdkOWQxYTI3ZWU4OGY5YTQ0NTdjYlwiLFxyXG4gICAgICB1c2VyTmFtZTogXCJBamlua3lhIE1hbHNoZVwiLFxyXG4gICAgICBlbWFpbDogXCJhamlua3lhLm1hbHNoZUB5b3BtYWlsLmNvbVwiLFxyXG4gICAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCI2Njg3ZDlkMWEyN2VlODhmOWE0NDU3Y2NcIixcclxuICAgICAgdXNlck5hbWU6IFwiSm9obiBEb2VcIixcclxuICAgICAgZW1haWw6IFwiam9obi5kb2VAeW9wbWFpbC5jb21cIixcclxuICAgICAgcm9sZTogXCJtYW5hZ2VyXCIsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgdXNlcnM6IGFueTtcclxuICBhdWRpdERhdGE6IGFueTtcclxuICBjdXJyZW50QXVkaXRUeXBlOiBhbnk7XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCB1c2VyRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcInt9XCIpO1xyXG4gICAgdGhpcy51c2VycyA9IHVzZXJEYXRhO1xyXG4gICAgY29uc3QgaGVhZGVyczogYW55ID0gSlNPTi5wYXJzZShcclxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcInt9XCJcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGl0RGF0YSA9IHRoaXMuJGFwaS5nZXRBdWRpdERhdGEoKVxyXG4gICAgICA/IHRoaXMuJGFwaS5nZXRBdWRpdERhdGEoKVxyXG4gICAgICA6IGhlYWRlcnM7XHJcbiAgICB0aGlzLmNvbXBsaWFuY2VGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHRocmVzaG9sZDogW3sgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlIH1dLFxyXG4gICAgICBwZXJjZW50YWdlOiBbeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWUgfV0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdldFVzZXIoKTtcclxuICAgIHRoaXMuZ2V0RW1haWxDb25maWcoKTtcclxuICAgIHRoaXMuZ2V0QWxsUm0oKTtcclxuICAgIC8vIHRoaXMuYnVpbGREYXRhT2JqZWN0KCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgIHRoaXMudGFibGVEYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgcm1OYW1lOiBcIk9saXZpYVwiLFxyXG4gICAgICAgIGNsdXN0ZXJOYW1lOiBcIkpvaG5cIixcclxuICAgICAgICBvcHR1bUlkOiBcIk9QVDAwMVwiLFxyXG4gICAgICAgIHN0b3JlTmFtZTogXCJMS1NUMTAwMVwiLFxyXG4gICAgICAgIHRhbmdvU2NvcmU6IFwiOSVcIixcclxuICAgICAgICB0cnVzdFNjb3JlOiBcIjklXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBybU5hbWU6IFwiRW1tYVwiLFxyXG4gICAgICAgIGNsdXN0ZXJOYW1lOiBcIkRvZVwiLFxyXG4gICAgICAgIG9wdHVtSWQ6IFwiT1BUMDAyXCIsXHJcbiAgICAgICAgc3RvcmVOYW1lOiBcIkxLU1QxMDAyXCIsXHJcbiAgICAgICAgdGFuZ29TY29yZTogXCI4JVwiLFxyXG4gICAgICAgIHRydXN0U2NvcmU6IFwiOCVcIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHJtTmFtZTogXCJBdmFcIixcclxuICAgICAgICBjbHVzdGVyTmFtZTogXCJTbWl0XCIsXHJcbiAgICAgICAgb3B0dW1JZDogXCJPUFQwMDNcIixcclxuICAgICAgICBzdG9yZU5hbWU6IFwiTEtTVDEwMDNcIixcclxuICAgICAgICB0YW5nb1Njb3JlOiBcIjclXCIsXHJcbiAgICAgICAgdHJ1c3RTY29yZTogXCI3JVwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcm1OYW1lOiBcIklzYWJlbGxhXCIsXHJcbiAgICAgICAgY2x1c3Rlck5hbWU6IFwiSm9obnNvblwiLFxyXG4gICAgICAgIG9wdHVtSWQ6IFwiT1BUMDA0XCIsXHJcbiAgICAgICAgc3RvcmVOYW1lOiBcIkxLU1QxMDA0XCIsXHJcbiAgICAgICAgdGFuZ29TY29yZTogXCI2JVwiLFxyXG4gICAgICAgIHRydXN0U2NvcmU6IFwiNiVcIixcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICAvLyB0aGlzLmFsZXJ0VXNlcnMgPSB0aGlzLmFsZXJ0VXNlcnMubWFwKFxyXG4gICAgLy8gICAodXNlcjogeyB1c2VyTmFtZTogc3RyaW5nOyBlbWFpbDogc3RyaW5nOyByb2xlOiBzdHJpbmcgfSkgPT4gKHtcclxuICAgIC8vICAgICBuYW1lOiB1c2VyLnVzZXJOYW1lLFxyXG4gICAgLy8gICAgIHZhbHVlOiB1c2VyLmVtYWlsLFxyXG4gICAgLy8gICAgIHJvbGU6IHVzZXIucm9sZSxcclxuICAgIC8vICAgfSlcclxuICAgIC8vICk7XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuc3RvcmVJZCA9IHBhcmFtc1snc3RvcmVJZCddO1xyXG4gICAgICB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgPSBwYXJhbXNbXCJ0eXBlXCJdO1xyXG4gICAgICB0aGlzLkF1ZGl0SWQgPSBwYXJhbXNbXCJfaWRcIl07XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ2V0QXVkaXRkZXRhaWxzKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHN0ZXBXaXNlUHJvY2VzczogYW55ID0gW107XHJcbiAgYXVkaXREZXRhaWxzOiBhbnk7XHJcbiAgdGFrZUF1ZGl0OiBhbnk7XHJcbiAgZ2V0QXVkaXRkZXRhaWxzKCkge1xyXG4gICAgLy8gdGhpcy50YWJsZUxvYWRpbmcubmV4dCgnbG9hZGluZycpO1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGlkOiB0aGlzLkF1ZGl0SWQsXHJcbiAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLmdldEF1ZGl0ZGV0YWlscyhwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuZGlzYWJsZWNhbmNlbCA9ICBmYWxzZVxyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0RGV0YWlscyA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hdWRpdERldGFpbHMuYXVkaXRTdGF0dXMgPT09IFwiSW4tUHJvZ3Jlc3NcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnRha2VBdWRpdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzID0gdGhpcy5hdWRpdERldGFpbHM/LnN0ZXBzO1xyXG4gICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5nZXRBdWRpdEhpc3RvcnkoKVxyXG4gICAgICAgICAgICAvLyB9LDEwMClcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICB9XHJcblxyXG4gIG9wZW5JdGVtKGV2ZW50OiBhbnkpIHt9XHJcblxyXG4gIC8vIGNvbXBvbmVudC50c1xyXG5cclxuICBiYWNrTmF2aWdhdGlvbigpIHtcclxuICAgIHRoaXMuJGFwaS5hdWRpdEZpbHRlckRhdGEgPSB7XHJcbiAgICAgIGJhY2s6IFwiYmFja1wiLFxyXG4gICAgICBhdWRpdERldGFpbHM6IHRoaXMuYXVkaXREZXRhaWxzLFxyXG4gICAgfTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2UvdHJheC9hdWRpdFwiXSwge1xyXG4gICAgICBxdWVyeVBhcmFtczoge1xyXG4gICAgICAgIGRhdGU6IHRoaXMuZGF5anMoXHJcbiAgICAgICAgICB0aGlzLmF1ZGl0RGV0YWlscz8uZmlsZURhdGVcclxuICAgICAgICAgICAgPyB0aGlzLmF1ZGl0RGV0YWlscz8uZmlsZURhdGVcclxuICAgICAgICAgICAgOiB0aGlzLmZpbHRlclN0YXJ0RGF0ZVxyXG4gICAgICAgICkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgICB0eXBlVmFsdWU6IFwicGh5c2ljYWxcIixcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZWxlY3RlZENvbXBsaWFuY2VUaHJlc2hvbGQ6IGFueTtcclxuICBzZWxlY3RlZENvbXBsaWFuY2VQZXJjZW50YWdlOiBhbnk7XHJcbiAgY29tcGxpYW5jZVRocmVzaG9sZHMgPSBbXHJcbiAgICB7IHZhbHVlOiBcIjw9XCIsIGxhYmVsOiBcIjw9XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiPFwiLCBsYWJlbDogXCI8XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiPj1cIiwgbGFiZWw6IFwiPj1cIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI+XCIsIGxhYmVsOiBcIj5cIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI9XCIsIGxhYmVsOiBcIj1cIiB9LFxyXG4gIF07XHJcbiAgY29tcGxpYW5jZVBlcmNlbnRhZ2UgPSBbXHJcbiAgICB7IHZhbHVlOiBcIjEwJVwiLCBsYWJlbDogXCIxMCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCIyMCVcIiwgbGFiZWw6IFwiMjAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiMzAlXCIsIGxhYmVsOiBcIjMwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjQwJVwiLCBsYWJlbDogXCI0MCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI1MCVcIiwgbGFiZWw6IFwiNTAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiNjAlXCIsIGxhYmVsOiBcIjYwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjcwJVwiLCBsYWJlbDogXCI3MCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI4MCVcIiwgbGFiZWw6IFwiODAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiOTAlXCIsIGxhYmVsOiBcIjkwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjEwMCVcIiwgbGFiZWw6IFwiMTAwJVwiIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IGFueSA9IHtcclxuICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXlqcygpLnN1YnRyYWN0KDMwLCBcImRheXNcIiksXHJcbiAgICBlbmREYXRlOiB0aGlzLmRheWpzKCksXHJcbiAgfTtcclxuICBmaWx0ZXJTdGFydERhdGU6IGFueSA9IHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgzMCwgXCJkYXlzXCIpLmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcbiAgZmlsdGVyRW5kRGF0ZTogYW55ID0gdGhpcy5kYXlqcygpLnN1YnRyYWN0KDAsIFwiZGF5c1wiKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cclxuICByYW5nZXM6IGFueSA9IHtcclxuICAgIFRvZGF5OiBbdGhpcy5kYXlqcygpLCB0aGlzLmRheWpzKCldLFxyXG4gICAgWWVzdGVyZGF5OiBbXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCBcImRheXNcIiksXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCBcImRheXNcIiksXHJcbiAgICBdLFxyXG4gICAgXCJUaGlzIFdlZWtcIjogW3RoaXMuZGF5anMoKS5zdWJ0cmFjdCg2LCBcImRheXNcIiksIHRoaXMuZGF5anMoKV0sXHJcbiAgICBcIkxhc3QgV2Vla1wiOiBbXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxMywgXCJkYXlzXCIpLnN0YXJ0T2YoXCJkYXlzXCIpLFxyXG4gICAgICB0aGlzLmRheWpzKCkuc3VidHJhY3QoNywgXCJkYXlzXCIpLmVuZE9mKFwiZGF5c1wiKSxcclxuICAgIF0sXHJcbiAgICBcIlRoaXMgTW9udGhcIjogW1xyXG4gICAgICB0aGlzLmRheWpzKCkuc3VidHJhY3QoMzAsIFwiZGF5c1wiKSwgLy8gU3RhcnQgZGF0ZSBpcyAzMCBkYXlzIGJlZm9yZSB0b2RheVxyXG4gICAgICB0aGlzLmRheWpzKCksXHJcbiAgICBdLFxyXG4gICAgXCJMYXN0IE1vbnRoXCI6IFtcclxuICAgICAgdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwibW9udGhcIikuc3RhcnRPZihcIm1vbnRoXCIpLFxyXG4gICAgICB0aGlzLmRheWpzKCkuc3VidHJhY3QoMSwgXCJtb250aFwiKS5lbmRPZihcIm1vbnRoXCIpLFxyXG4gICAgXSxcclxuICB9O1xyXG5cclxuICBkYXRlY2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC5zdGFydERhdGUgfHwgZXZlbnQuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0YXJ0RGF0ZSA9IHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG4gICAgICB0aGlzLmZpbHRlckVuZERhdGUgPSB0aGlzLmRheWpzKGV2ZW50LmVuZERhdGUpLmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcbiAgICAgIHRoaXMuQXBwbHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydFhMU1goKSB7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgIGZyb21EYXRlOiB0aGlzLmZpbHRlclN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmZpbHRlckVuZERhdGUsXHJcbiAgICAgIC8vIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSwgIGl0IGlzIHNob3dzIG9ubHkgcGh5c2ljYWxcclxuICAgICAgUk1MaXN0OiB0aGlzLnNlbGVjdGVkUm1zPy5sZW5ndGggPyB0aGlzLnNlbGVjdGVkUm1zIDogW10sXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50XHJcbiAgICAgICAgPyB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50XHJcbiAgICAgICAgOiB0aGlzLnVzZXJzPy5jbGllbnRJZCxcclxuICAgICAgY2x1c3RlcjogdGhpcy5zZWxlY3RlZENsdXN0ZXJzPy5sZW5ndGhcclxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRDbHVzdGVyc1xyXG4gICAgICAgIDogW10sXHJcbiAgICAgIGlzRXhwb3J0OiB0cnVlLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnRlZENvbHVtbiA/IHRoaXMuc29ydGVkQ29sdW1uIDogXCJSTUVtYWlsXCIsXHJcbiAgICAgIHNvcnRPcmRlcjogdGhpcy5zb3J0T3JkZXIgPyB0aGlzLnNvcnRPcmRlciA6IDEsXHJcbiAgICAgIG9mZnNldDogMSxcclxuICAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLmdldEVtYWlsTG9nRXhwb3J0KHJlcXVlc3REYXRhKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy4kYXBpLnNhdmVBc0V4Y2VsRmlsZShcclxuICAgICAgICAgICAgcmVzLFxyXG4gICAgICAgICAgICBgJHt0aGlzLmN1cnJlbnRBdWRpdFR5cGV9IEV5ZSBUZXN0IFRhYmxlIGBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgICAgIGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBlcnI/LmVycm9yPy5tZXNzYWdlXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIFxyXG4gIH1cclxuXHJcbiAgc2VhcmNoVmFsdWU6IGFueTtcclxuc2VhcmNoRGF0YSgpIHtcclxuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSB0aGlzLnNlYXJjaFZhbHVlO1xyXG4gICAgdGhpcy5nZXRFbWFpbCgpO1xyXG4gIH1cclxuXHJcbiAgdGFibGVEYXRhOiBhbnkgPSBbXTtcclxuXHJcbiAgc29ydGVkQ29sdW1uOiBhbnk7XHJcbiAgc29ydE9yZGVyOiBhbnk7XHJcbiAgb25Tb3J0KGNvbHVtbjogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5zb3J0ZWRDb2x1bW4gPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnRPcmRlciA9IHRoaXMuc29ydE9yZGVyID09PSAxID8gLTEgOiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zb3J0ZWRDb2x1bW4gPSBjb2x1bW4gPyBjb2x1bW4gOiBcIlJNRW1haWxcIjtcclxuICAgICAgdGhpcy5zb3J0T3JkZXIgPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRFbWFpbCgpO1xyXG4gIH1cclxuICBhbGxVc2VyczogYW55O1xyXG4gIGdldFVzZXIoKSB7XHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICB1c2VyVHlwZTogJ2NsaWVudCcsXHJcbiAgICAgIGZpbHRlckJ5Um9sZTogW1wiYWRtaW5cIiwgXCJ1c2VyXCJdLFxyXG4gICAgICBpc0FjdGl2ZTogdGhpcy51c2Vycz8uaXNBY3RpdmUsXHJcbiAgICAgIGNsaWVudElkOnRoaXMuYXVkaXREYXRhPy5jbGllbnQgPyB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50IDogdGhpcy51c2Vycz8uY2xpZW50SWRcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy4kYXBpXHJcbiAgICAgIC5nZXR1c2VyTGlzdChvYmopXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuYWxsVXNlcnMgPSByZXM/LmRhdGE/LnJlc3VsdD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgIGlkOiBpdGVtLl9pZCxcclxuICAgICAgICAgICAgbmFtZTogaXRlbS5lbWFpbCxcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmdldFVzZXJDb25maWcoKTsgLy8gY2FsbCBhZnRlciBhbGxVc2VycyBpcyByZWFkeVxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbmZpZ0RhdGE6IGFueTtcclxuXHJcbiAgdXBkYXRlT3duZXIoc2VsZWN0ZWRFbWFpbDogYW55KSB7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEgPSBzZWxlY3RlZEVtYWlsO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRWRpdCgpIHtcclxuICAgIGlmICghdGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICAvLyBlbnRlcmluZyBlZGl0IG1vZGUg4oaSIG1ha2UgYSB3b3JraW5nIGNvcHlcclxuICAgICAgdGhpcy5jb25maWdEYXRhID0gWy4uLnRoaXMubGFzdFNhdmVkQ29uZmlnXTtcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBsZWF2aW5nIGVkaXQgd2l0aG91dCBzYXZpbmcg4oaSIHJlc3RvcmUgYmFzZWxpbmVcclxuICAgICAgdGhpcy5jb25maWdEYXRhID0gWy4uLnRoaXMubGFzdFNhdmVkQ29uZmlnXTtcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsRWRpdCgpIHtcclxuICAgIC8vIHJldmVydCBiYWNrIHRvIGxhc3Qgc2F2ZWQgc3RhdGVcclxuICAgIHRoaXMuY29uZmlnRGF0YSA9IFsuLi50aGlzLmxhc3RTYXZlZENvbmZpZ107XHJcbiAgICB0aGlzLmVkaXRNb2RlID0gZmFsc2U7XHJcbiAgfVxyXG4gIGVkaXRNb2RlID0gZmFsc2U7XHJcbiAgc3VibWl0T3duZXJzKCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREYXRhPy5jbGllbnQsIC8vIG9yIHRoaXMuY2xpZW50SWRcclxuICAgICAgdXNlckxpc3Q6IHRoaXMuY29uZmlnRGF0YS5tYXAoKG86IGFueSkgPT4gKHtcclxuICAgICAgICBfaWQ6IG8uaWQgPz8gby52YWx1ZSwgLy8g4pyFIHN1cHBvcnQgYm90aCBjYXNlc1xyXG4gICAgICAgIGVtYWlsOiBvLm5hbWUsXHJcbiAgICAgIH0pKSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy4kYXBpXHJcbiAgICAgIC51cGRhdGVVc2VyQ29uZmlnKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRVc2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChyZXM/Lm1lc3NhZ2UgPyByZXM/Lm1lc3NhZ2UgOiBcIkVtYWlsIGNvbmZpZ3VyYXRpb24gdXBkYXRlZCBzdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXCJGYWlsZWQgdG8gdXBkYXRlIG93bmVyc1wiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBlcnI/LmVycm9yPy5tZXNzYWdlKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHRoaXMub25TdWJtaXQoKTtcclxuICB1c2VyQ29uZmlnTGlzdDogYW55ID0gW107XHJcbiAgbGFzdFNhdmVkQ29uZmlnOiBhbnk7XHJcbiAgZ2V0VXNlckNvbmZpZygpIHtcclxuICAgIHRoaXMuJGFwaVxyXG4gICAgICAuZ2V0VXNlckNvbmZpZ0xpc3QodGhpcy5hdWRpdERhdGE/LmNsaWVudClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgLy8gQXNzaWduZWQgdXNlcnNcclxuICAgICAgICAgIHRoaXMuY29uZmlnRGF0YSA9XHJcbiAgICAgICAgICAgIHJlcz8uZGF0YT8ucmVzdWx0Py51c2VyTGlzdD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uX2lkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0uZW1haWwsXHJcbiAgICAgICAgICAgIH0pKSA/PyBbXTtcclxuICAgICAgICAgIHRoaXMubGFzdFNhdmVkQ29uZmlnID0gWy4uLnRoaXMuY29uZmlnRGF0YV07XHJcblxyXG4gICAgICAgICAgLy8gQnVpbGQgc2V0IG9mIGFzc2lnbmVkIGlkc1xyXG4gICAgICAgICAgY29uc3QgYXNzaWduZWRJZHMgPSBuZXcgU2V0KHRoaXMuY29uZmlnRGF0YS5tYXAoKHU6IGFueSkgPT4gdS5pZCkpO1xyXG5cclxuICAgICAgICAgIC8vIEZpbHRlciBmcm9tIGFsbFVzZXJzIChub3QgZnJvbSB1c2VyQ29uZmlnTGlzdCEpXHJcbiAgICAgICAgICB0aGlzLnVzZXJDb25maWdMaXN0ID0gdGhpcy5hbGxVc2Vycy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh1OiBhbnkpID0+ICFhc3NpZ25lZElkcy5oYXModS5pZClcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIGVtYWlsIGNvbmdpZyBtZXRob2QgYW5kIHZhcmlhYmxlc1xyXG4gIGVtYWlsQ29uZmlnTGlzdDogYW55O1xyXG4gIGVkaXRNb2RlMSA9IHRydWU7XHJcbiAgdG9nZ2xlRWRpdDEoKSB7XHJcbiAgICB0aGlzLmVkaXRNb2RlMSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21wbGlhbmNlRm9ybS5lbmFibGUoKTtcclxuICB9XHJcbiAgZ2V0RW1haWxDb25maWcoKSB7XHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLmdldEVtYWlsQ29uZmlnTGlzdChcclxuICAgICAgICB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50ID8gdGhpcy5hdWRpdERhdGE/LmNsaWVudCA6IHRoaXMudXNlcnM/LmNsaWVudElkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5lbWFpbENvbmZpZ0xpc3QgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuXHJcbiAgICAgICAgICAvLyBTdXBwb3NlIGJhY2tlbmQgcmV0dXJucyBzb21ldGhpbmcgbGlrZTpcclxuICAgICAgICAgIC8vIHsgdGhyZXNob2xkOiBcIjEwXCIsIHBlcmNlbnRhZ2U6IFwiODBcIiB9XHJcbiAgICAgICAgICBjb25zdCBpbml0aWFsRGF0YSA9IHtcclxuICAgICAgICAgICAgdGhyZXNob2xkOiB0aGlzLmVtYWlsQ29uZmlnTGlzdD8uY29tcGxpYW5jZVRocmVzaG9sZD8uY29uZGl0aW9uLFxyXG4gICAgICAgICAgICBwZXJjZW50YWdlOiB0aGlzLmVtYWlsQ29uZmlnTGlzdD8uY29tcGxpYW5jZVRocmVzaG9sZD8udmFsdWUsXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIC8vIEZpbGwgcmVhY3RpdmUgZm9ybSB3aXRoIHZhbHVlc1xyXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlRm9ybS5wYXRjaFZhbHVlKGluaXRpYWxEYXRhKTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsYXN0U2F2ZWRDb21wbGlhbmNlOiBhbnk7XHJcbiAgc3VibWl0Q29tcGxpYW5jZSgpIHtcclxuICAgIGlmICh0aGlzLmNvbXBsaWFuY2VGb3JtLmludmFsaWQpIHJldHVybjtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50LFxyXG4gICAgICBjb21wbGlhbmNlVGhyZXNob2xkOiB7XHJcbiAgICAgICAgY29uZGl0aW9uOiB0aGlzLmNvbXBsaWFuY2VGb3JtLnZhbHVlLnRocmVzaG9sZCxcclxuICAgICAgICB2YWx1ZTogdGhpcy5jb21wbGlhbmNlRm9ybS52YWx1ZS5wZXJjZW50YWdlLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLnVwZGF0ZUVtYWlsQ29uZmlnKHRoaXMuZW1haWxDb25maWdMaXN0Py5faWQsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KFxyXG4gICAgICAgICAgICByZXM/Lm1lc3NhZ2VcclxuICAgICAgICAgICAgICA/IGBFbWFpbCBjb25maWd1cmF0aW9uYCArIHJlcz8ubWVzc2FnZVxyXG4gICAgICAgICAgICAgIDogXCJDb21wbGlhbmNlIHNldHRpbmdzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmdldEVtYWlsQ29uZmlnKCk7IC8vIHVwZGF0ZSBiYXNlbGluZVxyXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlRm9ybS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLmVkaXRNb2RlMSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiBjb25zb2xlLmVycm9yKFwiVXBkYXRlIGZhaWxlZDpcIiwgZXJyKSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxDb21wbGlhbmNlKCkge1xyXG4gICAgdGhpcy5jb21wbGlhbmNlRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB0aGlzLmVkaXRNb2RlMSA9IHRydWU7XHJcbiAgICB0aGlzLmdldEVtYWlsQ29uZmlnKCk7XHJcbiAgfVxyXG4gIC8vIFJNc1xyXG4gIC8vIFJtTGlzdDogYW55W10gPSBbXTtcclxuICBmaWx0ZXJlZFJtczogYW55W10gPSBbXTtcclxuICBzZWFyY2hSbVRleHQgPSBcIlwiO1xyXG5cclxuICAvLyBDbHVzdGVyc1xyXG4gIENsdXN0ZXJMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGZpbHRlcmVkQ2x1c3RlcnM6IGFueVtdID0gW107XHJcbiAgc2VhcmNoQ2x1c3RlclRleHQgPSBcIlwiO1xyXG5cclxuICAvLyBEcm9wZG93bnNcclxuICBPcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICBkcm9wZG93bk9wZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBPcGVuL2Nsb3NlIGRyb3Bkb3duXHJcbiAgb3BlbmRyb3Bkb3duKCkge1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSAhdGhpcy5PcGVuZHJvcGRvd247XHJcbiAgfVxyXG4gIGNsb3NlRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IG51bGw7XHJcbiAgfVxyXG4gIHJtT3BlbiA9IGZhbHNlO1xyXG4gIGNsdXN0ZXJPcGVuID0gZmFsc2U7XHJcblxyXG4gIHRvZ2dsZVJtRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLnJtT3BlbiA9ICF0aGlzLnJtT3BlbjtcclxuICAgIHRoaXMuY2x1c3Rlck9wZW4gPSBmYWxzZTsgLy8gY2xvc2Ugb3RoZXJcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNsdXN0ZXJEcm9wZG93bigpIHtcclxuICAgIHRoaXMuY2x1c3Rlck9wZW4gPSAhdGhpcy5jbHVzdGVyT3BlbjtcclxuICAgIHRoaXMucm1PcGVuID0gZmFsc2U7IC8vIGNsb3NlIG90aGVyXHJcbiAgfVxyXG5cclxuICBjbG9zZUFsbERyb3Bkb3ducygpIHtcclxuICAgIHRoaXMucm1PcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsdXN0ZXJPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5SbUxpc3Q6YW55W10gPSBbXHJcbiAge1xyXG4gICAgX2lkOiBcIjFcIixcclxuICAgIHVzZXJOYW1lOiBcIkFqYXkgTVwiLFxyXG4gICAgZW1haWw6IFwibWFyZWxsYXB1ZGkuYWpheUBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyXCIsXHJcbiAgICB1c2VyTmFtZTogXCJBbmlyYmFuIEdob3NoXCIsXHJcbiAgICBlbWFpbDogXCJhbmlyYmFuLmdob3NoQGxlbnNrYXJ0LmNvbVwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjNcIixcclxuICAgIHVzZXJOYW1lOiBcIkF2YWRoZXNoIFNoYXJtYVwiLFxyXG4gICAgZW1haWw6IFwiYXZhZGhlc2gua3VtYXJAbGVuc2thcnQuY29tXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiNFwiLFxyXG4gICAgdXNlck5hbWU6IFwiQXl1c2ggR3VwdGFcIixcclxuICAgIGVtYWlsOiBcImF5dXNoLmd1cHRhMUBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjVcIixcclxuICAgIHVzZXJOYW1lOiBcIkRoaXJlbiBCaXNodFwiLFxyXG4gICAgZW1haWw6IFwiZGhpcmVuZHJhLmJpc2h0QHRoZWxlbnNrYXJ0LmNvbVwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjZcIixcclxuICAgIHVzZXJOYW1lOiBcIk11ZWVuIEtoYW5cIixcclxuICAgIGVtYWlsOiBcIm11ZWVuLmtoYW5AdGhlbGVuc2thcnQuY29tXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiN1wiLFxyXG4gICAgdXNlck5hbWU6IFwiUmVzaG1hIFNoZXR0eVwiLFxyXG4gICAgZW1haWw6IFwicmVzaG1hLnNoZXR0eUBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjhcIixcclxuICAgIHVzZXJOYW1lOiBcIlNyaW5pdmFzIFJlZGR5XCIsXHJcbiAgICBlbWFpbDogXCJzcmluaXZhcy5yZWRkeUB0aGVsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCI5XCIsXHJcbiAgICB1c2VyTmFtZTogXCJTdXJlc2ggQmFsYWppIFJcIixcclxuICAgIGVtYWlsOiBcInN1cmVzaC5yQHRoZWxlbnNrYXJ0LmNvbVwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjEwXCIsXHJcbiAgICB1c2VyTmFtZTogXCJUaHVsYXNpIEtyaXNobmFcIixcclxuICAgIGVtYWlsOiBcImtyaXNobmEudGh1bGFzaUBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjExXCIsXHJcbiAgICB1c2VyTmFtZTogXCJWaWplZXNoIFYgTFwiLFxyXG4gICAgZW1haWw6IFwidmlqZWVzaC52bEBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjEyXCIsXHJcbiAgICB1c2VyTmFtZTogXCJLdW5hbCBTaGFybWFcIixcclxuICAgIGVtYWlsOiBcImt1bmFsLnNoYXJtYUBsZW5za2FydC5tb2JpXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuXTtcclxuICAvKiogLS0tLSBSTXMgLS0tLSAqL1xyXG4gIGdldEFsbFJtKCkge1xyXG4gICAgLy8gdGhpcy4kYXBpLmdldFJtTGlzdCh0aGlzLmF1ZGl0RGF0YT8uY2xpZW50KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAvLyAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgLy8gICAgIGNvbnN0IHJlc3VsdCA9IEFycmF5LmlzQXJyYXkocmVzLmRhdGEucmVzdWx0KVxyXG4gICAgLy8gICAgICAgPyByZXMuZGF0YS5yZXN1bHRcclxuICAgIC8vICAgICAgIDogW3Jlcy5kYXRhLnJlc3VsdF07XHJcbiAgICAgICAgdGhpcy5SbUxpc3QgPSB0aGlzLlJtTGlzdC5tYXAoKHJtOiBhbnkpID0+ICh7IC4uLnJtLCBjaGVja2VkOiB0cnVlIH0pKTsgLy8g4pyFIHByZS1zZWxlY3QgYWxsXHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZFJtcyA9IFsuLi50aGlzLlJtTGlzdF07XHJcbiAgICAgICAgLy8tLSBPbGQgY29kZSAtLVxyXG4gICAgICAgIC8vIHRoaXMuZ2V0QWxsR3JvdXBzKHRoaXMuUm1MaXN0KTtcclxuICAgICAgICAvLyB0aGlzLkFwcGx5KCk7XHJcbiAgICAgICAgdGhpcy5nZXRBbGxHcm91cHNQcm9taXNlKHRoaXMuUm1MaXN0KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuQXBwbHkoKTtcclxuICAgICAgICB9KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJSbXMoKSB7XHJcbiAgICBjb25zdCBzZWFyY2ggPSB0aGlzLnNlYXJjaFJtVGV4dC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5maWx0ZXJlZFJtcyA9IHRoaXMuUm1MaXN0LmZpbHRlcigocikgPT5cclxuICAgICAgci51c2VyTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFJtc1NlbGVjdGVkKCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5maWx0ZXJlZFJtcy5sZW5ndGggPiAwICYmIHRoaXMuZmlsdGVyZWRSbXMuZXZlcnkoKHIpID0+IHIuY2hlY2tlZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTZWxlY3RBbGxSbXMoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgdGhpcy5maWx0ZXJlZFJtcy5mb3JFYWNoKChyKSA9PiAoci5jaGVja2VkID0gY2hlY2tlZCkpO1xyXG50aGlzLnVwZGF0ZVNlbGVjdGVkUm1zKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWxlY3RlZFJtcygpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5SbUxpc3QuZmlsdGVyKChyKSA9PiByLmNoZWNrZWQpO1xyXG4gICAgLy8gdGhpcy5nZXRBbGxHcm91cHMoc2VsZWN0ZWQpOyAvLyBhdXRvIHJlZnJlc2ggY2x1c3RlcnNcclxuICAgIHRoaXMuZ2V0QWxsR3JvdXBzUHJvbWlzZShzZWxlY3RlZCkudGhlbigoKSA9PiB7IFxyXG4gICAgICAvLyBhdXRvIHJlZnJlc2ggY2x1c3RlcnMgd2l0aCBwcm9taXNlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5zZWxlY3RlZFJtc0xhYmVsKCk6IHN0cmluZyB7XHJcbiAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmZpbHRlcmVkUm1zLmZpbHRlcihybSA9PiBybS5jaGVja2VkKTtcclxuICBpZiAoc2VsZWN0ZWQubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XHJcbiAgcmV0dXJuIHNlbGVjdGVkWzBdLnVzZXJOYW1lO1xyXG59XHJcbmdldFNlbGVjdGVkUm1zQ291bnQoKTogbnVtYmVyIHtcclxuICByZXR1cm4gdGhpcy5maWx0ZXJlZFJtcy5maWx0ZXIocm0gPT4gcm0uY2hlY2tlZCkubGVuZ3RoO1xyXG59XHJcbiAgLyoqIC0tLS0gQ2x1c3RlcnMgLS0tLSAqL1xyXG4vLyBnZXRBbGxHcm91cHMoZXZlbnQ/OiBhbnlbXSkge1xyXG4vLyAgIGxldCBybUxpc3Q6IHN0cmluZ1tdID0gW107XHJcblxyXG4vLyAgIGlmIChldmVudD8ubGVuZ3RoKSB7XHJcbi8vICAgICBybUxpc3QgPSBldmVudC5tYXAoKG8pID0+IG8uZW1haWwpO1xyXG4vLyAgIH0gZWxzZSBpZiAodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJybVwiKSB7XHJcbi8vICAgICBybUxpc3QgPSBbdGhpcy51c2Vycz8uZW1haWxdO1xyXG4vLyAgIH1cclxuXHJcbi8vICAgY29uc3Qgb2JqID0geyBcclxuLy8gICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50ID8gdGhpcy5hdWRpdERhdGE/LmNsaWVudCA6IHRoaXMudXNlcnM/LmNsaWVudElkLFxyXG4vLyAgICAgcm1MaXN0IFxyXG4vLyAgIH07XHJcblxyXG4vLyAgIHRoaXMuJGFwaS5nZXRDbHVzdGVycyhvYmopLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuLy8gICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCkge1xyXG4vLyAgICAgICAvLyBJbml0aWFsaXplIGNsdXN0ZXJzIHdpdGggY2hlY2tlZD1mYWxzZVxyXG4vLyAgICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gKHJlcy5kYXRhLnJlc3VsdCB8fCBbXSkubWFwKChjOiBhbnkpID0+ICh7XHJcbi8vICAgICAgICAgLi4uYyxcclxuLy8gICAgICAgICBjaGVja2VkOiB0cnVlXHJcbi8vICAgICAgIH0pKTtcclxuLy8gICAgICAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzID0gWy4uLnRoaXMuQ2x1c3Rlckxpc3RdO1xyXG4vLyAgICAgfSBlbHNlIHtcclxuLy8gICAgICAgdGhpcy5DbHVzdGVyTGlzdCA9IFtdO1xyXG4vLyAgICAgICB0aGlzLmZpbHRlcmVkQ2x1c3RlcnMgPSBbXTtcclxuLy8gICAgIH1cclxuLy8gICB9KTtcclxuLy8gfVxyXG5cclxuICBnZXRBbGxHcm91cHNQcm9taXNlKGV2ZW50PzogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGxldCBybUxpc3Q6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgICBpZiAoZXZlbnQ/Lmxlbmd0aCkge1xyXG4gICAgICAgIHJtTGlzdCA9IGV2ZW50Lm1hcCgobykgPT4gby5lbWFpbCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJybVwiKSB7XHJcbiAgICAgICAgcm1MaXN0ID0gW3RoaXMudXNlcnM/LmVtYWlsXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50ID8/IHRoaXMudXNlcnM/LmNsaWVudElkLFxyXG4gICAgICAgIHJtTGlzdFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy4kYXBpLmdldENsdXN0ZXJzKG9iaikuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gKHJlcy5kYXRhLnJlc3VsdCB8fCBbXSkubWFwKChjOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgLi4uYyxcclxuICAgICAgICAgICAgICBjaGVja2VkOiB0cnVlLFxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRDbHVzdGVycyA9IFsuLi50aGlzLkNsdXN0ZXJMaXN0XTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuQ2x1c3Rlckxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXNvbHZlKCk7IC8vIGNvbXBsZXRpb25cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiByZWplY3QoZXJyKSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5maWx0ZXJDbHVzdGVycygpIHtcclxuICBjb25zdCBzZWFyY2ggPSB0aGlzLnNlYXJjaENsdXN0ZXJUZXh0LnRvTG93ZXJDYXNlKCk7XHJcbiAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzID0gdGhpcy5DbHVzdGVyTGlzdC5maWx0ZXIoKGMpID0+XHJcbiAgICBjLmNsdXN0ZXJOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKVxyXG4gICk7XHJcbn1cclxuXHJcbmlzQWxsQ2x1c3RlcnNTZWxlY3RlZCgpIHtcclxuICByZXR1cm4gKFxyXG4gICAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzLmxlbmd0aCA+IDAgJiZcclxuICAgIHRoaXMuZmlsdGVyZWRDbHVzdGVycy5ldmVyeSgoYykgPT4gYy5jaGVja2VkKVxyXG4gICk7XHJcbn1cclxuXHJcbnRvZ2dsZVNlbGVjdEFsbENsdXN0ZXJzKGV2ZW50OiBhbnkpIHtcclxuICBjb25zdCBjaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzLmZvckVhY2goKGMpID0+IChjLmNoZWNrZWQgPSBjaGVja2VkKSk7XHJcbiAgdGhpcy51cGRhdGVTZWxlY3RlZENsdXN0ZXJzKCk7XHJcbn1cclxuXHJcbnVwZGF0ZVNlbGVjdGVkQ2x1c3RlcnMoKSB7XHJcbiAgdGhpcy5zZWxlY3RlZENsdXN0ZXJzID0gdGhpcy5DbHVzdGVyTGlzdFxyXG4gICAgLmZpbHRlcihjID0+IGMuY2hlY2tlZClcclxuICAgIC5tYXAoYyA9PiBjLl9pZCk7IC8vIG9yIGMuY2x1c3Rlck5hbWUgaWYgbmVlZGVkXHJcbn1cclxuXHJcbnNlbGVjdGVkQ2x1c3RlcnNMYWJlbCgpIHtcclxuICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuQ2x1c3Rlckxpc3QuZmlsdGVyKChjKSA9PiBjLmNoZWNrZWQpO1xyXG4gIGlmIChzZWxlY3RlZC5sZW5ndGggPT09IDApIHJldHVybiAnJztcclxuICByZXR1cm4gc2VsZWN0ZWRbMF0uY2x1c3Rlck5hbWU7XHJcbn1cclxuXHJcbmdldFNlbGVjdGVkQ2x1c3RlcnNDb3VudCgpIHtcclxuICByZXR1cm4gdGhpcy5DbHVzdGVyTGlzdC5maWx0ZXIoYyA9PiBjLmNoZWNrZWQpLmxlbmd0aDtcclxuICAvLyByZXR1cm4gY291bnQgPiAxID8gY291bnQgLSAxIDogMDsgLy8gU2hvdyBcIitOIG90aGVyc1wiXHJcbn1cclxuXHJcbiAgLyoqIC0tLS0gQXBwbHkgLyBSZXNldCAtLS0tICovXHJcbiAgUmVzZXQoKSB7XHJcbiAgICB0aGlzLlJtTGlzdC5mb3JFYWNoKChyKSA9PiAoci5jaGVja2VkID0gdHJ1ZSkpO1xyXG4gICAgdGhpcy5DbHVzdGVyTGlzdC5mb3JFYWNoKChjKSA9PiAoYy5jaGVja2VkID0gdHJ1ZSkpO1xyXG4gICAgdGhpcy5maWx0ZXJlZFJtcyA9IFsuLi50aGlzLlJtTGlzdF07XHJcbiAgICB0aGlzLmZpbHRlcmVkQ2x1c3RlcnMgPSBbLi4udGhpcy5DbHVzdGVyTGlzdF07XHJcbiAgICAgICB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICAgdGhpcy5nZXRFbWFpbCgpXHJcbiAgfVxyXG4gIHNlbGVjdGVkUm1zOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZENsdXN0ZXJzOiBhbnkgPSBbXTtcclxuICBBcHBseSgpIHtcclxuICAgIGNvbnN0IGRhdGVQaXBlID0gbmV3IERhdGVQaXBlKFwiZW4tVVNcIik7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm1zID0gdGhpcy5SbUxpc3QuZmlsdGVyKChyKSA9PiByLmNoZWNrZWQpLm1hcCgocikgPT4gci5lbWFpbCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2x1c3RlcnMgPSB0aGlzLkNsdXN0ZXJMaXN0LmZpbHRlcigoYykgPT4gYy5jaGVja2VkKS5tYXAoXHJcbiAgICAgIChjKSA9PiBjLmNsdXN0ZXJOYW1lXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZXRFbWFpbCgpO1xyXG4gICAgdGhpcy5ybU9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY2x1c3Rlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJTdGFydERhdGUpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdGFydERhdGUgPSBkYXRlUGlwZS50cmFuc2Zvcm0oXHJcbiAgICAgICAgdGhpcy5maWx0ZXJTdGFydERhdGUsXHJcbiAgICAgICAgXCJ5eXl5LU1NLWRkXCJcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpbHRlckVuZERhdGUpIHtcclxuICAgICAgdGhpcy5maWx0ZXJFbmREYXRlID0gZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZmlsdGVyRW5kRGF0ZSwgXCJ5eXl5LU1NLWRkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvZmZzZXQgPSAxO1xyXG4gIGxpbWl0ID0gMTA7XHJcbnBhZ2VTaXplID0gMTA7ICAgICAgICAgICAgXHJcbnBhZ2luYXRpb25TaXplcyA9IFsxMCwyMCwzMF07IFxyXG50b3RhbEl0ZW1zID0gMDtcclxuICBzZXRQYWdpbmF0aW9uU2l6ZXMoKSB7XHJcbiAgICBpZiAodGhpcy50b3RhbEl0ZW1zID4gMTApIHtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFt0aGlzLnRvdGFsSXRlbXNdOyAvLyBKdXN0IG9uZSBvcHRpb24gaWYgbGVzcyB0aGFuIDEwXHJcbiAgICB9XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uU2l6ZXNbMF07XHJcbiAgfSBcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgbm9EYXRhID0gZmFsc2U7XHJcbiAgZ2V0RW1haWwoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmZpbHRlclN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmZpbHRlckVuZERhdGUsXHJcbiAgICAgIC8vIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSxcclxuICAgICAgUk1MaXN0OiB0aGlzLnNlbGVjdGVkUm1zPy5sZW5ndGggPyB0aGlzLnNlbGVjdGVkUm1zIDogW10sXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50XHJcbiAgICAgICAgPyB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50XHJcbiAgICAgICAgOiB0aGlzLnVzZXJzPy5jbGllbnRJZCxcclxuICAgICAgY2x1c3RlcjogdGhpcy5zZWxlY3RlZENsdXN0ZXJzPy5sZW5ndGhcclxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRDbHVzdGVyc1xyXG4gICAgICAgIDogW10sXHJcbiAgICAgIGlzRXhwb3J0OiBmYWxzZSxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUsXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0ZWRDb2x1bW4gPyB0aGlzLnNvcnRlZENvbHVtbiA6IFwiUk1FbWFpbFwiLFxyXG4gICAgICBzb3J0T3JkZXI6IHRoaXMuc29ydE9yZGVyID8gdGhpcy5zb3J0T3JkZXIgOiAxLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxyXG4gICAgICBsaW1pdDogdGhpcy5saW1pdCxcclxuICAgIH07XHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLmdldEVtYWlsTG9nKG9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzPy5kYXRhPy5jb3VudCB8fCAwO1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJVcGRhdGUgZmFpbGVkOlwiLCBlcnIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbm9uUGFnZUNoYW5nZShwYWdlOiBudW1iZXIpIHtcclxuICB0aGlzLm9mZnNldCA9IHBhZ2U7XHJcbiAgdGhpcy5nZXRFbWFpbCgpOyAvLyByZWxvYWQgd2l0aCBuZXcgcGFnZVxyXG59XHJcblxyXG5vblBhZ2VTaXplQ2hhbmdlKHNpemU6IG51bWJlcikge1xyXG4gIHRoaXMucGFnZVNpemUgPSBzaXplO1xyXG4gIHRoaXMubGltaXQgPSBzaXplO1xyXG4gIHRoaXMub2Zmc2V0ID0gMTsgICAvLyByZXNldCB0byBmaXJzdCBwYWdlIHdoZW4gcGFnZSBzaXplIGNoYW5nZXNcclxuICB0aGlzLmdldEVtYWlsKCk7XHJcbn1cclxuXHJcbiAgZXllVGVzdFZpZXcoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLiRhcGkuc2V0QXVkaXREYXRhKGRhdGEpO1xyXG4gICAgXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RyYXgvYXVkaXQvc3RhcnRcIl0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHtcclxuICAgICAgICB0eXBlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUsXHJcbiAgICAgICAgc3RvcmVJZDogZGF0YT8uc3RvcmVJZCxcclxuICAgICAgICBfaWQ6IGRhdGEuYXVkaXRlZElkLFxyXG4gICAgICAgIGV5ZVR5cGUgOmRhdGE/LmNvbW1lbnQgPyBcImZha2VcIiA6IFwiZ2VudWluZVwiLFxyXG4gICAgICAgIFJNRW1haWw6ZGF0YT8uUk1FbWFpbCxcclxuICAgICAgICBjbHVzdGVyOmRhdGE/LmNsdXN0ZXIsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIGxldCBkYXRhMTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwiXCIpO1xyXG4gIGRhdGExLmRhdGUgPSB7XHJcbiAgc3RhcnREYXRlOiB0aGlzLmF1ZGl0RGV0YWlscz8uZmlsZURhdGUsXHJcbiAgZW5kRGF0ZTogdGhpcy5hdWRpdERldGFpbHM/LmZpbGVEYXRlXHJcbn07XHJcbiAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeShkYXRhMSkpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vICBAVmlld0NoaWxkKCdzYW5rZXlDaGFydCcsIHsgc3RhdGljOiB0cnVlIH0pIGNoYXJ0RWxlbWVudCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gIC8vICAgICBjb25zdCByYXdEYXRhID0gW1xyXG4gIC8vICAgICAgIHsgZnJvbTogXCJDdXN0b21pemF0aW9uXCIsIHRvOiBcIkZvcm1hbCBQYW50c1wiLCB2YWx1ZTogMyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJGb3JtYWwgUGFudHNcIiwgdmFsdWU6IDEyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHRvOiBcIkpvZ2dlcnNcIiwgdmFsdWU6IDQgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiSm9nZ2Vyc1wiLCB0bzogXCJGb3JtYWwgUGFudHNcIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUG93ZXIgU3RyZXRjaFwiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiAyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHRvOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHZhbHVlOiA1IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJUcmlhbCBSb29tXCIsIHZhbHVlOiAyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkpvZ2dlcnNcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogMjkgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiUG93ZXIgU3RyZXRjaFwiLCB2YWx1ZTogMiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiA2NCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQb3dlciBTdHJldGNoXCIsIHRvOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkN1c3RvbWl6YXRpb25cIiwgdG86IFwiUGluIFR1Y2sgUGFudHNcIiwgdmFsdWU6IDEwIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkVudHJ5XCIsIHRvOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHZhbHVlOiA0OSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJKb2dnZXJzXCIsIHZhbHVlOiAyOSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB0bzogXCJFeGl0XCIsIHZhbHVlOiA0OSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJKb2dnZXJzXCIsIHRvOiBcIkN1c3RvbWl6YXRpb25cIiwgdmFsdWU6IDYgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdG86IFwiSm9nZ2Vyc1wiLCB2YWx1ZTogMyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQb3dlciBTdHJldGNoXCIsIHRvOiBcIkpvZ2dlcnNcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB2YWx1ZTogNyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJGb3JtYWwgUGFudHNcIiwgdG86IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogNTQgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUG93ZXIgU3RyZXRjaFwiLCB0bzogXCJUcmlhbCBSb29tXCIsIHZhbHVlOiAyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkZvcm1hbCBQYW50c1wiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkZvcm1hbCBQYW50c1wiLCB0bzogXCJQb3dlciBTdHJldGNoXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIlRyaWFsIFJvb21cIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJFeGl0XCIsIHZhbHVlOiA2NCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJQaW4gVHVjayBQYW50c1wiLCB2YWx1ZTogNTQgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiRm9ybWFsIFBhbnRzXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHZhbHVlOiA1IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkpvZ2dlcnNcIiwgdG86IFwiUG93ZXIgU3RyZXRjaFwiLCB2YWx1ZTogNCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB0bzogXCJGb3JtYWwgUGFudHNcIiwgdmFsdWU6IDMgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiQ3VzdG9taXphdGlvblwiLCB2YWx1ZTogMTEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRm9ybWFsIFBhbnRzXCIsIHRvOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlRyaWFsIFJvb21cIiwgdG86IFwiUGluIFR1Y2sgUGFudHNcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJQb3dlciBTdHJldGNoXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkN1c3RvbWl6YXRpb25cIiwgdG86IFwiSm9nZ2Vyc1wiLCB2YWx1ZTogNiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJGb3JtYWwgUGFudHNcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogMTIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiSm9nZ2Vyc1wiLCB0bzogXCJQaW4gVHVjayBQYW50c1wiLCB2YWx1ZTogNCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQb3dlciBTdHJldGNoXCIsIHRvOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogMTggfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRW50cnlcIiwgdG86IFwiVHJpYWwgUm9vbVwiLCB2YWx1ZTogNiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiA1IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkVudHJ5XCIsIHRvOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdmFsdWU6IDE4IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdG86IFwiRm9ybWFsIFBhbnRzXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlRyaWFsIFJvb21cIiwgdG86IFwiQ3VzdG9taXphdGlvblwiLCB2YWx1ZTogMyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJUcmlhbCBSb29tXCIsIHRvOiBcIkV4aXRcIiwgdmFsdWU6IDYgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRm9ybWFsIFBhbnRzXCIsIHRvOiBcIkpvZ2dlcnNcIiwgdmFsdWU6IDQgfVxyXG4gIC8vICAgICBdO1xyXG5cclxuICAvLyAgICAgLy8gQnVpbGQgdW5pcXVlIG5vZGVzXHJcbiAgLy8gICAgIGNvbnN0IGxhYmVscyA9IFsuLi5uZXcgU2V0KHJhd0RhdGEuZmxhdE1hcChkID0+IFtkLmZyb20sIGQudG9dKSldO1xyXG4gIC8vICAgICBjb25zdCBsYWJlbFRvSW5kZXg6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcclxuICAvLyAgICAgbGFiZWxzLmZvckVhY2goKGxhYmVsLCBpKSA9PiAobGFiZWxUb0luZGV4W2xhYmVsXSA9IGkpKTtcclxuXHJcbiAgLy8gICAgIC8vIE1hcCBkYXRhIGZvciBTYW5rZXlcclxuICAvLyAgICAgY29uc3Qgc291cmNlID0gcmF3RGF0YS5tYXAoZCA9PiBsYWJlbFRvSW5kZXhbZC5mcm9tXSk7XHJcbiAgLy8gICAgIGNvbnN0IHRhcmdldCA9IHJhd0RhdGEubWFwKGQgPT4gbGFiZWxUb0luZGV4W2QudG9dKTtcclxuICAvLyAgICAgY29uc3QgdmFsdWUgPSByYXdEYXRhLm1hcChkID0+IGQudmFsdWUpO1xyXG5cclxuICAvLyAgICAgLy8gQXNzaWduIGNvbnNpc3RlbnQgY29sb3JzIChsaWtlIGFtQ2hhcnRzIGRpc3RpbmN0IHBhbGV0dGUpXHJcbiAgLy8gICAgIGNvbnN0IG5vZGVDb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgLy8gICAgICAgXCJDdXN0b21pemF0aW9uXCI6IFwiIzFmNzdiNFwiLFxyXG4gIC8vICAgICAgIFwiRm9ybWFsIFBhbnRzXCI6IFwiI2ZmN2YwZVwiLFxyXG4gIC8vICAgICAgIFwiRW50cnlcIjogXCIjMmNhMDJjXCIsXHJcbiAgLy8gICAgICAgXCJQaW4gVHVjayBQYW50c1wiOiBcIiNkNjI3MjhcIixcclxuICAvLyAgICAgICBcIkpvZ2dlcnNcIjogXCIjOTQ2N2JkXCIsXHJcbiAgLy8gICAgICAgXCJQb3dlciBTdHJldGNoXCI6IFwiIzhjNTY0YlwiLFxyXG4gIC8vICAgICAgIFwiRXhpdFwiOiBcIiNlMzc3YzJcIixcclxuICAvLyAgICAgICBcIlRyaWFsIFJvb21cIjogXCIjMTdiZWNmXCIsXHJcbiAgLy8gICAgICAgXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiOiBcIiNiY2JkMjJcIlxyXG4gIC8vICAgICB9O1xyXG5cclxuICAvLyAgICAgY29uc3Qgbm9kZUNvbG9yQXJyYXkgPSBsYWJlbHMubWFwKGwgPT4gbm9kZUNvbG9yc1tsXSB8fCBcIiM5OTlcIik7XHJcbiAgLy8gICAgIGNvbnN0IGxpbmtDb2xvckFycmF5ID0gcmF3RGF0YS5tYXAoZCA9PiBub2RlQ29sb3JzW2QuZnJvbV0gfHwgXCIjOTk5XCIpO1xyXG5cclxuICAvLyAgICAgY29uc3QgZGF0YTogYW55ID0gW3tcclxuICAvLyAgICAgICB0eXBlOiBcInNhbmtleVwiLFxyXG4gIC8vICAgICAgIG9yaWVudGF0aW9uOiBcImhcIixcclxuICAvLyAgICAgICBub2RlOiB7XHJcbiAgLy8gICAgICAgICBwYWQ6IDE1LFxyXG4gIC8vICAgICAgICAgdGhpY2tuZXNzOiAyMCxcclxuICAvLyAgICAgICAgIGxpbmU6IHsgY29sb3I6IFwiYmxhY2tcIiwgd2lkdGg6IDAuNSB9LFxyXG4gIC8vICAgICAgICAgbGFiZWw6IGxhYmVscyxcclxuICAvLyAgICAgICAgIGNvbG9yOiBub2RlQ29sb3JBcnJheVxyXG4gIC8vICAgICAgIH0sXHJcbiAgLy8gICAgICAgbGluazoge1xyXG4gIC8vICAgICAgICAgc291cmNlLFxyXG4gIC8vICAgICAgICAgdGFyZ2V0LFxyXG4gIC8vICAgICAgICAgdmFsdWUsXHJcbiAgLy8gICAgICAgICBjb2xvcjogbGlua0NvbG9yQXJyYXlcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1dO1xyXG5cclxuICAvLyAgICAgY29uc3QgbGF5b3V0ID0ge1xyXG4gIC8vICAgICAgIHRpdGxlOiB7IHRleHQ6IFwiU2Fua2V5IEZsb3cgKFBsb3RseSB3aXRoIEFtQ2hhcnRzLWxpa2UgQ29sb3JzKVwiIH0sXHJcbiAgLy8gICAgICAgZm9udDogeyBzaXplOiAxMiB9XHJcbiAgLy8gICAgIH07XHJcblxyXG4gIC8vICAgICBQbG90bHkubmV3UGxvdCh0aGlzLmNoYXJ0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBkYXRhLCBsYXlvdXQpO1xyXG4gIC8vICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG15LTVcIj5cclxuICAgIDxkaXYgKGNsaWNrKT1cImJhY2tOYXZpZ2F0aW9uKClcIiBjbGFzcz1cImJ0biBidG4tYW0gYnRuLW91dGxpbmUgcC0zXCI+XHJcbiAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1LjgzMzIgOS45OTk4NEg0LjE2NjVNNC4xNjY1IDkuOTk5ODRMOS45OTk4NCAxNS44MzMyTTQuMTY2NSA5Ljk5OTg0TDkuOTk5ODQgNC4xNjY1XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgIDwvZGl2PjxzcGFuIGNsYXNzPVwibXMtMiB0aXRsZS1oZWFkXCI+QXVkaXQgU2V0dGluZ3M8L3NwYW4+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJyb3cgbXQtNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uICNhY2NvcmRpb249XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAoc2hvdyk9XCJvcGVuSXRlbSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBcIiBuZ2JBY2NvcmRpb25JdGVtIFtjb2xsYXBzZWRdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlVzZXIgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFlZGl0TW9kZVwiIGNsYXNzPVwiIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZUVkaXQoKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgYWxpZ24taXRlbXMtZW5kXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjcgMi40OTk5M0MxNC4zODU5IDIuMjgxMDYgMTQuNjQ1NyAyLjEwNzQ0IDE0LjkzMTcgMS45ODg5OUMxNS4yMTc2IDEuODcwNTQgMTUuNTI0MSAxLjgwOTU3IDE1LjgzMzcgMS44MDk1N0MxNi4xNDMyIDEuODA5NTcgMTYuNDQ5NyAxLjg3MDU0IDE2LjczNTcgMS45ODg5OUMxNy4wMjE2IDIuMTA3NDQgMTcuMjgxNSAyLjI4MTA2IDE3LjUwMDMgMi40OTk5M0MxNy43MTkyIDIuNzE4OCAxNy44OTI4IDIuOTc4NjMgMTguMDExMyAzLjI2NDZDMTguMTI5NyAzLjU1MDU3IDE4LjE5MDcgMy44NTcwNiAxOC4xOTA3IDQuMTY2NTlDMTguMTkwNyA0LjQ3NjEyIDE4LjEyOTcgNC43ODI2MiAxOC4wMTEzIDUuMDY4NTlDMTcuODkyOCA1LjM1NDU1IDE3LjcxOTIgNS42MTQzOSAxNy41MDAzIDUuODMzMjZMNi4yNTAzMyAxNy4wODMzTDEuNjY2OTkgMTguMzMzM0wyLjkxNjk5IDEzLjc0OTlMMTQuMTY3IDIuNDk5OTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI1NzlfMjUxMjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0IERldGFpbHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibXktMiBmb3JtLWxhYmVsIGZzLTQgZnctYm9sZFwiPkFzc2lnbiBBdWRpdCBVc2VyczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRNb2RlOyBlbHNlIHJlYWRvbmx5Vmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWNoaXAtZHJvcGRvd24gW2RhdGFdPVwidXNlckNvbmZpZ0xpc3RcIiBbc2VsZWN0ZWREYXRhXT1cImNvbmZpZ0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTGlzdCk9XCJ1cGRhdGVPd25lcigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLWNoaXAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlWaWV3PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTIgYm9yZGVyLTIgYm9yZGVyLWdyYXktMzAwIHAtMyByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlwIG9mIGNvbmZpZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtMSByb3VuZGVkLTUgY2hpcCBweC0yIG15LTMgcHktMSBiZy1ncmF5LTIwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGlwPy5uYW1lIHx8IGNoaXAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgdGV4dC1lbmRcIiAqbmdJZj1cImVkaXRNb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbEVkaXQoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic3VibWl0T3duZXJzKClcIj5TYXZlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLWFjY29yZGlhbi1jYXJkIG10LTZcIiBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5FbWFpbCBDb25maWd1cmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlZGl0TW9kZTFcIiBjbGFzcz1cIiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVFZGl0MSgpO1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgYWxpZ24taXRlbXMtZW5kXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjcgMi40OTk5M0MxNC4zODU5IDIuMjgxMDYgMTQuNjQ1NyAyLjEwNzQ0IDE0LjkzMTcgMS45ODg5OUMxNS4yMTc2IDEuODcwNTQgMTUuNTI0MSAxLjgwOTU3IDE1LjgzMzcgMS44MDk1N0MxNi4xNDMyIDEuODA5NTcgMTYuNDQ5NyAxLjg3MDU0IDE2LjczNTcgMS45ODg5OUMxNy4wMjE2IDIuMTA3NDQgMTcuMjgxNSAyLjI4MTA2IDE3LjUwMDMgMi40OTk5M0MxNy43MTkyIDIuNzE4OCAxNy44OTI4IDIuOTc4NjMgMTguMDExMyAzLjI2NDZDMTguMTI5NyAzLjU1MDU3IDE4LjE5MDcgMy44NTcwNiAxOC4xOTA3IDQuMTY2NTlDMTguMTkwNyA0LjQ3NjEyIDE4LjEyOTcgNC43ODI2MiAxOC4wMTEzIDUuMDY4NTlDMTcuODkyOCA1LjM1NDU1IDE3LjcxOTIgNS42MTQzOSAxNy41MDAzIDUuODMzMjZMNi4yNTAzMyAxNy4wODMzTDEuNjY2OTkgMTguMzMzM0wyLjkxNjk5IDEzLjc0OTlMMTQuMTY3IDIuNDk5OTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI1NzlfMjUxMjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0IERldGFpbHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGlhbmNlIFRocmVzaG9sZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNvbXBsaWFuY2VGb3JtXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0aHJlc2hvbGRcIiBbZGF0YV09XCJjb21wbGlhbmNlVGhyZXNob2xkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicGVyY2VudGFnZVwiIFtkYXRhXT1cImNvbXBsaWFuY2VQZXJjZW50YWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWVkaXRNb2RlMVwiIGNsYXNzPVwibXQtMyB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWxDb21wbGlhbmNlKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXRDb21wbGlhbmNlKClcIj5TYXZlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGQgbWUtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNzYyXzE1NDMwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAwNCAxMC42NjYzVjcuOTk5NjdNOC4wMDAwNCA1LjMzMzAxSDguMDA2NzFNMTQuNjY2NyA3Ljk5OTY3QzE0LjY2NjcgMTEuNjgxNiAxMS42ODE5IDE0LjY2NjMgOC4wMDAwNCAxNC42NjYzQzQuMzE4MTQgMTQuNjY2MyAxLjMzMzM3IDExLjY4MTYgMS4zMzMzNyA3Ljk5OTY3QzEuMzMzMzcgNC4zMTc3OCA0LjMxODE0IDEuMzMzMDEgOC4wMDAwNCAxLjMzMzAxQzExLjY4MTkgMS4zMzMwMSAxNC42NjY3IDQuMzE3NzggMTQuNjY2NyA3Ljk5OTY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzc2Ml8xNTQzMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWFpbCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc2VudCBpZiB0aGUgY29tcGxpYW5jZSBkb2VzbuKAmXQgbWVldCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj57e2NvbXBsaWFuY2VGb3JtLnZhbHVlPy5wZXJjZW50YWdlfX08L3NwYW4+IHRvIHRoZSBnaXZlbiBFbWFpbCBJRHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm92ZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbXQtNlwiIG5nYkFjY29yZGlvbkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkVtYWlsIExvZ3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIiB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcng9XCIxXCIgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChjaGFuZ2UpPVwic2VhcmNoRGF0YSgpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZngtZGF0ZS1yYW5nZSBmb3JtLWNvbnRyb2wgcHMtMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMjYwcHggIWltcG9ydGFudDtcIiB0eXBlPVwidGV4dFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neERhdGVyYW5nZXBpY2tlck1kIFtkcm9wc109XCInZG93bidcIiBbb3BlbnNdPVwiJ3JpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyYW5nZXNdPVwicmFuZ2VzXCIgW3Nob3dDdXN0b21SYW5nZUxhYmVsXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx3YXlzU2hvd0NhbGVuZGFyc109XCJmYWxzZVwiIFtrZWVwQ2FsZW5kYXJPcGVuaW5nV2l0aFJhbmdlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NhbmNlbF09XCJ0cnVlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVSYW5nZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQXBwbHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwieyBmb3JtYXQ6ICdERC1NTS1ZWVlZJywgZmlyc3REYXk6IDEsIG1vbnRoTmFtZXM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZXNVcGRhdGVkKT1cImRhdGVjaGFuZ2UoJGV2ZW50KVwiIG5hbWU9XCJkYXRlcmFuZ2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMy4zMzMzIDEuNjY2NjNWNC45OTk5Nk02LjY2NjY3IDEuNjY2NjNWNC45OTk5Nk0yLjUgOC4zMzMyOUgxNy41TTQuMTY2NjcgMy4zMzMyOUgxNS44MzMzQzE2Ljc1MzggMy4zMzMyOSAxNy41IDQuMDc5NDggMTcuNSA0Ljk5OTk2VjE2LjY2NjZDMTcuNSAxNy41ODcxIDE2Ljc1MzggMTguMzMzMyAxNS44MzMzIDE4LjMzMzNINC4xNjY2N0MzLjI0NjE5IDE4LjMzMzMgMi41IDE3LjU4NzEgMi41IDE2LjY2NjZWNC45OTk5NkMyLjUgNC4wNzk0OCAzLjI0NjE5IDMuMzMzMjkgNC4xNjY2NyAzLjMzMzI5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbmRyb3Bkb3duKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBteC0yIHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMlwiPkZpbHRlcjwvc3Bhbj4gPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgMTBIMTVNMi41IDVIMTcuNU03LjUgMTVIMTIuNVwiIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIk9wZW5kcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCBwLTQgZHJvcGRvd24yIHBvc2l0aW9uLWFic29sdXRlIHotMSBlbmQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja091dHNpZGUpPVwiY2xvc2VEcm9wZG93bigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi10aXRsZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+RmlsdGVyIE9wdGlvbnM8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGFpbmVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkcm9wZG93bi1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSbURyb3Bkb3duKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBkcm9wZG93bi1pbnB1dCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiUk1zXCIgcmVhZG9ubHkgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUk1zXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldFNlbGVjdGVkUm1zQ291bnQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwIGVuZC0wIHRyYW5zbGF0ZS1taWRkbGUteSBtZS0yIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgdGV4dC13aGl0ZSB0ZXh0LXhzIHJvdW5kZWQtZnVsbCBweC0yIHB5LTAuNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRTZWxlY3RlZFJtc0NvdW50KCkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBjdXN0b20tZHJvcGRvd24tbWVudVwiICpuZ0lmPVwicm1PcGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbWItMiBkcm9wZG93bi1zZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSTXNcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFJtVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImZpbHRlclJtcygpXCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgcHMtMCBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3RBbGxSbXNcIiBbY2hlY2tlZF09XCJpc0FsbFJtc1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxSbXMoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJzZWxlY3RBbGxSbXNcIj5TZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTUgcHMtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBybSBvZiBmaWx0ZXJlZFJtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJybS5lbWFpbFwiIFsobmdNb2RlbCldPVwicm0uY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkUm1zKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2Zvcl09XCJybS5lbWFpbFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBybS51c2VyTmFtZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWhlYWRlciBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNsdXN0ZXJEcm9wZG93bigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZHJvcGRvd24taW5wdXQgY3Vyc29yLXBvaW50ZXIgcGUtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiQ2x1c3RlcnNcIiByZWFkb25seSBwbGFjZWhvbGRlcj1cIlNlbGVjdCBDbHVzdGVyc1wiIC8+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldFNlbGVjdGVkQ2x1c3RlcnNDb3VudCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgZW5kLTAgdHJhbnNsYXRlLW1pZGRsZS15IG1lLTIgYmFkZ2UgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCB0ZXh0LXdoaXRlIHJvdW5kZWQtcGlsbCBweC0yIHB5LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0U2VsZWN0ZWRDbHVzdGVyc0NvdW50KCkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBjdXN0b20tZHJvcGRvd24tbWVudVwiICpuZ0lmPVwiY2x1c3Rlck9wZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBtYi0yIGRyb3Bkb3duLXNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNsdXN0ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hDbHVzdGVyVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImZpbHRlckNsdXN0ZXJzKClcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBwcy0wIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbENsdXN0ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsQ2x1c3RlcnNTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsQ2x1c3RlcnMoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwic2VsZWN0QWxsQ2x1c3RlcnNcIj5TZWxlY3QgQWxsPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNSBwcy0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNsdXN0ZXIgb2YgZmlsdGVyZWRDbHVzdGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJjbHVzdGVyLl9pZFwiIFsobmdNb2RlbCldPVwiY2x1c3Rlci5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRDbHVzdGVycygpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIFtmb3JdPVwiY2x1c3Rlci5faWRcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5jbHVzdGVyTmFtZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgYnRuLXNtIHctNTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJSZXNldCgpXCI+UmVzZXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIHctNTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJBcHBseSgpXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImV4cG9ydFhMU1goKVwiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+RXhwb3J0PC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbm9kYXRhLXRhYmxlXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBleWUgdGVzdCB0YWJsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LW5vd3JhcCB0ZXh0LXN0YXJ0XCI+IDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiBSTSBOYW1lIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LW5vd3JhcCB0ZXh0LXN0YXJ0XCI+PHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gQ2x1c3RlciBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwIHRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ29wdHVtSWQnKVwiPiBPcHRvbSBJRCA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnb3B0dW1JZCcgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdvcHR1bUlkJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1ub3dyYXAgdGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnb3B0b21FbWFpbElkJylcIj4gT3B0b21cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtYWlsIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdvcHRvbUVtYWlsSWQnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnb3B0b21FbWFpbElkJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1ub3dyYXAgdGV4dC1zdGFydFwiPjxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU29ydCgnc3RvcmVOYW1lJylcIj4gU3RvcmUgTmFtZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlTmFtZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LW5vd3JhcCB0ZXh0LXN0YXJ0XCI+PHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Tb3J0KCdhdWRpdGVkQnknKVwiPiBBdWRpdGVkIEJ5IDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdhdWRpdGVkQnknICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnYXVkaXRlZEJ5JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1ub3dyYXAgdGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnY29tcGxpYW5jZVNjb3JlJylcIj4gVGFuZ29cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjb3JlIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdjb21wbGlhbmNlU2NvcmUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnY29tcGxpYW5jZVNjb3JlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1ub3dyYXAgdGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgndHJ1c3RTY29yZScpXCI+IFRydXN0IFNjb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3RydXN0U2NvcmUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAndHJ1c3RTY29yZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LW5vd3JhcCB0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdodW1hblNjb3JlJylcIj4gSHVtYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGl0ZWQgU2NvcmUgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2h1bWFuU2NvcmUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnaHVtYW5TY29yZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LW5vd3JhcCB0ZXh0LXN0YXJ0XCI+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0YWJsZURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJtLXRydW5jYXRlXCIgW3RpdGxlXT1cIml0ZW0uUk1OYW1lXCI+e3sgaXRlbS5STU5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJtLXRydW5jYXRlXCIgW3RpdGxlXT1cIml0ZW0uY2x1c3RlclwiPnt7IGl0ZW0uY2x1c3RlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+e3tpdGVtLm9wdHVtSWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0ub3B0b21FbWFpbElkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+e3tpdGVtLnN0b3JlTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7aXRlbS5hdWRpdGVkQnl9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0uY29tcGxpYW5jZVNjb3JlID8/IFwiLS1cIiB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0udHJ1c3RTY29yZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7aXRlbS5odW1hblNjb3JlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhaXRlbS5hdWRpdGVkSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImV5ZVRlc3RWaWV3KGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBtLTAgYm9yZGVyLTAgYmctdHJhbnNwYXJlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0wLjgzMzI1MiA5Ljk5OTY3QzAuODMzMjUyIDkuOTk5NjcgNC4xNjY1OCAzLjMzMzAxIDkuOTk5OTIgMy4zMzMwMUMxNS44MzMzIDMuMzMzMDEgMTkuMTY2NiA5Ljk5OTY3IDE5LjE2NjYgOS45OTk2N0MxOS4xNjY2IDkuOTk5NjcgMTUuODMzMyAxNi42NjYzIDkuOTk5OTIgMTYuNjY2M0M0LjE2NjU4IDE2LjY2NjMgMC44MzMyNTIgOS45OTk2NyAwLjgzMzI1MiA5Ljk5OTY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuOTk5OTIgMTIuNDk5N0MxMS4zODA2IDEyLjQ5OTcgMTIuNDk5OSAxMS4zODA0IDEyLjQ5OTkgOS45OTk2N0MxMi40OTk5IDguNjE4OTYgMTEuMzgwNiA3LjQ5OTY3IDkuOTk5OTIgNy40OTk2N0M4LjYxOTIxIDcuNDk5NjcgNy40OTk5MiA4LjYxODk2IDcuNDk5OTIgOS45OTk2N0M3LjQ5OTkyIDExLjM4MDQgOC42MTkyMSAxMi40OTk3IDkuOTk5OTIgMTIuNDk5N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXJcIiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJwYWdlU2l6ZVwiIFtjdXJyZW50UGFnZV09XCJvZmZzZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4iXX0=
823
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtYXVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9leWUtdGVzdC1hdWRpdC9leWUtdGVzdC1hdWRpdC9zZXR0aW5ncy1hdWRpdC9zZXR0aW5ncy1hdWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2V5ZS10ZXN0LWF1ZGl0L2V5ZS10ZXN0LWF1ZGl0L3NldHRpbmdzLWF1ZGl0L3NldHRpbmdzLWF1ZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxHQUtiLE1BQU0sZUFBZSxDQUFDO0FBTXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixDQUFDO0FBR3pCLGdEQUFnRDtBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7OztBQU8zQyxNQUFNLE9BQU8sc0JBQXNCO0lBS3ZCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQVpWLE9BQU8sQ0FBTTtJQUNiLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxjQUFjLENBQVk7SUFDMUIsWUFDVSxFQUFxQixFQUNyQixJQUFZLEVBQ1osRUFBZSxFQUNmLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLEtBQXFCLEVBQ3JCLElBQXlCLEVBQ3pCLFlBQXNCLEVBQ3RCLE1BQWM7UUFSZCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFR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RUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVE7U0FDckMsQ0FBQztRQUNHLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7d0dBaDJCVSxzQkFBc0I7NEZBQXRCLHNCQUFzQiwrSEM3Qm5DLHlod0NBeWVVOzs0RkQ1Y0csc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQjt5U0FvQjlCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCB7IEV5ZVRlc3RBdWRpdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZXllLXRlc3QtYXVkaXQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcImRheWpzL2xvY2FsZS9lblwiO1xyXG5pbXBvcnQgeyBhbnkgfSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNS8uaW50ZXJuYWwvY29yZS91dGlsL0FycmF5XCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuLy8gaW1wb3J0ICogYXMgUGxvdGx5IGZyb20gJ3Bsb3RseS5qcy1kaXN0LW1pbic7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXNldHRpbmdzLWF1ZGl0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZXR0aW5ncy1hdWRpdC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vc2V0dGluZ3MtYXVkaXQuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQXVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEF1ZGl0SWQ6IGFueTtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIGNvbXBsaWFuY2VGb3JtOiBGb3JtR3JvdXA7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlICRhcGk6IEV5ZVRlc3RBdWRpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICkge31cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bjInKSAmJiAhdGFyZ2V0LmNsb3Nlc3QoJy5idG4nKSkge1xyXG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiQXVkaXQgLSBFeWUgVGVzdFwiKTtcclxuXHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiBcIlRhbmdvIFRyYXhcIixcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiVGFuZ28gVHJheFwiLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIF0pO1xyXG4gIH1cclxuICBhbGVydFVzZXJzOiBhbnkgPSBbXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcIjY2ODdkOWQxYTI3ZWU4OGY5YTQ0NTdjYlwiLFxyXG4gICAgICB1c2VyTmFtZTogXCJBamlua3lhIE1hbHNoZVwiLFxyXG4gICAgICBlbWFpbDogXCJhamlua3lhLm1hbHNoZUB5b3BtYWlsLmNvbVwiLFxyXG4gICAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCI2Njg3ZDlkMWEyN2VlODhmOWE0NDU3Y2NcIixcclxuICAgICAgdXNlck5hbWU6IFwiSm9obiBEb2VcIixcclxuICAgICAgZW1haWw6IFwiam9obi5kb2VAeW9wbWFpbC5jb21cIixcclxuICAgICAgcm9sZTogXCJtYW5hZ2VyXCIsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgdXNlcnM6IGFueTtcclxuICBhdWRpdERhdGE6IGFueTtcclxuICBjdXJyZW50QXVkaXRUeXBlOiBhbnk7XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCB1c2VyRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcInt9XCIpO1xyXG4gICAgdGhpcy51c2VycyA9IHVzZXJEYXRhO1xyXG4gICAgY29uc3QgaGVhZGVyczogYW55ID0gSlNPTi5wYXJzZShcclxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcInt9XCJcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGl0RGF0YSA9IHRoaXMuJGFwaS5nZXRBdWRpdERhdGEoKVxyXG4gICAgICA/IHRoaXMuJGFwaS5nZXRBdWRpdERhdGEoKVxyXG4gICAgICA6IGhlYWRlcnM7XHJcbiAgICB0aGlzLmNvbXBsaWFuY2VGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHRocmVzaG9sZDogW3sgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlIH1dLFxyXG4gICAgICBwZXJjZW50YWdlOiBbeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWUgfV0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdldFVzZXIoKTtcclxuICAgIHRoaXMuZ2V0RW1haWxDb25maWcoKTtcclxuICAgIHRoaXMuZ2V0QWxsUm0oKTtcclxuICAgIC8vIHRoaXMuYnVpbGREYXRhT2JqZWN0KCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgIHRoaXMudGFibGVEYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgcm1OYW1lOiBcIk9saXZpYVwiLFxyXG4gICAgICAgIGNsdXN0ZXJOYW1lOiBcIkpvaG5cIixcclxuICAgICAgICBvcHR1bUlkOiBcIk9QVDAwMVwiLFxyXG4gICAgICAgIHN0b3JlTmFtZTogXCJMS1NUMTAwMVwiLFxyXG4gICAgICAgIHRhbmdvU2NvcmU6IFwiOSVcIixcclxuICAgICAgICB0cnVzdFNjb3JlOiBcIjklXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBybU5hbWU6IFwiRW1tYVwiLFxyXG4gICAgICAgIGNsdXN0ZXJOYW1lOiBcIkRvZVwiLFxyXG4gICAgICAgIG9wdHVtSWQ6IFwiT1BUMDAyXCIsXHJcbiAgICAgICAgc3RvcmVOYW1lOiBcIkxLU1QxMDAyXCIsXHJcbiAgICAgICAgdGFuZ29TY29yZTogXCI4JVwiLFxyXG4gICAgICAgIHRydXN0U2NvcmU6IFwiOCVcIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHJtTmFtZTogXCJBdmFcIixcclxuICAgICAgICBjbHVzdGVyTmFtZTogXCJTbWl0XCIsXHJcbiAgICAgICAgb3B0dW1JZDogXCJPUFQwMDNcIixcclxuICAgICAgICBzdG9yZU5hbWU6IFwiTEtTVDEwMDNcIixcclxuICAgICAgICB0YW5nb1Njb3JlOiBcIjclXCIsXHJcbiAgICAgICAgdHJ1c3RTY29yZTogXCI3JVwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcm1OYW1lOiBcIklzYWJlbGxhXCIsXHJcbiAgICAgICAgY2x1c3Rlck5hbWU6IFwiSm9obnNvblwiLFxyXG4gICAgICAgIG9wdHVtSWQ6IFwiT1BUMDA0XCIsXHJcbiAgICAgICAgc3RvcmVOYW1lOiBcIkxLU1QxMDA0XCIsXHJcbiAgICAgICAgdGFuZ29TY29yZTogXCI2JVwiLFxyXG4gICAgICAgIHRydXN0U2NvcmU6IFwiNiVcIixcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICAvLyB0aGlzLmFsZXJ0VXNlcnMgPSB0aGlzLmFsZXJ0VXNlcnMubWFwKFxyXG4gICAgLy8gICAodXNlcjogeyB1c2VyTmFtZTogc3RyaW5nOyBlbWFpbDogc3RyaW5nOyByb2xlOiBzdHJpbmcgfSkgPT4gKHtcclxuICAgIC8vICAgICBuYW1lOiB1c2VyLnVzZXJOYW1lLFxyXG4gICAgLy8gICAgIHZhbHVlOiB1c2VyLmVtYWlsLFxyXG4gICAgLy8gICAgIHJvbGU6IHVzZXIucm9sZSxcclxuICAgIC8vICAgfSlcclxuICAgIC8vICk7XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuc3RvcmVJZCA9IHBhcmFtc1snc3RvcmVJZCddO1xyXG4gICAgICB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgPSBwYXJhbXNbXCJ0eXBlXCJdO1xyXG4gICAgICB0aGlzLkF1ZGl0SWQgPSBwYXJhbXNbXCJfaWRcIl07XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ2V0QXVkaXRkZXRhaWxzKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHN0ZXBXaXNlUHJvY2VzczogYW55ID0gW107XHJcbiAgYXVkaXREZXRhaWxzOiBhbnk7XHJcbiAgdGFrZUF1ZGl0OiBhbnk7XHJcbiAgZ2V0QXVkaXRkZXRhaWxzKCkge1xyXG4gICAgLy8gdGhpcy50YWJsZUxvYWRpbmcubmV4dCgnbG9hZGluZycpO1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGlkOiB0aGlzLkF1ZGl0SWQsXHJcbiAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLmdldEF1ZGl0ZGV0YWlscyhwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuZGlzYWJsZWNhbmNlbCA9ICBmYWxzZVxyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0RGV0YWlscyA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hdWRpdERldGFpbHMuYXVkaXRTdGF0dXMgPT09IFwiSW4tUHJvZ3Jlc3NcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnRha2VBdWRpdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzID0gdGhpcy5hdWRpdERldGFpbHM/LnN0ZXBzO1xyXG4gICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5nZXRBdWRpdEhpc3RvcnkoKVxyXG4gICAgICAgICAgICAvLyB9LDEwMClcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICB9XHJcblxyXG4gIG9wZW5JdGVtKGV2ZW50OiBhbnkpIHt9XHJcblxyXG4gIC8vIGNvbXBvbmVudC50c1xyXG5cclxuICBiYWNrTmF2aWdhdGlvbigpIHtcclxuICAgIHRoaXMuJGFwaS5hdWRpdEZpbHRlckRhdGEgPSB7XHJcbiAgICAgIGJhY2s6IFwiYmFja1wiLFxyXG4gICAgICBhdWRpdERldGFpbHM6IHRoaXMuYXVkaXREZXRhaWxzLFxyXG4gICAgfTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2UvdHJheC9hdWRpdFwiXSwge1xyXG4gICAgICBxdWVyeVBhcmFtczoge1xyXG4gICAgICAgIGRhdGU6IHRoaXMuZGF5anMoXHJcbiAgICAgICAgICB0aGlzLmF1ZGl0RGV0YWlscz8uZmlsZURhdGVcclxuICAgICAgICAgICAgPyB0aGlzLmF1ZGl0RGV0YWlscz8uZmlsZURhdGVcclxuICAgICAgICAgICAgOiB0aGlzLmZpbHRlclN0YXJ0RGF0ZVxyXG4gICAgICAgICkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgICB0eXBlVmFsdWU6IFwicGh5c2ljYWxcIixcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZWxlY3RlZENvbXBsaWFuY2VUaHJlc2hvbGQ6IGFueTtcclxuICBzZWxlY3RlZENvbXBsaWFuY2VQZXJjZW50YWdlOiBhbnk7XHJcbiAgY29tcGxpYW5jZVRocmVzaG9sZHMgPSBbXHJcbiAgICB7IHZhbHVlOiBcIjw9XCIsIGxhYmVsOiBcIjw9XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiPFwiLCBsYWJlbDogXCI8XCIgfSxcclxuICAgIHsgdmFsdWU6IFwiPj1cIiwgbGFiZWw6IFwiPj1cIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI+XCIsIGxhYmVsOiBcIj5cIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI9XCIsIGxhYmVsOiBcIj1cIiB9LFxyXG4gIF07XHJcbiAgY29tcGxpYW5jZVBlcmNlbnRhZ2UgPSBbXHJcbiAgICB7IHZhbHVlOiBcIjEwJVwiLCBsYWJlbDogXCIxMCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCIyMCVcIiwgbGFiZWw6IFwiMjAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiMzAlXCIsIGxhYmVsOiBcIjMwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjQwJVwiLCBsYWJlbDogXCI0MCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI1MCVcIiwgbGFiZWw6IFwiNTAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiNjAlXCIsIGxhYmVsOiBcIjYwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjcwJVwiLCBsYWJlbDogXCI3MCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI4MCVcIiwgbGFiZWw6IFwiODAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiOTAlXCIsIGxhYmVsOiBcIjkwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjEwMCVcIiwgbGFiZWw6IFwiMTAwJVwiIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IGFueSA9IHtcclxuICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXlqcygpLnN1YnRyYWN0KDMwLCBcImRheXNcIiksXHJcbiAgICBlbmREYXRlOiB0aGlzLmRheWpzKCksXHJcbiAgfTtcclxuICBmaWx0ZXJTdGFydERhdGU6IGFueSA9IHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgzMCwgXCJkYXlzXCIpLmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcbiAgZmlsdGVyRW5kRGF0ZTogYW55ID0gdGhpcy5kYXlqcygpLnN1YnRyYWN0KDAsIFwiZGF5c1wiKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cclxuICByYW5nZXM6IGFueSA9IHtcclxuICAgIFRvZGF5OiBbdGhpcy5kYXlqcygpLCB0aGlzLmRheWpzKCldLFxyXG4gICAgWWVzdGVyZGF5OiBbXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCBcImRheXNcIiksXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCBcImRheXNcIiksXHJcbiAgICBdLFxyXG4gICAgXCJUaGlzIFdlZWtcIjogW3RoaXMuZGF5anMoKS5zdWJ0cmFjdCg2LCBcImRheXNcIiksIHRoaXMuZGF5anMoKV0sXHJcbiAgICBcIkxhc3QgV2Vla1wiOiBbXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxMywgXCJkYXlzXCIpLnN0YXJ0T2YoXCJkYXlzXCIpLFxyXG4gICAgICB0aGlzLmRheWpzKCkuc3VidHJhY3QoNywgXCJkYXlzXCIpLmVuZE9mKFwiZGF5c1wiKSxcclxuICAgIF0sXHJcbiAgICBcIlRoaXMgTW9udGhcIjogW1xyXG4gICAgICB0aGlzLmRheWpzKCkuc3VidHJhY3QoMzAsIFwiZGF5c1wiKSwgLy8gU3RhcnQgZGF0ZSBpcyAzMCBkYXlzIGJlZm9yZSB0b2RheVxyXG4gICAgICB0aGlzLmRheWpzKCksXHJcbiAgICBdLFxyXG4gICAgXCJMYXN0IE1vbnRoXCI6IFtcclxuICAgICAgdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwibW9udGhcIikuc3RhcnRPZihcIm1vbnRoXCIpLFxyXG4gICAgICB0aGlzLmRheWpzKCkuc3VidHJhY3QoMSwgXCJtb250aFwiKS5lbmRPZihcIm1vbnRoXCIpLFxyXG4gICAgXSxcclxuICB9O1xyXG5cclxuICBkYXRlY2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC5zdGFydERhdGUgfHwgZXZlbnQuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0YXJ0RGF0ZSA9IHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG4gICAgICB0aGlzLmZpbHRlckVuZERhdGUgPSB0aGlzLmRheWpzKGV2ZW50LmVuZERhdGUpLmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcbiAgICAgIHRoaXMuQXBwbHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydFhMU1goKSB7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgIGZyb21EYXRlOiB0aGlzLmZpbHRlclN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmZpbHRlckVuZERhdGUsXHJcbiAgICAgIC8vIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSwgIGl0IGlzIHNob3dzIG9ubHkgcGh5c2ljYWxcclxuICAgICAgUk1MaXN0OiB0aGlzLnNlbGVjdGVkUm1zPy5sZW5ndGggPyB0aGlzLnNlbGVjdGVkUm1zIDogW10sXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50XHJcbiAgICAgICAgPyB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50XHJcbiAgICAgICAgOiB0aGlzLnVzZXJzPy5jbGllbnRJZCxcclxuICAgICAgY2x1c3RlcjogdGhpcy5zZWxlY3RlZENsdXN0ZXJzPy5sZW5ndGhcclxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRDbHVzdGVyc1xyXG4gICAgICAgIDogW10sXHJcbiAgICAgIGlzRXhwb3J0OiB0cnVlLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnRlZENvbHVtbiA/IHRoaXMuc29ydGVkQ29sdW1uIDogXCJSTUVtYWlsXCIsXHJcbiAgICAgIHNvcnRPcmRlcjogdGhpcy5zb3J0T3JkZXIgPyB0aGlzLnNvcnRPcmRlciA6IDEsXHJcbiAgICAgIG9mZnNldDogMSxcclxuICAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLmdldEVtYWlsTG9nRXhwb3J0KHJlcXVlc3REYXRhKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy4kYXBpLnNhdmVBc0V4Y2VsRmlsZShcclxuICAgICAgICAgICAgcmVzLFxyXG4gICAgICAgICAgICBgJHt0aGlzLmN1cnJlbnRBdWRpdFR5cGV9IEV5ZSBUZXN0IFRhYmxlIGBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgICAgIGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBlcnI/LmVycm9yPy5tZXNzYWdlXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIFxyXG4gIH1cclxuXHJcbiAgc2VhcmNoVmFsdWU6IGFueTtcclxuc2VhcmNoRGF0YSgpIHtcclxuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSB0aGlzLnNlYXJjaFZhbHVlO1xyXG4gICAgdGhpcy5nZXRFbWFpbCgpO1xyXG4gIH1cclxuXHJcbiAgdGFibGVEYXRhOiBhbnkgPSBbXTtcclxuXHJcbiAgc29ydGVkQ29sdW1uOiBhbnk7XHJcbiAgc29ydE9yZGVyOiBhbnk7XHJcbiAgb25Tb3J0KGNvbHVtbjogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5zb3J0ZWRDb2x1bW4gPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnRPcmRlciA9IHRoaXMuc29ydE9yZGVyID09PSAxID8gLTEgOiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zb3J0ZWRDb2x1bW4gPSBjb2x1bW4gPyBjb2x1bW4gOiBcIlJNRW1haWxcIjtcclxuICAgICAgdGhpcy5zb3J0T3JkZXIgPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRFbWFpbCgpO1xyXG4gIH1cclxuICBhbGxVc2VyczogYW55O1xyXG4gIGdldFVzZXIoKSB7XHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICB1c2VyVHlwZTogJ2NsaWVudCcsXHJcbiAgICAgIGZpbHRlckJ5Um9sZTogW1wiYWRtaW5cIiwgXCJ1c2VyXCJdLFxyXG4gICAgICBpc0FjdGl2ZTogdGhpcy51c2Vycz8uaXNBY3RpdmUsXHJcbiAgICAgIGNsaWVudElkOnRoaXMuYXVkaXREYXRhPy5jbGllbnQgPyB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50IDogdGhpcy51c2Vycz8uY2xpZW50SWRcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy4kYXBpXHJcbiAgICAgIC5nZXR1c2VyTGlzdChvYmopXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuYWxsVXNlcnMgPSByZXM/LmRhdGE/LnJlc3VsdD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgIGlkOiBpdGVtLl9pZCxcclxuICAgICAgICAgICAgbmFtZTogaXRlbS5lbWFpbCxcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmdldFVzZXJDb25maWcoKTsgLy8gY2FsbCBhZnRlciBhbGxVc2VycyBpcyByZWFkeVxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbmZpZ0RhdGE6IGFueTtcclxuXHJcbiAgdXBkYXRlT3duZXIoc2VsZWN0ZWRFbWFpbDogYW55KSB7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEgPSBzZWxlY3RlZEVtYWlsO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRWRpdCgpIHtcclxuICAgIGlmICghdGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICAvLyBlbnRlcmluZyBlZGl0IG1vZGUg4oaSIG1ha2UgYSB3b3JraW5nIGNvcHlcclxuICAgICAgdGhpcy5jb25maWdEYXRhID0gWy4uLnRoaXMubGFzdFNhdmVkQ29uZmlnXTtcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBsZWF2aW5nIGVkaXQgd2l0aG91dCBzYXZpbmcg4oaSIHJlc3RvcmUgYmFzZWxpbmVcclxuICAgICAgdGhpcy5jb25maWdEYXRhID0gWy4uLnRoaXMubGFzdFNhdmVkQ29uZmlnXTtcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsRWRpdCgpIHtcclxuICAgIC8vIHJldmVydCBiYWNrIHRvIGxhc3Qgc2F2ZWQgc3RhdGVcclxuICAgIHRoaXMuY29uZmlnRGF0YSA9IFsuLi50aGlzLmxhc3RTYXZlZENvbmZpZ107XHJcbiAgICB0aGlzLmVkaXRNb2RlID0gZmFsc2U7XHJcbiAgfVxyXG4gIGVkaXRNb2RlID0gZmFsc2U7XHJcbiAgc3VibWl0T3duZXJzKCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREYXRhPy5jbGllbnQsIC8vIG9yIHRoaXMuY2xpZW50SWRcclxuICAgICAgdXNlckxpc3Q6IHRoaXMuY29uZmlnRGF0YS5tYXAoKG86IGFueSkgPT4gKHtcclxuICAgICAgICBfaWQ6IG8uaWQgPz8gby52YWx1ZSwgLy8g4pyFIHN1cHBvcnQgYm90aCBjYXNlc1xyXG4gICAgICAgIGVtYWlsOiBvLm5hbWUsXHJcbiAgICAgIH0pKSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy4kYXBpXHJcbiAgICAgIC51cGRhdGVVc2VyQ29uZmlnKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRVc2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChyZXM/Lm1lc3NhZ2UgPyByZXM/Lm1lc3NhZ2UgOiBcIkVtYWlsIGNvbmZpZ3VyYXRpb24gdXBkYXRlZCBzdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXCJGYWlsZWQgdG8gdXBkYXRlIG93bmVyc1wiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBlcnI/LmVycm9yPy5tZXNzYWdlKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHRoaXMub25TdWJtaXQoKTtcclxuICB1c2VyQ29uZmlnTGlzdDogYW55ID0gW107XHJcbiAgbGFzdFNhdmVkQ29uZmlnOiBhbnk7XHJcbiAgZ2V0VXNlckNvbmZpZygpIHtcclxuICAgIHRoaXMuJGFwaVxyXG4gICAgICAuZ2V0VXNlckNvbmZpZ0xpc3QodGhpcy5hdWRpdERhdGE/LmNsaWVudClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgLy8gQXNzaWduZWQgdXNlcnNcclxuICAgICAgICAgIHRoaXMuY29uZmlnRGF0YSA9XHJcbiAgICAgICAgICAgIHJlcz8uZGF0YT8ucmVzdWx0Py51c2VyTGlzdD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uX2lkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0uZW1haWwsXHJcbiAgICAgICAgICAgIH0pKSA/PyBbXTtcclxuICAgICAgICAgIHRoaXMubGFzdFNhdmVkQ29uZmlnID0gWy4uLnRoaXMuY29uZmlnRGF0YV07XHJcblxyXG4gICAgICAgICAgLy8gQnVpbGQgc2V0IG9mIGFzc2lnbmVkIGlkc1xyXG4gICAgICAgICAgY29uc3QgYXNzaWduZWRJZHMgPSBuZXcgU2V0KHRoaXMuY29uZmlnRGF0YS5tYXAoKHU6IGFueSkgPT4gdS5pZCkpO1xyXG5cclxuICAgICAgICAgIC8vIEZpbHRlciBmcm9tIGFsbFVzZXJzIChub3QgZnJvbSB1c2VyQ29uZmlnTGlzdCEpXHJcbiAgICAgICAgICB0aGlzLnVzZXJDb25maWdMaXN0ID0gdGhpcy5hbGxVc2Vycy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh1OiBhbnkpID0+ICFhc3NpZ25lZElkcy5oYXModS5pZClcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIGVtYWlsIGNvbmdpZyBtZXRob2QgYW5kIHZhcmlhYmxlc1xyXG4gIGVtYWlsQ29uZmlnTGlzdDogYW55O1xyXG4gIGVkaXRNb2RlMSA9IHRydWU7XHJcbiAgdG9nZ2xlRWRpdDEoKSB7XHJcbiAgICB0aGlzLmVkaXRNb2RlMSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21wbGlhbmNlRm9ybS5lbmFibGUoKTtcclxuICB9XHJcbiAgZ2V0RW1haWxDb25maWcoKSB7XHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLmdldEVtYWlsQ29uZmlnTGlzdChcclxuICAgICAgICB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50ID8gdGhpcy5hdWRpdERhdGE/LmNsaWVudCA6IHRoaXMudXNlcnM/LmNsaWVudElkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5lbWFpbENvbmZpZ0xpc3QgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuXHJcbiAgICAgICAgICAvLyBTdXBwb3NlIGJhY2tlbmQgcmV0dXJucyBzb21ldGhpbmcgbGlrZTpcclxuICAgICAgICAgIC8vIHsgdGhyZXNob2xkOiBcIjEwXCIsIHBlcmNlbnRhZ2U6IFwiODBcIiB9XHJcbiAgICAgICAgICBjb25zdCBpbml0aWFsRGF0YSA9IHtcclxuICAgICAgICAgICAgdGhyZXNob2xkOiB0aGlzLmVtYWlsQ29uZmlnTGlzdD8uY29tcGxpYW5jZVRocmVzaG9sZD8uY29uZGl0aW9uLFxyXG4gICAgICAgICAgICBwZXJjZW50YWdlOiB0aGlzLmVtYWlsQ29uZmlnTGlzdD8uY29tcGxpYW5jZVRocmVzaG9sZD8udmFsdWUsXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIC8vIEZpbGwgcmVhY3RpdmUgZm9ybSB3aXRoIHZhbHVlc1xyXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlRm9ybS5wYXRjaFZhbHVlKGluaXRpYWxEYXRhKTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsYXN0U2F2ZWRDb21wbGlhbmNlOiBhbnk7XHJcbiAgc3VibWl0Q29tcGxpYW5jZSgpIHtcclxuICAgIGlmICh0aGlzLmNvbXBsaWFuY2VGb3JtLmludmFsaWQpIHJldHVybjtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50LFxyXG4gICAgICBjb21wbGlhbmNlVGhyZXNob2xkOiB7XHJcbiAgICAgICAgY29uZGl0aW9uOiB0aGlzLmNvbXBsaWFuY2VGb3JtLnZhbHVlLnRocmVzaG9sZCxcclxuICAgICAgICB2YWx1ZTogdGhpcy5jb21wbGlhbmNlRm9ybS52YWx1ZS5wZXJjZW50YWdlLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLnVwZGF0ZUVtYWlsQ29uZmlnKHRoaXMuZW1haWxDb25maWdMaXN0Py5faWQsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KFxyXG4gICAgICAgICAgICByZXM/Lm1lc3NhZ2VcclxuICAgICAgICAgICAgICA/IGBFbWFpbCBjb25maWd1cmF0aW9uYCArIHJlcz8ubWVzc2FnZVxyXG4gICAgICAgICAgICAgIDogXCJDb21wbGlhbmNlIHNldHRpbmdzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmdldEVtYWlsQ29uZmlnKCk7IC8vIHVwZGF0ZSBiYXNlbGluZVxyXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlRm9ybS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLmVkaXRNb2RlMSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiBjb25zb2xlLmVycm9yKFwiVXBkYXRlIGZhaWxlZDpcIiwgZXJyKSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxDb21wbGlhbmNlKCkge1xyXG4gICAgdGhpcy5jb21wbGlhbmNlRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB0aGlzLmVkaXRNb2RlMSA9IHRydWU7XHJcbiAgICB0aGlzLmdldEVtYWlsQ29uZmlnKCk7XHJcbiAgfVxyXG4gIC8vIFJNc1xyXG4gIC8vIFJtTGlzdDogYW55W10gPSBbXTtcclxuICBmaWx0ZXJlZFJtczogYW55W10gPSBbXTtcclxuICBzZWFyY2hSbVRleHQgPSBcIlwiO1xyXG5cclxuICAvLyBDbHVzdGVyc1xyXG4gIENsdXN0ZXJMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGZpbHRlcmVkQ2x1c3RlcnM6IGFueVtdID0gW107XHJcbiAgc2VhcmNoQ2x1c3RlclRleHQgPSBcIlwiO1xyXG5cclxuICAvLyBEcm9wZG93bnNcclxuICBPcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICBkcm9wZG93bk9wZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBPcGVuL2Nsb3NlIGRyb3Bkb3duXHJcbiAgb3BlbmRyb3Bkb3duKCkge1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSAhdGhpcy5PcGVuZHJvcGRvd247XHJcbiAgfVxyXG4gIGNsb3NlRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IG51bGw7XHJcbiAgfVxyXG4gIHJtT3BlbiA9IGZhbHNlO1xyXG4gIGNsdXN0ZXJPcGVuID0gZmFsc2U7XHJcblxyXG4gIHRvZ2dsZVJtRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLnJtT3BlbiA9ICF0aGlzLnJtT3BlbjtcclxuICAgIHRoaXMuY2x1c3Rlck9wZW4gPSBmYWxzZTsgLy8gY2xvc2Ugb3RoZXJcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNsdXN0ZXJEcm9wZG93bigpIHtcclxuICAgIHRoaXMuY2x1c3Rlck9wZW4gPSAhdGhpcy5jbHVzdGVyT3BlbjtcclxuICAgIHRoaXMucm1PcGVuID0gZmFsc2U7IC8vIGNsb3NlIG90aGVyXHJcbiAgfVxyXG5cclxuICBjbG9zZUFsbERyb3Bkb3ducygpIHtcclxuICAgIHRoaXMucm1PcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsdXN0ZXJPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5SbUxpc3Q6YW55W10gPSBbXHJcbiAge1xyXG4gICAgX2lkOiBcIjFcIixcclxuICAgIHVzZXJOYW1lOiBcIkFqYXkgTVwiLFxyXG4gICAgZW1haWw6IFwibWFyZWxsYXB1ZGkuYWpheUBsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCIyXCIsXHJcbiAgICB1c2VyTmFtZTogXCJBbmlyYmFuIEdob3NoXCIsXHJcbiAgICBlbWFpbDogXCJhbmlyYmFuLmdob3NoQGxlbnNrYXJ0LmNvbVwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjNcIixcclxuICAgIHVzZXJOYW1lOiBcIkF2YWRoZXNoIFNoYXJtYVwiLFxyXG4gICAgZW1haWw6IFwiYXZhZGhlc2gua3VtYXJAbGVuc2thcnQuY29tXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiNFwiLFxyXG4gICAgdXNlck5hbWU6IFwiQXl1c2ggR3VwdGFcIixcclxuICAgIGVtYWlsOiBcImF5dXNoLmd1cHRhMUBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjVcIixcclxuICAgIHVzZXJOYW1lOiBcIkRoaXJlbiBCaXNodFwiLFxyXG4gICAgZW1haWw6IFwiZGhpcmVuZHJhLmJpc2h0QHRoZWxlbnNrYXJ0LmNvbVwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjZcIixcclxuICAgIHVzZXJOYW1lOiBcIk11ZWVuIEtoYW5cIixcclxuICAgIGVtYWlsOiBcIm11ZWVuLmtoYW5AdGhlbGVuc2thcnQuY29tXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICBfaWQ6IFwiN1wiLFxyXG4gICAgdXNlck5hbWU6IFwiUmVzaG1hIFNoZXR0eVwiLFxyXG4gICAgZW1haWw6IFwicmVzaG1hLnNoZXR0eUBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjhcIixcclxuICAgIHVzZXJOYW1lOiBcIlNyaW5pdmFzIFJlZGR5XCIsXHJcbiAgICBlbWFpbDogXCJzcmluaXZhcy5yZWRkeUB0aGVsZW5za2FydC5jb21cIixcclxuICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIF9pZDogXCI5XCIsXHJcbiAgICB1c2VyTmFtZTogXCJTdXJlc2ggQmFsYWppIFJcIixcclxuICAgIGVtYWlsOiBcInN1cmVzaC5yQHRoZWxlbnNrYXJ0LmNvbVwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjEwXCIsXHJcbiAgICB1c2VyTmFtZTogXCJUaHVsYXNpIEtyaXNobmFcIixcclxuICAgIGVtYWlsOiBcImtyaXNobmEudGh1bGFzaUBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjExXCIsXHJcbiAgICB1c2VyTmFtZTogXCJWaWplZXNoIFYgTFwiLFxyXG4gICAgZW1haWw6IFwidmlqZWVzaC52bEBsZW5za2FydC5pblwiLFxyXG4gICAgcm9sZTogXCJhZG1pblwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgX2lkOiBcIjEyXCIsXHJcbiAgICB1c2VyTmFtZTogXCJLdW5hbCBTaGFybWFcIixcclxuICAgIGVtYWlsOiBcImt1bmFsLnNoYXJtYUBsZW5za2FydC5tb2JpXCIsXHJcbiAgICByb2xlOiBcImFkbWluXCIsXHJcbiAgfSxcclxuXTtcclxuICAvKiogLS0tLSBSTXMgLS0tLSAqL1xyXG4gIGdldEFsbFJtKCkge1xyXG4gICAgLy8gdGhpcy4kYXBpLmdldFJtTGlzdCh0aGlzLmF1ZGl0RGF0YT8uY2xpZW50KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAvLyAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgLy8gICAgIGNvbnN0IHJlc3VsdCA9IEFycmF5LmlzQXJyYXkocmVzLmRhdGEucmVzdWx0KVxyXG4gICAgLy8gICAgICAgPyByZXMuZGF0YS5yZXN1bHRcclxuICAgIC8vICAgICAgIDogW3Jlcy5kYXRhLnJlc3VsdF07XHJcbiAgICAgICAgdGhpcy5SbUxpc3QgPSB0aGlzLlJtTGlzdC5tYXAoKHJtOiBhbnkpID0+ICh7IC4uLnJtLCBjaGVja2VkOiB0cnVlIH0pKTsgLy8g4pyFIHByZS1zZWxlY3QgYWxsXHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZFJtcyA9IFsuLi50aGlzLlJtTGlzdF07XHJcbiAgICAgICAgLy8tLSBPbGQgY29kZSAtLVxyXG4gICAgICAgIC8vIHRoaXMuZ2V0QWxsR3JvdXBzKHRoaXMuUm1MaXN0KTtcclxuICAgICAgICAvLyB0aGlzLkFwcGx5KCk7XHJcbiAgICAgICAgdGhpcy5nZXRBbGxHcm91cHNQcm9taXNlKHRoaXMuUm1MaXN0KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuQXBwbHkoKTtcclxuICAgICAgICB9KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJSbXMoKSB7XHJcbiAgICBjb25zdCBzZWFyY2ggPSB0aGlzLnNlYXJjaFJtVGV4dC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5maWx0ZXJlZFJtcyA9IHRoaXMuUm1MaXN0LmZpbHRlcigocikgPT5cclxuICAgICAgci51c2VyTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFJtc1NlbGVjdGVkKCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5maWx0ZXJlZFJtcy5sZW5ndGggPiAwICYmIHRoaXMuZmlsdGVyZWRSbXMuZXZlcnkoKHIpID0+IHIuY2hlY2tlZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTZWxlY3RBbGxSbXMoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgdGhpcy5maWx0ZXJlZFJtcy5mb3JFYWNoKChyKSA9PiAoci5jaGVja2VkID0gY2hlY2tlZCkpO1xyXG50aGlzLnVwZGF0ZVNlbGVjdGVkUm1zKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWxlY3RlZFJtcygpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5SbUxpc3QuZmlsdGVyKChyKSA9PiByLmNoZWNrZWQpO1xyXG4gICAgLy8gdGhpcy5nZXRBbGxHcm91cHMoc2VsZWN0ZWQpOyAvLyBhdXRvIHJlZnJlc2ggY2x1c3RlcnNcclxuICAgIHRoaXMuZ2V0QWxsR3JvdXBzUHJvbWlzZShzZWxlY3RlZCkudGhlbigoKSA9PiB7IFxyXG4gICAgICAvLyBhdXRvIHJlZnJlc2ggY2x1c3RlcnMgd2l0aCBwcm9taXNlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5zZWxlY3RlZFJtc0xhYmVsKCk6IHN0cmluZyB7XHJcbiAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmZpbHRlcmVkUm1zLmZpbHRlcihybSA9PiBybS5jaGVja2VkKTtcclxuICBpZiAoc2VsZWN0ZWQubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XHJcbiAgcmV0dXJuIHNlbGVjdGVkWzBdLnVzZXJOYW1lO1xyXG59XHJcbmdldFNlbGVjdGVkUm1zQ291bnQoKTogbnVtYmVyIHtcclxuICByZXR1cm4gdGhpcy5maWx0ZXJlZFJtcy5maWx0ZXIocm0gPT4gcm0uY2hlY2tlZCkubGVuZ3RoO1xyXG59XHJcbiAgLyoqIC0tLS0gQ2x1c3RlcnMgLS0tLSAqL1xyXG4vLyBnZXRBbGxHcm91cHMoZXZlbnQ/OiBhbnlbXSkge1xyXG4vLyAgIGxldCBybUxpc3Q6IHN0cmluZ1tdID0gW107XHJcblxyXG4vLyAgIGlmIChldmVudD8ubGVuZ3RoKSB7XHJcbi8vICAgICBybUxpc3QgPSBldmVudC5tYXAoKG8pID0+IG8uZW1haWwpO1xyXG4vLyAgIH0gZWxzZSBpZiAodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJybVwiKSB7XHJcbi8vICAgICBybUxpc3QgPSBbdGhpcy51c2Vycz8uZW1haWxdO1xyXG4vLyAgIH1cclxuXHJcbi8vICAgY29uc3Qgb2JqID0geyBcclxuLy8gICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50ID8gdGhpcy5hdWRpdERhdGE/LmNsaWVudCA6IHRoaXMudXNlcnM/LmNsaWVudElkLFxyXG4vLyAgICAgcm1MaXN0IFxyXG4vLyAgIH07XHJcblxyXG4vLyAgIHRoaXMuJGFwaS5nZXRDbHVzdGVycyhvYmopLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuLy8gICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCkge1xyXG4vLyAgICAgICAvLyBJbml0aWFsaXplIGNsdXN0ZXJzIHdpdGggY2hlY2tlZD1mYWxzZVxyXG4vLyAgICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gKHJlcy5kYXRhLnJlc3VsdCB8fCBbXSkubWFwKChjOiBhbnkpID0+ICh7XHJcbi8vICAgICAgICAgLi4uYyxcclxuLy8gICAgICAgICBjaGVja2VkOiB0cnVlXHJcbi8vICAgICAgIH0pKTtcclxuLy8gICAgICAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzID0gWy4uLnRoaXMuQ2x1c3Rlckxpc3RdO1xyXG4vLyAgICAgfSBlbHNlIHtcclxuLy8gICAgICAgdGhpcy5DbHVzdGVyTGlzdCA9IFtdO1xyXG4vLyAgICAgICB0aGlzLmZpbHRlcmVkQ2x1c3RlcnMgPSBbXTtcclxuLy8gICAgIH1cclxuLy8gICB9KTtcclxuLy8gfVxyXG5cclxuICBnZXRBbGxHcm91cHNQcm9taXNlKGV2ZW50PzogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGxldCBybUxpc3Q6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgICBpZiAoZXZlbnQ/Lmxlbmd0aCkge1xyXG4gICAgICAgIHJtTGlzdCA9IGV2ZW50Lm1hcCgobykgPT4gby5lbWFpbCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy51c2Vycz8ucm9sZSA9PT0gXCJybVwiKSB7XHJcbiAgICAgICAgcm1MaXN0ID0gW3RoaXMudXNlcnM/LmVtYWlsXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50ID8/IHRoaXMudXNlcnM/LmNsaWVudElkLFxyXG4gICAgICAgIHJtTGlzdFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy4kYXBpLmdldENsdXN0ZXJzKG9iaikuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gKHJlcy5kYXRhLnJlc3VsdCB8fCBbXSkubWFwKChjOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgLi4uYyxcclxuICAgICAgICAgICAgICBjaGVja2VkOiB0cnVlLFxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRDbHVzdGVycyA9IFsuLi50aGlzLkNsdXN0ZXJMaXN0XTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuQ2x1c3Rlckxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXNvbHZlKCk7IC8vIGNvbXBsZXRpb25cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiByZWplY3QoZXJyKSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5maWx0ZXJDbHVzdGVycygpIHtcclxuICBjb25zdCBzZWFyY2ggPSB0aGlzLnNlYXJjaENsdXN0ZXJUZXh0LnRvTG93ZXJDYXNlKCk7XHJcbiAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzID0gdGhpcy5DbHVzdGVyTGlzdC5maWx0ZXIoKGMpID0+XHJcbiAgICBjLmNsdXN0ZXJOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKVxyXG4gICk7XHJcbn1cclxuXHJcbmlzQWxsQ2x1c3RlcnNTZWxlY3RlZCgpIHtcclxuICByZXR1cm4gKFxyXG4gICAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzLmxlbmd0aCA+IDAgJiZcclxuICAgIHRoaXMuZmlsdGVyZWRDbHVzdGVycy5ldmVyeSgoYykgPT4gYy5jaGVja2VkKVxyXG4gICk7XHJcbn1cclxuXHJcbnRvZ2dsZVNlbGVjdEFsbENsdXN0ZXJzKGV2ZW50OiBhbnkpIHtcclxuICBjb25zdCBjaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzLmZvckVhY2goKGMpID0+IChjLmNoZWNrZWQgPSBjaGVja2VkKSk7XHJcbiAgdGhpcy51cGRhdGVTZWxlY3RlZENsdXN0ZXJzKCk7XHJcbn1cclxuXHJcbnVwZGF0ZVNlbGVjdGVkQ2x1c3RlcnMoKSB7XHJcbiAgdGhpcy5zZWxlY3RlZENsdXN0ZXJzID0gdGhpcy5DbHVzdGVyTGlzdFxyXG4gICAgLmZpbHRlcihjID0+IGMuY2hlY2tlZClcclxuICAgIC5tYXAoYyA9PiBjLl9pZCk7IC8vIG9yIGMuY2x1c3Rlck5hbWUgaWYgbmVlZGVkXHJcbn1cclxuXHJcbnNlbGVjdGVkQ2x1c3RlcnNMYWJlbCgpIHtcclxuICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuQ2x1c3Rlckxpc3QuZmlsdGVyKChjKSA9PiBjLmNoZWNrZWQpO1xyXG4gIGlmIChzZWxlY3RlZC5sZW5ndGggPT09IDApIHJldHVybiAnJztcclxuICByZXR1cm4gc2VsZWN0ZWRbMF0uY2x1c3Rlck5hbWU7XHJcbn1cclxuXHJcbmdldFNlbGVjdGVkQ2x1c3RlcnNDb3VudCgpIHtcclxuICByZXR1cm4gdGhpcy5DbHVzdGVyTGlzdC5maWx0ZXIoYyA9PiBjLmNoZWNrZWQpLmxlbmd0aDtcclxuICAvLyByZXR1cm4gY291bnQgPiAxID8gY291bnQgLSAxIDogMDsgLy8gU2hvdyBcIitOIG90aGVyc1wiXHJcbn1cclxuXHJcbiAgLyoqIC0tLS0gQXBwbHkgLyBSZXNldCAtLS0tICovXHJcbiAgUmVzZXQoKSB7XHJcbiAgICB0aGlzLlJtTGlzdC5mb3JFYWNoKChyKSA9PiAoci5jaGVja2VkID0gdHJ1ZSkpO1xyXG4gICAgdGhpcy5DbHVzdGVyTGlzdC5mb3JFYWNoKChjKSA9PiAoYy5jaGVja2VkID0gdHJ1ZSkpO1xyXG4gICAgdGhpcy5maWx0ZXJlZFJtcyA9IFsuLi50aGlzLlJtTGlzdF07XHJcbiAgICB0aGlzLmZpbHRlcmVkQ2x1c3RlcnMgPSBbLi4udGhpcy5DbHVzdGVyTGlzdF07XHJcbiAgICAgICB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICAgdGhpcy5nZXRFbWFpbCgpXHJcbiAgfVxyXG4gIHNlbGVjdGVkUm1zOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZENsdXN0ZXJzOiBhbnkgPSBbXTtcclxuICBBcHBseSgpIHtcclxuICAgIGNvbnN0IGRhdGVQaXBlID0gbmV3IERhdGVQaXBlKFwiZW4tVVNcIik7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm1zID0gdGhpcy5SbUxpc3QuZmlsdGVyKChyKSA9PiByLmNoZWNrZWQpLm1hcCgocikgPT4gci5lbWFpbCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2x1c3RlcnMgPSB0aGlzLkNsdXN0ZXJMaXN0LmZpbHRlcigoYykgPT4gYy5jaGVja2VkKS5tYXAoXHJcbiAgICAgIChjKSA9PiBjLmNsdXN0ZXJOYW1lXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZXRFbWFpbCgpO1xyXG4gICAgdGhpcy5ybU9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY2x1c3Rlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJTdGFydERhdGUpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdGFydERhdGUgPSBkYXRlUGlwZS50cmFuc2Zvcm0oXHJcbiAgICAgICAgdGhpcy5maWx0ZXJTdGFydERhdGUsXHJcbiAgICAgICAgXCJ5eXl5LU1NLWRkXCJcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpbHRlckVuZERhdGUpIHtcclxuICAgICAgdGhpcy5maWx0ZXJFbmREYXRlID0gZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZmlsdGVyRW5kRGF0ZSwgXCJ5eXl5LU1NLWRkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvZmZzZXQgPSAxO1xyXG4gIGxpbWl0ID0gMTA7XHJcbnBhZ2VTaXplID0gMTA7ICAgICAgICAgICAgXHJcbnBhZ2luYXRpb25TaXplcyA9IFsxMCwyMCwzMF07IFxyXG50b3RhbEl0ZW1zID0gMDtcclxuICBzZXRQYWdpbmF0aW9uU2l6ZXMoKSB7XHJcbiAgICBpZiAodGhpcy50b3RhbEl0ZW1zID4gMTApIHtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFt0aGlzLnRvdGFsSXRlbXNdOyAvLyBKdXN0IG9uZSBvcHRpb24gaWYgbGVzcyB0aGFuIDEwXHJcbiAgICB9XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uU2l6ZXNbMF07XHJcbiAgfSBcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgbm9EYXRhID0gZmFsc2U7XHJcbiAgZ2V0RW1haWwoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmZpbHRlclN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmZpbHRlckVuZERhdGUsXHJcbiAgICAgIC8vIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSxcclxuICAgICAgUk1MaXN0OiB0aGlzLnNlbGVjdGVkUm1zPy5sZW5ndGggPyB0aGlzLnNlbGVjdGVkUm1zIDogW10sXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50XHJcbiAgICAgICAgPyB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50XHJcbiAgICAgICAgOiB0aGlzLnVzZXJzPy5jbGllbnRJZCxcclxuICAgICAgY2x1c3RlcjogdGhpcy5zZWxlY3RlZENsdXN0ZXJzPy5sZW5ndGhcclxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRDbHVzdGVyc1xyXG4gICAgICAgIDogW10sXHJcbiAgICAgIGlzRXhwb3J0OiBmYWxzZSxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUsXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0ZWRDb2x1bW4gPyB0aGlzLnNvcnRlZENvbHVtbiA6IFwiUk1FbWFpbFwiLFxyXG4gICAgICBzb3J0T3JkZXI6IHRoaXMuc29ydE9yZGVyID8gdGhpcy5zb3J0T3JkZXIgOiAxLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxyXG4gICAgICBsaW1pdDogdGhpcy5saW1pdCxcclxuICAgIH07XHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLmdldEVtYWlsTG9nKG9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzPy5kYXRhPy5jb3VudCB8fCAwO1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJVcGRhdGUgZmFpbGVkOlwiLCBlcnIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbm9uUGFnZUNoYW5nZShwYWdlOiBudW1iZXIpIHtcclxuICB0aGlzLm9mZnNldCA9IHBhZ2U7XHJcbiAgdGhpcy5nZXRFbWFpbCgpOyAvLyByZWxvYWQgd2l0aCBuZXcgcGFnZVxyXG59XHJcblxyXG5vblBhZ2VTaXplQ2hhbmdlKHNpemU6IG51bWJlcikge1xyXG4gIHRoaXMucGFnZVNpemUgPSBzaXplO1xyXG4gIHRoaXMubGltaXQgPSBzaXplO1xyXG4gIHRoaXMub2Zmc2V0ID0gMTsgICAvLyByZXNldCB0byBmaXJzdCBwYWdlIHdoZW4gcGFnZSBzaXplIGNoYW5nZXNcclxuICB0aGlzLmdldEVtYWlsKCk7XHJcbn1cclxuXHJcbiAgZXllVGVzdFZpZXcoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLiRhcGkuc2V0QXVkaXREYXRhKGRhdGEpO1xyXG4gICAgXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RyYXgvYXVkaXQvc3RhcnRcIl0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHtcclxuICAgICAgICB0eXBlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUsXHJcbiAgICAgICAgc3RvcmVJZDogZGF0YT8uc3RvcmVJZCxcclxuICAgICAgICBfaWQ6IGRhdGEuYXVkaXRlZElkLFxyXG4gICAgICAgIGV5ZVR5cGUgOmRhdGE/LmNvbW1lbnQgPyBcImZha2VcIiA6IFwiZ2VudWluZVwiLFxyXG4gICAgICAgIFJNRW1haWw6ZGF0YT8uUk1FbWFpbCxcclxuICAgICAgICBjbHVzdGVyOmRhdGE/LmNsdXN0ZXIsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIGxldCBkYXRhMTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwiXCIpO1xyXG4gIGRhdGExLmRhdGUgPSB7XHJcbiAgc3RhcnREYXRlOiB0aGlzLmF1ZGl0RGV0YWlscz8uZmlsZURhdGUsXHJcbiAgZW5kRGF0ZTogdGhpcy5hdWRpdERldGFpbHM/LmZpbGVEYXRlXHJcbn07XHJcbiAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeShkYXRhMSkpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vICBAVmlld0NoaWxkKCdzYW5rZXlDaGFydCcsIHsgc3RhdGljOiB0cnVlIH0pIGNoYXJ0RWxlbWVudCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gIC8vICAgICBjb25zdCByYXdEYXRhID0gW1xyXG4gIC8vICAgICAgIHsgZnJvbTogXCJDdXN0b21pemF0aW9uXCIsIHRvOiBcIkZvcm1hbCBQYW50c1wiLCB2YWx1ZTogMyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJGb3JtYWwgUGFudHNcIiwgdmFsdWU6IDEyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHRvOiBcIkpvZ2dlcnNcIiwgdmFsdWU6IDQgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiSm9nZ2Vyc1wiLCB0bzogXCJGb3JtYWwgUGFudHNcIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUG93ZXIgU3RyZXRjaFwiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiAyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHRvOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHZhbHVlOiA1IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJUcmlhbCBSb29tXCIsIHZhbHVlOiAyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkpvZ2dlcnNcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogMjkgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiUG93ZXIgU3RyZXRjaFwiLCB2YWx1ZTogMiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiA2NCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQb3dlciBTdHJldGNoXCIsIHRvOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkN1c3RvbWl6YXRpb25cIiwgdG86IFwiUGluIFR1Y2sgUGFudHNcIiwgdmFsdWU6IDEwIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkVudHJ5XCIsIHRvOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHZhbHVlOiA0OSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJKb2dnZXJzXCIsIHZhbHVlOiAyOSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB0bzogXCJFeGl0XCIsIHZhbHVlOiA0OSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJKb2dnZXJzXCIsIHRvOiBcIkN1c3RvbWl6YXRpb25cIiwgdmFsdWU6IDYgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdG86IFwiSm9nZ2Vyc1wiLCB2YWx1ZTogMyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQb3dlciBTdHJldGNoXCIsIHRvOiBcIkpvZ2dlcnNcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB2YWx1ZTogNyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJGb3JtYWwgUGFudHNcIiwgdG86IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogNTQgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUG93ZXIgU3RyZXRjaFwiLCB0bzogXCJUcmlhbCBSb29tXCIsIHZhbHVlOiAyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkZvcm1hbCBQYW50c1wiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkZvcm1hbCBQYW50c1wiLCB0bzogXCJQb3dlciBTdHJldGNoXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIlRyaWFsIFJvb21cIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJFeGl0XCIsIHZhbHVlOiA2NCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJQaW4gVHVjayBQYW50c1wiLCB2YWx1ZTogNTQgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiRm9ybWFsIFBhbnRzXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHZhbHVlOiA1IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkpvZ2dlcnNcIiwgdG86IFwiUG93ZXIgU3RyZXRjaFwiLCB2YWx1ZTogNCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB0bzogXCJGb3JtYWwgUGFudHNcIiwgdmFsdWU6IDMgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiQ3VzdG9taXphdGlvblwiLCB2YWx1ZTogMTEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRm9ybWFsIFBhbnRzXCIsIHRvOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlRyaWFsIFJvb21cIiwgdG86IFwiUGluIFR1Y2sgUGFudHNcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJQb3dlciBTdHJldGNoXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkN1c3RvbWl6YXRpb25cIiwgdG86IFwiSm9nZ2Vyc1wiLCB2YWx1ZTogNiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJGb3JtYWwgUGFudHNcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogMTIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiSm9nZ2Vyc1wiLCB0bzogXCJQaW4gVHVjayBQYW50c1wiLCB2YWx1ZTogNCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQb3dlciBTdHJldGNoXCIsIHRvOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogMTggfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRW50cnlcIiwgdG86IFwiVHJpYWwgUm9vbVwiLCB2YWx1ZTogNiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiA1IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkVudHJ5XCIsIHRvOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdmFsdWU6IDE4IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdG86IFwiRm9ybWFsIFBhbnRzXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlRyaWFsIFJvb21cIiwgdG86IFwiQ3VzdG9taXphdGlvblwiLCB2YWx1ZTogMyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJUcmlhbCBSb29tXCIsIHRvOiBcIkV4aXRcIiwgdmFsdWU6IDYgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRm9ybWFsIFBhbnRzXCIsIHRvOiBcIkpvZ2dlcnNcIiwgdmFsdWU6IDQgfVxyXG4gIC8vICAgICBdO1xyXG5cclxuICAvLyAgICAgLy8gQnVpbGQgdW5pcXVlIG5vZGVzXHJcbiAgLy8gICAgIGNvbnN0IGxhYmVscyA9IFsuLi5uZXcgU2V0KHJhd0RhdGEuZmxhdE1hcChkID0+IFtkLmZyb20sIGQudG9dKSldO1xyXG4gIC8vICAgICBjb25zdCBsYWJlbFRvSW5kZXg6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcclxuICAvLyAgICAgbGFiZWxzLmZvckVhY2goKGxhYmVsLCBpKSA9PiAobGFiZWxUb0luZGV4W2xhYmVsXSA9IGkpKTtcclxuXHJcbiAgLy8gICAgIC8vIE1hcCBkYXRhIGZvciBTYW5rZXlcclxuICAvLyAgICAgY29uc3Qgc291cmNlID0gcmF3RGF0YS5tYXAoZCA9PiBsYWJlbFRvSW5kZXhbZC5mcm9tXSk7XHJcbiAgLy8gICAgIGNvbnN0IHRhcmdldCA9IHJhd0RhdGEubWFwKGQgPT4gbGFiZWxUb0luZGV4W2QudG9dKTtcclxuICAvLyAgICAgY29uc3QgdmFsdWUgPSByYXdEYXRhLm1hcChkID0+IGQudmFsdWUpO1xyXG5cclxuICAvLyAgICAgLy8gQXNzaWduIGNvbnNpc3RlbnQgY29sb3JzIChsaWtlIGFtQ2hhcnRzIGRpc3RpbmN0IHBhbGV0dGUpXHJcbiAgLy8gICAgIGNvbnN0IG5vZGVDb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgLy8gICAgICAgXCJDdXN0b21pemF0aW9uXCI6IFwiIzFmNzdiNFwiLFxyXG4gIC8vICAgICAgIFwiRm9ybWFsIFBhbnRzXCI6IFwiI2ZmN2YwZVwiLFxyXG4gIC8vICAgICAgIFwiRW50cnlcIjogXCIjMmNhMDJjXCIsXHJcbiAgLy8gICAgICAgXCJQaW4gVHVjayBQYW50c1wiOiBcIiNkNjI3MjhcIixcclxuICAvLyAgICAgICBcIkpvZ2dlcnNcIjogXCIjOTQ2N2JkXCIsXHJcbiAgLy8gICAgICAgXCJQb3dlciBTdHJldGNoXCI6IFwiIzhjNTY0YlwiLFxyXG4gIC8vICAgICAgIFwiRXhpdFwiOiBcIiNlMzc3YzJcIixcclxuICAvLyAgICAgICBcIlRyaWFsIFJvb21cIjogXCIjMTdiZWNmXCIsXHJcbiAgLy8gICAgICAgXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiOiBcIiNiY2JkMjJcIlxyXG4gIC8vICAgICB9O1xyXG5cclxuICAvLyAgICAgY29uc3Qgbm9kZUNvbG9yQXJyYXkgPSBsYWJlbHMubWFwKGwgPT4gbm9kZUNvbG9yc1tsXSB8fCBcIiM5OTlcIik7XHJcbiAgLy8gICAgIGNvbnN0IGxpbmtDb2xvckFycmF5ID0gcmF3RGF0YS5tYXAoZCA9PiBub2RlQ29sb3JzW2QuZnJvbV0gfHwgXCIjOTk5XCIpO1xyXG5cclxuICAvLyAgICAgY29uc3QgZGF0YTogYW55ID0gW3tcclxuICAvLyAgICAgICB0eXBlOiBcInNhbmtleVwiLFxyXG4gIC8vICAgICAgIG9yaWVudGF0aW9uOiBcImhcIixcclxuICAvLyAgICAgICBub2RlOiB7XHJcbiAgLy8gICAgICAgICBwYWQ6IDE1LFxyXG4gIC8vICAgICAgICAgdGhpY2tuZXNzOiAyMCxcclxuICAvLyAgICAgICAgIGxpbmU6IHsgY29sb3I6IFwiYmxhY2tcIiwgd2lkdGg6IDAuNSB9LFxyXG4gIC8vICAgICAgICAgbGFiZWw6IGxhYmVscyxcclxuICAvLyAgICAgICAgIGNvbG9yOiBub2RlQ29sb3JBcnJheVxyXG4gIC8vICAgICAgIH0sXHJcbiAgLy8gICAgICAgbGluazoge1xyXG4gIC8vICAgICAgICAgc291cmNlLFxyXG4gIC8vICAgICAgICAgdGFyZ2V0LFxyXG4gIC8vICAgICAgICAgdmFsdWUsXHJcbiAgLy8gICAgICAgICBjb2xvcjogbGlua0NvbG9yQXJyYXlcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1dO1xyXG5cclxuICAvLyAgICAgY29uc3QgbGF5b3V0ID0ge1xyXG4gIC8vICAgICAgIHRpdGxlOiB7IHRleHQ6IFwiU2Fua2V5IEZsb3cgKFBsb3RseSB3aXRoIEFtQ2hhcnRzLWxpa2UgQ29sb3JzKVwiIH0sXHJcbiAgLy8gICAgICAgZm9udDogeyBzaXplOiAxMiB9XHJcbiAgLy8gICAgIH07XHJcblxyXG4gIC8vICAgICBQbG90bHkubmV3UGxvdCh0aGlzLmNoYXJ0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBkYXRhLCBsYXlvdXQpO1xyXG4gIC8vICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG15LTVcIj5cclxuICAgIDxkaXYgKGNsaWNrKT1cImJhY2tOYXZpZ2F0aW9uKClcIiBjbGFzcz1cImJ0biBidG4tYW0gYnRuLW91dGxpbmUgcC0zXCI+XHJcbiAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1LjgzMzIgOS45OTk4NEg0LjE2NjVNNC4xNjY1IDkuOTk5ODRMOS45OTk4NCAxNS44MzMyTTQuMTY2NSA5Ljk5OTg0TDkuOTk5ODQgNC4xNjY1XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgIDwvZGl2PjxzcGFuIGNsYXNzPVwibXMtMiB0aXRsZS1oZWFkXCI+QXVkaXQgU2V0dGluZ3M8L3NwYW4+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJyb3cgbXQtNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uICNhY2NvcmRpb249XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAoc2hvdyk9XCJvcGVuSXRlbSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBcIiBuZ2JBY2NvcmRpb25JdGVtIFtjb2xsYXBzZWRdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlVzZXIgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFlZGl0TW9kZVwiIGNsYXNzPVwiIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZUVkaXQoKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgYWxpZ24taXRlbXMtZW5kXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjcgMi40OTk5M0MxNC4zODU5IDIuMjgxMDYgMTQuNjQ1NyAyLjEwNzQ0IDE0LjkzMTcgMS45ODg5OUMxNS4yMTc2IDEuODcwNTQgMTUuNTI0MSAxLjgwOTU3IDE1LjgzMzcgMS44MDk1N0MxNi4xNDMyIDEuODA5NTcgMTYuNDQ5NyAxLjg3MDU0IDE2LjczNTcgMS45ODg5OUMxNy4wMjE2IDIuMTA3NDQgMTcuMjgxNSAyLjI4MTA2IDE3LjUwMDMgMi40OTk5M0MxNy43MTkyIDIuNzE4OCAxNy44OTI4IDIuOTc4NjMgMTguMDExMyAzLjI2NDZDMTguMTI5NyAzLjU1MDU3IDE4LjE5MDcgMy44NTcwNiAxOC4xOTA3IDQuMTY2NTlDMTguMTkwNyA0LjQ3NjEyIDE4LjEyOTcgNC43ODI2MiAxOC4wMTEzIDUuMDY4NTlDMTcuODkyOCA1LjM1NDU1IDE3LjcxOTIgNS42MTQzOSAxNy41MDAzIDUuODMzMjZMNi4yNTAzMyAxNy4wODMzTDEuNjY2OTkgMTguMzMzM0wyLjkxNjk5IDEzLjc0OTlMMTQuMTY3IDIuNDk5OTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI1NzlfMjUxMjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0IERldGFpbHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibXktMiBmb3JtLWxhYmVsIGZzLTQgZnctYm9sZFwiPkFzc2lnbiBBdWRpdCBVc2VyczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRNb2RlOyBlbHNlIHJlYWRvbmx5Vmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWNoaXAtZHJvcGRvd24gW2RhdGFdPVwidXNlckNvbmZpZ0xpc3RcIiBbc2VsZWN0ZWREYXRhXT1cImNvbmZpZ0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTGlzdCk9XCJ1cGRhdGVPd25lcigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLWNoaXAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlWaWV3PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTIgYm9yZGVyLTIgYm9yZGVyLWdyYXktMzAwIHAtMyByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlwIG9mIGNvbmZpZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtMSByb3VuZGVkLTUgY2hpcCBweC0yIG15LTMgcHktMSBiZy1ncmF5LTIwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGlwPy5uYW1lIHx8IGNoaXAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgdGV4dC1lbmRcIiAqbmdJZj1cImVkaXRNb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbEVkaXQoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic3VibWl0T3duZXJzKClcIj5TYXZlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLWFjY29yZGlhbi1jYXJkIG10LTZcIiBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5FbWFpbCBDb25maWd1cmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlZGl0TW9kZTFcIiBjbGFzcz1cIiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVFZGl0MSgpO1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgYWxpZ24taXRlbXMtZW5kXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjcgMi40OTk5M0MxNC4zODU5IDIuMjgxMDYgMTQuNjQ1NyAyLjEwNzQ0IDE0LjkzMTcgMS45ODg5OUMxNS4yMTc2IDEuODcwNTQgMTUuNTI0MSAxLjgwOTU3IDE1LjgzMzcgMS44MDk1N0MxNi4xNDMyIDEuODA5NTcgMTYuNDQ5NyAxLjg3MDU0IDE2LjczNTcgMS45ODg5OUMxNy4wMjE2IDIuMTA3NDQgMTcuMjgxNSAyLjI4MTA2IDE3LjUwMDMgMi40OTk5M0MxNy43MTkyIDIuNzE4OCAxNy44OTI4IDIuOTc4NjMgMTguMDExMyAzLjI2NDZDMTguMTI5NyAzLjU1MDU3IDE4LjE5MDcgMy44NTcwNiAxOC4xOTA3IDQuMTY2NTlDMTguMTkwNyA0LjQ3NjEyIDE4LjEyOTcgNC43ODI2MiAxOC4wMTEzIDUuMDY4NTlDMTcuODkyOCA1LjM1NDU1IDE3LjcxOTIgNS42MTQzOSAxNy41MDAzIDUuODMzMjZMNi4yNTAzMyAxNy4wODMzTDEuNjY2OTkgMTguMzMzM0wyLjkxNjk5IDEzLjc0OTlMMTQuMTY3IDIuNDk5OTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI1NzlfMjUxMjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0IERldGFpbHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGlhbmNlIFRocmVzaG9sZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNvbXBsaWFuY2VGb3JtXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0aHJlc2hvbGRcIiBbZGF0YV09XCJjb21wbGlhbmNlVGhyZXNob2xkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicGVyY2VudGFnZVwiIFtkYXRhXT1cImNvbXBsaWFuY2VQZXJjZW50YWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWVkaXRNb2RlMVwiIGNsYXNzPVwibXQtMyB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWxDb21wbGlhbmNlKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXRDb21wbGlhbmNlKClcIj5TYXZlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGQgbWUtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNzYyXzE1NDMwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAwNCAxMC42NjYzVjcuOTk5NjdNOC4wMDAwNCA1LjMzMzAxSDguMDA2NzFNMTQuNjY2NyA3Ljk5OTY3QzE0LjY2NjcgMTEuNjgxNiAxMS42ODE5IDE0LjY2NjMgOC4wMDAwNCAxNC42NjYzQzQuMzE4MTQgMTQuNjY2MyAxLjMzMzM3IDExLjY4MTYgMS4zMzMzNyA3Ljk5OTY3QzEuMzMzMzcgNC4zMTc3OCA0LjMxODE0IDEuMzMzMDEgOC4wMDAwNCAxLjMzMzAxQzExLjY4MTkgMS4zMzMwMSAxNC42NjY3IDQuMzE3NzggMTQuNjY2NyA3Ljk5OTY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzc2Ml8xNTQzMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWFpbCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc2VudCBpZiB0aGUgY29tcGxpYW5jZSBkb2VzbuKAmXQgbWVldCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj57e2NvbXBsaWFuY2VGb3JtLnZhbHVlPy5wZXJjZW50YWdlfX08L3NwYW4+IHRvIHRoZSByZXNwZWN0aXZlIE9wdG9tZXRyaXN0LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtdC02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+RW1haWwgTG9nczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeD1cIjFcIiB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGNoYW5nZSk9XCJzZWFyY2hEYXRhKClcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtMlwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmeC1kYXRlLXJhbmdlIGZvcm0tY29udHJvbCBwcy0xNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAyNjBweCAhaW1wb3J0YW50O1wiIHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmd4RGF0ZXJhbmdlcGlja2VyTWQgW2Ryb3BzXT1cIidkb3duJ1wiIFtvcGVuc109XCIncmlnaHQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jhbmdlc109XCJyYW5nZXNcIiBbc2hvd0N1c3RvbVJhbmdlTGFiZWxdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHdheXNTaG93Q2FsZW5kYXJzXT1cImZhbHNlXCIgW2tlZXBDYWxlbmRhck9wZW5pbmdXaXRoUmFuZ2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2FuY2VsXT1cInRydWVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVJhbmdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9BcHBseV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2FsZV09XCJ7IGZvcm1hdDogJ0RELU1NLVlZWVknLCBmaXJzdERheTogMSwgbW9udGhOYW1lczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10gfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlc1VwZGF0ZWQpPVwiZGF0ZWNoYW5nZSgkZXZlbnQpXCIgbmFtZT1cImRhdGVyYW5nZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzMgMS42NjY2M1Y0Ljk5OTk2TTYuNjY2NjcgMS42NjY2M1Y0Ljk5OTk2TTIuNSA4LjMzMzI5SDE3LjVNNC4xNjY2NyAzLjMzMzI5SDE1LjgzMzNDMTYuNzUzOCAzLjMzMzI5IDE3LjUgNC4wNzk0OCAxNy41IDQuOTk5OTZWMTYuNjY2NkMxNy41IDE3LjU4NzEgMTYuNzUzOCAxOC4zMzMzIDE1LjgzMzMgMTguMzMzM0g0LjE2NjY3QzMuMjQ2MTkgMTguMzMzMyAyLjUgMTcuNTg3MSAyLjUgMTYuNjY2NlY0Ljk5OTk2QzIuNSA0LjA3OTQ4IDMuMjQ2MTkgMy4zMzMyOSA0LjE2NjY3IDMuMzMzMjlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuZHJvcGRvd24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG14LTIgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yXCI+RmlsdGVyPC9zcGFuPiA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSAxMEgxNU0yLjUgNUgxNy41TTcuNSAxNUgxMi41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiT3BlbmRyb3Bkb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHAtNCBkcm9wZG93bjIgcG9zaXRpb24tYWJzb2x1dGUgei0xIGVuZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZURyb3Bkb3duKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXRpdGxlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5GaWx0ZXIgT3B0aW9uczwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250YWluZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGRyb3Bkb3duLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJtRHJvcGRvd24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJSTXNcIiByZWFkb25seSBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSTXNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0U2VsZWN0ZWRSbXNDb3VudCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgZW5kLTAgdHJhbnNsYXRlLW1pZGRsZS15IG1lLTIgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCB0ZXh0LXdoaXRlIHRleHQteHMgcm91bmRlZC1mdWxsIHB4LTIgcHktMC41XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFNlbGVjdGVkUm1zQ291bnQoKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IGN1c3RvbS1kcm9wZG93bi1tZW51XCIgKm5nSWY9XCJybU9wZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBtYi0yIGRyb3Bkb3duLXNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIFJNc1wiIFsobmdNb2RlbCldPVwic2VhcmNoUm1UZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZmlsdGVyUm1zKClcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBwcy0wIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbFJtc1wiIFtjaGVja2VkXT1cImlzQWxsUm1zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFJtcygkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbFJtc1wiPlNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNSBwcy0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJtIG9mIGZpbHRlcmVkUm1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cInJtLmVtYWlsXCIgWyhuZ01vZGVsKV09XCJybS5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRSbXMoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbZm9yXT1cInJtLmVtYWlsXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJtLnVzZXJOYW1lIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taGVhZGVyIHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2x1c3RlckRyb3Bkb3duKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBkcm9wZG93bi1pbnB1dCBjdXJzb3ItcG9pbnRlciBwZS01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJDbHVzdGVyc1wiIHJlYWRvbmx5IHBsYWNlaG9sZGVyPVwiU2VsZWN0IENsdXN0ZXJzXCIgLz5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0U2VsZWN0ZWRDbHVzdGVyc0NvdW50KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBlbmQtMCB0cmFuc2xhdGUtbWlkZGxlLXkgbWUtMiBiYWRnZSBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IHRleHQtd2hpdGUgcm91bmRlZC1waWxsIHB4LTIgcHktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRTZWxlY3RlZENsdXN0ZXJzQ291bnQoKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IGN1c3RvbS1kcm9wZG93bi1tZW51XCIgKm5nSWY9XCJjbHVzdGVyT3BlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIG1iLTIgZHJvcGRvd24tc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY2x1c3RlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaENsdXN0ZXJUZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZmlsdGVyQ2x1c3RlcnMoKVwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIHBzLTAgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsQ2x1c3RlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxDbHVzdGVyc1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxDbHVzdGVycygkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJzZWxlY3RBbGxDbHVzdGVyc1wiPlNlbGVjdCBBbGw8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01IHBzLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2x1c3RlciBvZiBmaWx0ZXJlZENsdXN0ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNsdXN0ZXIuX2lkXCIgWyhuZ01vZGVsKV09XCJjbHVzdGVyLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZENsdXN0ZXJzKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2Zvcl09XCJjbHVzdGVyLl9pZFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLmNsdXN0ZXJOYW1lIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBidG4tc20gdy01MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlJlc2V0KClcIj5SZXNldDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gdy01MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIkFwcGx5KClcIj5BcHBseTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhwb3J0WExTWCgpXCIgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBvcnQ8L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGEtdGFibGVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGlzIGV5ZSB0ZXN0IHRhYmxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwIHRleHQtc3RhcnRcIj4gPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IFJNIE5hbWUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwIHRleHQtc3RhcnRcIj48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiBDbHVzdGVyIE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1ub3dyYXAgdGV4dC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnb3B0dW1JZCcpXCI+IE9wdG9tIElEIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdvcHR1bUlkJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ29wdHVtSWQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LW5vd3JhcCB0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdvcHRvbUVtYWlsSWQnKVwiPiBPcHRvbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ29wdG9tRW1haWxJZCcgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdvcHRvbUVtYWlsSWQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LW5vd3JhcCB0ZXh0LXN0YXJ0XCI+PHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Tb3J0KCdzdG9yZU5hbWUnKVwiPiBTdG9yZSBOYW1lIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZU5hbWUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwIHRleHQtc3RhcnRcIj48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNvcnQoJ2F1ZGl0ZWRCeScpXCI+IEF1ZGl0ZWQgQnkgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2F1ZGl0ZWRCeScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdhdWRpdGVkQnknID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LW5vd3JhcCB0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdjb21wbGlhbmNlU2NvcmUnKVwiPiBUYW5nb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NvcmUgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ2NvbXBsaWFuY2VTY29yZScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdjb21wbGlhbmNlU2NvcmUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LW5vd3JhcCB0ZXh0LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCd0cnVzdFNjb3JlJylcIj4gVHJ1c3QgU2NvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAndHJ1c3RTY29yZScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICd0cnVzdFNjb3JlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwIHRleHQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2h1bWFuU2NvcmUnKVwiPiBIdW1hblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaXRlZCBTY29yZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnaHVtYW5TY29yZScgJiYgc29ydE9yZGVyID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0ZWRDb2x1bW4gPT09ICdodW1hblNjb3JlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwIHRleHQtc3RhcnRcIj5BY3Rpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRhYmxlRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm0tdHJ1bmNhdGVcIiBbdGl0bGVdPVwiaXRlbS5STU5hbWVcIj57eyBpdGVtLlJNTmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm0tdHJ1bmNhdGVcIiBbdGl0bGVdPVwiaXRlbS5jbHVzdGVyXCI+e3sgaXRlbS5jbHVzdGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0ub3B0dW1JZH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7aXRlbS5vcHRvbUVtYWlsSWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0uc3RvcmVOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+e3tpdGVtLmF1ZGl0ZWRCeX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7aXRlbS5jb21wbGlhbmNlU2NvcmUgPz8gXCItLVwiIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7aXRlbS50cnVzdFNjb3JlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+e3tpdGVtLmh1bWFuU2NvcmV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFpdGVtLmF1ZGl0ZWRJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXllVGVzdFZpZXcoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIG0tMCBib3JkZXItMCBiZy10cmFuc3BhcmVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTAuODMzMjUyIDkuOTk5NjdDMC44MzMyNTIgOS45OTk2NyA0LjE2NjU4IDMuMzMzMDEgOS45OTk5MiAzLjMzMzAxQzE1LjgzMzMgMy4zMzMwMSAxOS4xNjY2IDkuOTk5NjcgMTkuMTY2NiA5Ljk5OTY3QzE5LjE2NjYgOS45OTk2NyAxNS44MzMzIDE2LjY2NjMgOS45OTk5MiAxNi42NjYzQzQuMTY2NTggMTYuNjY2MyAwLjgzMzI1MiA5Ljk5OTY3IDAuODMzMjUyIDkuOTk5NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS45OTk5MiAxMi40OTk3QzExLjM4MDYgMTIuNDk5NyAxMi40OTk5IDExLjM4MDQgMTIuNDk5OSA5Ljk5OTY3QzEyLjQ5OTkgOC42MTg5NiAxMS4zODA2IDcuNDk5NjcgOS45OTk5MiA3LjQ5OTY3QzguNjE5MjEgNy40OTk2NyA3LjQ5OTkyIDguNjE4OTYgNy40OTk5MiA5Ljk5OTY3QzcuNDk5OTIgMTEuMzgwNCA4LjYxOTIxIDEyLjQ5OTcgOS45OTk5MiAxMi40OTk3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlclwiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cInBhZ2VTaXplXCIgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiJdfQ==