tango-app-ui-store-builder 1.0.1-beta-3 → 1.0.1-beta-4

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.
@@ -468,11 +468,11 @@ export class ManageStorePlanoFeedbackComponent {
468
468
  this.destroy$.complete();
469
469
  }
470
470
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageStorePlanoFeedbackComponent, deps: [{ token: i1.StoreBuilderService }, { token: i0.ChangeDetectorRef }, { token: i2.NgbModal }, { token: i3.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
471
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageStorePlanoFeedbackComponent, selector: "app-manage-store-plano-feedback", inputs: { currentPlano: "currentPlano", storeFeedback: "storeFeedback", selectedIssue: "selectedIssue" }, outputs: { isApproved: "isApproved" }, viewQueries: [{ propertyName: "bodyBlockRef", first: true, predicate: ["bodyBlock"], descendants: true }, { propertyName: "accordion", first: true, predicate: ["accordion"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<section *ngIf=\"loading\">\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 <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M18.3346 2.5H1.66797L8.33464 10.3833V15.8333L11.668 17.5V10.3833L18.3346 2.5Z\" stroke=\"#667085\"\r\n stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated &\r\n republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <span class=\"secStyle\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':shelfData?.zone ? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord\">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\" *ngFor=\"let brand of missing?.brand\">\r\n <div class=\"shelfText breakWord\">{{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\">\r\n <div class=\"layoutLabel\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-10 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Shelf {{shlefdata?.shelfNumber}}</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div>Capacity:{{shlefdata?.productPerShelf}}</div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <span class=\"secStyle\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ? item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] : \r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <span class=\"secStyle\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.startYPosition === i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition === i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition >= i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition >= i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated &\r\n republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.type==='layout'\">Layout verification assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div>\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\">\r\n <div class=\"layoutLabel\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-10 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Shelf {{shlefdata?.shelfNumber}}</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div>Capacity:{{shlefdata?.productPerShelf}}</div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <span class=\"secStyle\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.sectionConfig[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n \r\n\r\n\r\n\r\n </ng-template>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n </div>\r\n </ng-template>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n \r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback.length===0&&storeFixtureList.length===0&&vmFeedback.length===0\">\r\n <div class=\"text-center\" >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\"/>\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\"/>\r\n <path d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\" stroke=\"#009BF3\" stroke-width=\"2.5\"/>\r\n </svg>\r\n </div> \r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-form-group{display:flex;align-items:center;justify-content:space-between;margin-top:16px;margin-bottom:18px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid #98a2b3;min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:6px;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i2.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i2.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i2.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i2.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i2.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
471
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageStorePlanoFeedbackComponent, selector: "app-manage-store-plano-feedback", inputs: { currentPlano: "currentPlano", storeFeedback: "storeFeedback", selectedIssue: "selectedIssue" }, outputs: { isApproved: "isApproved" }, viewQueries: [{ propertyName: "bodyBlockRef", first: true, predicate: ["bodyBlock"], descendants: true }, { propertyName: "accordion", first: true, predicate: ["accordion"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<section *ngIf=\"loading\">\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 <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M18.3346 2.5H1.66797L8.33464 10.3833V15.8333L11.668 17.5V10.3833L18.3346 2.5Z\" stroke=\"#667085\"\r\n stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='comments'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated &\r\n republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <span class=\"secStyle\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':shelfData?.zone ? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord\">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\" *ngFor=\"let brand of missing?.brand\">\r\n <div class=\"shelfText breakWord\">{{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\">\r\n <div class=\"layoutLabel\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-10 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Shelf {{shlefdata?.shelfNumber}}</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div>Capacity:{{shlefdata?.productPerShelf}}</div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <span class=\"secStyle\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ? item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] : \r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <span class=\"secStyle\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.startYPosition === i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition === i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition >= i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition >= i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='comments'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated &\r\n republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.taskType==='initial'\">Layout verification assigned</div>\r\n <div *ngIf=\"feedback?.taskType==='redo'\">Layout verification re-assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div>\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\">\r\n <div class=\"layoutLabel\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-10 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Shelf {{shlefdata?.shelfNumber}}</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div>Capacity:{{shlefdata?.productPerShelf}}</div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <span class=\"secStyle\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.sectionConfig[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='comments'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n \r\n\r\n\r\n\r\n </ng-template>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n </div>\r\n </ng-template>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n \r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback.length===0&&storeFixtureList.length===0&&vmFeedback.length===0\">\r\n <div class=\"text-center\" >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\"/>\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\"/>\r\n <path d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\" stroke=\"#009BF3\" stroke-width=\"2.5\"/>\r\n </svg>\r\n </div> \r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-form-group{display:flex;align-items:center;justify-content:space-between;margin-top:16px;margin-bottom:18px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid #98a2b3;min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:6px;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i2.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i2.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i2.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i2.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i2.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
472
472
  }
473
473
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageStorePlanoFeedbackComponent, decorators: [{
474
474
  type: Component,
475
- args: [{ selector: "app-manage-store-plano-feedback", template: "<section *ngIf=\"loading\">\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 <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M18.3346 2.5H1.66797L8.33464 10.3833V15.8333L11.668 17.5V10.3833L18.3346 2.5Z\" stroke=\"#667085\"\r\n stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated &\r\n republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <span class=\"secStyle\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':shelfData?.zone ? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord\">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\" *ngFor=\"let brand of missing?.brand\">\r\n <div class=\"shelfText breakWord\">{{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\">\r\n <div class=\"layoutLabel\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-10 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Shelf {{shlefdata?.shelfNumber}}</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div>Capacity:{{shlefdata?.productPerShelf}}</div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <span class=\"secStyle\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ? item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] : \r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <span class=\"secStyle\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.startYPosition === i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition === i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition >= i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition >= i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated &\r\n republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.type==='layout'\">Layout verification assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div>\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\">\r\n <div class=\"layoutLabel\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-10 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Shelf {{shlefdata?.shelfNumber}}</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div>Capacity:{{shlefdata?.productPerShelf}}</div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <span class=\"secStyle\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.sectionConfig[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n \r\n\r\n\r\n\r\n </ng-template>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n </div>\r\n </ng-template>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n \r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback.length===0&&storeFixtureList.length===0&&vmFeedback.length===0\">\r\n <div class=\"text-center\" >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\"/>\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\"/>\r\n <path d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\" stroke=\"#009BF3\" stroke-width=\"2.5\"/>\r\n </svg>\r\n </div> \r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-form-group{display:flex;align-items:center;justify-content:space-between;margin-top:16px;margin-bottom:18px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid #98a2b3;min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:6px;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}\n"] }]
475
+ args: [{ selector: "app-manage-store-plano-feedback", template: "<section *ngIf=\"loading\">\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 <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M18.3346 2.5H1.66797L8.33464 10.3833V15.8333L11.668 17.5V10.3833L18.3346 2.5Z\" stroke=\"#667085\"\r\n stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='comments'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated &\r\n republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <span class=\"secStyle\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':shelfData?.zone ? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[shelfData.zone]?.color?.text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord\">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\" *ngFor=\"let brand of missing?.brand\">\r\n <div class=\"shelfText breakWord\">{{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\">\r\n <div class=\"layoutLabel\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-10 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Shelf {{shlefdata?.shelfNumber}}</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div>Capacity:{{shlefdata?.productPerShelf}}</div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <span class=\"secStyle\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ? item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] : \r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <span class=\"secStyle\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.startYPosition === i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition === i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition >= i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(item?.Details[fixtureIndex]?.sectionConfig?.[shelfData.zone]?.endYPosition >= i+ 1 && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='comments'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated &\r\n republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.taskType==='initial'\">Layout verification assigned</div>\r\n <div *ngIf=\"feedback?.taskType==='redo'\">Layout verification re-assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div>\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\">\r\n <div class=\"layoutLabel\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-10 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Shelf {{shlefdata?.shelfNumber}}</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div>Capacity:{{shlefdata?.productPerShelf}}</div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <span class=\"secStyle\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.sectionConfig[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated & republished\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='comments'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id)\">Disagree</button>\r\n </div>\r\n </div>\r\n \r\n\r\n\r\n\r\n </ng-template>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n </div>\r\n </ng-template>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n \r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback.length===0&&storeFixtureList.length===0&&vmFeedback.length===0\">\r\n <div class=\"text-center\" >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\"/>\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\"/>\r\n <path d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\" stroke=\"#009BF3\" stroke-width=\"2.5\"/>\r\n </svg>\r\n </div> \r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-form-group{display:flex;align-items:center;justify-content:space-between;margin-top:16px;margin-bottom:18px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid #98a2b3;min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:6px;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}\n"] }]
476
476
  }], ctorParameters: () => [{ type: i1.StoreBuilderService }, { type: i0.ChangeDetectorRef }, { type: i2.NgbModal }, { type: i3.GlobalStateService }], propDecorators: { bodyBlockRef: [{
477
477
  type: ViewChild,
478
478
  args: ["bodyBlock"]
@@ -488,4 +488,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
488
488
  }], isApproved: [{
489
489
  type: Output
490
490
  }] } });
491
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlDLFNBQVMsRUFBRSxLQUFLLEVBQWlCLFlBQVksRUFBRSxNQUFNLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRTlKLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQTtBQUUvRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBUzFDLE1BQU0sT0FBTyxpQ0FBaUM7SUE4QmxDO0lBQ0E7SUFDQTtJQUNBO0lBL0JjLFlBQVksQ0FBYztJQUNQLFNBQVMsQ0FBTTtJQUMxRCxjQUFjLEdBQVEsRUFBRSxDQUFDO0lBQ3pCLFVBQVUsR0FBUSxFQUFFLENBQUM7SUFDckIsV0FBVyxHQUFZLElBQUksQ0FBQTtJQUMzQixNQUFNLEdBQVksSUFBSSxDQUFBO0lBQ3RCLHlCQUF5QjtJQUN6QixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLGdCQUFnQixHQUFXLENB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QUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQXZoQlUsaUNBQWlDOzRGQUFqQyxpQ0FBaUMsaWJDZDlDLG80ckZBczNDVTs7NEZEeDJDRyxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0UsaUNBQWlDO2dMQU1uQixZQUFZO3NCQUFuQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ3FCLFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFtQmhDLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU0hFTEZfQ09MT1JTIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS9maXh0dXJlLXRlbXBsYXRlLmRhdGEnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Qb3B1cENvbXBvbmVudCB9IGZyb20gXCIuLi9jb25maXJtYXRpb24tcG9wdXAvY29uZmlybWF0aW9uLXBvcHVwLmNvbXBvbmVudFwiXHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLW1hbmFnZS1zdG9yZS1wbGFuby1mZWVkYmFja1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2suY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hbmFnZVN0b3JlUGxhbm9GZWVkYmFja0NvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcImJvZHlCbG9ja1wiKSBib2R5QmxvY2tSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2FjY29yZGlvbicsIHsgc3RhdGljOiBmYWxzZSB9KSBhY2NvcmRpb246IGFueTtcclxuICBsYXlvdXRGZWVkYmFjazogYW55ID0gW107XHJcbiAgdm1GZWVkYmFjazogYW55ID0gW107XHJcbiAgb3BlbmZpeHR1cmU6IGJvb2xlYW4gPSB0cnVlXHJcbiAgb3BlbnZtOiBib29sZWFuID0gdHJ1ZVxyXG4gIC8vIHNoZWxmRGV0YWlsczogYW55ID0gW11cclxuICBmaXh0dXJlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgZml4dHVyZXRhc2tJbmRleDogbnVtYmVyID0gMDtcclxuICB2bXRhc2tJbmRleDogbnVtYmVyID0gMDtcclxuICBhcHByb3ZlZExheW91dGlzc3VlczogbnVtYmVyID0gMFxyXG4gIHBlbmRpbmdMYXlvdXRpc3N1ZXM6IG51bWJlciA9IDBcclxuICBjb2xvckxpc3Q6IGFueSA9IHt9O1xyXG4gIHZtQ29uZmlnOiBhbnkgPSBbXTtcclxuICAvLyBzZWN0aW9uQ29uZmlnOiBhbnkgPSBbXTtcclxuICAvLyBzZWN0aW9uS2V5czogYW55ID0gW11cclxuICBzaGxlZkNvbG9yID0gU0hFTEZfQ09MT1JTO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHN0b3JlRml4dHVyZUxpc3Q6IGFueSA9IFtdO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRQbGFubzogYW55O1xyXG4gIEBJbnB1dCgpIHN0b3JlRmVlZGJhY2s6IGFueTtcclxuICBASW5wdXQoKSBzZWxlY3RlZElzc3VlOiBhbnk7XHJcbiAgQE91dHB1dCgpIGlzQXBwcm92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBzZWxlY3RlZEZpeHR1cmU6IGFueTtcclxuICBvcmlnaW5hbERhdGE6IGFueTtcclxuICBjZG5Vcmw6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzW1wiY3VycmVudFBsYW5vXCJdKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiY3VycmVudFBsYW5vXCIsIGNoYW5nZXNbXCJjdXJyZW50UGxhbm9cIl0uY3VycmVudFZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgIGlmIChjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgZmVlZGJhY2tEYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChmZWVkYmFja0RhdGE/LmxheW91dERhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmdldHBsYW5vRmVlZGJhY2soZmVlZGJhY2tEYXRhLmxheW91dERhdGEpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmZWVkYmFja0RhdGE/LmZpeHR1cmVEYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soZmVlZGJhY2tEYXRhLmZpeHR1cmVEYXRhKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmVlZGJhY2tEYXRhPy5WbURhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayhmZWVkYmFja0RhdGEuVm1EYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbXCJzZWxlY3RlZElzc3VlXCJdKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlID0gY2hhbmdlc1tcInNlbGVjdGVkSXNzdWVcIl0uY3VycmVudFZhbHVlO1xyXG4gICAgICBjb25zb2xlLmxvZyhcInNlbGVjdGVkSXNzdWVcIiwgdGhpcy5zZWxlY3RlZEZpeHR1cmUpO1xyXG5cclxuICAgICAgbGV0IG5ld0xheW91dERhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxEYXRhLmxheW91dERhdGEpXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwibmV3TGF5b3V0RGF0YVwiLCBuZXdMYXlvdXREYXRhKTtcclxuXHJcbiAgICAgIG5ld0xheW91dERhdGEuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgZGF0YS5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzLmZvckVhY2goKGlzc3VlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJiBpc3N1ZS5pc3N1ZVR5cGUgIT0gJ2V4dHJhRml4dHVyZScpIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsIGlzc3VlLnF1ZXN0aW9uKVxyXG4gICAgICAgICAgICAgIGlzc3VlLkRldGFpbHMgPSBbXVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzc3VlLmlzc3VlVHlwZSAhPSAnY29tbWVudHMnICYmIGlzc3VlLmlzc3VlVHlwZSAhPSBcImV4dHJhRml4dHVyZVwiKSB7XHJcbiAgICAgICAgICAgICAgaXNzdWUuRGV0YWlscyA9IGlzc3VlLkRldGFpbHMuZmlsdGVyKChzaGVsZjogYW55KSA9PiBzaGVsZi5maXh0dXJlSWQgPT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmZpeHR1cmVJZClcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjIyMjIyMjIyXCIsIGlzc3VlLmlzc3VlVHlwZSlcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjMzMzMzMzMzMzMzM1wiLCBpc3N1ZS5EZXRhaWxzKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJiBpc3N1ZS5pc3N1ZVR5cGUgPT09ICdleHRyYUZpeHR1cmUnKSB7XHJcbiAgICAgICAgICAgICAgaXNzdWUuRGV0YWlscyA9IGlzc3VlLkRldGFpbHMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuX2lkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZT8uaXNzdWVEYXRhPy5faWQpXHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCI0NDQ0NDQ0NDQ0NDQ0NDQ0XCIsIGlzc3VlLkRldGFpbHMpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuc2VsZWN0ZWRGaXh0dXJlLmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJiBpc3N1ZS5pc3N1ZVR5cGUgPT09ICdleHRyYUZpeHR1cmUnKSB7XHJcbiAgICAgICAgICAgICAgaXNzdWUuRGV0YWlscyA9IFtdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZWxlLmlzc3VlcyA9IGVsZS5pc3N1ZXMuZmlsdGVyKChpc3N1ZTogYW55KSA9PiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDApO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCI1NTU1NTU1NTU1NTU1NTU1NVwiLCBlbGUuaXNzdWVzKVxyXG4gICAgICAgICAgbGV0IGZpeHR1cmVjb3VudCA9IGVsZS5pc3N1ZXMuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlLmlzc3VlVHlwZSAhPSBcImV4dHJhRml4dHVyZVwiKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCI2NjY2NjY2NjY2NjZcIiwgZml4dHVyZWNvdW50KVxyXG4gICAgICAgICAgaWYgKGZpeHR1cmVjb3VudC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGVsZS5pc3N1ZXMgPSBlbGUuaXNzdWVzLmZpbHRlcigoaXNzdWU6IGFueSkgPT4gaXNzdWUuaXNzdWVUeXBlICE9IFwiZXh0cmFGaXh0dXJlXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgbmV3TGF5b3V0RGF0YSA9IG5ld0xheW91dERhdGEuZmlsdGVyKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gIShkYXRhLmFuc3dlcnNbMF0uaXNzdWVzLmxlbmd0aCA9PT0gMCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmdldHBsYW5vRmVlZGJhY2sobmV3TGF5b3V0RGF0YSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwibmV3TGF5b3V0RGF0YWFmdGVyXCIsIG5ld0xheW91dERhdGEpO1xyXG5cclxuICAgICAgbGV0IGZpeHR1cmVMaXN0ID0gdGhpcy5vcmlnaW5hbERhdGEuZml4dHVyZURhdGE/LmZpbHRlcihcclxuICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLmZpeHR1cmVJZCA9PT0gdGhpcy5zZWxlY3RlZEZpeHR1cmUuZml4dHVyZUlkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChmaXh0dXJlTGlzdCAmJiBmaXh0dXJlTGlzdD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuZml4dHVyZXRhc2tJbmRleCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKGZpeHR1cmVMaXN0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhbXSk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHZtTGlzdCA9IHRoaXMub3JpZ2luYWxEYXRhLlZtRGF0YT8uZmlsdGVyKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEuZml4dHVyZUlkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZS5maXh0dXJlSWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKHZtTGlzdCAmJiB2bUxpc3Q/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnZtdGFza0luZGV4ID0gMDtcclxuICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayh2bUxpc3QpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVWbWZlZWRiYWNrKFtdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZW52aXJvbm1lbnQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgICAgIGlmIChlbnYpIHtcclxuICAgICAgICAgIHRoaXMuY2RuVXJsID0gZW52LnBsYW5vZ3JhbUNETlxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHRvZ2dsZVBhbmVsKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMubGF5b3V0RmVlZGJhY2suZm9yRWFjaCgoaXRlbTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgICAgaXRlbS5jb2xsYXBzZWQgPSBpICE9PSBpbmRleDsgLy8gb25seSBzZWxlY3RlZCBwYW5lbCBzdGF5cyBvcGVuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdXBkYXRlU3R5bGUoZGF0YTogYW55LCBpOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmhhbmRsZVNlY3Rpb24oZGF0YSwgaSk7XHJcbiAgfVxyXG4gIGdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhmaXh0dXJlRGF0YTogYW55KSB7XHJcblxyXG4gICAgaWYgKGZpeHR1cmVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5sYXlvdXRGZWVkYmFjay5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBkYXRhLmNvbGxhcHNlZCA9IHRydWVcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMub3BlbmZpeHR1cmUgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgZml4dHVyZURhdGEuZm9yRWFjaCgoc2hlbGY6IGFueSwgaTogYW55KSA9PiB7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZyAmJlxyXG4gICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoXHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscyA9IHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgIHNoZWxmPy5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgZWxlPy5pc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5mb3JFYWNoKChuZXdzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG5ld3NoZWxmPy5zaGVsZkNvbmZpZyAmJiBuZXdzaGVsZj8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKG5ld3NoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMobmV3c2hlbGYuc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgIFtcInByb2R1Y3RjYXRlZ29yeVdyb25nXCIsIFwiYnJhbmRXcm9uZ1wiXS5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgICAgICBpc3N1ZS5pc3N1ZVR5cGVcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscy5mb3JFYWNoKChzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNoZWxmRGV0YWlscyA9IG5ld3NoZWxmLnNoZWxmQ29uZmlnLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAobmV3U2hlbGY6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2hlbGYuc2hlbGZOdW1iZXIgPT0gc2hlbGYuc2hlbGZOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzaGVsZi5vbGRTaGVsZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZy5wdXNoKHNoZWxmKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZy5zb3J0KFxyXG4gICAgICAgICAgICAgICAgICAgIChhOiBhbnksIGI6IGFueSkgPT4gYS5zaGVsZk51bWJlciAtIGIuc2hlbGZOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmRGV0YWlscyA9IG5ld3NoZWxmLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0b3JlRml4dHVyZUxpc3QgPSBmaXh0dXJlRGF0YTtcclxuICAgIGNvbnNvbGUubG9nKFwidGhpcy5zdG9yZUZpeHR1cmVMaXN0XCIsIHRoaXMuc3RvcmVGaXh0dXJlTGlzdCk7XHJcbiAgfVxyXG4gIGdldFN0b3JlVm1mZWVkYmFjayhWbURhdGE6IGFueSkge1xyXG5cclxuICAgIGlmIChWbURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm9wZW52bSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm9wZW5maXh0dXJlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5vcGVudm0pIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hY2NvcmRpb24uZXhwYW5kKCdkZXRhaWxzJyk7IC8vICdkZXRhaWxzJyBpcyB0aGUgSUQgb2YgdGhlIGl0ZW1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBWbURhdGEuZm9yRWFjaCgoc2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZyAmJlxyXG4gICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoXHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscyA9IHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgIGxldCB2bUNvbmZpZyA9IHNoZWxmLkZpeHR1cmVEYXRhLnZtQ29uZmlnO1xyXG4gICAgICAgIHNoZWxmPy5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBlbGUuY29tcGxldGVkSXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuc3RhdHVzID09PSBcImNvbXBsZXRlZFwiXHJcbiAgICAgICAgICApLmxlbmd0aDtcclxuICAgICAgICAgIGVsZT8uaXNzdWVzLmZvckVhY2goKGlzc3VlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaXNzdWU/LkRldGFpbHMuZm9yRWFjaCgobmV3c2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld3NoZWxmLnZtQ29uZmlnbmV3ID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld3NoZWxmLnZtQ29uZmlnKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWYgKG5ld3NoZWxmPy5zaGVsZkNvbmZpZyAmJiBuZXdzaGVsZj8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKG5ld3NoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMobmV3c2hlbGYuc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkRldGFpbHMgPSBuZXdzaGVsZi5zaGVsZkNvbmZpZztcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnZtQ29uZmlnbmV3LmZvckVhY2goKHZtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGlzc3VlLmlzc3VlVHlwZSA9PSBcIlZtTWlzbWF0Y2hcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnN0YXJ0WVBvc2l0aW9uID0gdm0ubmV3c3RhcnRZUG9zaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgdm0uZW5kWVBvc2l0aW9uID0gdm0ubmV3ZW5kWVBvc2l0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnhab25lID0gdm0ubmV3eFpvbmUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICB2bS55Wm9uZSA9IHZtLm5ld3lab25lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdm0ubmV3Vm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi52bUNvbmZpZ25ldy5wdXNoKC4uLnZtQ29uZmlnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy52bUZlZWRiYWNrID0gVm1EYXRhO1xyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLnZtRmVlZGJhY2tcIiwgdGhpcy52bUZlZWRiYWNrKTtcclxuICB9XHJcbiAgbmV4dEZpeHR1cmUoZml4dHVyZUluZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBpZiAodG90YWxEYXRhLmxlbmd0aCA+IGZpeHR1cmVJbmRleCArIDEpIHtcclxuICAgICAgdGhpcy5maXh0dXJlSW5kZXggPSBmaXh0dXJlSW5kZXggKyAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcmV2aW91c0ZpeHR1cmUoZml4dHVyZUluZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBpZiAoZml4dHVyZUluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLmZpeHR1cmVJbmRleCA9IGZpeHR1cmVJbmRleCAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5leHR0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyh0b3RhbERhdGEpO1xyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiBmaXh0dXJldGFza0luZGV4ICsgMSkge1xyXG4gICAgICB0aGlzLmZpeHR1cmV0YXNrSW5kZXggPSBmaXh0dXJldGFza0luZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXN0YXNrVm0odm10YXNrSW5kZXg6IG51bWJlciwgdG90YWxEYXRhOiBhbnkpIHtcclxuICAgIGlmICh2bXRhc2tJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy52bXRhc2tJbmRleCA9IHZtdGFza0luZGV4IC0gMTtcclxuICAgIH1cclxuICB9XHJcbiAgbmV4dHRhc2tWbSh2bXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2codG90YWxEYXRhKTtcclxuICAgIGlmICh0b3RhbERhdGEubGVuZ3RoID4gdm10YXNrSW5kZXggKyAxKSB7XHJcbiAgICAgIHRoaXMudm10YXNrSW5kZXggPSB2bXRhc2tJbmRleCArIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByZXZpb3VzdGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKGZpeHR1cmV0YXNrSW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuZml4dHVyZXRhc2tJbmRleCA9IGZpeHR1cmV0YXNrSW5kZXggLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRwbGFub0ZlZWRiYWNrKGxheW91dERhdGE6IGFueSkge1xyXG4gICAgbGF5b3V0RGF0YS5mb3JFYWNoKChkYXRhOiBhbnksIGk6IGFueSkgPT4ge1xyXG5cclxuICAgICAgaWYgKGkgPT09IDApIHtcclxuICAgICAgICBkYXRhLmNvbGxhcHNlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRhdGEuY29sbGFwc2VkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBkYXRhPy5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgZWxlLmlzc3VlcyA9IGVsZT8uaXNzdWVzLmZpbHRlcihcclxuICAgICAgICAgIChpc3N1ZTogYW55KSA9PiBpc3N1ZS5EZXRhaWxzICYmIGlzc3VlLkRldGFpbHMubGVuZ3RoID4gMFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wZW5kaW5nTGF5b3V0aXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzID09PSAncGVuZGluZycpLmxlbmd0aFxyXG4gICAgICAgIHRoaXMuYXBwcm92ZWRMYXlvdXRpc3N1ZXMgPSBlbGU/Lmlzc3Vlcy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgIT0gJ3BlbmRpbmcnKS5sZW5ndGhcclxuXHJcbiAgICAgICAgZWxlPy5pc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaXNzdWU/LkRldGFpbHMuZm9yRWFjaCgoc2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2hlbGY/LnNoZWxmQ29uZmlnICYmIHNoZWxmPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHNoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoc2hlbGYuc2hlbGZDb25maWcpO1xyXG4gICAgICAgICAgICAgIHNoZWxmLnNlY3Rpb25Db25maWcgPSB0aGlzLnN0b3JlRGF0YShzaGVsZi5zaGVsZkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgc2hlbGYuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhzaGVsZi5zZWN0aW9uQ29uZmlnKTtcclxuICAgICAgICAgICAgICBzaGVsZi5zaGVsZkRldGFpbHMgPSBzaGVsZi5zaGVsZkNvbmZpZztcclxuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIj09PT09PT09PT09PT1cIixzaGVsZilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sYXlvdXRGZWVkYmFjayA9IGxheW91dERhdGE7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgZm9ybWF0RGF0YShkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGdyb3VwZWRBcnJheSA9IE9iamVjdC52YWx1ZXMoXHJcbiAgICAgIGRhdGEucmVkdWNlKChhY2M6IGFueSwgaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgem9uZSA9IGl0ZW0uem9uZSB8fCBcInVuZGVmaW5lZFwiO1xyXG4gICAgICAgIGlmICghYWNjW3pvbmVdKSB7XHJcbiAgICAgICAgICBhY2Nbem9uZV0gPSB7IHpvbmUsIGl0ZW1zOiBbXSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBhY2Nbem9uZV0uaXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICB9LCB7fSlcclxuICAgICk7XHJcbiAgICByZXR1cm4gZ3JvdXBlZEFycmF5O1xyXG4gIH1cclxuICBzdG9yZURhdGEoc2hlbGZEYXRhOiBhbnkpIHtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBsZXQgc2VjdGlvbkNvbmZpZyA9IHNoZWxmRGF0YS5yZWR1Y2UoKGFjYzogYW55LCBlbGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlLnpvbmUpIHtcclxuICAgICAgICBpZiAoIWFjY1tlbGUuem9uZV0pIHtcclxuICAgICAgICAgIGFjY1tlbGUuem9uZV0gPSB7XHJcbiAgICAgICAgICAgIHN0YXJ0WVBvc2l0aW9uOiBlbGUuc2hlbGZOdW1iZXIsXHJcbiAgICAgICAgICAgIGVuZFlQb3NpdGlvbjogZWxlLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgICAuLi5lbGUsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnNobGVmQ29sb3JbY291bnRdLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGFjY1tlbGUuem9uZV0uZW5kWVBvc2l0aW9uID0gZWxlLnNoZWxmTnVtYmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG5cclxuICAgIC8vIHRoaXMuaGFuZGxldm1Qb3NpdGlvbihzZWN0aW9uQ29uZmlnKTtcclxuICAgIC8vIHRoaXMuaGFuZGxlU2VjdGlvbihzZWN0aW9uQ29uZmlnKTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIHNlY3Rpb25Db25maWc7XHJcbiAgfVxyXG5cclxuICBjb25maXJtYXRpb24oXHJcbiAgICB0eXBlOiBhbnksXHJcbiAgICBfaWQ6IGFueSxcclxuICAgIGFuc3dlcklkOiBhbnksXHJcbiAgICBpc3N1ZUlkOiBhbnksXHJcbiAgICBEZXRhaWxzSWQ6IGFueVxyXG4gICkge1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIF9pZDogX2lkLFxyXG4gICAgICBhbnN3ZXJJZDogYW5zd2VySWQsXHJcbiAgICAgIGlzc3VlSWQ6IGlzc3VlSWQsXHJcbiAgICAgIERldGFpbHNJZDogRGV0YWlsc0lkLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihDb25maXJtYXRpb25Qb3B1cENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJtZFwiLFxyXG4gICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcclxuICAgICAgd2luZG93Q2xhc3M6IFwiY3VzdG9tLWhlaWdodC1tb2RhbFwiLCAvLyA8LS0gQWRkIGEgY3VzdG9tIGNsYXNzIGhlcmVcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudHlwZSA9IHR5cGU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5pbnB1dERhdGEgPSBwYXlsb2FkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJzdWJtaXRcIikge1xyXG4gICAgICAgIHRoaXMuaXNBcHByb3ZlZC5lbWl0KHJlc3VsdCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxldm1Qb3NpdGlvbih2bURhdGE6IGFueSwgaTogYW55KSB7XHJcbiAgICBjb25zdCB2aWV3UG9ydCA9IHRoaXMuYm9keUJsb2NrUmVmPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgYm9keUhlaWdodCA9IHZpZXdQb3J0Py5vZmZzZXRIZWlnaHQ7XHJcbiAgICBjb25zdCBib2R5V2lkdGggPSB2aWV3UG9ydD8ub2Zmc2V0V2lkdGg7XHJcbiAgICBsZXQgc3R5bGU7XHJcbiAgICAvLyB0aGlzLnZtQ29uZmlnLmZvckVhY2goKGU6IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICBsZXQgc3RhcnRTaGVsZiA9IHZtRGF0YT8uc3RhcnRZUG9zaXRpb24gPz8gMTtcclxuICAgIGxldCBlbmRTaGVsZiA9IHZtRGF0YT8uZW5kWVBvc2l0aW9uID8/IDE7XHJcbiAgICBjb25zdCB2bSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidm1cIiArIGkpO1xyXG4gICAgaWYgKCF2bSkgcmV0dXJuO1xyXG5cclxuICAgIGxldCB3aWR0aCA9IDEwMDtcclxuICAgIGxldCBoZWlnaHQgPSAxMDA7XHJcbiAgICBsZXQgeCA9IDA7XHJcbiAgICBsZXQgeSA9IDA7XHJcblxyXG4gICAgbGV0IHlTdGFydCA9IDA7XHJcbiAgICBmb3IgKGxldCBrID0gMDsgayA8IHN0YXJ0U2hlbGYgLSAxOyBrKyspIHtcclxuICAgICAgY29uc3Qgc2hlbGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNoZWxmXCIgKyBrKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKCFzaGVsZikgcmV0dXJuO1xyXG5cclxuICAgICAgeVN0YXJ0ICs9IHNoZWxmLm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcGxhY2VtZW50SGVpZ2h0ID0gMDtcclxuICAgIGZvciAobGV0IGsgPSBzdGFydFNoZWxmIC0gMTsgayA8IGVuZFNoZWxmOyBrKyspIHtcclxuICAgICAgY29uc3QgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hlbGZcIiArIGspIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXMpIHJldHVybjtcclxuICAgICAgcGxhY2VtZW50SGVpZ2h0ICs9IHMub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAodm1EYXRhPy54Wm9uZSkge1xyXG4gICAgICBjYXNlIFwibGVmdFwiOlxyXG4gICAgICAgIHggPSAwO1xyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICB3aWR0aCA9IDEwMDtcclxuICAgICAgICB4ID0gYm9keVdpZHRoIC0gd2lkdGg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtaWRkbGVcIjpcclxuICAgICAgICB3aWR0aCA9IDEwMDtcclxuICAgICAgICB4ID0gKGJvZHlXaWR0aCAtIHdpZHRoKSAvIDI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJzdHJldGNoXCI6XHJcbiAgICAgICAgd2lkdGggPSBib2R5V2lkdGg7XHJcbiAgICAgICAgeCA9IDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh2bURhdGE/Lnlab25lKSB7XHJcbiAgICAgIGNhc2UgXCJ0b3BcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyBwbGFjZW1lbnRIZWlnaHQgLSAyMCA6IDEwMDtcclxuICAgICAgICB5ID0geVN0YXJ0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwibWlkZGxlXCI6XHJcbiAgICAgICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0IDwgMTAwID8gcGxhY2VtZW50SGVpZ2h0IC0gMjAgOiAxMDA7XHJcbiAgICAgICAgeSA9IChwbGFjZW1lbnRIZWlnaHQgLSBoZWlnaHQpIC8gMiArIHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImJvdHRvbVwiOlxyXG4gICAgICAgIGhlaWdodCA9IHBsYWNlbWVudEhlaWdodCA8IDEwMCA/IHBsYWNlbWVudEhlaWdodCAtIDIwIDogMTAwO1xyXG4gICAgICAgIHkgPSBwbGFjZW1lbnRIZWlnaHQgLSBoZWlnaHQgKyB5U3RhcnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJzdHJldGNoXCI6XHJcbiAgICAgICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0O1xyXG4gICAgICAgIHkgPSB5U3RhcnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZtRGF0YS5uZXdWbSkge1xyXG4gICAgICBzdHlsZSA9IGB3aWR0aDoke3dpZHRofXB4O2hlaWdodDoke2hlaWdodH1weDt0cmFuc2Zvcm06dHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KTt6LWluZGV4OjI7YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpO2A7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN0eWxlO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG4gIGhhbmRsZVNlY3Rpb24oc2VjdGlvbkNvbmZpZzogYW55LCBpOiBhbnkpIHtcclxuICAgIGNvbnN0IHZpZXdQb3J0ID0gdGhpcy5ib2R5QmxvY2tSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBib2R5SGVpZ2h0ID0gdmlld1BvcnQ/Lm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IGJvZHlXaWR0aCA9IHZpZXdQb3J0Py5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICBsZXQgc3R5bGU6IGFueTtcclxuICAgIC8vIE9iamVjdC5rZXlzKHNlY3Rpb25Db25maWcpLmZvckVhY2goKGU6IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICBsZXQgc3RhcnRTaGVsZiA9IHNlY3Rpb25Db25maWc/LnN0YXJ0WVBvc2l0aW9uID8/IDE7XHJcbiAgICBsZXQgZW5kU2hlbGYgPSBzZWN0aW9uQ29uZmlnPy5lbmRZUG9zaXRpb24gPz8gc2VjdGlvbkNvbmZpZy5sZW5ndGg7XHJcbiAgICBjb25zdCBzZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWN0aW9uXCIgKyBpKTtcclxuICAgIGlmICghc2VjdGlvbikgcmV0dXJuO1xyXG5cclxuICAgIGxldCB3aWR0aCA9IDEwMDtcclxuICAgIGxldCBoZWlnaHQgPSA1MDtcclxuICAgIGxldCB4ID0gMDtcclxuICAgIGxldCB5ID0gMDtcclxuXHJcbiAgICBsZXQgeVN0YXJ0ID0gMDtcclxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc3RhcnRTaGVsZiAtIDE7IGsrKykge1xyXG4gICAgICBjb25zdCBzaGVsZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hlbGZcIiArIGspIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXNoZWxmKSByZXR1cm47XHJcblxyXG4gICAgICB5U3RhcnQgKz0gc2hlbGYub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwbGFjZW1lbnRIZWlnaHQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IHN0YXJ0U2hlbGYgLSAxOyBrIDwgZW5kU2hlbGY7IGsrKykge1xyXG4gICAgICBjb25zdCBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgICBpZiAoIXMpIHJldHVybjtcclxuICAgICAgcGxhY2VtZW50SGVpZ2h0ICs9IHMub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgeCA9IDEwO1xyXG4gICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0IDwgMTAwID8gcGxhY2VtZW50SGVpZ2h0IC0gMjAgOiA1MDtcclxuICAgIHkgPSAocGxhY2VtZW50SGVpZ2h0IC0gaGVpZ2h0KSAvIDIgKyB5U3RhcnQ7XHJcblxyXG4gICAgc3R5bGUgPSBgd2lkdGg6JHt3aWR0aH1weDtoZWlnaHQ6JHtoZWlnaHR9cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgke3h9cHgsICR7eX1weClgO1xyXG4gICAgLy8gbGV0IHZtRGV0YWlscyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGB2bS1wbGFjZWhvbGRlciR7aX1gKTtcclxuICAgIC8vIGlmICh2bURldGFpbHMpIHtcclxuICAgIC8vICAgdm1EZXRhaWxzLnN0eWxlLmJvcmRlciA9IGAxcHggc29saWQgJHt0aGlzLnNobGVmQ29sb3JbaV0uYm9yZGVyfWA7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBzdHlsZS5wdXNoKHt6b25lOmUsc3R5bGU6c3R5bGVMaXN0fSlcclxuICAgIC8vIH0pO1xyXG4gICAgcmV0dXJuIHN0eWxlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIiwiPHNlY3Rpb24gKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxzZWN0aW9uICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGJvcmRlci1ib3R0b21cIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZVJlc3BvbnNlXCI+U3RvcmUgcmVzcG9uc2U8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5vcm1hbFRleHQgbWItNVwiPkNsaWNrIGEgZml4dHVyZSBvciB2aWV3IGFsbDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTE4LjMzNDYgMi41SDEuNjY3OTdMOC4zMzQ2NCAxMC4zODMzVjE1LjgzMzNMMTEuNjY4IDE3LjVWMTAuMzgzM0wxOC4zMzQ2IDIuNVpcIiBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgbmdiQWNjb3JkaW9uICNhY2NvcmRpb249XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIGNsYXNzPVwibXQtNVwiICpuZ0lmPVwidm1GZWVkYmFjay5sZW5ndGg+MFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdiBuZ2JBY2NvcmRpb25JdGVtPVwiZGV0YWlsc1wiIFtjb2xsYXBzZWRdPVwib3BlbnZtXCIgY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0wXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgbGF5b3V0LUxiZWxcIj5cclxuICAgICAgICAgICAgICA8ZGl2PlZtIHZlcmlmaWNhdGlvbiBhc3NpZ25lZDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPnt7dm1GZWVkYmFja1swXT8udGFza0RhdGE/LmNyZWF0ZWRBdCB8ZGF0ZTogJ2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicHMtMCBwZS0wXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c3Rhc2tWbSh2bXRhc2tJbmRleCx2bUZlZWRiYWNrKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwidm10YXNrSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIXZtdGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YS5maXh0dXJlTmFtZX19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3ZtdGFza0luZGV4KzF9fS97e3ZtRmVlZGJhY2subGVuZ3RofX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5leHR0YXNrVm0odm10YXNrSW5kZXgsdm1GZWVkYmFjaylcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInZtRmVlZGJhY2subGVuZ3RoPnZtdGFza0luZGV4KzFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiKHZtRmVlZGJhY2subGVuZ3RoKT09PSh2bXRhc2tJbmRleCsxKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIG5hbWU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhdGVnb3J5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplIChXaWR0aCk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgc2hlbHZlczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgcHJvZHVjdCBjYXBhY2l0eTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSBkZXNpZ25cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIEZpeHR1cmUgZGVzaWduZWQgYnkgdGhlIHBsYW5vZ3JhbSB0ZWFtXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgPz8gJyd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI2JvZHlCbG9jayBpZD1cImJvZHlCbG9ja1wiIGNsYXNzPVwiYm9keS1ibG9jayB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZtIG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8udm1Db25maWc7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIid2bScgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiIFtzdHlsZV09XCJoYW5kbGV2bVBvc2l0aW9uKHZtLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ2bT8uaW1nU3JjXCIgKm5nSWY9XCJ2bT8uaW1nU3JjXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlXCI+e3t2bT8udm1OYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6J3doaXRlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOid3aGl0ZSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2hlbGYgQ2FwYWNpdHkgOiB7e3NoZWxmRGF0YT8ucHJvZHVjdFBlclNoZWxmfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBGb290ZXIgYmxvY2sgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cD4ge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlzc3VlcyBvZiB2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2VycztsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnbmV3ZGV0YWlscy0nICsgayB9fVwiIFtjb2xsYXBzZWRdPVwiaXNzdWVzLmNvbGxhcHNlZFwiIGNsYXNzPVwibWItNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXNzdWVzLmlzc3VlcztsZXQgayA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBuZ2JBY2NvcmRpb25CdXR0b24gY2xhc3M9XCJtYWluaGVhZGluZyBwLTMgYmFja2dyb3VuZEltZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgbGF5b3V0LUxiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7aXRlbT8ucXVlc3Rpb259fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgbXQtNVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdWbU1pc3NpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIGFkZGl0aW9uYWwgVk1zOiB7eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtQ29uZmlnLmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdleHRyYVZtJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBhZGRpdGlvbmFsIFZNczoge3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nVm1NaXNtYXRjaCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgbWlzcGxhY2VkIFZNczoge3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZtRGF0YSBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtQ29uZmlnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nVm1NaXNtYXRjaCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8udm1OYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlZNIE5hbWUgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8udm1OYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8uc3RhcnRZUG9zaXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+UGxhY2VtZW50IHN0YXJ0IDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+U2hlbGYge3t2bURhdGE/LnN0YXJ0WVBvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5lbmRZUG9zaXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+UGxhY2VtZW50IEVuZCA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlNoZWxmIHt7dm1EYXRhPy5lbmRZUG9zaXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lnhab25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkhvcml6b250YWwgem9uZSA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1EYXRhPy54Wm9uZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8ucG9zaXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+cG9zaXRpb24gOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8ucG9zaXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J1ZtTWlzbWF0Y2gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lm5ld3N0YXJ0WVBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlBsYWNlbWVudCBzdGFydCA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlNoZWxmIHt7dm1EYXRhPy5uZXdzdGFydFlQb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8ubmV3ZW5kWVBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlBsYWNlbWVudCBFbmQgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5TaGVsZiB7e3ZtRGF0YT8ubmV3ZW5kWVBvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXd4Wm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ib3Jpem9udGFsIHpvbmUgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8ubmV3eFpvbmV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lm5ld3Bvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnBvc2l0aW9uIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/Lm5ld3Bvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtQ29uZmlnPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIFJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXh0dXJlIGZlZWRiYWNrIGJ5IHRoZSBzdG9yZSB0ZWFtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgPz8gJyd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2sgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2bSBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtQ29uZmlnbmV3O2xldCBtPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCIndm0nICsgbVwiIGNsYXNzPVwidm0tYmxvY2tcIiBbc3R5bGVdPVwiaGFuZGxldm1Qb3NpdGlvbih2bSxtKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIG1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ2bS5uZXdWbSA/ICdyZWRCb3JkZXInIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwidm0/LmltZ1NyY1wiICpuZ0lmPVwidm0/LmltZ1NyY1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZVwiPnt7dm0/LnZtTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGgzPnt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9oMz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NoZWxmJyArIGlcIiBjbGFzcz1cImJsb2NrIHNoZWxmIGhpZGUtc2Nyb2xsIGQtYmxvY2sgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOid3aGl0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjond2hpdGUnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/PyAnJ319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2UmJnZtRmVlZGJhY2tbdm10YXNrSW5kZXhdLmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XS5hbnN3ZXJzWzBdPy5pbWFnZX19XCIgYWx0PVwiaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIml0ZW0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBpdGVtPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkFncmVlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZCAmIHJlcHVibGlzaGVkXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdkaXNhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkRpc2FncmVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW5lZCBleGlzdGluZ1wiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTUgcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdhZ3JlZScsdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdyZWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdkaXNhZ3JlZScsdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uX2lkKVwiPkRpc2FncmVlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pc3N1ZXM/Lmxlbmd0aD09PTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlJiZ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlN0b3JlIGZpeHR1cmU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiIGFsdD1cImltYWdlXCIgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5jb21tZW50cy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWQgYXMgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJBZ3JlZWQsIHVwZGF0ZWQgJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHVibGlzaGVkXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsIHJldGFpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aD4wXCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJkZXRhaWxzZml4dHVyZVwiIFtjb2xsYXBzZWRdPVwib3BlbmZpeHR1cmVcIiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+Rml4dHVyZSB2ZXJpZmljYXRpb24gYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj57e3N0b3JlRml4dHVyZUxpc3RbMF0/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInBzLTAgcGUtMFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicHJldmlvdXN0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4LHN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmaXh0dXJldGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFmaXh0dXJldGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLmZpeHR1cmVOYW1lfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7Zml4dHVyZXRhc2tJbmRleCsxfX0ve3tzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZXh0dGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleCxzdG9yZUZpeHR1cmVMaXN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdC5sZW5ndGg+Zml4dHVyZXRhc2tJbmRleCsxXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIihzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aCk9PT0oZml4dHVyZXRhc2tJbmRleCsxKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgbmFtZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplIChXaWR0aCk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgc2hlbHZlczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlRvdGFsIHByb2R1Y3QgY2FwYWNpdHk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSBkZXNpZ25cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIEZpeHR1cmUgZGVzaWduZWQgYnkgdGhlIHBsYW5vZ3JhbSB0ZWFtXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25LZXlzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ1cGRhdGVTdHlsZShzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInYm9yZGVyOjFweCBzb2xpZCAnK3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8uYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8udGV4dEJnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy50ZXh0fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzaGVsZicgKyBpXCIgY2xhc3M9XCJibG9jayBzaGVsZiBoaWRlLXNjcm9sbCBkLWJsb2NrIHRleHQtZW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzpzaGVsZkRhdGE/LnpvbmUgPyBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy5iZyA6IHNobGVmQ29sb3JbaV0uYmd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NoZWxmRGF0YS56b25lXT8uY29sb3I/LnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NoZWxmRGF0YS56b25lXT8uY29sb3I/LnRleHR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2hlbGYgQ2FwYWNpdHkgOiB7e3NoZWxmRGF0YT8ucHJvZHVjdFBlclNoZWxmfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gRm9vdGVyIGJsb2NrIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+IHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlzc3VlcyBvZiBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzO2xldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSXRlbT1cInt7ICduZXdkZXRhaWxzLScgKyBrIH19XCIgW2NvbGxhcHNlZF09XCJpc3N1ZXMuY29sbGFwc2VkXCIgY2xhc3M9XCJtYi01XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpc3N1ZXMuaXNzdWVzO2xldCBrID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYkFjY29yZGlvbkJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nIHAtMyBiYWNrZ3JvdW5kSW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtPy5xdWVzdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtNVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZUNhdGVnb3J5fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJldGVtcGxhdGVOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlRlbXBsYXRlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZXRlbXBsYXRlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIml0ZW0/Lmlzc3VlVHlwZT09PSdzaXplV3JvbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlNpemU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlV2lkdGg/LnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlV2lkdGg/LnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/Lmlzc3VlVHlwZT09PSdwcm9kdWN0Y2F0ZWdvcnlXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbWlzc2luZyBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm1pc3NpbmdEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJtaXNzaW5nPy56b25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+e3ttaXNzaW5nPy56b25lfX06PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBtaXNzaW5nPy5wcm9kdWN0Q2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e2NhdGVnb3J5fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5pc3N1ZVR5cGU9PT0nYnJhbmRXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbWlzc2luZyBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm1pc3NpbmdEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJtaXNzaW5nPy56b25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+e3ttaXNzaW5nPy56b25lfX06PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiICpuZ0Zvcj1cImxldCBicmFuZCBvZiBtaXNzaW5nPy5icmFuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7YnJhbmR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/Lmlzc3VlVHlwZSE9PSdicmFuZFdyb25nJyYmaXRlbT8uaXNzdWVUeXBlIT09J3Byb2R1Y3RjYXRlZ29yeVdyb25nJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZml4dHVyZUxpc3Qgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkNvbmZpZ0Zvcm1hdGVkXCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj57e2ZpeHR1cmVMaXN0Py56b25lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IHNobGVmZGF0YSBvZiBmaXh0dXJlTGlzdD8uaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaGVsZiB7e3NobGVmZGF0YT8uc2hlbGZOdW1iZXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+Q2FwYWNpdHk6e3tzaGxlZmRhdGE/LnByb2R1Y3RQZXJTaGVsZn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdGb3I9XCJsZXQgYnJhbmRzIG9mIHNobGVmZGF0YT8ucHJvZHVjdEJyYW5kTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zZWNvbmRhcnkgbWUtM1wiPnt7YnJhbmRzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgUmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSByZXNwb25zZSBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIlsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pID8gJ2JvcmRlcjoxcHggc29saWQgcmVkJyA6ICcnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKTtiYWNrZ3JvdW5kOiAjRjJGM0Y3O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ3Byb2R1Y3RjYXRlZ29yeVdyb25nJywgJ2JyYW5kV3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5pc3N1ZVR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjk2OXB4IHNvbGlkIHZhcigtLUdyYXktMzAwLCAjRDBENUREKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZVwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF0gPyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXSA6IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8uWzBdfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhWydwcm9kdWN0Y2F0ZWdvcnlXcm9uZycsICdicmFuZFdyb25nJ10uaW5jbHVkZXMoaXRlbT8uaXNzdWVUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25LZXlzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzZWN0aW9uJyArIGlcIiBjbGFzcz1cInZtLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwidXBkYXRlU3R5bGUoaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjk2OXB4IHNvbGlkIHZhcigtLUdyYXktMzAwLCAjRDBENUREKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NoZWxmJyArIGlcIiBjbGFzcz1cImJsb2NrIHNoZWxmIGhpZGUtc2Nyb2xsIGQtYmxvY2sgdGV4dC1lbmRcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItdG9wJzooaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnPy5bc2hlbGZEYXRhLnpvbmVdPy5zdGFydFlQb3NpdGlvbiA9PT0gaSsgMSAmJiAhWydGaXh0dXJlIHR5cGUgaXMgd3JvbmcnLCdGaXh0dXJlIHNpemUgaXMgd3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5xdWVzdGlvbikpICA/ICcwLjc3MXB4IHNvbGlkIHJlZCcgOiAnMC43NzFweCBzb2xpZCB2YXIoLS1HcmF5LTQwMCwgIzk4QTJCMyknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLWJvdHRvbSc6KGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZz8uW3NoZWxmRGF0YS56b25lXT8uZW5kWVBvc2l0aW9uID09PSBpKyAxICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgPyAnIDAuNzcxcHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItbGVmdCc6KGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZz8uW3NoZWxmRGF0YS56b25lXT8uZW5kWVBvc2l0aW9uID49IGkrIDEgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcgMC43NzFweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yaWdodCc6KGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZz8uW3NoZWxmRGF0YS56b25lXT8uZW5kWVBvc2l0aW9uID49IGkrIDEgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcgMC43NzFweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLUdyYXktMTAwLCAjZjhmOWZiKScsfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZCc6ICd2YXIoLS1HcmF5LTEwMCwgI2ViZWVmMyknfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlJiZzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlN0b3JlIGZpeHR1cmU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tjZG5Vcmx9fXt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiIGFsdD1cImltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJpdGVtPy5jb21tZW50cy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgaXRlbT8uY29tbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0IGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZSE9PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWQgYXMgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJBZ3JlZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQgJiByZXB1Ymxpc2hlZFwiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nZGlzYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJEaXNhZ3JlZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWluZWQgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnJiZzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0d28tdG9uZS1idG4gbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignYWdyZWUnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdyZWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdkaXNhZ3JlZScsc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5faWQpXCI+RGlzYWdyZWU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaXNzdWVzPy5sZW5ndGg9PT0wXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlJiZzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlfX1cIiBhbHQ9XCJpbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWQgYXMgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJBZ3JlZWQsIHVwZGF0ZWQgJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHVibGlzaGVkXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsIHJldGFpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICBcclxuICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cImxheW91dEZlZWRiYWNrLmxlbmd0aD4wXCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnZGV0YWlscy0nICsgaSB9fVwiIFtjb2xsYXBzZWRdPVwiZmVlZGJhY2suY29sbGFwc2VkXCIgKGhlYWRlckNsaWNrKT1cInRvZ2dsZVBhbmVsKGkpXCJcclxuICAgICAgY2xhc3M9XCJtYi01XCIgKm5nRm9yPVwibGV0IGZlZWRiYWNrIG9mIGxheW91dEZlZWRiYWNrO2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmZWVkYmFjaz8udHlwZT09PSdsYXlvdXQnXCI+TGF5b3V0IHZlcmlmaWNhdGlvbiBhc3NpZ25lZDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPnt7ZmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInBzLTAgcGUtMFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2ZlZWRiYWNrPy50YXNrRGF0YT8uY3JlYXRlZEJ5TmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2ZlZWRiYWNrPy50YXNrRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJmZWVkYmFjaz8udGFza0RhdGE/LnVzZXJOYW1lIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2ZlZWRiYWNrPy50YXNrRGF0YT8udXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tmZWVkYmFjaz8udGFza0RhdGE/LnN1Ym1pdFRpbWVfc3RyaW5nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXNzaWduZWVcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtMyBtZS00XCIgKm5nSWY9XCJmZWVkYmFjaz8uc3RhdHVzPT09J2NvbXBsZXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDNMNC41IDguNUwyIDZcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkxheW91dCBtYXRjaGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIHAtMyBtZS00XCIgKm5nSWY9XCJmZWVkYmFjaz8uc3RhdHVzPT09J2luY29tcGxldGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYgNFY2TTYgOEg2LjAwNU0xMSA2QzExIDguNzYxNDIgOC43NjE0MiAxMSA2IDExQzMuMjM4NTggMTEgMSA4Ljc2MTQyIDEgNkMxIDMuMjM4NTggMy4yMzg1OCAxIDYgMUM4Ljc2MTQyIDEgMTEgMy4yMzg1OCAxMSA2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+TGF5b3V0IG1pc21hdGNoPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtd2FybmluZyBwLTNcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZlZWRiYWNrPy5zdGF0dXM9PT0naW5jb21wbGV0ZScmJnBlbmRpbmdMYXlvdXRpc3N1ZXM+MFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3BlbmRpbmdMYXlvdXRpc3N1ZXN9fS97e2ZlZWRiYWNrPy5hbnN3ZXJzWzBdPy5pc3N1ZXM/Lmxlbmd0aH19IGFjdGlvbiBwZW5kaW5nXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtM1wiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmVlZGJhY2s/LnN0YXR1cz09PSdpbmNvbXBsZXRlJyYmYXBwcm92ZWRMYXlvdXRpc3N1ZXM+MCYmcGVuZGluZ0xheW91dGlzc3Vlcz09PTBcIj5cclxuICAgICAgICAgICAgICAgICAge3thcHByb3ZlZExheW91dGlzc3Vlc319L3t7ZmVlZGJhY2s/LmFuc3dlcnNbMF0/Lmlzc3Vlcz8ubGVuZ3RofX0gYWN0aW9uIGRvbmVcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uICNhY2NvcmRpb249XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIGNsYXNzPVwibXQtNVwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXNzdWVzIG9mIGZlZWRiYWNrLmFuc3dlcnM7bGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25JdGVtPVwie3sgJ25ld2RldGFpbHMtJyArIGsgfX1cIiBbY29sbGFwc2VkXT1cImlzc3Vlcy5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e2l0ZW0/LnF1ZXN0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2Pnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlTmFtZX19PC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c0ZpeHR1cmUoZml4dHVyZUluZGV4LGl0ZW0/LkRldGFpbHMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmaXh0dXJlSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWZpeHR1cmVJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Zml4dHVyZUluZGV4KzF9fS97e2l0ZW0/LkRldGFpbHMubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5leHRGaXh0dXJlKGZpeHR1cmVJbmRleCxpdGVtPy5EZXRhaWxzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXRlbT8uRGV0YWlscy5sZW5ndGg+Zml4dHVyZUluZGV4KzFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiKGl0ZW0/LkRldGFpbHMubGVuZ3RoKT09PShmaXh0dXJlSW5kZXgrMSlcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZEltZyBtdC00IHBzLTMgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZUNhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgVHlwZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZVRlbXBsYXRlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5UZW1wbGF0ZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVUZW1wbGF0ZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpeHR1cmVMaXN0IG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZDb25maWdGb3JtYXRlZFwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+e3tmaXh0dXJlTGlzdD8uem9uZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBzaGxlZmRhdGEgb2YgZml4dHVyZUxpc3Q/Lml0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaGVsZiB7e3NobGVmZGF0YT8uc2hlbGZOdW1iZXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PkNhcGFjaXR5Ont7c2hsZWZkYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0Zvcj1cImxldCBicmFuZHMgb2Ygc2hsZWZkYXRhPy5wcm9kdWN0QnJhbmROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zZWNvbmRhcnkgbWUtM1wiPnt7YnJhbmRzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uYXNzb2NpYXRlZEVsZW1lbnRUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkxvY2F0aW9uOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5hc3NvY2lhdGVkRWxlbWVudFR5cGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmFzc29jaWF0ZWRFbGVtZW50TnVtYmVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5hc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+UG9zaXRpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+KEwgdG8gUik8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm5ld2Fzc29jaWF0ZWRFbGVtZW50VHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5OZXcgTG9jYXRpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm5ld2Fzc29jaWF0ZWRFbGVtZW50VHlwZX19e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm5ld2Fzc29jaWF0ZWRFbGVtZW50TnVtYmVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5uZXdhc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+TmV3IFBvc2l0aW9uOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPihMIHRvIFIpPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm5ld2Fzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25LZXlzPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J2V4dHJhRml4dHVyZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgRml4dHVyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRml4dHVyZSBmZWVkYmFjayBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlIT09J2V4dHJhRml4dHVyZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhbm9ncmFtIGZpeHR1cmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlbG93IGZpeHR1cmUgaXMgaW4gdGhlIHBsYW5vZ3JhbSBidXQgbm90IGluIHN0b3JlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhbGwtdmlld3BvcnQgdy0xMDAgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEhlYWRlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImhlYWRlci1ibG9ja1wiIGNsYXNzPVwiaGVhZGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQm9keSBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrXCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25LZXlzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ1cGRhdGVTdHlsZShpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0saSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJ2JvcmRlcjoxcHggc29saWQgJysgdGhpcy5zaGxlZkNvbG9yW2ldLmJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uY29sb3I/LnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjppdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy50ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEBpZihpdGVtLnNoZWxmVHlwZSA9PT0nc2hlbGYnKXsgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NoZWxmJyArIGlcIiBjbGFzcz1cImJsb2NrIHNoZWxmIGhpZGUtc2Nyb2xsIGQtYmxvY2sgdGV4dC1lbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzpzaGVsZkRhdGE/LnpvbmUgPyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2hlbGZEYXRhLnpvbmVdPy5jb2xvcj8uYmcgOiBzaGxlZkNvbG9yW2ldLmJnfVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzaGVsZkRhdGE/LnpvbmVdPy5jb2xvcj8udGV4dEJnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzaGVsZkRhdGE/LnpvbmVdPy5jb2xvcj8udGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZm9vdGVyPy5sYWJlbCA/PyAnJ319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5pbWFnZSYmaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5pbWFnZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlN0b3JlIGZpeHR1cmU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tjZG5Vcmx9fXt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5pbWFnZX19XCIgYWx0PVwiaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uY29tbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQWdyZWVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkICYgcmVwdWJsaXNoZWRcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbmVkIGV4aXN0aW5nXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJyYmc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHdvLXRvbmUtYnRuIG1lLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2FncmVlJyxmZWVkYmFjaz8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdLl9pZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZ3JlZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Rpc2FncmVlJyxmZWVkYmFjaz8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5faWQpXCI+RGlzYWdyZWU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiICpuZ0lmPVwiZmVlZGJhY2s/LmFuc3dlcnNbMF0/LnZpZGVvJiZmZWVkYmFjaz8uYW5zd2Vyc1swXT8udmlkZW8hPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBWaWRlbzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHZpZGVvIGNvbnRyb2xzIHNyYz1cInt7Y2RuVXJsfX17e2ZlZWRiYWNrPy5hbnN3ZXJzWzBdPy52aWRlb319XCIgY2xhc3M9XCJtdC00IHctMTAwXCI+PC92aWRlbz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gXHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtdC01XCIgKm5nSWY9XCJsYXlvdXRGZWVkYmFjay5sZW5ndGg9PT0wJiZzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aD09PTAmJnZtRmVlZGJhY2subGVuZ3RoPT09MFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiID5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOTRcIiBoZWlnaHQ9XCI5NFwiIHZpZXdCb3g9XCIwIDAgOTQgOTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBmaWxsPVwiI0RBRjFGRlwiLz5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjEzLjMzMzNcIi8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTM1Ljk1MDIgNDguMTk5N0MzNS42NDg5IDQ4LjIzMTUgMzUuMzQyMiA0OC4yNTA1IDM1LjAzMTIgNDguMjUwNUMzNC44NjE3IDQ4LjI1MDUgMzQuNjk0NCA0OC4yNDM2IDM0LjUyOTMgNDguMjMzOVY1OC42MDY5QzM0LjUyOTMgNjAuMDM0OSAzNS43MTIzIDYxLjIyNiAzNy4yMDAyIDYxLjIyNjFINTYuODA0N0M1OC4yOTI3IDYxLjIyNjEgNTkuNDc1NiA2MC4wMzUgNTkuNDc1NiA1OC42MDY5VjQ4LjIzNDlDNTkuMzEzNyA0OC4yNDQxIDU5LjE0OTggNDguMjUwNSA1OC45ODU0IDQ4LjI1MDVDNTguNjcxNCA0OC4yNTA1IDU4LjM2MDggNDguMjMyNSA1OC4wNTQ3IDQ4LjE5OTdWNTUuOTg3OEgzNS45NTAyVjQ4LjE5OTdaTTU3LjkzMTYgMzIuNzczOUgzNi4wNzMyQzM1Ljg5NTkgMzIuNzczOSAzNS43NDA2IDMyLjg2NjcgMzUuNjYzMSAzMi45ODc4TDM1LjY2MTEgMzIuOTg5N0wzMi4xNTE0IDM4LjQ3MzFMMzIuMDU2NiAzOC42MjA2QzMwLjgzMTEgNDAuNzQwNCAzMi4wOTU3IDQzLjQ2NzQgMzQuNDQ3MyA0My43NzY5QzM0LjY0ODIgNDMuODAxMyAzNC44Mzc5IDQzLjgxNTkgMzUuMDI1NCA0My44MTU5QzM2LjI1NTUgNDMuODE1OSAzNy4zNDM0IDQzLjI4NzIgMzguMTAwNiA0Mi40NjUzTDM5LjAyMjUgNDEuNDY0NEwzOS45NDE0IDQyLjQ2ODNDNDAuNjkwMyA0My4yODYzIDQxLjc3NyA0My44MTU5IDQzLjAxNDYgNDMuODE1OUM0NC4yNDY3IDQzLjgxNTggNDUuMzM4NiA0My4yODU2IDQ2LjA4NjkgNDIuNDY4M0w0Ny4wMDg4IDQxLjQ2MTRMNDcuOTMwNyA0Mi40NjgzQzQ4LjY3OSA0My4yODU3IDQ5Ljc3MDcgNDMuODE1OSA1MS4wMDI5IDQzLjgxNTlDNTIuMjM1MSA0My44MTU5IDUzLjMyNjggNDMuMjg1NyA1NC4wNzUyIDQyLjQ2ODNMNTQuOTk3MSA0MS40NjE0TDU1LjkxODkgNDIuNDY4M0M1Ni42NjczIDQzLjI4NTcgNTcuNzYgNDMuODE1OSA1OC45OTIyIDQzLjgxNTlDNTkuMTczNiA0My44MTU5IDU5LjM2ODcgNDMuODAyMSA1OS41Njg0IDQzLjc3NzhINTkuNTY3NEM2MS45NjExIDQzLjQ1NzMgNjMuMjI5MyA0MC42MDc4IDYxLjg2MTMgMzguNDczMUw2MS44NjA0IDM4LjQ3NDFMNTguMzQzOCAzMi45OTA3TDU4LjM0MjggMzIuOTg3OEM1OC4yNjUzIDMyLjg2NjUgNTguMTA5MiAzMi43NzM5IDU3LjkzMTYgMzIuNzczOVpcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMi41XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+IFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGgzIG10LTJcIj5ObyBpc3N1ZTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlRoZSBzdG9yZSBkaWQgbm90IGZsYWcgaXQgYXMgYW4gaXNzdWUuPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj4iXX0=
491
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlDLFNBQVMsRUFBRSxLQUFLLEVBQWlCLFlBQVksRUFBRSxNQUFNLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRTlKLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQTtBQUUvRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBUzFDLE1BQU0sT0FBTyxpQ0FBaUM7SUE4QmxDO0lBQ0E7SUFDQTtJQUNBO0lBL0JjLFlBQVksQ0FBYztJQUNQLFNBQVMsQ0FBTTtJQUMxRCxjQUFjLEdBQVEsRUFBRSxDQUFDO0lBQ3pCLFVBQVUsR0FBUSxFQUFFLENBQUM7SUFDckIsV0FBVyxHQUFZLElBQUksQ0FBQTtJQUMzQixNQUFNLEdBQVksSUFBSSxDQUFBO0lBQ3RCLHlCQUF5QjtJQUN6QixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLGdCQUFnQixHQUFXLENB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QUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQXZoQlUsaUNBQWlDOzRGQUFqQyxpQ0FBaUMsaWJDZDlDLHF0c0ZBdTNDVTs7NEZEejJDRyxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0UsaUNBQWlDO2dMQU1uQixZQUFZO3NCQUFuQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ3FCLFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFtQmhDLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU0hFTEZfQ09MT1JTIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS9maXh0dXJlLXRlbXBsYXRlLmRhdGEnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Qb3B1cENvbXBvbmVudCB9IGZyb20gXCIuLi9jb25maXJtYXRpb24tcG9wdXAvY29uZmlybWF0aW9uLXBvcHVwLmNvbXBvbmVudFwiXHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLW1hbmFnZS1zdG9yZS1wbGFuby1mZWVkYmFja1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2suY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hbmFnZVN0b3JlUGxhbm9GZWVkYmFja0NvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcImJvZHlCbG9ja1wiKSBib2R5QmxvY2tSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2FjY29yZGlvbicsIHsgc3RhdGljOiBmYWxzZSB9KSBhY2NvcmRpb246IGFueTtcclxuICBsYXlvdXRGZWVkYmFjazogYW55ID0gW107XHJcbiAgdm1GZWVkYmFjazogYW55ID0gW107XHJcbiAgb3BlbmZpeHR1cmU6IGJvb2xlYW4gPSB0cnVlXHJcbiAgb3BlbnZtOiBib29sZWFuID0gdHJ1ZVxyXG4gIC8vIHNoZWxmRGV0YWlsczogYW55ID0gW11cclxuICBmaXh0dXJlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgZml4dHVyZXRhc2tJbmRleDogbnVtYmVyID0gMDtcclxuICB2bXRhc2tJbmRleDogbnVtYmVyID0gMDtcclxuICBhcHByb3ZlZExheW91dGlzc3VlczogbnVtYmVyID0gMFxyXG4gIHBlbmRpbmdMYXlvdXRpc3N1ZXM6IG51bWJlciA9IDBcclxuICBjb2xvckxpc3Q6IGFueSA9IHt9O1xyXG4gIHZtQ29uZmlnOiBhbnkgPSBbXTtcclxuICAvLyBzZWN0aW9uQ29uZmlnOiBhbnkgPSBbXTtcclxuICAvLyBzZWN0aW9uS2V5czogYW55ID0gW11cclxuICBzaGxlZkNvbG9yID0gU0hFTEZfQ09MT1JTO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHN0b3JlRml4dHVyZUxpc3Q6IGFueSA9IFtdO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRQbGFubzogYW55O1xyXG4gIEBJbnB1dCgpIHN0b3JlRmVlZGJhY2s6IGFueTtcclxuICBASW5wdXQoKSBzZWxlY3RlZElzc3VlOiBhbnk7XHJcbiAgQE91dHB1dCgpIGlzQXBwcm92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBzZWxlY3RlZEZpeHR1cmU6IGFueTtcclxuICBvcmlnaW5hbERhdGE6IGFueTtcclxuICBjZG5Vcmw6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzW1wiY3VycmVudFBsYW5vXCJdKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiY3VycmVudFBsYW5vXCIsIGNoYW5nZXNbXCJjdXJyZW50UGxhbm9cIl0uY3VycmVudFZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgIGlmIChjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgZmVlZGJhY2tEYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChmZWVkYmFja0RhdGE/LmxheW91dERhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmdldHBsYW5vRmVlZGJhY2soZmVlZGJhY2tEYXRhLmxheW91dERhdGEpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmZWVkYmFja0RhdGE/LmZpeHR1cmVEYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soZmVlZGJhY2tEYXRhLmZpeHR1cmVEYXRhKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmVlZGJhY2tEYXRhPy5WbURhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayhmZWVkYmFja0RhdGEuVm1EYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbXCJzZWxlY3RlZElzc3VlXCJdKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlID0gY2hhbmdlc1tcInNlbGVjdGVkSXNzdWVcIl0uY3VycmVudFZhbHVlO1xyXG4gICAgICBjb25zb2xlLmxvZyhcInNlbGVjdGVkSXNzdWVcIiwgdGhpcy5zZWxlY3RlZEZpeHR1cmUpO1xyXG5cclxuICAgICAgbGV0IG5ld0xheW91dERhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxEYXRhLmxheW91dERhdGEpXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwibmV3TGF5b3V0RGF0YVwiLCBuZXdMYXlvdXREYXRhKTtcclxuXHJcbiAgICAgIG5ld0xheW91dERhdGEuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgZGF0YS5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzLmZvckVhY2goKGlzc3VlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJiBpc3N1ZS5pc3N1ZVR5cGUgIT0gJ2V4dHJhRml4dHVyZScpIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsIGlzc3VlLnF1ZXN0aW9uKVxyXG4gICAgICAgICAgICAgIGlzc3VlLkRldGFpbHMgPSBbXVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzc3VlLmlzc3VlVHlwZSAhPSAnY29tbWVudHMnICYmIGlzc3VlLmlzc3VlVHlwZSAhPSBcImV4dHJhRml4dHVyZVwiKSB7XHJcbiAgICAgICAgICAgICAgaXNzdWUuRGV0YWlscyA9IGlzc3VlLkRldGFpbHMuZmlsdGVyKChzaGVsZjogYW55KSA9PiBzaGVsZi5maXh0dXJlSWQgPT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmZpeHR1cmVJZClcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjIyMjIyMjIyXCIsIGlzc3VlLmlzc3VlVHlwZSlcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjMzMzMzMzMzMzMzM1wiLCBpc3N1ZS5EZXRhaWxzKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJiBpc3N1ZS5pc3N1ZVR5cGUgPT09ICdleHRyYUZpeHR1cmUnKSB7XHJcbiAgICAgICAgICAgICAgaXNzdWUuRGV0YWlscyA9IGlzc3VlLkRldGFpbHMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuX2lkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZT8uaXNzdWVEYXRhPy5faWQpXHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCI0NDQ0NDQ0NDQ0NDQ0NDQ0XCIsIGlzc3VlLkRldGFpbHMpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuc2VsZWN0ZWRGaXh0dXJlLmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJiBpc3N1ZS5pc3N1ZVR5cGUgPT09ICdleHRyYUZpeHR1cmUnKSB7XHJcbiAgICAgICAgICAgICAgaXNzdWUuRGV0YWlscyA9IFtdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZWxlLmlzc3VlcyA9IGVsZS5pc3N1ZXMuZmlsdGVyKChpc3N1ZTogYW55KSA9PiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDApO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCI1NTU1NTU1NTU1NTU1NTU1NVwiLCBlbGUuaXNzdWVzKVxyXG4gICAgICAgICAgbGV0IGZpeHR1cmVjb3VudCA9IGVsZS5pc3N1ZXMuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlLmlzc3VlVHlwZSAhPSBcImV4dHJhRml4dHVyZVwiKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCI2NjY2NjY2NjY2NjZcIiwgZml4dHVyZWNvdW50KVxyXG4gICAgICAgICAgaWYgKGZpeHR1cmVjb3VudC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGVsZS5pc3N1ZXMgPSBlbGUuaXNzdWVzLmZpbHRlcigoaXNzdWU6IGFueSkgPT4gaXNzdWUuaXNzdWVUeXBlICE9IFwiZXh0cmFGaXh0dXJlXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgbmV3TGF5b3V0RGF0YSA9IG5ld0xheW91dERhdGEuZmlsdGVyKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gIShkYXRhLmFuc3dlcnNbMF0uaXNzdWVzLmxlbmd0aCA9PT0gMCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmdldHBsYW5vRmVlZGJhY2sobmV3TGF5b3V0RGF0YSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwibmV3TGF5b3V0RGF0YWFmdGVyXCIsIG5ld0xheW91dERhdGEpO1xyXG5cclxuICAgICAgbGV0IGZpeHR1cmVMaXN0ID0gdGhpcy5vcmlnaW5hbERhdGEuZml4dHVyZURhdGE/LmZpbHRlcihcclxuICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLmZpeHR1cmVJZCA9PT0gdGhpcy5zZWxlY3RlZEZpeHR1cmUuZml4dHVyZUlkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChmaXh0dXJlTGlzdCAmJiBmaXh0dXJlTGlzdD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuZml4dHVyZXRhc2tJbmRleCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKGZpeHR1cmVMaXN0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhbXSk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHZtTGlzdCA9IHRoaXMub3JpZ2luYWxEYXRhLlZtRGF0YT8uZmlsdGVyKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEuZml4dHVyZUlkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZS5maXh0dXJlSWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKHZtTGlzdCAmJiB2bUxpc3Q/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnZtdGFza0luZGV4ID0gMDtcclxuICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayh2bUxpc3QpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVWbWZlZWRiYWNrKFtdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZW52aXJvbm1lbnQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgICAgIGlmIChlbnYpIHtcclxuICAgICAgICAgIHRoaXMuY2RuVXJsID0gZW52LnBsYW5vZ3JhbUNETlxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHRvZ2dsZVBhbmVsKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMubGF5b3V0RmVlZGJhY2suZm9yRWFjaCgoaXRlbTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgICAgaXRlbS5jb2xsYXBzZWQgPSBpICE9PSBpbmRleDsgLy8gb25seSBzZWxlY3RlZCBwYW5lbCBzdGF5cyBvcGVuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdXBkYXRlU3R5bGUoZGF0YTogYW55LCBpOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmhhbmRsZVNlY3Rpb24oZGF0YSwgaSk7XHJcbiAgfVxyXG4gIGdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhmaXh0dXJlRGF0YTogYW55KSB7XHJcblxyXG4gICAgaWYgKGZpeHR1cmVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5sYXlvdXRGZWVkYmFjay5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBkYXRhLmNvbGxhcHNlZCA9IHRydWVcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMub3BlbmZpeHR1cmUgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgZml4dHVyZURhdGEuZm9yRWFjaCgoc2hlbGY6IGFueSwgaTogYW55KSA9PiB7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZyAmJlxyXG4gICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoXHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscyA9IHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgIHNoZWxmPy5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgZWxlPy5pc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5mb3JFYWNoKChuZXdzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG5ld3NoZWxmPy5zaGVsZkNvbmZpZyAmJiBuZXdzaGVsZj8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKG5ld3NoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMobmV3c2hlbGYuc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgIFtcInByb2R1Y3RjYXRlZ29yeVdyb25nXCIsIFwiYnJhbmRXcm9uZ1wiXS5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgICAgICBpc3N1ZS5pc3N1ZVR5cGVcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscy5mb3JFYWNoKChzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNoZWxmRGV0YWlscyA9IG5ld3NoZWxmLnNoZWxmQ29uZmlnLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAobmV3U2hlbGY6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2hlbGYuc2hlbGZOdW1iZXIgPT0gc2hlbGYuc2hlbGZOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzaGVsZi5vbGRTaGVsZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZy5wdXNoKHNoZWxmKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZy5zb3J0KFxyXG4gICAgICAgICAgICAgICAgICAgIChhOiBhbnksIGI6IGFueSkgPT4gYS5zaGVsZk51bWJlciAtIGIuc2hlbGZOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmRGV0YWlscyA9IG5ld3NoZWxmLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0b3JlRml4dHVyZUxpc3QgPSBmaXh0dXJlRGF0YTtcclxuICAgIGNvbnNvbGUubG9nKFwidGhpcy5zdG9yZUZpeHR1cmVMaXN0XCIsIHRoaXMuc3RvcmVGaXh0dXJlTGlzdCk7XHJcbiAgfVxyXG4gIGdldFN0b3JlVm1mZWVkYmFjayhWbURhdGE6IGFueSkge1xyXG5cclxuICAgIGlmIChWbURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm9wZW52bSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm9wZW5maXh0dXJlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5vcGVudm0pIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hY2NvcmRpb24uZXhwYW5kKCdkZXRhaWxzJyk7IC8vICdkZXRhaWxzJyBpcyB0aGUgSUQgb2YgdGhlIGl0ZW1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBWbURhdGEuZm9yRWFjaCgoc2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZyAmJlxyXG4gICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoXHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscyA9IHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgIGxldCB2bUNvbmZpZyA9IHNoZWxmLkZpeHR1cmVEYXRhLnZtQ29uZmlnO1xyXG4gICAgICAgIHNoZWxmPy5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBlbGUuY29tcGxldGVkSXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuc3RhdHVzID09PSBcImNvbXBsZXRlZFwiXHJcbiAgICAgICAgICApLmxlbmd0aDtcclxuICAgICAgICAgIGVsZT8uaXNzdWVzLmZvckVhY2goKGlzc3VlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaXNzdWU/LkRldGFpbHMuZm9yRWFjaCgobmV3c2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld3NoZWxmLnZtQ29uZmlnbmV3ID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld3NoZWxmLnZtQ29uZmlnKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWYgKG5ld3NoZWxmPy5zaGVsZkNvbmZpZyAmJiBuZXdzaGVsZj8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKG5ld3NoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMobmV3c2hlbGYuc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkRldGFpbHMgPSBuZXdzaGVsZi5zaGVsZkNvbmZpZztcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnZtQ29uZmlnbmV3LmZvckVhY2goKHZtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGlzc3VlLmlzc3VlVHlwZSA9PSBcIlZtTWlzbWF0Y2hcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnN0YXJ0WVBvc2l0aW9uID0gdm0ubmV3c3RhcnRZUG9zaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgdm0uZW5kWVBvc2l0aW9uID0gdm0ubmV3ZW5kWVBvc2l0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnhab25lID0gdm0ubmV3eFpvbmUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICB2bS55Wm9uZSA9IHZtLm5ld3lab25lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdm0ubmV3Vm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi52bUNvbmZpZ25ldy5wdXNoKC4uLnZtQ29uZmlnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy52bUZlZWRiYWNrID0gVm1EYXRhO1xyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLnZtRmVlZGJhY2tcIiwgdGhpcy52bUZlZWRiYWNrKTtcclxuICB9XHJcbiAgbmV4dEZpeHR1cmUoZml4dHVyZUluZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBpZiAodG90YWxEYXRhLmxlbmd0aCA+IGZpeHR1cmVJbmRleCArIDEpIHtcclxuICAgICAgdGhpcy5maXh0dXJlSW5kZXggPSBmaXh0dXJlSW5kZXggKyAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcmV2aW91c0ZpeHR1cmUoZml4dHVyZUluZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBpZiAoZml4dHVyZUluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLmZpeHR1cmVJbmRleCA9IGZpeHR1cmVJbmRleCAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5leHR0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyh0b3RhbERhdGEpO1xyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiBmaXh0dXJldGFza0luZGV4ICsgMSkge1xyXG4gICAgICB0aGlzLmZpeHR1cmV0YXNrSW5kZXggPSBmaXh0dXJldGFza0luZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXN0YXNrVm0odm10YXNrSW5kZXg6IG51bWJlciwgdG90YWxEYXRhOiBhbnkpIHtcclxuICAgIGlmICh2bXRhc2tJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy52bXRhc2tJbmRleCA9IHZtdGFza0luZGV4IC0gMTtcclxuICAgIH1cclxuICB9XHJcbiAgbmV4dHRhc2tWbSh2bXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2codG90YWxEYXRhKTtcclxuICAgIGlmICh0b3RhbERhdGEubGVuZ3RoID4gdm10YXNrSW5kZXggKyAxKSB7XHJcbiAgICAgIHRoaXMudm10YXNrSW5kZXggPSB2bXRhc2tJbmRleCArIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByZXZpb3VzdGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKGZpeHR1cmV0YXNrSW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuZml4dHVyZXRhc2tJbmRleCA9IGZpeHR1cmV0YXNrSW5kZXggLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRwbGFub0ZlZWRiYWNrKGxheW91dERhdGE6IGFueSkge1xyXG4gICAgbGF5b3V0RGF0YS5mb3JFYWNoKChkYXRhOiBhbnksIGk6IGFueSkgPT4ge1xyXG5cclxuICAgICAgaWYgKGkgPT09IDApIHtcclxuICAgICAgICBkYXRhLmNvbGxhcHNlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRhdGEuY29sbGFwc2VkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBkYXRhPy5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgZWxlLmlzc3VlcyA9IGVsZT8uaXNzdWVzLmZpbHRlcihcclxuICAgICAgICAgIChpc3N1ZTogYW55KSA9PiBpc3N1ZS5EZXRhaWxzICYmIGlzc3VlLkRldGFpbHMubGVuZ3RoID4gMFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wZW5kaW5nTGF5b3V0aXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzID09PSAncGVuZGluZycpLmxlbmd0aFxyXG4gICAgICAgIHRoaXMuYXBwcm92ZWRMYXlvdXRpc3N1ZXMgPSBlbGU/Lmlzc3Vlcy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgIT0gJ3BlbmRpbmcnKS5sZW5ndGhcclxuXHJcbiAgICAgICAgZWxlPy5pc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaXNzdWU/LkRldGFpbHMuZm9yRWFjaCgoc2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2hlbGY/LnNoZWxmQ29uZmlnICYmIHNoZWxmPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHNoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoc2hlbGYuc2hlbGZDb25maWcpO1xyXG4gICAgICAgICAgICAgIHNoZWxmLnNlY3Rpb25Db25maWcgPSB0aGlzLnN0b3JlRGF0YShzaGVsZi5zaGVsZkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgc2hlbGYuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhzaGVsZi5zZWN0aW9uQ29uZmlnKTtcclxuICAgICAgICAgICAgICBzaGVsZi5zaGVsZkRldGFpbHMgPSBzaGVsZi5zaGVsZkNvbmZpZztcclxuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIj09PT09PT09PT09PT1cIixzaGVsZilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sYXlvdXRGZWVkYmFjayA9IGxheW91dERhdGE7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgZm9ybWF0RGF0YShkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGdyb3VwZWRBcnJheSA9IE9iamVjdC52YWx1ZXMoXHJcbiAgICAgIGRhdGEucmVkdWNlKChhY2M6IGFueSwgaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgem9uZSA9IGl0ZW0uem9uZSB8fCBcInVuZGVmaW5lZFwiO1xyXG4gICAgICAgIGlmICghYWNjW3pvbmVdKSB7XHJcbiAgICAgICAgICBhY2Nbem9uZV0gPSB7IHpvbmUsIGl0ZW1zOiBbXSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBhY2Nbem9uZV0uaXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICB9LCB7fSlcclxuICAgICk7XHJcbiAgICByZXR1cm4gZ3JvdXBlZEFycmF5O1xyXG4gIH1cclxuICBzdG9yZURhdGEoc2hlbGZEYXRhOiBhbnkpIHtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBsZXQgc2VjdGlvbkNvbmZpZyA9IHNoZWxmRGF0YS5yZWR1Y2UoKGFjYzogYW55LCBlbGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlLnpvbmUpIHtcclxuICAgICAgICBpZiAoIWFjY1tlbGUuem9uZV0pIHtcclxuICAgICAgICAgIGFjY1tlbGUuem9uZV0gPSB7XHJcbiAgICAgICAgICAgIHN0YXJ0WVBvc2l0aW9uOiBlbGUuc2hlbGZOdW1iZXIsXHJcbiAgICAgICAgICAgIGVuZFlQb3NpdGlvbjogZWxlLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgICAuLi5lbGUsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnNobGVmQ29sb3JbY291bnRdLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGFjY1tlbGUuem9uZV0uZW5kWVBvc2l0aW9uID0gZWxlLnNoZWxmTnVtYmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG5cclxuICAgIC8vIHRoaXMuaGFuZGxldm1Qb3NpdGlvbihzZWN0aW9uQ29uZmlnKTtcclxuICAgIC8vIHRoaXMuaGFuZGxlU2VjdGlvbihzZWN0aW9uQ29uZmlnKTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIHNlY3Rpb25Db25maWc7XHJcbiAgfVxyXG5cclxuICBjb25maXJtYXRpb24oXHJcbiAgICB0eXBlOiBhbnksXHJcbiAgICBfaWQ6IGFueSxcclxuICAgIGFuc3dlcklkOiBhbnksXHJcbiAgICBpc3N1ZUlkOiBhbnksXHJcbiAgICBEZXRhaWxzSWQ6IGFueVxyXG4gICkge1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIF9pZDogX2lkLFxyXG4gICAgICBhbnN3ZXJJZDogYW5zd2VySWQsXHJcbiAgICAgIGlzc3VlSWQ6IGlzc3VlSWQsXHJcbiAgICAgIERldGFpbHNJZDogRGV0YWlsc0lkLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihDb25maXJtYXRpb25Qb3B1cENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJtZFwiLFxyXG4gICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcclxuICAgICAgd2luZG93Q2xhc3M6IFwiY3VzdG9tLWhlaWdodC1tb2RhbFwiLCAvLyA8LS0gQWRkIGEgY3VzdG9tIGNsYXNzIGhlcmVcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudHlwZSA9IHR5cGU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5pbnB1dERhdGEgPSBwYXlsb2FkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJzdWJtaXRcIikge1xyXG4gICAgICAgIHRoaXMuaXNBcHByb3ZlZC5lbWl0KHJlc3VsdCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxldm1Qb3NpdGlvbih2bURhdGE6IGFueSwgaTogYW55KSB7XHJcbiAgICBjb25zdCB2aWV3UG9ydCA9IHRoaXMuYm9keUJsb2NrUmVmPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgYm9keUhlaWdodCA9IHZpZXdQb3J0Py5vZmZzZXRIZWlnaHQ7XHJcbiAgICBjb25zdCBib2R5V2lkdGggPSB2aWV3UG9ydD8ub2Zmc2V0V2lkdGg7XHJcbiAgICBsZXQgc3R5bGU7XHJcbiAgICAvLyB0aGlzLnZtQ29uZmlnLmZvckVhY2goKGU6IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICBsZXQgc3RhcnRTaGVsZiA9IHZtRGF0YT8uc3RhcnRZUG9zaXRpb24gPz8gMTtcclxuICAgIGxldCBlbmRTaGVsZiA9IHZtRGF0YT8uZW5kWVBvc2l0aW9uID8/IDE7XHJcbiAgICBjb25zdCB2bSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidm1cIiArIGkpO1xyXG4gICAgaWYgKCF2bSkgcmV0dXJuO1xyXG5cclxuICAgIGxldCB3aWR0aCA9IDEwMDtcclxuICAgIGxldCBoZWlnaHQgPSAxMDA7XHJcbiAgICBsZXQgeCA9IDA7XHJcbiAgICBsZXQgeSA9IDA7XHJcblxyXG4gICAgbGV0IHlTdGFydCA9IDA7XHJcbiAgICBmb3IgKGxldCBrID0gMDsgayA8IHN0YXJ0U2hlbGYgLSAxOyBrKyspIHtcclxuICAgICAgY29uc3Qgc2hlbGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNoZWxmXCIgKyBrKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKCFzaGVsZikgcmV0dXJuO1xyXG5cclxuICAgICAgeVN0YXJ0ICs9IHNoZWxmLm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcGxhY2VtZW50SGVpZ2h0ID0gMDtcclxuICAgIGZvciAobGV0IGsgPSBzdGFydFNoZWxmIC0gMTsgayA8IGVuZFNoZWxmOyBrKyspIHtcclxuICAgICAgY29uc3QgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hlbGZcIiArIGspIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXMpIHJldHVybjtcclxuICAgICAgcGxhY2VtZW50SGVpZ2h0ICs9IHMub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAodm1EYXRhPy54Wm9uZSkge1xyXG4gICAgICBjYXNlIFwibGVmdFwiOlxyXG4gICAgICAgIHggPSAwO1xyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICB3aWR0aCA9IDEwMDtcclxuICAgICAgICB4ID0gYm9keVdpZHRoIC0gd2lkdGg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtaWRkbGVcIjpcclxuICAgICAgICB3aWR0aCA9IDEwMDtcclxuICAgICAgICB4ID0gKGJvZHlXaWR0aCAtIHdpZHRoKSAvIDI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJzdHJldGNoXCI6XHJcbiAgICAgICAgd2lkdGggPSBib2R5V2lkdGg7XHJcbiAgICAgICAgeCA9IDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh2bURhdGE/Lnlab25lKSB7XHJcbiAgICAgIGNhc2UgXCJ0b3BcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyBwbGFjZW1lbnRIZWlnaHQgLSAyMCA6IDEwMDtcclxuICAgICAgICB5ID0geVN0YXJ0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwibWlkZGxlXCI6XHJcbiAgICAgICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0IDwgMTAwID8gcGxhY2VtZW50SGVpZ2h0IC0gMjAgOiAxMDA7XHJcbiAgICAgICAgeSA9IChwbGFjZW1lbnRIZWlnaHQgLSBoZWlnaHQpIC8gMiArIHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImJvdHRvbVwiOlxyXG4gICAgICAgIGhlaWdodCA9IHBsYWNlbWVudEhlaWdodCA8IDEwMCA/IHBsYWNlbWVudEhlaWdodCAtIDIwIDogMTAwO1xyXG4gICAgICAgIHkgPSBwbGFjZW1lbnRIZWlnaHQgLSBoZWlnaHQgKyB5U3RhcnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJzdHJldGNoXCI6XHJcbiAgICAgICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0O1xyXG4gICAgICAgIHkgPSB5U3RhcnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZtRGF0YS5uZXdWbSkge1xyXG4gICAgICBzdHlsZSA9IGB3aWR0aDoke3dpZHRofXB4O2hlaWdodDoke2hlaWdodH1weDt0cmFuc2Zvcm06dHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KTt6LWluZGV4OjI7YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpO2A7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN0eWxlO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG4gIGhhbmRsZVNlY3Rpb24oc2VjdGlvbkNvbmZpZzogYW55LCBpOiBhbnkpIHtcclxuICAgIGNvbnN0IHZpZXdQb3J0ID0gdGhpcy5ib2R5QmxvY2tSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBib2R5SGVpZ2h0ID0gdmlld1BvcnQ/Lm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IGJvZHlXaWR0aCA9IHZpZXdQb3J0Py5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICBsZXQgc3R5bGU6IGFueTtcclxuICAgIC8vIE9iamVjdC5rZXlzKHNlY3Rpb25Db25maWcpLmZvckVhY2goKGU6IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICBsZXQgc3RhcnRTaGVsZiA9IHNlY3Rpb25Db25maWc/LnN0YXJ0WVBvc2l0aW9uID8/IDE7XHJcbiAgICBsZXQgZW5kU2hlbGYgPSBzZWN0aW9uQ29uZmlnPy5lbmRZUG9zaXRpb24gPz8gc2VjdGlvbkNvbmZpZy5sZW5ndGg7XHJcbiAgICBjb25zdCBzZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWN0aW9uXCIgKyBpKTtcclxuICAgIGlmICghc2VjdGlvbikgcmV0dXJuO1xyXG5cclxuICAgIGxldCB3aWR0aCA9IDEwMDtcclxuICAgIGxldCBoZWlnaHQgPSA1MDtcclxuICAgIGxldCB4ID0gMDtcclxuICAgIGxldCB5ID0gMDtcclxuXHJcbiAgICBsZXQgeVN0YXJ0ID0gMDtcclxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc3RhcnRTaGVsZiAtIDE7IGsrKykge1xyXG4gICAgICBjb25zdCBzaGVsZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hlbGZcIiArIGspIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXNoZWxmKSByZXR1cm47XHJcblxyXG4gICAgICB5U3RhcnQgKz0gc2hlbGYub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwbGFjZW1lbnRIZWlnaHQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IHN0YXJ0U2hlbGYgLSAxOyBrIDwgZW5kU2hlbGY7IGsrKykge1xyXG4gICAgICBjb25zdCBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgICBpZiAoIXMpIHJldHVybjtcclxuICAgICAgcGxhY2VtZW50SGVpZ2h0ICs9IHMub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgeCA9IDEwO1xyXG4gICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0IDwgMTAwID8gcGxhY2VtZW50SGVpZ2h0IC0gMjAgOiA1MDtcclxuICAgIHkgPSAocGxhY2VtZW50SGVpZ2h0IC0gaGVpZ2h0KSAvIDIgKyB5U3RhcnQ7XHJcblxyXG4gICAgc3R5bGUgPSBgd2lkdGg6JHt3aWR0aH1weDtoZWlnaHQ6JHtoZWlnaHR9cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgke3h9cHgsICR7eX1weClgO1xyXG4gICAgLy8gbGV0IHZtRGV0YWlscyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGB2bS1wbGFjZWhvbGRlciR7aX1gKTtcclxuICAgIC8vIGlmICh2bURldGFpbHMpIHtcclxuICAgIC8vICAgdm1EZXRhaWxzLnN0eWxlLmJvcmRlciA9IGAxcHggc29saWQgJHt0aGlzLnNobGVmQ29sb3JbaV0uYm9yZGVyfWA7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBzdHlsZS5wdXNoKHt6b25lOmUsc3R5bGU6c3R5bGVMaXN0fSlcclxuICAgIC8vIH0pO1xyXG4gICAgcmV0dXJuIHN0eWxlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIiwiPHNlY3Rpb24gKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxzZWN0aW9uICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGJvcmRlci1ib3R0b21cIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZVJlc3BvbnNlXCI+U3RvcmUgcmVzcG9uc2U8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5vcm1hbFRleHQgbWItNVwiPkNsaWNrIGEgZml4dHVyZSBvciB2aWV3IGFsbDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTE4LjMzNDYgMi41SDEuNjY3OTdMOC4zMzQ2NCAxMC4zODMzVjE1LjgzMzNMMTEuNjY4IDE3LjVWMTAuMzgzM0wxOC4zMzQ2IDIuNVpcIiBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgbmdiQWNjb3JkaW9uICNhY2NvcmRpb249XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIGNsYXNzPVwibXQtNVwiICpuZ0lmPVwidm1GZWVkYmFjay5sZW5ndGg+MFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdiBuZ2JBY2NvcmRpb25JdGVtPVwiZGV0YWlsc1wiIFtjb2xsYXBzZWRdPVwib3BlbnZtXCIgY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0wXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgbGF5b3V0LUxiZWxcIj5cclxuICAgICAgICAgICAgICA8ZGl2PlZtIHZlcmlmaWNhdGlvbiBhc3NpZ25lZDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPnt7dm1GZWVkYmFja1swXT8udGFza0RhdGE/LmNyZWF0ZWRBdCB8ZGF0ZTogJ2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicHMtMCBwZS0wXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c3Rhc2tWbSh2bXRhc2tJbmRleCx2bUZlZWRiYWNrKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwidm10YXNrSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIXZtdGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YS5maXh0dXJlTmFtZX19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3ZtdGFza0luZGV4KzF9fS97e3ZtRmVlZGJhY2subGVuZ3RofX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5leHR0YXNrVm0odm10YXNrSW5kZXgsdm1GZWVkYmFjaylcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInZtRmVlZGJhY2subGVuZ3RoPnZtdGFza0luZGV4KzFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiKHZtRmVlZGJhY2subGVuZ3RoKT09PSh2bXRhc2tJbmRleCsxKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIG5hbWU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhdGVnb3J5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplIChXaWR0aCk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgc2hlbHZlczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgcHJvZHVjdCBjYXBhY2l0eTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSBkZXNpZ25cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIEZpeHR1cmUgZGVzaWduZWQgYnkgdGhlIHBsYW5vZ3JhbSB0ZWFtXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgPz8gJyd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI2JvZHlCbG9jayBpZD1cImJvZHlCbG9ja1wiIGNsYXNzPVwiYm9keS1ibG9jayB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZtIG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8udm1Db25maWc7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIid2bScgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiIFtzdHlsZV09XCJoYW5kbGV2bVBvc2l0aW9uKHZtLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ2bT8uaW1nU3JjXCIgKm5nSWY9XCJ2bT8uaW1nU3JjXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlXCI+e3t2bT8udm1OYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6J3doaXRlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOid3aGl0ZSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2hlbGYgQ2FwYWNpdHkgOiB7e3NoZWxmRGF0YT8ucHJvZHVjdFBlclNoZWxmfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBGb290ZXIgYmxvY2sgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cD4ge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlzc3VlcyBvZiB2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2VycztsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnbmV3ZGV0YWlscy0nICsgayB9fVwiIFtjb2xsYXBzZWRdPVwiaXNzdWVzLmNvbGxhcHNlZFwiIGNsYXNzPVwibWItNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXNzdWVzLmlzc3VlcztsZXQgayA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBuZ2JBY2NvcmRpb25CdXR0b24gY2xhc3M9XCJtYWluaGVhZGluZyBwLTMgYmFja2dyb3VuZEltZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgbGF5b3V0LUxiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7aXRlbT8ucXVlc3Rpb259fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgbXQtNVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdWbU1pc3NpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIGFkZGl0aW9uYWwgVk1zOiB7eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtQ29uZmlnLmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdleHRyYVZtJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBhZGRpdGlvbmFsIFZNczoge3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nVm1NaXNtYXRjaCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgbWlzcGxhY2VkIFZNczoge3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZtRGF0YSBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtQ29uZmlnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nVm1NaXNtYXRjaCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8udm1OYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlZNIE5hbWUgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8udm1OYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8uc3RhcnRZUG9zaXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+UGxhY2VtZW50IHN0YXJ0IDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+U2hlbGYge3t2bURhdGE/LnN0YXJ0WVBvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5lbmRZUG9zaXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+UGxhY2VtZW50IEVuZCA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlNoZWxmIHt7dm1EYXRhPy5lbmRZUG9zaXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lnhab25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkhvcml6b250YWwgem9uZSA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1EYXRhPy54Wm9uZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8ucG9zaXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+cG9zaXRpb24gOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8ucG9zaXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J1ZtTWlzbWF0Y2gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lm5ld3N0YXJ0WVBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlBsYWNlbWVudCBzdGFydCA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlNoZWxmIHt7dm1EYXRhPy5uZXdzdGFydFlQb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8ubmV3ZW5kWVBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlBsYWNlbWVudCBFbmQgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5TaGVsZiB7e3ZtRGF0YT8ubmV3ZW5kWVBvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXd4Wm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ib3Jpem9udGFsIHpvbmUgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8ubmV3eFpvbmV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lm5ld3Bvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnBvc2l0aW9uIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/Lm5ld3Bvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtQ29uZmlnPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIFJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXh0dXJlIGZlZWRiYWNrIGJ5IHRoZSBzdG9yZSB0ZWFtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgPz8gJyd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2sgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2bSBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtQ29uZmlnbmV3O2xldCBtPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCIndm0nICsgbVwiIGNsYXNzPVwidm0tYmxvY2tcIiBbc3R5bGVdPVwiaGFuZGxldm1Qb3NpdGlvbih2bSxtKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIG1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ2bS5uZXdWbSA/ICdyZWRCb3JkZXInIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwidm0/LmltZ1NyY1wiICpuZ0lmPVwidm0/LmltZ1NyY1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZVwiPnt7dm0/LnZtTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGgzPnt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9oMz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NoZWxmJyArIGlcIiBjbGFzcz1cImJsb2NrIHNoZWxmIGhpZGUtc2Nyb2xsIGQtYmxvY2sgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOid3aGl0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjond2hpdGUnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/PyAnJ319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2UmJnZtRmVlZGJhY2tbdm10YXNrSW5kZXhdLmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XS5hbnN3ZXJzWzBdPy5pbWFnZX19XCIgYWx0PVwiaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIml0ZW0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBpdGVtPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkFncmVlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZCAmIHJlcHVibGlzaGVkXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdkaXNhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkRpc2FncmVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW5lZCBleGlzdGluZ1wiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTUgcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkfHxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJyYmaXRlbS5pc3N1ZVR5cGU9PT0nY29tbWVudHMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdhZ3JlZScsdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdyZWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdkaXNhZ3JlZScsdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uX2lkKVwiPkRpc2FncmVlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pc3N1ZXM/Lmxlbmd0aD09PTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlJiZ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlN0b3JlIGZpeHR1cmU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiIGFsdD1cImltYWdlXCIgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5jb21tZW50cy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWQgYXMgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJBZ3JlZWQsIHVwZGF0ZWQgJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHVibGlzaGVkXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsIHJldGFpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aD4wXCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJkZXRhaWxzZml4dHVyZVwiIFtjb2xsYXBzZWRdPVwib3BlbmZpeHR1cmVcIiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+Rml4dHVyZSB2ZXJpZmljYXRpb24gYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj57e3N0b3JlRml4dHVyZUxpc3RbMF0/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInBzLTAgcGUtMFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicHJldmlvdXN0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4LHN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmaXh0dXJldGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFmaXh0dXJldGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLmZpeHR1cmVOYW1lfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7Zml4dHVyZXRhc2tJbmRleCsxfX0ve3tzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZXh0dGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleCxzdG9yZUZpeHR1cmVMaXN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdC5sZW5ndGg+Zml4dHVyZXRhc2tJbmRleCsxXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIihzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aCk9PT0oZml4dHVyZXRhc2tJbmRleCsxKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgbmFtZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplIChXaWR0aCk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgc2hlbHZlczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlRvdGFsIHByb2R1Y3QgY2FwYWNpdHk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSBkZXNpZ25cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIEZpeHR1cmUgZGVzaWduZWQgYnkgdGhlIHBsYW5vZ3JhbSB0ZWFtXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25LZXlzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ1cGRhdGVTdHlsZShzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInYm9yZGVyOjFweCBzb2xpZCAnK3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8uYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8udGV4dEJnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy50ZXh0fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzaGVsZicgKyBpXCIgY2xhc3M9XCJibG9jayBzaGVsZiBoaWRlLXNjcm9sbCBkLWJsb2NrIHRleHQtZW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzpzaGVsZkRhdGE/LnpvbmUgPyBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy5iZyA6IHNobGVmQ29sb3JbaV0uYmd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NoZWxmRGF0YS56b25lXT8uY29sb3I/LnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NoZWxmRGF0YS56b25lXT8uY29sb3I/LnRleHR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2hlbGYgQ2FwYWNpdHkgOiB7e3NoZWxmRGF0YT8ucHJvZHVjdFBlclNoZWxmfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gRm9vdGVyIGJsb2NrIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+IHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlzc3VlcyBvZiBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzO2xldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSXRlbT1cInt7ICduZXdkZXRhaWxzLScgKyBrIH19XCIgW2NvbGxhcHNlZF09XCJpc3N1ZXMuY29sbGFwc2VkXCIgY2xhc3M9XCJtYi01XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpc3N1ZXMuaXNzdWVzO2xldCBrID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYkFjY29yZGlvbkJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nIHAtMyBiYWNrZ3JvdW5kSW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtPy5xdWVzdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtNVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZUNhdGVnb3J5fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJldGVtcGxhdGVOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlRlbXBsYXRlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZXRlbXBsYXRlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIml0ZW0/Lmlzc3VlVHlwZT09PSdzaXplV3JvbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlNpemU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlV2lkdGg/LnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlV2lkdGg/LnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/Lmlzc3VlVHlwZT09PSdwcm9kdWN0Y2F0ZWdvcnlXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbWlzc2luZyBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm1pc3NpbmdEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJtaXNzaW5nPy56b25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+e3ttaXNzaW5nPy56b25lfX06PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBtaXNzaW5nPy5wcm9kdWN0Q2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e2NhdGVnb3J5fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5pc3N1ZVR5cGU9PT0nYnJhbmRXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbWlzc2luZyBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm1pc3NpbmdEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJtaXNzaW5nPy56b25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+e3ttaXNzaW5nPy56b25lfX06PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiICpuZ0Zvcj1cImxldCBicmFuZCBvZiBtaXNzaW5nPy5icmFuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7YnJhbmR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/Lmlzc3VlVHlwZSE9PSdicmFuZFdyb25nJyYmaXRlbT8uaXNzdWVUeXBlIT09J3Byb2R1Y3RjYXRlZ29yeVdyb25nJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZml4dHVyZUxpc3Qgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkNvbmZpZ0Zvcm1hdGVkXCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj57e2ZpeHR1cmVMaXN0Py56b25lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IHNobGVmZGF0YSBvZiBmaXh0dXJlTGlzdD8uaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaGVsZiB7e3NobGVmZGF0YT8uc2hlbGZOdW1iZXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+Q2FwYWNpdHk6e3tzaGxlZmRhdGE/LnByb2R1Y3RQZXJTaGVsZn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdGb3I9XCJsZXQgYnJhbmRzIG9mIHNobGVmZGF0YT8ucHJvZHVjdEJyYW5kTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zZWNvbmRhcnkgbWUtM1wiPnt7YnJhbmRzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgUmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSByZXNwb25zZSBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIlsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pID8gJ2JvcmRlcjoxcHggc29saWQgcmVkJyA6ICcnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKTtiYWNrZ3JvdW5kOiAjRjJGM0Y3O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ3Byb2R1Y3RjYXRlZ29yeVdyb25nJywgJ2JyYW5kV3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5pc3N1ZVR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjk2OXB4IHNvbGlkIHZhcigtLUdyYXktMzAwLCAjRDBENUREKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZVwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF0gPyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXSA6IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8uWzBdfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhWydwcm9kdWN0Y2F0ZWdvcnlXcm9uZycsICdicmFuZFdyb25nJ10uaW5jbHVkZXMoaXRlbT8uaXNzdWVUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25LZXlzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzZWN0aW9uJyArIGlcIiBjbGFzcz1cInZtLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwidXBkYXRlU3R5bGUoaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjk2OXB4IHNvbGlkIHZhcigtLUdyYXktMzAwLCAjRDBENUREKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NoZWxmJyArIGlcIiBjbGFzcz1cImJsb2NrIHNoZWxmIGhpZGUtc2Nyb2xsIGQtYmxvY2sgdGV4dC1lbmRcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItdG9wJzooaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnPy5bc2hlbGZEYXRhLnpvbmVdPy5zdGFydFlQb3NpdGlvbiA9PT0gaSsgMSAmJiAhWydGaXh0dXJlIHR5cGUgaXMgd3JvbmcnLCdGaXh0dXJlIHNpemUgaXMgd3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5xdWVzdGlvbikpICA/ICcwLjc3MXB4IHNvbGlkIHJlZCcgOiAnMC43NzFweCBzb2xpZCB2YXIoLS1HcmF5LTQwMCwgIzk4QTJCMyknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLWJvdHRvbSc6KGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZz8uW3NoZWxmRGF0YS56b25lXT8uZW5kWVBvc2l0aW9uID09PSBpKyAxICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgPyAnIDAuNzcxcHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItbGVmdCc6KGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZz8uW3NoZWxmRGF0YS56b25lXT8uZW5kWVBvc2l0aW9uID49IGkrIDEgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcgMC43NzFweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yaWdodCc6KGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZz8uW3NoZWxmRGF0YS56b25lXT8uZW5kWVBvc2l0aW9uID49IGkrIDEgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcgMC43NzFweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLUdyYXktMTAwLCAjZjhmOWZiKScsfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZCc6ICd2YXIoLS1HcmF5LTEwMCwgI2ViZWVmMyknfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlJiZzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlN0b3JlIGZpeHR1cmU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tjZG5Vcmx9fXt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiIGFsdD1cImltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJpdGVtPy5jb21tZW50cy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgaXRlbT8uY29tbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0IGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZSE9PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWQgYXMgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJBZ3JlZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQgJiByZXB1Ymxpc2hlZFwiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nZGlzYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJEaXNhZ3JlZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWluZWQgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnJiZzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZHx8aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJml0ZW0uaXNzdWVUeXBlPT09J2NvbW1lbnRzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0d28tdG9uZS1idG4gbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignYWdyZWUnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdyZWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdkaXNhZ3JlZScsc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5faWQpXCI+RGlzYWdyZWU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaXNzdWVzPy5sZW5ndGg9PT0wXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlJiZzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlfX1cIiBhbHQ9XCJpbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWQgYXMgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJBZ3JlZWQsIHVwZGF0ZWQgJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHVibGlzaGVkXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsIHJldGFpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICBcclxuICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cImxheW91dEZlZWRiYWNrLmxlbmd0aD4wXCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnZGV0YWlscy0nICsgaSB9fVwiIFtjb2xsYXBzZWRdPVwiZmVlZGJhY2suY29sbGFwc2VkXCIgKGhlYWRlckNsaWNrKT1cInRvZ2dsZVBhbmVsKGkpXCJcclxuICAgICAgY2xhc3M9XCJtYi01XCIgKm5nRm9yPVwibGV0IGZlZWRiYWNrIG9mIGxheW91dEZlZWRiYWNrO2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmZWVkYmFjaz8udGFza1R5cGU9PT0naW5pdGlhbCdcIj5MYXlvdXQgdmVyaWZpY2F0aW9uIGFzc2lnbmVkPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZlZWRiYWNrPy50YXNrVHlwZT09PSdyZWRvJ1wiPkxheW91dCB2ZXJpZmljYXRpb24gcmUtYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj57e2ZlZWRiYWNrPy50YXNrRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwcy0wIHBlLTBcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWRpdmlkZXIgbXQtMyBtcy01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tmZWVkYmFjaz8udGFza0RhdGE/LmNyZWF0ZWRCeU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tmZWVkYmFjaz8udGFza0RhdGE/LmNyZWF0ZWRBdCB8ZGF0ZTogJ2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lclxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwiZmVlZGJhY2s/LnRhc2tEYXRhPy51c2VyTmFtZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWRpdmlkZXIgbXQtMyBtcy01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tmZWVkYmFjaz8udGFza0RhdGE/LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2s/LnRhc2tEYXRhPy5zdWJtaXRUaW1lX3N0cmluZ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbmVlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTMgbWUtNFwiICpuZ0lmPVwiZmVlZGJhY2s/LnN0YXR1cz09PSdjb21wbGV0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAzTDQuNSA4LjVMMiA2XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5MYXlvdXQgbWF0Y2hlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBwLTMgbWUtNFwiICpuZ0lmPVwiZmVlZGJhY2s/LnN0YXR1cz09PSdpbmNvbXBsZXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk02IDRWNk02IDhINi4wMDVNMTEgNkMxMSA4Ljc2MTQyIDguNzYxNDIgMTEgNiAxMUMzLjIzODU4IDExIDEgOC43NjE0MiAxIDZDMSAzLjIzODU4IDMuMjM4NTggMSA2IDFDOC43NjE0MiAxIDExIDMuMjM4NTggMTEgNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkxheW91dCBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmZWVkYmFjaz8uc3RhdHVzPT09J2luY29tcGxldGUnJiZwZW5kaW5nTGF5b3V0aXNzdWVzPjBcIj5cclxuICAgICAgICAgICAgICAgICAge3twZW5kaW5nTGF5b3V0aXNzdWVzfX0ve3tmZWVkYmFjaz8uYW5zd2Vyc1swXT8uaXNzdWVzPy5sZW5ndGh9fSBhY3Rpb24gcGVuZGluZ1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTNcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZlZWRiYWNrPy5zdGF0dXM9PT0naW5jb21wbGV0ZScmJmFwcHJvdmVkTGF5b3V0aXNzdWVzPjAmJnBlbmRpbmdMYXlvdXRpc3N1ZXM9PT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7YXBwcm92ZWRMYXlvdXRpc3N1ZXN9fS97e2ZlZWRiYWNrPy5hbnN3ZXJzWzBdPy5pc3N1ZXM/Lmxlbmd0aH19IGFjdGlvbiBkb25lXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlzc3VlcyBvZiBmZWVkYmFjay5hbnN3ZXJzO2xldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSXRlbT1cInt7ICduZXdkZXRhaWxzLScgKyBrIH19XCIgW2NvbGxhcHNlZF09XCJpc3N1ZXMuY29sbGFwc2VkXCIgY2xhc3M9XCJtYi01XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpc3N1ZXMuaXNzdWVzO2xldCBrID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYkFjY29yZGlvbkJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nIHAtMyBiYWNrZ3JvdW5kSW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtPy5xdWVzdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWV9fTwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicHJldmlvdXNGaXh0dXJlKGZpeHR1cmVJbmRleCxpdGVtPy5EZXRhaWxzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZml4dHVyZUluZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFmaXh0dXJlSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZpeHR1cmVJbmRleCsxfX0ve3tpdGVtPy5EZXRhaWxzLmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZXh0Rml4dHVyZShmaXh0dXJlSW5kZXgsaXRlbT8uRGV0YWlscylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIml0ZW0/LkRldGFpbHMubGVuZ3RoPmZpeHR1cmVJbmRleCsxXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIihpdGVtPy5EZXRhaWxzLmxlbmd0aCk9PT0oZml4dHVyZUluZGV4KzEpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIFR5cGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlQ2F0ZWdvcnl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVUZW1wbGF0ZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VGVtcGxhdGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlVGVtcGxhdGVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaXh0dXJlTGlzdCBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNoZWxmQ29uZmlnRm9ybWF0ZWRcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnt7Zml4dHVyZUxpc3Q/LnpvbmV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTAgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgc2hsZWZkYXRhIG9mIGZpeHR1cmVMaXN0Py5pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+U2hlbGYge3tzaGxlZmRhdGE/LnNoZWxmTnVtYmVyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5DYXBhY2l0eTp7e3NobGVmZGF0YT8ucHJvZHVjdFBlclNoZWxmfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdGb3I9XCJsZXQgYnJhbmRzIG9mIHNobGVmZGF0YT8ucHJvZHVjdEJyYW5kTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG1lLTNcIj57e2JyYW5kc319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmFzc29jaWF0ZWRFbGVtZW50VHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Mb2NhdGlvbjo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uYXNzb2NpYXRlZEVsZW1lbnRUeXBlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5hc3NvY2lhdGVkRWxlbWVudE51bWJlcn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlBvc2l0aW9uOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPihMIHRvIFIpPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5uZXdhc3NvY2lhdGVkRWxlbWVudFR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+TmV3IExvY2F0aW9uOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5uZXdhc3NvY2lhdGVkRWxlbWVudFR5cGV9fXt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5uZXdhc3NvY2lhdGVkRWxlbWVudE51bWJlcn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPk5ldyBQb3NpdGlvbjo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj4oTCB0byBSKTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5uZXdhc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uS2V5cz8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdleHRyYUZpeHR1cmUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIEZpeHR1cmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpeHR1cmUgZmVlZGJhY2sgYnkgdGhlIHN0b3JlIHRlYW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZSE9PSdleHRyYUZpeHR1cmUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSBmaXh0dXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZWxvdyBmaXh0dXJlIGlzIGluIHRoZSBwbGFub2dyYW0gYnV0IG5vdCBpbiBzdG9yZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBIZWFkZXIgYmxvY2sgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmhlYWRlcj8ubGFiZWwgPz8gJyd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJvZHkgYmxvY2sgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgI2JvZHlCbG9jayBpZD1cImJvZHlCbG9ja1wiIGNsYXNzPVwiYm9keS1ibG9ja1wiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NlY3Rpb24nICsgaVwiIGNsYXNzPVwidm0tYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwidXBkYXRlU3R5bGUoaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIidib3JkZXI6MXB4IHNvbGlkICcrIHRoaXMuc2hsZWZDb2xvcltpXS5ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzppdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy50ZXh0QmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8udGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNoZWxmRGF0YSBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNoZWxmRGV0YWlsczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBAaWYoaXRlbS5zaGVsZlR5cGUgPT09J3NoZWxmJyl7IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzaGVsZicgKyBpXCIgY2xhc3M9XCJibG9jayBzaGVsZiBoaWRlLXNjcm9sbCBkLWJsb2NrIHRleHQtZW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6c2hlbGZEYXRhPy56b25lID8gaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NoZWxmRGF0YS56b25lXT8uY29sb3I/LmJnIDogc2hsZWZDb2xvcltpXS5iZ31cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzppdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2hlbGZEYXRhPy56b25lXT8uY29sb3I/LnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjppdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2hlbGZEYXRhPy56b25lXT8uY29sb3I/LnRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb290ZXIgYmxvY2sgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uaW1hZ2UmJml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uaW1hZ2V9fVwiIGFsdD1cImltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkFncmVlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZCAmIHJlcHVibGlzaGVkXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdkaXNhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkRpc2FncmVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW5lZCBleGlzdGluZ1wiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTUgcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkfHxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJyYmaXRlbS5pc3N1ZVR5cGU9PT0nY29tbWVudHMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdhZ3JlZScsZmVlZGJhY2s/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdyZWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdkaXNhZ3JlZScsZmVlZGJhY2s/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uX2lkKVwiPkRpc2FncmVlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIiAqbmdJZj1cImZlZWRiYWNrPy5hbnN3ZXJzWzBdPy52aWRlbyYmZmVlZGJhY2s/LmFuc3dlcnNbMF0/LnZpZGVvIT09JydcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgVmlkZW88L2Rpdj5cclxuICAgICAgICAgICAgICAgIDx2aWRlbyBjb250cm9scyBzcmM9XCJ7e2NkblVybH19e3tmZWVkYmFjaz8uYW5zd2Vyc1swXT8udmlkZW99fVwiIGNsYXNzPVwibXQtNCB3LTEwMFwiPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuIFxyXG5cclxuICA8ZGl2IGNsYXNzPVwibXQtNVwiICpuZ0lmPVwibGF5b3V0RmVlZGJhY2subGVuZ3RoPT09MCYmc3RvcmVGaXh0dXJlTGlzdC5sZW5ndGg9PT0wJiZ2bUZlZWRiYWNrLmxlbmd0aD09PTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIiA+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIiB2aWV3Qm94PVwiMCAwIDk0IDk0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgZmlsbD1cIiNEQUYxRkZcIi8+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCIxMy4zMzMzXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zNS45NTAyIDQ4LjE5OTdDMzUuNjQ4OSA0OC4yMzE1IDM1LjM0MjIgNDguMjUwNSAzNS4wMzEyIDQ4LjI1MDVDMzQuODYxNyA0OC4yNTA1IDM0LjY5NDQgNDguMjQzNiAzNC41MjkzIDQ4LjIzMzlWNTguNjA2OUMzNC41MjkzIDYwLjAzNDkgMzUuNzEyMyA2MS4yMjYgMzcuMjAwMiA2MS4yMjYxSDU2LjgwNDdDNTguMjkyNyA2MS4yMjYxIDU5LjQ3NTYgNjAuMDM1IDU5LjQ3NTYgNTguNjA2OVY0OC4yMzQ5QzU5LjMxMzcgNDguMjQ0MSA1OS4xNDk4IDQ4LjI1MDUgNTguOTg1NCA0OC4yNTA1QzU4LjY3MTQgNDguMjUwNSA1OC4zNjA4IDQ4LjIzMjUgNTguMDU0NyA0OC4xOTk3VjU1Ljk4NzhIMzUuOTUwMlY0OC4xOTk3Wk01Ny45MzE2IDMyLjc3MzlIMzYuMDczMkMzNS44OTU5IDMyLjc3MzkgMzUuNzQwNiAzMi44NjY3IDM1LjY2MzEgMzIuOTg3OEwzNS42NjExIDMyLjk4OTdMMzIuMTUxNCAzOC40NzMxTDMyLjA1NjYgMzguNjIwNkMzMC44MzExIDQwLjc0MDQgMzIuMDk1NyA0My40Njc0IDM0LjQ0NzMgNDMuNzc2OUMzNC42NDgyIDQzLjgwMTMgMzQuODM3OSA0My44MTU5IDM1LjAyNTQgNDMuODE1OUMzNi4yNTU1IDQzLjgxNTkgMzcuMzQzNCA0My4yODcyIDM4LjEwMDYgNDIuNDY1M0wzOS4wMjI1IDQxLjQ2NDRMMzkuOTQxNCA0Mi40NjgzQzQwLjY5MDMgNDMuMjg2MyA0MS43NzcgNDMuODE1OSA0My4wMTQ2IDQzLjgxNTlDNDQuMjQ2NyA0My44MTU4IDQ1LjMzODYgNDMuMjg1NiA0Ni4wODY5IDQyLjQ2ODNMNDcuMDA4OCA0MS40NjE0TDQ3LjkzMDcgNDIuNDY4M0M0OC42NzkgNDMuMjg1NyA0OS43NzA3IDQzLjgxNTkgNTEuMDAyOSA0My44MTU5QzUyLjIzNTEgNDMuODE1OSA1My4zMjY4IDQzLjI4NTcgNTQuMDc1MiA0Mi40NjgzTDU0Ljk5NzEgNDEuNDYxNEw1NS45MTg5IDQyLjQ2ODNDNTYuNjY3MyA0My4yODU3IDU3Ljc2IDQzLjgxNTkgNTguOTkyMiA0My44MTU5QzU5LjE3MzYgNDMuODE1OSA1OS4zNjg3IDQzLjgwMjEgNTkuNTY4NCA0My43Nzc4SDU5LjU2NzRDNjEuOTYxMSA0My40NTczIDYzLjIyOTMgNDAuNjA3OCA2MS44NjEzIDM4LjQ3MzFMNjEuODYwNCAzOC40NzQxTDU4LjM0MzggMzIuOTkwN0w1OC4zNDI4IDMyLjk4NzhDNTguMjY1MyAzMi44NjY1IDU4LjEwOTIgMzIuNzczOSA1Ny45MzE2IDMyLjc3MzlaXCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjIuNVwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PiBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBoMyBtdC0yXCI+Tm8gaXNzdWU8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5UaGUgc3RvcmUgZGlkIG5vdCBmbGFnIGl0IGFzIGFuIGlzc3VlLjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19