tango-app-ui-store-ticket-infra 3.0.26-dev → 3.0.28-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 +3 -3
- package/esm2022/lib/components/raise-ticket/raise-ticket.component.mjs +5 -4
- package/esm2022/lib/components/summary-infra/summary-infra.component.mjs +106 -0
- package/esm2022/lib/components/tango-store-infra/tango-store-infra.component.mjs +14 -6
- package/esm2022/lib/services/tickets.service.mjs +4 -1
- package/esm2022/lib/tango-store-infra.module.mjs +4 -3
- package/fesm2022/tango-app-ui-store-ticket-infra.mjs +140 -30
- package/fesm2022/tango-app-ui-store-ticket-infra.mjs.map +1 -1
- package/lib/components/summary-infra/summary-infra.component.d.ts +32 -0
- package/lib/components/tango-store-infra/tango-store-infra.component.d.ts +2 -0
- package/lib/services/tickets.service.d.ts +1 -0
- package/lib/tango-store-infra.module.d.ts +8 -7
- package/package.json +1 -1
|
@@ -156,11 +156,11 @@ export class AnalyzeReportComponent {
|
|
|
156
156
|
return this.dayjs(date).format('DD-MM-YYYY');
|
|
157
157
|
}
|
|
158
158
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", 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.10", 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 && activeArray.length > 0\" 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\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</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\">Success Rate : <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 type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</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"] }] });
|
|
159
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", 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\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</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\">Success Rate : <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 type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</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
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", 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 && activeArray.length > 0\" 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\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</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\">Success Rate : <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 type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</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\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</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\">Success Rate : <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 type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</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.10", ngImpo
|
|
|
170
170
|
type: ViewChild,
|
|
171
171
|
args: ['ReconfirmationModal']
|
|
172
172
|
}] } });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy9hbmFseXplLXJlcG9ydC9hbmFseXplLXJlcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2FuYWx5emUtcmVwb3J0L2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFNBQVMsRUFBQyxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7QUFPMUIsTUFBTSxPQUFPLHNCQUFzQjtJQXFCaEI7SUFBOEI7SUFBbUM7SUFBK0I7SUFwQmpILFlBQVksQ0FBSztJQUNqQixVQUFVLENBQUs7SUFDZixVQUFVLEdBQU8sQ0FBQyxDQUFDO0lBQ1YsYUFBYSxDQUFLO0lBRVYsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDbEMsV0FBVyxHQUFtQixFQUFFLENBQUM7SUFFWCxpQkFBaUIsQ0FBTTtJQUNyQixtQkFBbUIsQ0FBTTtJQUMzRCxRQUFRLENBQTBCO0lBQ2hDLFVBQVUsQ0FBTTtJQUNoQixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLFdBQVcsQ0FBTTtJQUNqQixhQUFhLENBQU07SUFDbkIsWUFBWSxDQUFNO0lBQ2xCLFdBQVcsQ0FBTTtJQUNqQixVQUFVLEdBQVEsRUFBRSxDQUFDO0lBQ3JC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d0dBdEpVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLDJVQ2JuQyw4NGlCQW1QRTs7NEZEdE9XLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7dUtBUXJCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS3dCLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ0ksbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsVmlld0NoaWxkLElucHV0LENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCwgTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFJhaXNlVGlja2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vcmFpc2UtdGlja2V0L3JhaXNlLXRpY2tldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYW5hbHl6ZS1yZXBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmFseXplLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5hbHl6ZVJlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc2VsZWN0ZWREYXRlOmFueTtcclxuICBhY3RpdmVEYXRlOmFueTtcclxuICBjdXJyZW50SWR4OmFueSA9IDA7XHJcbiAgQElucHV0KCkgYW5hbHl6ZXJlcG9ydDphbnk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG5AVmlld0NoaWxkKCdjb25maXJtYXRpb25Nb2RhbCcpIGNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbkBWaWV3Q2hpbGQoJ1JlY29uZmlybWF0aW9uTW9kYWwnKSBSZWNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbm1vZGFsUmVmOiBOZ2JNb2RhbFJlZiB8IHVuZGVmaW5lZDsgICBcclxuICBpc3N1ZWREYXRhOiBhbnk7XHJcbiAgYWN0aXZlQXJyYXk6IGFueSA9IFtdO1xyXG4gIGFuZ2xlQ2hhbmdlOiBhbnk7XHJcbiAgc3RyZWFtRGV0YWlsczogYW55O1xyXG4gIGFjdGl2ZVN0cmVhbTogYW55O1xyXG4gIHN1Y2Nlc3NSYXRlOiBhbnk7XHJcbiAgYW5nbGVJbWFnZTogYW55ID0gJyc7XHJcbiAgZGF5anMgPSBkYXlqc1xyXG4gIHNlbGVjdGVkVmFsdWU6IGFueTtcclxuY29uc3RydWN0b3IocHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwscHVibGljIGFjdGl2ZU1vZGFsOk5nYkFjdGl2ZU1vZGFsLHByaXZhdGUgc2VydmljZTpUaWNrZXRzU2VydmljZSxwcml2YXRlIGNkOkNoYW5nZURldGVjdG9yUmVmKXtcclxuXHJcbn1cclxubmdPbkluaXQoKXtcclxuICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5hbHl6ZXJlcG9ydD8uZGF0ZVJhbmdlPy5tYXAoKGl0ZW06YW55KSA9PiB7cmV0dXJuIHtkYXRlOml0ZW19fSk7XHJcbiAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5zZWxlY3RlZERhdGVbdGhpcy5jdXJyZW50SWR4XS5kYXRlO1xyXG4gIHRoaXMuZ2V0SXNzdWVzKCk7XHJcbn1cclxuXHJcbmhhbmRsZUNsaWNrKGk6YW55KSB7XHJcbiAgdGhpcy5jdXJyZW50SWR4ID0gaTtcclxuICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLmN1cnJlbnRJZHhdPy5kYXRlO1xyXG4gIHRoaXMuZ2V0SXNzdWVzKCk7XHJcbn1cclxuXHJcbmdldElzc3Vlcygpe1xyXG4gIGxldCBkYXRhID0ge1xyXG4gICAgZnJvbURhdGU6dGhpcy5zZWxlY3RlZERhdGVbMF0uZGF0ZSxcclxuICAgIHRvRGF0ZTp0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLnNlbGVjdGVkRGF0ZS5sZW5ndGggLSAxXS5kYXRlLFxyXG4gICAgc3RvcmVJZDp0aGlzLmFuYWx5emVyZXBvcnQ/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+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkRGF0ZVtjdXJyZW50SWR4XS5pc1NlbGVjdGVkXCIgY2xhc3M9XCJteS0zIG10LTVcIj5cclxuICAgICAgICAgICAgPGltZyBzdHlsZT1cIndpZHRoOjUwcHg7IGhlaWdodDo1MHB4XCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL1N1Y2Nlc3N0b2FzdC5wbmdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlQXJyYXkgJiYgYWN0aXZlQXJyYXkubGVuZ3RoID4gMFwiIGNsYXNzPVwidWwtbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJhY3RpdmVBcnJheT8ucHJpbWFyeUlzc3VlXCIgY2xhc3M9XCJsaXN0LXNpemUgbXktM1wiPlRoZSBwcmltYXJ5IGlzc3VlIHdhcyA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+e3thY3RpdmVBcnJheT8ucHJpbWFyeUlzc3VlfX08L3NwYW4+IHdoZXJlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlIDxzcGFuICpuZ0Zvcj1cImxldCBkYXRhIG9mIGFjdGl2ZUFycmF5Py5zZWNvbmRhcnlSZWFzb24gbGV0IGxhc3QgPSBsYXN0XCIgY2xhc3M9XCJmdy1ib2xkLTcwMFwiPmRhdGEgPHNwYW4gKm5nSWY9XCIhbGFzdFwiPiw8L3NwYW4+PC9zcGFuPiB3YXMgdGhlIHNlY29uZGFyeSBjb25jZXJuLiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiYWN0aXZlQXJyYXk/LmRvd25UaW1lID4gMFwiIGNsYXNzPVwibGlzdC1zaXplIG15LTNcIj5TdG9yZSBFeHBlcmllbmNlZCBhIGRvd250aW1lIG9mIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e2FjdGl2ZUFycmF5Py5kb3duVGltZX19IG1pbnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0ZWQgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7YWN0aXZlQXJyYXk/Lmlzc3VlRGF0ZX19PC9zcGFuPiB3aGVyZSBcIk4gRmlsZXMgTG9zdFwiIGFuZCB3YXMgdW5hYmxlIHRvIHNlbmQgdG8gb3VyXHJcbiAgICAgICAgICAgICAgICAgICAgY2xvdWQgZHVlIHRvIHNwZWVkIGJlaW5nIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e2FjdGl2ZUFycmF5Py5zcGVlZFRlc3R9fSBNYnBzLjwvc3Bhbj4gPC9saT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGxpIGNsYXNzPVwibGlzdC1zaXplIG15LTNcIj5XZSB3ZXJlIGFibGUgdG8gY2FwdHVyZSBvbmx5IDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj4xMDAgRm9vdGZhbGxzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIGRlc3BpdGUgdGhlIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj5JbnRlcm5ldCBzbG93PC9zcGFuPiBpc3N1ZSA8L2xpPiAtLT5cclxuXHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+ICBcclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjLWxhYmVsIGZ3LWJvbGRlciBmcy0zIG1iLTFcIj5UYW5nbyBQcmUtUmVxdWlzaXRlIDxzcGFuICpuZ0lmPVwiYWN0aXZlQXJyYXk/LnByaW1hcnlJc3N1ZVwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtd2FybmluZyBtcy0yXCI+V2FybmluZzwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC1zaXplXCI+e3thY3RpdmVTdHJlYW0/LmNhbWVyYU51bWJlcn19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IG14LTUgcHgtMlwiPiBcclxuICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdW5kZWQtMiBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICBcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImxpc3Qtc2l6ZVwiPiBDYW1lcmEgQW5nbGU8L3NwYW4+XHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImFuZ2xlQ2hhbmdlICYmIGFuZ2xlQ2hhbmdlPy5hbmdsZUNoYW5nZUltYWdlXCIgY2xhc3M9XCJ3LTEwMCBtaC0xNTBweFwiIFtzcmNdPVwiYW5nbGVDaGFuZ2U/LmFuZ2xlQ2hhbmdlSW1hZ2UgPyBhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZSA6YWN0aXZlU3RyZWFtPy50aHVtYm5haWxJbWFnZVwiIChlcnJvcik9XCJhbmdsZUNoYW5nZS5hbmdsZUNoYW5nZUltYWdlID0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiIWFuZ2xlQ2hhbmdlPy5hbmdsZUNoYW5nZUltYWdlICYmIGFjdGl2ZVN0cmVhbT8udGh1bWJuYWlsSW1hZ2VcIiBjbGFzcz1cInctMTAwIG1oLTE1MHB4XCIgW3NyY109XCJhbmdsZUNoYW5nZT8uYW5nbGVDaGFuZ2VJbWFnZSA/IGFuZ2xlQ2hhbmdlPy5hbmdsZUNoYW5nZUltYWdlIDphY3RpdmVTdHJlYW0/LnRodW1ibmFpbEltYWdlXCIgKGVycm9yKT1cImFjdGl2ZVN0cmVhbS50aHVtYm5haWxJbWFnZSA9IG51bGxcIj5cclxuICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFjdGl2ZVN0cmVhbT8udGh1bWJuYWlsSW1hZ2UgJiYgIWFuZ2xlQ2hhbmdlPy5hbmdsZUNoYW5nZUltYWdlXCIgY2xhc3M9XCJ3LTEwMCBoLTIwMHB4IHJvdW5kZWQtMyBvdmVyZmxvdy1oaWRkZW4gTm9wcmV2aWV3IGFsaWduLWNvbnRlbnQtY2VudGVyIG10LTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXdUaXRsZSB0ZXh0LWNlbnRlciBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICBQcmV2aWV3IG5vdCBhdmFpbGFibGVcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlld3N1YlRpdGxlIGZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICBUaGUgc2VsZWN0ZWQgY2FtZXJhIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIG1vbWVudC5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHAtMFwiICpuZ0lmPVwiYW5nbGVDaGFuZ2U/LmFuZ2xlQ2hhbmdlSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG0tMCBwZS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGJnLWxpZ2h0LXByaW1hcnkgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0dWFsc3BhblwiPkV4cGVjdGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbS0wIHBzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgYmctbGlnaHQtcHJpbWFyeSBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3R1YWxzcGFuXCI+QWN0dWFsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgPC9kaXY+IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlcG9uc2l2ZSBtdC01XCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiYm90dG9tLWJvcmRlciB3LTEwMFwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPkluc3RhbmNlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5FeGNlcHRlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5BY3R1YWw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyXCI+UmVzdWx0PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+Q2FtZXJhIEFuZ2xlPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJhbmdsZUNoYW5nZVwiPjxkaXYgY2xhc3M9XCJhbGlnbi1jb250ZW50LWNlbnRlciB0ZXh0LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImgtNzBweCB3LTc1IHJvdW5kZWQtM1wiIFtzcmNdPVwiYW5nbGVDaGFuZ2U/LmV4cGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJhbmdsZUNoYW5nZVwiPjxkaXYgY2xhc3M9XCJhbGlnbi1jb250ZW50LWNlbnRlciB0ZXh0LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImgtNzBweCB3LTc1IHJvdW5kZWQtM1wiIFtzcmNdPVwiYW5nbGVDaGFuZ2U/LmFjdHVhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWFuZ2xlQ2hhbmdlIHx8ICFhbmdsZUNoYW5nZT8uZXhwZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1hbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctNzUgaC03MHB4IHJvdW5kZWQtMyBhbGlnbi1jb250ZW50LWNlbnRlciBOb3ByZXZpZXcgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXdUaXRsZSB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXZpZXcgbm90IGF2YWlsYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFhbmdsZUNoYW5nZSB8fCAhYW5nbGVDaGFuZ2U/LmFjdHVhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWFsaWduLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy03NSBoLTcwcHggcm91bmRlZC0zIGFsaWduLWNvbnRlbnQtY2VudGVyIE5vcHJldmlldyBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlld1RpdGxlIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJldmlldyBub3QgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWFuZ2xlQ2hhbmdlXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjUgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIyLjI1IDExLjA3OTlWMTEuOTk5OUMyMi4yNDg4IDE0LjE1NjMgMjEuNTUwNSAxNi4yNTQ1IDIwLjI1OTMgMTcuOTgxN0MxOC45NjgyIDE5LjcwODggMTcuMTUzMyAyMC45NzIzIDE1LjA4NTQgMjEuNTgzOEMxMy4wMTc0IDIyLjE5NTIgMTAuODA3MyAyMi4xMjE4IDguNzg0NDcgMjEuMzc0NEM2Ljc2MTY4IDIwLjYyNzEgNS4wMzQ2NSAxOS4yNDYgMy44NjA5NiAxNy40MzY5QzIuNjg3MjcgMTUuNjI3OSAyLjEyOTc5IDEzLjQ4NzkgMi4yNzE2OCAxMS4zMzYyQzIuNDEzNTYgOS4xODQ0MyAzLjI0NzIxIDcuMTM2MTkgNC42NDgyOCA1LjQ5Njk0QzYuMDQ5MzUgMy44NTc2OCA3Ljk0Mjc5IDIuNzE1MjUgMTAuMDQ2MiAyLjI0MDAxQzEyLjE0OTYgMS43NjQ3NyAxNC4zNTAzIDEuOTgyMiAxNi4zMiAyLjg1OTg2TTIyLjI1IDMuOTk5ODZMMTIuMjUgMTQuMDA5OUw5LjI1MDAxIDExLjAwOTlcIiBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiYW5nbGVDaGFuZ2VcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+PHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzM1wiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMyAzMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYuMjUgMjguMTkwNUMyMi45ODI3IDI4LjE5MDUgMjguNDQwNSAyMi43MzI3IDI4LjQ0MDUgMTZDMjguNDQwNSA5LjI2NzQzIDIyLjk4MjcgMy44MDk1NyAxNi4yNSAzLjgwOTU3QzkuNTE3NDMgMy44MDk1NyA0LjA1OTU3IDkuMjY3NDMgNC4wNTk1NyAxNkM0LjA1OTU3IDIyLjczMjcgOS41MTc0MyAyOC4xOTA1IDE2LjI1IDI4LjE5MDVaXCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNTIzODFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNjc4NyAxMS40Mjg3TDIwLjgyMTYgMjAuNTcxNk0yMC44MjE2IDExLjQyODdMMTEuNjc4NyAyMC41NzE2XCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNTIzODFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+UmVzb2x1dGlvbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57e2FuZ2xlQ2hhbmdlPy5yZXNvbHV0aW9uID8gYW5nbGVDaGFuZ2U/LnJlc29sdXRpb24gOiAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+e3thbmdsZUNoYW5nZT8ucmVzb2x1dGlvbiA/IGFuZ2xlQ2hhbmdlPy5yZXNvbHV0aW9uIDogJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDx0ZCAqbmdJZj1cImFuZ2xlQ2hhbmdlPy5hbmdsZWNoYW5nZVwiPjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2UvdmVyaWZpY2F0aW9uZmFpbGVkLnN2Z1wiPjwvdGQ+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+PHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNSAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjIuMjUgMTEuMDc5OVYxMS45OTk5QzIyLjI0ODggMTQuMTU2MyAyMS41NTA1IDE2LjI1NDUgMjAuMjU5MyAxNy45ODE3QzE4Ljk2ODIgMTkuNzA4OCAxNy4xNTMzIDIwLjk3MjMgMTUuMDg1NCAyMS41ODM4QzEzLjAxNzQgMjIuMTk1MiAxMC44MDczIDIyLjEyMTggOC43ODQ0NyAyMS4zNzQ0QzYuNzYxNjggMjAuNjI3MSA1LjAzNDY1IDE5LjI0NiAzLjg2MDk2IDE3LjQzNjlDMi42ODcyNyAxNS42Mjc5IDIuMTI5NzkgMTMuNDg3OSAyLjI3MTY4IDExLjMzNjJDMi40MTM1NiA5LjE4NDQzIDMuMjQ3MjEgNy4xMzYxOSA0LjY0ODI4IDUuNDk2OTRDNi4wNDkzNSAzLjg1NzY4IDcuOTQyNzkgMi43MTUyNSAxMC4wNDYyIDIuMjQwMDFDMTIuMTQ5NiAxLjc2NDc3IDE0LjM1MDMgMS45ODIyIDE2LjMyIDIuODU5ODZNMjIuMjUgMy45OTk4NkwxMi4yNSAxNC4wMDk5TDkuMjUwMDEgMTEuMDA5OVwiIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+RG93bnRpbWU8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD40LjAwIEFNPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+OS4wMCBBTTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2UvdmVyaWZpY2F0aW9uZGFuZ2VyLnN2Z1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPiAtLT5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdHJlYW1EZXRhaWxzPy5sZW5ndGhcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xMFwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdHJlYW0gb2Ygc3RyZWFtRGV0YWlsc1wiIFtuZ0NsYXNzXT1cInN0cmVhbT8uc3RyZWFtTmFtZSA9PT0gYWN0aXZlU3RyZWFtPy5zdHJlYW1OYW1lPyAnYmctZGFyaycgOiAnYmctb3BhY2l0eS0yNSdcIiBjbGFzcz1cInctMTBweCBoLTEwcHggcm91bmRlZC01IGJnLWRhcmsgY3Vyc29yLXBvaW50ZXIgbXgtM1wiIChjbGljayk9XCJnZXRzdHJlYW1iYXNlZEFuZ2xlKHN0cmVhbSlcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0wIGJvcmRlci0wIHB0LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYy1sYWJlbC10aXRsZSBtYi0xXCI+UXVlcmllcyBIaXN0b3J5PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ2aWV3TW9yZSgpXCIgY2xhc3M9XCJjYXJkLXRvb2xiYXIgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJpbWFyeS1saXN0IGN1cnNvci1wb2ludGVyIHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmVcIj5WaWV3IG1vcmUgRGV0YWlsczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInEtcXVlcnktdGV4dFwiPkZyb20gdGhlIGRhdGUgb2YgaW5zdGFsbGF0aW9uIHRpbGwgdG9kYXkgdGhlIGJlbG93IHF1ZXJpZXMgc3VjY2VzcyByYXRlIGhhcyBiZWVuIG1haW50YWluZWQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBweS0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbWluLXctMTI1cHggcHktMyBtZS02IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWhpc3RvcnktY291bnRcIj5Ub3RhbCA6IDxzcGFuIGNsYXNzPVwiaC1oaXN0b3J5LXRpdGxlXCI+e3tzdWNjZXNzUmF0ZT8udG90YWx9fSB7e3N1Y2Nlc3NSYXRlPy50b3RhbCA+IDEgPyAnVGlja2V0cycgOiAnVGlja2V0J319PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Y2Nlc3NSYXRlPy5zdWNjZXNzUmF0ZSAhPT0gJ251bGwnICYmIHN1Y2Nlc3NSYXRlPy5zdWNjZXNzUmF0ZSA+IDAgJiYgc3VjY2Vzc1JhdGU/LnN1Y2Nlc3NSYXRlICE9PSAnJ1wiIGNsYXNzPVwiIG1pbi13LTEyNXB4IHB5LTMgcHgtNCBtZS02IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWhpc3RvcnktY291bnRcIj5TdWNjZXNzIFJhdGUgOiA8c3BhbiBjbGFzcz1cImgtaGlzdG9yeS10aXRsZVwiPnt7c3VjY2Vzc1JhdGU/LnN1Y2Nlc3NSYXRlfX0lPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiIG1pbi13LTEyNXB4IHB5LTMgcHgtNCBtZS02IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGZzLTYgdGV4dC1ncmF5LTUwMFwiPkVhcm5pbmdzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0yIGZ3LWJvbGRlclwiPjQ1MDAkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTMgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmFpc2VUaWNrZXQoKVwiPlJhaXNlIGEgVGlja2V0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiKGN1cnJlbnRJZHggKyAxKSAhPT0gc2VsZWN0ZWREYXRlLmxlbmd0aFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSByb3VuZGVkLTNcIiAoY2xpY2spPVwiY2xvc2VUaWNrZXQoKVwiPkFjY2VwdCAmIENsb3NlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiKGN1cnJlbnRJZHggKyAxKSA9PT0gc2VsZWN0ZWREYXRlLmxlbmd0aFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSByb3VuZGVkLTNcIiAoY2xpY2spPVwib3BlblBvcHVwKClcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb25maXJtYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC04XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9kYW5nZXItaWNvbi5zdmdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYW1lcmFEZXRhaWwgZnctYm9sZFwiPlVuc2F2ZWQgQ2hhbmdlczwvc3Bhbj5cclxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBzdWItaGVhZGVyIGZ3LWJvbGQtNDAwXCI+RG8geW91IHdhbnQgdG8gY2xvc2UgdGhlIHRpY2tldHM/PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgdy01MCBtZS0yXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MCBtcy0yXCIgKGNsaWNrKT1cImNvbmZpcm1TYXZlKCk7bW9kYWwuY2xvc2UoKVwiPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjUmVjb25maXJtYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC04XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9kYW5nZXItaWNvbi5zdmdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYW1lcmFEZXRhaWwgZnctYm9sZFwiPkFyZSB5b3Ugc3VyZSwgd2FudCB0byB2aWV3IG1vcmUgZGV0YWlscz88L3NwYW4+XHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgc3ViLWhlYWRlciBmdy1ib2xkLTQwMFwiPklmIHNvIHlvdSB3aWxsIHJlZGlyZWN0IHRvIFF1ZXJpZXMgc3VtbWFyeSAmIGNhbuKAmXQgYWJsZSB0byBjb21lIGJhY2sgdG8gdGhlIHNjcmVlbi48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTEwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZSB3LTUwIG1lLTJcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTUwIG1zLTJcIiAoY2xpY2spPVwiY29uZmlybU1vcmUoKTttb2RhbC5kaXNtaXNzKClcIj5Db25maXJtPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gICJdfQ==
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy9hbmFseXplLXJlcG9ydC9hbmFseXplLXJlcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2FuYWx5emUtcmVwb3J0L2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFNBQVMsRUFBQyxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7QUFPMUIsTUFBTSxPQUFPLHNCQUFzQjtJQXFCaEI7SUFBOEI7SUFBbUM7SUFBK0I7SUFwQmpILFlBQVksQ0FBSztJQUNqQixVQUFVLENBQUs7SUFDZixVQUFVLEdBQU8sQ0FBQyxDQUFDO0lBQ1YsYUFBYSxDQUFLO0lBRVYsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDbEMsV0FBVyxHQUFtQixFQUFFLENBQUM7SUFFWCxpQkFBaUIsQ0FBTTtJQUNyQixtQkFBbUIsQ0FBTTtJQUMzRCxRQUFRLENBQTBCO0lBQ2hDLFVBQVUsQ0FBTTtJQUNoQixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLFdBQVcsQ0FBTTtJQUNqQixhQUFhLENBQU07SUFDbkIsWUFBWSxDQUFNO0lBQ2xCLFdBQVcsQ0FBTTtJQUNqQixVQUFVLEdBQVEsRUFBRSxDQUFDO0lBQ3JC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d0dBdEpVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLDJVQ2JuQyxvM2lCQW1QRTs7NEZEdE9XLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7dUtBUXJCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS3dCLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ0ksbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsVmlld0NoaWxkLElucHV0LENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCwgTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFJhaXNlVGlja2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vcmFpc2UtdGlja2V0L3JhaXNlLXRpY2tldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYW5hbHl6ZS1yZXBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmFseXplLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5hbHl6ZVJlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc2VsZWN0ZWREYXRlOmFueTtcclxuICBhY3RpdmVEYXRlOmFueTtcclxuICBjdXJyZW50SWR4OmFueSA9IDA7XHJcbiAgQElucHV0KCkgYW5hbHl6ZXJlcG9ydDphbnk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG5AVmlld0NoaWxkKCdjb25maXJtYXRpb25Nb2RhbCcpIGNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbkBWaWV3Q2hpbGQoJ1JlY29uZmlybWF0aW9uTW9kYWwnKSBSZWNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbm1vZGFsUmVmOiBOZ2JNb2RhbFJlZiB8IHVuZGVmaW5lZDsgICBcclxuICBpc3N1ZWREYXRhOiBhbnk7XHJcbiAgYWN0aXZlQXJyYXk6IGFueSA9IFtdO1xyXG4gIGFuZ2xlQ2hhbmdlOiBhbnk7XHJcbiAgc3RyZWFtRGV0YWlsczogYW55O1xyXG4gIGFjdGl2ZVN0cmVhbTogYW55O1xyXG4gIHN1Y2Nlc3NSYXRlOiBhbnk7XHJcbiAgYW5nbGVJbWFnZTogYW55ID0gJyc7XHJcbiAgZGF5anMgPSBkYXlqc1xyXG4gIHNlbGVjdGVkVmFsdWU6IGFueTtcclxuY29uc3RydWN0b3IocHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwscHVibGljIGFjdGl2ZU1vZGFsOk5nYkFjdGl2ZU1vZGFsLHByaXZhdGUgc2VydmljZTpUaWNrZXRzU2VydmljZSxwcml2YXRlIGNkOkNoYW5nZURldGVjdG9yUmVmKXtcclxuXHJcbn1cclxubmdPbkluaXQoKXtcclxuICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5hbHl6ZXJlcG9ydD8uZGF0ZVJhbmdlPy5tYXAoKGl0ZW06YW55KSA9PiB7cmV0dXJuIHtkYXRlOml0ZW19fSk7XHJcbiAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5zZWxlY3RlZERhdGVbdGhpcy5jdXJyZW50SWR4XS5kYXRlO1xyXG4gIHRoaXMuZ2V0SXNzdWVzKCk7XHJcbn1cclxuXHJcbmhhbmRsZUNsaWNrKGk6YW55KSB7XHJcbiAgdGhpcy5jdXJyZW50SWR4ID0gaTtcclxuICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLmN1cnJlbnRJZHhdPy5kYXRlO1xyXG4gIHRoaXMuZ2V0SXNzdWVzKCk7XHJcbn1cclxuXHJcbmdldElzc3Vlcygpe1xyXG4gIGxldCBkYXRhID0ge1xyXG4gICAgZnJvbURhdGU6dGhpcy5zZWxlY3RlZERhdGVbMF0uZGF0ZSxcclxuICAgIHRvRGF0ZTp0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLnNlbGVjdGVkRGF0ZS5sZW5ndGggLSAxXS5kYXRlLFxyXG4gICAgc3RvcmVJZDp0aGlzLmFuYWx5emVyZXBvcnQ/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+e3thY3RpdmVBcnJheT8uZG93blRpbWV9fSBtaW5zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVkIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e2FjdGl2ZUFycmF5Py5pc3N1ZURhdGV9fTwvc3Bhbj4gd2hlcmUgXCJOIEZpbGVzIExvc3RcIiBhbmQgd2FzIHVuYWJsZSB0byBzZW5kIHRvIG91clxyXG4gICAgICAgICAgICAgICAgICAgIGNsb3VkIGR1ZSB0byBzcGVlZCBiZWluZyA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+e3thY3RpdmVBcnJheT8uc3BlZWRUZXN0fX0gTWJwcy48L3NwYW4+IDwvbGk+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+U3VjY2VzcyBSYXRlIDogPHNwYW4gY2xhc3M9XCJoLWhpc3RvcnktdGl0bGVcIj57e3N1Y2Nlc3NSYXRlPy5zdWNjZXNzUmF0ZX19JTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIiBtaW4tdy0xMjVweCBweS0zIHB4LTQgbWUtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtZ3JheS01MDBcIj5FYXJuaW5nczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMiBmdy1ib2xkZXJcIj40NTAwJDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJhaXNlVGlja2V0KClcIj5SYWlzZSBhIFRpY2tldDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihjdXJyZW50SWR4ICsgMSkgIT09IHNlbGVjdGVkRGF0ZS5sZW5ndGhcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC0zXCIgKGNsaWNrKT1cImNsb3NlVGlja2V0KClcIj5BY2NlcHQgJiBDbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihjdXJyZW50SWR4ICsgMSkgPT09IHNlbGVjdGVkRGF0ZS5sZW5ndGhcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC0zXCIgKGNsaWNrKT1cIm9wZW5Qb3B1cCgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29uZmlybWF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC01XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FtZXJhRGV0YWlsIGZ3LWJvbGRcIj5VbnNhdmVkIENoYW5nZXM8L3NwYW4+XHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgc3ViLWhlYWRlciBmdy1ib2xkLTQwMFwiPkRvIHlvdSB3YW50IHRvIGNsb3NlIHRoZSB0aWNrZXRzPzwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIHctNTAgbWUtMlwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctNTAgbXMtMlwiIChjbGljayk9XCJjb25maXJtU2F2ZSgpO21vZGFsLmNsb3NlKClcIj5Db25maXJtPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI1JlY29uZmlybWF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC01XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FtZXJhRGV0YWlsIGZ3LWJvbGRcIj5BcmUgeW91IHN1cmUsIHdhbnQgdG8gdmlldyBtb3JlIGRldGFpbHM/PC9zcGFuPlxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHN1Yi1oZWFkZXIgZnctYm9sZC00MDBcIj5JZiBzbyB5b3Ugd2lsbCByZWRpcmVjdCB0byBRdWVyaWVzIHN1bW1hcnkgJiBjYW7igJl0IGFibGUgdG8gY29tZSBiYWNrIHRvIHRoZSBzY3JlZW4uPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgdy01MCBtZS0yXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MCBtcy0yXCIgKGNsaWNrKT1cImNvbmZpcm1Nb3JlKCk7bW9kYWwuZGlzbWlzcygpXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICAiXX0=
|
|
@@ -58,7 +58,6 @@ export class RaiseTicketComponent {
|
|
|
58
58
|
}
|
|
59
59
|
submitTicket() {
|
|
60
60
|
this.Ticketcreation();
|
|
61
|
-
const modalRef = this.modalService.open(this.createTicket, { centered: true });
|
|
62
61
|
}
|
|
63
62
|
omit_special_char(event) {
|
|
64
63
|
var k;
|
|
@@ -77,10 +76,12 @@ export class RaiseTicketComponent {
|
|
|
77
76
|
this.service.createTicket(this.formData).subscribe({
|
|
78
77
|
next: (res) => {
|
|
79
78
|
if (res && res.code == 200) {
|
|
80
|
-
this.
|
|
79
|
+
this.activeModal.close(true);
|
|
80
|
+
const modalRef = this.modalService.open(this.createTicket, { centered: true });
|
|
81
|
+
// this.toastservice.getSuccessToast(res.message);
|
|
81
82
|
}
|
|
82
83
|
else {
|
|
83
|
-
this.toastservice.getErrorToast(
|
|
84
|
+
this.toastservice.getErrorToast(res.message);
|
|
84
85
|
}
|
|
85
86
|
},
|
|
86
87
|
error: (err) => {
|
|
@@ -111,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
|
|
|
111
112
|
}], data: [{
|
|
112
113
|
type: Input
|
|
113
114
|
}] } });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFpc2UtdGlja2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLXRpY2tldC1pbmZyYS9zcmMvbGliL2NvbXBvbmVudHMvcmFpc2UtdGlja2V0L3JhaXNlLXRpY2tldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL3JhaXNlLXRpY2tldC9yYWlzZS10aWNrZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBMEIsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFJakYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOzs7Ozs7OztBQVExQixNQUFNLE9BQU8sb0JBQW9CO0lBVVo7SUFBK0I7SUFBcUM7SUFBeUI7SUFBaUM7SUFBb0M7SUFUN0osU0FBUyxDQUFNO0lBQ1osWUFBWSxDQUFNO0lBQzdDLFFBQVEsQ0FBMEI7SUFDekIsSUFBSSxDQUFNO0lBQ25CLFdBQVcsQ0FBTTtJQUNqQixZQUFZLENBQUk7SUFDaEIsS0FBSyxHQUFDLEtBQUssQ0FBQztJQUNaLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQzFCLFFBQVEsQ0FBUztJQUNqQixZQUFtQixZQUFzQixFQUFTLFdBQTJCLEVBQVUsRUFBZSxFQUFVLE9BQXVCLEVBQVUsWUFBMEIsRUFBVSxNQUFhO1FBQS9LLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7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O2lOQUtKLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBRWhCLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCwgTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXJhaXNlLXRpY2tldCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JhaXNlLXRpY2tldC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JhaXNlLXRpY2tldC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFJhaXNlVGlja2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQ6IGFueTtcclxuICBAVmlld0NoaWxkKCdjcmVhdGVUaWNrZXQnKSBjcmVhdGVUaWNrZXQ6IGFueTtcclxuICBtb2RhbFJlZjogTmdiTW9kYWxSZWYgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZGF0YTogYW55O1xyXG4gIHJhaXNlVGlja2V0OiBhbnk7XHJcbiAgZXJyb3JNZXNzYWdlOmFueVxyXG4gIGRheWpzPWRheWpzO1xyXG4gIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgZmlsZU5hbWU6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgc2VydmljZTogVGlja2V0c1NlcnZpY2UsIHByaXZhdGUgdG9hc3RzZXJ2aWNlOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOlJvdXRlcikge1xyXG5cclxuICB9XHJcblxyXG5uZ09uSW5pdCgpe1xyXG4gIHRoaXMucmFpc2VUaWNrZXQgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgIGFjdHVhbEJpbGxpbmc6WycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgZXhwZWN0ZWRGb290ZmFsbDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgZGVzY3JpcHRpb246WycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgZmlsZVBhdGg6WycnXVxyXG4gIH0pXHJcbn1cclxuXHJcblxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuZmlsZXMgJiYgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICBcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgZmlsZTogRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1tpXTtcclxuICAgICAgICB0aGlzLmZpbGVOYW1lID0gZmlsZT8ubmFtZTtcclxuICAgICAgICB0aGlzLmZvcm1EYXRhLmFwcGVuZCgnaW1nJywgZmlsZSk7XHJcbiAgICAgICAgaWYgKCFmaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ09ubHkgaW1hZ2UgZmlsZXMgYXJlIGFsbG93ZWQhJztcclxuICAgICAgICAgIHJldHVybjsgLy8gU3RvcCBmdXJ0aGVyIHByb2Nlc3NpbmdcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgb3BlbkZpbGVJbnB1dCgpIHtcclxuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcbiAgc3VibWl0VGlja2V0KCkge1xyXG4gICAgdGhpcy5UaWNrZXRjcmVhdGlvbigpO1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuY3JlYXRlVGlja2V0LCB7IGNlbnRlcmVkOiB0cnVlIH0pO1xyXG4gIH1cclxuIFxyXG4gIG9taXRfc3BlY2lhbF9jaGFyKGV2ZW50OiBhbnkpIHtcclxuICAgIHZhciBrO1xyXG4gICAgayA9IGV2ZW50LmNoYXJDb2RlOyAgLy8gICAgICAgICBrID0gZXZlbnQua2V5Q29kZTsgIChCb3RoIGNhbiBiZSB1c2VkKVxyXG4gICAgcmV0dXJuIChrID09IDggfHwgayA9PSAzMiB8fCAoayA+PSA0OCAmJiBrIDw9IDU3KSk7XHJcbiAgfVxyXG4gIFxyXG4gIFRpY2tldGNyZWF0aW9uKCkge1xyXG4gICAgdGhpcy5mb3JtRGF0YS5hcHBlbmQoXCJzdG9yZUlkXCIsdGhpcy5kYXRhPy5zdG9yZUlkKSxcclxuICAgIHRoaXMuZm9ybURhdGEuYXBwZW5kKFwiRGF0ZVwiLHRoaXMuZGF0YT8uZGF0ZSksXHJcbiAgICB0aGlzLmZvcm1EYXRhLmFwcGVuZChcImlzc3VlVHlwZVwiLHRoaXMuZGF0YT8uY291bnRUeXBlKSxcclxuICAgIHRoaXMuZm9ybURhdGEuYXBwZW5kKFwiZmVhdHVyZVwiLHRoaXMuZGF0YT8uZmVhdHVyZSksXHJcbiAgICB0aGlzLmZvcm1EYXRhLmFwcGVuZChcImFjdHVhbENvdW50XCIsdGhpcy5yYWlzZVRpY2tldD8udmFsdWU/LmFjdHVhbEJpbGxpbmcpLFxyXG4gICAgdGhpcy5mb3JtRGF0YS5hcHBlbmQoXCJleHBlY3RlZENvdW50XCIsdGhpcy5yYWlzZVRpY2tldD8udmFsdWU/LmV4cGVjdGVkRm9vdGZhbGwpLFxyXG4gICAgdGhpcy5mb3JtRGF0YS5hcHBlbmQoXCJjb250YWN0RW1haWxcIix0aGlzLmRhdGEuZW1haWwpLFxyXG4gICAgdGhpcy5mb3JtRGF0YS5hcHBlbmQoXCJkZXNjcmlwdGlvblwiLHRoaXMucmFpc2VUaWNrZXQ/LnZhbHVlPy5kZXNjcmlwdGlvbiksICAgIFxyXG4gICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZVRpY2tldCh0aGlzLmZvcm1EYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KHJlcy5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnTm8gZGF0YSBGb3VuZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0c2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvcik7XHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVkaXJlY3RUb1RpY2tldHMoKXtcclxuICAgICAgY29uc3QgZGF0YSA9IHsgbWVzc2FnZTondGlja2V0Q3JlYXRlZCd9O1xyXG4gICAgICB0aGlzLnNlcnZpY2UuY2hhbmdlRGF0YShkYXRhKTtcclxuICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9tYW5hZ2Uvc3RvcmVzL2luZnJhLXRpY2tldD9zdG9yZUlkPScrdGhpcy5kYXRhPy5zdG9yZUlkKVxyXG4gIH1cclxuICBkYXRlRm9ybWF0KGRhdGU6YW55KXtcclxuICAgIHJldHVybiB0aGlzLmRheWpzKGRhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkIHB5LTAgc2Nyb2xsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgZC1mbGV4IGZsZXgtc3RhcnQgZmxleC1jb2x1bW4gcC05IFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgbXktNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZzLTQgdGV4dC1ncmF5LTgwMCB0ZXh0LWhvdmVyLXByaW1hcnkgZnctYm9sZCBtYi0wIHRpdGxlIGN1cnNvci1wb2ludGVyXCI+UmFpc2UgVGlja2V0PC9hPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj48c3BhbiBjbGFzcz1cInN1Yi10aXRsZVwiPkZvciBTdG9yZSB7e2RhdGE/LnN0b3JlTmFtZX19IG9uPC9zcGFuPiA8c3BhbiBjbGFzcz1cInN1Yi10aXRsZTEgbXMtMlwiPnt7ZGF0ZUZvcm1hdCh0aGlzLmRhdGE/LmRhdGUpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJyYWlzZVRpY2tldFwiIGNsYXNzPVwicm93IG15LTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG15LTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5BY3R1YWwgQmlsbGluZyBDb3VudDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJhY3R1YWxCaWxsaW5nXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG15LTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5Zb3VyIEV4cGVjdGVkIEZvb3RmYWxsPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImV4cGVjdGVkRm9vdGZhbGxcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG15LTNcIj5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cInR5cGVcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIHJvdz1cIjNcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgYSBkZXNjcmlwdGlvbi4uLlwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG15LTNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuID4gPGlucHV0IHR5cGU9XCJmaWxlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZmlsZVBhdGhcIiAjZmlsZUlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBhY2NlcHQ9XCJpbWFnZS8qXCIgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib3BlbkZpbGVJbnB1dCgpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBidG4gYnRuLWRlZmF1bHQgcC0wXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3Ljg2NjYgOS4yMDgzNUwxMC4yMDgyIDE2Ljg2NjdDOS4yNzAwNSAxNy44MDQ5IDcuOTk3NTcgMTguMzMyIDYuNjcwNzUgMTguMzMyQzUuMzQzOTMgMTguMzMyIDQuMDcxNDUgMTcuODA0OSAzLjEzMzI1IDE2Ljg2NjdDMi4xOTUwNSAxNS45Mjg1IDEuNjY3OTcgMTQuNjU2IDEuNjY3OTcgMTMuMzI5MkMxLjY2Nzk3IDEyLjAwMjQgMi4xOTUwNSAxMC43Mjk5IDMuMTMzMjUgOS43OTE2OEwxMC43OTE2IDIuMTMzMzVDMTEuNDE3MSAxLjUwNzg4IDEyLjI2NTQgMS4xNTY0OSAxMy4xNDk5IDEuMTU2NDlDMTQuMDM0NSAxLjE1NjQ5IDE0Ljg4MjggMS41MDc4OCAxNS41MDgyIDIuMTMzMzVDMTYuMTMzNyAyLjc1ODgyIDE2LjQ4NTEgMy42MDcxMyAxNi40ODUxIDQuNDkxNjhDMTYuNDg1MSA1LjM3NjIzIDE2LjEzMzcgNi4yMjQ1NSAxNS41MDgyIDYuODUwMDJMNy44NDE1OCAxNC41MDgzQzcuNTI4ODUgMTQuODIxMSA3LjEwNDY5IDE0Ljk5NjggNi42NjI0MiAxNC45OTY4QzYuMjIwMTQgMTQuOTk2OCA1Ljc5NTk4IDE0LjgyMTEgNS40ODMyNSAxNC41MDgzQzUuMTcwNTEgMTQuMTk1NiA0Ljk5NDgyIDEzLjc3MTUgNC45OTQ4MiAxMy4zMjkyQzQuOTk0ODIgMTIuODg2OSA1LjE3MDUxIDEyLjQ2MjcgNS40ODMyNSAxMi4xNUwxMi41NTgyIDUuMDgzMzVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJteC0yIHN1Yi10aXRsZSB0ZXh0LWNhcGl0YWxpemVcIj57e2ZpbGVOYW1lID8gZmlsZU5hbWUgOiAnQXR0YWNobWVudHMnfX08L3NwYW4+PC9idXR0b24+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj57eyBlcnJvck1lc3NhZ2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJkLWZsZXggbXktNVwiIHJvbGU9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTEwMCBtZS0zXCIgKGNsaWNrKT1cImFjdGl2ZU1vZGFsLmNsb3NlKClcIiA+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIG1zLTNcIiBbZGlzYWJsZWRdPVwiIXJhaXNlVGlja2V0LnZhbGlkXCIgIGlkPVwiYWxlcnQtdG9hc3RcIiAoY2xpY2spPVwic3VibWl0VGlja2V0KCk7YWN0aXZlTW9kYWwuY2xvc2UodHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5TdWJtaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICBcclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY3JlYXRlVGlja2V0IGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJwLThcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy9TdWNjZXNzdG9hc3QucG5nXCI+XHJcbiAgICAgICAgPC9kaXY+IFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHRpY2tldERhdGFcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYW1lcmEgZnctYm9sZFwiPlRpY2tldCBDcmVhdGVkIFN1Y2Nlc3NmdWxseTwvc3Bhbj5cclxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBzdWItaGVhZGVyIGZ3LWJvbGQtNDAwXCI+eW91ciB0aWNrZXQgZm9yIHt7ZGF0ZUZvcm1hdCh0aGlzLmRhdGE/LmRhdGUpfX0gaGF2ZSBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bCAhPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXByaW1hcnkgdy0xMDAgbWUtMlwiIChjbGljayk9XCJyZWRpcmVjdFRvVGlja2V0cygpO21vZGFsLmRpc21pc3MoKVwiPk9rYXk8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFpc2UtdGlja2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLXRpY2tldC1pbmZyYS9zcmMvbGliL2NvbXBvbmVudHMvcmFpc2UtdGlja2V0L3JhaXNlLXRpY2tldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL3JhaXNlLXRpY2tldC9yYWlzZS10aWNrZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBMEIsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFJakYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOzs7Ozs7OztBQVExQixNQUFNLE9BQU8sb0JBQW9CO0lBVVo7SUFBK0I7SUFBcUM7SUFBeUI7SUFBaUM7SUFBb0M7SUFUN0osU0FBUyxDQUFNO0lBQ1osWUFBWSxDQUFNO0lBQzdDLFFBQVEsQ0FBMEI7SUFDekIsSUFBSSxDQUFNO0lBQ25CLFdBQVcsQ0FBTTtJQUNqQixZQUFZLENBQUk7SUFDaEIsS0FBSyxHQUFDLEtBQUssQ0FBQztJQUNaLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQzFCLFFBQVEsQ0FBUztJQUNqQixZQUFtQixZQUFzQixFQUFTLFdBQTJCLEVBQVUsRUFBZSxFQUFVLE9BQXVCLEVBQVUsWUFBMEIsRUFBVSxNQUFhO1FBQS9LLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7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QVM7K0JBQ0Usa0JBQWtCO2lOQUtKLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBRWhCLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCwgTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXJhaXNlLXRpY2tldCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JhaXNlLXRpY2tldC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JhaXNlLXRpY2tldC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFJhaXNlVGlja2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQ6IGFueTtcclxuICBAVmlld0NoaWxkKCdjcmVhdGVUaWNrZXQnKSBjcmVhdGVUaWNrZXQ6IGFueTtcclxuICBtb2RhbFJlZjogTmdiTW9kYWxSZWYgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZGF0YTogYW55O1xyXG4gIHJhaXNlVGlja2V0OiBhbnk7XHJcbiAgZXJyb3JNZXNzYWdlOmFueVxyXG4gIGRheWpzPWRheWpzO1xyXG4gIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgZmlsZU5hbWU6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgc2VydmljZTogVGlja2V0c1NlcnZpY2UsIHByaXZhdGUgdG9hc3RzZXJ2aWNlOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOlJvdXRlcikge1xyXG5cclxuICB9XHJcblxyXG5uZ09uSW5pdCgpe1xyXG4gIHRoaXMucmFpc2VUaWNrZXQgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgIGFjdHVhbEJpbGxpbmc6WycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgZXhwZWN0ZWRGb290ZmFsbDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgZGVzY3JpcHRpb246WycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgZmlsZVBhdGg6WycnXVxyXG4gIH0pXHJcbn1cclxuXHJcblxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuZmlsZXMgJiYgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICBcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgZmlsZTogRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1tpXTtcclxuICAgICAgICB0aGlzLmZpbGVOYW1lID0gZmlsZT8ubmFtZTtcclxuICAgICAgICB0aGlzLmZvcm1EYXRhLmFwcGVuZCgnaW1nJywgZmlsZSk7XHJcbiAgICAgICAgaWYgKCFmaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ09ubHkgaW1hZ2UgZmlsZXMgYXJlIGFsbG93ZWQhJztcclxuICAgICAgICAgIHJldHVybjsgLy8gU3RvcCBmdXJ0aGVyIHByb2Nlc3NpbmdcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgb3BlbkZpbGVJbnB1dCgpIHtcclxuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcbiAgc3VibWl0VGlja2V0KCkge1xyXG4gICAgdGhpcy5UaWNrZXRjcmVhdGlvbigpO1xyXG4gIH1cclxuIFxyXG4gIG9taXRfc3BlY2lhbF9jaGFyKGV2ZW50OiBhbnkpIHtcclxuICAgIHZhciBrO1xyXG4gICAgayA9IGV2ZW50LmNoYXJDb2RlOyAgLy8gICAgICAgICBrID0gZXZlbnQua2V5Q29kZTsgIChCb3RoIGNhbiBiZSB1c2VkKVxyXG4gICAgcmV0dXJuIChrID09IDggfHwgayA9PSAzMiB8fCAoayA+PSA0OCAmJiBrIDw9IDU3KSk7XHJcbiAgfVxyXG4gIFxyXG4gIFRpY2tldGNyZWF0aW9uKCkge1xyXG4gICAgdGhpcy5mb3JtRGF0YS5hcHBlbmQoXCJzdG9yZUlkXCIsdGhpcy5kYXRhPy5zdG9yZUlkKSxcclxuICAgIHRoaXMuZm9ybURhdGEuYXBwZW5kKFwiRGF0ZVwiLHRoaXMuZGF0YT8uZGF0ZSksXHJcbiAgICB0aGlzLmZvcm1EYXRhLmFwcGVuZChcImlzc3VlVHlwZVwiLHRoaXMuZGF0YT8uY291bnRUeXBlKSxcclxuICAgIHRoaXMuZm9ybURhdGEuYXBwZW5kKFwiZmVhdHVyZVwiLHRoaXMuZGF0YT8uZmVhdHVyZSksXHJcbiAgICB0aGlzLmZvcm1EYXRhLmFwcGVuZChcImFjdHVhbENvdW50XCIsdGhpcy5yYWlzZVRpY2tldD8udmFsdWU/LmFjdHVhbEJpbGxpbmcpLFxyXG4gICAgdGhpcy5mb3JtRGF0YS5hcHBlbmQoXCJleHBlY3RlZENvdW50XCIsdGhpcy5yYWlzZVRpY2tldD8udmFsdWU/LmV4cGVjdGVkRm9vdGZhbGwpLFxyXG4gICAgdGhpcy5mb3JtRGF0YS5hcHBlbmQoXCJjb250YWN0RW1haWxcIix0aGlzLmRhdGEuZW1haWwpLFxyXG4gICAgdGhpcy5mb3JtRGF0YS5hcHBlbmQoXCJkZXNjcmlwdGlvblwiLHRoaXMucmFpc2VUaWNrZXQ/LnZhbHVlPy5kZXNjcmlwdGlvbiksICAgIFxyXG4gICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZVRpY2tldCh0aGlzLmZvcm1EYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSh0cnVlKVxyXG4gICAgICAgICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuY3JlYXRlVGlja2V0LCB7IGNlbnRlcmVkOiB0cnVlIH0pO1xyXG4gICAgICAgICAgLy8gdGhpcy50b2FzdHNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KHJlcy5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHNlcnZpY2UuZ2V0RXJyb3JUb2FzdChyZXMubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RzZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyLmVycm9yKTtcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvVGlja2V0cygpe1xyXG4gICAgICBjb25zdCBkYXRhID0geyBtZXNzYWdlOid0aWNrZXRDcmVhdGVkJ307XHJcbiAgICAgIHRoaXMuc2VydmljZS5jaGFuZ2VEYXRhKGRhdGEpO1xyXG4gICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL21hbmFnZS9zdG9yZXMvaW5mcmEtdGlja2V0P3N0b3JlSWQ9Jyt0aGlzLmRhdGE/LnN0b3JlSWQpXHJcbiAgfVxyXG4gIGRhdGVGb3JtYXQoZGF0ZTphbnkpe1xyXG4gICAgcmV0dXJuIHRoaXMuZGF5anMoZGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJylcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgcHktMCBzY3JvbGxcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMCBkLWZsZXggZmxleC1zdGFydCBmbGV4LWNvbHVtbiBwLTkgXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMCBteS01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZnMtNCB0ZXh0LWdyYXktODAwIHRleHQtaG92ZXItcHJpbWFyeSBmdy1ib2xkIG1iLTAgdGl0bGUgY3Vyc29yLXBvaW50ZXJcIj5SYWlzZSBUaWNrZXQ8L2E+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPjxzcGFuIGNsYXNzPVwic3ViLXRpdGxlXCI+Rm9yIFN0b3JlIHt7ZGF0YT8uc3RvcmVOYW1lfX0gb248L3NwYW4+IDxzcGFuIGNsYXNzPVwic3ViLXRpdGxlMSBtcy0yXCI+e3tkYXRlRm9ybWF0KHRoaXMuZGF0YT8uZGF0ZSl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInJhaXNlVGlja2V0XCIgY2xhc3M9XCJyb3cgbXktM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkFjdHVhbCBCaWxsaW5nIENvdW50PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImFjdHVhbEJpbGxpbmdcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPllvdXIgRXhwZWN0ZWQgRm9vdGZhbGw8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZXhwZWN0ZWRGb290ZmFsbFwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwidHlwZVwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCIgcm93PVwiM1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBhIGRlc2NyaXB0aW9uLi4uXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gPiA8aW5wdXQgdHlwZT1cImZpbGVcIiBmb3JtQ29udHJvbE5hbWU9XCJmaWxlUGF0aFwiICNmaWxlSW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGFjY2VwdD1cImltYWdlLypcIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuRmlsZUlucHV0KClcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGJ0biBidG4tZGVmYXVsdCBwLTBcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuODY2NiA5LjIwODM1TDEwLjIwODIgMTYuODY2N0M5LjI3MDA1IDE3LjgwNDkgNy45OTc1NyAxOC4zMzIgNi42NzA3NSAxOC4zMzJDNS4zNDM5MyAxOC4zMzIgNC4wNzE0NSAxNy44MDQ5IDMuMTMzMjUgMTYuODY2N0MyLjE5NTA1IDE1LjkyODUgMS42Njc5NyAxNC42NTYgMS42Njc5NyAxMy4zMjkyQzEuNjY3OTcgMTIuMDAyNCAyLjE5NTA1IDEwLjcyOTkgMy4xMzMyNSA5Ljc5MTY4TDEwLjc5MTYgMi4xMzMzNUMxMS40MTcxIDEuNTA3ODggMTIuMjY1NCAxLjE1NjQ5IDEzLjE0OTkgMS4xNTY0OUMxNC4wMzQ1IDEuMTU2NDkgMTQuODgyOCAxLjUwNzg4IDE1LjUwODIgMi4xMzMzNUMxNi4xMzM3IDIuNzU4ODIgMTYuNDg1MSAzLjYwNzEzIDE2LjQ4NTEgNC40OTE2OEMxNi40ODUxIDUuMzc2MjMgMTYuMTMzNyA2LjIyNDU1IDE1LjUwODIgNi44NTAwMkw3Ljg0MTU4IDE0LjUwODNDNy41Mjg4NSAxNC44MjExIDcuMTA0NjkgMTQuOTk2OCA2LjY2MjQyIDE0Ljk5NjhDNi4yMjAxNCAxNC45OTY4IDUuNzk1OTggMTQuODIxMSA1LjQ4MzI1IDE0LjUwODNDNS4xNzA1MSAxNC4xOTU2IDQuOTk0ODIgMTMuNzcxNSA0Ljk5NDgyIDEzLjMyOTJDNC45OTQ4MiAxMi44ODY5IDUuMTcwNTEgMTIuNDYyNyA1LjQ4MzI1IDEyLjE1TDEyLjU1ODIgNS4wODMzNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm14LTIgc3ViLXRpdGxlIHRleHQtY2FwaXRhbGl6ZVwiPnt7ZmlsZU5hbWUgPyBmaWxlTmFtZSA6ICdBdHRhY2htZW50cyd9fTwvc3Bhbj48L2J1dHRvbj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImVycm9yTWVzc2FnZVwiPnt7IGVycm9yTWVzc2FnZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImQtZmxleCBteS01XCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMTAwIG1lLTNcIiAoY2xpY2spPVwiYWN0aXZlTW9kYWwuY2xvc2UoKVwiID5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgbXMtM1wiIFtkaXNhYmxlZF09XCIhcmFpc2VUaWNrZXQudmFsaWRcIiAgaWQ9XCJhbGVydC10b2FzdFwiIChjbGljayk9XCJzdWJtaXRUaWNrZXQoKTthY3RpdmVNb2RhbC5jbG9zZSh0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlN1Ym1pdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIFxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNjcmVhdGVUaWNrZXQgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL1N1Y2Nlc3N0b2FzdC5wbmdcIj5cclxuICAgICAgICA8L2Rpdj4gXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTUgdGlja2V0RGF0YVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhbWVyYSBmdy1ib2xkXCI+VGlja2V0IENyZWF0ZWQgU3VjY2Vzc2Z1bGx5PC9zcGFuPlxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHN1Yi1oZWFkZXIgZnctYm9sZC00MDBcIj55b3VyIHRpY2tldCBmb3Ige3tkYXRlRm9ybWF0KHRoaXMuZGF0YT8uZGF0ZSl9fSBoYXZlIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsICE8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTEwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tcHJpbWFyeSB3LTEwMCBtZS0yXCIgKGNsaWNrKT1cInJlZGlyZWN0VG9UaWNrZXRzKCk7bW9kYWwuZGlzbWlzcygpXCI+T2theTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuIl19
|