tango-app-ui-ticket-user 3.4.0-alpha.2 → 3.4.0-alpha.3

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.
Files changed (26) hide show
  1. package/esm2022/lib/components/audit-management/audit-management.component.mjs +4 -4
  2. package/esm2022/lib/components/audit-workspace/audit-workspace.component.mjs +4 -4
  3. package/esm2022/lib/components/contact-details/contact-details.component.mjs +4 -4
  4. package/esm2022/lib/components/dropdown/dropdown.component.mjs +4 -4
  5. package/esm2022/lib/components/edge-cameraview/edge-cameraview.component.mjs +4 -4
  6. package/esm2022/lib/components/edgeapp-log/edgeapp-log.component.mjs +4 -4
  7. package/esm2022/lib/components/edit-details/edit-details.component.mjs +4 -4
  8. package/esm2022/lib/components/infratickets/infratickets.component.mjs +5 -5
  9. package/esm2022/lib/components/installation/installation.component.mjs +4 -4
  10. package/esm2022/lib/components/store-activity/store-activity.component.mjs +4 -4
  11. package/esm2022/lib/components/store-info/store-info.component.mjs +4 -4
  12. package/esm2022/lib/components/takeremote/takeremote.component.mjs +4 -4
  13. package/esm2022/lib/components/tango-ticket-users/tango-ticket-users.component.mjs +4 -4
  14. package/esm2022/lib/components/tickets/tickets.component.mjs +4 -4
  15. package/esm2022/lib/components/viewhistory/viewhistory.component.mjs +4 -4
  16. package/esm2022/lib/route-wrappers/edge-wrapper.module.mjs +5 -5
  17. package/esm2022/lib/services/data.service.mjs +4 -4
  18. package/esm2022/lib/services/excel.service.mjs +4 -4
  19. package/esm2022/lib/services/ticket-infra.service.mjs +4 -4
  20. package/esm2022/lib/tango-ticket-users-routing.module.mjs +5 -5
  21. package/esm2022/lib/tango-ticket-users.module.mjs +5 -5
  22. package/fesm2022/{tango-app-ui-ticket-user-edge-wrapper.module-fMqNK7aH.mjs → tango-app-ui-ticket-user-edge-wrapper.module-Yd9SM0Qm.mjs} +5 -5
  23. package/fesm2022/{tango-app-ui-ticket-user-edge-wrapper.module-fMqNK7aH.mjs.map → tango-app-ui-ticket-user-edge-wrapper.module-Yd9SM0Qm.mjs.map} +1 -1
  24. package/fesm2022/tango-app-ui-ticket-user.mjs +64 -64
  25. package/fesm2022/tango-app-ui-ticket-user.mjs.map +1 -1
  26. package/package.json +1 -1
@@ -210,10 +210,10 @@ export class AuditManagementComponent {
210
210
  return this.size;
211
211
  }
212
212
  }
