tango-app-ui-analyse-trax 3.4.0-eyeTest.7 → 3.4.0-eyeTest.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.mjs +3 -3
- package/fesm2022/tango-app-ui-analyse-trax-eye-test-audit.module-C-Qy5HqF.mjs +1413 -0
- package/fesm2022/tango-app-ui-analyse-trax-eye-test-audit.module-C-Qy5HqF.mjs.map +1 -0
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-C4GNggia.mjs +18173 -0
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-C4GNggia.mjs.map +1 -0
- package/fesm2022/tango-app-ui-analyse-trax.mjs +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.mjs
CHANGED
|
@@ -279,11 +279,11 @@ export class StartAuditComponent {
|
|
|
279
279
|
this.destroy$.complete();
|
|
280
280
|
}
|
|
281
281
|
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 });
|
|
282
|
-
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 <span class=\"ms-3 badge badge-light-default\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 10.5V9.5C10 8.96957 9.78929 8.46086 9.41421 8.08579C9.03914 7.71071 8.53043 7.5 8 7.5H4C3.46957 7.5 2.96086 7.71071 2.58579 8.08579C2.21071 8.46086 2 8.96957 2 9.5V10.5M8 3.5C8 4.60457 7.10457 5.5 6 5.5C4.89543 5.5 4 4.60457 4 3.5C4 2.39543 4.89543 1.5 6 1.5C7.10457 1.5 8 2.39543 8 3.5Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>{{auditDetails?.displayName}}</span> \r\n <!-- displayName -->\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' || auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-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' ||auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-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 h-700px scroll\">\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;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.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" }] });
|
|
282
|
+
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 <span class=\"ms-3 badge badge-light-default\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 10.5V9.5C10 8.96957 9.78929 8.46086 9.41421 8.08579C9.03914 7.71071 8.53043 7.5 8 7.5H4C3.46957 7.5 2.96086 7.71071 2.58579 8.08579C2.21071 8.46086 2 8.96957 2 9.5V10.5M8 3.5C8 4.60457 7.10457 5.5 6 5.5C4.89543 5.5 4 4.60457 4 3.5C4 2.39543 4.89543 1.5 6 1.5C7.10457 1.5 8 2.39543 8 3.5Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>{{auditDetails?.displayName}}</span> \r\n <!-- displayName -->\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' || auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-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' ||auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-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 <span *ngIf=\"data.reason !=='others'\">{{data.reason || 'N/A'}}</span><span *ngIf=\"data.reason ==='others'\">{{data.otherReason || 'N/A'}}</span>\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 h-700px scroll\">\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\"><span *ngIf=\"item.reason !=='others'\">{{item.reason}}</span><span *ngIf=\"item.reason ==='others'\">{{item.otherReason}}</span></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;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.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" }] });
|
|
283
283
|
}
|
|
284
284
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StartAuditComponent, decorators: [{
|
|
285
285
|
type: Component,
|
|
286
|
-
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 <span class=\"ms-3 badge badge-light-default\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 10.5V9.5C10 8.96957 9.78929 8.46086 9.41421 8.08579C9.03914 7.71071 8.53043 7.5 8 7.5H4C3.46957 7.5 2.96086 7.71071 2.58579 8.08579C2.21071 8.46086 2 8.96957 2 9.5V10.5M8 3.5C8 4.60457 7.10457 5.5 6 5.5C4.89543 5.5 4 4.60457 4 3.5C4 2.39543 4.89543 1.5 6 1.5C7.10457 1.5 8 2.39543 8 3.5Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>{{auditDetails?.displayName}}</span> \r\n <!-- displayName -->\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' || auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-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' ||auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-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 h-700px scroll\">\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;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.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"] }]
|
|
286
|
+
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 <span class=\"ms-3 badge badge-light-default\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 10.5V9.5C10 8.96957 9.78929 8.46086 9.41421 8.08579C9.03914 7.71071 8.53043 7.5 8 7.5H4C3.46957 7.5 2.96086 7.71071 2.58579 8.08579C2.21071 8.46086 2 8.96957 2 9.5V10.5M8 3.5C8 4.60457 7.10457 5.5 6 5.5C4.89543 5.5 4 4.60457 4 3.5C4 2.39543 4.89543 1.5 6 1.5C7.10457 1.5 8 2.39543 8 3.5Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>{{auditDetails?.displayName}}</span> \r\n <!-- displayName -->\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' || auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-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' ||auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-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 <span *ngIf=\"data.reason !=='others'\">{{data.reason || 'N/A'}}</span><span *ngIf=\"data.reason ==='others'\">{{data.otherReason || 'N/A'}}</span>\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 h-700px scroll\">\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\"><span *ngIf=\"item.reason !=='others'\">{{item.reason}}</span><span *ngIf=\"item.reason ==='others'\">{{item.otherReason}}</span></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;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.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"] }]
|
|
287
287
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ToastService }, { type: i2.ActivatedRoute }, { type: i3.EyeTestAuditService }, { type: i4.NgbModal }], propDecorators: { tooltipContent: [{
|
|
288
288
|
type: ViewChild,
|
|
289
289
|
args: ['tooltipContent']
|
|
@@ -291,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
291
291
|
type: ViewChild,
|
|
292
292
|
args: ['viewHistory']
|
|
293
293
|
}] } });
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtYXVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9leWUtdGVzdC1hdWRpdC9leWUtdGVzdC1hdWRpdC9zdGFydC1hdWRpdC9zdGFydC1hdWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2V5ZS10ZXN0LWF1ZGl0L2V5ZS10ZXN0LWF1ZGl0L3N0YXJ0LWF1ZGl0L3N0YXJ0LWF1ZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTZCLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBVTNELE1BQU0sT0FBTyxtQkFBbUI7SUEwQlY7SUFBK0I7SUFBb0M7SUFBK0I7SUFBbUM7SUF4QnpKLGVBQWUsR0FBUSxFQUFFLENBQUM7SUFDMUIsWUFBWSxHQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsbUVBQW1FLEVBQUUsSUFBSSxFQUFFLG1FQUFtRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUVBQXVFLEVBQUUsSUFBSSxFQUFFLHVFQUF1RSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUscURBQXFELEVBQUUsSUFBSSxFQUFFLHFEQUFxRCxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQzllLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUV4QixZQUFZLEdBQUcsSUFBSSxlQUFlLENBQW1D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QUFlLEVBQUUsQ0FBQztpQkFDeEI7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUM3RixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBR0osQ0FBQztJQUNELE1BQU07UUFDSixrQkFBa0I7UUFDbEIsc0JBQXNCO1FBQ3RCLG1DQUFtQztRQUNuQywrR0FBK0c7UUFDL0csdUZBQXVGO1FBQ3ZGLElBQUk7UUFDSixnRkFBZ0Y7UUFDaEYsMEJBQTBCO1FBQzFCLHFDQUFxQztRQUMvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDN0IsUUFBUTtRQUNSLE9BQU87UUFDUCwyQkFBMkI7UUFDM0IsbUdBQW1HO1FBRW5HLE1BQU07UUFDTixLQUFLO1FBRUwsSUFBSSxDQUFDLFNBQVMsR0FBRSxLQUFLLENBQUE7SUFDdkIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBNVRVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLHNRQ1hoQyx1bWtEQTBvQmM7OzRGRC9uQkQsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjt1TUF1QkUsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ0QsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBFeWVUZXN0QXVkaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXllLXRlc3QtYXVkaXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zdGFydC1hdWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YXJ0LWF1ZGl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc3RhcnQtYXVkaXQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGFydEF1ZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uRGVzdHJveSB7XHJcblxyXG4gIHN0ZXBXaXNlUHJvY2VzczogYW55ID0gW107XHJcbiAgZHJvcGRvd25MaXN0OiBhbnkgPSBbeyBrZXk6ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG9rYXksIGJ1dCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcsIGl0ZW06ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG9rYXksIGJ1dCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcgfSwgeyBrZXk6ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG5vdCBhY2N1cmF0ZSwgYnV0IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnLCBpdGVtOiAnU2VudGVuY2UgVHJhbnNjcmlwdGlvbiBub3QgYWNjdXJhdGUsIGJ1dCBtYXRjaGluZyB3aXRoIFByZWRpY3RlZCBTdGVwJyB9LCB7IGtleTogJ1N0ZXAgbm90IGFjY3VyYXRlLCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcsIGl0ZW06ICdTdGVwIG5vdCBhY2N1cmF0ZSwgbm90IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnIH0sIHsga2V5OiAnb3RoZXJzJywgaXRlbTogJ090aGVycycgfV1cclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBub0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgdGFibGVMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gIGhpc3Rvcnl0YWJsZUxvYWRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnPignaW5pdGlhbCcpXHJcblxyXG4gIHNlbGVjdGVkTWludXRlcyA9ICcwMCc7XHJcbiAgc2VsZWN0ZWRTZWNvbmRzID0gJzAwJztcclxuICBtaW51dGVzTGlzdDogc3RyaW5nW10gPSBbXTtcclxuICBzZWNvbmRzTGlzdDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgYXVkaXREZXRhaWxzOiBhbnkgPSBbXTtcclxuICBjdXJyZW50QXVkaXRUeXBlOiBhbnk7XHJcbiAgdGFrZUF1ZGl0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RvcmVJZDogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXBDb250ZW50JykgdG9vbHRpcENvbnRlbnQhOiBOZ2JUb29sdGlwO1xyXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdIaXN0b3J5Jykgdmlld0hpc3Rvcnk6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBoaXN0b3J5RGF0YTogYW55ID0gW107XHJcbiAgQXVkaXRJZDogYW55O1xyXG4gIHZpZXdIaXN0b3J5RGF0YTogYW55O1xyXG4gIHNwb2tlbkxhbmd1YWdlOmFueT0nRW5nbGlzaCdcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgJGFwaTogRXllVGVzdEF1ZGl0U2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7XHJcblxyXG4gIH1cclxuICB2aWV3SGlzdG9yeU1vZGVsKGl0ZW06IGFueSkge1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGlkOiBpdGVtLl9pZFxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLnZpZXdBdWRpdEhpc3RvcnkocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy52aWV3SGlzdG9yeURhdGEgPSByZXMuZGF0YS5yZXN1bHRcclxuICAgICAgICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnZpZXdIaXN0b3J5LCB7XHJcbiAgICAgICAgICAgIHNpemU6J3hsJyxcclxuICAgICAgICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50YWtlQXVkaXQgPWZhbHNlXHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2VzcyA9W107XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLnN0b3JlSWQgPSBwYXJhbXNbJ3N0b3JlSWQnXTtcclxuICAgICAgdGhpcy5jdXJyZW50QXVkaXRUeXBlID0gcGFyYW1zWyd0eXBlJ11cclxuICAgICAgdGhpcy5BdWRpdElkID0gcGFyYW1zWydfaWQnXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVRpbWVPcHRpb25zKCk7XHJcblxyXG4gIH1cclxuICBnZXRBdWRpdEhpc3RvcnkoKSB7XHJcbiAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGluZycpO1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGlkOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgPT09ICdyZW1vdGUnID8gdGhpcy5hdWRpdERldGFpbHMuZW5nYWdlbWVudElkIDogdGhpcy5hdWRpdERldGFpbHMucXVldWVJZCxcclxuICAgICAgdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlXHJcbiAgICB9XHJcbiAgICB0aGlzLiRhcGkuZ2V0QXVkaXRIaXN0b3J5KHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuaGlzdG9yeURhdGEgPSByZXMuZGF0YS5yZXN1bHRcclxuICAgICAgICAgIHRoaXMuaGlzdG9yeXRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmhpc3RvcnlEYXRhID0gW11cclxuICAgICAgICAgIHRoaXMuaGlzdG9yeXRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeURhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMuaGlzdG9yeXRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0QXVkaXRkZXRhaWxzKCkge1xyXG4gICAgdGhpcy50YWJsZUxvYWRpbmcubmV4dCgnbG9hZGluZycpO1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGlkOiB0aGlzLkF1ZGl0SWQsXHJcbiAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLmdldEF1ZGl0ZGV0YWlscyhwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0RGV0YWlscyA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXVkaXREZXRhaWxzLmF1ZGl0U3RhdHVzID09PSAnSW4tUHJvZ3Jlc3MnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gdHJ1ZVxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzID0gdGhpcy5hdWRpdERldGFpbHM/LnN0ZXBzO1xyXG5zZXRUaW1lb3V0KCgpPT57XHJcbiAgdGhpcy5nZXRBdWRpdEhpc3RvcnkoKVxyXG59LDEwMClcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTsgIFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG5cclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGltZU9wdGlvbnMoKSB7XHJcbiAgICB0aGlzLm1pbnV0ZXNMaXN0ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IHRoaXMuZm9ybWF0TnVtYmVyKGkpKTtcclxuICAgIHRoaXMuc2Vjb25kc0xpc3QgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2MCB9LCAoXywgaSkgPT4gdGhpcy5mb3JtYXROdW1iZXIoaSkpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0TnVtYmVyKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBudW0gPCAxMCA/ICcwJyArIG51bSA6IG51bS50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgZHJvcGRvd25PcGVuOiB7IFtrZXk6IG51bWJlcl06IHsgc3RhcnRUaW1lOiBib29sZWFuOyBlbmRUaW1lOiBib29sZWFuOyByZWFzb246IGJvb2xlYW4gfSB9ID0ge307XHJcblxyXG4gIHRvZ2dsZURyb3Bkb3duKGk6IG51bWJlciwgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5kcm9wZG93bk9wZW5baV0/Llt0aW1lXSA/PyBmYWxzZTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmRyb3Bkb3duT3BlbikuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuW051bWJlcihrZXkpXSA9IHsgc3RhcnRUaW1lOiBmYWxzZSwgZW5kVGltZTogZmFsc2UsIHJlYXNvbjogZmFsc2UgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy5kcm9wZG93bk9wZW5baV0pIHtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW5baV0gPSB7IHN0YXJ0VGltZTogZmFsc2UsIGVuZFRpbWU6IGZhbHNlLCByZWFzb246IGZhbHNlIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bk9wZW5baV1bdGltZV0gPSAhY3VycmVudFN0YXRlO1xyXG4gIH1cclxuICBnZXRTZWNvbmRzRnJvbVRpbWUodGltZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGlmICghdGltZSkgcmV0dXJuIDA7XHJcbiAgICBjb25zdCBbbWluLCBzZWNdID0gdGltZS5zcGxpdCgnOicpLm1hcChOdW1iZXIpO1xyXG4gICAgcmV0dXJuIChtaW4gKiA2MCkgKyBzZWM7XHJcbiAgfVxyXG4gICAgXHJcbnNlbGVjdE1pbnV0ZShpbmRleDogYW55LCBtaW46IHN0cmluZywgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gIGNvbnN0IHByZXZpb3VzVGltZSA9IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uW3RpbWVdIHx8ICcwMDowMCc7XHJcblxyXG4gIHRoaXMuc2VsZWN0ZWRNaW51dGVzID0gbWluO1xyXG4gIGNvbnN0IG5ld1RpbWUgPSBgJHt0aGlzLnNlbGVjdGVkTWludXRlc306JHt0aGlzLnNlbGVjdGVkU2Vjb25kc31gO1xyXG5cclxuICBjb25zdCBzdGFydFRpbWUgPSB0aGlzLmdldFNlY29uZHNGcm9tVGltZShcclxuICAgIHRpbWUgPT09ICdzdGFydFRpbWUnID8gbmV3VGltZSA6IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uc3RhcnRUaW1lXHJcbiAgKTtcclxuICBjb25zdCBlbmRUaW1lID0gdGhpcy5nZXRTZWNvbmRzRnJvbVRpbWUoXHJcbiAgICB0aW1lID09PSAnZW5kVGltZScgPyBuZXdUaW1lIDogdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdPy5lbmRUaW1lXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgaXNWYWxpZCA9IChzdGFydFRpbWUgPT09IDAgfHwgZW5kVGltZSA9PT0gMCkgfHwgc3RhcnRUaW1lIDwgZW5kVGltZTtcclxuXHJcbiAgaWYgKCFpc1ZhbGlkICYmIHRpbWUgIT09ICdyZWFzb24nKSB7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRXYXJuaW5nVG9hc3QoXCJTdGFydCB0aW1lIG11c3QgYmUgbGVzcyB0aGFuIGVuZCB0aW1lLlwiKTtcclxuICBcclxuICAgIGNvbnN0IFtwcmV2TWluLCBwcmV2U2VjXSA9IHByZXZpb3VzVGltZS5zcGxpdCgnOicpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE1pbnV0ZXMgPSBwcmV2TWluO1xyXG4gICAgdGhpcy5zZWxlY3RlZFNlY29uZHMgPSBwcmV2U2VjO1xyXG4gIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIFxyXG5cclxuICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF1bdGltZV0gPSBuZXdUaW1lO1xyXG4gIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG59XHJcblxyXG5zZWxlY3RTZWNvbmQoaW5kZXg6IGFueSwgc2VjOiBzdHJpbmcsIHRpbWU6ICdzdGFydFRpbWUnIHwgJ2VuZFRpbWUnIHwgJ3JlYXNvbicpIHtcclxuICBjb25zdCBwcmV2aW91c1RpbWUgPSB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0/Llt0aW1lXSB8fCAnMDA6MDAnO1xyXG5cclxuICB0aGlzLnNlbGVjdGVkU2Vjb25kcyA9IHNlYztcclxuICBjb25zdCBuZXdUaW1lID0gYCR7dGhpcy5zZWxlY3RlZE1pbnV0ZXN9OiR7dGhpcy5zZWxlY3RlZFNlY29uZHN9YDtcclxuXHJcbiAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5nZXRTZWNvbmRzRnJvbVRpbWUoXHJcbiAgICB0aW1lID09PSAnc3RhcnRUaW1lJyA/IG5ld1RpbWUgOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0/LnN0YXJ0VGltZVxyXG4gICk7XHJcbiAgY29uc3QgZW5kVGltZSA9IHRoaXMuZ2V0U2Vjb25kc0Zyb21UaW1lKFxyXG4gICAgdGltZSA9PT0gJ2VuZFRpbWUnID8gbmV3VGltZSA6IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uZW5kVGltZVxyXG4gICk7XHJcblxyXG4gIGlmICgodGltZSAhPT0gJ3JlYXNvbicpICYmIHN0YXJ0VGltZSAhPT0gMCAmJiBlbmRUaW1lICE9PSAwICYmIHN0YXJ0VGltZSA+PSBlbmRUaW1lKSB7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRXYXJuaW5nVG9hc3QoXCJTdGFydCB0aW1lIG11c3QgYmUgbGVzcyB0aGFuIGVuZCB0aW1lLlwiKTtcclxuICBcclxuICAgIGNvbnN0IFtwcmV2TWluLCBwcmV2U2VjXSA9IHByZXZpb3VzVGltZS5zcGxpdCgnOicpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE1pbnV0ZXMgPSBwcmV2TWluO1xyXG4gICAgdGhpcy5zZWxlY3RlZFNlY29uZHMgPSBwcmV2U2VjO1xyXG4gIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF1bdGltZV0gPSBuZXdUaW1lO1xyXG4gIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG59XHJcbiBcclxuICBcclxuXHJcbiAgc2VsZWN0UmVhc29uKGluZGV4OiBudW1iZXIsIGtleTogYW55LCB0aW1lOiBhbnkpIHtcclxuICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XVt0aW1lXSA9IGtleTtcclxuICBcclxuICAgIGlmIChrZXkgPT09ICdvdGhlcnMnKSB7XHJcbiAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XS5vdGhlclJlYXNvbiA9ICcnOyBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XS5vdGhlclJlYXNvbiA9IG51bGw7IFxyXG4gICAgfVxyXG4gIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIFxyXG5cclxuICBzZWxlY3RIdW1hblZlcmlmaWVkKGluZGV4OiBudW1iZXIsIHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0uYXVkaXRlZFN0YXR1cyA9IHZhbHVlO1xyXG4gIH1cclxuICBmaW5kY291bnQoKXtcclxuICAgIGxldCBjb3VudCA9IDBcclxuICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzLmZvckVhY2goKGRhdGE6YW55KT0+e1xyXG4gICAgICBpZihkYXRhLmF1ZGl0ZWRTdGF0dXMhPT1kYXRhLkFJU3RhdHVzKXtcclxuICAgICAgICBjb3VudCsrXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSlcclxuICAgIHJldHVybiBjb3VudFxyXG4gIH1cclxuICBnZXRWYWxpZGFGb3JtKCl7XHJcbiAgICBsZXQgZXJyb3JDb3VudCA9IDBcclxuICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzLmZvckVhY2goKGRhdGE6YW55KT0+e1xyXG4gICAgICBpZihkYXRhLmF1ZGl0ZWRTdGF0dXMhPT1kYXRhLkFJU3RhdHVzKXtcclxuICAgICAgICBpZighZGF0YS5yZWFzb24pe1xyXG4gICAgICAgICAgZXJyb3JDb3VudCsrXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYoZXJyb3JDb3VudD4wKXtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0V2FybmluZ1RvYXN0KFwiQ29tbWVudHMgYXJlIG1hbmRhdG9yeSBmb3IgaW52ZXJzZSBodW1hbiBhdWRpdGVkIHJlc3BvbnNlc1wiKVxyXG4gIH1cclxuICAgIHJldHVybiBlcnJvckNvdW50XHJcbiAgfVxyXG4gIG9uc3VibWl0KCkge1xyXG4gICAgaWYodGhpcy5nZXRWYWxpZGFGb3JtKCk9PT0wKXtcclxuXHJcbiAgICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICAgIGlkOiB0aGlzLkF1ZGl0SWQsXHJcbiAgICAgICAgdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlLFxyXG4gICAgICAgIGZpbGVJZDogdGhpcy5jdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJyA/IHRoaXMuYXVkaXREZXRhaWxzLmVuZ2FnZW1lbnRJZCA6IHRoaXMuYXVkaXREZXRhaWxzLnF1ZXVlSWQsXHJcbiAgICAgICAgYXVkaXRlZFN0ZXBzOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5maWx0ZXIoKGRhdGE6YW55KT0+ZGF0YS5hdWRpdGVkU3RhdHVzPT09dHJ1ZSkubGVuZ3RoLFxyXG4gICAgICAgIGF1ZGl0U3RhdHVzOnRoaXMuYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdBdWRpdCc/IFwiQXVkaXRlZFwiOlwiUmUtQXVkaXRlZFwiLFxyXG4gICAgICAgIG92ZXJSaWRlczp0aGlzLmZpbmRjb3VudCgpLFxyXG4gICAgICAgIHNwb2tlbkxhbmd1YWdlOiB0aGlzLnNwb2tlbkxhbmd1YWdlLFxyXG4gICAgICAgIHN0ZXBzOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1xyXG4gIFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuJGFwaS5zdWJtaXRBdWRpdChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRBdWRpdGRldGFpbHMoKTtcclxuICAgICAgICAgICAgfSwxMDAwKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogZXJyPy5lcnJvcj8ubWVzc2FnZSlcclxuICAgICAgICAgfSBcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuICBzdGFydEF1ZGl0KHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudGFrZUF1ZGl0ID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgaWQ6IHRoaXMuQXVkaXRJZFxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLmdldEF1ZGl0RmlsZShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogZXJyPy5lcnJvcj8ubWVzc2FnZSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcblxyXG4gIH1cclxuICBjYW5jZWwoKXtcclxuICAgIC8vIGxldCBwYXlsb2FkID0ge1xyXG4gICAgLy8gICBpZDogdGhpcy5BdWRpdElkLFxyXG4gICAgLy8gICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSxcclxuICAgIC8vICAgICBmaWxlSWQ6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZScgPyB0aGlzLmF1ZGl0RGV0YWlscy5lbmdhZ2VtZW50SWQgOiB0aGlzLmF1ZGl0RGV0YWlscy5xdWV1ZUlkLFxyXG4gICAgLy8gICAgIC8vIGF1ZGl0U3RhdHVzOnRoaXMuYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdBdWRpdCc/IFwiQXVkaXRlZFwiOlwiUmUtQXVkaXRlZFwiLFxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy4kYXBpLmNhbmNlbEF1ZGl0RmlsZShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgLy8gICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IGVycj8uZXJyb3I/Lm1lc3NhZ2UpXHJcblxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KVxyXG5cclxuICAgIHRoaXMudGFrZUF1ZGl0ID1mYWxzZVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgcC01XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgcm91dGVyTGluaz1cIi9tYW5hZ2UvdHJheC9hdWRpdFwiIGNsYXNzPVwiYnRuIGJ0bi1hbSBidG4tb3V0bGluZSBwLTNcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS44MzMyIDkuOTk5ODRINC4xNjY1TTQuMTY2NSA5Ljk5OTg0TDkuOTk5ODQgMTUuODMzMk00LjE2NjUgOS45OTk4NEw5Ljk5OTg0IDQuMTY2NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCI+e3thdWRpdERldGFpbHM/LnN0b3JlTmFtZX19PC9zcGFuPiAgLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIj48c3BhbiBjbGFzcz1cIm1lLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAxMC41VjkuNUMxMCA4Ljk2OTU3IDkuNzg5MjkgOC40NjA4NiA5LjQxNDIxIDguMDg1NzlDOS4wMzkxNCA3LjcxMDcxIDguNTMwNDMgNy41IDggNy41SDRDMy40Njk1NyA3LjUgMi45NjA4NiA3LjcxMDcxIDIuNTg1NzkgOC4wODU3OUMyLjIxMDcxIDguNDYwODYgMiA4Ljk2OTU3IDIgOS41VjEwLjVNOCAzLjVDOCA0LjYwNDU3IDcuMTA0NTcgNS41IDYgNS41QzQuODk1NDMgNS41IDQgNC42MDQ1NyA0IDMuNUM0IDIuMzk1NDMgNC44OTU0MyAxLjUgNiAxLjVDNy4xMDQ1NyAxLjUgOCAyLjM5NTQzIDggMy41WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj57e2F1ZGl0RGV0YWlscz8uZGlzcGxheU5hbWV9fTwvc3Bhbj4gXHJcbiAgICAgICAgPCEtLSBkaXNwbGF5TmFtZSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS4yNTAyMSA2LjUwMDI4QzUuOTEzMjkgNi41MDAyOCA2LjU0OTIxIDYuMjM2ODkgNy4wMTgwNyA1Ljc2ODA3QzcuNDg2OTQgNS4yOTkyNCA3Ljc1MDM1IDQuNjYzMzcgNy43NTAzNSA0LjAwMDM1QzcuNzUwMzUgMy4zMzczMiA3LjQ4Njk0IDIuNzAxNDYgNy4wMTgwNyAyLjIzMjYzQzYuNTQ5MjEgMS43NjM4IDUuOTEzMjkgMS41MDA0MiA1LjI1MDIxIDEuNTAwNDJDNC41ODcxMyAxLjUwMDQyIDMuOTUxMjEgMS43NjM4IDMuNDgyMzQgMi4yMzI2M0MzLjAxMzQ4IDIuNzAxNDYgMi43NTAwNyAzLjMzNzMyIDIuNzUwMDcgNC4wMDAzNUMyLjc1MDA3IDQuNjYzMzcgMy4wMTM0OCA1LjI5OTI0IDMuNDgyMzQgNS43NjgwN0MzLjk1MTIxIDYuMjM2ODkgNC41ODcxMyA2LjUwMDI4IDUuMjUwMjEgNi41MDAyOFpNNS4yNTAyMSA1LjI1MDMxQzQuOTE4NjcgNS4yNTAzMSA0LjYwMDcxIDUuMTE4NjIgNC4zNjYyOCA0Ljg4NDIxQzQuMTMxODQgNC42NDk3OSA0LjAwMDE0IDQuMzMxODYgNC4wMDAxNCA0LjAwMDM1QzQuMDAwMTQgMy42Njg4NCA0LjEzMTg0IDMuMzUwOSA0LjM2NjI4IDMuMTE2NDlDNC42MDA3MSAyLjg4MjA3IDQuOTE4NjcgMi43NTAzOCA1LjI1MDIxIDIuNzUwMzhDNS41ODE3NSAyLjc1MDM4IDUuODk5NzEgMi44ODIwNyA2LjEzNDE0IDMuMTE2NDlDNi4zNjg1NyAzLjM1MDkgNi41MDAyOCAzLjY2ODg0IDYuNTAwMjggNC4wMDAzNUM2LjUwMDI4IDQuMzMxODYgNi4zNjg1NyA0LjY0OTc5IDYuMTM0MTQgNC44ODQyMUM1Ljg5OTcxIDUuMTE4NjIgNS41ODE3NSA1LjI1MDMxIDUuMjUwMjEgNS4yNTAzMVpNMS41IDguNzkxODhDMS41IDcuOTg2OSAyLjE1MzM3IDcuMzMzNTkgMi45NTg0MSA3LjMzMzU5SDcuNTQyQzguMzQ3MDUgNy4zMzM1OSA5LjAwMDQyIDcuOTg2OSA5LjAwMDQyIDguNzkxODhWMTIuNzUwMUM5LjAwMDQyIDEzLjc0NDYgOC42MDUzMSAxNC42OTg0IDcuOTAyMDEgMTUuNDAxN0M3LjE5ODcgMTYuMTA0OSA2LjI0NDgzIDE2LjUgNS4yNTAyMSAxNi41QzQuMjU1NTkgMTYuNSAzLjMwMTcxIDE2LjEwNDkgMi41OTg0MSAxNS40MDE3QzEuODk1MTEgMTQuNjk4NCAxLjUgMTMuNzQ0NiAxLjUgMTIuNzUwMVY4Ljc5MTg4Wk0yLjk1ODQxIDguNTgzNTVDMi45MDMxNiA4LjU4MzU1IDIuODUwMTYgOC42MDU1IDIuODExMDkgOC42NDQ1N0MyLjc3MjAyIDguNjgzNjQgMi43NTAwNyA4LjczNjYzIDIuNzUwMDcgOC43OTE4OFYxMi43NTAxQzIuNzUwMDcgMTMuNDEzMSAzLjAxMzQ4IDE0LjA0OSAzLjQ4MjM0IDE0LjUxNzhDMy45NTEyMSAxNC45ODY3IDQuNTg3MTMgMTUuMjUgNS4yNTAyMSAxNS4yNUM1LjkxMzI5IDE1LjI1IDYuNTQ5MjEgMTQuOTg2NyA3LjAxODA3IDE0LjUxNzhDNy40ODY5NCAxNC4wNDkgNy43NTAzNSAxMy40MTMxIDcuNzUwMzUgMTIuNzUwMVY4Ljc5MTg4QzcuNzUwMzUgOC43MzY2MyA3LjcyODQgOC42ODM2NCA3LjY4OTMyIDguNjQ0NTdDNy42NTAyNSA4LjYwNTUgNy41OTcyNiA4LjU4MzU1IDcuNTQyIDguNTgzNTVIMi45NTg0MVpNNy43NzI4NSA2LjE3ODYyQzguMTUzMjggNi4zOTI2NyA4LjU4MzEzIDYuNTAzNCA5LjAxOTYzIDYuNDk5NzhDOS40NTYxNCA2LjQ5NjE2IDkuODg0MSA2LjM3ODMyIDEwLjI2MDkgNi4xNTc5OUMxMC42Mzc4IDUuOTM3NjYgMTAuOTUwMyA1LjYyMjUyIDExLjE2NzUgNS4yNDM5MUMxMS4zODQ4IDQuODY1MyAxMS40OTkgNC40MzY0MiAxMS40OTkgMy45OTk5M0MxMS40OTkgMy41NjM0NCAxMS4zODQ4IDMuMTM0NTYgMTEuMTY3NSAyLjc1NTk1QzEwLjk1MDMgMi4zNzczNCAxMC42Mzc4IDIuMDYyMiAxMC4yNjA5IDEuODQxODdDOS44ODQxIDEuNjIxNTQgOS40NTYxNCAxLjUwMzcxIDkuMDE5NjMgMS41MDAwOUM4LjU4MzEzIDEuNDk2NDcgOC4xNTMyOCAxLjYwNzE5IDcuNzcyODUgMS44MjEyNEM4LjA0NTM2IDIuMTM2MjMgOC4yNTk1NCAyLjUwMjg5IDguMzk5NTUgMi45MDQ1NEM4LjU4OTkxIDIuODAwMjYgOC44MDQxNSAyLjc0NzMzIDkuMDIxMTggMi43NTA5N0M5LjIzODIxIDIuNzU0NjIgOS40NTA1NSAyLjgxNDcxIDkuNjM3MzEgMi45MjUzM0M5LjgyNDA2IDMuMDM1OTQgOS45Nzg3OSAzLjE5MzI4IDEwLjA4NjMgMy4zODE4NUMxMC4xOTM3IDMuNTcwNDIgMTAuMjUwMyAzLjc4MzcyIDEwLjI1MDMgNC4wMDA3NkMxMC4yNTAzIDQuMjE3ODEgMTAuMTkzNyA0LjQzMTExIDEwLjA4NjMgNC42MTk2OEM5Ljk3ODc5IDQuODA4MjUgOS44MjQwNiA0Ljk2NTU4IDkuNjM3MzEgNS4wNzYyQzkuNDUwNTUgNS4xODY4MiA5LjIzODIxIDUuMjQ2OTEgOS4wMjExOCA1LjI1MDU1QzguODA0MTUgNS4yNTQyIDguNTg5OTEgNS4yMDEyNyA4LjM5OTU1IDUuMDk2OThDOC4yNjA3NCA1LjQ5MzgyIDguMDQ4MSA1Ljg2MDgyIDcuNzcyODUgNi4xNzg2MlpNOC4wNTAzNiAxNi4zNzgzQzguMzU0ODMgMTYuNDU4MyA4LjY3MTUxIDE2LjQ5ODkgOS4wMDA0MiAxNi41QzkuOTk1MDMgMTYuNSAxMC45NDg5IDE2LjEwNDkgMTEuNjUyMiAxNS40MDE3QzEyLjM1NTUgMTQuNjk4NCAxMi43NTA2IDEzLjc0NDYgMTIuNzUwNiAxMi43NTAxVjguNzkxODhDMTIuNzUwNiA4LjQwNTEyIDEyLjU5NyA4LjAzNDE5IDEyLjMyMzUgNy43NjA3MUMxMi4wNSA3LjQ4NzIzIDExLjY3OSA3LjMzMzU5IDExLjI5MjIgNy4zMzM1OUg5LjMwODc3QzkuNTk0NjIgNy42Nzk0MSA5Ljc4MDQ2IDguMTExMDcgOS44MjM4IDguNTgzNTVIMTEuMjkwNUMxMS4zNDU4IDguNTgzNTUgMTEuMzk4OCA4LjYwNTUgMTEuNDM3OSA4LjY0NDU3QzExLjQ3NjkgOC42ODM2NCAxMS40OTg5IDguNzM2NjMgMTEuNDk4OSA4Ljc5MTg4VjEyLjc1MDFDMTEuNDk4OSAxMy4zOTY4IDExLjI0ODMgMTQuMDE4NCAxMC43OTk2IDE0LjQ4NDNDMTAuMzUxIDE0Ljk1MDEgOS43MzkyNSAxNS4yMjQgOS4wOTI5MiAxNS4yNDg0QzguODEwNDEgMTUuNjgxNyA4LjQ1ODcyIDE2LjA2MzMgOC4wNTAzNiAxNi4zNzgzWk0xMS41MjIyIDYuMTc4NjJDMTEuOTAyNyA2LjM5MjY3IDEyLjMzMjUgNi41MDM0IDEyLjc2OSA2LjQ5OTc4QzEzLjIwNTUgNi40OTYxNiAxMy42MzM1IDYuMzc4MzIgMTQuMDEwMyA2LjE1Nzk5QzE0LjM4NzEgNS45Mzc2NiAxNC42OTk3IDUuNjIyNTIgMTQuOTE2OSA1LjI0MzkxQzE1LjEzNDEgNC44NjUzIDE1LjI0ODQgNC40MzY0MiAxNS4yNDg0IDMuOTk5OTNDMTUuMjQ4NCAzLjU2MzQ0IDE1LjEzNDEgMy4xMzQ1NiAxNC45MTY5IDIuNzU1OTVDMTQuNjk5NyAyLjM3NzM0IDE0LjM4NzEgMi4wNjIyIDE0LjAxMDMgMS44NDE4N0MxMy42MzM1IDEuNjIxNTQgMTMuMjA1NSAxLjUwMzcxIDEyLjc2OSAxLjUwMDA5QzEyLjMzMjUgMS40OTY0NyAxMS45MDI3IDEuNjA3MTkgMTEuNTIyMiAxLjgyMTI0QzExLjc5NDcgMi4xMzYyMyAxMi4wMDg5IDIuNTAyODkgMTIuMTQ4OSAyLjkwNDU0QzEyLjMzOTMgMi44MDAyNiAxMi41NTM1IDIuNzQ3MzMgMTIuNzcwNiAyLjc1MDk3QzEyLjk4NzYgMi43NTQ2MiAxMy4xOTk5IDIuODE0NzEgMTMuMzg2NyAyLjkyNTMzQzEzLjU3MzQgMy4wMzU5NCAxMy43MjgyIDMuMTkzMjggMTMuODM1NiAzLjM4MTg1QzEzLjk0MzEgMy41NzA0MiAxMy45OTk2IDMuNzgzNzIgMTMuOTk5NiA0LjAwMDc2QzEzLjk5OTYgNC4yMTc4MSAxMy45NDMxIDQuNDMxMTEgMTMuODM1NiA0LjYxOTY4QzEzLjcyODIgNC44MDgyNSAxMy41NzM0IDQuOTY1NTggMTMuMzg2NyA1LjA3NjJDMTMuMTk5OSA1LjE4NjgyIDEyLjk4NzYgNS4yNDY5MSAxMi43NzA2IDUuMjUwNTVDMTIuNTUzNSA1LjI1NDIgMTIuMzM5MyA1LjIwMTI3IDEyLjE0ODkgNS4wOTY5OEMxMi4wMTAxIDUuNDkzODIgMTEuNzk3NSA1Ljg2MDgyIDExLjUyMjIgNi4xNzg2MlpNMTEuNzk5NyAxNi4zNzgzQzEyLjEwNDIgMTYuNDU4MyAxMi40MjA5IDE2LjQ5ODkgMTIuNzQ5OCAxNi41QzEzLjc0NDQgMTYuNSAxNC42OTgzIDE2LjEwNDkgMTUuNDAxNiAxNS40MDE3QzE2LjEwNDkgMTQuNjk4NCAxNi41IDEzLjc0NDYgMTYuNSAxMi43NTAxVjguNzkxODhDMTYuNSA4LjQwNTI2IDE2LjM0NjUgOC4wMzQ0NyAxNi4wNzMxIDcuNzYxMDFDMTUuNzk5OCA3LjQ4NzU1IDE1LjQyOTEgNy4zMzM4MSAxNS4wNDI0IDcuMzMzNTlIMTMuMDU5QzEzLjM0NDggNy42Nzk0MSAxMy41MzE1IDguMTExMDcgMTMuNTc0IDguNTgzNTVIMTUuMDQwOEMxNS4wOTYgOC41ODM1NSAxNS4xNDkgOC42MDU1IDE1LjE4ODEgOC42NDQ1N0MxNS4yMjcxIDguNjgzNjQgMTUuMjQ5MSA4LjczNjYzIDE1LjI0OTEgOC43OTE4OFYxMi43NTAxQzE1LjI0OTEgMTMuMzk2OCAxNC45OTg1IDE0LjAxODQgMTQuNTQ5OCAxNC40ODQzQzE0LjEwMTIgMTQuOTUwMSAxMy40ODk1IDE1LjIyNCAxMi44NDMxIDE1LjI0ODRDMTIuNTYwNiAxNS42ODE3IDEyLjIwODEgMTYuMDYzMyAxMS43OTk3IDE2LjM3ODNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgc3ViLXRpdGxlXCI+e3thdWRpdERldGFpbHM/LmVuZ2FnZW1lbnRJZH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMiAzSDEzLjVDMTMuODk3OCAzIDE0LjI3OTQgMy4xNTgwNCAxNC41NjA3IDMuNDM5MzRDMTQuODQyIDMuNzIwNjQgMTUgNC4xMDIxOCAxNSA0LjVWMTVDMTUgMTUuMzk3OCAxNC44NDIgMTUuNzc5NCAxNC41NjA3IDE2LjA2MDdDMTQuMjc5NCAxNi4zNDIgMTMuODk3OCAxNi41IDEzLjUgMTYuNUg0LjVDNC4xMDIxOCAxNi41IDMuNzIwNjQgMTYuMzQyIDMuNDM5MzQgMTYuMDYwN0MzLjE1ODA0IDE1Ljc3OTQgMyAxNS4zOTc4IDMgMTVWNC41QzMgNC4xMDIxOCAzLjE1ODA0IDMuNzIwNjQgMy40MzkzNCAzLjQzOTM0QzMuNzIwNjQgMy4xNTgwNCA0LjEwMjE4IDMgNC41IDNINk02Ljc1IDEuNUgxMS4yNUMxMS42NjQyIDEuNSAxMiAxLjgzNTc5IDEyIDIuMjVWMy43NUMxMiA0LjE2NDIxIDExLjY2NDIgNC41IDExLjI1IDQuNUg2Ljc1QzYuMzM1NzkgNC41IDYgNC4xNjQyMSA2IDMuNzVWMi4yNUM2IDEuODM1NzkgNi4zMzU3OSAxLjUgNi43NSAxLjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBzdWItdGl0bGVcIj57e2N1cnJlbnRBdWRpdFR5cGUgfCB0aXRsZWNhc2V9fSBFeWUgVGVzdDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgMS41VjQuNU02IDEuNVY0LjVNMi4yNSA3LjVIMTUuNzVNMy43NSAzSDE0LjI1QzE1LjA3ODQgMyAxNS43NSAzLjY3MTU3IDE1Ljc1IDQuNVYxNUMxNS43NSAxNS44Mjg0IDE1LjA3ODQgMTYuNSAxNC4yNSAxNi41SDMuNzVDMi45MjE1NyAxNi41IDIuMjUgMTUuODI4NCAyLjI1IDE1VjQuNUMyLjI1IDMuNjcxNTcgMi45MjE1NyAzIDMuNzUgM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHN1Yi10aXRsZVwiPnt7YXVkaXREZXRhaWxzPy5maWxlRGF0ZSB8IGRhdGU6ICdkZC9NTS9ZWVlZJ319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNjZfNTUwMTkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTY2XzU1MDE5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHN1Yi10aXRsZVwiPnt7YXVkaXREZXRhaWxzPy50ZXN0U3RhcnRUaW1lfX0gLSB7e2F1ZGl0RGV0YWlscz8udGVzdEVuZFRpbWV9fVxyXG4gICAgICAgICAgICAgICAgKHt7YXVkaXREZXRhaWxzPy50ZXN0RHVyYXRpb259fSBNaW5zKTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7YXVkaXREZXRhaWxzPy52aXNpdG9yc1R5cGUgfCB0aXRsZWNhc2V9fTwvc3Bhbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiWydZZXQtdG8tQXVkaXQnXS5pbmNsdWRlcyhhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBtcy0zIHB4LTMgcHktMSBmdy1zZW1pYm9sZCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgYmctcHJpbWFyeVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICBZZXQgdG8gQXVkaXRcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdBdWRpdCcmJmF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXMgPT09ICdBdWRpdGVkJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBtcy0zIHB4LTMgcHktMSBmdy1zZW1pYm9sZCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgYmctc3VjY2Vzc1wiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICBBdWRpdGVkXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnUmUtQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnQXVkaXRlZCcgfHwgYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdSZS1BdWRpdCcmJmF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXMgPT09ICdSZS1BdWRpdGVkJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBtcy0zIHB4LTMgcHktMSBmdy1zZW1pYm9sZCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgYmctd2FybmluZ1wiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICBSZS1BdWRpdGVkXHJcbiAgICAgICAgPC9kaXY+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+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnWWV0LXRvLUF1ZGl0JyAmJiAhdGFrZUF1ZGl0XCIgKGNsaWNrKT1cInN0YXJ0QXVkaXQoJ2F1ZGl0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBtcy0zIHB4LTMgcHktMiBmdy1zZW1pYm9sZCByb3VuZGVkLTIgY3Vyc29yLXBvaW50ZXIgYmctcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgU3RhcnQgQXVkaXRcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlsnQXVkaXRlZCcsJ1JlLUF1ZGl0JywnWWV0LXRvLUF1ZGl0J10uaW5jbHVkZXMoYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cykmJmF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnUmUtQXVkaXQnICYmICF0YWtlQXVkaXR8fGF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnQXVkaXRlZCcgfHxhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ1JlLUF1ZGl0JyYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cyA9PT0gJ1JlLUF1ZGl0ZWQnJiYgIXRha2VBdWRpdCBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdGFydEF1ZGl0KCdSZS1BdWRpdCcpXCIgY2xhc3M9XCJidG4gYnRuLXNtIHB5LTIgYnRuLXdhcm5pbmdcIj5SZS1BdWRpdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRha2VBdWRpdFwiIGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZVwiIChjbGljayk9XCJjYW5jZWwoKVwiID5DYW5jZWw8L2Rpdj4gLS0+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+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdmlld0hpc3RvcnkgbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtNSBoLTcwMHB4IHNjcm9sbFwiPlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0wIFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBkLWZsZXhcIj5cclxuPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yOCAyMlYyOEwzMiAzME0zOCAyOEMzOCAzMy41MjI4IDMzLjUyMjggMzggMjggMzhDMjIuNDc3MiAzOCAxOCAzMy41MjI4IDE4IDI4QzE4IDIyLjQ3NzIgMjIuNDc3MiAxOCAyOCAxOEMzMy41MjI4IDE4IDM4IDIyLjQ3NzIgMzggMjhaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMyBwdC0yIGZzLTQgdGV4dC1ncmF5LTgwMCB0ZXh0LWhvdmVyLXByaW1hcnkgZnctYm9sZCBtYi0wIHRpdGxlIGN1cnNvci1wb2ludGVyXCI+QXVkaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCIgKm5nSWY9XCJoaXN0b3J5RGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LTEwMCB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXN0YXJ0XCI+U3RlcC1ieS1TdGVwIFByb2Nlc3M8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlN0YXR1cyBjaGFuZ2VkIGZyb208L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5vdGVkIFRpbWUgUmFuZ2U8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlJlYXNvbiBmb3IgRXJyb3I8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygdmlld0hpc3RvcnlEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLnByb2Nlc3NOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5BSVN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBtZS0yXCI+UGFzczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLkFJU3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXIgbWUtMlwiPkZhaWw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzMVwiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDMxIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zMC4zNTM2IDQuMzUzNTVDMzAuNTQ4OCA0LjE1ODI5IDMwLjU0ODggMy44NDE3MSAzMC4zNTM2IDMuNjQ2NDVMMjcuMTcxNiAwLjQ2NDQ2NkMyNi45NzYzIDAuMjY5MjA0IDI2LjY1OTcgMC4yNjkyMDQgMjYuNDY0NSAwLjQ2NDQ2NkMyNi4yNjkyIDAuNjU5NzI4IDI2LjI2OTIgMC45NzYzMTEgMjYuNDY0NSAxLjE3MTU3TDI5LjI5MjkgNEwyNi40NjQ1IDYuODI4NDNDMjYuMjY5MiA3LjAyMzY5IDI2LjI2OTIgNy4zNDAyNyAyNi40NjQ1IDcuNTM1NTNDMjYuNjU5NyA3LjczMDggMjYuOTc2MyA3LjczMDggMjcuMTcxNiA3LjUzNTUzTDMwLjM1MzYgNC4zNTM1NVpNMCA0LjVIMzBWMy41SDBWNC41WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLmF1ZGl0ZWRTdGF0dXNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgbXMtMlwiPlBhc3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5hdWRpdGVkU3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXIgbXMtMlwiPkZhaWw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkID48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3NcIiAqbmdJZj1cIml0ZW0uc3RhcnRUaW1lXCI+Tm90ZWQgVGltZSBSYW5nZSA6IDxzcGFuIGNsYXNzPVwidGV4dC1kYXJrMVwiPnt7aXRlbS5zdGFydFRpbWUgPyBpdGVtLnN0YXJ0VGltZTonLS0nfX0gLSB7e2l0ZW0uZW5kVGltZX19PC9zcGFuPjwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZW5nYWdlLXRleHRcIj57e2l0ZW0ucmVhc29ufX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtYXVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9leWUtdGVzdC1hdWRpdC9leWUtdGVzdC1hdWRpdC9zdGFydC1hdWRpdC9zdGFydC1hdWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2V5ZS10ZXN0LWF1ZGl0L2V5ZS10ZXN0LWF1ZGl0L3N0YXJ0LWF1ZGl0L3N0YXJ0LWF1ZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTZCLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBVTNELE1BQU0sT0FBTyxtQkFBbUI7SUEwQlY7SUFBK0I7SUFBb0M7SUFBK0I7SUFBbUM7SUF4QnpKLGVBQWUsR0FBUSxFQUFFLENBQUM7SUFDMUIsWUFBWSxHQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsbUVBQW1FLEVBQUUsSUFBSSxFQUFFLG1FQUFtRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUVBQXVFLEVBQUUsSUFBSSxFQUFFLHVFQUF1RSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUscURBQXFELEVBQUUsSUFBSSxFQUFFLHFEQUFxRCxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQzllLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUV4QixZQUFZLEdBQUcsSUFBSSxlQUFlLENBQW1D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QUFlLEVBQUUsQ0FBQztpQkFDeEI7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUM3RixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBR0osQ0FBQztJQUNELE1BQU07UUFDSixrQkFBa0I7UUFDbEIsc0JBQXNCO1FBQ3RCLG1DQUFtQztRQUNuQywrR0FBK0c7UUFDL0csdUZBQXVGO1FBQ3ZGLElBQUk7UUFDSixnRkFBZ0Y7UUFDaEYsMEJBQTBCO1FBQzFCLHFDQUFxQztRQUMvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDN0IsUUFBUTtRQUNSLE9BQU87UUFDUCwyQkFBMkI7UUFDM0IsbUdBQW1HO1FBRW5HLE1BQU07UUFDTixLQUFLO1FBRUwsSUFBSSxDQUFDLFNBQVMsR0FBRSxLQUFLLENBQUE7SUFDdkIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBNVRVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLHNRQ1hoQyxxNWtEQTJvQmM7OzRGRGhvQkQsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjt1TUF1QkUsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ0QsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBFeWVUZXN0QXVkaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXllLXRlc3QtYXVkaXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zdGFydC1hdWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YXJ0LWF1ZGl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc3RhcnQtYXVkaXQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGFydEF1ZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uRGVzdHJveSB7XHJcblxyXG4gIHN0ZXBXaXNlUHJvY2VzczogYW55ID0gW107XHJcbiAgZHJvcGRvd25MaXN0OiBhbnkgPSBbeyBrZXk6ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG9rYXksIGJ1dCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcsIGl0ZW06ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG9rYXksIGJ1dCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcgfSwgeyBrZXk6ICdTZW50ZW5jZSBUcmFuc2NyaXB0aW9uIG5vdCBhY2N1cmF0ZSwgYnV0IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnLCBpdGVtOiAnU2VudGVuY2UgVHJhbnNjcmlwdGlvbiBub3QgYWNjdXJhdGUsIGJ1dCBtYXRjaGluZyB3aXRoIFByZWRpY3RlZCBTdGVwJyB9LCB7IGtleTogJ1N0ZXAgbm90IGFjY3VyYXRlLCBub3QgbWF0Y2hpbmcgd2l0aCBQcmVkaWN0ZWQgU3RlcCcsIGl0ZW06ICdTdGVwIG5vdCBhY2N1cmF0ZSwgbm90IG1hdGNoaW5nIHdpdGggUHJlZGljdGVkIFN0ZXAnIH0sIHsga2V5OiAnb3RoZXJzJywgaXRlbTogJ090aGVycycgfV1cclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBub0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgdGFibGVMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gIGhpc3Rvcnl0YWJsZUxvYWRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnPignaW5pdGlhbCcpXHJcblxyXG4gIHNlbGVjdGVkTWludXRlcyA9ICcwMCc7XHJcbiAgc2VsZWN0ZWRTZWNvbmRzID0gJzAwJztcclxuICBtaW51dGVzTGlzdDogc3RyaW5nW10gPSBbXTtcclxuICBzZWNvbmRzTGlzdDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgYXVkaXREZXRhaWxzOiBhbnkgPSBbXTtcclxuICBjdXJyZW50QXVkaXRUeXBlOiBhbnk7XHJcbiAgdGFrZUF1ZGl0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RvcmVJZDogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXBDb250ZW50JykgdG9vbHRpcENvbnRlbnQhOiBOZ2JUb29sdGlwO1xyXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdIaXN0b3J5Jykgdmlld0hpc3Rvcnk6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBoaXN0b3J5RGF0YTogYW55ID0gW107XHJcbiAgQXVkaXRJZDogYW55O1xyXG4gIHZpZXdIaXN0b3J5RGF0YTogYW55O1xyXG4gIHNwb2tlbkxhbmd1YWdlOmFueT0nRW5nbGlzaCdcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgJGFwaTogRXllVGVzdEF1ZGl0U2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7XHJcblxyXG4gIH1cclxuICB2aWV3SGlzdG9yeU1vZGVsKGl0ZW06IGFueSkge1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGlkOiBpdGVtLl9pZFxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLnZpZXdBdWRpdEhpc3RvcnkocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy52aWV3SGlzdG9yeURhdGEgPSByZXMuZGF0YS5yZXN1bHRcclxuICAgICAgICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnZpZXdIaXN0b3J5LCB7XHJcbiAgICAgICAgICAgIHNpemU6J3hsJyxcclxuICAgICAgICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50YWtlQXVkaXQgPWZhbHNlXHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2VzcyA9W107XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLnN0b3JlSWQgPSBwYXJhbXNbJ3N0b3JlSWQnXTtcclxuICAgICAgdGhpcy5jdXJyZW50QXVkaXRUeXBlID0gcGFyYW1zWyd0eXBlJ11cclxuICAgICAgdGhpcy5BdWRpdElkID0gcGFyYW1zWydfaWQnXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVRpbWVPcHRpb25zKCk7XHJcblxyXG4gIH1cclxuICBnZXRBdWRpdEhpc3RvcnkoKSB7XHJcbiAgICB0aGlzLmhpc3Rvcnl0YWJsZUxvYWRpbmcubmV4dCgnbG9hZGluZycpO1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGlkOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUgPT09ICdyZW1vdGUnID8gdGhpcy5hdWRpdERldGFpbHMuZW5nYWdlbWVudElkIDogdGhpcy5hdWRpdERldGFpbHMucXVldWVJZCxcclxuICAgICAgdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlXHJcbiAgICB9XHJcbiAgICB0aGlzLiRhcGkuZ2V0QXVkaXRIaXN0b3J5KHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuaGlzdG9yeURhdGEgPSByZXMuZGF0YS5yZXN1bHRcclxuICAgICAgICAgIHRoaXMuaGlzdG9yeXRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmhpc3RvcnlEYXRhID0gW11cclxuICAgICAgICAgIHRoaXMuaGlzdG9yeXRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeURhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMuaGlzdG9yeXRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0QXVkaXRkZXRhaWxzKCkge1xyXG4gICAgdGhpcy50YWJsZUxvYWRpbmcubmV4dCgnbG9hZGluZycpO1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGlkOiB0aGlzLkF1ZGl0SWQsXHJcbiAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLmdldEF1ZGl0ZGV0YWlscyhwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0RGV0YWlscyA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXVkaXREZXRhaWxzLmF1ZGl0U3RhdHVzID09PSAnSW4tUHJvZ3Jlc3MnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gdHJ1ZVxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzID0gdGhpcy5hdWRpdERldGFpbHM/LnN0ZXBzO1xyXG5zZXRUaW1lb3V0KCgpPT57XHJcbiAgdGhpcy5nZXRBdWRpdEhpc3RvcnkoKVxyXG59LDEwMClcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTsgIFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG5cclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGltZU9wdGlvbnMoKSB7XHJcbiAgICB0aGlzLm1pbnV0ZXNMaXN0ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IHRoaXMuZm9ybWF0TnVtYmVyKGkpKTtcclxuICAgIHRoaXMuc2Vjb25kc0xpc3QgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2MCB9LCAoXywgaSkgPT4gdGhpcy5mb3JtYXROdW1iZXIoaSkpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0TnVtYmVyKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBudW0gPCAxMCA/ICcwJyArIG51bSA6IG51bS50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgZHJvcGRvd25PcGVuOiB7IFtrZXk6IG51bWJlcl06IHsgc3RhcnRUaW1lOiBib29sZWFuOyBlbmRUaW1lOiBib29sZWFuOyByZWFzb246IGJvb2xlYW4gfSB9ID0ge307XHJcblxyXG4gIHRvZ2dsZURyb3Bkb3duKGk6IG51bWJlciwgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5kcm9wZG93bk9wZW5baV0/Llt0aW1lXSA/PyBmYWxzZTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmRyb3Bkb3duT3BlbikuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuW051bWJlcihrZXkpXSA9IHsgc3RhcnRUaW1lOiBmYWxzZSwgZW5kVGltZTogZmFsc2UsIHJlYXNvbjogZmFsc2UgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy5kcm9wZG93bk9wZW5baV0pIHtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW5baV0gPSB7IHN0YXJ0VGltZTogZmFsc2UsIGVuZFRpbWU6IGZhbHNlLCByZWFzb246IGZhbHNlIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bk9wZW5baV1bdGltZV0gPSAhY3VycmVudFN0YXRlO1xyXG4gIH1cclxuICBnZXRTZWNvbmRzRnJvbVRpbWUodGltZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGlmICghdGltZSkgcmV0dXJuIDA7XHJcbiAgICBjb25zdCBbbWluLCBzZWNdID0gdGltZS5zcGxpdCgnOicpLm1hcChOdW1iZXIpO1xyXG4gICAgcmV0dXJuIChtaW4gKiA2MCkgKyBzZWM7XHJcbiAgfVxyXG4gICAgXHJcbnNlbGVjdE1pbnV0ZShpbmRleDogYW55LCBtaW46IHN0cmluZywgdGltZTogJ3N0YXJ0VGltZScgfCAnZW5kVGltZScgfCAncmVhc29uJykge1xyXG4gIGNvbnN0IHByZXZpb3VzVGltZSA9IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uW3RpbWVdIHx8ICcwMDowMCc7XHJcblxyXG4gIHRoaXMuc2VsZWN0ZWRNaW51dGVzID0gbWluO1xyXG4gIGNvbnN0IG5ld1RpbWUgPSBgJHt0aGlzLnNlbGVjdGVkTWludXRlc306JHt0aGlzLnNlbGVjdGVkU2Vjb25kc31gO1xyXG5cclxuICBjb25zdCBzdGFydFRpbWUgPSB0aGlzLmdldFNlY29uZHNGcm9tVGltZShcclxuICAgIHRpbWUgPT09ICdzdGFydFRpbWUnID8gbmV3VGltZSA6IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uc3RhcnRUaW1lXHJcbiAgKTtcclxuICBjb25zdCBlbmRUaW1lID0gdGhpcy5nZXRTZWNvbmRzRnJvbVRpbWUoXHJcbiAgICB0aW1lID09PSAnZW5kVGltZScgPyBuZXdUaW1lIDogdGhpcy5zdGVwV2lzZVByb2Nlc3NbaW5kZXhdPy5lbmRUaW1lXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgaXNWYWxpZCA9IChzdGFydFRpbWUgPT09IDAgfHwgZW5kVGltZSA9PT0gMCkgfHwgc3RhcnRUaW1lIDwgZW5kVGltZTtcclxuXHJcbiAgaWYgKCFpc1ZhbGlkICYmIHRpbWUgIT09ICdyZWFzb24nKSB7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRXYXJuaW5nVG9hc3QoXCJTdGFydCB0aW1lIG11c3QgYmUgbGVzcyB0aGFuIGVuZCB0aW1lLlwiKTtcclxuICBcclxuICAgIGNvbnN0IFtwcmV2TWluLCBwcmV2U2VjXSA9IHByZXZpb3VzVGltZS5zcGxpdCgnOicpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE1pbnV0ZXMgPSBwcmV2TWluO1xyXG4gICAgdGhpcy5zZWxlY3RlZFNlY29uZHMgPSBwcmV2U2VjO1xyXG4gIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIFxyXG5cclxuICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF1bdGltZV0gPSBuZXdUaW1lO1xyXG4gIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG59XHJcblxyXG5zZWxlY3RTZWNvbmQoaW5kZXg6IGFueSwgc2VjOiBzdHJpbmcsIHRpbWU6ICdzdGFydFRpbWUnIHwgJ2VuZFRpbWUnIHwgJ3JlYXNvbicpIHtcclxuICBjb25zdCBwcmV2aW91c1RpbWUgPSB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0/Llt0aW1lXSB8fCAnMDA6MDAnO1xyXG5cclxuICB0aGlzLnNlbGVjdGVkU2Vjb25kcyA9IHNlYztcclxuICBjb25zdCBuZXdUaW1lID0gYCR7dGhpcy5zZWxlY3RlZE1pbnV0ZXN9OiR7dGhpcy5zZWxlY3RlZFNlY29uZHN9YDtcclxuXHJcbiAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5nZXRTZWNvbmRzRnJvbVRpbWUoXHJcbiAgICB0aW1lID09PSAnc3RhcnRUaW1lJyA/IG5ld1RpbWUgOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0/LnN0YXJ0VGltZVxyXG4gICk7XHJcbiAgY29uc3QgZW5kVGltZSA9IHRoaXMuZ2V0U2Vjb25kc0Zyb21UaW1lKFxyXG4gICAgdGltZSA9PT0gJ2VuZFRpbWUnID8gbmV3VGltZSA6IHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XT8uZW5kVGltZVxyXG4gICk7XHJcblxyXG4gIGlmICgodGltZSAhPT0gJ3JlYXNvbicpICYmIHN0YXJ0VGltZSAhPT0gMCAmJiBlbmRUaW1lICE9PSAwICYmIHN0YXJ0VGltZSA+PSBlbmRUaW1lKSB7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRXYXJuaW5nVG9hc3QoXCJTdGFydCB0aW1lIG11c3QgYmUgbGVzcyB0aGFuIGVuZCB0aW1lLlwiKTtcclxuICBcclxuICAgIGNvbnN0IFtwcmV2TWluLCBwcmV2U2VjXSA9IHByZXZpb3VzVGltZS5zcGxpdCgnOicpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE1pbnV0ZXMgPSBwcmV2TWluO1xyXG4gICAgdGhpcy5zZWxlY3RlZFNlY29uZHMgPSBwcmV2U2VjO1xyXG4gIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF1bdGltZV0gPSBuZXdUaW1lO1xyXG4gIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG59XHJcbiBcclxuICBcclxuXHJcbiAgc2VsZWN0UmVhc29uKGluZGV4OiBudW1iZXIsIGtleTogYW55LCB0aW1lOiBhbnkpIHtcclxuICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XVt0aW1lXSA9IGtleTtcclxuICBcclxuICAgIGlmIChrZXkgPT09ICdvdGhlcnMnKSB7XHJcbiAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XS5vdGhlclJlYXNvbiA9ICcnOyBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzW2luZGV4XS5vdGhlclJlYXNvbiA9IG51bGw7IFxyXG4gICAgfVxyXG4gIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIFxyXG5cclxuICBzZWxlY3RIdW1hblZlcmlmaWVkKGluZGV4OiBudW1iZXIsIHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1tpbmRleF0uYXVkaXRlZFN0YXR1cyA9IHZhbHVlO1xyXG4gIH1cclxuICBmaW5kY291bnQoKXtcclxuICAgIGxldCBjb3VudCA9IDBcclxuICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzLmZvckVhY2goKGRhdGE6YW55KT0+e1xyXG4gICAgICBpZihkYXRhLmF1ZGl0ZWRTdGF0dXMhPT1kYXRhLkFJU3RhdHVzKXtcclxuICAgICAgICBjb3VudCsrXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSlcclxuICAgIHJldHVybiBjb3VudFxyXG4gIH1cclxuICBnZXRWYWxpZGFGb3JtKCl7XHJcbiAgICBsZXQgZXJyb3JDb3VudCA9IDBcclxuICAgIHRoaXMuc3RlcFdpc2VQcm9jZXNzLmZvckVhY2goKGRhdGE6YW55KT0+e1xyXG4gICAgICBpZihkYXRhLmF1ZGl0ZWRTdGF0dXMhPT1kYXRhLkFJU3RhdHVzKXtcclxuICAgICAgICBpZighZGF0YS5yZWFzb24pe1xyXG4gICAgICAgICAgZXJyb3JDb3VudCsrXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYoZXJyb3JDb3VudD4wKXtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0V2FybmluZ1RvYXN0KFwiQ29tbWVudHMgYXJlIG1hbmRhdG9yeSBmb3IgaW52ZXJzZSBodW1hbiBhdWRpdGVkIHJlc3BvbnNlc1wiKVxyXG4gIH1cclxuICAgIHJldHVybiBlcnJvckNvdW50XHJcbiAgfVxyXG4gIG9uc3VibWl0KCkge1xyXG4gICAgaWYodGhpcy5nZXRWYWxpZGFGb3JtKCk9PT0wKXtcclxuXHJcbiAgICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICAgIGlkOiB0aGlzLkF1ZGl0SWQsXHJcbiAgICAgICAgdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlLFxyXG4gICAgICAgIGZpbGVJZDogdGhpcy5jdXJyZW50QXVkaXRUeXBlID09PSAncmVtb3RlJyA/IHRoaXMuYXVkaXREZXRhaWxzLmVuZ2FnZW1lbnRJZCA6IHRoaXMuYXVkaXREZXRhaWxzLnF1ZXVlSWQsXHJcbiAgICAgICAgYXVkaXRlZFN0ZXBzOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzcy5maWx0ZXIoKGRhdGE6YW55KT0+ZGF0YS5hdWRpdGVkU3RhdHVzPT09dHJ1ZSkubGVuZ3RoLFxyXG4gICAgICAgIGF1ZGl0U3RhdHVzOnRoaXMuYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdBdWRpdCc/IFwiQXVkaXRlZFwiOlwiUmUtQXVkaXRlZFwiLFxyXG4gICAgICAgIG92ZXJSaWRlczp0aGlzLmZpbmRjb3VudCgpLFxyXG4gICAgICAgIHNwb2tlbkxhbmd1YWdlOiB0aGlzLnNwb2tlbkxhbmd1YWdlLFxyXG4gICAgICAgIHN0ZXBzOiB0aGlzLnN0ZXBXaXNlUHJvY2Vzc1xyXG4gIFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuJGFwaS5zdWJtaXRBdWRpdChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRBdWRpdGRldGFpbHMoKTtcclxuICAgICAgICAgICAgfSwxMDAwKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogZXJyPy5lcnJvcj8ubWVzc2FnZSlcclxuICAgICAgICAgfSBcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuICBzdGFydEF1ZGl0KHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudGFrZUF1ZGl0ID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgaWQ6IHRoaXMuQXVkaXRJZFxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLmdldEF1ZGl0RmlsZShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogZXJyPy5lcnJvcj8ubWVzc2FnZSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcblxyXG4gIH1cclxuICBjYW5jZWwoKXtcclxuICAgIC8vIGxldCBwYXlsb2FkID0ge1xyXG4gICAgLy8gICBpZDogdGhpcy5BdWRpdElkLFxyXG4gICAgLy8gICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSxcclxuICAgIC8vICAgICBmaWxlSWQ6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSA9PT0gJ3JlbW90ZScgPyB0aGlzLmF1ZGl0RGV0YWlscy5lbmdhZ2VtZW50SWQgOiB0aGlzLmF1ZGl0RGV0YWlscy5xdWV1ZUlkLFxyXG4gICAgLy8gICAgIC8vIGF1ZGl0U3RhdHVzOnRoaXMuYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdBdWRpdCc/IFwiQXVkaXRlZFwiOlwiUmUtQXVkaXRlZFwiLFxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy4kYXBpLmNhbmNlbEF1ZGl0RmlsZShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEF1ZGl0ZGV0YWlscygpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgLy8gICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgPyBlcnI/LmVycm9yPy5lcnJvciA6IGVycj8uZXJyb3I/Lm1lc3NhZ2UpXHJcblxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KVxyXG5cclxuICAgIHRoaXMudGFrZUF1ZGl0ID1mYWxzZVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgcC01XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgcm91dGVyTGluaz1cIi9tYW5hZ2UvdHJheC9hdWRpdFwiIGNsYXNzPVwiYnRuIGJ0bi1hbSBidG4tb3V0bGluZSBwLTNcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS44MzMyIDkuOTk5ODRINC4xNjY1TTQuMTY2NSA5Ljk5OTg0TDkuOTk5ODQgMTUuODMzMk00LjE2NjUgOS45OTk4NEw5Ljk5OTg0IDQuMTY2NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibXMtMyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCI+e3thdWRpdERldGFpbHM/LnN0b3JlTmFtZX19PC9zcGFuPiAgLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0zIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIj48c3BhbiBjbGFzcz1cIm1lLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAxMC41VjkuNUMxMCA4Ljk2OTU3IDkuNzg5MjkgOC40NjA4NiA5LjQxNDIxIDguMDg1NzlDOS4wMzkxNCA3LjcxMDcxIDguNTMwNDMgNy41IDggNy41SDRDMy40Njk1NyA3LjUgMi45NjA4NiA3LjcxMDcxIDIuNTg1NzkgOC4wODU3OUMyLjIxMDcxIDguNDYwODYgMiA4Ljk2OTU3IDIgOS41VjEwLjVNOCAzLjVDOCA0LjYwNDU3IDcuMTA0NTcgNS41IDYgNS41QzQuODk1NDMgNS41IDQgNC42MDQ1NyA0IDMuNUM0IDIuMzk1NDMgNC44OTU0MyAxLjUgNiAxLjVDNy4xMDQ1NyAxLjUgOCAyLjM5NTQzIDggMy41WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj57e2F1ZGl0RGV0YWlscz8uZGlzcGxheU5hbWV9fTwvc3Bhbj4gXHJcbiAgICAgICAgPCEtLSBkaXNwbGF5TmFtZSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS4yNTAyMSA2LjUwMDI4QzUuOTEzMjkgNi41MDAyOCA2LjU0OTIxIDYuMjM2ODkgNy4wMTgwNyA1Ljc2ODA3QzcuNDg2OTQgNS4yOTkyNCA3Ljc1MDM1IDQuNjYzMzcgNy43NTAzNSA0LjAwMDM1QzcuNzUwMzUgMy4zMzczMiA3LjQ4Njk0IDIuNzAxNDYgNy4wMTgwNyAyLjIzMjYzQzYuNTQ5MjEgMS43NjM4IDUuOTEzMjkgMS41MDA0MiA1LjI1MDIxIDEuNTAwNDJDNC41ODcxMyAxLjUwMDQyIDMuOTUxMjEgMS43NjM4IDMuNDgyMzQgMi4yMzI2M0MzLjAxMzQ4IDIuNzAxNDYgMi43NTAwNyAzLjMzNzMyIDIuNzUwMDcgNC4wMDAzNUMyLjc1MDA3IDQuNjYzMzcgMy4wMTM0OCA1LjI5OTI0IDMuNDgyMzQgNS43NjgwN0MzLjk1MTIxIDYuMjM2ODkgNC41ODcxMyA2LjUwMDI4IDUuMjUwMjEgNi41MDAyOFpNNS4yNTAyMSA1LjI1MDMxQzQuOTE4NjcgNS4yNTAzMSA0LjYwMDcxIDUuMTE4NjIgNC4zNjYyOCA0Ljg4NDIxQzQuMTMxODQgNC42NDk3OSA0LjAwMDE0IDQuMzMxODYgNC4wMDAxNCA0LjAwMDM1QzQuMDAwMTQgMy42Njg4NCA0LjEzMTg0IDMuMzUwOSA0LjM2NjI4IDMuMTE2NDlDNC42MDA3MSAyLjg4MjA3IDQuOTE4NjcgMi43NTAzOCA1LjI1MDIxIDIuNzUwMzhDNS41ODE3NSAyLjc1MDM4IDUuODk5NzEgMi44ODIwNyA2LjEzNDE0IDMuMTE2NDlDNi4zNjg1NyAzLjM1MDkgNi41MDAyOCAzLjY2ODg0IDYuNTAwMjggNC4wMDAzNUM2LjUwMDI4IDQuMzMxODYgNi4zNjg1NyA0LjY0OTc5IDYuMTM0MTQgNC44ODQyMUM1Ljg5OTcxIDUuMTE4NjIgNS41ODE3NSA1LjI1MDMxIDUuMjUwMjEgNS4yNTAzMVpNMS41IDguNzkxODhDMS41IDcuOTg2OSAyLjE1MzM3IDcuMzMzNTkgMi45NTg0MSA3LjMzMzU5SDcuNTQyQzguMzQ3MDUgNy4zMzM1OSA5LjAwMDQyIDcuOTg2OSA5LjAwMDQyIDguNzkxODhWMTIuNzUwMUM5LjAwMDQyIDEzLjc0NDYgOC42MDUzMSAxNC42OTg0IDcuOTAyMDEgMTUuNDAxN0M3LjE5ODcgMTYuMTA0OSA2LjI0NDgzIDE2LjUgNS4yNTAyMSAxNi41QzQuMjU1NTkgMTYuNSAzLjMwMTcxIDE2LjEwNDkgMi41OTg0MSAxNS40MDE3QzEuODk1MTEgMTQuNjk4NCAxLjUgMTMuNzQ0NiAxLjUgMTIuNzUwMVY4Ljc5MTg4Wk0yLjk1ODQxIDguNTgzNTVDMi45MDMxNiA4LjU4MzU1IDIuODUwMTYgOC42MDU1IDIuODExMDkgOC42NDQ1N0MyLjc3MjAyIDguNjgzNjQgMi43NTAwNyA4LjczNjYzIDIuNzUwMDcgOC43OTE4OFYxMi43NTAxQzIuNzUwMDcgMTMuNDEzMSAzLjAxMzQ4IDE0LjA0OSAzLjQ4MjM0IDE0LjUxNzhDMy45NTEyMSAxNC45ODY3IDQuNTg3MTMgMTUuMjUgNS4yNTAyMSAxNS4yNUM1LjkxMzI5IDE1LjI1IDYuNTQ5MjEgMTQuOTg2NyA3LjAxODA3IDE0LjUxNzhDNy40ODY5NCAxNC4wNDkgNy43NTAzNSAxMy40MTMxIDcuNzUwMzUgMTIuNzUwMVY4Ljc5MTg4QzcuNzUwMzUgOC43MzY2MyA3LjcyODQgOC42ODM2NCA3LjY4OTMyIDguNjQ0NTdDNy42NTAyNSA4LjYwNTUgNy41OTcyNiA4LjU4MzU1IDcuNTQyIDguNTgzNTVIMi45NTg0MVpNNy43NzI4NSA2LjE3ODYyQzguMTUzMjggNi4zOTI2NyA4LjU4MzEzIDYuNTAzNCA5LjAxOTYzIDYuNDk5NzhDOS40NTYxNCA2LjQ5NjE2IDkuODg0MSA2LjM3ODMyIDEwLjI2MDkgNi4xNTc5OUMxMC42Mzc4IDUuOTM3NjYgMTAuOTUwMyA1LjYyMjUyIDExLjE2NzUgNS4yNDM5MUMxMS4zODQ4IDQuODY1MyAxMS40OTkgNC40MzY0MiAxMS40OTkgMy45OTk5M0MxMS40OTkgMy41NjM0NCAxMS4zODQ4IDMuMTM0NTYgMTEuMTY3NSAyLjc1NTk1QzEwLjk1MDMgMi4zNzczNCAxMC42Mzc4IDIuMDYyMiAxMC4yNjA5IDEuODQxODdDOS44ODQxIDEuNjIxNTQgOS40NTYxNCAxLjUwMzcxIDkuMDE5NjMgMS41MDAwOUM4LjU4MzEzIDEuNDk2NDcgOC4xNTMyOCAxLjYwNzE5IDcuNzcyODUgMS44MjEyNEM4LjA0NTM2IDIuMTM2MjMgOC4yNTk1NCAyLjUwMjg5IDguMzk5NTUgMi45MDQ1NEM4LjU4OTkxIDIuODAwMjYgOC44MDQxNSAyLjc0NzMzIDkuMDIxMTggMi43NTA5N0M5LjIzODIxIDIuNzU0NjIgOS40NTA1NSAyLjgxNDcxIDkuNjM3MzEgMi45MjUzM0M5LjgyNDA2IDMuMDM1OTQgOS45Nzg3OSAzLjE5MzI4IDEwLjA4NjMgMy4zODE4NUMxMC4xOTM3IDMuNTcwNDIgMTAuMjUwMyAzLjc4MzcyIDEwLjI1MDMgNC4wMDA3NkMxMC4yNTAzIDQuMjE3ODEgMTAuMTkzNyA0LjQzMTExIDEwLjA4NjMgNC42MTk2OEM5Ljk3ODc5IDQuODA4MjUgOS44MjQwNiA0Ljk2NTU4IDkuNjM3MzEgNS4wNzYyQzkuNDUwNTUgNS4xODY4MiA5LjIzODIxIDUuMjQ2OTEgOS4wMjExOCA1LjI1MDU1QzguODA0MTUgNS4yNTQyIDguNTg5OTEgNS4yMDEyNyA4LjM5OTU1IDUuMDk2OThDOC4yNjA3NCA1LjQ5MzgyIDguMDQ4MSA1Ljg2MDgyIDcuNzcyODUgNi4xNzg2MlpNOC4wNTAzNiAxNi4zNzgzQzguMzU0ODMgMTYuNDU4MyA4LjY3MTUxIDE2LjQ5ODkgOS4wMDA0MiAxNi41QzkuOTk1MDMgMTYuNSAxMC45NDg5IDE2LjEwNDkgMTEuNjUyMiAxNS40MDE3QzEyLjM1NTUgMTQuNjk4NCAxMi43NTA2IDEzLjc0NDYgMTIuNzUwNiAxMi43NTAxVjguNzkxODhDMTIuNzUwNiA4LjQwNTEyIDEyLjU5NyA4LjAzNDE5IDEyLjMyMzUgNy43NjA3MUMxMi4wNSA3LjQ4NzIzIDExLjY3OSA3LjMzMzU5IDExLjI5MjIgNy4zMzM1OUg5LjMwODc3QzkuNTk0NjIgNy42Nzk0MSA5Ljc4MDQ2IDguMTExMDcgOS44MjM4IDguNTgzNTVIMTEuMjkwNUMxMS4zNDU4IDguNTgzNTUgMTEuMzk4OCA4LjYwNTUgMTEuNDM3OSA4LjY0NDU3QzExLjQ3NjkgOC42ODM2NCAxMS40OTg5IDguNzM2NjMgMTEuNDk4OSA4Ljc5MTg4VjEyLjc1MDFDMTEuNDk4OSAxMy4zOTY4IDExLjI0ODMgMTQuMDE4NCAxMC43OTk2IDE0LjQ4NDNDMTAuMzUxIDE0Ljk1MDEgOS43MzkyNSAxNS4yMjQgOS4wOTI5MiAxNS4yNDg0QzguODEwNDEgMTUuNjgxNyA4LjQ1ODcyIDE2LjA2MzMgOC4wNTAzNiAxNi4zNzgzWk0xMS41MjIyIDYuMTc4NjJDMTEuOTAyNyA2LjM5MjY3IDEyLjMzMjUgNi41MDM0IDEyLjc2OSA2LjQ5OTc4QzEzLjIwNTUgNi40OTYxNiAxMy42MzM1IDYuMzc4MzIgMTQuMDEwMyA2LjE1Nzk5QzE0LjM4NzEgNS45Mzc2NiAxNC42OTk3IDUuNjIyNTIgMTQuOTE2OSA1LjI0MzkxQzE1LjEzNDEgNC44NjUzIDE1LjI0ODQgNC40MzY0MiAxNS4yNDg0IDMuOTk5OTNDMTUuMjQ4NCAzLjU2MzQ0IDE1LjEzNDEgMy4xMzQ1NiAxNC45MTY5IDIuNzU1OTVDMTQuNjk5NyAyLjM3NzM0IDE0LjM4NzEgMi4wNjIyIDE0LjAxMDMgMS44NDE4N0MxMy42MzM1IDEuNjIxNTQgMTMuMjA1NSAxLjUwMzcxIDEyLjc2OSAxLjUwMDA5QzEyLjMzMjUgMS40OTY0NyAxMS45MDI3IDEuNjA3MTkgMTEuNTIyMiAxLjgyMTI0QzExLjc5NDcgMi4xMzYyMyAxMi4wMDg5IDIuNTAyODkgMTIuMTQ4OSAyLjkwNDU0QzEyLjMzOTMgMi44MDAyNiAxMi41NTM1IDIuNzQ3MzMgMTIuNzcwNiAyLjc1MDk3QzEyLjk4NzYgMi43NTQ2MiAxMy4xOTk5IDIuODE0NzEgMTMuMzg2NyAyLjkyNTMzQzEzLjU3MzQgMy4wMzU5NCAxMy43MjgyIDMuMTkzMjggMTMuODM1NiAzLjM4MTg1QzEzLjk0MzEgMy41NzA0MiAxMy45OTk2IDMuNzgzNzIgMTMuOTk5NiA0LjAwMDc2QzEzLjk5OTYgNC4yMTc4MSAxMy45NDMxIDQuNDMxMTEgMTMuODM1NiA0LjYxOTY4QzEzLjcyODIgNC44MDgyNSAxMy41NzM0IDQuOTY1NTggMTMuMzg2NyA1LjA3NjJDMTMuMTk5OSA1LjE4NjgyIDEyLjk4NzYgNS4yNDY5MSAxMi43NzA2IDUuMjUwNTVDMTIuNTUzNSA1LjI1NDIgMTIuMzM5MyA1LjIwMTI3IDEyLjE0ODkgNS4wOTY5OEMxMi4wMTAxIDUuNDkzODIgMTEuNzk3NSA1Ljg2MDgyIDExLjUyMjIgNi4xNzg2MlpNMTEuNzk5NyAxNi4zNzgzQzEyLjEwNDIgMTYuNDU4MyAxMi40MjA5IDE2LjQ5ODkgMTIuNzQ5OCAxNi41QzEzLjc0NDQgMTYuNSAxNC42OTgzIDE2LjEwNDkgMTUuNDAxNiAxNS40MDE3QzE2LjEwNDkgMTQuNjk4NCAxNi41IDEzLjc0NDYgMTYuNSAxMi43NTAxVjguNzkxODhDMTYuNSA4LjQwNTI2IDE2LjM0NjUgOC4wMzQ0NyAxNi4wNzMxIDcuNzYxMDFDMTUuNzk5OCA3LjQ4NzU1IDE1LjQyOTEgNy4zMzM4MSAxNS4wNDI0IDcuMzMzNTlIMTMuMDU5QzEzLjM0NDggNy42Nzk0MSAxMy41MzE1IDguMTExMDcgMTMuNTc0IDguNTgzNTVIMTUuMDQwOEMxNS4wOTYgOC41ODM1NSAxNS4xNDkgOC42MDU1IDE1LjE4ODEgOC42NDQ1N0MxNS4yMjcxIDguNjgzNjQgMTUuMjQ5MSA4LjczNjYzIDE1LjI0OTEgOC43OTE4OFYxMi43NTAxQzE1LjI0OTEgMTMuMzk2OCAxNC45OTg1IDE0LjAxODQgMTQuNTQ5OCAxNC40ODQzQzE0LjEwMTIgMTQuOTUwMSAxMy40ODk1IDE1LjIyNCAxMi44NDMxIDE1LjI0ODRDMTIuNTYwNiAxNS42ODE3IDEyLjIwODEgMTYuMDYzMyAxMS43OTk3IDE2LjM3ODNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgc3ViLXRpdGxlXCI+e3thdWRpdERldGFpbHM/LmVuZ2FnZW1lbnRJZH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMiAzSDEzLjVDMTMuODk3OCAzIDE0LjI3OTQgMy4xNTgwNCAxNC41NjA3IDMuNDM5MzRDMTQuODQyIDMuNzIwNjQgMTUgNC4xMDIxOCAxNSA0LjVWMTVDMTUgMTUuMzk3OCAxNC44NDIgMTUuNzc5NCAxNC41NjA3IDE2LjA2MDdDMTQuMjc5NCAxNi4zNDIgMTMuODk3OCAxNi41IDEzLjUgMTYuNUg0LjVDNC4xMDIxOCAxNi41IDMuNzIwNjQgMTYuMzQyIDMuNDM5MzQgMTYuMDYwN0MzLjE1ODA0IDE1Ljc3OTQgMyAxNS4zOTc4IDMgMTVWNC41QzMgNC4xMDIxOCAzLjE1ODA0IDMuNzIwNjQgMy40MzkzNCAzLjQzOTM0QzMuNzIwNjQgMy4xNTgwNCA0LjEwMjE4IDMgNC41IDNINk02Ljc1IDEuNUgxMS4yNUMxMS42NjQyIDEuNSAxMiAxLjgzNTc5IDEyIDIuMjVWMy43NUMxMiA0LjE2NDIxIDExLjY2NDIgNC41IDExLjI1IDQuNUg2Ljc1QzYuMzM1NzkgNC41IDYgNC4xNjQyMSA2IDMuNzVWMi4yNUM2IDEuODM1NzkgNi4zMzU3OSAxLjUgNi43NSAxLjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBzdWItdGl0bGVcIj57e2N1cnJlbnRBdWRpdFR5cGUgfCB0aXRsZWNhc2V9fSBFeWUgVGVzdDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgMS41VjQuNU02IDEuNVY0LjVNMi4yNSA3LjVIMTUuNzVNMy43NSAzSDE0LjI1QzE1LjA3ODQgMyAxNS43NSAzLjY3MTU3IDE1Ljc1IDQuNVYxNUMxNS43NSAxNS44Mjg0IDE1LjA3ODQgMTYuNSAxNC4yNSAxNi41SDMuNzVDMi45MjE1NyAxNi41IDIuMjUgMTUuODI4NCAyLjI1IDE1VjQuNUMyLjI1IDMuNjcxNTcgMi45MjE1NyAzIDMuNzUgM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHN1Yi10aXRsZVwiPnt7YXVkaXREZXRhaWxzPy5maWxlRGF0ZSB8IGRhdGU6ICdkZC9NTS9ZWVlZJ319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNjZfNTUwMTkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTY2XzU1MDE5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIHN1Yi10aXRsZVwiPnt7YXVkaXREZXRhaWxzPy50ZXN0U3RhcnRUaW1lfX0gLSB7e2F1ZGl0RGV0YWlscz8udGVzdEVuZFRpbWV9fVxyXG4gICAgICAgICAgICAgICAgKHt7YXVkaXREZXRhaWxzPy50ZXN0RHVyYXRpb259fSBNaW5zKTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTMgYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7YXVkaXREZXRhaWxzPy52aXNpdG9yc1R5cGUgfCB0aXRsZWNhc2V9fTwvc3Bhbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiWydZZXQtdG8tQXVkaXQnXS5pbmNsdWRlcyhhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBtcy0zIHB4LTMgcHktMSBmdy1zZW1pYm9sZCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgYmctcHJpbWFyeVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICBZZXQgdG8gQXVkaXRcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdBdWRpdCcmJmF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXMgPT09ICdBdWRpdGVkJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBtcy0zIHB4LTMgcHktMSBmdy1zZW1pYm9sZCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgYmctc3VjY2Vzc1wiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICBBdWRpdGVkXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnUmUtQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnQXVkaXRlZCcgfHwgYXVkaXREZXRhaWxzPy5hdWRpdFR5cGUgPT09ICdSZS1BdWRpdCcmJmF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXMgPT09ICdSZS1BdWRpdGVkJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBtcy0zIHB4LTMgcHktMSBmdy1zZW1pYm9sZCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgYmctd2FybmluZ1wiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxyXG4gICAgICAgICAgICBSZS1BdWRpdGVkXHJcbiAgICAgICAgPC9kaXY+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+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnWWV0LXRvLUF1ZGl0JyAmJiAhdGFrZUF1ZGl0XCIgKGNsaWNrKT1cInN0YXJ0QXVkaXQoJ2F1ZGl0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBtcy0zIHB4LTMgcHktMiBmdy1zZW1pYm9sZCByb3VuZGVkLTIgY3Vyc29yLXBvaW50ZXIgYmctcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgU3RhcnQgQXVkaXRcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlsnQXVkaXRlZCcsJ1JlLUF1ZGl0JywnWWV0LXRvLUF1ZGl0J10uaW5jbHVkZXMoYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cykmJmF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnUmUtQXVkaXQnICYmICF0YWtlQXVkaXR8fGF1ZGl0RGV0YWlscz8uYXVkaXRUeXBlID09PSAnQXVkaXQnJiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzID09PSAnQXVkaXRlZCcgfHxhdWRpdERldGFpbHM/LmF1ZGl0VHlwZSA9PT0gJ1JlLUF1ZGl0JyYmYXVkaXREZXRhaWxzPy5hdWRpdFN0YXR1cyA9PT0gJ1JlLUF1ZGl0ZWQnJiYgIXRha2VBdWRpdCBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdGFydEF1ZGl0KCdSZS1BdWRpdCcpXCIgY2xhc3M9XCJidG4gYnRuLXNtIHB5LTIgYnRuLXdhcm5pbmdcIj5SZS1BdWRpdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRha2VBdWRpdFwiIGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZVwiIChjbGljayk9XCJjYW5jZWwoKVwiID5DYW5jZWw8L2Rpdj4gLS0+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+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiZGF0YS5BSVN0YXR1cyAhPT0gZGF0YS5hdWRpdGVkU3RhdHVzIHx8IGRhdGEuYXVkaXRlZFN0YXR1cyA9PT0gbnVsbCB8fCBkYXRhLmF1ZGl0ZWRTdGF0dXMgPT09IHVuZGVmaW5lZCB8fCBkYXRhLmF1ZGl0ZWRTdGF0dXMgPT09ICcnOyBlbHNlIEVxdWFsQmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0ge3sgZGF0YT8ucmVhc29uIHx8ICdOL0EnIH19IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhLnJlYXNvbiAhPT0nb3RoZXJzJ1wiPnt7ZGF0YS5yZWFzb24gfHwgJ04vQSd9fTwvc3Bhbj48c3BhbiAqbmdJZj1cImRhdGEucmVhc29uID09PSdvdGhlcnMnXCI+e3tkYXRhLm90aGVyUmVhc29uIHx8ICdOL0EnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI0VxdWFsQmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Ti9BPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGE/LnN0YXJ0VGltZX19IC0ge3tkYXRhPy5lbmRUaW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RlcFdpc2VQcm9jZXNzPy5sZW5ndGggJiYgdGFrZUF1ZGl0JiZhdWRpdERldGFpbHM/LmF1ZGl0U3RhdHVzPT09J1lldC10by1BdWRpdCd8fGF1ZGl0RGV0YWlscz8uYXVkaXRTdGF0dXM9PT0nSW4tUHJvZ3Jlc3MnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvY2VzcyBvZiBzdGVwV2lzZVByb2Nlc3M7IGxldCBpPWluZGV4IDtsZXQgbGFzdD1sYXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZC0zIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidy0xMDAgdGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1wcmltYXJ5IGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1hbGlnbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGVwLXt7aSsxIHwgbnVtYmVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1wcmltYXJ5IGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1hbGlnbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBSSBWZXJpZmllZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXByaW1hcnkgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LWFsaWduLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh1bWFuIEF1ZGl0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInctMjAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zdGFydFwiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ3LTQwcHggaC00MHB4IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRleHQtY2VudGVyIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInctMTAwIHJvdW5kZWQtNVwiIFtzcmNdPVwicHJvY2Vzcy5pbWFnZVVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Byb2Nlc3MucHJvY2Vzc05hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiAqbmdJZj1cInByb2Nlc3MuQUlTdGF0dXNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgdGV4dC1jYXBpdGFsaXplXCI+UGFzczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXByb2Nlc3MuQUlTdGF0dXNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciB0ZXh0LWNhcGl0YWxpemVcIj5GYWlsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdEh1bWFuVmVyaWZpZWQoaSx0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInByb2Nlc3M/LmF1ZGl0ZWRTdGF0dXMgPyAndGV4dC13aGl0ZSBidG4tc3VjY2VzcycgOiAndGV4dC1zdWNjZXNzIGJnLXdoaXRlIGJvcmRlciBib3JkZXItc3VjY2VzcydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gIHJvdW5kZWQtNVwiPjxzcGFuPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxN1wiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE3IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0LjE2NjcgNEw2LjgzMzMzIDExLjMzMzNMMy41IDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicHJvY2Vzcz8uYXVkaXRlZFN0YXR1cyA/ICd3aGl0ZScgOiAnIzE3QzY1MydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjI1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz1cIm1zLTJcIj5QYXNzPC9zcGFuPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3RIdW1hblZlcmlmaWVkKGksZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicHJvY2Vzcz8uYXVkaXRlZFN0YXR1cz09PWZhbHNlID8gJ3RleHQtd2hpdGUgYmctZGFuZ2VyJyA6ICd0ZXh0LWRhbmdlciBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWRhbmdlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTMgcHgtNSBweS0yIGZ3LXNlbWlib2xkIHJvdW5kZWQtNSBjdXJzb3ItcG9pbnRlciByb3VuZGVkLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuNjY2NSA0TDQuNjY2NSAxMk00LjY2NjUgNEwxMi42NjY1IDEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInByb2Nlc3M/LmF1ZGl0ZWRTdGF0dXM9PT1mYWxzZSA/ICd3aGl0ZScgOiAnI0Y4Mjg1QSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjI1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3d1bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXMtMlwiPkZhaWw8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImN1cnJlbnRBdWRpdFR5cGUgPT09ICdyZW1vdGUnICYmIHByb2Nlc3M/LnByZWRpY3RlZFRyYW5zY3JpcHRcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgcC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljdGVkIFRyYW5zY3JpcHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBjb2wtc20tMTIgcC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeSB0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwicHJvY2Vzcz8ucHJlZGljdGVkVHJhbnNjcmlwdCA/IHRvb2x0aXBDb250ZW50IDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9J2JvdHRvbSc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cHJvY2Vzcz8ucHJlZGljdGVkVHJhbnNjcmlwdH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwQ29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS10b29sdGlwLWNvbnRlbnQgdG9vbHRpcC1jb250ZW50IHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pbi13LTUwMHB4XCI+e3twcm9jZXNzPy5wcmVkaWN0ZWRUcmFuc2NyaXB0fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9jZXNzPy5hdWRpdGVkU3RhdHVzICE9PSB1bmRlZmluZWQgJiYgcHJvY2Vzcz8uYXVkaXRlZFN0YXR1cyAhPT0gJycgJiYgcHJvY2Vzcz8uYXVkaXRlZFN0YXR1cyAhPT0gcHJvY2Vzcz8uQUlTdGF0dXNcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgcC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhc29uICYgVGltZSBTdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNvbC1zbS0xMiBwLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVEcm9wZG93bihpLCdyZWFzb24nKVwiIGNsYXNzPVwiY3VzdG9tLWRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zZWxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm9jZXNzPy5yZWFzb24gPyBwcm9jZXNzPy5yZWFzb24gOiAnU2VsZWN0IFJlYXNvbicgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSA3LjVMMTAgMTIuNUwxNSA3LjVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImxhc3QgPyAnZHJvcGRvd24tY29udGVudDEnIDogJ2Ryb3Bkb3duLWNvbnRlbnQnXCIgKm5nSWY9XCJkcm9wZG93bk9wZW5baV0/LnJlYXNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTWludXRlcyBMaXN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtIG15LTIgbWludXRlcy1zY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkcm9wZG93bkxpc3RcIiBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInByb2Nlc3M/LnJlYXNvbiA9PT0gaXRlbT8ua2V5ID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhbWVyYSBweC01IGl0ZW1zIGZ3LXNlbWlib2xkIGN1cnNvci1wb2ludGVyIHB5LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFJlYXNvbihpLCBpdGVtPy5rZXksICdyZWFzb24nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0/Lml0ZW0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEN1c3RvbSBJbnB1dCBmb3IgXCJPdGhlcnNcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvY2Vzcz8ucmVhc29uID09PSAnb3RoZXJzJ1wiIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb2Nlc3Mub3RoZXJSZWFzb25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciB5b3VyIHJlYXNvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oaSwnc3RhcnRUaW1lJylcIiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGZ3LXNlbWlib2xkIGJnLXdoaXRlIHB4LTJcIj5TdGFydDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc2VsZWN0XCI+e3twcm9jZXNzPy5zdGFydFRpbWUgPyBwcm9jZXNzPy5zdGFydFRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOidNTTpTUyd9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImxhc3QgPyAnZHJvcGRvd24tY29udGVudDEnIDogJ2Ryb3Bkb3duLWNvbnRlbnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcm9wZG93bk9wZW5baV0/LnN0YXJ0VGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNaW51dGVzIExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLXNlY3Rpb24gbWludXRlcy1zY3JvbGwgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbWluIG9mIG1pbnV0ZXNMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1pbnV0ZShpLG1pbiwnc3RhcnRUaW1lJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwibWluID09PSBzZWxlY3RlZE1pbnV0ZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbWluIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2Vjb25kcyBMaXN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbC1zZWN0aW9uIHNlY29uZHMtc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjIG9mIHNlY29uZHNMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFNlY29uZChpLHNlYywnc3RhcnRUaW1lJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwic2VjID09PSBzZWxlY3RlZFNlY29uZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VjIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oaSwnZW5kVGltZScpXCIgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBmdy1zZW1pYm9sZCBiZy13aGl0ZSBweC0yXCI+RW5kPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zZWxlY3RcIj48c3Bhbj57e3Byb2Nlc3MuZW5kVGltZSA/IHByb2Nlc3MuZW5kVGltZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTU06U1MnfX08L3NwYW4+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwibGFzdCA/ICdkcm9wZG93bi1jb250ZW50MScgOiAnZHJvcGRvd24tY29udGVudCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyb3Bkb3duT3BlbltpXT8uZW5kVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNaW51dGVzIExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLXNlY3Rpb24gbWludXRlcy1zY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtaW4gb2YgbWludXRlc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJtaW4gPT09IHNlbGVjdGVkTWludXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImdldFNlY29uZHNGcm9tVGltZShtaW4gKyAnOicgKyBzZWxlY3RlZFNlY29uZHMpIDw9IGdldFNlY29uZHNGcm9tVGltZShwcm9jZXNzLnN0YXJ0VGltZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTZWNvbmRzRnJvbVRpbWUobWluICsgJzonICsgc2VsZWN0ZWRTZWNvbmRzKSA+IGdldFNlY29uZHNGcm9tVGltZShwcm9jZXNzLnN0YXJ0VGltZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzZWxlY3RNaW51dGUoaSxtaW4sJ2VuZFRpbWUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1pbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2Vjb25kcyBMaXN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbC1zZWN0aW9uIHNlY29uZHMtc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjIG9mIHNlY29uZHNMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwic2VjID09PSBzZWxlY3RlZFNlY29uZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJnZXRTZWNvbmRzRnJvbVRpbWUoc2VsZWN0ZWRNaW51dGVzICsgJzonICsgc2VjKSA8PSBnZXRTZWNvbmRzRnJvbVRpbWUocHJvY2Vzcy5zdGFydFRpbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2Vjb25kc0Zyb21UaW1lKHNlbGVjdGVkTWludXRlcyArICc6JyArIHNlYykgPiBnZXRTZWNvbmRzRnJvbVRpbWUocHJvY2Vzcy5zdGFydFRpbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc2VsZWN0U2Vjb25kKGksc2VjLCdlbmRUaW1lJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWMgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXN0ZXBXaXNlUHJvY2Vzcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIih0YWJsZUxvYWRpbmcgfCBhc3luYykgPT09ICdsb2FkaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCByb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIodGFibGVMb2FkaW5nIHwgYXN5bmMpID09PSAnbG9hZGVkJ1wiIGNsYXNzPVwicm93IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwiY29sLWxnLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IG15LTggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoZSB0ZXN0PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiY2FyZCBtdC0zIHAtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtdGV4dCBtYi0yXCI+SGlzdG9yeTwvc3Bhbj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgcHgtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIGJvcmRlciBib3JkZXItMSByb3VuZGVkLTNcIiAqbmdJZj1cImhpc3RvcnlEYXRhPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidy0xMDAgdGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1zdGFydFwiPkF1ZGl0ZWQgQnk8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+QXVkaXRlZCBEYXRlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlRpbWUgU3RhbXA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+VmlldyBMb2dzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaGlzdG9yeURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aXRlbS51c2VyTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aXRlbS5EYXRlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLlRpbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAoY2xpY2spPVwidmlld0hpc3RvcnlNb2RlbChpdGVtKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMC44MzM0OTYgOC4wMDAxNkMwLjgzMzQ5NiA4LjAwMDE2IDQuMTY2ODMgMS4zMzM1IDEwLjAwMDIgMS4zMzM1QzE1LjgzMzUgMS4zMzM1IDE5LjE2NjggOC4wMDAxNiAxOS4xNjY4IDguMDAwMTZDMTkuMTY2OCA4LjAwMDE2IDE1LjgzMzUgMTQuNjY2OCAxMC4wMDAyIDE0LjY2NjhDNC4xNjY4MyAxNC42NjY4IDAuODMzNDk2IDguMDAwMTYgMC44MzM0OTYgOC4wMDAxNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4wMDAyIDEwLjUwMDJDMTEuMzgwOSAxMC41MDAyIDEyLjUwMDIgOS4zODA4NyAxMi41MDAyIDguMDAwMTZDMTIuNTAwMiA2LjYxOTQ1IDExLjM4MDkgNS41MDAxNiAxMC4wMDAyIDUuNTAwMTZDOC42MTk0NSA1LjUwMDE2IDcuNTAwMTYgNi42MTk0NSA3LjUwMDE2IDguMDAwMTZDNy41MDAxNiA5LjM4MDg3IDguNjE5NDUgMTAuNTAwMiAxMC4wMDAyIDEwLjUwMDJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFoaXN0b3J5RGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoaGlzdG9yeXRhYmxlTG9hZGluZyB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCByb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihoaXN0b3J5dGFibGVMb2FkaW5nIHwgYXN5bmMpID09PSAnbG9hZGVkJ1wiIGNsYXNzPVwicm93IG10LTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IG15LTggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoZSB0ZXN0PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICN2aWV3SGlzdG9yeSBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC01IGgtNzAwcHggc2Nyb2xsXCI+XHJcblxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGQtZmxleFwiPlxyXG48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQ2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjQ2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI4IDIyVjI4TDMyIDMwTTM4IDI4QzM4IDMzLjUyMjggMzMuNTIyOCAzOCAyOCAzOEMyMi40NzcyIDM4IDE4IDMzLjUyMjggMTggMjhDMTggMjIuNDc3MiAyMi40NzcyIDE4IDI4IDE4QzMzLjUyMjggMTggMzggMjIuNDc3MiAzOCAyOFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy0zIHB0LTIgZnMtNCB0ZXh0LWdyYXktODAwIHRleHQtaG92ZXItcHJpbWFyeSBmdy1ib2xkIG1iLTAgdGl0bGUgY3Vyc29yLXBvaW50ZXJcIj5BdWRpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBIaXN0b3J5PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIiAqbmdJZj1cImhpc3RvcnlEYXRhPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInctMTAwIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtc3RhcnRcIj5TdGVwLWJ5LVN0ZXAgUHJvY2VzczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RhdHVzIGNoYW5nZWQgZnJvbTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+Tm90ZWQgVGltZSBSYW5nZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UmVhc29uIGZvciBFcnJvcjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aWV3SGlzdG9yeURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0ucHJvY2Vzc05hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLkFJU3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIG1lLTJcIj5QYXNzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uQUlTdGF0dXNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBtZS0yXCI+RmFpbDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjMxXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMzEgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMwLjM1MzYgNC4zNTM1NUMzMC41NDg4IDQuMTU4MjkgMzAuNTQ4OCAzLjg0MTcxIDMwLjM1MzYgMy42NDY0NUwyNy4xNzE2IDAuNDY0NDY2QzI2Ljk3NjMgMC4yNjkyMDQgMjYuNjU5NyAwLjI2OTIwNCAyNi40NjQ1IDAuNDY0NDY2QzI2LjI2OTIgMC42NTk3MjggMjYuMjY5MiAwLjk3NjMxMSAyNi40NjQ1IDEuMTcxNTdMMjkuMjkyOSA0TDI2LjQ2NDUgNi44Mjg0M0MyNi4yNjkyIDcuMDIzNjkgMjYuMjY5MiA3LjM0MDI3IDI2LjQ2NDUgNy41MzU1M0MyNi42NTk3IDcuNzMwOCAyNi45NzYzIDcuNzMwOCAyNy4xNzE2IDcuNTM1NTNMMzAuMzUzNiA0LjM1MzU1Wk0wIDQuNUgzMFYzLjVIMFY0LjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uYXVkaXRlZFN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBtcy0yXCI+UGFzczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLmF1ZGl0ZWRTdGF0dXNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBtcy0yXCI+RmFpbDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiICpuZ0lmPVwiaXRlbS5zdGFydFRpbWVcIj5Ob3RlZCBUaW1lIFJhbmdlIDogPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhcmsxXCI+e3tpdGVtLnN0YXJ0VGltZSA/IGl0ZW0uc3RhcnRUaW1lOictLSd9fSAtIHt7aXRlbS5lbmRUaW1lfX08L3NwYW4+PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJlbmdhZ2UtdGV4dFwiPjxzcGFuICpuZ0lmPVwiaXRlbS5yZWFzb24gIT09J290aGVycydcIj57e2l0ZW0ucmVhc29ufX08L3NwYW4+PHNwYW4gKm5nSWY9XCJpdGVtLnJlYXNvbiA9PT0nb3RoZXJzJ1wiPnt7aXRlbS5vdGhlclJlYXNvbn19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|