tango-app-ui-store-ticket-infra 3.0.39-dev → 3.0.41-dev
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/analyze-report/analyze-report.component.mjs +5 -5
- package/esm2022/lib/components/create-ticket/create-ticket.component.mjs +28 -14
- package/esm2022/lib/components/raise-ticket/raise-ticket.component.mjs +3 -3
- package/esm2022/lib/components/summary-infra/summary-infra.component.mjs +5 -10
- package/esm2022/lib/components/tango-store-infra/tango-store-infra.component.mjs +3 -3
- package/esm2022/lib/components/ticket-infra/ticket-infra.component.mjs +3 -3
- package/esm2022/lib/services/excel.service.mjs +3 -3
- package/esm2022/lib/services/tickets.service.mjs +3 -3
- package/esm2022/lib/tango-store-infra-routing.module.mjs +4 -4
- package/esm2022/lib/tango-store-infra.module.mjs +4 -4
- package/fesm2022/tango-app-ui-store-ticket-infra.mjs +58 -49
- package/fesm2022/tango-app-ui-store-ticket-infra.mjs.map +1 -1
- package/lib/components/create-ticket/create-ticket.component.d.ts +2 -0
- package/lib/components/summary-infra/summary-infra.component.d.ts +0 -1
- package/package.json +1 -1
|
@@ -155,12 +155,12 @@ export class AnalyzeReportComponent {
|
|
|
155
155
|
getDateFormat(date) {
|
|
156
156
|
return this.dayjs(date).format('DD-MM-YYYY');
|
|
157
157
|
}
|
|
158
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
159
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: AnalyzeReportComponent, selector: "lib-analyze-report", inputs: { analyzereport: "analyzereport" }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }, { propertyName: "ReconfirmationModal", first: true, predicate: ["ReconfirmationModal"], descendants: true }], ngImport: i0, template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{getDateFormat(selectedDate[0]?.date)}} to\r\n {{getDateFormat(selectedDate[selectedDate.length - 1]?.date)}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item\"><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date?.date ? 'active':''\" (click)=\"handleClick(i)\" \r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-5 me-1 show\">\r\n {{getDateFormat(date?.date)}} <span *ngIf=\"activeDate === date?.date && !date?.isSelected\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date?.date && !date?.isSelected\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"!selectedDate[currentIdx].isSelected\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"selectedDate[currentIdx].isSelected\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li *ngIf=\"activeArray?.downTime > 0\" class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" <span *ngIf=\"activeArray?.speedTest\" >\r\n and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps</span>\r\n </span>. </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span *ngIf=\"activeArray?.primaryIssue\" class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">{{activeStream?.cameraNumber}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-5 px-2\"> \r\n <!-- <div class=\"rounded-2 overflow-hidden\">\r\n \r\n <span class=\"list-size\"> Camera Angle</span>\r\n <div class=\"mt-3\">\r\n <img *ngIf=\"angleChange && angleChange?.angleChangeImage\" class=\"w-100 mh-150px\" [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\" (error)=\"angleChange.angleChangeImage = null\">\r\n <img *ngIf=\"!angleChange?.angleChangeImage && activeStream?.thumbnailImage\" class=\"w-100 mh-150px\" [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\" (error)=\"activeStream.thumbnailImage = null\">\r\n </div>\r\n <div *ngIf=\"!activeStream?.thumbnailImage && !angleChange?.angleChangeImage\" class=\"w-100 h-200px rounded-3 overflow-hidden Nopreview align-content-center mt-3\">\r\n <div class=\"previewTitle text-center mb-5\">\r\n Preview not available\r\n </div>\r\n <div class=\"previewsubTitle fw-semibold\">\r\n The selected camera is not available at the moment.\r\n </div>\r\n </div>\r\n <div class=\"row p-0\" *ngIf=\"angleChange?.angleChangeImage\">\r\n <div class=\"col-md-6 m-0 pe-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Expected</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 m-0 ps-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Actual</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"table-reponsive mt-5\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th class=\"text-center\">Excepted</th>\r\n <th class=\"text-center\">Actual</th>\r\n <th class=\"text-center\">Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>Camera Angle</td>\r\n <td *ngIf=\"angleChange\"><div class=\"align-content-center text-center align-items-center\">\r\n <img class=\"h-70px w-75 rounded-3\" [src]=\"angleChange?.expected\">\r\n </div></td>\r\n <td *ngIf=\"angleChange\"><div class=\"align-content-center text-center align-items-center\">\r\n <img class=\"h-70px w-75 rounded-3\" [src]=\"angleChange?.actual\">\r\n </div></td>\r\n <td *ngIf=\"!angleChange || !angleChange?.expected\">\r\n <div class=\"d-flex align-items-center text-align-center justify-content-center\">\r\n <div class=\"w-75 h-70px rounded-3 align-content-center Nopreview mt-3\">\r\n <div class=\"previewTitle text-center\">\r\n Preview not available\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"!angleChange || !angleChange?.actual\">\r\n <div class=\"d-flex align-items-center text-align-center justify-content-center\">\r\n <div class=\"w-75 h-70px rounded-3 align-content-center Nopreview mt-3\">\r\n <div class=\"previewTitle text-center\">\r\n Preview not available\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"!angleChange\" class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M22.25 11.0799V11.9999C22.2488 14.1563 21.5505 16.2545 20.2593 17.9817C18.9682 19.7088 17.1533 20.9723 15.0854 21.5838C13.0174 22.1952 10.8073 22.1218 8.78447 21.3744C6.76168 20.6271 5.03465 19.246 3.86096 17.4369C2.68727 15.6279 2.12979 13.4879 2.27168 11.3362C2.41356 9.18443 3.24721 7.13619 4.64828 5.49694C6.04935 3.85768 7.94279 2.71525 10.0462 2.24001C12.1496 1.76477 14.3503 1.9822 16.32 2.85986M22.25 3.99986L12.25 14.0099L9.25001 11.0099\" stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n <td *ngIf=\"angleChange\" class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"33\" height=\"32\" viewBox=\"0 0 33 32\" fill=\"none\">\r\n <path d=\"M16.25 28.1905C22.9827 28.1905 28.4405 22.7327 28.4405 16C28.4405 9.26743 22.9827 3.80957 16.25 3.80957C9.51743 3.80957 4.05957 9.26743 4.05957 16C4.05957 22.7327 9.51743 28.1905 16.25 28.1905Z\" stroke=\"#D92D20\" stroke-width=\"1.52381\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M11.6787 11.4287L20.8216 20.5716M20.8216 11.4287L11.6787 20.5716\" stroke=\"#D92D20\" stroke-width=\"1.52381\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n </tr>\r\n <tr>\r\n <td>Resolution</td>\r\n <td class=\"text-center\">{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <td class=\"text-center\">{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M22.25 11.0799V11.9999C22.2488 14.1563 21.5505 16.2545 20.2593 17.9817C18.9682 19.7088 17.1533 20.9723 15.0854 21.5838C13.0174 22.1952 10.8073 22.1218 8.78447 21.3744C6.76168 20.6271 5.03465 19.246 3.86096 17.4369C2.68727 15.6279 2.12979 13.4879 2.27168 11.3362C2.41356 9.18443 3.24721 7.13619 4.64828 5.49694C6.04935 3.85768 7.94279 2.71525 10.0462 2.24001C12.1496 1.76477 14.3503 1.9822 16.32 2.85986M22.25 3.99986L12.25 14.0099L9.25001 11.0099\" stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream?.streamName === activeStream?.streamName? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header p-0 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list cursor-pointer text-decoration-underline\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\"q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 me-6 mb-3\">\r\n <div class=\"h-history-count\">Total : <span class=\"h-history-title\">{{successRate?.total}} {{successRate?.total > 1 ? 'Tickets' : 'Ticket'}}</span></div>\r\n </div>\r\n <div *ngIf=\"successRate?.successRate !== 'null' && successRate?.successRate > 0 && successRate?.successRate !== ''\" class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-count\">Accuracy : <span class=\"h-history-title\">{{successRate?.successRate}}%</span></div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \" (click)=\"openPopup()\">Close</button>\r\n <button type=\"button\"\r\n class=\"btn btn-primary rounded-3\"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to close the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}.actualspan{color:var(--Black, #101828);font-size:12px;font-weight:400;line-height:18px}.Nopreview{border:1px solid var(--Gray-500, #667085);background:var(--Gray-100, #F2F4F7);color:var(--Gray-500, #667085)}.Nopreview .previewTitle{font-size:10px;font-weight:700;line-height:20px}.Nopreview .previewsubTitle{text-align:center;font-size:12px;line-height:18px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
158
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnalyzeReportComponent, deps: [{ token: i1.NgbModal }, { token: i1.NgbActiveModal }, { token: i2.TicketsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
159
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AnalyzeReportComponent, selector: "lib-analyze-report", inputs: { analyzereport: "analyzereport" }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }, { propertyName: "ReconfirmationModal", first: true, predicate: ["ReconfirmationModal"], descendants: true }], ngImport: i0, template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{getDateFormat(selectedDate[0]?.date)}} to\r\n {{getDateFormat(selectedDate[selectedDate.length - 1]?.date)}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item\"><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date?.date ? 'active':''\" (click)=\"handleClick(i)\" \r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-5 me-1 show\">\r\n {{getDateFormat(date?.date)}} <span *ngIf=\"activeDate === date?.date && !date?.isSelected\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date?.date && !date?.isSelected\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"!selectedDate[currentIdx].isSelected\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"selectedDate[currentIdx].isSelected\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li *ngIf=\"activeArray?.downTime > 0\" class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" <span *ngIf=\"activeArray?.speedTest\" >\r\n and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps</span>\r\n </span>. </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span *ngIf=\"activeArray?.primaryIssue\" class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">{{activeStream?.cameraNumber}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-5 px-2\"> \r\n <!-- <div class=\"rounded-2 overflow-hidden\">\r\n \r\n <span class=\"list-size\"> Camera Angle</span>\r\n <div class=\"mt-3\">\r\n <img *ngIf=\"angleChange && angleChange?.angleChangeImage\" class=\"w-100 mh-150px\" [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\" (error)=\"angleChange.angleChangeImage = null\">\r\n <img *ngIf=\"!angleChange?.angleChangeImage && activeStream?.thumbnailImage\" class=\"w-100 mh-150px\" [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\" (error)=\"activeStream.thumbnailImage = null\">\r\n </div>\r\n <div *ngIf=\"!activeStream?.thumbnailImage && !angleChange?.angleChangeImage\" class=\"w-100 h-200px rounded-3 overflow-hidden Nopreview align-content-center mt-3\">\r\n <div class=\"previewTitle text-center mb-5\">\r\n Preview not available\r\n </div>\r\n <div class=\"previewsubTitle fw-semibold\">\r\n The selected camera is not available at the moment.\r\n </div>\r\n </div>\r\n <div class=\"row p-0\" *ngIf=\"angleChange?.angleChangeImage\">\r\n <div class=\"col-md-6 m-0 pe-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Expected</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 m-0 ps-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Actual</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"table-reponsive mt-5\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th class=\"text-center\">Excepted</th>\r\n <th class=\"text-center\">Actual</th>\r\n <th class=\"text-center\">Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>Camera Angle</td>\r\n <td *ngIf=\"angleChange\"><div class=\"align-content-center text-center align-items-center\">\r\n <img class=\"h-70px w-75 rounded-3\" [src]=\"angleChange?.expected\">\r\n </div></td>\r\n <td *ngIf=\"angleChange\"><div class=\"align-content-center text-center align-items-center\">\r\n <img class=\"h-70px w-75 rounded-3\" [src]=\"angleChange?.actual\">\r\n </div></td>\r\n <td *ngIf=\"!angleChange || !angleChange?.expected\">\r\n <div class=\"d-flex align-items-center text-align-center justify-content-center\">\r\n <div class=\"w-75 h-70px rounded-3 align-content-center Nopreview mt-3\">\r\n <div class=\"previewTitle text-center\">\r\n Preview not available\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"!angleChange || !angleChange?.actual\">\r\n <div class=\"d-flex align-items-center text-align-center justify-content-center\">\r\n <div class=\"w-75 h-70px rounded-3 align-content-center Nopreview mt-3\">\r\n <div class=\"previewTitle text-center\">\r\n Preview not available\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"!angleChange\" class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M22.25 11.0799V11.9999C22.2488 14.1563 21.5505 16.2545 20.2593 17.9817C18.9682 19.7088 17.1533 20.9723 15.0854 21.5838C13.0174 22.1952 10.8073 22.1218 8.78447 21.3744C6.76168 20.6271 5.03465 19.246 3.86096 17.4369C2.68727 15.6279 2.12979 13.4879 2.27168 11.3362C2.41356 9.18443 3.24721 7.13619 4.64828 5.49694C6.04935 3.85768 7.94279 2.71525 10.0462 2.24001C12.1496 1.76477 14.3503 1.9822 16.32 2.85986M22.25 3.99986L12.25 14.0099L9.25001 11.0099\" stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n <td *ngIf=\"angleChange\" class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"33\" height=\"32\" viewBox=\"0 0 33 32\" fill=\"none\">\r\n <path d=\"M16.25 28.1905C22.9827 28.1905 28.4405 22.7327 28.4405 16C28.4405 9.26743 22.9827 3.80957 16.25 3.80957C9.51743 3.80957 4.05957 9.26743 4.05957 16C4.05957 22.7327 9.51743 28.1905 16.25 28.1905Z\" stroke=\"#D92D20\" stroke-width=\"1.52381\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M11.6787 11.4287L20.8216 20.5716M20.8216 11.4287L11.6787 20.5716\" stroke=\"#D92D20\" stroke-width=\"1.52381\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n </tr>\r\n <tr>\r\n <td>Resolution</td>\r\n <td class=\"text-center\">{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <td class=\"text-center\">{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M22.25 11.0799V11.9999C22.2488 14.1563 21.5505 16.2545 20.2593 17.9817C18.9682 19.7088 17.1533 20.9723 15.0854 21.5838C13.0174 22.1952 10.8073 22.1218 8.78447 21.3744C6.76168 20.6271 5.03465 19.246 3.86096 17.4369C2.68727 15.6279 2.12979 13.4879 2.27168 11.3362C2.41356 9.18443 3.24721 7.13619 4.64828 5.49694C6.04935 3.85768 7.94279 2.71525 10.0462 2.24001C12.1496 1.76477 14.3503 1.9822 16.32 2.85986M22.25 3.99986L12.25 14.0099L9.25001 11.0099\" stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream?.streamName === activeStream?.streamName? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header p-0 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list cursor-pointer text-decoration-underline\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\"q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 me-6 mb-3\">\r\n <div class=\"h-history-count\">Total : <span class=\"h-history-title\">{{successRate?.total}} {{successRate?.total > 1 ? 'Tickets' : 'Ticket'}}</span></div>\r\n </div>\r\n <div *ngIf=\"successRate?.successRate !== 'null' && successRate?.successRate > 0 && successRate?.successRate !== ''\" class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-count\">Accuracy : <span class=\"h-history-title\">{{successRate?.successRate}}%</span></div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \" (click)=\"openPopup()\">Close</button>\r\n <button [disabled]=\"activeArray?.downTime > 480\" type=\"button\"\r\n class=\"btn btn-primary rounded-3\"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to close the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}.actualspan{color:var(--Black, #101828);font-size:12px;font-weight:400;line-height:18px}.Nopreview{border:1px solid var(--Gray-500, #667085);background:var(--Gray-100, #F2F4F7);color:var(--Gray-500, #667085)}.Nopreview .previewTitle{font-size:10px;font-weight:700;line-height:20px}.Nopreview .previewsubTitle{text-align:center;font-size:12px;line-height:18px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
160
160
|
}
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnalyzeReportComponent, decorators: [{
|
|
162
162
|
type: Component,
|
|
163
|
-
args: [{ selector: 'lib-analyze-report', template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{getDateFormat(selectedDate[0]?.date)}} to\r\n {{getDateFormat(selectedDate[selectedDate.length - 1]?.date)}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item\"><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date?.date ? 'active':''\" (click)=\"handleClick(i)\" \r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-5 me-1 show\">\r\n {{getDateFormat(date?.date)}} <span *ngIf=\"activeDate === date?.date && !date?.isSelected\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date?.date && !date?.isSelected\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"!selectedDate[currentIdx].isSelected\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"selectedDate[currentIdx].isSelected\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li *ngIf=\"activeArray?.downTime > 0\" class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" <span *ngIf=\"activeArray?.speedTest\" >\r\n and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps</span>\r\n </span>. </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span *ngIf=\"activeArray?.primaryIssue\" class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">{{activeStream?.cameraNumber}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-5 px-2\"> \r\n <!-- <div class=\"rounded-2 overflow-hidden\">\r\n \r\n <span class=\"list-size\"> Camera Angle</span>\r\n <div class=\"mt-3\">\r\n <img *ngIf=\"angleChange && angleChange?.angleChangeImage\" class=\"w-100 mh-150px\" [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\" (error)=\"angleChange.angleChangeImage = null\">\r\n <img *ngIf=\"!angleChange?.angleChangeImage && activeStream?.thumbnailImage\" class=\"w-100 mh-150px\" [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\" (error)=\"activeStream.thumbnailImage = null\">\r\n </div>\r\n <div *ngIf=\"!activeStream?.thumbnailImage && !angleChange?.angleChangeImage\" class=\"w-100 h-200px rounded-3 overflow-hidden Nopreview align-content-center mt-3\">\r\n <div class=\"previewTitle text-center mb-5\">\r\n Preview not available\r\n </div>\r\n <div class=\"previewsubTitle fw-semibold\">\r\n The selected camera is not available at the moment.\r\n </div>\r\n </div>\r\n <div class=\"row p-0\" *ngIf=\"angleChange?.angleChangeImage\">\r\n <div class=\"col-md-6 m-0 pe-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Expected</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 m-0 ps-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Actual</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"table-reponsive mt-5\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th class=\"text-center\">Excepted</th>\r\n <th class=\"text-center\">Actual</th>\r\n <th class=\"text-center\">Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>Camera Angle</td>\r\n <td *ngIf=\"angleChange\"><div class=\"align-content-center text-center align-items-center\">\r\n <img class=\"h-70px w-75 rounded-3\" [src]=\"angleChange?.expected\">\r\n </div></td>\r\n <td *ngIf=\"angleChange\"><div class=\"align-content-center text-center align-items-center\">\r\n <img class=\"h-70px w-75 rounded-3\" [src]=\"angleChange?.actual\">\r\n </div></td>\r\n <td *ngIf=\"!angleChange || !angleChange?.expected\">\r\n <div class=\"d-flex align-items-center text-align-center justify-content-center\">\r\n <div class=\"w-75 h-70px rounded-3 align-content-center Nopreview mt-3\">\r\n <div class=\"previewTitle text-center\">\r\n Preview not available\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"!angleChange || !angleChange?.actual\">\r\n <div class=\"d-flex align-items-center text-align-center justify-content-center\">\r\n <div class=\"w-75 h-70px rounded-3 align-content-center Nopreview mt-3\">\r\n <div class=\"previewTitle text-center\">\r\n Preview not available\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"!angleChange\" class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M22.25 11.0799V11.9999C22.2488 14.1563 21.5505 16.2545 20.2593 17.9817C18.9682 19.7088 17.1533 20.9723 15.0854 21.5838C13.0174 22.1952 10.8073 22.1218 8.78447 21.3744C6.76168 20.6271 5.03465 19.246 3.86096 17.4369C2.68727 15.6279 2.12979 13.4879 2.27168 11.3362C2.41356 9.18443 3.24721 7.13619 4.64828 5.49694C6.04935 3.85768 7.94279 2.71525 10.0462 2.24001C12.1496 1.76477 14.3503 1.9822 16.32 2.85986M22.25 3.99986L12.25 14.0099L9.25001 11.0099\" stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n <td *ngIf=\"angleChange\" class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"33\" height=\"32\" viewBox=\"0 0 33 32\" fill=\"none\">\r\n <path d=\"M16.25 28.1905C22.9827 28.1905 28.4405 22.7327 28.4405 16C28.4405 9.26743 22.9827 3.80957 16.25 3.80957C9.51743 3.80957 4.05957 9.26743 4.05957 16C4.05957 22.7327 9.51743 28.1905 16.25 28.1905Z\" stroke=\"#D92D20\" stroke-width=\"1.52381\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M11.6787 11.4287L20.8216 20.5716M20.8216 11.4287L11.6787 20.5716\" stroke=\"#D92D20\" stroke-width=\"1.52381\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n </tr>\r\n <tr>\r\n <td>Resolution</td>\r\n <td class=\"text-center\">{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <td class=\"text-center\">{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M22.25 11.0799V11.9999C22.2488 14.1563 21.5505 16.2545 20.2593 17.9817C18.9682 19.7088 17.1533 20.9723 15.0854 21.5838C13.0174 22.1952 10.8073 22.1218 8.78447 21.3744C6.76168 20.6271 5.03465 19.246 3.86096 17.4369C2.68727 15.6279 2.12979 13.4879 2.27168 11.3362C2.41356 9.18443 3.24721 7.13619 4.64828 5.49694C6.04935 3.85768 7.94279 2.71525 10.0462 2.24001C12.1496 1.76477 14.3503 1.9822 16.32 2.85986M22.25 3.99986L12.25 14.0099L9.25001 11.0099\" stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream?.streamName === activeStream?.streamName? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header p-0 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list cursor-pointer text-decoration-underline\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\"q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 me-6 mb-3\">\r\n <div class=\"h-history-count\">Total : <span class=\"h-history-title\">{{successRate?.total}} {{successRate?.total > 1 ? 'Tickets' : 'Ticket'}}</span></div>\r\n </div>\r\n <div *ngIf=\"successRate?.successRate !== 'null' && successRate?.successRate > 0 && successRate?.successRate !== ''\" class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-count\">Accuracy : <span class=\"h-history-title\">{{successRate?.successRate}}%</span></div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \" (click)=\"openPopup()\">Close</button>\r\n <button type=\"button\"\r\n class=\"btn btn-primary rounded-3\"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to close the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}.actualspan{color:var(--Black, #101828);font-size:12px;font-weight:400;line-height:18px}.Nopreview{border:1px solid var(--Gray-500, #667085);background:var(--Gray-100, #F2F4F7);color:var(--Gray-500, #667085)}.Nopreview .previewTitle{font-size:10px;font-weight:700;line-height:20px}.Nopreview .previewsubTitle{text-align:center;font-size:12px;line-height:18px}\n"] }]
|
|
163
|
+
args: [{ selector: 'lib-analyze-report', template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{getDateFormat(selectedDate[0]?.date)}} to\r\n {{getDateFormat(selectedDate[selectedDate.length - 1]?.date)}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item\"><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date?.date ? 'active':''\" (click)=\"handleClick(i)\" \r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-5 me-1 show\">\r\n {{getDateFormat(date?.date)}} <span *ngIf=\"activeDate === date?.date && !date?.isSelected\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date?.date && !date?.isSelected\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"!selectedDate[currentIdx].isSelected\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"selectedDate[currentIdx].isSelected\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li *ngIf=\"activeArray?.downTime > 0\" class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" <span *ngIf=\"activeArray?.speedTest\" >\r\n and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps</span>\r\n </span>. </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span *ngIf=\"activeArray?.primaryIssue\" class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">{{activeStream?.cameraNumber}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-5 px-2\"> \r\n <!-- <div class=\"rounded-2 overflow-hidden\">\r\n \r\n <span class=\"list-size\"> Camera Angle</span>\r\n <div class=\"mt-3\">\r\n <img *ngIf=\"angleChange && angleChange?.angleChangeImage\" class=\"w-100 mh-150px\" [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\" (error)=\"angleChange.angleChangeImage = null\">\r\n <img *ngIf=\"!angleChange?.angleChangeImage && activeStream?.thumbnailImage\" class=\"w-100 mh-150px\" [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\" (error)=\"activeStream.thumbnailImage = null\">\r\n </div>\r\n <div *ngIf=\"!activeStream?.thumbnailImage && !angleChange?.angleChangeImage\" class=\"w-100 h-200px rounded-3 overflow-hidden Nopreview align-content-center mt-3\">\r\n <div class=\"previewTitle text-center mb-5\">\r\n Preview not available\r\n </div>\r\n <div class=\"previewsubTitle fw-semibold\">\r\n The selected camera is not available at the moment.\r\n </div>\r\n </div>\r\n <div class=\"row p-0\" *ngIf=\"angleChange?.angleChangeImage\">\r\n <div class=\"col-md-6 m-0 pe-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Expected</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 m-0 ps-0\">\r\n <div class=\"d-flex justify-content-center align-items-center bg-light-primary py-3\">\r\n <span class=\"actualspan\">Actual</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"table-reponsive mt-5\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th class=\"text-center\">Excepted</th>\r\n <th class=\"text-center\">Actual</th>\r\n <th class=\"text-center\">Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>Camera Angle</td>\r\n <td *ngIf=\"angleChange\"><div class=\"align-content-center text-center align-items-center\">\r\n <img class=\"h-70px w-75 rounded-3\" [src]=\"angleChange?.expected\">\r\n </div></td>\r\n <td *ngIf=\"angleChange\"><div class=\"align-content-center text-center align-items-center\">\r\n <img class=\"h-70px w-75 rounded-3\" [src]=\"angleChange?.actual\">\r\n </div></td>\r\n <td *ngIf=\"!angleChange || !angleChange?.expected\">\r\n <div class=\"d-flex align-items-center text-align-center justify-content-center\">\r\n <div class=\"w-75 h-70px rounded-3 align-content-center Nopreview mt-3\">\r\n <div class=\"previewTitle text-center\">\r\n Preview not available\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"!angleChange || !angleChange?.actual\">\r\n <div class=\"d-flex align-items-center text-align-center justify-content-center\">\r\n <div class=\"w-75 h-70px rounded-3 align-content-center Nopreview mt-3\">\r\n <div class=\"previewTitle text-center\">\r\n Preview not available\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"!angleChange\" class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M22.25 11.0799V11.9999C22.2488 14.1563 21.5505 16.2545 20.2593 17.9817C18.9682 19.7088 17.1533 20.9723 15.0854 21.5838C13.0174 22.1952 10.8073 22.1218 8.78447 21.3744C6.76168 20.6271 5.03465 19.246 3.86096 17.4369C2.68727 15.6279 2.12979 13.4879 2.27168 11.3362C2.41356 9.18443 3.24721 7.13619 4.64828 5.49694C6.04935 3.85768 7.94279 2.71525 10.0462 2.24001C12.1496 1.76477 14.3503 1.9822 16.32 2.85986M22.25 3.99986L12.25 14.0099L9.25001 11.0099\" stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n <td *ngIf=\"angleChange\" class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"33\" height=\"32\" viewBox=\"0 0 33 32\" fill=\"none\">\r\n <path d=\"M16.25 28.1905C22.9827 28.1905 28.4405 22.7327 28.4405 16C28.4405 9.26743 22.9827 3.80957 16.25 3.80957C9.51743 3.80957 4.05957 9.26743 4.05957 16C4.05957 22.7327 9.51743 28.1905 16.25 28.1905Z\" stroke=\"#D92D20\" stroke-width=\"1.52381\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M11.6787 11.4287L20.8216 20.5716M20.8216 11.4287L11.6787 20.5716\" stroke=\"#D92D20\" stroke-width=\"1.52381\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n </tr>\r\n <tr>\r\n <td>Resolution</td>\r\n <td class=\"text-center\">{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <td class=\"text-center\">{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td class=\"text-center\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n <path d=\"M22.25 11.0799V11.9999C22.2488 14.1563 21.5505 16.2545 20.2593 17.9817C18.9682 19.7088 17.1533 20.9723 15.0854 21.5838C13.0174 22.1952 10.8073 22.1218 8.78447 21.3744C6.76168 20.6271 5.03465 19.246 3.86096 17.4369C2.68727 15.6279 2.12979 13.4879 2.27168 11.3362C2.41356 9.18443 3.24721 7.13619 4.64828 5.49694C6.04935 3.85768 7.94279 2.71525 10.0462 2.24001C12.1496 1.76477 14.3503 1.9822 16.32 2.85986M22.25 3.99986L12.25 14.0099L9.25001 11.0099\" stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream?.streamName === activeStream?.streamName? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header p-0 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list cursor-pointer text-decoration-underline\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\"q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 me-6 mb-3\">\r\n <div class=\"h-history-count\">Total : <span class=\"h-history-title\">{{successRate?.total}} {{successRate?.total > 1 ? 'Tickets' : 'Ticket'}}</span></div>\r\n </div>\r\n <div *ngIf=\"successRate?.successRate !== 'null' && successRate?.successRate > 0 && successRate?.successRate !== ''\" class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-count\">Accuracy : <span class=\"h-history-title\">{{successRate?.successRate}}%</span></div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \" (click)=\"openPopup()\">Close</button>\r\n <button [disabled]=\"activeArray?.downTime > 480\" type=\"button\"\r\n class=\"btn btn-primary rounded-3\"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to close the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}.actualspan{color:var(--Black, #101828);font-size:12px;font-weight:400;line-height:18px}.Nopreview{border:1px solid var(--Gray-500, #667085);background:var(--Gray-100, #F2F4F7);color:var(--Gray-500, #667085)}.Nopreview .previewTitle{font-size:10px;font-weight:700;line-height:20px}.Nopreview .previewsubTitle{text-align:center;font-size:12px;line-height:18px}\n"] }]
|
|
164
164
|
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i1.NgbActiveModal }, { type: i2.TicketsService }, { type: i0.ChangeDetectorRef }], propDecorators: { analyzereport: [{
|
|
165
165
|
type: Input
|
|
166
166
|
}], confirmationModal: [{
|
|
@@ -170,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
170
170
|
type: ViewChild,
|
|
171
171
|
args: ['ReconfirmationModal']
|
|
172
172
|
}] } });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy9hbmFseXplLXJlcG9ydC9hbmFseXplLXJlcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2FuYWx5emUtcmVwb3J0L2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFNBQVMsRUFBQyxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7QUFPMUIsTUFBTSxPQUFPLHNCQUFzQjtJQXFCaEI7SUFBOEI7SUFBbUM7SUFBK0I7SUFwQmpILFlBQVksQ0FBSztJQUNqQixVQUFVLENBQUs7SUFDZixVQUFVLEdBQU8sQ0FBQyxDQUFDO0lBQ1YsYUFBYSxDQUFLO0lBRVYsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDbEMsV0FBVyxHQUFtQixFQUFFLENBQUM7SUFFWCxpQkFBaUIsQ0FBTTtJQUNyQixtQkFBbUIsQ0FBTTtJQUMzRCxRQUFRLENBQTBCO0lBQ2hDLFVBQVUsQ0FBTTtJQUNoQixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLFdBQVcsQ0FBTTtJQUNqQixhQUFhLENBQU07SUFDbkIsWUFBWSxDQUFNO0lBQ2xCLFdBQVcsQ0FBTTtJQUNqQixVQUFVLEdBQVEsRUFBRSxDQUFDO0lBQ3JC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d0dBdEpVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLDJVQ2JuQyxxZ2pCQXFQRTs7NEZEeE9XLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7dUtBUXJCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS3dCLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ0ksbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsVmlld0NoaWxkLElucHV0LENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCwgTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFJhaXNlVGlja2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vcmFpc2UtdGlja2V0L3JhaXNlLXRpY2tldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYW5hbHl6ZS1yZXBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmFseXplLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5hbHl6ZVJlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc2VsZWN0ZWREYXRlOmFueTtcclxuICBhY3RpdmVEYXRlOmFueTtcclxuICBjdXJyZW50SWR4OmFueSA9IDA7XHJcbiAgQElucHV0KCkgYW5hbHl6ZXJlcG9ydDphbnk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG5AVmlld0NoaWxkKCdjb25maXJtYXRpb25Nb2RhbCcpIGNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbkBWaWV3Q2hpbGQoJ1JlY29uZmlybWF0aW9uTW9kYWwnKSBSZWNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbm1vZGFsUmVmOiBOZ2JNb2RhbFJlZiB8IHVuZGVmaW5lZDsgICBcclxuICBpc3N1ZWREYXRhOiBhbnk7XHJcbiAgYWN0aXZlQXJyYXk6IGFueSA9IFtdO1xyXG4gIGFuZ2xlQ2hhbmdlOiBhbnk7XHJcbiAgc3RyZWFtRGV0YWlsczogYW55O1xyXG4gIGFjdGl2ZVN0cmVhbTogYW55O1xyXG4gIHN1Y2Nlc3NSYXRlOiBhbnk7XHJcbiAgYW5nbGVJbWFnZTogYW55ID0gJyc7XHJcbiAgZGF5anMgPSBkYXlqc1xyXG4gIHNlbGVjdGVkVmFsdWU6IGFueTtcclxuY29uc3RydWN0b3IocHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwscHVibGljIGFjdGl2ZU1vZGFsOk5nYkFjdGl2ZU1vZGFsLHByaXZhdGUgc2VydmljZTpUaWNrZXRzU2VydmljZSxwcml2YXRlIGNkOkNoYW5nZURldGVjdG9yUmVmKXtcclxuXHJcbn1cclxubmdPbkluaXQoKXtcclxuICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5hbHl6ZXJlcG9ydD8uZGF0ZVJhbmdlPy5tYXAoKGl0ZW06YW55KSA9PiB7cmV0dXJuIHtkYXRlOml0ZW19fSk7XHJcbiAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5zZWxlY3RlZERhdGVbdGhpcy5jdXJyZW50SWR4XS5kYXRlO1xyXG4gIHRoaXMuZ2V0SXNzdWVzKCk7XHJcbn1cclxuXHJcbmhhbmRsZUNsaWNrKGk6YW55KSB7XHJcbiAgdGhpcy5jdXJyZW50SWR4ID0gaTtcclxuICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLmN1cnJlbnRJZHhdPy5kYXRlO1xyXG4gIHRoaXMuZ2V0SXNzdWVzKCk7XHJcbn1cclxuXHJcbmdldElzc3Vlcygpe1xyXG4gIGxldCBkYXRhID0ge1xyXG4gICAgZnJvbURhdGU6dGhpcy5zZWxlY3RlZERhdGVbMF0uZGF0ZSxcclxuICAgIHRvRGF0ZTp0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLnNlbGVjdGVkRGF0ZS5sZW5ndGggLSAxXS5kYXRlLFxyXG4gICAgc3RvcmVJZDp0aGlzLmFuYWx5emVyZXBvcnQ/LmZpbHRlcmVkU3RvcmVJZFxyXG4gIH1cclxuICB0aGlzLnNlcnZpY2UuZ2V0SW5mcmFJc3N1ZXMoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zdWNjZXNzUmF0ZSA9IHJlcz8uZGF0YT8uaGlnaENvdW50VGlja2V0RGV0YWlscztcclxuICAgICAgdGhpcy5zdHJlYW1EZXRhaWxzID0gcmVzPy5kYXRhPy5zdHJlYW1zO1xyXG4gICAgICB0aGlzLmFjdGl2ZVN0cmVhbSA9IHJlcz8uZGF0YT8uc3RyZWFtc1swXTtcclxuICAgICAgdGhpcy5pc3N1ZWREYXRhID0gcmVzPy5kYXRhPy5yZXN1bHQ7XHJcbiAgICAgIHRoaXMuYWN0aXZlQXJyYXkgPSB0aGlzLmlzc3VlZERhdGEuZmluZCgoaXRlbTphbnkpID0+IGl0ZW0/Lmlzc3VlRGF0ZSA9PT0gdGhpcy5hY3RpdmVEYXRlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZm9yRWFjaCgoaXRlbTphbnksaW5kZXg6YW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGlzc3VlRGF0ZSA9IHRoaXMuaXNzdWVkRGF0YS5maW5kKChpc3N1ZTphbnkpID0+IGlzc3VlLmlzc3VlRGF0ZSA9PSBpdGVtLmRhdGUpO1xyXG4gICAgICAgIGlmKGlzc3VlRGF0ZSAmJiBpc3N1ZURhdGU/LnByaW1hcnlJc3N1ZSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVbaW5kZXhdID0ge1xyXG4gICAgICAgICAgICBkYXRlOml0ZW0uZGF0ZSxcclxuICAgICAgICAgICAgc2hvd0ljb24gOnRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmdldENhbWVyYUFuZ2xlKClcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgIFxyXG4gICAgfSxcclxuICAgIGNvbXBsZXRlKCkge1xyXG5cclxuICAgIH0sXHJcbiAgfSlcclxufVxyXG5nZXRDYW1lcmFBbmdsZSgpe1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgXCJEYXRlXCI6IHRoaXMuYWN0aXZlRGF0ZSxcclxuICAgICAgICBcIlN0cmVhbU5hbWVcIjogdGhpcy5hY3RpdmVTdHJlYW0/LnN0cmVhbU5hbWUsXHJcbiAgICAgICAgXCJzdG9yZUlkXCI6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZFN0b3JlSWRcclxuICAgIH1cclxuICAgIHRoaXMuc2VydmljZS5nZXRTdHJlYW1BbmdsZUNoYW5nZShkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYocmVzICYmIHJlcy5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICB0aGlzLmFuZ2xlQ2hhbmdlID0gcmVzLmRhdGE7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmFuZ2xlQ2hhbmdlID0nJ1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgIFxyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZSgpIHtcclxuICBcclxuICAgICAgfSxcclxuICAgIH0pXHJcbn1cclxuZ2V0c3RyZWFtYmFzZWRBbmdsZSh2YWx1ZTphbnkpe1xyXG4gIHRoaXMuYWN0aXZlU3RyZWFtID0gdmFsdWU7XHJcbiAgdGhpcy5nZXRDYW1lcmFBbmdsZSgpXHJcbn1cclxuICByYWlzZVRpY2tldCgpe1xyXG4gICAgLy8gdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFJhaXNlVGlja2V0Q29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBzdG9yZUlkOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZmlsdGVyZWRTdG9yZUlkLFxyXG4gICAgICBjb3VudFR5cGU6dGhpcy5hbmFseXplcmVwb3J0Py5jb3VudFR5cGUsXHJcbiAgICAgIHN0b3JlTmFtZTp0aGlzLmFuYWx5emVyZXBvcnQ/LmZpbHRlcmVkU3RvcmUsXHJcbiAgICAgIGZlYXR1cmU6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZEZlYXR1cmUsXHJcbiAgICAgIGVtYWlsOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZW1haWwsXHJcbiAgICAgIGRhdGU6dGhpcy5hY3RpdmVEYXRlXHJcbiAgICB9IFxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IGRhdGE7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmKHJlc3VsdCA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVbdGhpcy5jdXJyZW50SWR4XS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50SWR4IDwgdGhpcy5zZWxlY3RlZERhdGU/Lmxlbmd0aCAtIDEgJiYgdGhpcy5jdXJyZW50SWR4ID49IDApIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudElkeCA9IHRoaXMuY3VycmVudElkeCArIDE7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZURhdGU9dGhpcy5zZWxlY3RlZERhdGVbdGhpcy5jdXJyZW50SWR4XS5kYXRlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ2V0SXNzdWVzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICBjbG9zZVRpY2tldCgpe1xyXG4gICAgdGhpcy5nZXRJc3N1ZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlW3RoaXMuY3VycmVudElkeF0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50SWR4IDwgdGhpcy5zZWxlY3RlZERhdGU/Lmxlbmd0aCAtIDEgJiYgdGhpcy5jdXJyZW50SWR4ID49IDApIHtcclxuICAgICAgdGhpcy5jdXJyZW50SWR4ID0gdGhpcy5jdXJyZW50SWR4ICsgMTtcclxuICAgICAgdGhpcy5hY3RpdmVEYXRlPXRoaXMuc2VsZWN0ZWREYXRlW3RoaXMuY3VycmVudElkeF0uZGF0ZVxyXG4gICAgfVxyXG4gIH1cclxuICBjb25maXJtU2F2ZSgpe1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuICB2aWV3TW9yZSgpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuUmVjb25maXJtYXRpb25Nb2RhbCwgeyBjZW50ZXJlZDogdHJ1ZSB9KTtcclxuICB9XHJcbiAgb3BlblBvcHVwKCl7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5jb25maXJtYXRpb25Nb2RhbCwgeyBjZW50ZXJlZDogdHJ1ZSB9KTtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgIH0pO1xyXG4gIH1cclxuICBjb25maXJtTW9yZSgpe1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlSW1hZ2VFcnJvcihldmVudDphbnkpe1xyXG4gICAgdGhpcy5hbmdsZUltYWdlID0gZXZlbnQ/LnR5cGU7XHJcbiAgfVxyXG4gIGdldERhdGVGb3JtYXQoZGF0ZTphbnkpe1xyXG4gICAgcmV0dXJuIHRoaXMuZGF5anMoZGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJylcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZCBweS0wIHNjcm9sbC15XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgZC1mbGV4IGZsZXgtc3RhcnQgZmxleC1jb2x1bW4gcC05IFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTc1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJQaWNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvZWRnZWFwcCBpY29uLnN2Z1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHctMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZnMtNCB0ZXh0LWdyYXktODAwIHRleHQtaG92ZXItcHJpbWFyeSBmdy1ib2xkIG1iLTAgdGl0bGUgY3Vyc29yLXBvaW50ZXJcIj5BbmFseXplIFJlcG9ydDwvYT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGl0bGUgcS1xdWVyeS10ZXh0XCI+WW91ciBRdWVyaWVzIHJlcG9ydGVkIGJlbG93IHN0b3JlcyBhcmUgZ290IHt7YW5hbHl6ZXJlcG9ydD8uY291bnRUeXBlfX0ge3thbmFseXplcmVwb3J0Py5maWx0ZXJlZEZlYXR1cmV9fSBvbiB7e2dldERhdGVGb3JtYXQoc2VsZWN0ZWREYXRlWzBdPy5kYXRlKX19IHRvXHJcbiAgICAgICAgICAgICAgICAgICAge3tnZXREYXRlRm9ybWF0KHNlbGVjdGVkRGF0ZVtzZWxlY3RlZERhdGUubGVuZ3RoIC0gMV0/LmRhdGUpfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwibmF2IG15LTMgdy0xMDAgbXQtNVwiPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGUgb2Ygc2VsZWN0ZWREYXRlO2xldCBpPWluZGV4XCIgY2xhc3M9XCJuYXYtaXRlbVwiPjxhIGRhdGEtYnMtdG9nZ2xlPVwidGFiXCIgW25nQ2xhc3NdPVwiYWN0aXZlRGF0ZSA9PT0gZGF0ZT8uZGF0ZSA/ICdhY3RpdmUnOicnXCIgIChjbGljayk9XCJoYW5kbGVDbGljayhpKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgYnRuIGJ0bi1zbSBidG4tY29sb3ItbXV0ZWQgYnRuLWFjdGl2ZSBmdy1ib2xkZXIgcHgtNSBtZS0xIHNob3dcIj5cclxuICAgICAgICAgICAgICAgICAgIHt7Z2V0RGF0ZUZvcm1hdChkYXRlPy5kYXRlKX19IDxzcGFuICpuZ0lmPVwiYWN0aXZlRGF0ZSA9PT0gZGF0ZT8uZGF0ZSAmJiAhZGF0ZT8uaXNTZWxlY3RlZFwiIGNsYXNzPVwibXgtMlwiPjxzdmcgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIHN0eWxlPVwibWl4LWJsZW5kLW1vZGU6bXVsdGlwbHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMC4yNVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHJ4PVwiMTBcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF84NzEzXzEwMzc5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4yNSA4VjEwTTEwLjI1IDEySDEwLjI1NU0xNS4yNSAxMEMxNS4yNSAxMi43NjE0IDEzLjAxMTQgMTUgMTAuMjUgMTVDNy40ODg1OCAxNSA1LjI1IDEyLjc2MTQgNS4yNSAxMEM1LjI1IDcuMjM4NTggNy40ODg1OCA1IDEwLjI1IDVDMTMuMDExNCA1IDE1LjI1IDcuMjM4NTggMTUuMjUgMTBaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzM0I1RkZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF84NzEzXzEwMzc5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg0LjI1IDQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWN0aXZlRGF0ZSAhPT0gZGF0ZT8uZGF0ZSAmJiAhZGF0ZT8uaXNTZWxlY3RlZFwiIGNsYXNzPVwibXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgc3R5bGU9XCJtaXgtYmxlbmQtbW9kZTptdWx0aXBseVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjI1XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgcng9XCIxMFwiIGZpbGw9XCIjRjJGNEY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzg3MTNfMTAzNzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjI1IDhWMTBNMTAuMjUgMTJIMTAuMjU1TTE1LjI1IDEwQzE1LjI1IDEyLjc2MTQgMTMuMDExNCAxNSAxMC4yNSAxNUM3LjQ4ODU4IDE1IDUuMjUgMTIuNzYxNCA1LjI1IDEwQzUuMjUgNy4yMzg1OCA3LjQ4ODU4IDUgMTAuMjUgNUMxMy4wMTE0IDUgMTUuMjUgNy4yMzg1OCAxNS4yNSAxMFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzg3MTNfMTAzNzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDQuMjUgNClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvYT48L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZERhdGVbY3VycmVudElkeF0uaXNTZWxlY3RlZFwiIGNsYXNzPVwibXktMyBtdC01XCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkRGF0ZVtjdXJyZW50SWR4XS5pc1NlbGVjdGVkXCIgY2xhc3M9XCJteS0zIG10LTVcIj5cclxuICAgICAgICAgICAgPGltZyBzdHlsZT1cIndpZHRoOjUwcHg7IGhlaWdodDo1MHB4XCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL1N1Y2Nlc3N0b2FzdC5wbmdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlQXJyYXlcIiBjbGFzcz1cInVsLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiYWN0aXZlQXJyYXk/LnByaW1hcnlJc3N1ZVwiIGNsYXNzPVwibGlzdC1zaXplIG15LTNcIj5UaGUgcHJpbWFyeSBpc3N1ZSB3YXMgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7YWN0aXZlQXJyYXk/LnByaW1hcnlJc3N1ZX19PC9zcGFuPiB3aGVyZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoZSA8c3BhbiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBhY3RpdmVBcnJheT8uc2Vjb25kYXJ5UmVhc29uIGxldCBsYXN0ID0gbGFzdFwiIGNsYXNzPVwiZnctYm9sZC03MDBcIj5kYXRhIDxzcGFuICpuZ0lmPVwiIWxhc3RcIj4sPC9zcGFuPjwvc3Bhbj4gd2FzIHRoZSBzZWNvbmRhcnkgY29uY2Vybi4gPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImFjdGl2ZUFycmF5Py5kb3duVGltZSA+IDBcIiBjbGFzcz1cImxpc3Qtc2l6ZSBteS0zXCI+U3RvcmUgRXhwZXJpZW5jZWQgYSBkb3dudGltZSBvZiA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+e3thY3RpdmVBcnJheT8uZG93blRpbWV9fSBtaW5zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVkIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e2FjdGl2ZUFycmF5Py5pc3N1ZURhdGV9fTwvc3Bhbj4gd2hlcmUgXCJOIEZpbGVzIExvc3RcIiA8c3BhbiAqbmdJZj1cImFjdGl2ZUFycmF5Py5zcGVlZFRlc3RcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgYW5kIHdhcyB1bmFibGUgdG8gc2VuZCB0byBvdXJcclxuICAgICAgICAgICAgICAgICAgICBjbG91ZCBkdWUgdG8gc3BlZWQgYmVpbmcgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7YWN0aXZlQXJyYXk/LnNwZWVkVGVzdH19IE1icHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPi4gIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxsaSBjbGFzcz1cImxpc3Qtc2l6ZSBteS0zXCI+V2Ugd2VyZSBhYmxlIHRvIGNhcHR1cmUgb25seSA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+MTAwIEZvb3RmYWxsczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICBkZXNwaXRlIHRoZSA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+SW50ZXJuZXQgc2xvdzwvc3Bhbj4gaXNzdWUgPC9saT4gLS0+XHJcblxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PiAgXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYy1sYWJlbCBmdy1ib2xkZXIgZnMtMyBtYi0xXCI+VGFuZ28gUHJlLVJlcXVpc2l0ZSA8c3BhbiAqbmdJZj1cImFjdGl2ZUFycmF5Py5wcmltYXJ5SXNzdWVcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgbXMtMlwiPldhcm5pbmc8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpc3Qtc2l6ZVwiPnt7YWN0aXZlU3RyZWFtPy5jYW1lcmFOdW1iZXJ9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBteC01IHB4LTJcIj4gXHJcbiAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3VuZGVkLTIgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsaXN0LXNpemVcIj4gQ2FtZXJhIEFuZ2xlPC9zcGFuPlxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJhbmdsZUNoYW5nZSAmJiBhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZVwiIGNsYXNzPVwidy0xMDAgbWgtMTUwcHhcIiBbc3JjXT1cImFuZ2xlQ2hhbmdlPy5hbmdsZUNoYW5nZUltYWdlID8gYW5nbGVDaGFuZ2U/LmFuZ2xlQ2hhbmdlSW1hZ2UgOmFjdGl2ZVN0cmVhbT8udGh1bWJuYWlsSW1hZ2VcIiAoZXJyb3IpPVwiYW5nbGVDaGFuZ2UuYW5nbGVDaGFuZ2VJbWFnZSA9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIiFhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZSAmJiBhY3RpdmVTdHJlYW0/LnRodW1ibmFpbEltYWdlXCIgY2xhc3M9XCJ3LTEwMCBtaC0xNTBweFwiIFtzcmNdPVwiYW5nbGVDaGFuZ2U/LmFuZ2xlQ2hhbmdlSW1hZ2UgPyBhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZSA6YWN0aXZlU3RyZWFtPy50aHVtYm5haWxJbWFnZVwiIChlcnJvcik9XCJhY3RpdmVTdHJlYW0udGh1bWJuYWlsSW1hZ2UgPSBudWxsXCI+XHJcbiAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFhY3RpdmVTdHJlYW0/LnRodW1ibmFpbEltYWdlICYmICFhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZVwiIGNsYXNzPVwidy0xMDAgaC0yMDBweCByb3VuZGVkLTMgb3ZlcmZsb3ctaGlkZGVuIE5vcHJldmlldyBhbGlnbi1jb250ZW50LWNlbnRlciBtdC0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3VGl0bGUgdGV4dC1jZW50ZXIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgUHJldmlldyBub3QgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXdzdWJUaXRsZSBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgVGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwLTBcIiAqbmdJZj1cImFuZ2xlQ2hhbmdlPy5hbmdsZUNoYW5nZUltYWdlXCI+XHJcbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtLTAgcGUtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBiZy1saWdodC1wcmltYXJ5IHB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdHVhbHNwYW5cIj5FeHBlY3RlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG0tMCBwcy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGJnLWxpZ2h0LXByaW1hcnkgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0dWFsc3BhblwiPkFjdHVhbDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgIDwvZGl2PiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXBvbnNpdmUgbXQtNVwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImJvdHRvbS1ib3JkZXIgdy0xMDBcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD5JbnN0YW5jZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyXCI+RXhjZXB0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyXCI+QWN0dWFsPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlJlc3VsdDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPkNhbWVyYSBBbmdsZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiYW5nbGVDaGFuZ2VcIj48ZGl2IGNsYXNzPVwiYWxpZ24tY29udGVudC1jZW50ZXIgdGV4dC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJoLTcwcHggdy03NSByb3VuZGVkLTNcIiBbc3JjXT1cImFuZ2xlQ2hhbmdlPy5leHBlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiYW5nbGVDaGFuZ2VcIj48ZGl2IGNsYXNzPVwiYWxpZ24tY29udGVudC1jZW50ZXIgdGV4dC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJoLTcwcHggdy03NSByb3VuZGVkLTNcIiBbc3JjXT1cImFuZ2xlQ2hhbmdlPy5hY3R1YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFhbmdsZUNoYW5nZSB8fCAhYW5nbGVDaGFuZ2U/LmV4cGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHRleHQtYWxpZ24tY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTc1IGgtNzBweCByb3VuZGVkLTMgYWxpZ24tY29udGVudC1jZW50ZXIgTm9wcmV2aWV3IG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3VGl0bGUgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmV2aWV3IG5vdCBhdmFpbGFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhYW5nbGVDaGFuZ2UgfHwgIWFuZ2xlQ2hhbmdlPy5hY3R1YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1hbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctNzUgaC03MHB4IHJvdW5kZWQtMyBhbGlnbi1jb250ZW50LWNlbnRlciBOb3ByZXZpZXcgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXdUaXRsZSB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXZpZXcgbm90IGF2YWlsYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFhbmdsZUNoYW5nZVwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj48c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI1IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMi4yNSAxMS4wNzk5VjExLjk5OTlDMjIuMjQ4OCAxNC4xNTYzIDIxLjU1MDUgMTYuMjU0NSAyMC4yNTkzIDE3Ljk4MTdDMTguOTY4MiAxOS43MDg4IDE3LjE1MzMgMjAuOTcyMyAxNS4wODU0IDIxLjU4MzhDMTMuMDE3NCAyMi4xOTUyIDEwLjgwNzMgMjIuMTIxOCA4Ljc4NDQ3IDIxLjM3NDRDNi43NjE2OCAyMC42MjcxIDUuMDM0NjUgMTkuMjQ2IDMuODYwOTYgMTcuNDM2OUMyLjY4NzI3IDE1LjYyNzkgMi4xMjk3OSAxMy40ODc5IDIuMjcxNjggMTEuMzM2MkMyLjQxMzU2IDkuMTg0NDMgMy4yNDcyMSA3LjEzNjE5IDQuNjQ4MjggNS40OTY5NEM2LjA0OTM1IDMuODU3NjggNy45NDI3OSAyLjcxNTI1IDEwLjA0NjIgMi4yNDAwMUMxMi4xNDk2IDEuNzY0NzcgMTQuMzUwMyAxLjk4MjIgMTYuMzIgMi44NTk4Nk0yMi4yNSAzLjk5OTg2TDEyLjI1IDE0LjAwOTlMOS4yNTAwMSAxMS4wMDk5XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImFuZ2xlQ2hhbmdlXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzNcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzMgMzJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2LjI1IDI4LjE5MDVDMjIuOTgyNyAyOC4xOTA1IDI4LjQ0MDUgMjIuNzMyNyAyOC40NDA1IDE2QzI4LjQ0MDUgOS4yNjc0MyAyMi45ODI3IDMuODA5NTcgMTYuMjUgMy44MDk1N0M5LjUxNzQzIDMuODA5NTcgNC4wNTk1NyA5LjI2NzQzIDQuMDU5NTcgMTZDNC4wNTk1NyAyMi43MzI3IDkuNTE3NDMgMjguMTkwNSAxNi4yNSAyOC4xOTA1WlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjUyMzgxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjY3ODcgMTEuNDI4N0wyMC44MjE2IDIwLjU3MTZNMjAuODIxNiAxMS40Mjg3TDExLjY3ODcgMjAuNTcxNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjUyMzgxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlJlc29sdXRpb248L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+e3thbmdsZUNoYW5nZT8ucmVzb2x1dGlvbiA/IGFuZ2xlQ2hhbmdlPy5yZXNvbHV0aW9uIDogJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPnt7YW5nbGVDaGFuZ2U/LnJlc29sdXRpb24gPyBhbmdsZUNoYW5nZT8ucmVzb2x1dGlvbiA6ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGQgKm5nSWY9XCJhbmdsZUNoYW5nZT8uYW5nbGVjaGFuZ2VcIj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbmZhaWxlZC5zdmdcIj48L3RkPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjUgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIyLjI1IDExLjA3OTlWMTEuOTk5OUMyMi4yNDg4IDE0LjE1NjMgMjEuNTUwNSAxNi4yNTQ1IDIwLjI1OTMgMTcuOTgxN0MxOC45NjgyIDE5LjcwODggMTcuMTUzMyAyMC45NzIzIDE1LjA4NTQgMjEuNTgzOEMxMy4wMTc0IDIyLjE5NTIgMTAuODA3MyAyMi4xMjE4IDguNzg0NDcgMjEuMzc0NEM2Ljc2MTY4IDIwLjYyNzEgNS4wMzQ2NSAxOS4yNDYgMy44NjA5NiAxNy40MzY5QzIuNjg3MjcgMTUuNjI3OSAyLjEyOTc5IDEzLjQ4NzkgMi4yNzE2OCAxMS4zMzYyQzIuNDEzNTYgOS4xODQ0MyAzLjI0NzIxIDcuMTM2MTkgNC42NDgyOCA1LjQ5Njk0QzYuMDQ5MzUgMy44NTc2OCA3Ljk0Mjc5IDIuNzE1MjUgMTAuMDQ2MiAyLjI0MDAxQzEyLjE0OTYgMS43NjQ3NyAxNC4zNTAzIDEuOTgyMiAxNi4zMiAyLjg1OTg2TTIyLjI1IDMuOTk5ODZMMTIuMjUgMTQuMDA5OUw5LjI1MDAxIDExLjAwOTlcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPkRvd250aW1lPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+NC4wMCBBTTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjkuMDAgQU08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbmRhbmdlci5zdmdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj4gLS0+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3RyZWFtRGV0YWlscz8ubGVuZ3RoXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMTBcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3RyZWFtIG9mIHN0cmVhbURldGFpbHNcIiBbbmdDbGFzc109XCJzdHJlYW0/LnN0cmVhbU5hbWUgPT09IGFjdGl2ZVN0cmVhbT8uc3RyZWFtTmFtZT8gJ2JnLWRhcmsnIDogJ2JnLW9wYWNpdHktMjUnXCIgY2xhc3M9XCJ3LTEwcHggaC0xMHB4IHJvdW5kZWQtNSBiZy1kYXJrIGN1cnNvci1wb2ludGVyIG14LTNcIiAoY2xpY2spPVwiZ2V0c3RyZWFtYmFzZWRBbmdsZShzdHJlYW0pXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMCBib3JkZXItMCBwdC01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImMtbGFiZWwtdGl0bGUgbWItMVwiPlF1ZXJpZXMgSGlzdG9yeTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidmlld01vcmUoKVwiIGNsYXNzPVwiY2FyZC10b29sYmFyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByaW1hcnktbGlzdCBjdXJzb3ItcG9pbnRlciB0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lXCI+VmlldyBtb3JlIERldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJxLXF1ZXJ5LXRleHRcIj5Gcm9tIHRoZSBkYXRlIG9mIGluc3RhbGxhdGlvbiB0aWxsIHRvZGF5IHRoZSBiZWxvdyBxdWVyaWVzIHN1Y2Nlc3MgcmF0ZSBoYXMgYmVlbiBtYWludGFpbmVkPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgcHktM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG1pbi13LTEyNXB4IHB5LTMgbWUtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1oaXN0b3J5LWNvdW50XCI+VG90YWwgOiA8c3BhbiBjbGFzcz1cImgtaGlzdG9yeS10aXRsZVwiPnt7c3VjY2Vzc1JhdGU/LnRvdGFsfX0ge3tzdWNjZXNzUmF0ZT8udG90YWwgPiAxID8gJ1RpY2tldHMnIDogJ1RpY2tldCd9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWNjZXNzUmF0ZT8uc3VjY2Vzc1JhdGUgIT09ICdudWxsJyAmJiBzdWNjZXNzUmF0ZT8uc3VjY2Vzc1JhdGUgPiAwICYmIHN1Y2Nlc3NSYXRlPy5zdWNjZXNzUmF0ZSAhPT0gJydcIiBjbGFzcz1cIiBtaW4tdy0xMjVweCBweS0zIHB4LTQgbWUtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1oaXN0b3J5LWNvdW50XCI+QWNjdXJhY3kgOiA8c3BhbiBjbGFzcz1cImgtaGlzdG9yeS10aXRsZVwiPnt7c3VjY2Vzc1JhdGU/LnN1Y2Nlc3NSYXRlfX0lPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiIG1pbi13LTEyNXB4IHB5LTMgcHgtNCBtZS02IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGZzLTYgdGV4dC1ncmF5LTUwMFwiPkVhcm5pbmdzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0yIGZ3LWJvbGRlclwiPjQ1MDAkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiKGN1cnJlbnRJZHggKyAxKSAhPT0gc2VsZWN0ZWREYXRlLmxlbmd0aFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIFwiIChjbGljayk9XCJjbG9zZVRpY2tldCgpXCI+QWNjZXB0ICYgQ2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIoY3VycmVudElkeCArIDEpID09PSBzZWxlY3RlZERhdGUubGVuZ3RoXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTMgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgXCIgKGNsaWNrKT1cIm9wZW5Qb3B1cCgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmFpc2VUaWNrZXQoKVwiPlJhaXNlIGEgVGlja2V0PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbmZpcm1hdGlvbk1vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJwLThcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL2N1c3RvbXBvcHVwLUljb25zL2Rhbmdlci1pY29uLnN2Z1wiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCIgbXQtNVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhbWVyYURldGFpbCBmdy1ib2xkXCI+VW5zYXZlZCBDaGFuZ2VzPC9zcGFuPlxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHN1Yi1oZWFkZXIgZnctYm9sZC00MDBcIj5EbyB5b3Ugd2FudCB0byBjbG9zZSB0aGUgdGlja2V0cz88L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTEwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZSB3LTUwIG1lLTJcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTUwIG1zLTJcIiAoY2xpY2spPVwiY29uZmlybVNhdmUoKTttb2RhbC5jbG9zZSgpXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNSZWNvbmZpcm1hdGlvbk1vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJwLThcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL2N1c3RvbXBvcHVwLUljb25zL2Rhbmdlci1pY29uLnN2Z1wiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCIgbXQtNVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhbWVyYURldGFpbCBmdy1ib2xkXCI+QXJlIHlvdSBzdXJlLCB3YW50IHRvIHZpZXcgbW9yZSBkZXRhaWxzPzwvc3Bhbj5cclxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBzdWItaGVhZGVyIGZ3LWJvbGQtNDAwXCI+SWYgc28geW91IHdpbGwgcmVkaXJlY3QgdG8gUXVlcmllcyBzdW1tYXJ5ICYgY2Fu4oCZdCBhYmxlIHRvIGNvbWUgYmFjayB0byB0aGUgc2NyZWVuLjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIHctNTAgbWUtMlwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctNTAgbXMtMlwiIChjbGljayk9XCJjb25maXJtTW9yZSgpO21vZGFsLmRpc21pc3MoKVwiPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgIl19
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy9hbmFseXplLXJlcG9ydC9hbmFseXplLXJlcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2FuYWx5emUtcmVwb3J0L2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFNBQVMsRUFBQyxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7QUFPMUIsTUFBTSxPQUFPLHNCQUFzQjtJQXFCaEI7SUFBOEI7SUFBbUM7SUFBK0I7SUFwQmpILFlBQVksQ0FBSztJQUNqQixVQUFVLENBQUs7SUFDZixVQUFVLEdBQU8sQ0FBQyxDQUFDO0lBQ1YsYUFBYSxDQUFLO0lBRVYsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDbEMsV0FBVyxHQUFtQixFQUFFLENBQUM7SUFFWCxpQkFBaUIsQ0FBTTtJQUNyQixtQkFBbUIsQ0FBTTtJQUMzRCxRQUFRLENBQTBCO0lBQ2hDLFVBQVUsQ0FBTTtJQUNoQixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLFdBQVcsQ0FBTTtJQUNqQixhQUFhLENBQU07SUFDbkIsWUFBWSxDQUFNO0lBQ2xCLFdBQVcsQ0FBTTtJQUNqQixVQUFVLEdBQVEsRUFBRSxDQUFDO0lBQ3JC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d0dBdEpVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLDJVQ2JuQyxnampCQXFQRTs7NEZEeE9XLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7dUtBUXJCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS3dCLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ0ksbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsVmlld0NoaWxkLElucHV0LENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCwgTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFJhaXNlVGlja2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vcmFpc2UtdGlja2V0L3JhaXNlLXRpY2tldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYW5hbHl6ZS1yZXBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmFseXplLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5hbHl6ZVJlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc2VsZWN0ZWREYXRlOmFueTtcclxuICBhY3RpdmVEYXRlOmFueTtcclxuICBjdXJyZW50SWR4OmFueSA9IDA7XHJcbiAgQElucHV0KCkgYW5hbHl6ZXJlcG9ydDphbnk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG5AVmlld0NoaWxkKCdjb25maXJtYXRpb25Nb2RhbCcpIGNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbkBWaWV3Q2hpbGQoJ1JlY29uZmlybWF0aW9uTW9kYWwnKSBSZWNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbm1vZGFsUmVmOiBOZ2JNb2RhbFJlZiB8IHVuZGVmaW5lZDsgICBcclxuICBpc3N1ZWREYXRhOiBhbnk7XHJcbiAgYWN0aXZlQXJyYXk6IGFueSA9IFtdO1xyXG4gIGFuZ2xlQ2hhbmdlOiBhbnk7XHJcbiAgc3RyZWFtRGV0YWlsczogYW55O1xyXG4gIGFjdGl2ZVN0cmVhbTogYW55O1xyXG4gIHN1Y2Nlc3NSYXRlOiBhbnk7XHJcbiAgYW5nbGVJbWFnZTogYW55ID0gJyc7XHJcbiAgZGF5anMgPSBkYXlqc1xyXG4gIHNlbGVjdGVkVmFsdWU6IGFueTtcclxuY29uc3RydWN0b3IocHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwscHVibGljIGFjdGl2ZU1vZGFsOk5nYkFjdGl2ZU1vZGFsLHByaXZhdGUgc2VydmljZTpUaWNrZXRzU2VydmljZSxwcml2YXRlIGNkOkNoYW5nZURldGVjdG9yUmVmKXtcclxuXHJcbn1cclxubmdPbkluaXQoKXtcclxuICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5hbHl6ZXJlcG9ydD8uZGF0ZVJhbmdlPy5tYXAoKGl0ZW06YW55KSA9PiB7cmV0dXJuIHtkYXRlOml0ZW19fSk7XHJcbiAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5zZWxlY3RlZERhdGVbdGhpcy5jdXJyZW50SWR4XS5kYXRlO1xyXG4gIHRoaXMuZ2V0SXNzdWVzKCk7XHJcbn1cclxuXHJcbmhhbmRsZUNsaWNrKGk6YW55KSB7XHJcbiAgdGhpcy5jdXJyZW50SWR4ID0gaTtcclxuICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLmN1cnJlbnRJZHhdPy5kYXRlO1xyXG4gIHRoaXMuZ2V0SXNzdWVzKCk7XHJcbn1cclxuXHJcbmdldElzc3Vlcygpe1xyXG4gIGxldCBkYXRhID0ge1xyXG4gICAgZnJvbURhdGU6dGhpcy5zZWxlY3RlZERhdGVbMF0uZGF0ZSxcclxuICAgIHRvRGF0ZTp0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLnNlbGVjdGVkRGF0ZS5sZW5ndGggLSAxXS5kYXRlLFxyXG4gICAgc3RvcmVJZDp0aGlzLmFuYWx5emVyZXBvcnQ/LmZpbHRlcmVkU3RvcmVJZFxyXG4gIH1cclxuICB0aGlzLnNlcnZpY2UuZ2V0SW5mcmFJc3N1ZXMoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zdWNjZXNzUmF0ZSA9IHJlcz8uZGF0YT8uaGlnaENvdW50VGlja2V0RGV0YWlscztcclxuICAgICAgdGhpcy5zdHJlYW1EZXRhaWxzID0gcmVzPy5kYXRhPy5zdHJlYW1zO1xyXG4gICAgICB0aGlzLmFjdGl2ZVN0cmVhbSA9IHJlcz8uZGF0YT8uc3RyZWFtc1swXTtcclxuICAgICAgdGhpcy5pc3N1ZWREYXRhID0gcmVzPy5kYXRhPy5yZXN1bHQ7XHJcbiAgICAgIHRoaXMuYWN0aXZlQXJyYXkgPSB0aGlzLmlzc3VlZERhdGEuZmluZCgoaXRlbTphbnkpID0+IGl0ZW0/Lmlzc3VlRGF0ZSA9PT0gdGhpcy5hY3RpdmVEYXRlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZm9yRWFjaCgoaXRlbTphbnksaW5kZXg6YW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGlzc3VlRGF0ZSA9IHRoaXMuaXNzdWVkRGF0YS5maW5kKChpc3N1ZTphbnkpID0+IGlzc3VlLmlzc3VlRGF0ZSA9PSBpdGVtLmRhdGUpO1xyXG4gICAgICAgIGlmKGlzc3VlRGF0ZSAmJiBpc3N1ZURhdGU/LnByaW1hcnlJc3N1ZSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVbaW5kZXhdID0ge1xyXG4gICAgICAgICAgICBkYXRlOml0ZW0uZGF0ZSxcclxuICAgICAgICAgICAgc2hvd0ljb24gOnRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmdldENhbWVyYUFuZ2xlKClcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgIFxyXG4gICAgfSxcclxuICAgIGNvbXBsZXRlKCkge1xyXG5cclxuICAgIH0sXHJcbiAgfSlcclxufVxyXG5nZXRDYW1lcmFBbmdsZSgpe1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgXCJEYXRlXCI6IHRoaXMuYWN0aXZlRGF0ZSxcclxuICAgICAgICBcIlN0cmVhbU5hbWVcIjogdGhpcy5hY3RpdmVTdHJlYW0/LnN0cmVhbU5hbWUsXHJcbiAgICAgICAgXCJzdG9yZUlkXCI6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZFN0b3JlSWRcclxuICAgIH1cclxuICAgIHRoaXMuc2VydmljZS5nZXRTdHJlYW1BbmdsZUNoYW5nZShkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYocmVzICYmIHJlcy5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICB0aGlzLmFuZ2xlQ2hhbmdlID0gcmVzLmRhdGE7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmFuZ2xlQ2hhbmdlID0nJ1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgIFxyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZSgpIHtcclxuICBcclxuICAgICAgfSxcclxuICAgIH0pXHJcbn1cclxuZ2V0c3RyZWFtYmFzZWRBbmdsZSh2YWx1ZTphbnkpe1xyXG4gIHRoaXMuYWN0aXZlU3RyZWFtID0gdmFsdWU7XHJcbiAgdGhpcy5nZXRDYW1lcmFBbmdsZSgpXHJcbn1cclxuICByYWlzZVRpY2tldCgpe1xyXG4gICAgLy8gdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFJhaXNlVGlja2V0Q29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBzdG9yZUlkOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZmlsdGVyZWRTdG9yZUlkLFxyXG4gICAgICBjb3VudFR5cGU6dGhpcy5hbmFseXplcmVwb3J0Py5jb3VudFR5cGUsXHJcbiAgICAgIHN0b3JlTmFtZTp0aGlzLmFuYWx5emVyZXBvcnQ/LmZpbHRlcmVkU3RvcmUsXHJcbiAgICAgIGZlYXR1cmU6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZEZlYXR1cmUsXHJcbiAgICAgIGVtYWlsOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZW1haWwsXHJcbiAgICAgIGRhdGU6dGhpcy5hY3RpdmVEYXRlXHJcbiAgICB9IFxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IGRhdGE7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmKHJlc3VsdCA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVbdGhpcy5jdXJyZW50SWR4XS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50SWR4IDwgdGhpcy5zZWxlY3RlZERhdGU/Lmxlbmd0aCAtIDEgJiYgdGhpcy5jdXJyZW50SWR4ID49IDApIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudElkeCA9IHRoaXMuY3VycmVudElkeCArIDE7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZURhdGU9dGhpcy5zZWxlY3RlZERhdGVbdGhpcy5jdXJyZW50SWR4XS5kYXRlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ2V0SXNzdWVzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICBjbG9zZVRpY2tldCgpe1xyXG4gICAgdGhpcy5nZXRJc3N1ZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlW3RoaXMuY3VycmVudElkeF0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50SWR4IDwgdGhpcy5zZWxlY3RlZERhdGU/Lmxlbmd0aCAtIDEgJiYgdGhpcy5jdXJyZW50SWR4ID49IDApIHtcclxuICAgICAgdGhpcy5jdXJyZW50SWR4ID0gdGhpcy5jdXJyZW50SWR4ICsgMTtcclxuICAgICAgdGhpcy5hY3RpdmVEYXRlPXRoaXMuc2VsZWN0ZWREYXRlW3RoaXMuY3VycmVudElkeF0uZGF0ZVxyXG4gICAgfVxyXG4gIH1cclxuICBjb25maXJtU2F2ZSgpe1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuICB2aWV3TW9yZSgpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuUmVjb25maXJtYXRpb25Nb2RhbCwgeyBjZW50ZXJlZDogdHJ1ZSB9KTtcclxuICB9XHJcbiAgb3BlblBvcHVwKCl7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5jb25maXJtYXRpb25Nb2RhbCwgeyBjZW50ZXJlZDogdHJ1ZSB9KTtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgIH0pO1xyXG4gIH1cclxuICBjb25maXJtTW9yZSgpe1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlSW1hZ2VFcnJvcihldmVudDphbnkpe1xyXG4gICAgdGhpcy5hbmdsZUltYWdlID0gZXZlbnQ/LnR5cGU7XHJcbiAgfVxyXG4gIGdldERhdGVGb3JtYXQoZGF0ZTphbnkpe1xyXG4gICAgcmV0dXJuIHRoaXMuZGF5anMoZGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJylcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZCBweS0wIHNjcm9sbC15XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgZC1mbGV4IGZsZXgtc3RhcnQgZmxleC1jb2x1bW4gcC05IFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTc1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJQaWNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvZWRnZWFwcCBpY29uLnN2Z1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHctMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZnMtNCB0ZXh0LWdyYXktODAwIHRleHQtaG92ZXItcHJpbWFyeSBmdy1ib2xkIG1iLTAgdGl0bGUgY3Vyc29yLXBvaW50ZXJcIj5BbmFseXplIFJlcG9ydDwvYT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGl0bGUgcS1xdWVyeS10ZXh0XCI+WW91ciBRdWVyaWVzIHJlcG9ydGVkIGJlbG93IHN0b3JlcyBhcmUgZ290IHt7YW5hbHl6ZXJlcG9ydD8uY291bnRUeXBlfX0ge3thbmFseXplcmVwb3J0Py5maWx0ZXJlZEZlYXR1cmV9fSBvbiB7e2dldERhdGVGb3JtYXQoc2VsZWN0ZWREYXRlWzBdPy5kYXRlKX19IHRvXHJcbiAgICAgICAgICAgICAgICAgICAge3tnZXREYXRlRm9ybWF0KHNlbGVjdGVkRGF0ZVtzZWxlY3RlZERhdGUubGVuZ3RoIC0gMV0/LmRhdGUpfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwibmF2IG15LTMgdy0xMDAgbXQtNVwiPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGUgb2Ygc2VsZWN0ZWREYXRlO2xldCBpPWluZGV4XCIgY2xhc3M9XCJuYXYtaXRlbVwiPjxhIGRhdGEtYnMtdG9nZ2xlPVwidGFiXCIgW25nQ2xhc3NdPVwiYWN0aXZlRGF0ZSA9PT0gZGF0ZT8uZGF0ZSA/ICdhY3RpdmUnOicnXCIgIChjbGljayk9XCJoYW5kbGVDbGljayhpKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgYnRuIGJ0bi1zbSBidG4tY29sb3ItbXV0ZWQgYnRuLWFjdGl2ZSBmdy1ib2xkZXIgcHgtNSBtZS0xIHNob3dcIj5cclxuICAgICAgICAgICAgICAgICAgIHt7Z2V0RGF0ZUZvcm1hdChkYXRlPy5kYXRlKX19IDxzcGFuICpuZ0lmPVwiYWN0aXZlRGF0ZSA9PT0gZGF0ZT8uZGF0ZSAmJiAhZGF0ZT8uaXNTZWxlY3RlZFwiIGNsYXNzPVwibXgtMlwiPjxzdmcgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIHN0eWxlPVwibWl4LWJsZW5kLW1vZGU6bXVsdGlwbHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMC4yNVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHJ4PVwiMTBcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF84NzEzXzEwMzc5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4yNSA4VjEwTTEwLjI1IDEySDEwLjI1NU0xNS4yNSAxMEMxNS4yNSAxMi43NjE0IDEzLjAxMTQgMTUgMTAuMjUgMTVDNy40ODg1OCAxNSA1LjI1IDEyLjc2MTQgNS4yNSAxMEM1LjI1IDcuMjM4NTggNy40ODg1OCA1IDEwLjI1IDVDMTMuMDExNCA1IDE1LjI1IDcuMjM4NTggMTUuMjUgMTBaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzM0I1RkZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF84NzEzXzEwMzc5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg0LjI1IDQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWN0aXZlRGF0ZSAhPT0gZGF0ZT8uZGF0ZSAmJiAhZGF0ZT8uaXNTZWxlY3RlZFwiIGNsYXNzPVwibXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgc3R5bGU9XCJtaXgtYmxlbmQtbW9kZTptdWx0aXBseVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjI1XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgcng9XCIxMFwiIGZpbGw9XCIjRjJGNEY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzg3MTNfMTAzNzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjI1IDhWMTBNMTAuMjUgMTJIMTAuMjU1TTE1LjI1IDEwQzE1LjI1IDEyLjc2MTQgMTMuMDExNCAxNSAxMC4yNSAxNUM3LjQ4ODU4IDE1IDUuMjUgMTIuNzYxNCA1LjI1IDEwQzUuMjUgNy4yMzg1OCA3LjQ4ODU4IDUgMTAuMjUgNUMxMy4wMTE0IDUgMTUuMjUgNy4yMzg1OCAxNS4yNSAxMFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzg3MTNfMTAzNzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDQuMjUgNClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvYT48L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZERhdGVbY3VycmVudElkeF0uaXNTZWxlY3RlZFwiIGNsYXNzPVwibXktMyBtdC01XCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkRGF0ZVtjdXJyZW50SWR4XS5pc1NlbGVjdGVkXCIgY2xhc3M9XCJteS0zIG10LTVcIj5cclxuICAgICAgICAgICAgPGltZyBzdHlsZT1cIndpZHRoOjUwcHg7IGhlaWdodDo1MHB4XCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL1N1Y2Nlc3N0b2FzdC5wbmdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlQXJyYXlcIiBjbGFzcz1cInVsLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiYWN0aXZlQXJyYXk/LnByaW1hcnlJc3N1ZVwiIGNsYXNzPVwibGlzdC1zaXplIG15LTNcIj5UaGUgcHJpbWFyeSBpc3N1ZSB3YXMgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7YWN0aXZlQXJyYXk/LnByaW1hcnlJc3N1ZX19PC9zcGFuPiB3aGVyZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoZSA8c3BhbiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBhY3RpdmVBcnJheT8uc2Vjb25kYXJ5UmVhc29uIGxldCBsYXN0ID0gbGFzdFwiIGNsYXNzPVwiZnctYm9sZC03MDBcIj5kYXRhIDxzcGFuICpuZ0lmPVwiIWxhc3RcIj4sPC9zcGFuPjwvc3Bhbj4gd2FzIHRoZSBzZWNvbmRhcnkgY29uY2Vybi4gPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImFjdGl2ZUFycmF5Py5kb3duVGltZSA+IDBcIiBjbGFzcz1cImxpc3Qtc2l6ZSBteS0zXCI+U3RvcmUgRXhwZXJpZW5jZWQgYSBkb3dudGltZSBvZiA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+e3thY3RpdmVBcnJheT8uZG93blRpbWV9fSBtaW5zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVkIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e2FjdGl2ZUFycmF5Py5pc3N1ZURhdGV9fTwvc3Bhbj4gd2hlcmUgXCJOIEZpbGVzIExvc3RcIiA8c3BhbiAqbmdJZj1cImFjdGl2ZUFycmF5Py5zcGVlZFRlc3RcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgYW5kIHdhcyB1bmFibGUgdG8gc2VuZCB0byBvdXJcclxuICAgICAgICAgICAgICAgICAgICBjbG91ZCBkdWUgdG8gc3BlZWQgYmVpbmcgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7YWN0aXZlQXJyYXk/LnNwZWVkVGVzdH19IE1icHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPi4gIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxsaSBjbGFzcz1cImxpc3Qtc2l6ZSBteS0zXCI+V2Ugd2VyZSBhYmxlIHRvIGNhcHR1cmUgb25seSA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+MTAwIEZvb3RmYWxsczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICBkZXNwaXRlIHRoZSA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+SW50ZXJuZXQgc2xvdzwvc3Bhbj4gaXNzdWUgPC9saT4gLS0+XHJcblxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PiAgXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYy1sYWJlbCBmdy1ib2xkZXIgZnMtMyBtYi0xXCI+VGFuZ28gUHJlLVJlcXVpc2l0ZSA8c3BhbiAqbmdJZj1cImFjdGl2ZUFycmF5Py5wcmltYXJ5SXNzdWVcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgbXMtMlwiPldhcm5pbmc8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpc3Qtc2l6ZVwiPnt7YWN0aXZlU3RyZWFtPy5jYW1lcmFOdW1iZXJ9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBteC01IHB4LTJcIj4gXHJcbiAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3VuZGVkLTIgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsaXN0LXNpemVcIj4gQ2FtZXJhIEFuZ2xlPC9zcGFuPlxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJhbmdsZUNoYW5nZSAmJiBhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZVwiIGNsYXNzPVwidy0xMDAgbWgtMTUwcHhcIiBbc3JjXT1cImFuZ2xlQ2hhbmdlPy5hbmdsZUNoYW5nZUltYWdlID8gYW5nbGVDaGFuZ2U/LmFuZ2xlQ2hhbmdlSW1hZ2UgOmFjdGl2ZVN0cmVhbT8udGh1bWJuYWlsSW1hZ2VcIiAoZXJyb3IpPVwiYW5nbGVDaGFuZ2UuYW5nbGVDaGFuZ2VJbWFnZSA9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIiFhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZSAmJiBhY3RpdmVTdHJlYW0/LnRodW1ibmFpbEltYWdlXCIgY2xhc3M9XCJ3LTEwMCBtaC0xNTBweFwiIFtzcmNdPVwiYW5nbGVDaGFuZ2U/LmFuZ2xlQ2hhbmdlSW1hZ2UgPyBhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZSA6YWN0aXZlU3RyZWFtPy50aHVtYm5haWxJbWFnZVwiIChlcnJvcik9XCJhY3RpdmVTdHJlYW0udGh1bWJuYWlsSW1hZ2UgPSBudWxsXCI+XHJcbiAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFhY3RpdmVTdHJlYW0/LnRodW1ibmFpbEltYWdlICYmICFhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZVwiIGNsYXNzPVwidy0xMDAgaC0yMDBweCByb3VuZGVkLTMgb3ZlcmZsb3ctaGlkZGVuIE5vcHJldmlldyBhbGlnbi1jb250ZW50LWNlbnRlciBtdC0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3VGl0bGUgdGV4dC1jZW50ZXIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgUHJldmlldyBub3QgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXdzdWJUaXRsZSBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgVGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwLTBcIiAqbmdJZj1cImFuZ2xlQ2hhbmdlPy5hbmdsZUNoYW5nZUltYWdlXCI+XHJcbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtLTAgcGUtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBiZy1saWdodC1wcmltYXJ5IHB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdHVhbHNwYW5cIj5FeHBlY3RlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG0tMCBwcy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGJnLWxpZ2h0LXByaW1hcnkgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0dWFsc3BhblwiPkFjdHVhbDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgIDwvZGl2PiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXBvbnNpdmUgbXQtNVwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImJvdHRvbS1ib3JkZXIgdy0xMDBcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD5JbnN0YW5jZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyXCI+RXhjZXB0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyXCI+QWN0dWFsPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlJlc3VsdDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPkNhbWVyYSBBbmdsZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiYW5nbGVDaGFuZ2VcIj48ZGl2IGNsYXNzPVwiYWxpZ24tY29udGVudC1jZW50ZXIgdGV4dC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJoLTcwcHggdy03NSByb3VuZGVkLTNcIiBbc3JjXT1cImFuZ2xlQ2hhbmdlPy5leHBlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiYW5nbGVDaGFuZ2VcIj48ZGl2IGNsYXNzPVwiYWxpZ24tY29udGVudC1jZW50ZXIgdGV4dC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJoLTcwcHggdy03NSByb3VuZGVkLTNcIiBbc3JjXT1cImFuZ2xlQ2hhbmdlPy5hY3R1YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFhbmdsZUNoYW5nZSB8fCAhYW5nbGVDaGFuZ2U/LmV4cGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHRleHQtYWxpZ24tY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTc1IGgtNzBweCByb3VuZGVkLTMgYWxpZ24tY29udGVudC1jZW50ZXIgTm9wcmV2aWV3IG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3VGl0bGUgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmV2aWV3IG5vdCBhdmFpbGFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhYW5nbGVDaGFuZ2UgfHwgIWFuZ2xlQ2hhbmdlPy5hY3R1YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1hbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctNzUgaC03MHB4IHJvdW5kZWQtMyBhbGlnbi1jb250ZW50LWNlbnRlciBOb3ByZXZpZXcgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXdUaXRsZSB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXZpZXcgbm90IGF2YWlsYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFhbmdsZUNoYW5nZVwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj48c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI1IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMi4yNSAxMS4wNzk5VjExLjk5OTlDMjIuMjQ4OCAxNC4xNTYzIDIxLjU1MDUgMTYuMjU0NSAyMC4yNTkzIDE3Ljk4MTdDMTguOTY4MiAxOS43MDg4IDE3LjE1MzMgMjAuOTcyMyAxNS4wODU0IDIxLjU4MzhDMTMuMDE3NCAyMi4xOTUyIDEwLjgwNzMgMjIuMTIxOCA4Ljc4NDQ3IDIxLjM3NDRDNi43NjE2OCAyMC42MjcxIDUuMDM0NjUgMTkuMjQ2IDMuODYwOTYgMTcuNDM2OUMyLjY4NzI3IDE1LjYyNzkgMi4xMjk3OSAxMy40ODc5IDIuMjcxNjggMTEuMzM2MkMyLjQxMzU2IDkuMTg0NDMgMy4yNDcyMSA3LjEzNjE5IDQuNjQ4MjggNS40OTY5NEM2LjA0OTM1IDMuODU3NjggNy45NDI3OSAyLjcxNTI1IDEwLjA0NjIgMi4yNDAwMUMxMi4xNDk2IDEuNzY0NzcgMTQuMzUwMyAxLjk4MjIgMTYuMzIgMi44NTk4Nk0yMi4yNSAzLjk5OTg2TDEyLjI1IDE0LjAwOTlMOS4yNTAwMSAxMS4wMDk5XCIgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImFuZ2xlQ2hhbmdlXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzNcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzMgMzJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2LjI1IDI4LjE5MDVDMjIuOTgyNyAyOC4xOTA1IDI4LjQ0MDUgMjIuNzMyNyAyOC40NDA1IDE2QzI4LjQ0MDUgOS4yNjc0MyAyMi45ODI3IDMuODA5NTcgMTYuMjUgMy44MDk1N0M5LjUxNzQzIDMuODA5NTcgNC4wNTk1NyA5LjI2NzQzIDQuMDU5NTcgMTZDNC4wNTk1NyAyMi43MzI3IDkuNTE3NDMgMjguMTkwNSAxNi4yNSAyOC4xOTA1WlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjUyMzgxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjY3ODcgMTEuNDI4N0wyMC44MjE2IDIwLjU3MTZNMjAuODIxNiAxMS40Mjg3TDExLjY3ODcgMjAuNTcxNlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjUyMzgxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlJlc29sdXRpb248L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+e3thbmdsZUNoYW5nZT8ucmVzb2x1dGlvbiA/IGFuZ2xlQ2hhbmdlPy5yZXNvbHV0aW9uIDogJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPnt7YW5nbGVDaGFuZ2U/LnJlc29sdXRpb24gPyBhbmdsZUNoYW5nZT8ucmVzb2x1dGlvbiA6ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGQgKm5nSWY9XCJhbmdsZUNoYW5nZT8uYW5nbGVjaGFuZ2VcIj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbmZhaWxlZC5zdmdcIj48L3RkPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjUgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIyLjI1IDExLjA3OTlWMTEuOTk5OUMyMi4yNDg4IDE0LjE1NjMgMjEuNTUwNSAxNi4yNTQ1IDIwLjI1OTMgMTcuOTgxN0MxOC45NjgyIDE5LjcwODggMTcuMTUzMyAyMC45NzIzIDE1LjA4NTQgMjEuNTgzOEMxMy4wMTc0IDIyLjE5NTIgMTAuODA3MyAyMi4xMjE4IDguNzg0NDcgMjEuMzc0NEM2Ljc2MTY4IDIwLjYyNzEgNS4wMzQ2NSAxOS4yNDYgMy44NjA5NiAxNy40MzY5QzIuNjg3MjcgMTUuNjI3OSAyLjEyOTc5IDEzLjQ4NzkgMi4yNzE2OCAxMS4zMzYyQzIuNDEzNTYgOS4xODQ0MyAzLjI0NzIxIDcuMTM2MTkgNC42NDgyOCA1LjQ5Njk0QzYuMDQ5MzUgMy44NTc2OCA3Ljk0Mjc5IDIuNzE1MjUgMTAuMDQ2MiAyLjI0MDAxQzEyLjE0OTYgMS43NjQ3NyAxNC4zNTAzIDEuOTgyMiAxNi4zMiAyLjg1OTg2TTIyLjI1IDMuOTk5ODZMMTIuMjUgMTQuMDA5OUw5LjI1MDAxIDExLjAwOTlcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPkRvd250aW1lPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+NC4wMCBBTTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjkuMDAgQU08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbmRhbmdlci5zdmdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj4gLS0+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3RyZWFtRGV0YWlscz8ubGVuZ3RoXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMTBcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3RyZWFtIG9mIHN0cmVhbURldGFpbHNcIiBbbmdDbGFzc109XCJzdHJlYW0/LnN0cmVhbU5hbWUgPT09IGFjdGl2ZVN0cmVhbT8uc3RyZWFtTmFtZT8gJ2JnLWRhcmsnIDogJ2JnLW9wYWNpdHktMjUnXCIgY2xhc3M9XCJ3LTEwcHggaC0xMHB4IHJvdW5kZWQtNSBiZy1kYXJrIGN1cnNvci1wb2ludGVyIG14LTNcIiAoY2xpY2spPVwiZ2V0c3RyZWFtYmFzZWRBbmdsZShzdHJlYW0pXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMCBib3JkZXItMCBwdC01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImMtbGFiZWwtdGl0bGUgbWItMVwiPlF1ZXJpZXMgSGlzdG9yeTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidmlld01vcmUoKVwiIGNsYXNzPVwiY2FyZC10b29sYmFyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByaW1hcnktbGlzdCBjdXJzb3ItcG9pbnRlciB0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lXCI+VmlldyBtb3JlIERldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJxLXF1ZXJ5LXRleHRcIj5Gcm9tIHRoZSBkYXRlIG9mIGluc3RhbGxhdGlvbiB0aWxsIHRvZGF5IHRoZSBiZWxvdyBxdWVyaWVzIHN1Y2Nlc3MgcmF0ZSBoYXMgYmVlbiBtYWludGFpbmVkPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgcHktM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG1pbi13LTEyNXB4IHB5LTMgbWUtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1oaXN0b3J5LWNvdW50XCI+VG90YWwgOiA8c3BhbiBjbGFzcz1cImgtaGlzdG9yeS10aXRsZVwiPnt7c3VjY2Vzc1JhdGU/LnRvdGFsfX0ge3tzdWNjZXNzUmF0ZT8udG90YWwgPiAxID8gJ1RpY2tldHMnIDogJ1RpY2tldCd9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWNjZXNzUmF0ZT8uc3VjY2Vzc1JhdGUgIT09ICdudWxsJyAmJiBzdWNjZXNzUmF0ZT8uc3VjY2Vzc1JhdGUgPiAwICYmIHN1Y2Nlc3NSYXRlPy5zdWNjZXNzUmF0ZSAhPT0gJydcIiBjbGFzcz1cIiBtaW4tdy0xMjVweCBweS0zIHB4LTQgbWUtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1oaXN0b3J5LWNvdW50XCI+QWNjdXJhY3kgOiA8c3BhbiBjbGFzcz1cImgtaGlzdG9yeS10aXRsZVwiPnt7c3VjY2Vzc1JhdGU/LnN1Y2Nlc3NSYXRlfX0lPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiIG1pbi13LTEyNXB4IHB5LTMgcHgtNCBtZS02IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGZzLTYgdGV4dC1ncmF5LTUwMFwiPkVhcm5pbmdzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0yIGZ3LWJvbGRlclwiPjQ1MDAkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiKGN1cnJlbnRJZHggKyAxKSAhPT0gc2VsZWN0ZWREYXRlLmxlbmd0aFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIFwiIChjbGljayk9XCJjbG9zZVRpY2tldCgpXCI+QWNjZXB0ICYgQ2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIoY3VycmVudElkeCArIDEpID09PSBzZWxlY3RlZERhdGUubGVuZ3RoXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTMgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgXCIgKGNsaWNrKT1cIm9wZW5Qb3B1cCgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImFjdGl2ZUFycmF5Py5kb3duVGltZSA+IDQ4MFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHJvdW5kZWQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJhaXNlVGlja2V0KClcIj5SYWlzZSBhIFRpY2tldDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb25maXJtYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC04XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9kYW5nZXItaWNvbi5zdmdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYW1lcmFEZXRhaWwgZnctYm9sZFwiPlVuc2F2ZWQgQ2hhbmdlczwvc3Bhbj5cclxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBzdWItaGVhZGVyIGZ3LWJvbGQtNDAwXCI+RG8geW91IHdhbnQgdG8gY2xvc2UgdGhlIHRpY2tldHM/PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgdy01MCBtZS0yXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MCBtcy0yXCIgKGNsaWNrKT1cImNvbmZpcm1TYXZlKCk7bW9kYWwuY2xvc2UoKVwiPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjUmVjb25maXJtYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC04XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9kYW5nZXItaWNvbi5zdmdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYW1lcmFEZXRhaWwgZnctYm9sZFwiPkFyZSB5b3Ugc3VyZSwgd2FudCB0byB2aWV3IG1vcmUgZGV0YWlscz88L3NwYW4+XHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgc3ViLWhlYWRlciBmdy1ib2xkLTQwMFwiPklmIHNvIHlvdSB3aWxsIHJlZGlyZWN0IHRvIFF1ZXJpZXMgc3VtbWFyeSAmIGNhbuKAmXQgYWJsZSB0byBjb21lIGJhY2sgdG8gdGhlIHNjcmVlbi48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTEwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZSB3LTUwIG1lLTJcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTUwIG1zLTJcIiAoY2xpY2spPVwiY29uZmlybU1vcmUoKTttb2RhbC5kaXNtaXNzKClcIj5Db25maXJtPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gICJdfQ==
|