213
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AuditManagementComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }, { token: i2.TicketsService }, { token: i3.GlobalStateService }, { token: i4.NgbModal }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
214
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: AuditManagementComponent, selector: "lib-audit-management", inputs: { searchAudit: "searchAudit", selectedType: "selectedType", selectedClient: "selectedClient", clientId: "clientId", text: "text" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card border-0\">\r\n <!-- <div class=\"card-header border-0 p-0\"> -->\r\n <!-- <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label fw-bold text-dark\">Audit Management</span> -->\r\n <!-- <p class=\"text-gray-400 fw-bold fs-5 mt-1\">\r\n Total {{datalist ? datalist?.totalStores:'0'}} Stores</p> -->\r\n <!-- </h3> -->\r\n <!-- <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" \r\n class=\"form-control w-300px ps-14\" name=\"search\" autocomplete=\"off\"\r\n placeholder=\"Search by Client Name / ID\" autocomplete=\"off\" />\r\n <div class=\"cursor-pointer ms-3\">\r\n <button class=\"btn btn-outline\" [disabled]=\"auditLoading || auditNoData\"\r\n (click)=\"exportAsXlsx()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">{{exportBtnText}}</span> </button></div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!-- </div> -->\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-primary mx-2\">Drafted</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\" [disabled]=\"!source?.isEnable\"\r\n (click)=\"mappingdata(source)\"> Start </button>\r\n \r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='zone'\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-danger mx-2\">Drafted</span>\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div> -->\r\n\r\n <ng-container *ngIf=\"auditLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"auditNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div> \r\n\r\n <!-- <app-date-range-picker name=\"app-range-picker-single\" type=\"single\" (change)=\"dateChanged($event)\"\r\n id=\"dateclass\">\r\n </app-date-range-picker> -->", styles: ["tr{vertical-align:middle!important}.scroll-y{overflow-y:auto!important;position:relative!important}input[type=date]{position:relative}input[type=date]::-webkit-calendar-picker-indicator{background-position:right;background-size:auto;cursor:pointer;position:absolute;bottom:10;left:0;right:0;top:5;width:auto}.btn-enable{color:var(--Primary-700, #009BF3)!important;background:var(--Primary-25, #F6FCFF)!important;border:1px solid var(--Primary-700, #009BF3)!important;padding:.775rem 1.5rem!important}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }] });
213
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AuditManagementComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }, { token: i2.TicketsService }, { token: i3.GlobalStateService }, { token: i4.NgbModal }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
214
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: AuditManagementComponent, selector: "lib-audit-management", inputs: { searchAudit: "searchAudit", selectedType: "selectedType", selectedClient: "selectedClient", clientId: "clientId", text: "text" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card border-0\">\r\n <!-- <div class=\"card-header border-0 p-0\"> -->\r\n <!-- <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label fw-bold text-dark\">Audit Management</span> -->\r\n <!-- <p class=\"text-gray-400 fw-bold fs-5 mt-1\">\r\n Total {{datalist ? datalist?.totalStores:'0'}} Stores</p> -->\r\n <!-- </h3> -->\r\n <!-- <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" \r\n class=\"form-control w-300px ps-14\" name=\"search\" autocomplete=\"off\"\r\n placeholder=\"Search by Client Name / ID\" autocomplete=\"off\" />\r\n <div class=\"cursor-pointer ms-3\">\r\n <button class=\"btn btn-outline\" [disabled]=\"auditLoading || auditNoData\"\r\n (click)=\"exportAsXlsx()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">{{exportBtnText}}</span> </button></div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!-- </div> -->\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-primary mx-2\">Drafted</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\" [disabled]=\"!source?.isEnable\"\r\n (click)=\"mappingdata(source)\"> Start </button>\r\n \r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='zone'\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-danger mx-2\">Drafted</span>\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div> -->\r\n\r\n <ng-container *ngIf=\"auditLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"auditNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div> \r\n\r\n <!-- <app-date-range-picker name=\"app-range-picker-single\" type=\"single\" (change)=\"dateChanged($event)\"\r\n id=\"dateclass\">\r\n </app-date-range-picker> -->", styles: ["tr{vertical-align:middle!important}.scroll-y{overflow-y:auto!important;position:relative!important}input[type=date]{position:relative}input[type=date]::-webkit-calendar-picker-indicator{background-position:right;background-size:auto;cursor:pointer;position:absolute;bottom:10;left:0;right:0;top:5;width:auto}.btn-enable{color:var(--Primary-700, #009BF3)!important;background:var(--Primary-25, #F6FCFF)!important;border:1px solid var(--Primary-700, #009BF3)!important;padding:.775rem 1.5rem!important}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }] });
215
215
  }
216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AuditManagementComponent, decorators: [{
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AuditManagementComponent, decorators: [{
217
217
  type: Component,
218
218
  args: [{ selector: 'lib-audit-management', template: "<div class=\"card border-0\">\r\n <!-- <div class=\"card-header border-0 p-0\"> -->\r\n <!-- <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label fw-bold text-dark\">Audit Management</span> -->\r\n <!-- <p class=\"text-gray-400 fw-bold fs-5 mt-1\">\r\n Total {{datalist ? datalist?.totalStores:'0'}} Stores</p> -->\r\n <!-- </h3> -->\r\n <!-- <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" \r\n class=\"form-control w-300px ps-14\" name=\"search\" autocomplete=\"off\"\r\n placeholder=\"Search by Client Name / ID\" autocomplete=\"off\" />\r\n <div class=\"cursor-pointer ms-3\">\r\n <button class=\"btn btn-outline\" [disabled]=\"auditLoading || auditNoData\"\r\n (click)=\"exportAsXlsx()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">{{exportBtnText}}</span> </button></div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!-- </div> -->\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-primary mx-2\">Drafted</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\" [disabled]=\"!source?.isEnable\"\r\n (click)=\"mappingdata(source)\"> Start </button>\r\n \r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='zone'\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-danger mx-2\">Drafted</span>\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div> -->\r\n\r\n <ng-container *ngIf=\"auditLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"auditNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div> \r\n\r\n <!-- <app-date-range-picker name=\"app-range-picker-single\" type=\"single\" (change)=\"dateChanged($event)\"\r\n id=\"dateclass\">\r\n </app-date-range-picker> -->", styles: ["tr{vertical-align:middle!important}.scroll-y{overflow-y:auto!important;position:relative!important}input[type=date]{position:relative}input[type=date]::-webkit-calendar-picker-indicator{background-position:right;background-size:auto;cursor:pointer;position:absolute;bottom:10;left:0;right:0;top:5;width:auto}.btn-enable{color:var(--Primary-700, #009BF3)!important;background:var(--Primary-25, #F6FCFF)!important;border:1px solid var(--Primary-700, #009BF3)!important;padding:.775rem 1.5rem!important}\n"] }]
219
219
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.Router }, { type: i2.TicketsService }, { type: i3.GlobalStateService }, { type: i4.NgbModal }, { type: i1.ActivatedRoute }], propDecorators: { searchAudit: [{
@@ -227,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
227
227
  }], text: [{
228
228
  type: Input
229
229
  }] } });
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby10aWNrZXQtdXNlci9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXQtbWFuYWdlbWVudC9hdWRpdC1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1tYW5hZ2VtZW50L2F1ZGl0LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNEIsS0FBSyxFQUFnRixNQUFNLGVBQWUsQ0FBQztBQUV6SixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFLMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyx3QkFBd0I7SUEyQ2Y7SUFDVjtJQUF3QjtJQUE4QjtJQUE4QjtJQUErQjtJQTFDN0gsVUFBVSxHQUFPLEVBQUUsQ0FBQztJQUNwQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDbkIsV0FBVyxHQUFRLENBQUMsQ0FBQztJQUNyQixTQUFTLENBQU07SUFDZixXQUFXLENBQU07SUFDakIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixPQUFPLEdBQVksSUFBSSxDQUFDO0lBQ3hCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsY0FBYyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsWUFBWSxDQUFNO0lBQ2xCLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsV0FBVyxHQUFRLEVB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LENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxFQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMzQjthQUFJO1lBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2xCO0lBQ0YsQ0FBQzt3R0FuTVcsd0JBQXdCOzRGQUF4Qix3QkFBd0IsNk5DZHJDLHc3U0FxSjhCOzs0RkR2SWpCLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0I7Nk5Bb0N2QixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCxJbnB1dCxPbkNoYW5nZXMsU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBWaWV3Q2hpbGQsIHZpZXdDaGlsZCwgT3V0cHV0LEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgVGlja2V0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aWNrZXQtaW5mcmEuc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCxOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hdWRpdC1tYW5hZ2VtZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2F1ZGl0LW1hbmFnZW1lbnQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdWRpdE1hbmFnZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25DaGFuZ2VzLE9uRGVzdHJveSB7XHJcblxyXG4gIGRhdGFTb3VyY2U6YW55ID0gW107XHJcbiAgc2l6ZTogbnVtYmVyID0gMTA7XHJcbiAgb2Zmc2V0OiBudW1iZXIgPSAxO1xyXG4gIG9mZnNldHZhbHVlOiBhbnkgPSAwO1xyXG4gIHBhZ2VWYWx1ZTogYW55O1xyXG4gIHBhZ2VEaXNwbGF5OiBhbnk7XHJcbiAgcGFnZVN0YXJ0ID0gMDtcclxuICBwYWdlRW5kID0gNTtcclxuICBuZXh0YnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBiYWNrYnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBwYWdpbmF0aW9uU2l6ZSA9IFsxMCwgMjBdO1xyXG4gIGN1cnJlbnRWYWx1ZSA9IDE7XHJcbiAgcmVjb3Jkc0NvdW50OiBhbnk7XHJcbiAgcmVjb3Jkc1RvdGFsID0gMDtcclxuICBzZWFyY2hWYWx1ZTogYW55ID0gJyc7XHJcbiAgYXVkaXRMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBhdWRpdE5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNpbmdsZWRhdGU6IGFueTtcclxuICBleHBvcnRCdG5UZXh0ID0gJ0V4cG9ydCdcclxuICBsb2dkYXRhOiBhbnk7XHJcbiAgYWN0aXZlbG9nbm9kYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmlsdGVyOiBhbnkgPSAwXHJcbiAgdXNlcmluZm86IGFueTtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIGNhcmRkYXRhOiBhbnk7XHJcbiAgdHlwZTphbnk7XHJcbiAgdXNlcjogYW55O1xyXG4gIGRhdGFsaXN0OiBhbnk7XHJcbiAgaXRlbWhlaWdodDogYW55O1xyXG4gIEBJbnB1dCgpIHNlYXJjaEF1ZGl0OmFueTtcclxuICBASW5wdXQoKSBzZWxlY3RlZFR5cGU6YW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ2xpZW50OmFueTtcclxuICBASW5wdXQoKSBjbGllbnRJZDphbnk7XHJcbiAgQElucHV0KCkgdGV4dDphbnk7XHJcbiAgc29ydENvbHVtTmFtZTogYW55ID0gJ2NsaWVudE5hbWUnO1xyXG4gIHNvcnRCeTogYW55ID0gLTE7XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBoZWFkZXJGaWx0ZXI6IGFueTtcclxuICBwYWdpbmF0aW9uU2l6ZXM6YW55ID0gWzEwLDIwLDMwXTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZWRldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgYXVkaXQ6IFRpY2tldHNTZXJ2aWNlLHByaXZhdGUgZ3M6R2xvYmFsU3RhdGVTZXJ2aWNlLHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxwcml2YXRlIHJvdXRlOkFjdGl2YXRlZFJvdXRlKSB7IFxyXG4gICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgICAgdGhpcy50eXBlID0gKHBhcmFtcy5nZXQoJ3R5cGUnKSl9KVxyXG5cclxuICAgICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckZpbHRlciA9IGRhdGE7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gdGhpcy5oZWFkZXJGaWx0ZXI/LmNsaWVudHM7XHJcbiAgICAgICAgICB0aGlzLmdldGF1ZGl0ZGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpemUgPSAxMDtcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ2F1ZGl0JylcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3RvdGFsZmlsZXMnKVxyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnanVuaycpXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdlbXBsb3llZScpXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdyZXRhZycpXHJcblxyXG4gICAgLy8gdGhpcy5zaW5nbGVkYXRlID0gdGhpcy5kYXlqcyhuZXcgRGF0ZSgpKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxyXG5cclxuICAgIGlmICgndXNlci1pbmZvJyBpbiBsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgdGhpcy51c2VyaW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIHx8ICd7fScpXHJcbiAgICAgIHRoaXMudXNlciA9IHRoaXMudXNlcmluZm8/LnVzZXIgIFxyXG4gICAgICB0aGlzLnNlYXJjaERhdGEodGhpcy5zZWFyY2hBdWRpdCk7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi90aWNrZXRzL3VzZXJzXCJdLCB7IHF1ZXJ5UGFyYW1zOiB7dHlwZTogdGhpcy50eXBlfX0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hdWRpdC51c2VyRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlci1pbmZvJywgSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEpKTtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi90aWNrZXRzL3VzZXJzXCJdLCB7IHF1ZXJ5UGFyYW1zOiB7dHlwZTogdGhpcy50eXBlfX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5mb3JFYWNoKChzYikgPT4gc2IudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgIGlmKGNoYW5nZXNbJ3NlYXJjaEF1ZGl0J10pe1xyXG4gICAgICAgIHRoaXMuc2VhcmNoRGF0YShjaGFuZ2VzWydzZWFyY2hBdWRpdCddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgICAgIHRoaXMuc2l6ZSA9IDEwO1xyXG4gICAgICAgIHRoaXMuc29ydEJ5ID0gLTE7XHJcbiAgICAgIH1cclxuICAgICAgaWYoY2hhbmdlc1snc2VsZWN0ZWRUeXBlJ10pe1xyXG4gICAgICAgIHRoaXMuc2l6ZSA9IDEwO1xyXG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgICAgICB0aGlzLmdldGF1ZGl0ZGF0YSgpO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRhdWRpdGRhdGEoKSB7XHJcbiAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gZmFsc2U7XHJcbiAgICBsZXQgcGF5bG9hZDphbnkgPSB7XHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaEF1ZGl0LFxyXG4gICAgICBtb2R1bGVUeXBlOnRoaXMuc2VsZWN0ZWRUeXBlLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCwgXHJcbiAgICAgIGxpbWl0OiBwYXJzZUludCh0aGlzLnNpemUudG9TdHJpbmcoKSksXHJcbiAgICAgIHNvcnRDb2x1bW5OYW1lOnRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgc29ydEJ5OnRoaXMuc29ydEJ5XHJcbiAgICB9XHJcbiAgICB0aGlzLmF1ZGl0LmdldEF1ZGl0KHBheWxvYWQsdGhpcy50eXBlKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICBpZiAoIXJlcyB8fCByZXMuY29kZSA9PSAyMDQpIHtcclxuICAgICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuZGF0YWxpc3QgPSByZXMuZGF0YTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5yZWNvcmRzVG90YWwgPSByZXM/LmRhdGE/LmNvdW50OyBcclxuICAgICAgICAgIHRoaXMucmVjb3Jkc0NvdW50ID0gdGhpcy5kYXRhU291cmNlLmxlbmd0aFxyXG4gICAgICAgICAgaWYodGhpcy5yZWNvcmRzVG90YWwgPCAxMCl7IHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMucmVjb3Jkc1RvdGFsXX1lbHNlIHt0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwyMCwzMF19XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ICBcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KGVycjphbnkpPT4ge1xyXG4gICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hdWRpdE5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlKCkge31cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgc2VhcmNoRGF0YSh2YWx1ZTphbnkpIHtcclxuICAgIHRoaXMuc2VhcmNoQXVkaXQgPSB2YWx1ZTtcclxuICAgIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiAgfVxyXG5cclxuICBtYXBwaW5nZGF0YShkYXRhOiBhbnkpIHtcclxuICAgICAgdmFyIG9iajogYW55ID0ge1xyXG4gICAgICAgIHRvdGFsZmlsZXM6IHtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCd0b3RhbGZpbGVzJyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICAgIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG9iai50b3RhbGZpbGVzLnF1ZXVlTmFtZSA9IGRhdGEucXVldWVOYW1lXHJcbiAgICAgICAgb2JqLmF1ZGl0ID0gdGhpcy50eXBlXHJcbiAgICAgICAgb2JqLnR5cGUgPSB0aGlzLnRleHRcclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCd0b3RhbGZpbGVzJywgSlNPTi5zdHJpbmdpZnkob2JqKSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy90aWNrZXRzL2F1ZGl0Jyx0aGlzLnNlbGVjdGVkVHlwZV0pXHJcbiAgfVxyXG4gIFxyXG4gIC8vIGRhdGVjaGFuZ2UoZGF0ZTogYW55KSB7XHJcbiAgLy8gICB0aGlzLnNpbmdsZWRhdGUgPSBkYXRlXHJcbiAgLy8gfVxyXG5cclxuICByZWRpcmVjdFRvem9uZShzb3VyY2U6YW55KXtcclxuICAgICB0aGlzLnNlbGVjdGVkQ2xpZW50ID0gc291cmNlPy5jbGllbnRJZDtcclxuICB9XHJcblxyXG4gIGdldFRvZGF5KCkge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdXHJcbiB9XHJcbiBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDphbnkpe1xyXG4gICB0aGlzLm9mZnNldCA9IHBhZ2VPZmZzZXQ7XHJcbiAgIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiB9XHJcbiBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOmFueSl7XHJcbiAgICB0aGlzLnNpemUgPSBwYWdlU2l6ZTtcclxuICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiB9XHJcbiBzb3J0RGF0YSh2YWx1ZTphbnkpe1xyXG4gIHRoaXMuc29ydENvbHVtTmFtZSA9IHZhbHVlO1xyXG4gIHRoaXMuc29ydEJ5ICo9IC0xO1xyXG4gIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiB9XHJcblxyXG4gc2V0cGFnZVNpemUoKXtcclxuICBpZih0aGlzLnJlY29yZHNUb3RhbCA8IDEwKXtcclxuICAgICByZXR1cm4gdGhpcy5yZWNvcmRzVG90YWw7XHJcbiAgfWVsc2V7IFxyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZTtcclxuICB9XHJcbiB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci0wXCI+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwLTBcIj4gLS0+XHJcbiAgICAgICAgPCEtLSA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGZ3LWJvbGQgdGV4dC1kYXJrXCI+QXVkaXQgTWFuYWdlbWVudDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPCEtLSA8cCBjbGFzcz1cInRleHQtZ3JheS00MDAgZnctYm9sZCBmcy01IG10LTFcIj5cclxuICAgICAgICAgICAgVG90YWwge3tkYXRhbGlzdCA/IGRhdGFsaXN0Py50b3RhbFN0b3JlczonMCd9fSBTdG9yZXM8L3A+IC0tPlxyXG4gICAgICAgIDwhLS0gPC9oMz4gLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtNlwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjaGFuZ2UpPVwic2VhcmNoRGF0YSgpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy0zMDBweCBwcy0xNFwiIG5hbWU9XCJzZWFyY2hcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYnkgQ2xpZW50IE5hbWUgLyBJRFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgW2Rpc2FibGVkXT1cImF1ZGl0TG9hZGluZyB8fCBhdWRpdE5vRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0QXNYbHN4KClcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tleHBvcnRCdG5UZXh0fX08L3NwYW4+IDwvYnV0dG9uPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB4LTAgcHQtMTBcIiAqbmdJZj1cIiFhdWRpdExvYWRpbmcgJiYgIWF1ZGl0Tm9EYXRhXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5CcmFuZCBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QnJhbmQgSUQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5QZW5kaW5nIFF1ZXVlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVuZGluZyBVc2VyPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+Q29tcGxldGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHNvdXJjZSBvZiBkYXRhU291cmNlIDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+IHt7c291cmNlPy5jbGllbnROYW1lfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtM1wiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvdXJjZT8uaXNEcmFmdFwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBteC0yXCI+RHJhZnRlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvdXJjZT8uaXNBc3NpZ25lZFwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBteC0yXCI+QXNzaWduZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c291cmNlPy5jbGllbnRJZCA/IHNvdXJjZT8uY2xpZW50SWQgOiAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzb3VyY2U/LnBlbmRpbmdCeVF1ZXVlID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8ucGVuZGluZ0J5VXNlciA/PyAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+IHt7c291cmNlPy5jb21wbGV0ZWRTdG9yZXNDb3VudCA/PyAnLS0nfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic291cmNlPy5jb21wbGV0ZWRDb3VudFwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTBweCBoLTEwcHggcm91bmRlZC01IGJnLXN1Y2Nlc3MgbWUtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7c291cmNlPy5jb21wbGV0ZWRSYXRpb319ICU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4gYnRuLW91dGxpbmUgdGV4dC1jYXBpdGFsaXplIGN1cnNvci1wb2ludGVyXCIgW2Rpc2FibGVkXT1cIiFzb3VyY2U/LmlzRW5hYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1hcHBpbmdkYXRhKHNvdXJjZSlcIj4gU3RhcnQgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4gICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cInNpemVcIiBbY3VycmVudFBhZ2VdPVwib2Zmc2V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwicmVjb3Jkc1RvdGFsXCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwic2V0cGFnZVNpemUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMCBwdC0xMFwiICpuZ0lmPVwiIWF1ZGl0TG9hZGluZyAmJiAhYXVkaXROb0RhdGEgJiYgc2VsZWN0ZWRUeXBlID09PSd6b25lJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJyYW5kIE5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJyYW5kIElEPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVuZGluZyBRdWV1ZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlbmRpbmcgVXNlcjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNvbXBsZXRlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc291cmNlIG9mIGRhdGFTb3VyY2UgOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiB7e3NvdXJjZT8uY2xpZW50TmFtZX19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3VyY2U/LmlzRHJhZnRcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBteC0yXCI+RHJhZnRlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8uY2xpZW50SWQgPyBzb3VyY2U/LmNsaWVudElkIDogJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzb3VyY2U/LnBlbmRpbmdCeVF1ZXVlID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c291cmNlPy5wZW5kaW5nQnlVc2VyID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiB7e3NvdXJjZT8uY29tcGxldGVkU3RvcmVzQ291bnQgPz8gJy0tJ319IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic291cmNlPy5jb21wbGV0ZWRDb3VudFwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMHB4IGgtMTBweCByb3VuZGVkLTUgYmctc3VjY2VzcyBtZS01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NvdXJjZT8uY29tcGxldGVkUmF0aW99fSAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0biBidG4tb3V0bGluZSB0ZXh0LWNhcGl0YWxpemUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtYXBwaW5nZGF0YShzb3VyY2UpXCIgW2Rpc2FibGVkXT1cIiFzb3VyY2U/LmlzRW5hYmxlXCI+IFN0YXJ0IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+ICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwic2l6ZVwiIFtjdXJyZW50UGFnZV09XCJvZmZzZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInJlY29yZHNUb3RhbFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInNldHBhZ2VTaXplKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXVkaXRMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdWRpdE5vRGF0YVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYyB3LTI1XCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+IFxyXG5cclxuICAgIDwhLS0gPGFwcC1kYXRlLXJhbmdlLXBpY2tlciBuYW1lPVwiYXBwLXJhbmdlLXBpY2tlci1zaW5nbGVcIiB0eXBlPVwic2luZ2xlXCIgKGNoYW5nZSk9XCJkYXRlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIGlkPVwiZGF0ZWNsYXNzXCI+XHJcbiAgPC9hcHAtZGF0ZS1yYW5nZS1waWNrZXI+IC0tPiJdfQ==
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby10aWNrZXQtdXNlci9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXQtbWFuYWdlbWVudC9hdWRpdC1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1tYW5hZ2VtZW50L2F1ZGl0LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNEIsS0FBSyxFQUFnRixNQUFNLGVBQWUsQ0FBQztBQUV6SixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFLMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyx3QkFBd0I7SUEyQ2Y7SUFDVjtJQUF3QjtJQUE4QjtJQUE4QjtJQUErQjtJQTFDN0gsVUFBVSxHQUFPLEVBQUUsQ0FBQztJQUNwQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDbkIsV0FBVyxHQUFRLENBQUMsQ0FBQztJQUNyQixTQUFTLENBQU07SUFDZixXQUFXLENBQU07SUFDakIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixPQUFPLEdBQVksSUFBSSxDQUFDO0lBQ3hCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsY0FBYyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsWUFBWSxDQUFNO0lBQ2xCLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsV0FBVyxHQUFRLEVB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LENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxFQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMzQjthQUFJO1lBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2xCO0lBQ0YsQ0FBQzt1R0FuTVcsd0JBQXdCOzJGQUF4Qix3QkFBd0IsNk5DZHJDLHc3U0FxSjhCOzsyRkR2SWpCLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0I7Nk5Bb0N2QixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCxJbnB1dCxPbkNoYW5nZXMsU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBWaWV3Q2hpbGQsIHZpZXdDaGlsZCwgT3V0cHV0LEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgVGlja2V0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aWNrZXQtaW5mcmEuc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCxOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hdWRpdC1tYW5hZ2VtZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2F1ZGl0LW1hbmFnZW1lbnQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdWRpdE1hbmFnZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25DaGFuZ2VzLE9uRGVzdHJveSB7XHJcblxyXG4gIGRhdGFTb3VyY2U6YW55ID0gW107XHJcbiAgc2l6ZTogbnVtYmVyID0gMTA7XHJcbiAgb2Zmc2V0OiBudW1iZXIgPSAxO1xyXG4gIG9mZnNldHZhbHVlOiBhbnkgPSAwO1xyXG4gIHBhZ2VWYWx1ZTogYW55O1xyXG4gIHBhZ2VEaXNwbGF5OiBhbnk7XHJcbiAgcGFnZVN0YXJ0ID0gMDtcclxuICBwYWdlRW5kID0gNTtcclxuICBuZXh0YnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBiYWNrYnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBwYWdpbmF0aW9uU2l6ZSA9IFsxMCwgMjBdO1xyXG4gIGN1cnJlbnRWYWx1ZSA9IDE7XHJcbiAgcmVjb3Jkc0NvdW50OiBhbnk7XHJcbiAgcmVjb3Jkc1RvdGFsID0gMDtcclxuICBzZWFyY2hWYWx1ZTogYW55ID0gJyc7XHJcbiAgYXVkaXRMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBhdWRpdE5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNpbmdsZWRhdGU6IGFueTtcclxuICBleHBvcnRCdG5UZXh0ID0gJ0V4cG9ydCdcclxuICBsb2dkYXRhOiBhbnk7XHJcbiAgYWN0aXZlbG9nbm9kYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmlsdGVyOiBhbnkgPSAwXHJcbiAgdXNlcmluZm86IGFueTtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIGNhcmRkYXRhOiBhbnk7XHJcbiAgdHlwZTphbnk7XHJcbiAgdXNlcjogYW55O1xyXG4gIGRhdGFsaXN0OiBhbnk7XHJcbiAgaXRlbWhlaWdodDogYW55O1xyXG4gIEBJbnB1dCgpIHNlYXJjaEF1ZGl0OmFueTtcclxuICBASW5wdXQoKSBzZWxlY3RlZFR5cGU6YW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ2xpZW50OmFueTtcclxuICBASW5wdXQoKSBjbGllbnRJZDphbnk7XHJcbiAgQElucHV0KCkgdGV4dDphbnk7XHJcbiAgc29ydENvbHVtTmFtZTogYW55ID0gJ2NsaWVudE5hbWUnO1xyXG4gIHNvcnRCeTogYW55ID0gLTE7XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBoZWFkZXJGaWx0ZXI6IGFueTtcclxuICBwYWdpbmF0aW9uU2l6ZXM6YW55ID0gWzEwLDIwLDMwXTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZWRldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgYXVkaXQ6IFRpY2tldHNTZXJ2aWNlLHByaXZhdGUgZ3M6R2xvYmFsU3RhdGVTZXJ2aWNlLHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxwcml2YXRlIHJvdXRlOkFjdGl2YXRlZFJvdXRlKSB7IFxyXG4gICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgICAgdGhpcy50eXBlID0gKHBhcmFtcy5nZXQoJ3R5cGUnKSl9KVxyXG5cclxuICAgICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckZpbHRlciA9IGRhdGE7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gdGhpcy5oZWFkZXJGaWx0ZXI/LmNsaWVudHM7XHJcbiAgICAgICAgICB0aGlzLmdldGF1ZGl0ZGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpemUgPSAxMDtcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ2F1ZGl0JylcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3RvdGFsZmlsZXMnKVxyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnanVuaycpXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdlbXBsb3llZScpXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdyZXRhZycpXHJcblxyXG4gICAgLy8gdGhpcy5zaW5nbGVkYXRlID0gdGhpcy5kYXlqcyhuZXcgRGF0ZSgpKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxyXG5cclxuICAgIGlmICgndXNlci1pbmZvJyBpbiBsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgdGhpcy51c2VyaW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIHx8ICd7fScpXHJcbiAgICAgIHRoaXMudXNlciA9IHRoaXMudXNlcmluZm8/LnVzZXIgIFxyXG4gICAgICB0aGlzLnNlYXJjaERhdGEodGhpcy5zZWFyY2hBdWRpdCk7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi90aWNrZXRzL3VzZXJzXCJdLCB7IHF1ZXJ5UGFyYW1zOiB7dHlwZTogdGhpcy50eXBlfX0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hdWRpdC51c2VyRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlci1pbmZvJywgSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEpKTtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi90aWNrZXRzL3VzZXJzXCJdLCB7IHF1ZXJ5UGFyYW1zOiB7dHlwZTogdGhpcy50eXBlfX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5mb3JFYWNoKChzYikgPT4gc2IudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgIGlmKGNoYW5nZXNbJ3NlYXJjaEF1ZGl0J10pe1xyXG4gICAgICAgIHRoaXMuc2VhcmNoRGF0YShjaGFuZ2VzWydzZWFyY2hBdWRpdCddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgICAgIHRoaXMuc2l6ZSA9IDEwO1xyXG4gICAgICAgIHRoaXMuc29ydEJ5ID0gLTE7XHJcbiAgICAgIH1cclxuICAgICAgaWYoY2hhbmdlc1snc2VsZWN0ZWRUeXBlJ10pe1xyXG4gICAgICAgIHRoaXMuc2l6ZSA9IDEwO1xyXG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgICAgICB0aGlzLmdldGF1ZGl0ZGF0YSgpO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRhdWRpdGRhdGEoKSB7XHJcbiAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gZmFsc2U7XHJcbiAgICBsZXQgcGF5bG9hZDphbnkgPSB7XHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaEF1ZGl0LFxyXG4gICAgICBtb2R1bGVUeXBlOnRoaXMuc2VsZWN0ZWRUeXBlLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCwgXHJcbiAgICAgIGxpbWl0OiBwYXJzZUludCh0aGlzLnNpemUudG9TdHJpbmcoKSksXHJcbiAgICAgIHNvcnRDb2x1bW5OYW1lOnRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgc29ydEJ5OnRoaXMuc29ydEJ5XHJcbiAgICB9XHJcbiAgICB0aGlzLmF1ZGl0LmdldEF1ZGl0KHBheWxvYWQsdGhpcy50eXBlKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICBpZiAoIXJlcyB8fCByZXMuY29kZSA9PSAyMDQpIHtcclxuICAgICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuZGF0YWxpc3QgPSByZXMuZGF0YTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5yZWNvcmRzVG90YWwgPSByZXM/LmRhdGE/LmNvdW50OyBcclxuICAgICAgICAgIHRoaXMucmVjb3Jkc0NvdW50ID0gdGhpcy5kYXRhU291cmNlLmxlbmd0aFxyXG4gICAgICAgICAgaWYodGhpcy5yZWNvcmRzVG90YWwgPCAxMCl7IHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMucmVjb3Jkc1RvdGFsXX1lbHNlIHt0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwyMCwzMF19XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ICBcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KGVycjphbnkpPT4ge1xyXG4gICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hdWRpdE5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlKCkge31cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgc2VhcmNoRGF0YSh2YWx1ZTphbnkpIHtcclxuICAgIHRoaXMuc2VhcmNoQXVkaXQgPSB2YWx1ZTtcclxuICAgIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiAgfVxyXG5cclxuICBtYXBwaW5nZGF0YShkYXRhOiBhbnkpIHtcclxuICAgICAgdmFyIG9iajogYW55ID0ge1xyXG4gICAgICAgIHRvdGFsZmlsZXM6IHtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCd0b3RhbGZpbGVzJyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICAgIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG9iai50b3RhbGZpbGVzLnF1ZXVlTmFtZSA9IGRhdGEucXVldWVOYW1lXHJcbiAgICAgICAgb2JqLmF1ZGl0ID0gdGhpcy50eXBlXHJcbiAgICAgICAgb2JqLnR5cGUgPSB0aGlzLnRleHRcclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCd0b3RhbGZpbGVzJywgSlNPTi5zdHJpbmdpZnkob2JqKSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy90aWNrZXRzL2F1ZGl0Jyx0aGlzLnNlbGVjdGVkVHlwZV0pXHJcbiAgfVxyXG4gIFxyXG4gIC8vIGRhdGVjaGFuZ2UoZGF0ZTogYW55KSB7XHJcbiAgLy8gICB0aGlzLnNpbmdsZWRhdGUgPSBkYXRlXHJcbiAgLy8gfVxyXG5cclxuICByZWRpcmVjdFRvem9uZShzb3VyY2U6YW55KXtcclxuICAgICB0aGlzLnNlbGVjdGVkQ2xpZW50ID0gc291cmNlPy5jbGllbnRJZDtcclxuICB9XHJcblxyXG4gIGdldFRvZGF5KCkge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdXHJcbiB9XHJcbiBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDphbnkpe1xyXG4gICB0aGlzLm9mZnNldCA9IHBhZ2VPZmZzZXQ7XHJcbiAgIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiB9XHJcbiBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOmFueSl7XHJcbiAgICB0aGlzLnNpemUgPSBwYWdlU2l6ZTtcclxuICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiB9XHJcbiBzb3J0RGF0YSh2YWx1ZTphbnkpe1xyXG4gIHRoaXMuc29ydENvbHVtTmFtZSA9IHZhbHVlO1xyXG4gIHRoaXMuc29ydEJ5ICo9IC0xO1xyXG4gIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiB9XHJcblxyXG4gc2V0cGFnZVNpemUoKXtcclxuICBpZih0aGlzLnJlY29yZHNUb3RhbCA8IDEwKXtcclxuICAgICByZXR1cm4gdGhpcy5yZWNvcmRzVG90YWw7XHJcbiAgfWVsc2V7IFxyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZTtcclxuICB9XHJcbiB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci0wXCI+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwLTBcIj4gLS0+XHJcbiAgICAgICAgPCEtLSA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGZ3LWJvbGQgdGV4dC1kYXJrXCI+QXVkaXQgTWFuYWdlbWVudDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPCEtLSA8cCBjbGFzcz1cInRleHQtZ3JheS00MDAgZnctYm9sZCBmcy01IG10LTFcIj5cclxuICAgICAgICAgICAgVG90YWwge3tkYXRhbGlzdCA/IGRhdGFsaXN0Py50b3RhbFN0b3JlczonMCd9fSBTdG9yZXM8L3A+IC0tPlxyXG4gICAgICAgIDwhLS0gPC9oMz4gLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtNlwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjaGFuZ2UpPVwic2VhcmNoRGF0YSgpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy0zMDBweCBwcy0xNFwiIG5hbWU9XCJzZWFyY2hcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYnkgQ2xpZW50IE5hbWUgLyBJRFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgW2Rpc2FibGVkXT1cImF1ZGl0TG9hZGluZyB8fCBhdWRpdE5vRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0QXNYbHN4KClcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tleHBvcnRCdG5UZXh0fX08L3NwYW4+IDwvYnV0dG9uPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB4LTAgcHQtMTBcIiAqbmdJZj1cIiFhdWRpdExvYWRpbmcgJiYgIWF1ZGl0Tm9EYXRhXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5CcmFuZCBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QnJhbmQgSUQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5QZW5kaW5nIFF1ZXVlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVuZGluZyBVc2VyPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+Q29tcGxldGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHNvdXJjZSBvZiBkYXRhU291cmNlIDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+IHt7c291cmNlPy5jbGllbnROYW1lfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtM1wiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvdXJjZT8uaXNEcmFmdFwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBteC0yXCI+RHJhZnRlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvdXJjZT8uaXNBc3NpZ25lZFwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBteC0yXCI+QXNzaWduZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c291cmNlPy5jbGllbnRJZCA/IHNvdXJjZT8uY2xpZW50SWQgOiAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzb3VyY2U/LnBlbmRpbmdCeVF1ZXVlID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8ucGVuZGluZ0J5VXNlciA/PyAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+IHt7c291cmNlPy5jb21wbGV0ZWRTdG9yZXNDb3VudCA/PyAnLS0nfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic291cmNlPy5jb21wbGV0ZWRDb3VudFwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTBweCBoLTEwcHggcm91bmRlZC01IGJnLXN1Y2Nlc3MgbWUtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7c291cmNlPy5jb21wbGV0ZWRSYXRpb319ICU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4gYnRuLW91dGxpbmUgdGV4dC1jYXBpdGFsaXplIGN1cnNvci1wb2ludGVyXCIgW2Rpc2FibGVkXT1cIiFzb3VyY2U/LmlzRW5hYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1hcHBpbmdkYXRhKHNvdXJjZSlcIj4gU3RhcnQgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4gICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cInNpemVcIiBbY3VycmVudFBhZ2VdPVwib2Zmc2V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwicmVjb3Jkc1RvdGFsXCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwic2V0cGFnZVNpemUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMCBwdC0xMFwiICpuZ0lmPVwiIWF1ZGl0TG9hZGluZyAmJiAhYXVkaXROb0RhdGEgJiYgc2VsZWN0ZWRUeXBlID09PSd6b25lJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJyYW5kIE5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJyYW5kIElEPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVuZGluZyBRdWV1ZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlbmRpbmcgVXNlcjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNvbXBsZXRlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc291cmNlIG9mIGRhdGFTb3VyY2UgOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiB7e3NvdXJjZT8uY2xpZW50TmFtZX19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3VyY2U/LmlzRHJhZnRcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBteC0yXCI+RHJhZnRlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8uY2xpZW50SWQgPyBzb3VyY2U/LmNsaWVudElkIDogJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzb3VyY2U/LnBlbmRpbmdCeVF1ZXVlID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c291cmNlPy5wZW5kaW5nQnlVc2VyID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiB7e3NvdXJjZT8uY29tcGxldGVkU3RvcmVzQ291bnQgPz8gJy0tJ319IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic291cmNlPy5jb21wbGV0ZWRDb3VudFwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMHB4IGgtMTBweCByb3VuZGVkLTUgYmctc3VjY2VzcyBtZS01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NvdXJjZT8uY29tcGxldGVkUmF0aW99fSAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0biBidG4tb3V0bGluZSB0ZXh0LWNhcGl0YWxpemUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtYXBwaW5nZGF0YShzb3VyY2UpXCIgW2Rpc2FibGVkXT1cIiFzb3VyY2U/LmlzRW5hYmxlXCI+IFN0YXJ0IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+ICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwic2l6ZVwiIFtjdXJyZW50UGFnZV09XCJvZmZzZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInJlY29yZHNUb3RhbFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInNldHBhZ2VTaXplKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXVkaXRMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdWRpdE5vRGF0YVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYyB3LTI1XCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+IFxyXG5cclxuICAgIDwhLS0gPGFwcC1kYXRlLXJhbmdlLXBpY2tlciBuYW1lPVwiYXBwLXJhbmdlLXBpY2tlci1zaW5nbGVcIiB0eXBlPVwic2luZ2xlXCIgKGNoYW5nZSk9XCJkYXRlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIGlkPVwiZGF0ZWNsYXNzXCI+XHJcbiAgPC9hcHAtZGF0ZS1yYW5nZS1waWNrZXI+IC0tPiJdfQ==