tango-app-ui-analyse-trax 3.4.0-eyeTest.3 → 3.4.0-eyeTest.5

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.
@@ -71,7 +71,6 @@ export class StartAuditComponent {
71
71
  }
72
72
  getAuditHistory() {
73
73
  this.historytableLoading.next('loading');
74
- console.log(this.auditDetails);
75
74
  let payload = {
76
75
  id: this.currentAuditType === 'remote' ? this.auditDetails.engagementId : this.auditDetails.queueId,
77
76
  type: this.currentAuditType
@@ -110,8 +109,10 @@ export class StartAuditComponent {
110
109
  this.takeAudit = false;
111
110
  }
112
111
  this.stepWiseProcess = this.auditDetails?.steps;
113
- console.log(this.stepWiseProcess);
114
- this.getAuditHistory();
112
+ setTimeout(() => {
113
+ this.getAuditHistory();
114
+ }, 100);
115
+ this.cd.detectChanges();
115
116
  }
116
117
  }
117
118
  });
@@ -227,7 +228,9 @@ export class StartAuditComponent {
227
228
  this.$api.submitAudit(payload).pipe(takeUntil(this.destroy$)).subscribe({
228
229
  next: (res) => {
229
230
  if (res && res?.code == 200) {
230
- this.getAuditdetails();
231
+ setTimeout(() => {
232
+ this.getAuditdetails();
233
+ }, 1000);
231
234
  }
232
235
  },
233
236
  error: (err) => {
@@ -275,11 +278,11 @@ export class StartAuditComponent {
275
278
  this.destroy$.complete();
276
279
  }
277
280
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StartAuditComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ToastService }, { token: i2.ActivatedRoute }, { token: i3.EyeTestAuditService }, { token: i4.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
278
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: StartAuditComponent, selector: "lib-start-audit", viewQueries: [{ propertyName: "tooltipContent", first: true, predicate: ["tooltipContent"], descendants: true }, { propertyName: "viewHistory", first: true, predicate: ["viewHistory"], descendants: true }], ngImport: i0, template: "<div class=\"card p-5\">\r\n <div class=\"d-flex align-items-center\">\r\n <div routerLink=\"/manage/trax/audit\" 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>\r\n <span class=\"ms-3 badge badge-light-default\">{{auditDetails?.storeName}}</span>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.engagementId}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 3H13.5C13.8978 3 14.2794 3.15804 14.5607 3.43934C14.842 3.72064 15 4.10218 15 4.5V15C15 15.3978 14.842 15.7794 14.5607 16.0607C14.2794 16.342 13.8978 16.5 13.5 16.5H4.5C4.10218 16.5 3.72064 16.342 3.43934 16.0607C3.15804 15.7794 3 15.3978 3 15V4.5C3 4.10218 3.15804 3.72064 3.43934 3.43934C3.72064 3.15804 4.10218 3 4.5 3H6M6.75 1.5H11.25C11.6642 1.5 12 1.83579 12 2.25V3.75C12 4.16421 11.6642 4.5 11.25 4.5H6.75C6.33579 4.5 6 4.16421 6 3.75V2.25C6 1.83579 6.33579 1.5 6.75 1.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{currentAuditType | titlecase}} Eye Test</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 1.5V4.5M6 1.5V4.5M2.25 7.5H15.75M3.75 3H14.25C15.0784 3 15.75 3.67157 15.75 4.5V15C15.75 15.8284 15.0784 16.5 14.25 16.5H3.75C2.92157 16.5 2.25 15.8284 2.25 15V4.5C2.25 3.67157 2.92157 3 3.75 3Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.fileDate | date: 'dd/MM/YYYY'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_166_55019)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_166_55019\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.testStartTime}} - {{auditDetails?.testEndTime}}\r\n ({{auditDetails?.testDuration}} Mins)</span>\r\n </div>\r\n <span class=\"ms-3 badge badge-light-primary\">{{auditDetails?.visitorsType | titlecase}}</span>\r\n <div *ngIf=\"['Yet-to-Audit'].includes(auditDetails?.auditStatus)\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-primary\" style=\"font-size: 14px;\">\r\n Yet to Audit\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-success\" style=\"font-size: 14px;\">\r\n Audited\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-warning\" style=\"font-size: 14px;\">\r\n Re-Audited\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n AI Verified Steps <span><svg ngbTooltip=\"Number of steps detected and validated automatically without manual review.\" placement=\"right\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.coveredStepsAI?auditDetails?.coveredStepsAI:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n Human Verified Steps <span><svg ngbTooltip=\"Number of steps that required human validation to ensure compliance and accuracy.\" placement=\"right\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.auditedSteps?auditDetails?.auditedSteps:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Compliance Score <span><svg ngbTooltip=\"Measures the percentage of steps AI flagged as compliant without human intervention.\" placement=\"left\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.complianceScore ?auditDetails?.complianceScore :'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Trust Score <span><svg ngbTooltip=\"This score reflects how often AI predictions were accepted without manual overrides.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.trustScore ? auditDetails?.trustScore:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5\">\r\n <div class=\"card-header p-0 border-0\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Preview Eye Test</span>\r\n </div>\r\n <div class=\"card-body px-0 position-relative\">\r\n <div class=\"video-position w-100\">\r\n <video class=\"w-100 rounded-3 h-auto\" controls\r\n [src]=\"auditDetails?.filePath\"></video>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5 overflow-scroll\">\r\n <div class=\"card-header mb-3 p-0 border-0 d-flex justify-content-between align-items-center\">\r\n <div class=\"\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Step-wise Breakdown</span>\r\n \r\n \r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span *ngIf=\"auditDetails?.spokenLanguage\"> <span *ngIf=\"!takeAudit\" class=\"badge badge-light-info mt-0 me-2\">Language Spoken: {{auditDetails?.spokenLanguage}}</span></span> <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"takeAudit&& currentAuditType === 'remote'\" class=\"d-flex align-items-end me-2\">\r\n <select [(ngModel)]=\"spokenLanguage\" class=\"form-select form-select-sm\">\r\n <option selected disabled >Language Spoken <span style=\"color:red\">*</span></option>\r\n <option value=\"English\">English</option>\r\n <option value=\"Hindi\">Hindi</option>\r\n </select></div>\r\n <div *ngIf=\"auditDetails?.auditStatus === 'Yet-to-Audit' && !takeAudit\" (click)=\"startAudit('audit')\"\r\n class=\"text-white ms-3 px-3 py-2 fw-semibold rounded-2 cursor-pointer bg-primary\"\r\n style=\"font-size: 14px;\">\r\n Start Audit\r\n </div>\r\n <div *ngIf=\"['Audited','Re-Audit'].includes(auditDetails?.auditStatus) && !takeAudit\"\r\n (click)=\"startAudit('Re-Audit')\" class=\"btn btn-sm py-2 btn-warning\">Re-Audit</div>\r\n <div *ngIf=\"takeAudit\" class=\"d-flex\">\r\n <div class=\"btn btn-sm btn-outline\" (click)=\"cancel()\" >Cancel</div>\r\n <div class=\"btn ms-2 btn-sm btn-success\" (click)=\"onsubmit()\" >Submit</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body mt-1 px-0\">\r\n <div *ngIf=\"!takeAudit && stepWiseProcess?.length\" class=\"table-responsive border border-1 rounded-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-align-left\">\r\n Step-by-step Process\r\n </th>\r\n <th *ngIf=\"currentAuditType === 'remote'\" class=\"text-align-left\">\r\n Predicted Transcript\r\n </th>\r\n <th class=\"text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-align-left\">\r\n Human Audited\r\n </th>\r\n <th class=\"text-align-left\">\r\n Reason for Error\r\n </th>\r\n <th class=\"text-align-left\">\r\n Noticed Time Range\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of stepWiseProcess;let i=index\">\r\n <td>\r\n <div class=\"d-flex align-items-start\">\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"data?.imageUrl\">\r\n </div> -->\r\n {{data.processName}}\r\n </div>\r\n </td>\r\n <td *ngIf=\"currentAuditType ==='remote'\" class=\"text-capitalize\">\r\n <div class=\"text-primary1 text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"data?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>{{data?.predictedTranscript}}</div>\r\n\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{data?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n\r\n </td>\r\n <td class=\"text-capitalize\"><span\r\n [ngClass]=\"data.AIStatus ? 'badge badge-light-success' : 'badge badge-light-danger'\">{{data.AIStatus\r\n ? 'pass' : 'fail'}}</span></td>\r\n <td class=\"text-capitalize\">\r\n <span *ngIf=\"data.auditedStatus !== null && data.auditedStatus !== undefined && data.auditedStatus !== ''\"\r\n [ngClass]=\"data.auditedStatus === true ? 'badge badge-light-success' : (data.auditedStatus === false ? 'badge badge-light-danger' : '')\">\r\n {{ data.auditedStatus === true ? 'pass' : (data.auditedStatus === false ? 'fail' : '') }}\r\n </span>\r\n </td>\r\n <td *ngIf=\"data.AIStatus !== data.auditedStatus || data.auditedStatus === null || data.auditedStatus === undefined || data.auditedStatus === ''; else EqualBlock\">\r\n {{ data?.reason || 'N/A' }}\r\n </td>\r\n <ng-template #EqualBlock>\r\n <td>N/A</td>\r\n </ng-template>\r\n <td>{{data?.startTime}} - {{data?.endTime}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"stepWiseProcess?.length && takeAudit&&auditDetails?.auditStatus==='Yet-to-Audit'||auditDetails?.auditStatus==='In-Progress'\">\r\n <div *ngFor=\"let process of stepWiseProcess; let i=index ;let last=last\"\r\n class=\"border border-1 rounded-3 mb-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Step-{{i+1 | number}}\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Human Audited\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"w-200px\">\r\n <!-- <div class=\"d-flex align-items-start\"> -->\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"process.imageUrl\">\r\n </div> -->\r\n {{process.processName}}\r\n <!-- </div> -->\r\n </td>\r\n <td><span *ngIf=\"process.AIStatus\" class=\"badge badge-light-success text-capitalize\">Pass</span>\r\n <span *ngIf=\"!process.AIStatus\" class=\"badge badge-light-danger text-capitalize\">Fail</span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex justify-content-start\">\r\n <div (click)=\"selectHumanVerified(i,true)\"\r\n [ngClass]=\"process?.auditedStatus ? 'text-white btn-success' : 'text-success bg-white border border-success'\"\r\n class=\"btn btn-sm rounded-5\"><span><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M14.1667 4L6.83333 11.3333L3.5 8\"\r\n [attr.stroke]=\"process?.auditedStatus ? 'white' : '#17C653'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"ms-2\">Pass</span></div>\r\n\r\n <div (click)=\"selectHumanVerified(i,false)\"\r\n [ngClass]=\"process?.auditedStatus===false ? 'text-white bg-danger' : 'text-danger bg-white border border-danger'\"\r\n class=\"ms-3 px-5 py-2 fw-semibold rounded-5 cursor-pointer rounded-5\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M12.6665 4L4.6665 12M4.6665 4L12.6665 12\"\r\n [attr.stroke]=\"process?.auditedStatus===false ? 'white' : '#F8285A'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"rowund\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"ms-2\">Fail</span></div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"currentAuditType === 'remote' && process?.predictedTranscript\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Predicted Transcript\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"text-primary text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"process?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>\r\n {{process?.predictedTranscript}}\r\n </div>\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{process?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div *ngIf=\"process?.auditedStatus !== undefined && process?.auditedStatus !== '' && process?.auditedStatus !== process?.AIStatus\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Reason & Time Stamp\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"col-sm-6 col-md-6\">\r\n <div>\r\n <div (click)=\"toggleDropdown(i,'reason')\" class=\"custom-dropdown\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"text-select\">\r\n {{ process?.reason ? process?.reason : 'Select Reason' }}\r\n </span>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\" *ngIf=\"dropdownOpen[i]?.reason\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"item my-2 minutes-scroll\">\r\n <ul *ngFor=\"let item of dropdownList\" class=\"list-unstyled\">\r\n <li [ngClass]=\"process?.reason === item?.key ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectReason(i, item?.key, 'reason')\">\r\n {{ item?.item }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Custom Input for \"Others\" -->\r\n <div *ngIf=\"process?.reason === 'others'\" class=\"mt-2\">\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"process.otherReason\" \r\n placeholder=\"Enter your reason\" \r\n class=\"form-control form-control-sm\" />\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'startTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">Start</label>\r\n <div class=\"text-select\">{{process?.startTime ? process?.startTime\r\n :'MM:SS'}}</div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.startTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll \">\r\n <div *ngFor=\"let min of minutesList\"\r\n (click)=\"selectMinute(i,min,'startTime')\"\r\n [class.selected]=\"min === selectedMinutes\">\r\n {{ min }}\r\n </div>\r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n (click)=\"selectSecond(i,sec,'startTime')\"\r\n [class.selected]=\"sec === selectedSeconds\">\r\n {{ sec }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'endTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">End</label>\r\n <div class=\"text-select\"><span>{{process.endTime ? process.endTime :\r\n 'MM:SS'}}</span></div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.endTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll\">\r\n <div *ngFor=\"let min of minutesList\"\r\n [class.selected]=\"min === selectedMinutes\"\r\n [class.disabled]=\"getSecondsFromTime(min + ':' + selectedSeconds) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(min + ':' + selectedSeconds) > getSecondsFromTime(process.startTime)\r\n && selectMinute(i,min,'endTime')\">\r\n {{ min }}\r\n </div>\r\n \r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n [class.selected]=\"sec === selectedSeconds\"\r\n [class.disabled]=\"getSecondsFromTime(selectedMinutes + ':' + sec) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(selectedMinutes + ':' + sec) > getSecondsFromTime(process.startTime)\r\n && selectSecond(i,sec,'endTime')\">\r\n {{ sec }}\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!stepWiseProcess?.length\">\r\n <div *ngIf=\"(tableLoading | async) === 'loading'\"\r\n class=\"card 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=\"(tableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div *ngIf=\"noData\" class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" 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 the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"card mt-3 p-2\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">History</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body py-0 px-3\">\r\n <div class=\"table-responsive border border-1 rounded-3\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Audited By</th>\r\n <th>Audited Date</th>\r\n <th>Time Stamp</th>\r\n <th>View Logs</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of historyData\">\r\n <td>{{item.userName}}</td>\r\n <td>{{item.Date}}</td>\r\n <td>{{item.Time}}</td>\r\n <td (click)=\"viewHistoryModel(item)\" class=\"cursor-pointer\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\"\r\n viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!historyData?.length\">\r\n <div *ngIf=\"(historytableLoading | async) === 'loading'\"\r\n class=\"card 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\r\n <div *ngIf=\"(historytableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" 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 the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #viewHistory let-model>\r\n <div class=\"p-5\">\r\n\r\n\r\n <div class=\"card-body py-0 \">\r\n <div class=\"my-2 d-flex\">\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"46\"\r\n height=\"46\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 22V28L32 30M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span\r\n class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Audit\r\n History</span>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Step-by-Step Process</th>\r\n <th>Status changed from</th>\r\n <th>Noted Time Range</th>\r\n <th>Reason for Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of viewHistoryData\">\r\n <td>{{item.processName}}</td>\r\n <td>\r\n <span *ngIf=\"item.AIStatus\" class=\"badge badge-light-success me-2\">Pass</span>\r\n <span *ngIf=\"!item.AIStatus\" class=\"badge badge-light-danger me-2\">Fail</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"8\" viewBox=\"0 0 31 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M30.3536 4.35355C30.5488 4.15829 30.5488 3.84171 30.3536 3.64645L27.1716 0.464466C26.9763 0.269204 26.6597 0.269204 26.4645 0.464466C26.2692 0.659728 26.2692 0.976311 26.4645 1.17157L29.2929 4L26.4645 6.82843C26.2692 7.02369 26.2692 7.34027 26.4645 7.53553C26.6597 7.7308 26.9763 7.7308 27.1716 7.53553L30.3536 4.35355ZM0 4.5H30V3.5H0V4.5Z\"\r\n fill=\"#D0D5DD\" />\r\n </svg>\r\n <span *ngIf=\"item.auditedStatus\" class=\"badge badge-light-success ms-2\">Pass</span>\r\n <span *ngIf=\"!item.auditedStatus\" class=\"badge badge-light-danger ms-2\">Fail</span>\r\n </td>\r\n <td ><span class=\"badge badge-light-success\" *ngIf=\"item.startTime\">Noted Time Range : <span class=\"text-dark1\">{{item.startTime ? item.startTime:'--'}} - {{item.endTime}}</span></span></td>\r\n <td class=\"engage-text\">{{item.reason}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>", 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{vertical-align:middle}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;background:var(--Primary-500, #33B5FF)!important}.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;font-style:italic;text-overflow:ellipsis;max-width:200px;overflow:hidden}.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}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.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: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.DecimalPipe, name: "number" }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i5.DatePipe, name: "date" }] });
281
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: StartAuditComponent, selector: "lib-start-audit", viewQueries: [{ propertyName: "tooltipContent", first: true, predicate: ["tooltipContent"], descendants: true }, { propertyName: "viewHistory", first: true, predicate: ["viewHistory"], descendants: true }], ngImport: i0, template: "<div class=\"card p-5\">\r\n <div class=\"d-flex align-items-center\">\r\n <div routerLink=\"/manage/trax/audit\" 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>\r\n <span class=\"ms-3 badge badge-light-default\">{{auditDetails?.storeName}}</span>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.engagementId}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 3H13.5C13.8978 3 14.2794 3.15804 14.5607 3.43934C14.842 3.72064 15 4.10218 15 4.5V15C15 15.3978 14.842 15.7794 14.5607 16.0607C14.2794 16.342 13.8978 16.5 13.5 16.5H4.5C4.10218 16.5 3.72064 16.342 3.43934 16.0607C3.15804 15.7794 3 15.3978 3 15V4.5C3 4.10218 3.15804 3.72064 3.43934 3.43934C3.72064 3.15804 4.10218 3 4.5 3H6M6.75 1.5H11.25C11.6642 1.5 12 1.83579 12 2.25V3.75C12 4.16421 11.6642 4.5 11.25 4.5H6.75C6.33579 4.5 6 4.16421 6 3.75V2.25C6 1.83579 6.33579 1.5 6.75 1.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{currentAuditType | titlecase}} Eye Test</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 1.5V4.5M6 1.5V4.5M2.25 7.5H15.75M3.75 3H14.25C15.0784 3 15.75 3.67157 15.75 4.5V15C15.75 15.8284 15.0784 16.5 14.25 16.5H3.75C2.92157 16.5 2.25 15.8284 2.25 15V4.5C2.25 3.67157 2.92157 3 3.75 3Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.fileDate | date: 'dd/MM/YYYY'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_166_55019)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_166_55019\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.testStartTime}} - {{auditDetails?.testEndTime}}\r\n ({{auditDetails?.testDuration}} Mins)</span>\r\n </div>\r\n <span class=\"ms-3 badge badge-light-primary\">{{auditDetails?.visitorsType | titlecase}}</span>\r\n <div *ngIf=\"['Yet-to-Audit'].includes(auditDetails?.auditStatus)\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-primary\" style=\"font-size: 14px;\">\r\n Yet to Audit\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-success\" style=\"font-size: 14px;\">\r\n Audited\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-warning\" style=\"font-size: 14px;\">\r\n Re-Audited\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n AI Verified Steps <span><svg ngbTooltip=\"Number of steps detected and validated automatically without manual review.\" placement=\"right\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.coveredStepsAI?auditDetails?.coveredStepsAI:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n Human Verified Steps <span><svg ngbTooltip=\"Number of steps that required human validation to ensure compliance and accuracy.\" placement=\"right\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.auditedSteps?auditDetails?.auditedSteps:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Compliance Score <span><svg ngbTooltip=\"Measures the percentage of steps AI flagged as compliant without human intervention.\" placement=\"left\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.complianceScore ?auditDetails?.complianceScore :'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Trust Score <span><svg ngbTooltip=\"This score reflects how often AI predictions were accepted without manual overrides.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.trustScore ? auditDetails?.trustScore:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5\">\r\n <div class=\"card-header p-0 border-0\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Preview Eye Test</span>\r\n </div>\r\n <div class=\"card-body px-0 position-relative\">\r\n <div class=\"video-position w-100\">\r\n <video class=\"w-100 rounded-3 h-auto\" controls\r\n [src]=\"auditDetails?.filePath\"></video>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5 overflow-scroll\">\r\n <div class=\"card-header mb-3 p-0 border-0 d-flex justify-content-between align-items-center\">\r\n <div class=\"\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Step-wise Breakdown</span>\r\n \r\n \r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span *ngIf=\"auditDetails?.spokenLanguage\"> <span *ngIf=\"!takeAudit\" class=\"badge badge-light-info mt-0 me-2\">Language Spoken: {{auditDetails?.spokenLanguage}}</span></span> <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"takeAudit&& currentAuditType === 'remote'\" class=\"d-flex align-items-end me-2\">\r\n <select [(ngModel)]=\"spokenLanguage\" class=\"form-select form-select-sm\">\r\n <option selected disabled >Language Spoken <span style=\"color:red\">*</span></option>\r\n <option value=\"English\">English</option>\r\n <option value=\"Hindi\">Hindi</option>\r\n </select></div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Yet-to-Audit' && !takeAudit\" (click)=\"startAudit('audit')\"\r\n class=\"text-white ms-3 px-3 py-2 fw-semibold rounded-2 cursor-pointer bg-primary\"\r\n style=\"font-size: 14px;\">\r\n Start Audit\r\n </div>\r\n <div *ngIf=\"['Audited','Re-Audit','Yet-to-Audit'].includes(auditDetails?.auditStatus)&&auditDetails?.auditType === 'Re-Audit' && !takeAudit||auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'&& !takeAudit \"\r\n (click)=\"startAudit('Re-Audit')\" class=\"btn btn-sm py-2 btn-warning\">Re-Audit</div>\r\n <div *ngIf=\"takeAudit\" class=\"d-flex\">\r\n <div class=\"btn btn-sm btn-outline\" (click)=\"cancel()\" >Cancel</div>\r\n <div class=\"btn ms-2 btn-sm btn-success\" (click)=\"onsubmit()\" >Submit</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body mt-1 px-0\">\r\n <div *ngIf=\"!takeAudit && stepWiseProcess?.length\" class=\"table-responsive border border-1 rounded-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-align-left\">\r\n Step-by-step Process\r\n </th>\r\n <th *ngIf=\"currentAuditType === 'remote'\" class=\"text-align-left\">\r\n Predicted Transcript\r\n </th>\r\n <th class=\"text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-align-left\">\r\n Human Audited\r\n </th>\r\n <th class=\"text-align-left\">\r\n Reason for Error\r\n </th>\r\n <th class=\"text-align-left\">\r\n Noticed Time Range\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of stepWiseProcess;let i=index\">\r\n <td>\r\n <div class=\"d-flex align-items-start\">\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"data?.imageUrl\">\r\n </div> -->\r\n {{data.processName}}\r\n </div>\r\n </td>\r\n <td *ngIf=\"currentAuditType ==='remote'\" class=\"text-capitalize\">\r\n <div class=\"text-primary1 text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"data?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>{{data?.predictedTranscript}}</div>\r\n\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{data?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n\r\n </td>\r\n <td class=\"text-capitalize\"><span\r\n [ngClass]=\"data.AIStatus ? 'badge badge-light-success' : 'badge badge-light-danger'\">{{data.AIStatus\r\n ? 'pass' : 'fail'}}</span></td>\r\n <td class=\"text-capitalize\">\r\n <span *ngIf=\"data.auditedStatus !== null && data.auditedStatus !== undefined && data.auditedStatus !== ''\"\r\n [ngClass]=\"data.auditedStatus === true ? 'badge badge-light-success' : (data.auditedStatus === false ? 'badge badge-light-danger' : '')\">\r\n {{ data.auditedStatus === true ? 'pass' : (data.auditedStatus === false ? 'fail' : '') }}\r\n </span>\r\n </td>\r\n <td *ngIf=\"data.AIStatus !== data.auditedStatus || data.auditedStatus === null || data.auditedStatus === undefined || data.auditedStatus === ''; else EqualBlock\">\r\n {{ data?.reason || 'N/A' }}\r\n </td>\r\n <ng-template #EqualBlock>\r\n <td>N/A</td>\r\n </ng-template>\r\n <td>{{data?.startTime}} - {{data?.endTime}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"stepWiseProcess?.length && takeAudit&&auditDetails?.auditStatus==='Yet-to-Audit'||auditDetails?.auditStatus==='In-Progress'\">\r\n <div *ngFor=\"let process of stepWiseProcess; let i=index ;let last=last\"\r\n class=\"border border-1 rounded-3 mb-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Step-{{i+1 | number}}\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Human Audited\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"w-200px\">\r\n <!-- <div class=\"d-flex align-items-start\"> -->\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"process.imageUrl\">\r\n </div> -->\r\n {{process.processName}}\r\n <!-- </div> -->\r\n </td>\r\n <td><span *ngIf=\"process.AIStatus\" class=\"badge badge-light-success text-capitalize\">Pass</span>\r\n <span *ngIf=\"!process.AIStatus\" class=\"badge badge-light-danger text-capitalize\">Fail</span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex justify-content-start\">\r\n <div (click)=\"selectHumanVerified(i,true)\"\r\n [ngClass]=\"process?.auditedStatus ? 'text-white btn-success' : 'text-success bg-white border border-success'\"\r\n class=\"btn btn-sm rounded-5\"><span><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M14.1667 4L6.83333 11.3333L3.5 8\"\r\n [attr.stroke]=\"process?.auditedStatus ? 'white' : '#17C653'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"ms-2\">Pass</span></div>\r\n\r\n <div (click)=\"selectHumanVerified(i,false)\"\r\n [ngClass]=\"process?.auditedStatus===false ? 'text-white bg-danger' : 'text-danger bg-white border border-danger'\"\r\n class=\"ms-3 px-5 py-2 fw-semibold rounded-5 cursor-pointer rounded-5\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M12.6665 4L4.6665 12M4.6665 4L12.6665 12\"\r\n [attr.stroke]=\"process?.auditedStatus===false ? 'white' : '#F8285A'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"rowund\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"ms-2\">Fail</span></div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"currentAuditType === 'remote' && process?.predictedTranscript\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Predicted Transcript\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"text-primary text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"process?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>\r\n {{process?.predictedTranscript}}\r\n </div>\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{process?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div *ngIf=\"process?.auditedStatus !== undefined && process?.auditedStatus !== '' && process?.auditedStatus !== process?.AIStatus\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Reason & Time Stamp\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"col-sm-6 col-md-6\">\r\n <div>\r\n <div (click)=\"toggleDropdown(i,'reason')\" class=\"custom-dropdown\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"text-select\">\r\n {{ process?.reason ? process?.reason : 'Select Reason' }}\r\n </span>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\" *ngIf=\"dropdownOpen[i]?.reason\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"item my-2 minutes-scroll\">\r\n <ul *ngFor=\"let item of dropdownList\" class=\"list-unstyled\">\r\n <li [ngClass]=\"process?.reason === item?.key ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectReason(i, item?.key, 'reason')\">\r\n {{ item?.item }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Custom Input for \"Others\" -->\r\n <div *ngIf=\"process?.reason === 'others'\" class=\"mt-2\">\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"process.otherReason\" \r\n placeholder=\"Enter your reason\" \r\n class=\"form-control form-control-sm\" />\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'startTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">Start</label>\r\n <div class=\"text-select\">{{process?.startTime ? process?.startTime\r\n :'MM:SS'}}</div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.startTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll \">\r\n <div *ngFor=\"let min of minutesList\"\r\n (click)=\"selectMinute(i,min,'startTime')\"\r\n [class.selected]=\"min === selectedMinutes\">\r\n {{ min }}\r\n </div>\r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n (click)=\"selectSecond(i,sec,'startTime')\"\r\n [class.selected]=\"sec === selectedSeconds\">\r\n {{ sec }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'endTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">End</label>\r\n <div class=\"text-select\"><span>{{process.endTime ? process.endTime :\r\n 'MM:SS'}}</span></div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.endTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll\">\r\n <div *ngFor=\"let min of minutesList\"\r\n [class.selected]=\"min === selectedMinutes\"\r\n [class.disabled]=\"getSecondsFromTime(min + ':' + selectedSeconds) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(min + ':' + selectedSeconds) > getSecondsFromTime(process.startTime)\r\n && selectMinute(i,min,'endTime')\">\r\n {{ min }}\r\n </div>\r\n \r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n [class.selected]=\"sec === selectedSeconds\"\r\n [class.disabled]=\"getSecondsFromTime(selectedMinutes + ':' + sec) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(selectedMinutes + ':' + sec) > getSecondsFromTime(process.startTime)\r\n && selectSecond(i,sec,'endTime')\">\r\n {{ sec }}\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!stepWiseProcess?.length\">\r\n <div *ngIf=\"(tableLoading | async) === 'loading'\"\r\n class=\"card 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=\"(tableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div *ngIf=\"noData\" class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" 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 the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"card mt-3 p-2\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">History</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body py-0 px-3\">\r\n <div class=\"table-responsive border border-1 rounded-3\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Audited By</th>\r\n <th>Audited Date</th>\r\n <th>Time Stamp</th>\r\n <th>View Logs</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of historyData\">\r\n <td>{{item.userName}}</td>\r\n <td>{{item.Date}}</td>\r\n <td>{{item.Time}}</td>\r\n <td (click)=\"viewHistoryModel(item)\" class=\"cursor-pointer\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\"\r\n viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!historyData?.length\">\r\n <div *ngIf=\"(historytableLoading | async) === 'loading'\"\r\n class=\"card 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\r\n <div *ngIf=\"(historytableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" 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 the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #viewHistory let-model>\r\n <div class=\"p-5\">\r\n\r\n\r\n <div class=\"card-body py-0 \">\r\n <div class=\"my-2 d-flex\">\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"46\"\r\n height=\"46\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 22V28L32 30M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span\r\n class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Audit\r\n History</span>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Step-by-Step Process</th>\r\n <th>Status changed from</th>\r\n <th>Noted Time Range</th>\r\n <th>Reason for Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of viewHistoryData\">\r\n <td>{{item.processName}}</td>\r\n <td>\r\n <span *ngIf=\"item.AIStatus\" class=\"badge badge-light-success me-2\">Pass</span>\r\n <span *ngIf=\"!item.AIStatus\" class=\"badge badge-light-danger me-2\">Fail</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"8\" viewBox=\"0 0 31 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M30.3536 4.35355C30.5488 4.15829 30.5488 3.84171 30.3536 3.64645L27.1716 0.464466C26.9763 0.269204 26.6597 0.269204 26.4645 0.464466C26.2692 0.659728 26.2692 0.976311 26.4645 1.17157L29.2929 4L26.4645 6.82843C26.2692 7.02369 26.2692 7.34027 26.4645 7.53553C26.6597 7.7308 26.9763 7.7308 27.1716 7.53553L30.3536 4.35355ZM0 4.5H30V3.5H0V4.5Z\"\r\n fill=\"#D0D5DD\" />\r\n </svg>\r\n <span *ngIf=\"item.auditedStatus\" class=\"badge badge-light-success ms-2\">Pass</span>\r\n <span *ngIf=\"!item.auditedStatus\" class=\"badge badge-light-danger ms-2\">Fail</span>\r\n </td>\r\n <td ><span class=\"badge badge-light-success\" *ngIf=\"item.startTime\">Noted Time Range : <span class=\"text-dark1\">{{item.startTime ? item.startTime:'--'}} - {{item.endTime}}</span></span></td>\r\n <td class=\"engage-text\">{{item.reason}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>", 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{vertical-align:middle}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;background:var(--Primary-500, #33B5FF)!important}.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;font-style:italic;text-overflow:ellipsis;max-width:200px;overflow:hidden}.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}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.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: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.DecimalPipe, name: "number" }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i5.DatePipe, name: "date" }] });
279
282
  }
280
283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StartAuditComponent, decorators: [{
281
284
  type: Component,
282
- args: [{ selector: 'lib-start-audit', template: "<div class=\"card p-5\">\r\n <div class=\"d-flex align-items-center\">\r\n <div routerLink=\"/manage/trax/audit\" 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>\r\n <span class=\"ms-3 badge badge-light-default\">{{auditDetails?.storeName}}</span>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.engagementId}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 3H13.5C13.8978 3 14.2794 3.15804 14.5607 3.43934C14.842 3.72064 15 4.10218 15 4.5V15C15 15.3978 14.842 15.7794 14.5607 16.0607C14.2794 16.342 13.8978 16.5 13.5 16.5H4.5C4.10218 16.5 3.72064 16.342 3.43934 16.0607C3.15804 15.7794 3 15.3978 3 15V4.5C3 4.10218 3.15804 3.72064 3.43934 3.43934C3.72064 3.15804 4.10218 3 4.5 3H6M6.75 1.5H11.25C11.6642 1.5 12 1.83579 12 2.25V3.75C12 4.16421 11.6642 4.5 11.25 4.5H6.75C6.33579 4.5 6 4.16421 6 3.75V2.25C6 1.83579 6.33579 1.5 6.75 1.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{currentAuditType | titlecase}} Eye Test</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 1.5V4.5M6 1.5V4.5M2.25 7.5H15.75M3.75 3H14.25C15.0784 3 15.75 3.67157 15.75 4.5V15C15.75 15.8284 15.0784 16.5 14.25 16.5H3.75C2.92157 16.5 2.25 15.8284 2.25 15V4.5C2.25 3.67157 2.92157 3 3.75 3Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.fileDate | date: 'dd/MM/YYYY'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_166_55019)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_166_55019\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.testStartTime}} - {{auditDetails?.testEndTime}}\r\n ({{auditDetails?.testDuration}} Mins)</span>\r\n </div>\r\n <span class=\"ms-3 badge badge-light-primary\">{{auditDetails?.visitorsType | titlecase}}</span>\r\n <div *ngIf=\"['Yet-to-Audit'].includes(auditDetails?.auditStatus)\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-primary\" style=\"font-size: 14px;\">\r\n Yet to Audit\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-success\" style=\"font-size: 14px;\">\r\n Audited\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-warning\" style=\"font-size: 14px;\">\r\n Re-Audited\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n AI Verified Steps <span><svg ngbTooltip=\"Number of steps detected and validated automatically without manual review.\" placement=\"right\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.coveredStepsAI?auditDetails?.coveredStepsAI:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n Human Verified Steps <span><svg ngbTooltip=\"Number of steps that required human validation to ensure compliance and accuracy.\" placement=\"right\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.auditedSteps?auditDetails?.auditedSteps:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Compliance Score <span><svg ngbTooltip=\"Measures the percentage of steps AI flagged as compliant without human intervention.\" placement=\"left\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.complianceScore ?auditDetails?.complianceScore :'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Trust Score <span><svg ngbTooltip=\"This score reflects how often AI predictions were accepted without manual overrides.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.trustScore ? auditDetails?.trustScore:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5\">\r\n <div class=\"card-header p-0 border-0\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Preview Eye Test</span>\r\n </div>\r\n <div class=\"card-body px-0 position-relative\">\r\n <div class=\"video-position w-100\">\r\n <video class=\"w-100 rounded-3 h-auto\" controls\r\n [src]=\"auditDetails?.filePath\"></video>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5 overflow-scroll\">\r\n <div class=\"card-header mb-3 p-0 border-0 d-flex justify-content-between align-items-center\">\r\n <div class=\"\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Step-wise Breakdown</span>\r\n \r\n \r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span *ngIf=\"auditDetails?.spokenLanguage\"> <span *ngIf=\"!takeAudit\" class=\"badge badge-light-info mt-0 me-2\">Language Spoken: {{auditDetails?.spokenLanguage}}</span></span> <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"takeAudit&& currentAuditType === 'remote'\" class=\"d-flex align-items-end me-2\">\r\n <select [(ngModel)]=\"spokenLanguage\" class=\"form-select form-select-sm\">\r\n <option selected disabled >Language Spoken <span style=\"color:red\">*</span></option>\r\n <option value=\"English\">English</option>\r\n <option value=\"Hindi\">Hindi</option>\r\n </select></div>\r\n <div *ngIf=\"auditDetails?.auditStatus === 'Yet-to-Audit' && !takeAudit\" (click)=\"startAudit('audit')\"\r\n class=\"text-white ms-3 px-3 py-2 fw-semibold rounded-2 cursor-pointer bg-primary\"\r\n style=\"font-size: 14px;\">\r\n Start Audit\r\n </div>\r\n <div *ngIf=\"['Audited','Re-Audit'].includes(auditDetails?.auditStatus) && !takeAudit\"\r\n (click)=\"startAudit('Re-Audit')\" class=\"btn btn-sm py-2 btn-warning\">Re-Audit</div>\r\n <div *ngIf=\"takeAudit\" class=\"d-flex\">\r\n <div class=\"btn btn-sm btn-outline\" (click)=\"cancel()\" >Cancel</div>\r\n <div class=\"btn ms-2 btn-sm btn-success\" (click)=\"onsubmit()\" >Submit</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body mt-1 px-0\">\r\n <div *ngIf=\"!takeAudit && stepWiseProcess?.length\" class=\"table-responsive border border-1 rounded-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-align-left\">\r\n Step-by-step Process\r\n </th>\r\n <th *ngIf=\"currentAuditType === 'remote'\" class=\"text-align-left\">\r\n Predicted Transcript\r\n </th>\r\n <th class=\"text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-align-left\">\r\n Human Audited\r\n </th>\r\n <th class=\"text-align-left\">\r\n Reason for Error\r\n </th>\r\n <th class=\"text-align-left\">\r\n Noticed Time Range\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of stepWiseProcess;let i=index\">\r\n <td>\r\n <div class=\"d-flex align-items-start\">\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"data?.imageUrl\">\r\n </div> -->\r\n {{data.processName}}\r\n </div>\r\n </td>\r\n <td *ngIf=\"currentAuditType ==='remote'\" class=\"text-capitalize\">\r\n <div class=\"text-primary1 text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"data?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>{{data?.predictedTranscript}}</div>\r\n\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{data?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n\r\n </td>\r\n <td class=\"text-capitalize\"><span\r\n [ngClass]=\"data.AIStatus ? 'badge badge-light-success' : 'badge badge-light-danger'\">{{data.AIStatus\r\n ? 'pass' : 'fail'}}</span></td>\r\n <td class=\"text-capitalize\">\r\n <span *ngIf=\"data.auditedStatus !== null && data.auditedStatus !== undefined && data.auditedStatus !== ''\"\r\n [ngClass]=\"data.auditedStatus === true ? 'badge badge-light-success' : (data.auditedStatus === false ? 'badge badge-light-danger' : '')\">\r\n {{ data.auditedStatus === true ? 'pass' : (data.auditedStatus === false ? 'fail' : '') }}\r\n </span>\r\n </td>\r\n <td *ngIf=\"data.AIStatus !== data.auditedStatus || data.auditedStatus === null || data.auditedStatus === undefined || data.auditedStatus === ''; else EqualBlock\">\r\n {{ data?.reason || 'N/A' }}\r\n </td>\r\n <ng-template #EqualBlock>\r\n <td>N/A</td>\r\n </ng-template>\r\n <td>{{data?.startTime}} - {{data?.endTime}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"stepWiseProcess?.length && takeAudit&&auditDetails?.auditStatus==='Yet-to-Audit'||auditDetails?.auditStatus==='In-Progress'\">\r\n <div *ngFor=\"let process of stepWiseProcess; let i=index ;let last=last\"\r\n class=\"border border-1 rounded-3 mb-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Step-{{i+1 | number}}\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Human Audited\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"w-200px\">\r\n <!-- <div class=\"d-flex align-items-start\"> -->\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"process.imageUrl\">\r\n </div> -->\r\n {{process.processName}}\r\n <!-- </div> -->\r\n </td>\r\n <td><span *ngIf=\"process.AIStatus\" class=\"badge badge-light-success text-capitalize\">Pass</span>\r\n <span *ngIf=\"!process.AIStatus\" class=\"badge badge-light-danger text-capitalize\">Fail</span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex justify-content-start\">\r\n <div (click)=\"selectHumanVerified(i,true)\"\r\n [ngClass]=\"process?.auditedStatus ? 'text-white btn-success' : 'text-success bg-white border border-success'\"\r\n class=\"btn btn-sm rounded-5\"><span><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M14.1667 4L6.83333 11.3333L3.5 8\"\r\n [attr.stroke]=\"process?.auditedStatus ? 'white' : '#17C653'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"ms-2\">Pass</span></div>\r\n\r\n <div (click)=\"selectHumanVerified(i,false)\"\r\n [ngClass]=\"process?.auditedStatus===false ? 'text-white bg-danger' : 'text-danger bg-white border border-danger'\"\r\n class=\"ms-3 px-5 py-2 fw-semibold rounded-5 cursor-pointer rounded-5\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M12.6665 4L4.6665 12M4.6665 4L12.6665 12\"\r\n [attr.stroke]=\"process?.auditedStatus===false ? 'white' : '#F8285A'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"rowund\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"ms-2\">Fail</span></div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"currentAuditType === 'remote' && process?.predictedTranscript\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Predicted Transcript\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"text-primary text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"process?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>\r\n {{process?.predictedTranscript}}\r\n </div>\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{process?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div *ngIf=\"process?.auditedStatus !== undefined && process?.auditedStatus !== '' && process?.auditedStatus !== process?.AIStatus\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Reason & Time Stamp\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"col-sm-6 col-md-6\">\r\n <div>\r\n <div (click)=\"toggleDropdown(i,'reason')\" class=\"custom-dropdown\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"text-select\">\r\n {{ process?.reason ? process?.reason : 'Select Reason' }}\r\n </span>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\" *ngIf=\"dropdownOpen[i]?.reason\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"item my-2 minutes-scroll\">\r\n <ul *ngFor=\"let item of dropdownList\" class=\"list-unstyled\">\r\n <li [ngClass]=\"process?.reason === item?.key ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectReason(i, item?.key, 'reason')\">\r\n {{ item?.item }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Custom Input for \"Others\" -->\r\n <div *ngIf=\"process?.reason === 'others'\" class=\"mt-2\">\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"process.otherReason\" \r\n placeholder=\"Enter your reason\" \r\n class=\"form-control form-control-sm\" />\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'startTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">Start</label>\r\n <div class=\"text-select\">{{process?.startTime ? process?.startTime\r\n :'MM:SS'}}</div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.startTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll \">\r\n <div *ngFor=\"let min of minutesList\"\r\n (click)=\"selectMinute(i,min,'startTime')\"\r\n [class.selected]=\"min === selectedMinutes\">\r\n {{ min }}\r\n </div>\r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n (click)=\"selectSecond(i,sec,'startTime')\"\r\n [class.selected]=\"sec === selectedSeconds\">\r\n {{ sec }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'endTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">End</label>\r\n <div class=\"text-select\"><span>{{process.endTime ? process.endTime :\r\n 'MM:SS'}}</span></div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.endTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll\">\r\n <div *ngFor=\"let min of minutesList\"\r\n [class.selected]=\"min === selectedMinutes\"\r\n [class.disabled]=\"getSecondsFromTime(min + ':' + selectedSeconds) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(min + ':' + selectedSeconds) > getSecondsFromTime(process.startTime)\r\n && selectMinute(i,min,'endTime')\">\r\n {{ min }}\r\n </div>\r\n \r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n [class.selected]=\"sec === selectedSeconds\"\r\n [class.disabled]=\"getSecondsFromTime(selectedMinutes + ':' + sec) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(selectedMinutes + ':' + sec) > getSecondsFromTime(process.startTime)\r\n && selectSecond(i,sec,'endTime')\">\r\n {{ sec }}\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!stepWiseProcess?.length\">\r\n <div *ngIf=\"(tableLoading | async) === 'loading'\"\r\n class=\"card 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=\"(tableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div *ngIf=\"noData\" class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" 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 the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"card mt-3 p-2\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">History</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body py-0 px-3\">\r\n <div class=\"table-responsive border border-1 rounded-3\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Audited By</th>\r\n <th>Audited Date</th>\r\n <th>Time Stamp</th>\r\n <th>View Logs</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of historyData\">\r\n <td>{{item.userName}}</td>\r\n <td>{{item.Date}}</td>\r\n <td>{{item.Time}}</td>\r\n <td (click)=\"viewHistoryModel(item)\" class=\"cursor-pointer\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\"\r\n viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!historyData?.length\">\r\n <div *ngIf=\"(historytableLoading | async) === 'loading'\"\r\n class=\"card 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\r\n <div *ngIf=\"(historytableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" 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 the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #viewHistory let-model>\r\n <div class=\"p-5\">\r\n\r\n\r\n <div class=\"card-body py-0 \">\r\n <div class=\"my-2 d-flex\">\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"46\"\r\n height=\"46\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 22V28L32 30M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span\r\n class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Audit\r\n History</span>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Step-by-Step Process</th>\r\n <th>Status changed from</th>\r\n <th>Noted Time Range</th>\r\n <th>Reason for Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of viewHistoryData\">\r\n <td>{{item.processName}}</td>\r\n <td>\r\n <span *ngIf=\"item.AIStatus\" class=\"badge badge-light-success me-2\">Pass</span>\r\n <span *ngIf=\"!item.AIStatus\" class=\"badge badge-light-danger me-2\">Fail</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"8\" viewBox=\"0 0 31 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M30.3536 4.35355C30.5488 4.15829 30.5488 3.84171 30.3536 3.64645L27.1716 0.464466C26.9763 0.269204 26.6597 0.269204 26.4645 0.464466C26.2692 0.659728 26.2692 0.976311 26.4645 1.17157L29.2929 4L26.4645 6.82843C26.2692 7.02369 26.2692 7.34027 26.4645 7.53553C26.6597 7.7308 26.9763 7.7308 27.1716 7.53553L30.3536 4.35355ZM0 4.5H30V3.5H0V4.5Z\"\r\n fill=\"#D0D5DD\" />\r\n </svg>\r\n <span *ngIf=\"item.auditedStatus\" class=\"badge badge-light-success ms-2\">Pass</span>\r\n <span *ngIf=\"!item.auditedStatus\" class=\"badge badge-light-danger ms-2\">Fail</span>\r\n </td>\r\n <td ><span class=\"badge badge-light-success\" *ngIf=\"item.startTime\">Noted Time Range : <span class=\"text-dark1\">{{item.startTime ? item.startTime:'--'}} - {{item.endTime}}</span></span></td>\r\n <td class=\"engage-text\">{{item.reason}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>", 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{vertical-align:middle}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;background:var(--Primary-500, #33B5FF)!important}.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;font-style:italic;text-overflow:ellipsis;max-width:200px;overflow:hidden}.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}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}}\n"] }]
285
+ args: [{ selector: 'lib-start-audit', template: "<div class=\"card p-5\">\r\n <div class=\"d-flex align-items-center\">\r\n <div routerLink=\"/manage/trax/audit\" 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>\r\n <span class=\"ms-3 badge badge-light-default\">{{auditDetails?.storeName}}</span>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.engagementId}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 3H13.5C13.8978 3 14.2794 3.15804 14.5607 3.43934C14.842 3.72064 15 4.10218 15 4.5V15C15 15.3978 14.842 15.7794 14.5607 16.0607C14.2794 16.342 13.8978 16.5 13.5 16.5H4.5C4.10218 16.5 3.72064 16.342 3.43934 16.0607C3.15804 15.7794 3 15.3978 3 15V4.5C3 4.10218 3.15804 3.72064 3.43934 3.43934C3.72064 3.15804 4.10218 3 4.5 3H6M6.75 1.5H11.25C11.6642 1.5 12 1.83579 12 2.25V3.75C12 4.16421 11.6642 4.5 11.25 4.5H6.75C6.33579 4.5 6 4.16421 6 3.75V2.25C6 1.83579 6.33579 1.5 6.75 1.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{currentAuditType | titlecase}} Eye Test</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 1.5V4.5M6 1.5V4.5M2.25 7.5H15.75M3.75 3H14.25C15.0784 3 15.75 3.67157 15.75 4.5V15C15.75 15.8284 15.0784 16.5 14.25 16.5H3.75C2.92157 16.5 2.25 15.8284 2.25 15V4.5C2.25 3.67157 2.92157 3 3.75 3Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.fileDate | date: 'dd/MM/YYYY'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_166_55019)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_166_55019\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.testStartTime}} - {{auditDetails?.testEndTime}}\r\n ({{auditDetails?.testDuration}} Mins)</span>\r\n </div>\r\n <span class=\"ms-3 badge badge-light-primary\">{{auditDetails?.visitorsType | titlecase}}</span>\r\n <div *ngIf=\"['Yet-to-Audit'].includes(auditDetails?.auditStatus)\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-primary\" style=\"font-size: 14px;\">\r\n Yet to Audit\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-success\" style=\"font-size: 14px;\">\r\n Audited\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-warning\" style=\"font-size: 14px;\">\r\n Re-Audited\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n AI Verified Steps <span><svg ngbTooltip=\"Number of steps detected and validated automatically without manual review.\" placement=\"right\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.coveredStepsAI?auditDetails?.coveredStepsAI:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n Human Verified Steps <span><svg ngbTooltip=\"Number of steps that required human validation to ensure compliance and accuracy.\" placement=\"right\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.auditedSteps?auditDetails?.auditedSteps:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Compliance Score <span><svg ngbTooltip=\"Measures the percentage of steps AI flagged as compliant without human intervention.\" placement=\"left\" 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_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.complianceScore ?auditDetails?.complianceScore :'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Trust Score <span><svg ngbTooltip=\"This score reflects how often AI predictions were accepted without manual overrides.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.trustScore ? auditDetails?.trustScore:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5\">\r\n <div class=\"card-header p-0 border-0\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Preview Eye Test</span>\r\n </div>\r\n <div class=\"card-body px-0 position-relative\">\r\n <div class=\"video-position w-100\">\r\n <video class=\"w-100 rounded-3 h-auto\" controls\r\n [src]=\"auditDetails?.filePath\"></video>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5 overflow-scroll\">\r\n <div class=\"card-header mb-3 p-0 border-0 d-flex justify-content-between align-items-center\">\r\n <div class=\"\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Step-wise Breakdown</span>\r\n \r\n \r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span *ngIf=\"auditDetails?.spokenLanguage\"> <span *ngIf=\"!takeAudit\" class=\"badge badge-light-info mt-0 me-2\">Language Spoken: {{auditDetails?.spokenLanguage}}</span></span> <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"takeAudit&& currentAuditType === 'remote'\" class=\"d-flex align-items-end me-2\">\r\n <select [(ngModel)]=\"spokenLanguage\" class=\"form-select form-select-sm\">\r\n <option selected disabled >Language Spoken <span style=\"color:red\">*</span></option>\r\n <option value=\"English\">English</option>\r\n <option value=\"Hindi\">Hindi</option>\r\n </select></div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Yet-to-Audit' && !takeAudit\" (click)=\"startAudit('audit')\"\r\n class=\"text-white ms-3 px-3 py-2 fw-semibold rounded-2 cursor-pointer bg-primary\"\r\n style=\"font-size: 14px;\">\r\n Start Audit\r\n </div>\r\n <div *ngIf=\"['Audited','Re-Audit','Yet-to-Audit'].includes(auditDetails?.auditStatus)&&auditDetails?.auditType === 'Re-Audit' && !takeAudit||auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'&& !takeAudit \"\r\n (click)=\"startAudit('Re-Audit')\" class=\"btn btn-sm py-2 btn-warning\">Re-Audit</div>\r\n <div *ngIf=\"takeAudit\" class=\"d-flex\">\r\n <div class=\"btn btn-sm btn-outline\" (click)=\"cancel()\" >Cancel</div>\r\n <div class=\"btn ms-2 btn-sm btn-success\" (click)=\"onsubmit()\" >Submit</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body mt-1 px-0\">\r\n <div *ngIf=\"!takeAudit && stepWiseProcess?.length\" class=\"table-responsive border border-1 rounded-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-align-left\">\r\n Step-by-step Process\r\n </th>\r\n <th *ngIf=\"currentAuditType === 'remote'\" class=\"text-align-left\">\r\n Predicted Transcript\r\n </th>\r\n <th class=\"text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-align-left\">\r\n Human Audited\r\n </th>\r\n <th class=\"text-align-left\">\r\n Reason for Error\r\n </th>\r\n <th class=\"text-align-left\">\r\n Noticed Time Range\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of stepWiseProcess;let i=index\">\r\n <td>\r\n <div class=\"d-flex align-items-start\">\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"data?.imageUrl\">\r\n </div> -->\r\n {{data.processName}}\r\n </div>\r\n </td>\r\n <td *ngIf=\"currentAuditType ==='remote'\" class=\"text-capitalize\">\r\n <div class=\"text-primary1 text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"data?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>{{data?.predictedTranscript}}</div>\r\n\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{data?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n\r\n </td>\r\n <td class=\"text-capitalize\"><span\r\n [ngClass]=\"data.AIStatus ? 'badge badge-light-success' : 'badge badge-light-danger'\">{{data.AIStatus\r\n ? 'pass' : 'fail'}}</span></td>\r\n <td class=\"text-capitalize\">\r\n <span *ngIf=\"data.auditedStatus !== null && data.auditedStatus !== undefined && data.auditedStatus !== ''\"\r\n [ngClass]=\"data.auditedStatus === true ? 'badge badge-light-success' : (data.auditedStatus === false ? 'badge badge-light-danger' : '')\">\r\n {{ data.auditedStatus === true ? 'pass' : (data.auditedStatus === false ? 'fail' : '') }}\r\n </span>\r\n </td>\r\n <td *ngIf=\"data.AIStatus !== data.auditedStatus || data.auditedStatus === null || data.auditedStatus === undefined || data.auditedStatus === ''; else EqualBlock\">\r\n {{ data?.reason || 'N/A' }}\r\n </td>\r\n <ng-template #EqualBlock>\r\n <td>N/A</td>\r\n </ng-template>\r\n <td>{{data?.startTime}} - {{data?.endTime}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"stepWiseProcess?.length && takeAudit&&auditDetails?.auditStatus==='Yet-to-Audit'||auditDetails?.auditStatus==='In-Progress'\">\r\n <div *ngFor=\"let process of stepWiseProcess; let i=index ;let last=last\"\r\n class=\"border border-1 rounded-3 mb-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Step-{{i+1 | number}}\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Human Audited\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"w-200px\">\r\n <!-- <div class=\"d-flex align-items-start\"> -->\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"process.imageUrl\">\r\n </div> -->\r\n {{process.processName}}\r\n <!-- </div> -->\r\n </td>\r\n <td><span *ngIf=\"process.AIStatus\" class=\"badge badge-light-success text-capitalize\">Pass</span>\r\n <span *ngIf=\"!process.AIStatus\" class=\"badge badge-light-danger text-capitalize\">Fail</span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex justify-content-start\">\r\n <div (click)=\"selectHumanVerified(i,true)\"\r\n [ngClass]=\"process?.auditedStatus ? 'text-white btn-success' : 'text-success bg-white border border-success'\"\r\n class=\"btn btn-sm rounded-5\"><span><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M14.1667 4L6.83333 11.3333L3.5 8\"\r\n [attr.stroke]=\"process?.auditedStatus ? 'white' : '#17C653'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"ms-2\">Pass</span></div>\r\n\r\n <div (click)=\"selectHumanVerified(i,false)\"\r\n [ngClass]=\"process?.auditedStatus===false ? 'text-white bg-danger' : 'text-danger bg-white border border-danger'\"\r\n class=\"ms-3 px-5 py-2 fw-semibold rounded-5 cursor-pointer rounded-5\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M12.6665 4L4.6665 12M4.6665 4L12.6665 12\"\r\n [attr.stroke]=\"process?.auditedStatus===false ? 'white' : '#F8285A'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"rowund\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"ms-2\">Fail</span></div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"currentAuditType === 'remote' && process?.predictedTranscript\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Predicted Transcript\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"text-primary text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"process?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>\r\n {{process?.predictedTranscript}}\r\n </div>\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{process?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div *ngIf=\"process?.auditedStatus !== undefined && process?.auditedStatus !== '' && process?.auditedStatus !== process?.AIStatus\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Reason & Time Stamp\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"col-sm-6 col-md-6\">\r\n <div>\r\n <div (click)=\"toggleDropdown(i,'reason')\" class=\"custom-dropdown\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"text-select\">\r\n {{ process?.reason ? process?.reason : 'Select Reason' }}\r\n </span>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\" *ngIf=\"dropdownOpen[i]?.reason\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"item my-2 minutes-scroll\">\r\n <ul *ngFor=\"let item of dropdownList\" class=\"list-unstyled\">\r\n <li [ngClass]=\"process?.reason === item?.key ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectReason(i, item?.key, 'reason')\">\r\n {{ item?.item }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Custom Input for \"Others\" -->\r\n <div *ngIf=\"process?.reason === 'others'\" class=\"mt-2\">\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"process.otherReason\" \r\n placeholder=\"Enter your reason\" \r\n class=\"form-control form-control-sm\" />\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'startTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">Start</label>\r\n <div class=\"text-select\">{{process?.startTime ? process?.startTime\r\n :'MM:SS'}}</div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.startTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll \">\r\n <div *ngFor=\"let min of minutesList\"\r\n (click)=\"selectMinute(i,min,'startTime')\"\r\n [class.selected]=\"min === selectedMinutes\">\r\n {{ min }}\r\n </div>\r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n (click)=\"selectSecond(i,sec,'startTime')\"\r\n [class.selected]=\"sec === selectedSeconds\">\r\n {{ sec }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'endTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">End</label>\r\n <div class=\"text-select\"><span>{{process.endTime ? process.endTime :\r\n 'MM:SS'}}</span></div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.endTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll\">\r\n <div *ngFor=\"let min of minutesList\"\r\n [class.selected]=\"min === selectedMinutes\"\r\n [class.disabled]=\"getSecondsFromTime(min + ':' + selectedSeconds) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(min + ':' + selectedSeconds) > getSecondsFromTime(process.startTime)\r\n && selectMinute(i,min,'endTime')\">\r\n {{ min }}\r\n </div>\r\n \r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n [class.selected]=\"sec === selectedSeconds\"\r\n [class.disabled]=\"getSecondsFromTime(selectedMinutes + ':' + sec) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(selectedMinutes + ':' + sec) > getSecondsFromTime(process.startTime)\r\n && selectSecond(i,sec,'endTime')\">\r\n {{ sec }}\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!stepWiseProcess?.length\">\r\n <div *ngIf=\"(tableLoading | async) === 'loading'\"\r\n class=\"card 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=\"(tableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div *ngIf=\"noData\" class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" 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 the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"card mt-3 p-2\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">History</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body py-0 px-3\">\r\n <div class=\"table-responsive border border-1 rounded-3\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Audited By</th>\r\n <th>Audited Date</th>\r\n <th>Time Stamp</th>\r\n <th>View Logs</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of historyData\">\r\n <td>{{item.userName}}</td>\r\n <td>{{item.Date}}</td>\r\n <td>{{item.Time}}</td>\r\n <td (click)=\"viewHistoryModel(item)\" class=\"cursor-pointer\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\"\r\n viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!historyData?.length\">\r\n <div *ngIf=\"(historytableLoading | async) === 'loading'\"\r\n class=\"card 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\r\n <div *ngIf=\"(historytableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" 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 the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #viewHistory let-model>\r\n <div class=\"p-5\">\r\n\r\n\r\n <div class=\"card-body py-0 \">\r\n <div class=\"my-2 d-flex\">\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"46\"\r\n height=\"46\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 22V28L32 30M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span\r\n class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Audit\r\n History</span>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Step-by-Step Process</th>\r\n <th>Status changed from</th>\r\n <th>Noted Time Range</th>\r\n <th>Reason for Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of viewHistoryData\">\r\n <td>{{item.processName}}</td>\r\n <td>\r\n <span *ngIf=\"item.AIStatus\" class=\"badge badge-light-success me-2\">Pass</span>\r\n <span *ngIf=\"!item.AIStatus\" class=\"badge badge-light-danger me-2\">Fail</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"8\" viewBox=\"0 0 31 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M30.3536 4.35355C30.5488 4.15829 30.5488 3.84171 30.3536 3.64645L27.1716 0.464466C26.9763 0.269204 26.6597 0.269204 26.4645 0.464466C26.2692 0.659728 26.2692 0.976311 26.4645 1.17157L29.2929 4L26.4645 6.82843C26.2692 7.02369 26.2692 7.34027 26.4645 7.53553C26.6597 7.7308 26.9763 7.7308 27.1716 7.53553L30.3536 4.35355ZM0 4.5H30V3.5H0V4.5Z\"\r\n fill=\"#D0D5DD\" />\r\n </svg>\r\n <span *ngIf=\"item.auditedStatus\" class=\"badge badge-light-success ms-2\">Pass</span>\r\n <span *ngIf=\"!item.auditedStatus\" class=\"badge badge-light-danger ms-2\">Fail</span>\r\n </td>\r\n <td ><span class=\"badge badge-light-success\" *ngIf=\"item.startTime\">Noted Time Range : <span class=\"text-dark1\">{{item.startTime ? item.startTime:'--'}} - {{item.endTime}}</span></span></td>\r\n <td class=\"engage-text\">{{item.reason}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>", 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{vertical-align:middle}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;background:var(--Primary-500, #33B5FF)!important}.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;font-style:italic;text-overflow:ellipsis;max-width:200px;overflow:hidden}.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}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}}\n"] }]
283
286
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ToastService }, { type: i2.ActivatedRoute }, { type: i3.EyeTestAuditService }, { type: i4.NgbModal }], propDecorators: { tooltipContent: [{
284
287
  type: ViewChild,
285
288
  args: ['tooltipContent']
@@ -287,4 +290,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
287
290
  type: ViewChild,
288
291
  args: ['viewHistory']
289
292
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtYXVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9leWUtdGVzdC1hdWRpdC9leWUtdGVzdC1hdWRpdC9zdGFydC1hdWRpdC9zdGFydC1hdWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2V5ZS10ZXN0LWF1ZGl0L2V5ZS10ZXN0LWF1ZGl0L3N0YXJ0LWF1ZGl0L3N0YXJ0LWF1ZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTZCLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBVTNELE1BQU0sT0FBTyxtQkFBbUI7SUEwQlY7SUFBK0I7SUFBb0M7SUFBK0I7SUFBbUM7SUF4QnpKLGVBQWUsR0FBUSxFQUFFLENBQUM7SUFDMUIsWUFBWSxHQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsbUVBQW1FLEVBQUUsSUFBSSxFQUFFLG1FQUFtRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUVBQXVFLEVBQUUsSUFBSSxFQUFFLHVFQUF1RSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUscURBQXFELEVBQUUsSUFBSSxFQUFFLHFEQUFxRCxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQzllLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUV4QixZQUFZLEdBQUcsSUFBSSxlQUFlLENBQW1D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Q0FBQzt3R0F6VFUsbUJBQW1COzRGQUFuQixtQkFBbUIsc1FDWGhDLDJpaURBc29CYzs7NEZEM25CRCxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCO3VNQXVCRSxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDRCxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdDaGlsZCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmdiTW9kYWwsIE5nYlRvb2x0aXAgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEV5ZVRlc3RBdWRpdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leWUtdGVzdC1hdWRpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXN0YXJ0LWF1ZGl0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3RhcnQtYXVkaXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zdGFydC1hdWRpdC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0YXJ0QXVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25EZXN0cm95IHtcclxuXHJcbiAgc3RlcFdpc2VQcm9jZXNzOiBhbnkgPSBbXTtcclxuICBkcm9wZG93bkxpc3Q6IGFueSA9IFt7IGtleTogJ1NlbnRlbmNlIFRyYW5zY3JpcHRpb24gb2theSwgYnV0IG5vdCBtYXRjaGluZyB3aXRoIFByZWRpY3RlZCBTdGVwJywgaXRlbTogJ1NlbnRlbmNlIFRyYW5zY3JpcHRpb24gb2theSwgYnV0IG5vdCBtYXRjaGluZyB3aXRoIFByZWRpY3RlZCBTdGVwJyB9LCB7IGtleTogJ1NlbnRlbmNlIFRyYW5zY3JpcHRpb24gbm90IGFjY3VyYXRlLCBidXQgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcsIGl0ZW06ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG5vdCBhY2N1cmF0ZSwgYnV0IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnIH0sIHsga2V5OiAnU3RlcCBub3QgYWNjdXJhdGUsIG5vdCBtYXRjaGluZyB3aXRoIFByZWRpY3RlZCBTdGVwJywgaXRlbTogJ1N0ZXAgbm90IGFjY3VyYXRlLCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcgfSwgeyBrZXk6ICdvdGhlcnMnLCBpdGVtOiAnT3RoZXJzJyB9XVxyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB0YWJsZUxvYWRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnPignaW5pdGlhbCcpXHJcbiAgaGlzdG9yeXRhYmxlTG9hZGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8J2luaXRpYWwnIHwgJ2xvYWRpbmcnIHwgJ2xvYWRlZCc+KCdpbml0aWFsJylcclxuXHJcbiAgc2VsZWN0ZWRNaW51dGVzID0gJzAwJztcclxuICBzZWxlY3RlZFNlY29uZHMgPSAnMDAnO1xyXG4gIG1pbnV0ZXNMaXN0OiBzdHJpbmdbXSA9IFtdO1xyXG4gIHNlY29uZHNMaXN0OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBhdWRpdERldGFpbHM6IGFueSA9IFtdO1xyXG4gIGN1cnJlbnRBdWRpdFR5cGU6IGFueTtcclxuICB0YWtlQXVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdG9yZUlkOiBhbnk7XHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcENvbnRlbnQnKSB0b29sdGlwQ29udGVudCE6IE5nYlRvb2x0aXA7XHJcbiAgQFZpZXdDaGlsZCgndmlld0hpc3RvcnknKSB2aWV3SGlzdG9yeTogYW55O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGhpc3RvcnlEYXRhOiBhbnkgPSBbXTtcclxuICBBdWRpdElkOiBhbnk7XHJcbiAgdmlld0hpc3RvcnlEYXRhOiBhbnk7XHJcbiAgc3Bva2VuTGFuZ3VhZ2U6YW55PSdFbmdsaXNoJ1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSAkYXBpOiBFeWVUZXN0QXVkaXRTZXJ2aWNlLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwpIHtcclxuXHJcbiAgfVxyXG4gIHZpZXdIaXN0b3J5TW9kZWwoaXRlbTogYW55KSB7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgaWQ6IGl0ZW0uX2lkXHJcbiAgICB9XHJcbiAgICB0aGlzLiRhcGkudmlld0F1ZGl0SGlzdG9yeShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdIaXN0b3J5RGF0YSA9IHJlcy5kYXRhLnJlc3VsdFxyXG4gICAgICAgICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMudmlld0hpc3RvcnksIHtcclxuICAgICAgICAgICAgc2l6ZToneGwnLFxyXG4gICAgICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgICAgICAgc2Nyb2xsYWJsZTogdHJ1ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRha2VBdWRpdCA9ZmFsc2VcclxuICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzID1bXTtcclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmVJZCA9IHBhcmFtc1snc3RvcmVJZCddO1xyXG4gICAgICB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgPSBwYXJhbXNbJ3R5cGUnXVxyXG4gICAgICB0aGlzLkF1ZGl0SWQgPSBwYXJhbXNbJ19pZCddXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ2V0QXVkaXRkZXRhaWxzKCk7XHJcbiAgICB0aGlzLmdlbmVyYXRlVGltZU9wdGlvbnMoKTtcclxuXHJcbiAgfVxyXG4gIGdldEF1ZGl0SGlzdG9yeSgpIHtcclxuICAgIHRoaXMuaGlzdG9yeXRhYmxlTG9hZGluZy5uZXh0KCdsb2FkaW5nJyk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmF1ZGl0RGV0YWlscylcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogdGhpcy5jdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJyA/IHRoaXMuYXVkaXREZXRhaWxzLmVuZ2FnZW1lbnRJZCA6IHRoaXMuYXVkaXREZXRhaWxzLnF1ZXVlSWQsXHJcbiAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLmdldEF1ZGl0SGlzdG9yeShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmhpc3RvcnlEYXRhID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5oaXN0b3J5RGF0YSA9IFtdXHJcbiAgICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmhpc3RvcnlEYXRhID0gW11cclxuICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgKVxyXG5cclxuICB9XHJcblxyXG4gIGdldEF1ZGl0ZGV0YWlscygpIHtcclxuICAgIHRoaXMudGFibGVMb2FkaW5nLm5leHQoJ2xvYWRpbmcnKTtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogdGhpcy5BdWRpdElkLFxyXG4gICAgICB0eXBlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGVcclxuICAgIH1cclxuICAgIHRoaXMuJGFwaS5nZXRBdWRpdGRldGFpbHMocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5hdWRpdERldGFpbHMgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuICAgICAgICAgIGlmICh0aGlzLmF1ZGl0RGV0YWlscy5hdWRpdFN0YXR1cyA9PT0gJ0luLVByb2dyZXNzJykge1xyXG4gICAgICAgICAgICB0aGlzLnRha2VBdWRpdCA9IHRydWVcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLnRha2VBdWRpdCA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnN0ZXBXaXNlUHJvY2VzcyA9IHRoaXMuYXVkaXREZXRhaWxzPy5zdGVwcztcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuc3RlcFdpc2VQcm9jZXNzKVxyXG4gICAgICAgICAgdGhpcy5nZXRBdWRpdEhpc3RvcnkoKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG5cclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGltZU9wdGlvbnMoKSB7XHJcbiAgICB0aGlzLm1pbnV0ZXNMaXN0ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IHRoaXMuZm9ybWF0TnVtYmVyKGkpKTtcclxuICAgIHRoaXMuc2Vjb25kc0xpc3QgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2MCB9LCAoXywgaSkgPT4gdGhpcy5mb3JtYXROdW1iZXIoaSkpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0TnVtYmVyKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBudW0gPCAxMCA/ICcwJyArIG51bSA6IG51bS50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgZHJvcGRvd25PcGVuOiB7IFtrZXk6IG51bWJlcl06IHsgc3RhcnRUaW1lOiBib29sZWFuOyBlbmRUaW1lOiBib29sZWFuOyByZWFzb246IGJvb2xlYW4gfSB9ID0ge307XHJcblxyXG4gIHRvZ2dsZURyb3Bkb3duKGk6IG51bWJlciwgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5kcm9wZG93bk9wZW5baV0/Llt0aW1lXSA/PyBmYWxzZTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmRyb3Bkb3duT3BlbikuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuW051bWJlcihrZXkpXSA9IHsgc3RhcnRUaW1lOiBmYWxzZSwgZW5kVGltZTogZmFsc2UsIHJlYXNvbjogZmFsc2UgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy5kcm9wZG93bk9wZW5baV0pIHtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW5baV0gPSB7IHN0YXJ0VGltZTogZmFsc2UsIGVuZFRpbWU6IGZhbHNlLCByZWFzb246IGZhbHNlIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bk9wZW5baV1bdGltZV0gPSAhY3VycmVudFN0YXRlO1xyXG4gIH1cclxuICBnZXRTZWNvbmRzRnJvbVRpbWUodGltZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGlmICghdGltZSkgcmV0dXJuIDA7XHJcbiAgICBjb25zdCBbbWluLCBzZWNdID0gdGltZS5zcGxpdCgnOicpLm1hcChOdW1iZXIpO1xyXG4gICAgcmV0dXJuIChtaW4gKiA2MCkgKyBzZWM7XHJcbiAgfVxyXG4gICAgXHJcbnNlbGVjdE1pbnV0ZShpbmRleDogYW55LCBtaW46IHN0cmluZywgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gIGNvbnN0IHByZXZpb3VzVGltZSA9IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uW3RpbWVdIHx8ICcwMDowMCc7XHJcblxyXG4gIHRoaXMuc2VsZWN0ZWRNaW51dGVzID0gbWluO1xyXG4gIGNvbnN0IG5ld1RpbWUgPSBgJHt0aGlzLnNlbGVjdGVkTWludXRlc306JHt0aGlzLnNlbGVjdGVkU2Vjb25kc31gO1xyXG5cclxuICBjb25zdCBzdGFydFRpbWUgPSB0aGlzLmdldFNlY29uZHNGcm9tVGltZShcclxuICAgIHRpbWUgPT09ICdzdGFydFRpbWUnID8gbmV3VGltZSA6IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uc3RhcnRUaW1lXHJcbiAgKTtcclxuICBjb25zdCBlbmRUaW1lID0gdGhpcy5nZXRTZWNvbmRzRnJvbVRpbWUoXHJcbiAgICB0aW1lID09PSAnZW5kVGltZScgPyBuZXdUaW1lIDogdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdPy5lbmRUaW1lXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgaXNWYWxpZCA9IChzdGFydFRpbWUgPT09IDAgfHwgZW5kVGltZSA9PT0gMCkgfHwgc3RhcnRUaW1lIDwgZW5kVGltZTtcclxuXHJcbiAgaWYgKCFpc1ZhbGlkICYmIHRpbWUgIT09ICdyZWFzb24nKSB7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRXYXJuaW5nVG9hc3QoXCJTdGFydCB0aW1lIG11c3QgYmUgbGVzcyB0aGFuIGVuZCB0aW1lLlwiKTtcclxuICBcclxuICAgIGNvbnN0IFtwcmV2TWluLCBwcmV2U2VjXSA9IHByZXZpb3VzVGltZS5zcGxpdCgnOicpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE1pbnV0ZXMgPSBwcmV2TWluO1xyXG4gICAgdGhpcy5zZWxlY3RlZFNlY29uZHMgPSBwcmV2U2VjO1xyXG4gIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIFxyXG5cclxuICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF1bdGltZV0gPSBuZXdUaW1lO1xyXG4gIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG59XHJcblxyXG5zZWxlY3RTZWNvbmQoaW5kZXg6IGFueSwgc2VjOiBzdHJpbmcsIHRpbWU6ICdzdGFydFRpbWUnIHwgJ2VuZFRpbWUnIHwgJ3JlYXNvbicpIHtcclxuICBjb25zdCBwcmV2aW91c1RpbWUgPSB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0/Llt0aW1lXSB8fCAnMDA6MDAnO1xyXG5cclxuICB0aGlzLnNlbGVjdGVkU2Vjb25kcyA9IHNlYztcclxuICBjb25zdCBuZXdUaW1lID0gYCR7dGhpcy5zZWxlY3RlZE1pbnV0ZXN9OiR7dGhpcy5zZWxlY3RlZFNlY29uZHN9YDtcclxuXHJcbiAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5nZXRTZWNvbmRzRnJvbVRpbWUoXHJcbiAgICB0aW1lID09PSAnc3RhcnRUaW1lJyA/IG5ld1RpbWUgOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0/LnN0YXJ0VGltZVxyXG4gICk7XHJcbiAgY29uc3QgZW5kVGltZSA9IHRoaXMuZ2V0U2Vjb25kc0Zyb21UaW1lKFxyXG4gICAgdGltZSA9PT0gJ2VuZFRpbWUnID8gbmV3VGltZSA6IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uZW5kVGltZVxyXG4gICk7XHJcblxyXG4gIGlmICgodGltZSAhPT0gJ3JlYXNvbicpICYmIHN0YXJ0VGltZSAhPT0gMCAmJiBlbmRUaW1lICE9PSAwICYmIHN0YXJ0VGltZSA+PSBlbmRUaW1lKSB7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRXYXJuaW5nVG9hc3QoXCJTdGFydCB0aW1lIG11c3QgYmUgbGVzcyB0aGFuIGVuZCB0aW1lLlwiKTtcclxuICBcclxuICAgIGNvbnN0IFtwcmV2TWluLCBwcmV2U2VjXSA9IHByZXZpb3VzVGltZS5zcGxpdCgnOicpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE1pbnV0ZXMgPSBwcmV2TWluO1xyXG4gICAgdGhpcy5zZWxlY3RlZFNlY29uZHMgPSBwcmV2U2VjO1xyXG4gIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF1bdGltZV0gPSBuZXdUaW1lO1xyXG4gIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG59XHJcbiBcclxuICBcclxuXHJcbiAgc2VsZWN0UmVhc29uKGluZGV4OiBudW1iZXIsIGtleTogYW55LCB0aW1lOiBhbnkpIHtcclxuICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XVt0aW1lXSA9IGtleTtcclxuICBcclxuICAgIGlmIChrZXkgPT09ICdvdGhlcnMnKSB7XHJcbiAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XS5vdGhlclJlYXNvbiA9ICcnOyBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XS5vdGhlclJlYXNvbiA9IG51bGw7IFxyXG4gICAgfVxyXG4gIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIFxyXG5cclxuICBzZWxlY3RIdW1hblZlcmlmaWVkKGluZGV4OiBudW1iZXIsIHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0uYXVkaXRlZFN0YXR1cyA9IHZhbHVlO1xyXG4gIH1cclxuICBmaW5kY291bnQoKXtcclxuICAgIGxldCBjb3VudCA9IDBcclxuICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzLmZvckVhY2goKGRhdGE6YW55KT0+e1xyXG4gICAgICBpZihkYXRhLmF1ZGl0ZWRTdGF0dXMhPT1kYXRhLkFJU3RhdHVzKXtcclxuICAgICAgICBjb3VudCsrXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSlcclxuICAgIHJldHVybiBjb3VudFxyXG4gIH1cclxuICBnZXRWYWxpZGFGb3JtKCl7XHJcbiAgICBsZXQgZXJyb3JDb3VudCA9IDBcclxuICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzLmZvckVhY2goKGRhdGE6YW55KT0+e1xyXG4gICAgICBpZihkYXRhLmF1ZGl0ZWRTdGF0dXMhPT1kYXRhLkFJU3RhdHVzKXtcclxuICAgICAgICBpZighZGF0YS5yZWFzb24pe1xyXG4gICAgICAgICAgZXJyb3JDb3VudCsrXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYoZXJyb3JDb3VudD4wKXtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0V2FybmluZ1RvYXN0KFwiQ29tbWVudHMgYXJlIG1hbmRhdG9yeSBmb3IgaW52ZXJzZSBodW1hbiBhdWRpdGVkIHJlc3BvbnNlc1wiKVxyXG4gIH1cclxuICAgIHJldHVybiBlcnJvckNvdW50XHJcbiAgfVxyXG4gIG9uc3VibWl0KCkge1xyXG4gICAgaWYodGhpcy5nZXRWYWxpZGFGb3JtKCk9PT0wKXtcclxuXHJcbiAgICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICAgIGlkOiB0aGlzLkF1ZGl0SWQsXHJcbiAgICAgICAgdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlLFxyXG4gICAgICAgIGZpbGVJZDogdGhpcy5jdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJyA/IHRoaXMuYXVkaXREZXRhaWxzLmVuZ2FnZW1lbnRJZCA6IHRoaXMuYXVkaXREZXRhaWxzLnF1ZXVlSWQsXHJcbiAgICAgICAgYXVkaXRlZFN0ZXBzOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5sZW5ndGgsXHJcbiAgICAgICAgYXVkaXRTdGF0dXM6IFwiQXVkaXRlZFwiLFxyXG4gICAgICAgIG92ZXJSaWRlczp0aGlzLmZpbmRjb3VudCgpLFxyXG4gICAgICAgIHNwb2tlbkxhbmd1YWdlOiB0aGlzLnNwb2tlbkxhbmd1YWdlLFxyXG4gICAgICAgIHN0ZXBzOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1xyXG4gIFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuJGFwaS5zdWJtaXRBdWRpdChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogZXJyPy5lcnJvcj8ubWVzc2FnZSlcclxuICAgICAgICAgfSBcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuICBzdGFydEF1ZGl0KHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudGFrZUF1ZGl0ID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgaWQ6IHRoaXMuQXVkaXRJZFxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLmdldEF1ZGl0RmlsZShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogZXJyPy5lcnJvcj8ubWVzc2FnZSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcblxyXG4gIH1cclxuICBjYW5jZWwoKXtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogdGhpcy5BdWRpdElkLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSxcclxuICAgICAgICBmaWxlSWQ6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZScgPyB0aGlzLmF1ZGl0RGV0YWlscy5lbmdhZ2VtZW50SWQgOiB0aGlzLmF1ZGl0RGV0YWlscy5xdWV1ZUlkLFxyXG4gICAgICAgXHJcbiAgICB9XHJcbiAgICB0aGlzLiRhcGkuY2FuY2VsQXVkaXRGaWxlKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuZ2V0QXVkaXRkZXRhaWxzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogZXJyPy5lcnJvcj8ubWVzc2FnZSlcclxuXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy50YWtlQXVkaXQgPWZhbHNlXHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZCBwLTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiByb3V0ZXJMaW5rPVwiL21hbmFnZS90cmF4L2F1ZGl0XCIgY2xhc3M9XCJidG4gYnRuLWFtIGJ0bi1vdXRsaW5lIHAtM1wiPlxyXG4gICAgICAgICAgICA8c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1LjgzMzIgOS45OTk4NEg0LjE2NjVNNC4xNjY1IDkuOTk5ODRMOS45OTk4NCAxNS44MzMyTTQuMTY2NSA5Ljk5OTg0TDkuOTk5ODQgNC4xNjY1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCI+e3thdWRpdERldGFpbHM/LnN0b3JlTmFtZX19PC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk01LjI1MDIxIDYuNTAwMjhDNS45MTMyOSA2LjUwMDI4IDYuNTQ5MjEgNi4yMzY4OSA3LjAxODA3IDUuNzY4MDdDNy40ODY5NCA1LjI5OTI0IDcuNzUwMzUgNC42NjMzNyA3Ljc1MDM1IDQuMDAwMzVDNy43NTAzNSAzLjMzNzMyIDcuNDg2OTQgMi43MDE0NiA3LjAxODA3IDIuMjMyNjNDNi41NDkyMSAxLjc2MzggNS45MTMyOSAxLjUwMDQyIDUuMjUwMjEgMS41MDA0MkM0LjU4NzEzIDEuNTAwNDIgMy45NTEyMSAxLjc2MzggMy40ODIzNCAyLjIzMjYzQzMuMDEzNDggMi43MDE0NiAyLjc1MDA3IDMuMzM3MzIgMi43NTAwNyA0LjAwMDM1QzIuNzUwMDcgNC42NjMzNyAzLjAxMzQ4IDUuMjk5MjQgMy40ODIzNCA1Ljc2ODA3QzMuOTUxMjEgNi4yMzY4OSA0LjU4NzEzIDYuNTAwMjggNS4yNTAyMSA2LjUwMDI4Wk01LjI1MDIxIDUuMjUwMzFDNC45MTg2NyA1LjI1MDMxIDQuNjAwNzEgNS4xMTg2MiA0LjM2NjI4IDQuODg0MjFDNC4xMzE4NCA0LjY0OTc5IDQuMDAwMTQgNC4zMzE4NiA0LjAwMDE0IDQuMDAwMzVDNC4wMDAxNCAzLjY2ODg0IDQuMTMxODQgMy4zNTA5IDQuMzY2MjggMy4xMTY0OUM0LjYwMDcxIDIuODgyMDcgNC45MTg2NyAyLjc1MDM4IDUuMjUwMjEgMi43NTAzOEM1LjU4MTc1IDIuNzUwMzggNS44OTk3MSAyLjg4MjA3IDYuMTM0MTQgMy4xMTY0OUM2LjM2ODU3IDMuMzUwOSA2LjUwMDI4IDMuNjY4ODQgNi41MDAyOCA0LjAwMDM1QzYuNTAwMjggNC4zMzE4NiA2LjM2ODU3IDQuNjQ5NzkgNi4xMzQxNCA0Ljg4NDIxQzUuODk5NzEgNS4xMTg2MiA1LjU4MTc1IDUuMjUwMzEgNS4yNTAyMSA1LjI1MDMxWk0xLjUgOC43OTE4OEMxLjUgNy45ODY5IDIuMTUzMzcgNy4zMzM1OSAyLjk1ODQxIDcuMzMzNTlINy41NDJDOC4zNDcwNSA3LjMzMzU5IDkuMDAwNDIgNy45ODY5IDkuMDAwNDIgOC43OTE4OFYxMi43NTAxQzkuMDAwNDIgMTMuNzQ0NiA4LjYwNTMxIDE0LjY5ODQgNy45MDIwMSAxNS40MDE3QzcuMTk4NyAxNi4xMDQ5IDYuMjQ0ODMgMTYuNSA1LjI1MDIxIDE2LjVDNC4yNTU1OSAxNi41IDMuMzAxNzEgMTYuMTA0OSAyLjU5ODQxIDE1LjQwMTdDMS44OTUxMSAxNC42OTg0IDEuNSAxMy43NDQ2IDEuNSAxMi43NTAxVjguNzkxODhaTTIuOTU4NDEgOC41ODM1NUMyLjkwMzE2IDguNTgzNTUgMi44NTAxNiA4LjYwNTUgMi44MTEwOSA4LjY0NDU3QzIuNzcyMDIgOC42ODM2NCAyLjc1MDA3IDguNzM2NjMgMi43NTAwNyA4Ljc5MTg4VjEyLjc1MDFDMi43NTAwNyAxMy40MTMxIDMuMDEzNDggMTQuMDQ5IDMuNDgyMzQgMTQuNTE3OEMzLjk1MTIxIDE0Ljk4NjcgNC41ODcxMyAxNS4yNSA1LjI1MDIxIDE1LjI1QzUuOTEzMjkgMTUuMjUgNi41NDkyMSAxNC45ODY3IDcuMDE4MDcgMTQuNTE3OEM3LjQ4Njk0IDE0LjA0OSA3Ljc1MDM1IDEzLjQxMzEgNy43NTAzNSAxMi43NTAxVjguNzkxODhDNy43NTAzNSA4LjczNjYzIDcuNzI4NCA4LjY4MzY0IDcuNjg5MzIgOC42NDQ1N0M3LjY1MDI1IDguNjA1NSA3LjU5NzI2IDguNTgzNTUgNy41NDIgOC41ODM1NUgyLjk1ODQxWk03Ljc3Mjg1IDYuMTc4NjJDOC4xNTMyOCA2LjM5MjY3IDguNTgzMTMgNi41MDM0IDkuMDE5NjMgNi40OTk3OEM5LjQ1NjE0IDYuNDk2MTYgOS44ODQxIDYuMzc4MzIgMTAuMjYwOSA2LjE1Nzk5QzEwLjYzNzggNS45Mzc2NiAxMC45NTAzIDUuNjIyNTIgMTEuMTY3NSA1LjI0MzkxQzExLjM4NDggNC44NjUzIDExLjQ5OSA0LjQzNjQyIDExLjQ5OSAzLjk5OTkzQzExLjQ5OSAzLjU2MzQ0IDExLjM4NDggMy4xMzQ1NiAxMS4xNjc1IDIuNzU1OTVDMTAuOTUwMyAyLjM3NzM0IDEwLjYzNzggMi4wNjIyIDEwLjI2MDkgMS44NDE4N0M5Ljg4NDEgMS42MjE1NCA5LjQ1NjE0IDEuNTAzNzEgOS4wMTk2MyAxLjUwMDA5QzguNTgzMTMgMS40OTY0NyA4LjE1MzI4IDEuNjA3MTkgNy43NzI4NSAxLjgyMTI0QzguMDQ1MzYgMi4xMzYyMyA4LjI1OTU0IDIuNTAyODkgOC4zOTk1NSAyLjkwNDU0QzguNTg5OTEgMi44MDAyNiA4LjgwNDE1IDIuNzQ3MzMgOS4wMjExOCAyLjc1MDk3QzkuMjM4MjEgMi43NTQ2MiA5LjQ1MDU1IDIuODE0NzEgOS42MzczMSAyLjkyNTMzQzkuODI0MDYgMy4wMzU5NCA5Ljk3ODc5IDMuMTkzMjggMTAuMDg2MyAzLjM4MTg1QzEwLjE5MzcgMy41NzA0MiAxMC4yNTAzIDMuNzgzNzIgMTAuMjUwMyA0LjAwMDc2QzEwLjI1MDMgNC4yMTc4MSAxMC4xOTM3IDQuNDMxMTEgMTAuMDg2MyA0LjYxOTY4QzkuOTc4NzkgNC44MDgyNSA5LjgyNDA2IDQuOTY1NTggOS42MzczMSA1LjA3NjJDOS40NTA1NSA1LjE4NjgyIDkuMjM4MjEgNS4yNDY5MSA5LjAyMTE4IDUuMjUwNTVDOC44MDQxNSA1LjI1NDIgOC41ODk5MSA1LjIwMTI3IDguMzk5NTUgNS4wOTY5OEM4LjI2MDc0IDUuNDkzODIgOC4wNDgxIDUuODYwODIgNy43NzI4NSA2LjE3ODYyWk04LjA1MDM2IDE2LjM3ODNDOC4zNTQ4MyAxNi40NTgzIDguNjcxNTEgMTYuNDk4OSA5LjAwMDQyIDE2LjVDOS45OTUwMyAxNi41IDEwLjk0ODkgMTYuMTA0OSAxMS42NTIyIDE1LjQwMTdDMTIuMzU1NSAxNC42OTg0IDEyLjc1MDYgMTMuNzQ0NiAxMi43NTA2IDEyLjc1MDFWOC43OTE4OEMxMi43NTA2IDguNDA1MTIgMTIuNTk3IDguMDM0MTkgMTIuMzIzNSA3Ljc2MDcxQzEyLjA1IDcuNDg3MjMgMTEuNjc5IDcuMzMzNTkgMTEuMjkyMiA3LjMzMzU5SDkuMzA4NzdDOS41OTQ2MiA3LjY3OTQxIDkuNzgwNDYgOC4xMTEwNyA5LjgyMzggOC41ODM1NUgxMS4yOTA1QzExLjM0NTggOC41ODM1NSAxMS4zOTg4IDguNjA1NSAxMS40Mzc5IDguNjQ0NTdDMTEuNDc2OSA4LjY4MzY0IDExLjQ5ODkgOC43MzY2MyAxMS40OTg5IDguNzkxODhWMTIuNzUwMUMxMS40OTg5IDEzLjM5NjggMTEuMjQ4MyAxNC4wMTg0IDEwLjc5OTYgMTQuNDg0M0MxMC4zNTEgMTQuOTUwMSA5LjczOTI1IDE1LjIyNCA5LjA5MjkyIDE1LjI0ODRDOC44MTA0MSAxNS42ODE3IDguNDU4NzIgMTYuMDYzMyA4LjA1MDM2IDE2LjM3ODNaTTExLjUyMjIgNi4xNzg2MkMxMS45MDI3IDYuMzkyNjcgMTIuMzMyNSA2LjUwMzQgMTIuNzY5IDYuNDk5NzhDMTMuMjA1NSA2LjQ5NjE2IDEzLjYzMzUgNi4zNzgzMiAxNC4wMTAzIDYuMTU3OTlDMTQuMzg3MSA1LjkzNzY2IDE0LjY5OTcgNS42MjI1MiAxNC45MTY5IDUuMjQzOTFDMTUuMTM0MSA0Ljg2NTMgMTUuMjQ4NCA0LjQzNjQyIDE1LjI0ODQgMy45OTk5M0MxNS4yNDg0IDMuNTYzNDQgMTUuMTM0MSAzLjEzNDU2IDE0LjkxNjkgMi43NTU5NUMxNC42OTk3IDIuMzc3MzQgMTQuMzg3MSAyLjA2MjIgMTQuMDEwMyAxLjg0MTg3QzEzLjYzMzUgMS42MjE1NCAxMy4yMDU1IDEuNTAzNzEgMTIuNzY5IDEuNTAwMDlDMTIuMzMyNSAxLjQ5NjQ3IDExLjkwMjcgMS42MDcxOSAxMS41MjIyIDEuODIxMjRDMTEuNzk0NyAyLjEzNjIzIDEyLjAwODkgMi41MDI4OSAxMi4xNDg5IDIuOTA0NTRDMTIuMzM5MyAyLjgwMDI2IDEyLjU1MzUgMi43NDczMyAxMi43NzA2IDIuNzUwOTdDMTIuOTg3NiAyLjc1NDYyIDEzLjE5OTkgMi44MTQ3MSAxMy4zODY3IDIuOTI1MzNDMTMuNTczNCAzLjAzNTk0IDEzLjcyODIgMy4xOTMyOCAxMy44MzU2IDMuMzgxODVDMTMuOTQzMSAzLjU3MDQyIDEzLjk5OTYgMy43ODM3MiAxMy45OTk2IDQuMDAwNzZDMTMuOTk5NiA0LjIxNzgxIDEzLjk0MzEgNC40MzExMSAxMy44MzU2IDQuNjE5NjhDMTMuNzI4MiA0LjgwODI1IDEzLjU3MzQgNC45NjU1OCAxMy4zODY3IDUuMDc2MkMxMy4xOTk5IDUuMTg2ODIgMTIuOTg3NiA1LjI0NjkxIDEyLjc3MDYgNS4yNTA1NUMxMi41NTM1IDUuMjU0MiAxMi4zMzkzIDUuMjAxMjcgMTIuMTQ4OSA1LjA5Njk4QzEyLjAxMDEgNS40OTM4MiAxMS43OTc1IDUuODYwODIgMTEuNTIyMiA2LjE3ODYyWk0xMS43OTk3IDE2LjM3ODNDMTIuMTA0MiAxNi40NTgzIDEyLjQyMDkgMTYuNDk4OSAxMi43NDk4IDE2LjVDMTMuNzQ0NCAxNi41IDE0LjY5ODMgMTYuMTA0OSAxNS40MDE2IDE1LjQwMTdDMTYuMTA0OSAxNC42OTg0IDE2LjUgMTMuNzQ0NiAxNi41IDEyLjc1MDFWOC43OTE4OEMxNi41IDguNDA1MjYgMTYuMzQ2NSA4LjAzNDQ3IDE2LjA3MzEgNy43NjEwMUMxNS43OTk4IDcuNDg3NTUgMTUuNDI5MSA3LjMzMzgxIDE1LjA0MjQgNy4zMzM1OUgxMy4wNTlDMTMuMzQ0OCA3LjY3OTQxIDEzLjUzMTUgOC4xMTEwNyAxMy41NzQgOC41ODM1NUgxNS4wNDA4QzE1LjA5NiA4LjU4MzU1IDE1LjE0OSA4LjYwNTUgMTUuMTg4MSA4LjY0NDU3QzE1LjIyNzEgOC42ODM2NCAxNS4yNDkxIDguNzM2NjMgMTUuMjQ5MSA4Ljc5MTg4VjEyLjc1MDFDMTUuMjQ5MSAxMy4zOTY4IDE0Ljk5ODUgMTQuMDE4NCAxNC41NDk4IDE0LjQ4NDNDMTQuMTAxMiAxNC45NTAxIDEzLjQ4OTUgMTUuMjI0IDEyLjg0MzEgMTUuMjQ4NEMxMi41NjA2IDE1LjY4MTcgMTIuMjA4MSAxNi4wNjMzIDExLjc5OTcgMTYuMzc4M1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBzdWItdGl0bGVcIj57e2F1ZGl0RGV0YWlscz8uZW5nYWdlbWVudElkfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtcy0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyIDNIMTMuNUMxMy44OTc4IDMgMTQuMjc5NCAzLjE1ODA0IDE0LjU2MDcgMy40MzkzNEMxNC44NDIgMy43MjA2NCAxNSA0LjEwMjE4IDE1IDQuNVYxNUMxNSAxNS4zOTc4IDE0Ljg0MiAxNS43Nzk0IDE0LjU2MDcgMTYuMDYwN0MxNC4yNzk0IDE2LjM0MiAxMy44OTc4IDE2LjUgMTMuNSAxNi41SDQuNUM0LjEwMjE4IDE2LjUgMy43MjA2NCAxNi4zNDIgMy40MzkzNCAxNi4wNjA3QzMuMTU4MDQgMTUuNzc5NCAzIDE1LjM5NzggMyAxNVY0LjVDMyA0LjEwMjE4IDMuMTU4MDQgMy43MjA2NCAzLjQzOTM0IDMuNDM5MzRDMy43MjA2NCAzLjE1ODA0IDQuMTAyMTggMyA0LjUgM0g2TTYuNzUgMS41SDExLjI1QzExLjY2NDIgMS41IDEyIDEuODM1NzkgMTIgMi4yNVYzLjc1QzEyIDQuMTY0MjEgMTEuNjY0MiA0LjUgMTEuMjUgNC41SDYuNzVDNi4zMzU3OSA0LjUgNiA0LjE2NDIxIDYgMy43NVYyLjI1QzYgMS44MzU3OSA2LjMzNTc5IDEuNSA2Ljc1IDEuNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHN1Yi10aXRsZVwiPnt7Y3VycmVudEF1ZGl0VHlwZSB8IHRpdGxlY2FzZX19IEV5ZSBUZXN0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMiAxLjVWNC41TTYgMS41VjQuNU0yLjI1IDcuNUgxNS43NU0zLjc1IDNIMTQuMjVDMTUuMDc4NCAzIDE1Ljc1IDMuNjcxNTcgMTUuNzUgNC41VjE1QzE1Ljc1IDE1LjgyODQgMTUuMDc4NCAxNi41IDE0LjI1IDE2LjVIMy43NUMyLjkyMTU3IDE2LjUgMi4yNSAxNS44Mjg0IDIuMjUgMTVWNC41QzIuMjUgMy42NzE1NyAyLjkyMTU3IDMgMy43NSAzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgc3ViLXRpdGxlXCI+e3thdWRpdERldGFpbHM/LmZpbGVEYXRlIHwgZGF0ZTogJ2RkL01NL1lZWVknfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtcy0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE2Nl81NTAxOSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOSA0LjVWOUwxMiAxMC41TTE2LjUgOUMxNi41IDEzLjE0MjEgMTMuMTQyMSAxNi41IDkgMTYuNUM0Ljg1Nzg2IDE2LjUgMS41IDEzLjE0MjEgMS41IDlDMS41IDQuODU3ODYgNC44NTc4NiAxLjUgOSAxLjVDMTMuMTQyMSAxLjUgMTYuNSA0Ljg1Nzg2IDE2LjUgOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNjZfNTUwMTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgc3ViLXRpdGxlXCI+e3thdWRpdERldGFpbHM/LnRlc3RTdGFydFRpbWV9fSAtIHt7YXVkaXREZXRhaWxzPy50ZXN0RW5kVGltZX19XHJcbiAgICAgICAgICAgICAgICAoe3thdWRpdERldGFpbHM/LnRlc3REdXJhdGlvbn19IE1pbnMpPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCI+e3thdWRpdERldGFpbHM/LnZpc2l0b3JzVHlwZSB8IHRpdGxlY2FzZX19PC9zcGFuPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJbJ1lldC10by1BdWRpdCddLmluY2x1ZGVzKGF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXMpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXdoaXRlIG1zLTMgcHgtMyBweS0xIGZ3LXNlbWlib2xkIHJvdW5kZWQtMyBjdXJzb3ItcG9pbnRlciBiZy1wcmltYXJ5XCIgc3R5bGU9XCJmb250LXNpemU6IDE0cHg7XCI+XHJcbiAgICAgICAgICAgIFlldCB0byBBdWRpdFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ0F1ZGl0JyYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cyA9PT0gJ0F1ZGl0ZWQnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXdoaXRlIG1zLTMgcHgtMyBweS0xIGZ3LXNlbWlib2xkIHJvdW5kZWQtMyBjdXJzb3ItcG9pbnRlciBiZy1zdWNjZXNzXCIgc3R5bGU9XCJmb250LXNpemU6IDE0cHg7XCI+XHJcbiAgICAgICAgICAgIEF1ZGl0ZWRcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdSZS1BdWRpdCcmJmF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXMgPT09ICdBdWRpdGVkJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBtcy0zIHB4LTMgcHktMSBmdy1zZW1pYm9sZCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgYmctd2FybmluZ1wiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICBSZS1BdWRpdGVkXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC0zIGZ3LWJvbGQgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMyB0ZXh0LWNlbnRlciBoZWFkZXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgQUkgVmVyaWZpZWQgU3RlcHMgPHNwYW4+PHN2ZyBuZ2JUb29sdGlwPVwiTnVtYmVyIG9mIHN0ZXBzIGRldGVjdGVkIGFuZCB2YWxpZGF0ZWQgYXV0b21hdGljYWxseSB3aXRob3V0IG1hbnVhbCByZXZpZXcuXCIgcGxhY2VtZW50PVwicmlnaHRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM2Ml8yOTc5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuOTk5ODQgMTMuMzMzMlY5Ljk5OTg0TTkuOTk5ODQgNi42NjY1SDEwLjAwODJNMTguMzMzMiA5Ljk5OTg0QzE4LjMzMzIgMTQuNjAyMiAxNC42MDIyIDE4LjMzMzIgOS45OTk4NCAxOC4zMzMyQzUuMzk3NDYgMTguMzMzMiAxLjY2NjUgMTQuNjAyMiAxLjY2NjUgOS45OTk4NEMxLjY2NjUgNS4zOTc0NiA1LjM5NzQ2IDEuNjY2NSA5Ljk5OTg0IDEuNjY2NUMxNC42MDIyIDEuNjY2NSAxOC4zMzMyIDUuMzk3NDYgMTguMzMzMiA5Ljk5OTg0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNjJfMjk3OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNSB0ZXh0LWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7YXVkaXREZXRhaWxzPy5jb3ZlcmVkU3RlcHNBST9hdWRpdERldGFpbHM/LmNvdmVyZWRTdGVwc0FJOjB9fS97e2F1ZGl0RGV0YWlscz8udG90YWxTdGVwcyA/IGF1ZGl0RGV0YWlscz8udG90YWxTdGVwczonLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBwLTMgZnctYm9sZCB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIHRleHQtY2VudGVyIGhlYWRlci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICBIdW1hbiBWZXJpZmllZCBTdGVwcyA8c3Bhbj48c3ZnIG5nYlRvb2x0aXA9XCJOdW1iZXIgb2Ygc3RlcHMgdGhhdCByZXF1aXJlZCBodW1hbiB2YWxpZGF0aW9uIHRvIGVuc3VyZSBjb21wbGlhbmNlIGFuZCBhY2N1cmFjeS5cIiBwbGFjZW1lbnQ9XCJyaWdodFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zNjJfMjk3OSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05Ljk5OTg0IDEzLjMzMzJWOS45OTk4NE05Ljk5OTg0IDYuNjY2NUgxMC4wMDgyTTE4LjMzMzIgOS45OTk4NEMxOC4zMzMyIDE0LjYwMjIgMTQuNjAyMiAxOC4zMzMyIDkuOTk5ODQgMTguMzMzMkM1LjM5NzQ2IDE4LjMzMzIgMS42NjY1IDE0LjYwMjIgMS42NjY1IDkuOTk5ODRDMS42NjY1IDUuMzk3NDYgNS4zOTc0NiAxLjY2NjUgOS45OTk4NCAxLjY2NjVDMTQuNjAyMiAxLjY2NjUgMTguMzMzMiA1LjM5NzQ2IDE4LjMzMzIgOS45OTk4NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzYyXzI5NzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTUgdGV4dC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57e2F1ZGl0RGV0YWlscz8uYXVkaXRlZFN0ZXBzP2F1ZGl0RGV0YWlscz8uYXVkaXRlZFN0ZXBzOjB9fS97e2F1ZGl0RGV0YWlscz8udG90YWxTdGVwcyA/IGF1ZGl0RGV0YWlscz8udG90YWxTdGVwczonLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBwLTMgZnctYm9sZCB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIGhlYWRlci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICBBSSBDb21wbGlhbmNlIFNjb3JlIDxzcGFuPjxzdmcgbmdiVG9vbHRpcD1cIk1lYXN1cmVzIHRoZSBwZXJjZW50YWdlIG9mIHN0ZXBzIEFJIGZsYWdnZWQgYXMgY29tcGxpYW50IHdpdGhvdXQgaHVtYW4gaW50ZXJ2ZW50aW9uLlwiIHBsYWNlbWVudD1cImxlZnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzYyXzI5NzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS45OTk4NCAxMy4zMzMyVjkuOTk5ODRNOS45OTk4NCA2LjY2NjVIMTAuMDA4Mk0xOC4zMzMyIDkuOTk5ODRDMTguMzMzMiAxNC42MDIyIDE0LjYwMjIgMTguMzMzMiA5Ljk5OTg0IDE4LjMzMzJDNS4zOTc0NiAxOC4zMzMyIDEuNjY2NSAxNC42MDIyIDEuNjY2NSA5Ljk5OTg0QzEuNjY2NSA1LjM5NzQ2IDUuMzk3NDYgMS42NjY1IDkuOTk5ODQgMS42NjY1QzE0LjYwMjIgMS42NjY1IDE4LjMzMzIgNS4zOTc0NiAxOC4zMzMyIDkuOTk5ODRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM2Ml8yOTc5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHRleHQtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3thdWRpdERldGFpbHM/LmNvbXBsaWFuY2VTY29yZSA/YXVkaXREZXRhaWxzPy5jb21wbGlhbmNlU2NvcmUgOictLSd9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBwLTMgZnctYm9sZCB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIGhlYWRlci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICBBSSBUcnVzdCBTY29yZSA8c3Bhbj48c3ZnIG5nYlRvb2x0aXA9XCJUaGlzIHNjb3JlIHJlZmxlY3RzIGhvdyBvZnRlbiBBSSBwcmVkaWN0aW9ucyB3ZXJlIGFjY2VwdGVkIHdpdGhvdXQgbWFudWFsIG92ZXJyaWRlcy5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM2Ml8yOTc5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuOTk5ODQgMTMuMzMzMlY5Ljk5OTg0TTkuOTk5ODQgNi42NjY1SDEwLjAwODJNMTguMzMzMiA5Ljk5OTg0QzE4LjMzMzIgMTQuNjAyMiAxNC42MDIyIDE4LjMzMzIgOS45OTk4NCAxOC4zMzMyQzUuMzk3NDYgMTguMzMzMiAxLjY2NjUgMTQuNjAyMiAxLjY2NjUgOS45OTk4NEMxLjY2NjUgNS4zOTc0NiA1LjM5NzQ2IDEuNjY2NSA5Ljk5OTg0IDEuNjY2NUMxNC42MDIyIDEuNjY2NSAxOC4zMzMyIDUuMzk3NDYgMTguMzMzMiA5Ljk5OTg0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNjJfMjk3OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNSB0ZXh0LWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7YXVkaXREZXRhaWxzPy50cnVzdFNjb3JlID8gYXVkaXREZXRhaWxzPy50cnVzdFNjb3JlOictLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgaC01MDBweCBweC01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwLTAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC10aXRsZSBtLTAgZnctYm9sZGVyIGJnLW5vbmVcIj5QcmV2aWV3IEV5ZSBUZXN0PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC0wIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlkZW8tcG9zaXRpb24gdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmlkZW8gY2xhc3M9XCJ3LTEwMCByb3VuZGVkLTMgaC1hdXRvXCIgY29udHJvbHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhdWRpdERldGFpbHM/LmZpbGVQYXRoXCI+PC92aWRlbz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgaC01MDBweCBweC01IG92ZXJmbG93LXNjcm9sbFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbWItMyBwLTAgYm9yZGVyLTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC10aXRsZSBtLTAgZnctYm9sZGVyIGJnLW5vbmVcIj5TdGVwLXdpc2UgQnJlYWtkb3duPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBzdWItdGl0bGUgbXQtMlwiICpuZ0lmPVwiYXVkaXREZXRhaWxzPy5sYXN0QXVkaXRlZERldGFpbHM/LmF1ZGl0ZWRCeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhdWRpdERldGFpbHM/LnNwb2tlbkxhbmd1YWdlXCI+IDxzcGFuICpuZ0lmPVwiIXRha2VBdWRpdFwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtaW5mbyBtdC0wIG1lLTJcIj5MYW5ndWFnZSBTcG9rZW46IHt7YXVkaXREZXRhaWxzPy5zcG9rZW5MYW5ndWFnZX19PC9zcGFuPjwvc3Bhbj4gIDxzcGFuIGNsYXNzPVwibXQtMVwiPlJlY2VudGx5IEF1ZGl0ZWQgQnkgOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0xXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzcgMTRWMTIuNjY2N0MxMy4zMzM3IDExLjk1OTQgMTMuMDUyNyAxMS4yODExIDEyLjU1MjYgMTAuNzgxQzEyLjA1MjUgMTAuMjgxIDExLjM3NDIgMTAgMTAuNjY3IDEwSDUuMzMzNjZDNC42MjY0MSAxMCAzLjk0ODE0IDEwLjI4MSAzLjQ0ODA0IDEwLjc4MUMyLjk0Nzk0IDExLjI4MTEgMi42NjY5OSAxMS45NTk0IDIuNjY2OTkgMTIuNjY2N1YxNE0xMC42NjcgNC42NjY2N0MxMC42NjcgNi4xMzk0MyA5LjQ3MzA4IDcuMzMzMzMgOC4wMDAzMyA3LjMzMzMzQzYuNTI3NTcgNy4zMzMzMyA1LjMzMzY2IDYuMTM5NDMgNS4zMzM2NiA0LjY2NjY3QzUuMzMzNjYgMy4xOTM5MSA2LjUyNzU3IDIgOC4wMDAzMyAyQzkuNDczMDggMiAxMC42NjcgMy4xOTM5MSAxMC42NjcgNC42NjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3BhbiA+e3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8uYXVkaXRlZEJ5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0xXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTUyXzI5NDMxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTUyXzI5NDMxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+e3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8uY29tcGxldGlvblRpbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3thdWRpdERldGFpbHM/Lmxhc3RBdWRpdGVkRGV0YWlscz8udGltZVpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0YWtlQXVkaXQmJiBjdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJ1wiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWVuZCBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJzcG9rZW5MYW5ndWFnZVwiIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQgZGlzYWJsZWQgPkxhbmd1YWdlIFNwb2tlbiA8c3BhbiBzdHlsZT1cImNvbG9yOnJlZFwiPio8L3NwYW4+PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiRW5nbGlzaFwiPkVuZ2xpc2g8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJIaW5kaVwiPkhpbmRpPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXMgPT09ICdZZXQtdG8tQXVkaXQnICYmICF0YWtlQXVkaXRcIiAoY2xpY2spPVwic3RhcnRBdWRpdCgnYXVkaXQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXdoaXRlIG1zLTMgcHgtMyBweS0yIGZ3LXNlbWlib2xkIHJvdW5kZWQtMiBjdXJzb3ItcG9pbnRlciBiZy1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICBTdGFydCBBdWRpdFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiWydBdWRpdGVkJywnUmUtQXVkaXQnXS5pbmNsdWRlcyhhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzKSAmJiAhdGFrZUF1ZGl0XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3RhcnRBdWRpdCgnUmUtQXVkaXQnKVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBweS0yIGJ0bi13YXJuaW5nXCI+UmUtQXVkaXQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0YWtlQXVkaXRcIiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNhbmNlbCgpXCIgPkNhbmNlbDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gbXMtMiBidG4tc20gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwib25zdWJtaXQoKVwiID5TdWJtaXQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IG10LTEgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiF0YWtlQXVkaXQgJiYgc3RlcFdpc2VQcm9jZXNzPy5sZW5ndGhcIiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtYWxpZ24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGVwLWJ5LXN0ZXAgUHJvY2Vzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZSdcIiBjbGFzcz1cInRleHQtYWxpZ24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWN0ZWQgVHJhbnNjcmlwdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1hbGlnbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFJIFZlcmlmaWVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWFsaWduLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHVtYW4gQXVkaXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1hbGlnbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYXNvbiBmb3IgRXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtYWxpZ24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpY2VkIFRpbWUgUmFuZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHN0ZXBXaXNlUHJvY2VzcztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidy00MHB4IGgtNDBweCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciB0ZXh0LWNlbnRlciBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInctMTAwIHJvdW5kZWQtNVwiIFtzcmNdPVwiZGF0YT8uaW1hZ2VVcmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5wcm9jZXNzTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY3VycmVudEF1ZGl0VHlwZSA9PT0ncmVtb3RlJ1wiIGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXByaW1hcnkxIHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiZGF0YT8ucHJlZGljdGVkVHJhbnNjcmlwdCA/IHRvb2x0aXBDb250ZW50IDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PSdib3R0b20nPnt7ZGF0YT8ucHJlZGljdGVkVHJhbnNjcmlwdH19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS10b29sdGlwLWNvbnRlbnQgdG9vbHRpcC1jb250ZW50IHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaW4tdy01MDBweFwiPnt7ZGF0YT8ucHJlZGljdGVkVHJhbnNjcmlwdH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuQUlTdGF0dXMgPyAnYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcycgOiAnYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyJ1wiPnt7ZGF0YS5BSVN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncGFzcycgOiAnZmFpbCd9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEuYXVkaXRlZFN0YXR1cyAhPT0gbnVsbCAmJiBkYXRhLmF1ZGl0ZWRTdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmF1ZGl0ZWRTdGF0dXMgIT09ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuYXVkaXRlZFN0YXR1cyA9PT0gdHJ1ZSA/ICdiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzJyA6IChkYXRhLmF1ZGl0ZWRTdGF0dXMgPT09IGZhbHNlID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlcicgOiAnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5hdWRpdGVkU3RhdHVzID09PSB0cnVlID8gJ3Bhc3MnIDogKGRhdGEuYXVkaXRlZFN0YXR1cyA9PT0gZmFsc2UgPyAnZmFpbCcgOiAnJykgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImRhdGEuQUlTdGF0dXMgIT09IGRhdGEuYXVkaXRlZFN0YXR1cyB8fCBkYXRhLmF1ZGl0ZWRTdGF0dXMgPT09IG51bGwgfHwgZGF0YS5hdWRpdGVkU3RhdHVzID09PSB1bmRlZmluZWQgfHwgZGF0YS5hdWRpdGVkU3RhdHVzID09PSAnJzsgZWxzZSBFcXVhbEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5yZWFzb24gfHwgJ04vQScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjRXF1YWxCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5OL0E8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZGF0YT8uc3RhcnRUaW1lfX0gLSB7e2RhdGE/LmVuZFRpbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdGVwV2lzZVByb2Nlc3M/Lmxlbmd0aCAmJiB0YWtlQXVkaXQmJmF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXM9PT0nWWV0LXRvLUF1ZGl0J3x8YXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cz09PSdJbi1Qcm9ncmVzcydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9jZXNzIG9mIHN0ZXBXaXNlUHJvY2VzczsgbGV0IGk9aW5kZXggO2xldCBsYXN0PWxhc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkLTMgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXByaW1hcnkgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LWFsaWduLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZXAte3tpKzEgfCBudW1iZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXByaW1hcnkgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LWFsaWduLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFJIFZlcmlmaWVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtcHJpbWFyeSBiZy1saWdodC1wcmltYXJ5IHRleHQtYWxpZ24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHVtYW4gQXVkaXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidy0yMDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInctNDBweCBoLTQwcHggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgdGV4dC1jZW50ZXIgbWUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDAgcm91bmRlZC01XCIgW3NyY109XCJwcm9jZXNzLmltYWdlVXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cHJvY2Vzcy5wcm9jZXNzTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuICpuZ0lmPVwicHJvY2Vzcy5BSVN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyB0ZXh0LWNhcGl0YWxpemVcIj5QYXNzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcHJvY2Vzcy5BSVN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIHRleHQtY2FwaXRhbGl6ZVwiPkZhaWw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0SHVtYW5WZXJpZmllZChpLHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicHJvY2Vzcz8uYXVkaXRlZFN0YXR1cyA/ICd0ZXh0LXdoaXRlIGJ0bi1zdWNjZXNzJyA6ICd0ZXh0LXN1Y2Nlc3MgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1zdWNjZXNzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSAgcm91bmRlZC01XCI+PHNwYW4+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQuMTY2NyA0TDYuODMzMzMgMTEuMzMzM0wzLjUgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJwcm9jZXNzPy5hdWRpdGVkU3RhdHVzID8gJ3doaXRlJyA6ICcjMTdDNjUzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwibXMtMlwiPlBhc3M8L3NwYW4+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdEh1bWFuVmVyaWZpZWQoaSxmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwcm9jZXNzPy5hdWRpdGVkU3RhdHVzPT09ZmFsc2UgPyAndGV4dC13aGl0ZSBiZy1kYW5nZXInIDogJ3RleHQtZGFuZ2VyIGJnLXdoaXRlIGJvcmRlciBib3JkZXItZGFuZ2VyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMyBweC01IHB5LTIgZnctc2VtaWJvbGQgcm91bmRlZC01IGN1cnNvci1wb2ludGVyIHJvdW5kZWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNyAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi42NjY1IDRMNC42NjY1IDEyTTQuNjY2NSA0TDEyLjY2NjUgMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicHJvY2Vzcz8uYXVkaXRlZFN0YXR1cz09PWZhbHNlID8gJ3doaXRlJyA6ICcjRjgyODVBJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMjVcIiBzdHJva2UtbGluZWNhcD1cInJvd3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtcy0yXCI+RmFpbDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZScgJiYgcHJvY2Vzcz8ucHJlZGljdGVkVHJhbnNjcmlwdFwiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWN0ZWQgVHJhbnNjcmlwdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNvbC1zbS0xMiBwLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5IHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwcm9jZXNzPy5wcmVkaWN0ZWRUcmFuc2NyaXB0ID8gdG9vbHRpcENvbnRlbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD0nYm90dG9tJz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3twcm9jZXNzPy5wcmVkaWN0ZWRUcmFuc2NyaXB0fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXRvb2x0aXAtY29udGVudCB0b29sdGlwLWNvbnRlbnQgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWluLXctNTAwcHhcIj57e3Byb2Nlc3M/LnByZWRpY3RlZFRyYW5zY3JpcHR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb2Nlc3M/LmF1ZGl0ZWRTdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBwcm9jZXNzPy5hdWRpdGVkU3RhdHVzICE9PSAnJyAmJiBwcm9jZXNzPy5hdWRpdGVkU3RhdHVzICE9PSBwcm9jZXNzPy5BSVN0YXR1c1wiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFzb24gJiBUaW1lIFN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY29sLXNtLTEyIHAtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKGksJ3JlYXNvbicpXCIgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2Nlc3M/LnJlYXNvbiA/IHByb2Nlc3M/LnJlYXNvbiA6ICdTZWxlY3QgUmVhc29uJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUwxMCAxMi41TDE1IDcuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwibGFzdCA/ICdkcm9wZG93bi1jb250ZW50MScgOiAnZHJvcGRvd24tY29udGVudCdcIiAqbmdJZj1cImRyb3Bkb3duT3BlbltpXT8ucmVhc29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNaW51dGVzIExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gbXktMiBtaW51dGVzLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRyb3Bkb3duTGlzdFwiIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwicHJvY2Vzcz8ucmVhc29uID09PSBpdGVtPy5rZXkgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FtZXJhIHB4LTUgaXRlbXMgZnctc2VtaWJvbGQgY3Vyc29yLXBvaW50ZXIgcHktMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UmVhc29uKGksIGl0ZW0/LmtleSwgJ3JlYXNvbicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbT8uaXRlbSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ3VzdG9tIElucHV0IGZvciBcIk90aGVyc1wiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9jZXNzPy5yZWFzb24gPT09ICdvdGhlcnMnXCIgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvY2Vzcy5vdGhlclJlYXNvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHlvdXIgcmVhc29uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVEcm9wZG93bihpLCdzdGFydFRpbWUnKVwiIGNsYXNzPVwiY3VzdG9tLWRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgZnctc2VtaWJvbGQgYmctd2hpdGUgcHgtMlwiPlN0YXJ0PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zZWxlY3RcIj57e3Byb2Nlc3M/LnN0YXJ0VGltZSA/IHByb2Nlc3M/LnN0YXJ0VGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6J01NOlNTJ319PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwibGFzdCA/ICdkcm9wZG93bi1jb250ZW50MScgOiAnZHJvcGRvd24tY29udGVudCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyb3Bkb3duT3BlbltpXT8uc3RhcnRUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1pbnV0ZXMgTGlzdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtc2VjdGlvbiBtaW51dGVzLXNjcm9sbCBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtaW4gb2YgbWludXRlc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TWludXRlKGksbWluLCdzdGFydFRpbWUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJtaW4gPT09IHNlbGVjdGVkTWludXRlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtaW4gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWNvbmRzIExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLXNlY3Rpb24gc2Vjb25kcy1zY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWMgb2Ygc2Vjb25kc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0U2Vjb25kKGksc2VjLCdzdGFydFRpbWUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWMgPT09IHNlbGVjdGVkU2Vjb25kc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWMgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVEcm9wZG93bihpLCdlbmRUaW1lJylcIiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGZ3LXNlbWlib2xkIGJnLXdoaXRlIHB4LTJcIj5FbmQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNlbGVjdFwiPjxzcGFuPnt7cHJvY2Vzcy5lbmRUaW1lID8gcHJvY2Vzcy5lbmRUaW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNTTpTUyd9fTwvc3Bhbj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJsYXN0ID8gJ2Ryb3Bkb3duLWNvbnRlbnQxJyA6ICdkcm9wZG93bi1jb250ZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJvcGRvd25PcGVuW2ldPy5lbmRUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1pbnV0ZXMgTGlzdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtc2VjdGlvbiBtaW51dGVzLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1pbiBvZiBtaW51dGVzTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm1pbiA9PT0gc2VsZWN0ZWRNaW51dGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZ2V0U2Vjb25kc0Zyb21UaW1lKG1pbiArICc6JyArIHNlbGVjdGVkU2Vjb25kcykgPD0gZ2V0U2Vjb25kc0Zyb21UaW1lKHByb2Nlc3Muc3RhcnRUaW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNlY29uZHNGcm9tVGltZShtaW4gKyAnOicgKyBzZWxlY3RlZFNlY29uZHMpID4gZ2V0U2Vjb25kc0Zyb21UaW1lKHByb2Nlc3Muc3RhcnRUaW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNlbGVjdE1pbnV0ZShpLG1pbiwnZW5kVGltZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbWluIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWNvbmRzIExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLXNlY3Rpb24gc2Vjb25kcy1zY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWMgb2Ygc2Vjb25kc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWMgPT09IHNlbGVjdGVkU2Vjb25kc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImdldFNlY29uZHNGcm9tVGltZShzZWxlY3RlZE1pbnV0ZXMgKyAnOicgKyBzZWMpIDw9IGdldFNlY29uZHNGcm9tVGltZShwcm9jZXNzLnN0YXJ0VGltZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTZWNvbmRzRnJvbVRpbWUoc2VsZWN0ZWRNaW51dGVzICsgJzonICsgc2VjKSA+IGdldFNlY29uZHNGcm9tVGltZShwcm9jZXNzLnN0YXJ0VGltZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzZWxlY3RTZWNvbmQoaSxzZWMsJ2VuZFRpbWUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlYyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc3RlcFdpc2VQcm9jZXNzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHRhYmxlTG9hZGluZyB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIih0YWJsZUxvYWRpbmcgfCBhc3luYykgPT09ICdsb2FkZWQnXCIgY2xhc3M9XCJyb3cgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgbXktOCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhlIHRlc3Q8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJjYXJkIG10LTMgcC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0IG1iLTJcIj5IaXN0b3J5PC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMCBweC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQtM1wiICpuZ0lmPVwiaGlzdG9yeURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+QXVkaXRlZCBCeTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BdWRpdGVkIERhdGU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+VGltZSBTdGFtcDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5WaWV3IExvZ3M8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBoaXN0b3J5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLnVzZXJOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLkRhdGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0uVGltZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIChjbGljayk9XCJ2aWV3SGlzdG9yeU1vZGVsKGl0ZW0pXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0wLjgzMzQ5NiA4LjAwMDE2QzAuODMzNDk2IDguMDAwMTYgNC4xNjY4MyAxLjMzMzUgMTAuMDAwMiAxLjMzMzVDMTUuODMzNSAxLjMzMzUgMTkuMTY2OCA4LjAwMDE2IDE5LjE2NjggOC4wMDAxNkMxOS4xNjY4IDguMDAwMTYgMTUuODMzNSAxNC42NjY4IDEwLjAwMDIgMTQuNjY2OEM0LjE2NjgzIDE0LjY2NjggMC44MzM0OTYgOC4wMDAxNiAwLjgzMzQ5NiA4LjAwMDE2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjAwMDIgMTAuNTAwMkMxMS4zODA5IDEwLjUwMDIgMTIuNTAwMiA5LjM4MDg3IDEyLjUwMDIgOC4wMDAxNkMxMi41MDAyIDYuNjE5NDUgMTEuMzgwOSA1LjUwMDE2IDEwLjAwMDIgNS41MDAxNkM4LjYxOTQ1IDUuNTAwMTYgNy41MDAxNiA2LjYxOTQ1IDcuNTAwMTYgOC4wMDAxNkM3LjUwMDE2IDkuMzgwODcgOC42MTk0NSAxMC41MDAyIDEwLjAwMDIgMTAuNTAwMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhpc3RvcnlEYXRhPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihoaXN0b3J5dGFibGVMb2FkaW5nIHwgYXN5bmMpID09PSAnbG9hZGluZydcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGhpc3Rvcnl0YWJsZUxvYWRpbmcgfCBhc3luYykgPT09ICdsb2FkZWQnXCIgY2xhc3M9XCJyb3cgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgbXktOCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhlIHRlc3Q8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI3ZpZXdIaXN0b3J5IGxldC1tb2RlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJwLTVcIj5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMCBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZC1mbGV4XCI+XHJcbjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNDZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjggMjJWMjhMMzIgMzBNMzggMjhDMzggMzMuNTIyOCAzMy41MjI4IDM4IDI4IDM4QzIyLjQ3NzIgMzggMTggMzMuNTIyOCAxOCAyOEMxOCAyMi40NzcyIDIyLjQ3NzIgMTggMjggMThDMzMuNTIyOCAxOCAzOCAyMi40NzcyIDM4IDI4WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTMgcHQtMiBmcy00IHRleHQtZ3JheS04MDAgdGV4dC1ob3Zlci1wcmltYXJ5IGZ3LWJvbGQgbWItMCB0aXRsZSBjdXJzb3ItcG9pbnRlclwiPkF1ZGl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEhpc3Rvcnk8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiICpuZ0lmPVwiaGlzdG9yeURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidy0xMDAgdGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPlN0ZXAtYnktU3RlcCBQcm9jZXNzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TdGF0dXMgY2hhbmdlZCBmcm9tPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Ob3RlZCBUaW1lIFJhbmdlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5SZWFzb24gZm9yIEVycm9yPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZpZXdIaXN0b3J5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aXRlbS5wcm9jZXNzTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uQUlTdGF0dXNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgbWUtMlwiPlBhc3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5BSVN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIG1lLTJcIj5GYWlsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzFcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAzMSA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMzAuMzUzNiA0LjM1MzU1QzMwLjU0ODggNC4xNTgyOSAzMC41NDg4IDMuODQxNzEgMzAuMzUzNiAzLjY0NjQ1TDI3LjE3MTYgMC40NjQ0NjZDMjYuOTc2MyAwLjI2OTIwNCAyNi42NTk3IDAuMjY5MjA0IDI2LjQ2NDUgMC40NjQ0NjZDMjYuMjY5MiAwLjY1OTcyOCAyNi4yNjkyIDAuOTc2MzExIDI2LjQ2NDUgMS4xNzE1N0wyOS4yOTI5IDRMMjYuNDY0NSA2LjgyODQzQzI2LjI2OTIgNy4wMjM2OSAyNi4yNjkyIDcuMzQwMjcgMjYuNDY0NSA3LjUzNTUzQzI2LjY1OTcgNy43MzA4IDI2Ljk3NjMgNy43MzA4IDI3LjE3MTYgNy41MzU1M0wzMC4zNTM2IDQuMzUzNTVaTTAgNC41SDMwVjMuNUgwVjQuNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNEMEQ1RERcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5hdWRpdGVkU3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIG1zLTJcIj5QYXNzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uYXVkaXRlZFN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIG1zLTJcIj5GYWlsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+PHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzXCIgKm5nSWY9XCJpdGVtLnN0YXJ0VGltZVwiPk5vdGVkIFRpbWUgUmFuZ2UgOiA8c3BhbiBjbGFzcz1cInRleHQtZGFyazFcIj57e2l0ZW0uc3RhcnRUaW1lID8gaXRlbS5zdGFydFRpbWU6Jy0tJ319IC0ge3tpdGVtLmVuZFRpbWV9fTwvc3Bhbj48L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImVuZ2FnZS10ZXh0XCI+e3tpdGVtLnJlYXNvbn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtYXVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9leWUtdGVzdC1hdWRpdC9leWUtdGVzdC1hdWRpdC9zdGFydC1hdWRpdC9zdGFydC1hdWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2V5ZS10ZXN0LWF1ZGl0L2V5ZS10ZXN0LWF1ZGl0L3N0YXJ0LWF1ZGl0L3N0YXJ0LWF1ZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTZCLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBVTNELE1BQU0sT0FBTyxtQkFBbUI7SUEwQlY7SUFBK0I7SUFBb0M7SUFBK0I7SUFBbUM7SUF4QnpKLGVBQWUsR0FBUSxFQUFFLENBQUM7SUFDMUIsWUFBWSxHQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsbUVBQW1FLEVBQUUsSUFBSSxFQUFFLG1FQUFtRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUVBQXVFLEVBQUUsSUFBSSxFQUFFLHVFQUF1RSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUscURBQXFELEVBQUUsSUFBSSxFQUFFLHFEQUFxRCxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQzllLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUV4QixZQUFZLEdBQUcsSUFBSSxlQUFlLENBQW1D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LENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQTVUVSxtQkFBbUI7NEZBQW5CLG1CQUFtQixzUUNYaEMsbXVpREFzb0JjOzs0RkQzbkJELG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7dU1BdUJFLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNELFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCwgTmdiVG9vbHRpcCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRXllVGVzdEF1ZGl0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V5ZS10ZXN0LWF1ZGl0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItc3RhcnQtYXVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGFydC1hdWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3N0YXJ0LWF1ZGl0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RhcnRBdWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG5cclxuICBzdGVwV2lzZVByb2Nlc3M6IGFueSA9IFtdO1xyXG4gIGRyb3Bkb3duTGlzdDogYW55ID0gW3sga2V5OiAnU2VudGVuY2UgVHJhbnNjcmlwdGlvbiBva2F5LCBidXQgbm90IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnLCBpdGVtOiAnU2VudGVuY2UgVHJhbnNjcmlwdGlvbiBva2F5LCBidXQgbm90IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnIH0sIHsga2V5OiAnU2VudGVuY2UgVHJhbnNjcmlwdGlvbiBub3QgYWNjdXJhdGUsIGJ1dCBtYXRjaGluZyB3aXRoIFByZWRpY3RlZCBTdGVwJywgaXRlbTogJ1NlbnRlbmNlIFRyYW5zY3JpcHRpb24gbm90IGFjY3VyYXRlLCBidXQgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcgfSwgeyBrZXk6ICdTdGVwIG5vdCBhY2N1cmF0ZSwgbm90IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnLCBpdGVtOiAnU3RlcCBub3QgYWNjdXJhdGUsIG5vdCBtYXRjaGluZyB3aXRoIFByZWRpY3RlZCBTdGVwJyB9LCB7IGtleTogJ290aGVycycsIGl0ZW06ICdPdGhlcnMnIH1dXHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHRhYmxlTG9hZGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8J2luaXRpYWwnIHwgJ2xvYWRpbmcnIHwgJ2xvYWRlZCc+KCdpbml0aWFsJylcclxuICBoaXN0b3J5dGFibGVMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG5cclxuICBzZWxlY3RlZE1pbnV0ZXMgPSAnMDAnO1xyXG4gIHNlbGVjdGVkU2Vjb25kcyA9ICcwMCc7XHJcbiAgbWludXRlc0xpc3Q6IHN0cmluZ1tdID0gW107XHJcbiAgc2Vjb25kc0xpc3Q6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIGF1ZGl0RGV0YWlsczogYW55ID0gW107XHJcbiAgY3VycmVudEF1ZGl0VHlwZTogYW55O1xyXG4gIHRha2VBdWRpdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0b3JlSWQ6IGFueTtcclxuICBAVmlld0NoaWxkKCd0b29sdGlwQ29udGVudCcpIHRvb2x0aXBDb250ZW50ITogTmdiVG9vbHRpcDtcclxuICBAVmlld0NoaWxkKCd2aWV3SGlzdG9yeScpIHZpZXdIaXN0b3J5OiBhbnk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgaGlzdG9yeURhdGE6IGFueSA9IFtdO1xyXG4gIEF1ZGl0SWQ6IGFueTtcclxuICB2aWV3SGlzdG9yeURhdGE6IGFueTtcclxuICBzcG9rZW5MYW5ndWFnZTphbnk9J0VuZ2xpc2gnXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlICRhcGk6IEV5ZVRlc3RBdWRpdFNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkge1xyXG5cclxuICB9XHJcbiAgdmlld0hpc3RvcnlNb2RlbChpdGVtOiBhbnkpIHtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogaXRlbS5faWRcclxuICAgIH1cclxuICAgIHRoaXMuJGFwaS52aWV3QXVkaXRIaXN0b3J5KHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudmlld0hpc3RvcnlEYXRhID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgICAgICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy52aWV3SGlzdG9yeSwge1xyXG4gICAgICAgICAgICBzaXplOid4bCcsXHJcbiAgICAgICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudGFrZUF1ZGl0ID1mYWxzZVxyXG4gICAgdGhpcy5zdGVwV2lzZVByb2Nlc3MgPVtdO1xyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5zdG9yZUlkID0gcGFyYW1zWydzdG9yZUlkJ107XHJcbiAgICAgIHRoaXMuY3VycmVudEF1ZGl0VHlwZSA9IHBhcmFtc1sndHlwZSddXHJcbiAgICAgIHRoaXMuQXVkaXRJZCA9IHBhcmFtc1snX2lkJ11cclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXRBdWRpdGRldGFpbHMoKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVUaW1lT3B0aW9ucygpO1xyXG5cclxuICB9XHJcbiAgZ2V0QXVkaXRIaXN0b3J5KCkge1xyXG4gICAgdGhpcy5oaXN0b3J5dGFibGVMb2FkaW5nLm5leHQoJ2xvYWRpbmcnKTtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogdGhpcy5jdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJyA/IHRoaXMuYXVkaXREZXRhaWxzLmVuZ2FnZW1lbnRJZCA6IHRoaXMuYXVkaXREZXRhaWxzLnF1ZXVlSWQsXHJcbiAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLmdldEF1ZGl0SGlzdG9yeShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmhpc3RvcnlEYXRhID0gcmVzLmRhdGEucmVzdWx0XHJcbiAgICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5oaXN0b3J5RGF0YSA9IFtdXHJcbiAgICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmhpc3RvcnlEYXRhID0gW11cclxuICAgICAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgKVxyXG5cclxuICB9XHJcblxyXG4gIGdldEF1ZGl0ZGV0YWlscygpIHtcclxuICAgIHRoaXMudGFibGVMb2FkaW5nLm5leHQoJ2xvYWRpbmcnKTtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBpZDogdGhpcy5BdWRpdElkLFxyXG4gICAgICB0eXBlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGVcclxuICAgIH1cclxuICAgIHRoaXMuJGFwaS5nZXRBdWRpdGRldGFpbHMocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5hdWRpdERldGFpbHMgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuICAgICAgICAgIGlmICh0aGlzLmF1ZGl0RGV0YWlscy5hdWRpdFN0YXR1cyA9PT0gJ0luLVByb2dyZXNzJykge1xyXG4gICAgICAgICAgICB0aGlzLnRha2VBdWRpdCA9IHRydWVcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLnRha2VBdWRpdCA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnN0ZXBXaXNlUHJvY2VzcyA9IHRoaXMuYXVkaXREZXRhaWxzPy5zdGVwcztcclxuc2V0VGltZW91dCgoKT0+e1xyXG4gIHRoaXMuZ2V0QXVkaXRIaXN0b3J5KClcclxufSwxMDApXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7ICBcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy50YWJsZUxvYWRpbmcubmV4dCgnbG9hZGVkJylcclxuXHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVRpbWVPcHRpb25zKCkge1xyXG4gICAgdGhpcy5taW51dGVzTGlzdCA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiB0aGlzLmZvcm1hdE51bWJlcihpKSk7XHJcbiAgICB0aGlzLnNlY29uZHNMaXN0ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IHRoaXMuZm9ybWF0TnVtYmVyKGkpKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdE51bWJlcihudW06IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbnVtIDwgMTAgPyAnMCcgKyBudW0gOiBudW0udG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIGRyb3Bkb3duT3BlbjogeyBba2V5OiBudW1iZXJdOiB7IHN0YXJ0VGltZTogYm9vbGVhbjsgZW5kVGltZTogYm9vbGVhbjsgcmVhc29uOiBib29sZWFuIH0gfSA9IHt9O1xyXG5cclxuICB0b2dnbGVEcm9wZG93bihpOiBudW1iZXIsIHRpbWU6ICdzdGFydFRpbWUnIHwgJ2VuZFRpbWUnIHwgJ3JlYXNvbicpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHRoaXMuZHJvcGRvd25PcGVuW2ldPy5bdGltZV0gPz8gZmFsc2U7XHJcblxyXG4gICAgT2JqZWN0LmtleXModGhpcy5kcm9wZG93bk9wZW4pLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbltOdW1iZXIoa2V5KV0gPSB7IHN0YXJ0VGltZTogZmFsc2UsIGVuZFRpbWU6IGZhbHNlLCByZWFzb246IGZhbHNlIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZHJvcGRvd25PcGVuW2ldKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuW2ldID0geyBzdGFydFRpbWU6IGZhbHNlLCBlbmRUaW1lOiBmYWxzZSwgcmVhc29uOiBmYWxzZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZHJvcGRvd25PcGVuW2ldW3RpbWVdID0gIWN1cnJlbnRTdGF0ZTtcclxuICB9XHJcbiAgZ2V0U2Vjb25kc0Zyb21UaW1lKHRpbWU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBpZiAoIXRpbWUpIHJldHVybiAwO1xyXG4gICAgY29uc3QgW21pbiwgc2VjXSA9IHRpbWUuc3BsaXQoJzonKS5tYXAoTnVtYmVyKTtcclxuICAgIHJldHVybiAobWluICogNjApICsgc2VjO1xyXG4gIH1cclxuICAgIFxyXG5zZWxlY3RNaW51dGUoaW5kZXg6IGFueSwgbWluOiBzdHJpbmcsIHRpbWU6ICdzdGFydFRpbWUnIHwgJ2VuZFRpbWUnIHwgJ3JlYXNvbicpIHtcclxuICBjb25zdCBwcmV2aW91c1RpbWUgPSB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0/Llt0aW1lXSB8fCAnMDA6MDAnO1xyXG5cclxuICB0aGlzLnNlbGVjdGVkTWludXRlcyA9IG1pbjtcclxuICBjb25zdCBuZXdUaW1lID0gYCR7dGhpcy5zZWxlY3RlZE1pbnV0ZXN9OiR7dGhpcy5zZWxlY3RlZFNlY29uZHN9YDtcclxuXHJcbiAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5nZXRTZWNvbmRzRnJvbVRpbWUoXHJcbiAgICB0aW1lID09PSAnc3RhcnRUaW1lJyA/IG5ld1RpbWUgOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0/LnN0YXJ0VGltZVxyXG4gICk7XHJcbiAgY29uc3QgZW5kVGltZSA9IHRoaXMuZ2V0U2Vjb25kc0Zyb21UaW1lKFxyXG4gICAgdGltZSA9PT0gJ2VuZFRpbWUnID8gbmV3VGltZSA6IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uZW5kVGltZVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGlzVmFsaWQgPSAoc3RhcnRUaW1lID09PSAwIHx8IGVuZFRpbWUgPT09IDApIHx8IHN0YXJ0VGltZSA8IGVuZFRpbWU7XHJcblxyXG4gIGlmICghaXNWYWxpZCAmJiB0aW1lICE9PSAncmVhc29uJykge1xyXG4gICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0V2FybmluZ1RvYXN0KFwiU3RhcnQgdGltZSBtdXN0IGJlIGxlc3MgdGhhbiBlbmQgdGltZS5cIik7XHJcbiAgXHJcbiAgICBjb25zdCBbcHJldk1pbiwgcHJldlNlY10gPSBwcmV2aW91c1RpbWUuc3BsaXQoJzonKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRNaW51dGVzID0gcHJldk1pbjtcclxuICAgIHRoaXMuc2VsZWN0ZWRTZWNvbmRzID0gcHJldlNlYztcclxuICBcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBcclxuXHJcbiAgdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdW3RpbWVdID0gbmV3VGltZTtcclxuICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxufVxyXG5cclxuc2VsZWN0U2Vjb25kKGluZGV4OiBhbnksIHNlYzogc3RyaW5nLCB0aW1lOiAnc3RhcnRUaW1lJyB8ICdlbmRUaW1lJyB8ICdyZWFzb24nKSB7XHJcbiAgY29uc3QgcHJldmlvdXNUaW1lID0gdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdPy5bdGltZV0gfHwgJzAwOjAwJztcclxuXHJcbiAgdGhpcy5zZWxlY3RlZFNlY29uZHMgPSBzZWM7XHJcbiAgY29uc3QgbmV3VGltZSA9IGAke3RoaXMuc2VsZWN0ZWRNaW51dGVzfToke3RoaXMuc2VsZWN0ZWRTZWNvbmRzfWA7XHJcblxyXG4gIGNvbnN0IHN0YXJ0VGltZSA9IHRoaXMuZ2V0U2Vjb25kc0Zyb21UaW1lKFxyXG4gICAgdGltZSA9PT0gJ3N0YXJ0VGltZScgPyBuZXdUaW1lIDogdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdPy5zdGFydFRpbWVcclxuICApO1xyXG4gIGNvbnN0IGVuZFRpbWUgPSB0aGlzLmdldFNlY29uZHNGcm9tVGltZShcclxuICAgIHRpbWUgPT09ICdlbmRUaW1lJyA/IG5ld1RpbWUgOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0/LmVuZFRpbWVcclxuICApO1xyXG5cclxuICBpZiAoKHRpbWUgIT09ICdyZWFzb24nKSAmJiBzdGFydFRpbWUgIT09IDAgJiYgZW5kVGltZSAhPT0gMCAmJiBzdGFydFRpbWUgPj0gZW5kVGltZSkge1xyXG4gICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0V2FybmluZ1RvYXN0KFwiU3RhcnQgdGltZSBtdXN0IGJlIGxlc3MgdGhhbiBlbmQgdGltZS5cIik7XHJcbiAgXHJcbiAgICBjb25zdCBbcHJldk1pbiwgcHJldlNlY10gPSBwcmV2aW91c1RpbWUuc3BsaXQoJzonKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRNaW51dGVzID0gcHJldk1pbjtcclxuICAgIHRoaXMuc2VsZWN0ZWRTZWNvbmRzID0gcHJldlNlYztcclxuICBcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdW3RpbWVdID0gbmV3VGltZTtcclxuICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxufVxyXG4gXHJcbiAgXHJcblxyXG4gIHNlbGVjdFJlYXNvbihpbmRleDogbnVtYmVyLCBrZXk6IGFueSwgdGltZTogYW55KSB7XHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF1bdGltZV0gPSBrZXk7XHJcbiAgXHJcbiAgICBpZiAoa2V5ID09PSAnb3RoZXJzJykge1xyXG4gICAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0ub3RoZXJSZWFzb24gPSAnJzsgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0ub3RoZXJSZWFzb24gPSBudWxsOyBcclxuICAgIH1cclxuICBcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBcclxuXHJcbiAgc2VsZWN0SHVtYW5WZXJpZmllZChpbmRleDogbnVtYmVyLCB2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdLmF1ZGl0ZWRTdGF0dXMgPSB2YWx1ZTtcclxuICB9XHJcbiAgZmluZGNvdW50KCl7XHJcbiAgICBsZXQgY291bnQgPSAwXHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5mb3JFYWNoKChkYXRhOmFueSk9PntcclxuICAgICAgaWYoZGF0YS5hdWRpdGVkU3RhdHVzIT09ZGF0YS5BSVN0YXR1cyl7XHJcbiAgICAgICAgY291bnQrK1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH0pXHJcbiAgICByZXR1cm4gY291bnRcclxuICB9XHJcbiAgZ2V0VmFsaWRhRm9ybSgpe1xyXG4gICAgbGV0IGVycm9yQ291bnQgPSAwXHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5mb3JFYWNoKChkYXRhOmFueSk9PntcclxuICAgICAgaWYoZGF0YS5hdWRpdGVkU3RhdHVzIT09ZGF0YS5BSVN0YXR1cyl7XHJcbiAgICAgICAgaWYoIWRhdGEucmVhc29uKXtcclxuICAgICAgICAgIGVycm9yQ291bnQrK1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmKGVycm9yQ291bnQ+MCl7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFdhcm5pbmdUb2FzdChcIkNvbW1lbnRzIGFyZSBtYW5kYXRvcnkgZm9yIGludmVyc2UgaHVtYW4gYXVkaXRlZCByZXNwb25zZXNcIilcclxuICB9XHJcbiAgICByZXR1cm4gZXJyb3JDb3VudFxyXG4gIH1cclxuICBvbnN1Ym1pdCgpIHtcclxuICAgIGlmKHRoaXMuZ2V0VmFsaWRhRm9ybSgpPT09MCl7XHJcblxyXG4gICAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgICBpZDogdGhpcy5BdWRpdElkLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSxcclxuICAgICAgICBmaWxlSWQ6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZScgPyB0aGlzLmF1ZGl0RGV0YWlscy5lbmdhZ2VtZW50SWQgOiB0aGlzLmF1ZGl0RGV0YWlscy5xdWV1ZUlkLFxyXG4gICAgICAgIGF1ZGl0ZWRTdGVwczogdGhpcy5zdGVwV2lzZVByb2Nlc3MubGVuZ3RoLFxyXG4gICAgICAgIGF1ZGl0U3RhdHVzOiBcIkF1ZGl0ZWRcIixcclxuICAgICAgICBvdmVyUmlkZXM6dGhpcy5maW5kY291bnQoKSxcclxuICAgICAgICBzcG9rZW5MYW5ndWFnZTogdGhpcy5zcG9rZW5MYW5ndWFnZSxcclxuICAgICAgICBzdGVwczogdGhpcy5zdGVwV2lzZVByb2Nlc3NcclxuICBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLiRhcGkuc3VibWl0QXVkaXQocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0QXVkaXRkZXRhaWxzKCk7XHJcbiAgICAgICAgICAgIH0sMTAwMClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IGVycj8uZXJyb3I/Lm1lc3NhZ2UpXHJcbiAgICAgICAgIH0gXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcbiAgc3RhcnRBdWRpdCh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnRha2VBdWRpdCA9IHRydWU7XHJcblxyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGlkOiB0aGlzLkF1ZGl0SWRcclxuICAgIH1cclxuICAgIHRoaXMuJGFwaS5nZXRBdWRpdEZpbGUocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5nZXRBdWRpdGRldGFpbHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IGVycj8uZXJyb3I/Lm1lc3NhZ2UpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuICB9XHJcbiAgY2FuY2VsKCl7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgaWQ6IHRoaXMuQXVkaXRJZCxcclxuICAgICAgICB0eXBlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUsXHJcbiAgICAgICAgZmlsZUlkOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgPT09ICdyZW1vdGUnID8gdGhpcy5hdWRpdERldGFpbHMuZW5nYWdlbWVudElkIDogdGhpcy5hdWRpdERldGFpbHMucXVldWVJZCxcclxuICAgICAgIFxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLmNhbmNlbEF1ZGl0RmlsZShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IGVycj8uZXJyb3I/Lm1lc3NhZ2UpXHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMudGFrZUF1ZGl0ID1mYWxzZVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgcC01XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgcm91dGVyTGluaz1cIi9tYW5hZ2UvdHJheC9hdWRpdFwiIGNsYXNzPVwiYnRuIGJ0bi1hbSBidG4tb3V0bGluZSBwLTNcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS44MzMyIDkuOTk5ODRINC4xNjY1TTQuMTY2NSA5Ljk5OTg0TDkuOTk5ODQgMTUuODMzMk00LjE2NjUgOS45OTk4NEw5Ljk5OTg0IDQuMTY2NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdFwiPnt7YXVkaXREZXRhaWxzPy5zdG9yZU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS4yNTAyMSA2LjUwMDI4QzUuOTEzMjkgNi41MDAyOCA2LjU0OTIxIDYuMjM2ODkgNy4wMTgwNyA1Ljc2ODA3QzcuNDg2OTQgNS4yOTkyNCA3Ljc1MDM1IDQuNjYzMzcgNy43NTAzNSA0LjAwMDM1QzcuNzUwMzUgMy4zMzczMiA3LjQ4Njk0IDIuNzAxNDYgNy4wMTgwNyAyLjIzMjYzQzYuNTQ5MjEgMS43NjM4IDUuOTEzMjkgMS41MDA0MiA1LjI1MDIxIDEuNTAwNDJDNC41ODcxMyAxLjUwMDQyIDMuOTUxMjEgMS43NjM4IDMuNDgyMzQgMi4yMzI2M0MzLjAxMzQ4IDIuNzAxNDYgMi43NTAwNyAzLjMzNzMyIDIuNzUwMDcgNC4wMDAzNUMyLjc1MDA3IDQuNjYzMzcgMy4wMTM0OCA1LjI5OTI0IDMuNDgyMzQgNS43NjgwN0MzLjk1MTIxIDYuMjM2ODkgNC41ODcxMyA2LjUwMDI4IDUuMjUwMjEgNi41MDAyOFpNNS4yNTAyMSA1LjI1MDMxQzQuOTE4NjcgNS4yNTAzMSA0LjYwMDcxIDUuMTE4NjIgNC4zNjYyOCA0Ljg4NDIxQzQuMTMxODQgNC42NDk3OSA0LjAwMDE0IDQuMzMxODYgNC4wMDAxNCA0LjAwMDM1QzQuMDAwMTQgMy42Njg4NCA0LjEzMTg0IDMuMzUwOSA0LjM2NjI4IDMuMTE2NDlDNC42MDA3MSAyLjg4MjA3IDQuOTE4NjcgMi43NTAzOCA1LjI1MDIxIDIuNzUwMzhDNS41ODE3NSAyLjc1MDM4IDUuODk5NzEgMi44ODIwNyA2LjEzNDE0IDMuMTE2NDlDNi4zNjg1NyAzLjM1MDkgNi41MDAyOCAzLjY2ODg0IDYuNTAwMjggNC4wMDAzNUM2LjUwMDI4IDQuMzMxODYgNi4zNjg1NyA0LjY0OTc5IDYuMTM0MTQgNC44ODQyMUM1Ljg5OTcxIDUuMTE4NjIgNS41ODE3NSA1LjI1MDMxIDUuMjUwMjEgNS4yNTAzMVpNMS41IDguNzkxODhDMS41IDcuOTg2OSAyLjE1MzM3IDcuMzMzNTkgMi45NTg0MSA3LjMzMzU5SDcuNTQyQzguMzQ3MDUgNy4zMzM1OSA5LjAwMDQyIDcuOTg2OSA5LjAwMDQyIDguNzkxODhWMTIuNzUwMUM5LjAwMDQyIDEzLjc0NDYgOC42MDUzMSAxNC42OTg0IDcuOTAyMDEgMTUuNDAxN0M3LjE5ODcgMTYuMTA0OSA2LjI0NDgzIDE2LjUgNS4yNTAyMSAxNi41QzQuMjU1NTkgMTYuNSAzLjMwMTcxIDE2LjEwNDkgMi41OTg0MSAxNS40MDE3QzEuODk1MTEgMTQuNjk4NCAxLjUgMTMuNzQ0NiAxLjUgMTIuNzUwMVY4Ljc5MTg4Wk0yLjk1ODQxIDguNTgzNTVDMi45MDMxNiA4LjU4MzU1IDIuODUwMTYgOC42MDU1IDIuODExMDkgOC42NDQ1N0MyLjc3MjAyIDguNjgzNjQgMi43NTAwNyA4LjczNjYzIDIuNzUwMDcgOC43OTE4OFYxMi43NTAxQzIuNzUwMDcgMTMuNDEzMSAzLjAxMzQ4IDE0LjA0OSAzLjQ4MjM0IDE0LjUxNzhDMy45NTEyMSAxNC45ODY3IDQuNTg3MTMgMTUuMjUgNS4yNTAyMSAxNS4yNUM1LjkxMzI5IDE1LjI1IDYuNTQ5MjEgMTQuOTg2NyA3LjAxODA3IDE0LjUxNzhDNy40ODY5NCAxNC4wNDkgNy43NTAzNSAxMy40MTMxIDcuNzUwMzUgMTIuNzUwMVY4Ljc5MTg4QzcuNzUwMzUgOC43MzY2MyA3LjcyODQgOC42ODM2NCA3LjY4OTMyIDguNjQ0NTdDNy42NTAyNSA4LjYwNTUgNy41OTcyNiA4LjU4MzU1IDcuNTQyIDguNTgzNTVIMi45NTg0MVpNNy43NzI4NSA2LjE3ODYyQzguMTUzMjggNi4zOTI2NyA4LjU4MzEzIDYuNTAzNCA5LjAxOTYzIDYuNDk5NzhDOS40NTYxNCA2LjQ5NjE2IDkuODg0MSA2LjM3ODMyIDEwLjI2MDkgNi4xNTc5OUMxMC42Mzc4IDUuOTM3NjYgMTAuOTUwMyA1LjYyMjUyIDExLjE2NzUgNS4yNDM5MUMxMS4zODQ4IDQuODY1MyAxMS40OTkgNC40MzY0MiAxMS40OTkgMy45OTk5M0MxMS40OTkgMy41NjM0NCAxMS4zODQ4IDMuMTM0NTYgMTEuMTY3NSAyLjc1NTk1QzEwLjk1MDMgMi4zNzczNCAxMC42Mzc4IDIuMDYyMiAxMC4yNjA5IDEuODQxODdDOS44ODQxIDEuNjIxNTQgOS40NTYxNCAxLjUwMzcxIDkuMDE5NjMgMS41MDAwOUM4LjU4MzEzIDEuNDk2NDcgOC4xNTMyOCAxLjYwNzE5IDcuNzcyODUgMS44MjEyNEM4LjA0NTM2IDIuMTM2MjMgOC4yNTk1NCAyLjUwMjg5IDguMzk5NTUgMi45MDQ1NEM4LjU4OTkxIDIuODAwMjYgOC44MDQxNSAyLjc0NzMzIDkuMDIxMTggMi43NTA5N0M5LjIzODIxIDIuNzU0NjIgOS40NTA1NSAyLjgxNDcxIDkuNjM3MzEgMi45MjUzM0M5LjgyNDA2IDMuMDM1OTQgOS45Nzg3OSAzLjE5MzI4IDEwLjA4NjMgMy4zODE4NUMxMC4xOTM3IDMuNTcwNDIgMTAuMjUwMyAzLjc4MzcyIDEwLjI1MDMgNC4wMDA3NkMxMC4yNTAzIDQuMjE3ODEgMTAuMTkzNyA0LjQzMTExIDEwLjA4NjMgNC42MTk2OEM5Ljk3ODc5IDQuODA4MjUgOS44MjQwNiA0Ljk2NTU4IDkuNjM3MzEgNS4wNzYyQzkuNDUwNTUgNS4xODY4MiA5LjIzODIxIDUuMjQ2OTEgOS4wMjExOCA1LjI1MDU1QzguODA0MTUgNS4yNTQyIDguNTg5OTEgNS4yMDEyNyA4LjM5OTU1IDUuMDk2OThDOC4yNjA3NCA1LjQ5MzgyIDguMDQ4MSA1Ljg2MDgyIDcuNzcyODUgNi4xNzg2MlpNOC4wNTAzNiAxNi4zNzgzQzguMzU0ODMgMTYuNDU4MyA4LjY3MTUxIDE2LjQ5ODkgOS4wMDA0MiAxNi41QzkuOTk1MDMgMTYuNSAxMC45NDg5IDE2LjEwNDkgMTEuNjUyMiAxNS40MDE3QzEyLjM1NTUgMTQuNjk4NCAxMi43NTA2IDEzLjc0NDYgMTIuNzUwNiAxMi43NTAxVjguNzkxODhDMTIuNzUwNiA4LjQwNTEyIDEyLjU5NyA4LjAzNDE5IDEyLjMyMzUgNy43NjA3MUMxMi4wNSA3LjQ4NzIzIDExLjY3OSA3LjMzMzU5IDExLjI5MjIgNy4zMzM1OUg5LjMwODc3QzkuNTk0NjIgNy42Nzk0MSA5Ljc4MDQ2IDguMTExMDcgOS44MjM4IDguNTgzNTVIMTEuMjkwNUMxMS4zNDU4IDguNTgzNTUgMTEuMzk4OCA4LjYwNTUgMTEuNDM3OSA4LjY0NDU3QzExLjQ3NjkgOC42ODM2NCAxMS40OTg5IDguNzM2NjMgMTEuNDk4OSA4Ljc5MTg4VjEyLjc1MDFDMTEuNDk4OSAxMy4zOTY4IDExLjI0ODMgMTQuMDE4NCAxMC43OTk2IDE0LjQ4NDNDMTAuMzUxIDE0Ljk1MDEgOS43MzkyNSAxNS4yMjQgOS4wOTI5MiAxNS4yNDg0QzguODEwNDEgMTUuNjgxNyA4LjQ1ODcyIDE2LjA2MzMgOC4wNTAzNiAxNi4zNzgzWk0xMS41MjIyIDYuMTc4NjJDMTEuOTAyNyA2LjM5MjY3IDEyLjMzMjUgNi41MDM0IDEyLjc2OSA2LjQ5OTc4QzEzLjIwNTUgNi40OTYxNiAxMy42MzM1IDYuMzc4MzIgMTQuMDEwMyA2LjE1Nzk5QzE0LjM4NzEgNS45Mzc2NiAxNC42OTk3IDUuNjIyNTIgMTQuOTE2OSA1LjI0MzkxQzE1LjEzNDEgNC44NjUzIDE1LjI0ODQgNC40MzY0MiAxNS4yNDg0IDMuOTk5OTNDMTUuMjQ4NCAzLjU2MzQ0IDE1LjEzNDEgMy4xMzQ1NiAxNC45MTY5IDIuNzU1OTVDMTQuNjk5NyAyLjM3NzM0IDE0LjM4NzEgMi4wNjIyIDE0LjAxMDMgMS44NDE4N0MxMy42MzM1IDEuNjIxNTQgMTMuMjA1NSAxLjUwMzcxIDEyLjc2OSAxLjUwMDA5QzEyLjMzMjUgMS40OTY0NyAxMS45MDI3IDEuNjA3MTkgMTEuNTIyMiAxLjgyMTI0QzExLjc5NDcgMi4xMzYyMyAxMi4wMDg5IDIuNTAyODkgMTIuMTQ4OSAyLjkwNDU0QzEyLjMzOTMgMi44MDAyNiAxMi41NTM1IDIuNzQ3MzMgMTIuNzcwNiAyLjc1MDk3QzEyLjk4NzYgMi43NTQ2MiAxMy4xOTk5IDIuODE0NzEgMTMuMzg2NyAyLjkyNTMzQzEzLjU3MzQgMy4wMzU5NCAxMy43MjgyIDMuMTkzMjggMTMuODM1NiAzLjM4MTg1QzEzLjk0MzEgMy41NzA0MiAxMy45OTk2IDMuNzgzNzIgMTMuOTk5NiA0LjAwMDc2QzEzLjk5OTYgNC4yMTc4MSAxMy45NDMxIDQuNDMxMTEgMTMuODM1NiA0LjYxOTY4QzEzLjcyODIgNC44MDgyNSAxMy41NzM0IDQuOTY1NTggMTMuMzg2NyA1LjA3NjJDMTMuMTk5OSA1LjE4NjgyIDEyLjk4NzYgNS4yNDY5MSAxMi43NzA2IDUuMjUwNTVDMTIuNTUzNSA1LjI1NDIgMTIuMzM5MyA1LjIwMTI3IDEyLjE0ODkgNS4wOTY5OEMxMi4wMTAxIDUuNDkzODIgMTEuNzk3NSA1Ljg2MDgyIDExLjUyMjIgNi4xNzg2MlpNMTEuNzk5NyAxNi4zNzgzQzEyLjEwNDIgMTYuNDU4MyAxMi40MjA5IDE2LjQ5ODkgMTIuNzQ5OCAxNi41QzEzLjc0NDQgMTYuNSAxNC42OTgzIDE2LjEwNDkgMTUuNDAxNiAxNS40MDE3QzE2LjEwNDkgMTQuNjk4NCAxNi41IDEzLjc0NDYgMTYuNSAxMi43NTAxVjguNzkxODhDMTYuNSA4LjQwNTI2IDE2LjM0NjUgOC4wMzQ0NyAxNi4wNzMxIDcuNzYxMDFDMTUuNzk5OCA3LjQ4NzU1IDE1LjQyOTEgNy4zMzM4MSAxNS4wNDI0IDcuMzMzNTlIMTMuMDU5QzEzLjM0NDggNy42Nzk0MSAxMy41MzE1IDguMTExMDcgMTMuNTc0IDguNTgzNTVIMTUuMDQwOEMxNS4wOTYgOC41ODM1NSAxNS4xNDkgOC42MDU1IDE1LjE4ODEgOC42NDQ1N0MxNS4yMjcxIDguNjgzNjQgMTUuMjQ5MSA4LjczNjYzIDE1LjI0OTEgOC43OTE4OFYxMi43NTAxQzE1LjI0OTEgMTMuMzk2OCAxNC45OTg1IDE0LjAxODQgMTQuNTQ5OCAxNC40ODQzQzE0LjEwMTIgMTQuOTUwMSAxMy40ODk1IDE1LjIyNCAxMi44NDMxIDE1LjI0ODRDMTIuNTYwNiAxNS42ODE3IDEyLjIwODEgMTYuMDYzMyAxMS43OTk3IDE2LjM3ODNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgc3ViLXRpdGxlXCI+e3thdWRpdERldGFpbHM/LmVuZ2FnZW1lbnRJZH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMiAzSDEzLjVDMTMuODk3OCAzIDE0LjI3OTQgMy4xNTgwNCAxNC41NjA3IDMuNDM5MzRDMTQuODQyIDMuNzIwNjQgMTUgNC4xMDIxOCAxNSA0LjVWMTVDMTUgMTUuMzk3OCAxNC44NDIgMTUuNzc5NCAxNC41NjA3IDE2LjA2MDdDMTQuMjc5NCAxNi4zNDIgMTMuODk3OCAxNi41IDEzLjUgMTYuNUg0LjVDNC4xMDIxOCAxNi41IDMuNzIwNjQgMTYuMzQyIDMuNDM5MzQgMTYuMDYwN0MzLjE1ODA0IDE1Ljc3OTQgMyAxNS4zOTc4IDMgMTVWNC41QzMgNC4xMDIxOCAzLjE1ODA0IDMuNzIwNjQgMy40MzkzNCAzLjQzOTM0QzMuNzIwNjQgMy4xNTgwNCA0LjEwMjE4IDMgNC41IDNINk02Ljc1IDEuNUgxMS4yNUMxMS42NjQyIDEuNSAxMiAxLjgzNTc5IDEyIDIuMjVWMy43NUMxMiA0LjE2NDIxIDExLjY2NDIgNC41IDExLjI1IDQuNUg2Ljc1QzYuMzM1NzkgNC41IDYgNC4xNjQyMSA2IDMuNzVWMi4yNUM2IDEuODM1NzkgNi4zMzU3OSAxLjUgNi43NSAxLjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBzdWItdGl0bGVcIj57e2N1cnJlbnRBdWRpdFR5cGUgfCB0aXRsZWNhc2V9fSBFeWUgVGVzdDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgMS41VjQuNU02IDEuNVY0LjVNMi4yNSA3LjVIMTUuNzVNMy43NSAzSDE0LjI1QzE1LjA3ODQgMyAxNS43NSAzLjY3MTU3IDE1Ljc1IDQuNVYxNUMxNS43NSAxNS44Mjg0IDE1LjA3ODQgMTYuNSAxNC4yNSAxNi41SDMuNzVDMi45MjE1NyAxNi41IDIuMjUgMTUuODI4NCAyLjI1IDE1VjQuNUMyLjI1IDMuNjcxNTcgMi45MjE1NyAzIDMuNzUgM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHN1Yi10aXRsZVwiPnt7YXVkaXREZXRhaWxzPy5maWxlRGF0ZSB8IGRhdGU6ICdkZC9NTS9ZWVlZJ319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNjZfNTUwMTkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTY2XzU1MDE5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHN1Yi10aXRsZVwiPnt7YXVkaXREZXRhaWxzPy50ZXN0U3RhcnRUaW1lfX0gLSB7e2F1ZGl0RGV0YWlscz8udGVzdEVuZFRpbWV9fVxyXG4gICAgICAgICAgICAgICAgKHt7YXVkaXREZXRhaWxzPy50ZXN0RHVyYXRpb259fSBNaW5zKTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7YXVkaXREZXRhaWxzPy52aXNpdG9yc1R5cGUgfCB0aXRsZWNhc2V9fTwvc3Bhbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiWydZZXQtdG8tQXVkaXQnXS5pbmNsdWRlcyhhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBtcy0zIHB4LTMgcHktMSBmdy1zZW1pYm9sZCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgYmctcHJpbWFyeVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICBZZXQgdG8gQXVkaXRcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdBdWRpdCcmJmF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXMgPT09ICdBdWRpdGVkJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBtcy0zIHB4LTMgcHktMSBmdy1zZW1pYm9sZCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgYmctc3VjY2Vzc1wiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICBBdWRpdGVkXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnUmUtQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnQXVkaXRlZCdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgbXMtMyBweC0zIHB5LTEgZnctc2VtaWJvbGQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIGJnLXdhcm5pbmdcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgICAgICAgUmUtQXVkaXRlZFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwicm93IG10LTNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtMyBmdy1ib2xkIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgdGV4dC1jZW50ZXIgaGVhZGVyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIEFJIFZlcmlmaWVkIFN0ZXBzIDxzcGFuPjxzdmcgbmdiVG9vbHRpcD1cIk51bWJlciBvZiBzdGVwcyBkZXRlY3RlZCBhbmQgdmFsaWRhdGVkIGF1dG9tYXRpY2FsbHkgd2l0aG91dCBtYW51YWwgcmV2aWV3LlwiIHBsYWNlbWVudD1cInJpZ2h0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zNjJfMjk3OSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05Ljk5OTg0IDEzLjMzMzJWOS45OTk4NE05Ljk5OTg0IDYuNjY2NUgxMC4wMDgyTTE4LjMzMzIgOS45OTk4NEMxOC4zMzMyIDE0LjYwMjIgMTQuNjAyMiAxOC4zMzMyIDkuOTk5ODQgMTguMzMzMkM1LjM5NzQ2IDE4LjMzMzIgMS42NjY1IDE0LjYwMjIgMS42NjY1IDkuOTk5ODRDMS42NjY1IDUuMzk3NDYgNS4zOTc0NiAxLjY2NjUgOS45OTk4NCAxLjY2NjVDMTQuNjAyMiAxLjY2NjUgMTguMzMzMiA1LjM5NzQ2IDE4LjMzMzIgOS45OTk4NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzYyXzI5NzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTUgdGV4dC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57e2F1ZGl0RGV0YWlscz8uY292ZXJlZFN0ZXBzQUk/YXVkaXREZXRhaWxzPy5jb3ZlcmVkU3RlcHNBSTowfX0ve3thdWRpdERldGFpbHM/LnRvdGFsU3RlcHMgPyBhdWRpdERldGFpbHM/LnRvdGFsU3RlcHM6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC0zIGZ3LWJvbGQgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMyB0ZXh0LWNlbnRlciBoZWFkZXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgSHVtYW4gVmVyaWZpZWQgU3RlcHMgPHNwYW4+PHN2ZyBuZ2JUb29sdGlwPVwiTnVtYmVyIG9mIHN0ZXBzIHRoYXQgcmVxdWlyZWQgaHVtYW4gdmFsaWRhdGlvbiB0byBlbnN1cmUgY29tcGxpYW5jZSBhbmQgYWNjdXJhY3kuXCIgcGxhY2VtZW50PVwicmlnaHRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzYyXzI5NzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS45OTk4NCAxMy4zMzMyVjkuOTk5ODRNOS45OTk4NCA2LjY2NjVIMTAuMDA4Mk0xOC4zMzMyIDkuOTk5ODRDMTguMzMzMiAxNC42MDIyIDE0LjYwMjIgMTguMzMzMiA5Ljk5OTg0IDE4LjMzMzJDNS4zOTc0NiAxOC4zMzMyIDEuNjY2NSAxNC42MDIyIDEuNjY2NSA5Ljk5OTg0QzEuNjY2NSA1LjM5NzQ2IDUuMzk3NDYgMS42NjY1IDkuOTk5ODQgMS42NjY1QzE0LjYwMjIgMS42NjY1IDE4LjMzMzIgNS4zOTc0NiAxOC4zMzMyIDkuOTk5ODRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM2Ml8yOTc5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHRleHQtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3thdWRpdERldGFpbHM/LmF1ZGl0ZWRTdGVwcz9hdWRpdERldGFpbHM/LmF1ZGl0ZWRTdGVwczowfX0ve3thdWRpdERldGFpbHM/LnRvdGFsU3RlcHMgPyBhdWRpdERldGFpbHM/LnRvdGFsU3RlcHM6Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC0zIGZ3LWJvbGQgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMyBoZWFkZXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgQUkgQ29tcGxpYW5jZSBTY29yZSA8c3Bhbj48c3ZnIG5nYlRvb2x0aXA9XCJNZWFzdXJlcyB0aGUgcGVyY2VudGFnZSBvZiBzdGVwcyBBSSBmbGFnZ2VkIGFzIGNvbXBsaWFudCB3aXRob3V0IGh1bWFuIGludGVydmVudGlvbi5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM2Ml8yOTc5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuOTk5ODQgMTMuMzMzMlY5Ljk5OTg0TTkuOTk5ODQgNi42NjY1SDEwLjAwODJNMTguMzMzMiA5Ljk5OTg0QzE4LjMzMzIgMTQuNjAyMiAxNC42MDIyIDE4LjMzMzIgOS45OTk4NCAxOC4zMzMyQzUuMzk3NDYgMTguMzMzMiAxLjY2NjUgMTQuNjAyMiAxLjY2NjUgOS45OTk4NEMxLjY2NjUgNS4zOTc0NiA1LjM5NzQ2IDEuNjY2NSA5Ljk5OTg0IDEuNjY2NUMxNC42MDIyIDEuNjY2NSAxOC4zMzMyIDUuMzk3NDYgMTguMzMzMiA5Ljk5OTg0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNjJfMjk3OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNSB0ZXh0LWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7YXVkaXREZXRhaWxzPy5jb21wbGlhbmNlU2NvcmUgP2F1ZGl0RGV0YWlscz8uY29tcGxpYW5jZVNjb3JlIDonLS0nfX0lPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC0zIGZ3LWJvbGQgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMyBoZWFkZXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgQUkgVHJ1c3QgU2NvcmUgPHNwYW4+PHN2ZyBuZ2JUb29sdGlwPVwiVGhpcyBzY29yZSByZWZsZWN0cyBob3cgb2Z0ZW4gQUkgcHJlZGljdGlvbnMgd2VyZSBhY2NlcHRlZCB3aXRob3V0IG1hbnVhbCBvdmVycmlkZXMuXCIgcGxhY2VtZW50PVwibGVmdFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zNjJfMjk3OSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05Ljk5OTg0IDEzLjMzMzJWOS45OTk4NE05Ljk5OTg0IDYuNjY2NUgxMC4wMDgyTTE4LjMzMzIgOS45OTk4NEMxOC4zMzMyIDE0LjYwMjIgMTQuNjAyMiAxOC4zMzMyIDkuOTk5ODQgMTguMzMzMkM1LjM5NzQ2IDE4LjMzMzIgMS42NjY1IDE0LjYwMjIgMS42NjY1IDkuOTk5ODRDMS42NjY1IDUuMzk3NDYgNS4zOTc0NiAxLjY2NjUgOS45OTk4NCAxLjY2NjVDMTQuNjAyMiAxLjY2NjUgMTguMzMzMiA1LjM5NzQ2IDE4LjMzMzIgOS45OTk4NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzYyXzI5NzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTUgdGV4dC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57e2F1ZGl0RGV0YWlscz8udHJ1c3RTY29yZSA/IGF1ZGl0RGV0YWlscz8udHJ1c3RTY29yZTonLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwicm93IG10LTNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGgtNTAwcHggcHgtNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0wIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtdGl0bGUgbS0wIGZ3LWJvbGRlciBiZy1ub25lXCI+UHJldmlldyBFeWUgVGVzdDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLXBvc2l0aW9uIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGNsYXNzPVwidy0xMDAgcm91bmRlZC0zIGgtYXV0b1wiIGNvbnRyb2xzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiYXVkaXREZXRhaWxzPy5maWxlUGF0aFwiPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGgtNTAwcHggcHgtNSBvdmVyZmxvdy1zY3JvbGxcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG1iLTMgcC0wIGJvcmRlci0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtdGl0bGUgbS0wIGZ3LWJvbGRlciBiZy1ub25lXCI+U3RlcC13aXNlIEJyZWFrZG93bjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggc3ViLXRpdGxlIG10LTJcIiAqbmdJZj1cImF1ZGl0RGV0YWlscz8ubGFzdEF1ZGl0ZWREZXRhaWxzPy5hdWRpdGVkQnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXVkaXREZXRhaWxzPy5zcG9rZW5MYW5ndWFnZVwiPiA8c3BhbiAqbmdJZj1cIiF0YWtlQXVkaXRcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWluZm8gbXQtMCBtZS0yXCI+TGFuZ3VhZ2UgU3Bva2VuOiB7e2F1ZGl0RGV0YWlscz8uc3Bva2VuTGFuZ3VhZ2V9fTwvc3Bhbj48L3NwYW4+ICA8c3BhbiBjbGFzcz1cIm10LTFcIj5SZWNlbnRseSBBdWRpdGVkIEJ5IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgbXQtMVwiPjxzcGFuIGNsYXNzPVwibWUtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMy4zMzM3IDE0VjEyLjY2NjdDMTMuMzMzNyAxMS45NTk0IDEzLjA1MjcgMTEuMjgxMSAxMi41NTI2IDEwLjc4MUMxMi4wNTI1IDEwLjI4MSAxMS4zNzQyIDEwIDEwLjY2NyAxMEg1LjMzMzY2QzQuNjI2NDEgMTAgMy45NDgxNCAxMC4yODEgMy40NDgwNCAxMC43ODFDMi45NDc5NCAxMS4yODExIDIuNjY2OTkgMTEuOTU5NCAyLjY2Njk5IDEyLjY2NjdWMTRNMTAuNjY3IDQuNjY2NjdDMTAuNjY3IDYuMTM5NDMgOS40NzMwOCA3LjMzMzMzIDguMDAwMzMgNy4zMzMzM0M2LjUyNzU3IDcuMzMzMzMgNS4zMzM2NiA2LjEzOTQzIDUuMzMzNjYgNC42NjY2N0M1LjMzMzY2IDMuMTkzOTEgNi41Mjc1NyAyIDguMDAwMzMgMkM5LjQ3MzA4IDIgMTAuNjY3IDMuMTkzOTEgMTAuNjY3IDQuNjY2NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4gPnt7YXVkaXREZXRhaWxzPy5sYXN0QXVkaXRlZERldGFpbHM/LmF1ZGl0ZWRCeX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgbXQtMVwiPjxzcGFuIGNsYXNzPVwibWUtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE1Ml8yOTQzMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05IDQuNVY5TDEyIDEwLjVNMTYuNSA5QzE2LjUgMTMuMTQyMSAxMy4xNDIxIDE2LjUgOSAxNi41QzQuODU3ODYgMTYuNSAxLjUgMTMuMTQyMSAxLjUgOUMxLjUgNC44NTc4NiA0Ljg1Nzg2IDEuNSA5IDEuNUMxMy4xNDIxIDEuNSAxNi41IDQuODU3ODYgMTYuNSA5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE1Ml8yOTQzMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPnt7YXVkaXREZXRhaWxzPy5sYXN0QXVkaXRlZERldGFpbHM/LmNvbXBsZXRpb25UaW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YXVkaXREZXRhaWxzPy5sYXN0QXVkaXRlZERldGFpbHM/LnRpbWVab25lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGFrZUF1ZGl0JiYgY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZSdcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1lbmQgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwic3Bva2VuTGFuZ3VhZ2VcIiBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkIGRpc2FibGVkID5MYW5ndWFnZSBTcG9rZW4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWRcIj4qPC9zcGFuPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkVuZ2xpc2hcIj5FbmdsaXNoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiSGluZGlcIj5IaW5kaTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ0F1ZGl0JyYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cyA9PT0gJ1lldC10by1BdWRpdCcgJiYgIXRha2VBdWRpdFwiIChjbGljayk9XCJzdGFydEF1ZGl0KCdhdWRpdCcpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgbXMtMyBweC0zIHB5LTIgZnctc2VtaWJvbGQgcm91bmRlZC0yIGN1cnNvci1wb2ludGVyIGJnLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIFN0YXJ0IEF1ZGl0XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJbJ0F1ZGl0ZWQnLCdSZS1BdWRpdCcsJ1lldC10by1BdWRpdCddLmluY2x1ZGVzKGF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXMpJiZhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ1JlLUF1ZGl0JyAmJiAhdGFrZUF1ZGl0fHxhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ0F1ZGl0JyYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cyA9PT0gJ0F1ZGl0ZWQnJiYgIXRha2VBdWRpdCBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdGFydEF1ZGl0KCdSZS1BdWRpdCcpXCIgY2xhc3M9XCJidG4gYnRuLXNtIHB5LTIgYnRuLXdhcm5pbmdcIj5SZS1BdWRpdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRha2VBdWRpdFwiIGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmVcIiAoY2xpY2spPVwiY2FuY2VsKClcIiA+Q2FuY2VsPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBtcy0yIGJ0bi1zbSBidG4tc3VjY2Vzc1wiIChjbGljayk9XCJvbnN1Ym1pdCgpXCIgPlN1Ym1pdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgbXQtMSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXRha2VBdWRpdCAmJiBzdGVwV2lzZVByb2Nlc3M/Lmxlbmd0aFwiIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBib3JkZXIgYm9yZGVyLTEgcm91bmRlZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidy0xMDAgdGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1hbGlnbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZXAtYnktc3RlcCBQcm9jZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJ1wiIGNsYXNzPVwidGV4dC1hbGlnbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWRpY3RlZCBUcmFuc2NyaXB0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWFsaWduLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUkgVmVyaWZpZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtYWxpZ24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdW1hbiBBdWRpdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWFsaWduLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhc29uIGZvciBFcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1hbGlnbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGljZWQgVGltZSBSYW5nZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc3RlcFdpc2VQcm9jZXNzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ3LTQwcHggaC00MHB4IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRleHQtY2VudGVyIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDAgcm91bmRlZC01XCIgW3NyY109XCJkYXRhPy5pbWFnZVVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLnByb2Nlc3NOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlID09PSdyZW1vdGUnXCIgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeTEgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJkYXRhPy5wcmVkaWN0ZWRUcmFuc2NyaXB0ID8gdG9vbHRpcENvbnRlbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9J2JvdHRvbSc+e3tkYXRhPy5wcmVkaWN0ZWRUcmFuc2NyaXB0fX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcENvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXRvb2x0aXAtY29udGVudCB0b29sdGlwLWNvbnRlbnQgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pbi13LTUwMHB4XCI+e3tkYXRhPy5wcmVkaWN0ZWRUcmFuc2NyaXB0fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemVcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0YS5BSVN0YXR1cyA/ICdiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzJyA6ICdiYWRnZSBiYWRnZS1saWdodC1kYW5nZXInXCI+e3tkYXRhLkFJU3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdwYXNzJyA6ICdmYWlsJ319PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YS5hdWRpdGVkU3RhdHVzICE9PSBudWxsICYmIGRhdGEuYXVkaXRlZFN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuYXVkaXRlZFN0YXR1cyAhPT0gJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0YS5hdWRpdGVkU3RhdHVzID09PSB0cnVlID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MnIDogKGRhdGEuYXVkaXRlZFN0YXR1cyA9PT0gZmFsc2UgPyAnYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyJyA6ICcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLmF1ZGl0ZWRTdGF0dXMgPT09IHRydWUgPyAncGFzcycgOiAoZGF0YS5hdWRpdGVkU3RhdHVzID09PSBmYWxzZSA/ICdmYWlsJyA6ICcnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiZGF0YS5BSVN0YXR1cyAhPT0gZGF0YS5hdWRpdGVkU3RhdHVzIHx8IGRhdGEuYXVkaXRlZFN0YXR1cyA9PT0gbnVsbCB8fCBkYXRhLmF1ZGl0ZWRTdGF0dXMgPT09IHVuZGVmaW5lZCB8fCBkYXRhLmF1ZGl0ZWRTdGF0dXMgPT09ICcnOyBlbHNlIEVxdWFsQmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LnJlYXNvbiB8fCAnTi9BJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNFcXVhbEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPk4vQTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tkYXRhPy5zdGFydFRpbWV9fSAtIHt7ZGF0YT8uZW5kVGltZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN0ZXBXaXNlUHJvY2Vzcz8ubGVuZ3RoICYmIHRha2VBdWRpdCYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cz09PSdZZXQtdG8tQXVkaXQnfHxhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzPT09J0luLVByb2dyZXNzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb2Nlc3Mgb2Ygc3RlcFdpc2VQcm9jZXNzOyBsZXQgaT1pbmRleCA7bGV0IGxhc3Q9bGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtcHJpbWFyeSBiZy1saWdodC1wcmltYXJ5IHRleHQtYWxpZ24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RlcC17e2krMSB8IG51bWJlcn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtcHJpbWFyeSBiZy1saWdodC1wcmltYXJ5IHRleHQtYWxpZ24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUkgVmVyaWZpZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1wcmltYXJ5IGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1hbGlnbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdW1hbiBBdWRpdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3LTIwMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc3RhcnRcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidy00MHB4IGgtNDBweCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciB0ZXh0LWNlbnRlciBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTEwMCByb3VuZGVkLTVcIiBbc3JjXT1cInByb2Nlc3MuaW1hZ2VVcmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3twcm9jZXNzLnByb2Nlc3NOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gKm5nSWY9XCJwcm9jZXNzLkFJU3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHRleHQtY2FwaXRhbGl6ZVwiPlBhc3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFwcm9jZXNzLkFJU3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXIgdGV4dC1jYXBpdGFsaXplXCI+RmFpbDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3RIdW1hblZlcmlmaWVkKGksdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwcm9jZXNzPy5hdWRpdGVkU3RhdHVzID8gJ3RleHQtd2hpdGUgYnRuLXN1Y2Nlc3MnIDogJ3RleHQtc3VjY2VzcyBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLXN1Y2Nlc3MnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtICByb3VuZGVkLTVcIj48c3Bhbj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNyAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNC4xNjY3IDRMNi44MzMzMyAxMS4zMzMzTDMuNSA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInByb2Nlc3M/LmF1ZGl0ZWRTdGF0dXMgPyAnd2hpdGUnIDogJyMxN0M2NTMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4yNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJtcy0yXCI+UGFzczwvc3Bhbj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0SHVtYW5WZXJpZmllZChpLGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInByb2Nlc3M/LmF1ZGl0ZWRTdGF0dXM9PT1mYWxzZSA/ICd0ZXh0LXdoaXRlIGJnLWRhbmdlcicgOiAndGV4dC1kYW5nZXIgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1kYW5nZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy0zIHB4LTUgcHktMiBmdy1zZW1pYm9sZCByb3VuZGVkLTUgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxN1wiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE3IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjY2NjUgNEw0LjY2NjUgMTJNNC42NjY1IDRMMTIuNjY2NSAxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJwcm9jZXNzPy5hdWRpdGVkU3RhdHVzPT09ZmFsc2UgPyAnd2hpdGUnIDogJyNGODI4NUEnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4yNVwiIHN0cm9rZS1saW5lY2FwPVwicm93dW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm1zLTJcIj5GYWlsPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJyAmJiBwcm9jZXNzPy5wcmVkaWN0ZWRUcmFuc2NyaXB0XCIgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IHAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWRpY3RlZCBUcmFuc2NyaXB0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY29sLXNtLTEyIHAtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInByb2Nlc3M/LnByZWRpY3RlZFRyYW5zY3JpcHQgPyB0b29sdGlwQ29udGVudCA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PSdib3R0b20nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Byb2Nlc3M/LnByZWRpY3RlZFRyYW5zY3JpcHR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcENvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tdG9vbHRpcC1jb250ZW50IHRvb2x0aXAtY29udGVudCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaW4tdy01MDBweFwiPnt7cHJvY2Vzcz8ucHJlZGljdGVkVHJhbnNjcmlwdH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvY2Vzcz8uYXVkaXRlZFN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHByb2Nlc3M/LmF1ZGl0ZWRTdGF0dXMgIT09ICcnICYmIHByb2Nlc3M/LmF1ZGl0ZWRTdGF0dXMgIT09IHByb2Nlc3M/LkFJU3RhdHVzXCIgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IHAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYXNvbiAmIFRpbWUgU3RhbXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBjb2wtc20tMTIgcC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oaSwncmVhc29uJylcIiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJvY2Vzcz8ucmVhc29uID8gcHJvY2Vzcz8ucmVhc29uIDogJ1NlbGVjdCBSZWFzb24nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgNy41TDEwIDEyLjVMMTUgNy41XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJsYXN0ID8gJ2Ryb3Bkb3duLWNvbnRlbnQxJyA6ICdkcm9wZG93bi1jb250ZW50J1wiICpuZ0lmPVwiZHJvcGRvd25PcGVuW2ldPy5yZWFzb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1pbnV0ZXMgTGlzdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSBteS0yIG1pbnV0ZXMtc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZHJvcGRvd25MaXN0XCIgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCJwcm9jZXNzPy5yZWFzb24gPT09IGl0ZW0/LmtleSA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYW1lcmEgcHgtNSBpdGVtcyBmdy1zZW1pYm9sZCBjdXJzb3ItcG9pbnRlciBweS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSZWFzb24oaSwgaXRlbT8ua2V5LCAncmVhc29uJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtPy5pdGVtIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDdXN0b20gSW5wdXQgZm9yIFwiT3RoZXJzXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb2Nlc3M/LnJlYXNvbiA9PT0gJ290aGVycydcIiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9jZXNzLm90aGVyUmVhc29uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgeW91ciByZWFzb25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKGksJ3N0YXJ0VGltZScpXCIgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBmdy1zZW1pYm9sZCBiZy13aGl0ZSBweC0yXCI+U3RhcnQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNlbGVjdFwiPnt7cHJvY2Vzcz8uc3RhcnRUaW1lID8gcHJvY2Vzcz8uc3RhcnRUaW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDonTU06U1MnfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJsYXN0ID8gJ2Ryb3Bkb3duLWNvbnRlbnQxJyA6ICdkcm9wZG93bi1jb250ZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJvcGRvd25PcGVuW2ldPy5zdGFydFRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTWludXRlcyBMaXN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbC1zZWN0aW9uIG1pbnV0ZXMtc2Nyb2xsIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1pbiBvZiBtaW51dGVzTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNaW51dGUoaSxtaW4sJ3N0YXJ0VGltZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm1pbiA9PT0gc2VsZWN0ZWRNaW51dGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1pbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlY29uZHMgTGlzdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtc2VjdGlvbiBzZWNvbmRzLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlYyBvZiBzZWNvbmRzTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RTZWNvbmQoaSxzZWMsJ3N0YXJ0VGltZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlYyA9PT0gc2VsZWN0ZWRTZWNvbmRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlYyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKGksJ2VuZFRpbWUnKVwiIGNsYXNzPVwiY3VzdG9tLWRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgZnctc2VtaWJvbGQgYmctd2hpdGUgcHgtMlwiPkVuZDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc2VsZWN0XCI+PHNwYW4+e3twcm9jZXNzLmVuZFRpbWUgPyBwcm9jZXNzLmVuZFRpbWUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01NOlNTJ319PC9zcGFuPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImxhc3QgPyAnZHJvcGRvd24tY29udGVudDEnIDogJ2Ryb3Bkb3duLWNvbnRlbnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcm9wZG93bk9wZW5baV0/LmVuZFRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTWludXRlcyBMaXN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbC1zZWN0aW9uIG1pbnV0ZXMtc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbWluIG9mIG1pbnV0ZXNMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwibWluID09PSBzZWxlY3RlZE1pbnV0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJnZXRTZWNvbmRzRnJvbVRpbWUobWluICsgJzonICsgc2VsZWN0ZWRTZWNvbmRzKSA8PSBnZXRTZWNvbmRzRnJvbVRpbWUocHJvY2Vzcy5zdGFydFRpbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2Vjb25kc0Zyb21UaW1lKG1pbiArICc6JyArIHNlbGVjdGVkU2Vjb25kcykgPiBnZXRTZWNvbmRzRnJvbVRpbWUocHJvY2Vzcy5zdGFydFRpbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc2VsZWN0TWludXRlKGksbWluLCdlbmRUaW1lJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtaW4gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlY29uZHMgTGlzdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtc2VjdGlvbiBzZWNvbmRzLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlYyBvZiBzZWNvbmRzTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlYyA9PT0gc2VsZWN0ZWRTZWNvbmRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZ2V0U2Vjb25kc0Zyb21UaW1lKHNlbGVjdGVkTWludXRlcyArICc6JyArIHNlYykgPD0gZ2V0U2Vjb25kc0Zyb21UaW1lKHByb2Nlc3Muc3RhcnRUaW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNlY29uZHNGcm9tVGltZShzZWxlY3RlZE1pbnV0ZXMgKyAnOicgKyBzZWMpID4gZ2V0U2Vjb25kc0Zyb21UaW1lKHByb2Nlc3Muc3RhcnRUaW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNlbGVjdFNlY29uZChpLHNlYywnZW5kVGltZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VjIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzdGVwV2lzZVByb2Nlc3M/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIodGFibGVMb2FkaW5nIHwgYXN5bmMpID09PSAnbG9hZGluZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgcm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHRhYmxlTG9hZGluZyB8IGFzeW5jKSA9PT0gJ2xvYWRlZCdcIiBjbGFzcz1cInJvdyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBteS04IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGUgdGVzdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImNhcmQgbXQtMyBwLTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXRleHQgbWItMlwiPkhpc3Rvcnk8L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0wIHB4LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBib3JkZXIgYm9yZGVyLTEgcm91bmRlZC0zXCIgKm5nSWY9XCJoaXN0b3J5RGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5BdWRpdGVkIEJ5PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkF1ZGl0ZWQgRGF0ZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5UaW1lIFN0YW1wPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlZpZXcgTG9nczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGhpc3RvcnlEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0udXNlck5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0uRGF0ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aXRlbS5UaW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgKGNsaWNrKT1cInZpZXdIaXN0b3J5TW9kZWwoaXRlbSlcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTAuODMzNDk2IDguMDAwMTZDMC44MzM0OTYgOC4wMDAxNiA0LjE2NjgzIDEuMzMzNSAxMC4wMDAyIDEuMzMzNUMxNS44MzM1IDEuMzMzNSAxOS4xNjY4IDguMDAwMTYgMTkuMTY2OCA4LjAwMDE2QzE5LjE2NjggOC4wMDAxNiAxNS44MzM1IDE0LjY2NjggMTAuMDAwMiAxNC42NjY4QzQuMTY2ODMgMTQuNjY2OCAwLjgzMzQ5NiA4LjAwMDE2IDAuODMzNDk2IDguMDAwMTZaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuMDAwMiAxMC41MDAyQzExLjM4MDkgMTAuNTAwMiAxMi41MDAyIDkuMzgwODcgMTIuNTAwMiA4LjAwMDE2QzEyLjUwMDIgNi42MTk0NSAxMS4zODA5IDUuNTAwMTYgMTAuMDAwMiA1LjUwMDE2QzguNjE5NDUgNS41MDAxNiA3LjUwMDE2IDYuNjE5NDUgNy41MDAxNiA4LjAwMDE2QzcuNTAwMTYgOS4zODA4NyA4LjYxOTQ1IDEwLjUwMDIgMTAuMDAwMiAxMC41MDAyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaGlzdG9yeURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGhpc3Rvcnl0YWJsZUxvYWRpbmcgfCBhc3luYykgPT09ICdsb2FkaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgcm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoaGlzdG9yeXRhYmxlTG9hZGluZyB8IGFzeW5jKSA9PT0gJ2xvYWRlZCdcIiBjbGFzcz1cInJvdyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBteS04IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB0aGUgdGVzdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdmlld0hpc3RvcnkgbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtNVwiPlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0wIFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBkLWZsZXhcIj5cclxuPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yOCAyMlYyOEwzMiAzME0zOCAyOEMzOCAzMy41MjI4IDMzLjUyMjggMzggMjggMzhDMjIuNDc3MiAzOCAxOCAzMy41MjI4IDE4IDI4QzE4IDIyLjQ3NzIgMjIuNDc3MiAxOCAyOCAxOEMzMy41MjI4IDE4IDM4IDIyLjQ3NzIgMzggMjhaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMyBwdC0yIGZzLTQgdGV4dC1ncmF5LTgwMCB0ZXh0LWhvdmVyLXByaW1hcnkgZnctYm9sZCBtYi0wIHRpdGxlIGN1cnNvci1wb2ludGVyXCI+QXVkaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCIgKm5nSWY9XCJoaXN0b3J5RGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+U3RlcC1ieS1TdGVwIFByb2Nlc3M8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlN0YXR1cyBjaGFuZ2VkIGZyb208L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5vdGVkIFRpbWUgUmFuZ2U8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlJlYXNvbiBmb3IgRXJyb3I8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygdmlld0hpc3RvcnlEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLnByb2Nlc3NOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5BSVN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBtZS0yXCI+UGFzczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLkFJU3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXIgbWUtMlwiPkZhaWw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzMVwiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDMxIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zMC4zNTM2IDQuMzUzNTVDMzAuNTQ4OCA0LjE1ODI5IDMwLjU0ODggMy44NDE3MSAzMC4zNTM2IDMuNjQ2NDVMMjcuMTcxNiAwLjQ2NDQ2NkMyNi45NzYzIDAuMjY5MjA0IDI2LjY1OTcgMC4yNjkyMDQgMjYuNDY0NSAwLjQ2NDQ2NkMyNi4yNjkyIDAuNjU5NzI4IDI2LjI2OTIgMC45NzYzMTEgMjYuNDY0NSAxLjE3MTU3TDI5LjI5MjkgNEwyNi40NjQ1IDYuODI4NDNDMjYuMjY5MiA3LjAyMzY5IDI2LjI2OTIgNy4zNDAyNyAyNi40NjQ1IDcuNTM1NTNDMjYuNjU5NyA3LjczMDggMjYuOTc2MyA3LjczMDggMjcuMTcxNiA3LjUzNTUzTDMwLjM1MzYgNC4zNTM1NVpNMCA0LjVIMzBWMy41SDBWNC41WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLmF1ZGl0ZWRTdGF0dXNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgbXMtMlwiPlBhc3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5hdWRpdGVkU3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXIgbXMtMlwiPkZhaWw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkID48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3NcIiAqbmdJZj1cIml0ZW0uc3RhcnRUaW1lXCI+Tm90ZWQgVGltZSBSYW5nZSA6IDxzcGFuIGNsYXNzPVwidGV4dC1kYXJrMVwiPnt7aXRlbS5zdGFydFRpbWUgPyBpdGVtLnN0YXJ0VGltZTonLS0nfX0gLSB7e2l0ZW0uZW5kVGltZX19PC9zcGFuPjwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZW5nYWdlLXRleHRcIj57e2l0ZW0ucmVhc29ufX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==