tango-app-ui-store-builder 1.0.24 → 1.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +4 -1
- package/esm2022/lib/components/manage-store-plano/rollout-feedback/rollout-feedback.component.mjs +3 -3
- package/esm2022/lib/components/planogram/plano-details-parent/plano-details-parent.component.mjs +4 -3
- package/fesm2022/tango-app-ui-store-builder.mjs +8 -4
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/manage-store-plano/rollout-feedback/rollout-feedback.component.mjs
CHANGED
|
@@ -678,11 +678,11 @@ export class RolloutFeedbackComponent {
|
|
|
678
678
|
this.destroy$.complete();
|
|
679
679
|
}
|
|
680
680
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RolloutFeedbackComponent, deps: [{ token: i1.StoreBuilderService }, { token: i0.ChangeDetectorRef }, { token: i2.NgbModal }, { token: i3.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
681
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: RolloutFeedbackComponent, selector: "lib-rollout-feedback", inputs: { currentPlano: "currentPlano", storeFeedback: "storeFeedback", selectedIssue: "selectedIssue", taskInfo: "taskInfo", rolloutSection: "rolloutSection" }, 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 <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\"\r\n class=\"btn btn-light text-primary border-0 px-3 py-2\" style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\"\r\n (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div *ngIf=\"rolloutSection === 'vm'\">\r\n <div ngbAccordion [closeOthers]=\"true\" class=\"mt-5\">\r\n @for(vmData of vmFeedback;track i;let i = $index;let first=$first) {\r\n <ng-container>\r\n <div ngbAccordionItem [collapsed]=\"!first\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader (click)=\"vmtaskIndex=0\">\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"!vmData?.redoStatus\">Visual merch rollout assigned</div>\r\n <div *ngIf=\"vmData?.redoStatus\">Visual merch rollout Reassigned</div>\r\n <div class=\"grayText\">{{vmData?.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 *ngIf=\"!selectedFixture || selectedFixture?.isVmEdited || selectedFixture?.issueData?.length\">\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 {{vmData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmData?.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=\"vmData?.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 {{vmData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmData?.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 *ngIf=\"vmData.storeFixtureList?.length>0\">\r\n \r\n \r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\"\r\n *ngIf=\"showMatch(vmData?.storeFixtureList)\">\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\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\"\r\n *ngIf=\"!showMatch(vmData?.storeFixtureList)\">\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\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmData?.storeFixtureList)\">\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=\"#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 {{ vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureName}} -\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureWidth.value}}\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmData?.storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmData?.storeFixtureList)\">\r\n <svg *ngIf=\"vmData?.storeFixtureList.length>vmtaskIndex+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=\"(vmData?.storeFixtureList.length)===(vmtaskIndex+1)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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=\"vmData?.storeFixtureList[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\">\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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\">\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmData?.storeFixtureList[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=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[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\r\n *ngFor=\"let vm of vmData?.storeFixtureList[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 wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of vmData?.storeFixtureList[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> {{vmData?.storeFixtureList[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 vmData?.storeFixtureList[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.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 \r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{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]?.vmData\">\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmPartiallyRecevied'\">\r\n <div class=\"subText\">Total partially recieved VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmDamaged'\">\r\n <div class=\"subText\">Total issues/damages VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmnotRecevied'\">\r\n <div class=\"subText\">Total not received VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmMismatch'\">\r\n <div class=\"subText\">Total mismatched size VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-6\">\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\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Category :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmType}}\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <img src=\"{{cdnUrl}}{{vmData?.image}}\" *ngIf=\"vmData?.image\" />\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmData?.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 {{vmData?.storeFixtureList[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\r\n *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=\"{{cdnUrl}}{{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\r\n *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> {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n \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?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">Redo</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[vmtaskIndex]?.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('redo',vmData?.storeFixtureList[vmtaskIndex]?._id,issues._id,item._id,item?.Details[vmtaskIndex]?._id,'vmRollout',item.issueType)\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',vmData?.storeFixtureList[vmtaskIndex]?._id,issues._id,item._id,item?.Details[vmtaskIndex]._id,'vmRollout',item.issueType)\">Close\r\n Issue</button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image&&vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture678798</div>\r\n <img src=\"{{cdnUrl}}{{vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n \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 \r\n <div *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n <div class=\"my-4\" *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.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 vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.comments?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Redo\"</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\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=\"vmData?.storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending'&&selectedFixture?.fixtureId && !vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.status\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('redo',vmData?.storeFixtureList[fixturetaskIndex]?._id,vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?._id,'','','vmRollout','')\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',vmData?.storeFixtureList[fixturetaskIndex]?._id,vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?._id,'','','vmRollout','')\">\r\n Close Issue</button>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image&&vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4\" *ngIf=\"vmData?.comments.length&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmData?.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\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|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 \r\n \r\n </div>\r\n </div>\r\n <div class=\"mt-5\">\r\n @if (!vmData?.storeFixtureList.length) {\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\r\n 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\"\r\n 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 response</div>\r\n <div class=\"mt-4\">Yet to receive store response.</div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n <div *ngIf=\"rolloutSection === 'merch'\">\r\n <div ngbAccordion [closeOthers]=\"true\" class=\"mt-5\">\r\n @for(mergeData of mergeRolloutList;track i;let i = $index;let first=$first) {\r\n <ng-container>\r\n <div ngbAccordionItem [collapsed]=\"!first\" class=\"mb-5\" [id]=\"'merch'+i\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 fs-4\">\r\n <div *ngIf=\"!mergeData?.redoStatus\">Merchandise rollout assigned</div>\r\n <div *ngIf=\"mergeData?.redoStatus\">Merchandise rollout Reassigned</div>\r\n <div class=\"grayText\">{{mergeData?.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 *ngIf=\"!selectedFixture || selectedFixture?.isMerchEdited || selectedFixture?.issueData?.length\">\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 {{mergeData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{mergeData?.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=\"mergeData?.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 {{mergeData?.userName}}\r\n </div>\r\n <div class=\"grayText\" *ngIf=\"mergeData?.submitTime_string!==''\">\r\n {{mergeData?.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 *ngIf=\"mergeData?.storeFixtureList?.length>0\">\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\"\r\n *ngIf=\"showMatch(mergeData?.storeFixtureList)\">\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\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\"\r\n *ngIf=\"!showMatch(mergeData?.storeFixtureList)\">\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\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\"\r\n (click)=\"previoustaskFixture(fixturetaskIndex,mergeData?.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 {{ mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}} -\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{mergeData?.storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,mergeData?.storeFixtureList)\">\r\n <svg *ngIf=\"mergeData?.storeFixtureList.length>fixturetaskIndex+1\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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=\"(mergeData?.storeFixtureList.length)===(fixturetaskIndex+1)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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\"\r\n *ngIf=\"mergeData?.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\">\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.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=\"mergeData?.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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{mergeData?.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\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.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 {{mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone\"\r\n [ngStyle]=\"{\r\n 'background-color':mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{\r\n mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n mergeData?.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 mergeData?.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 || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':(shelfData?.zone || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg : shlefColor[i].textBg,\r\n color:(shelfData?.zone || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text : shlefColor[i].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> {{mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.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> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{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=\"mb-4 mt-2\"\r\n *ngFor=\"let merchDetails of item?.Details[fixtureIndex].merchData;let i = index\">\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Brand:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{merchDetails?.productBrandName || '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Category:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{merchDetails?.productCategory?.toString() ||\r\n '--'}}\r\n </div>\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 \r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{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\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n \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-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 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 text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex].merchData.length\">\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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ??\r\n ''}}\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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\" [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n mergeData?.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>\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 <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\"\r\n [ngbTooltip]=\"tooltip\">{{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 \r\n <div\r\n *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\"\r\n [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px 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> {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ??\r\n ''}}</p>\r\n </div>\r\n </div>\r\n \r\n </div>\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?.slice().reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Redo\"</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \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('redo',mergeData?.storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'merchRollout',item.issueType)\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',mergeData?.storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'merchRollout',item.issueType)\">Close\r\n Issue</button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img\r\n src=\"{{cdnUrl}}{{mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n <div *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers?.[0]?.issues?.length===0\">\r\n \r\n \r\n <div class=\"my-4\"\r\n *ngIf=\"mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.comments?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">Redo</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\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=\"mergeData?.storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending'&&selectedFixture?.fixtureId && !mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.status\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('redo',mergeData?.storeFixtureList[fixturetaskIndex]?._id,mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','merchRollout','')\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',mergeData?.storeFixtureList[fixturetaskIndex]?._id,mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','merchRollout','')\">\r\n Close Issue</button>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"my-4\" *ngIf=\"mergeData.comments.length && !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of mergeData.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\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|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 \r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"mt-5\" *ngIf=\"!loading\">\r\n @if (!mergeData?.storeFixtureList.length) {\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\r\n 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\"\r\n 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 response</div>\r\n <div class=\"mt-4\">Yet to receive store response.</div>\r\n </div>\r\n }\r\n </div>\r\n \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5\" *ngIf=\"!loading\">\r\n @if ((rolloutSection === 'vm' && !vmFeedback.length) || (rolloutSection === 'merch' && !mergeRolloutList.length) ) {\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\r\n 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\"\r\n 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 task assigned</div>\r\n <div class=\"mt-4\">Store response viewed here</div>\r\n </div>\r\n }\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-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;justify-content:start;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;min-height:52px}.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 rgba(152,162,179,.2901960784);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:0;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;border-bottom:3px solid #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}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;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-800, #1D2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;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}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.subText{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}\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: "component", type: i5.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { 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" }] });
|
|
681
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: RolloutFeedbackComponent, selector: "lib-rollout-feedback", inputs: { currentPlano: "currentPlano", storeFeedback: "storeFeedback", selectedIssue: "selectedIssue", taskInfo: "taskInfo", rolloutSection: "rolloutSection" }, 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 <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\"\r\n class=\"btn btn-light text-primary border-0 px-3 py-2\" style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\"\r\n (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div *ngIf=\"rolloutSection === 'vm'\">\r\n <div ngbAccordion [closeOthers]=\"true\" class=\"mt-5\">\r\n @for(vmData of vmFeedback;track i;let i = $index;let first=$first) {\r\n <ng-container>\r\n <div ngbAccordionItem [collapsed]=\"!first\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader (click)=\"vmtaskIndex=0\">\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"!vmData?.redoStatus\">Visual merch rollout assigned</div>\r\n <div *ngIf=\"vmData?.redoStatus\">Visual merch rollout Reassigned</div>\r\n <div class=\"grayText\">{{vmData?.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 *ngIf=\"!selectedFixture || selectedFixture?.isVmEdited || selectedFixture?.issueData?.length\">\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 {{vmData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmData?.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=\"vmData?.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 {{vmData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmData?.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 *ngIf=\"vmData.storeFixtureList?.length>0\">\r\n \r\n \r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\"\r\n *ngIf=\"showMatch(vmData?.storeFixtureList)\">\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\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\"\r\n *ngIf=\"!showMatch(vmData?.storeFixtureList)\">\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\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmData?.storeFixtureList)\">\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=\"#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 {{ vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureName}} -\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureWidth.value}}\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmData?.storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmData?.storeFixtureList)\">\r\n <svg *ngIf=\"vmData?.storeFixtureList.length>vmtaskIndex+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=\"(vmData?.storeFixtureList.length)===(vmtaskIndex+1)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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=\"vmData?.storeFixtureList[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\">\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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\">\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmData?.storeFixtureList[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=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[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\r\n *ngFor=\"let vm of vmData?.storeFixtureList[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 wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of vmData?.storeFixtureList[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> {{vmData?.storeFixtureList[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 vmData?.storeFixtureList[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.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 \r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{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]?.vmData\">\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmPartiallyRecevied'\">\r\n <div class=\"subText\">Total partially recieved VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmDamaged'\">\r\n <div class=\"subText\">Total issues/damages VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmnotRecevied'\">\r\n <div class=\"subText\">Total not received VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmMismatch'\">\r\n <div class=\"subText\">Total mismatched size VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-6\">\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\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Category :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmType}}\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <img src=\"{{cdnUrl}}{{vmData?.image}}\" *ngIf=\"vmData?.image\" />\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmData?.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 {{vmData?.storeFixtureList[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\r\n *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=\"{{cdnUrl}}{{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\r\n *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> {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n \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?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">Redo</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[vmtaskIndex]?.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('redo',vmData?.storeFixtureList[vmtaskIndex]?._id,issues._id,item._id,item?.Details[vmtaskIndex]?._id,'vmRollout',item.issueType)\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',vmData?.storeFixtureList[vmtaskIndex]?._id,issues._id,item._id,item?.Details[vmtaskIndex]._id,'vmRollout',item.issueType)\">Close\r\n Issue</button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image&&vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n \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 \r\n <div *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n <div class=\"my-4\" *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.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 vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.comments?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Redo\"</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\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=\"vmData?.storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending'&&selectedFixture?.fixtureId && !vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.status\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('redo',vmData?.storeFixtureList[fixturetaskIndex]?._id,vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?._id,'','','vmRollout','')\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',vmData?.storeFixtureList[fixturetaskIndex]?._id,vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?._id,'','','vmRollout','')\">\r\n Close Issue</button>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image&&vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4\" *ngIf=\"vmData?.comments.length&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmData?.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\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|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 \r\n \r\n </div>\r\n </div>\r\n <div class=\"mt-5\">\r\n @if (!vmData?.storeFixtureList.length) {\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\r\n 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\"\r\n 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 response</div>\r\n <div class=\"mt-4\">Yet to receive store response.</div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n <div *ngIf=\"rolloutSection === 'merch'\">\r\n <div ngbAccordion [closeOthers]=\"true\" class=\"mt-5\">\r\n @for(mergeData of mergeRolloutList;track i;let i = $index;let first=$first) {\r\n <ng-container>\r\n <div ngbAccordionItem [collapsed]=\"!first\" class=\"mb-5\" [id]=\"'merch'+i\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 fs-4\">\r\n <div *ngIf=\"!mergeData?.redoStatus\">Merchandise rollout assigned</div>\r\n <div *ngIf=\"mergeData?.redoStatus\">Merchandise rollout Reassigned</div>\r\n <div class=\"grayText\">{{mergeData?.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 *ngIf=\"!selectedFixture || selectedFixture?.isMerchEdited || selectedFixture?.issueData?.length\">\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 {{mergeData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{mergeData?.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=\"mergeData?.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 {{mergeData?.userName}}\r\n </div>\r\n <div class=\"grayText\" *ngIf=\"mergeData?.submitTime_string!==''\">\r\n {{mergeData?.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 *ngIf=\"mergeData?.storeFixtureList?.length>0\">\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\"\r\n *ngIf=\"showMatch(mergeData?.storeFixtureList)\">\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\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\"\r\n *ngIf=\"!showMatch(mergeData?.storeFixtureList)\">\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\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\"\r\n (click)=\"previoustaskFixture(fixturetaskIndex,mergeData?.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 {{ mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}} -\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{mergeData?.storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,mergeData?.storeFixtureList)\">\r\n <svg *ngIf=\"mergeData?.storeFixtureList.length>fixturetaskIndex+1\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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=\"(mergeData?.storeFixtureList.length)===(fixturetaskIndex+1)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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\"\r\n *ngIf=\"mergeData?.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\">\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.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=\"mergeData?.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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{mergeData?.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\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.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 {{mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone\"\r\n [ngStyle]=\"{\r\n 'background-color':mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{\r\n mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n mergeData?.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 mergeData?.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 || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':(shelfData?.zone || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg : shlefColor[i].textBg,\r\n color:(shelfData?.zone || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text : shlefColor[i].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> {{mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.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> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{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=\"mb-4 mt-2\"\r\n *ngFor=\"let merchDetails of item?.Details[fixtureIndex].merchData;let i = index\">\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Brand:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{merchDetails?.productBrandName || '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Category:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{merchDetails?.productCategory?.toString() ||\r\n '--'}}\r\n </div>\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 \r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{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\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n \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-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 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 text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex].merchData.length\">\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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ??\r\n ''}}\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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\" [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n mergeData?.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>\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 <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\"\r\n [ngbTooltip]=\"tooltip\">{{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 \r\n <div\r\n *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\"\r\n [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px 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> {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ??\r\n ''}}</p>\r\n </div>\r\n </div>\r\n \r\n </div>\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?.slice().reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Redo\"</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \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('redo',mergeData?.storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'merchRollout',item.issueType)\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',mergeData?.storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'merchRollout',item.issueType)\">Close\r\n Issue</button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img\r\n src=\"{{cdnUrl}}{{mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n <div *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers?.[0]?.issues?.length===0\">\r\n \r\n \r\n <div class=\"my-4\"\r\n *ngIf=\"mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.comments?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">Redo</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\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=\"mergeData?.storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending'&&selectedFixture?.fixtureId && !mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.status\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('redo',mergeData?.storeFixtureList[fixturetaskIndex]?._id,mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','merchRollout','')\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',mergeData?.storeFixtureList[fixturetaskIndex]?._id,mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','merchRollout','')\">\r\n Close Issue</button>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"my-4\" *ngIf=\"mergeData.comments.length && !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of mergeData.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\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|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 \r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"mt-5\" *ngIf=\"!loading\">\r\n @if (!mergeData?.storeFixtureList.length) {\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\r\n 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\"\r\n 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 response</div>\r\n <div class=\"mt-4\">Yet to receive store response.</div>\r\n </div>\r\n }\r\n </div>\r\n \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5\" *ngIf=\"!loading\">\r\n @if ((rolloutSection === 'vm' && !vmFeedback.length) || (rolloutSection === 'merch' && !mergeRolloutList.length) ) {\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\r\n 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\"\r\n 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 task assigned</div>\r\n <div class=\"mt-4\">Store response viewed here</div>\r\n </div>\r\n }\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-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;justify-content:start;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;min-height:52px}.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 rgba(152,162,179,.2901960784);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:0;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;border-bottom:3px solid #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}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;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-800, #1D2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;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}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.subText{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}\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: "component", type: i5.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { 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" }] });
|
|
682
682
|
}
|
|
683
683
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RolloutFeedbackComponent, decorators: [{
|
|
684
684
|
type: Component,
|
|
685
|
-
args: [{ selector: "lib-rollout-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 <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\"\r\n class=\"btn btn-light text-primary border-0 px-3 py-2\" style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\"\r\n (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div *ngIf=\"rolloutSection === 'vm'\">\r\n <div ngbAccordion [closeOthers]=\"true\" class=\"mt-5\">\r\n @for(vmData of vmFeedback;track i;let i = $index;let first=$first) {\r\n <ng-container>\r\n <div ngbAccordionItem [collapsed]=\"!first\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader (click)=\"vmtaskIndex=0\">\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"!vmData?.redoStatus\">Visual merch rollout assigned</div>\r\n <div *ngIf=\"vmData?.redoStatus\">Visual merch rollout Reassigned</div>\r\n <div class=\"grayText\">{{vmData?.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 *ngIf=\"!selectedFixture || selectedFixture?.isVmEdited || selectedFixture?.issueData?.length\">\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 {{vmData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmData?.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=\"vmData?.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 {{vmData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmData?.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 *ngIf=\"vmData.storeFixtureList?.length>0\">\r\n \r\n \r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\"\r\n *ngIf=\"showMatch(vmData?.storeFixtureList)\">\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\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\"\r\n *ngIf=\"!showMatch(vmData?.storeFixtureList)\">\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\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmData?.storeFixtureList)\">\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=\"#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 {{ vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureName}} -\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureWidth.value}}\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmData?.storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmData?.storeFixtureList)\">\r\n <svg *ngIf=\"vmData?.storeFixtureList.length>vmtaskIndex+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=\"(vmData?.storeFixtureList.length)===(vmtaskIndex+1)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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=\"vmData?.storeFixtureList[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\">\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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\">\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmData?.storeFixtureList[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=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[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\r\n *ngFor=\"let vm of vmData?.storeFixtureList[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 wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of vmData?.storeFixtureList[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> {{vmData?.storeFixtureList[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 vmData?.storeFixtureList[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.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 \r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{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]?.vmData\">\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmPartiallyRecevied'\">\r\n <div class=\"subText\">Total partially recieved VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmDamaged'\">\r\n <div class=\"subText\">Total issues/damages VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmnotRecevied'\">\r\n <div class=\"subText\">Total not received VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmMismatch'\">\r\n <div class=\"subText\">Total mismatched size VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-6\">\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\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Category :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmType}}\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <img src=\"{{cdnUrl}}{{vmData?.image}}\" *ngIf=\"vmData?.image\" />\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmData?.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 {{vmData?.storeFixtureList[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\r\n *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=\"{{cdnUrl}}{{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\r\n *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> {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n \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?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">Redo</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[vmtaskIndex]?.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('redo',vmData?.storeFixtureList[vmtaskIndex]?._id,issues._id,item._id,item?.Details[vmtaskIndex]?._id,'vmRollout',item.issueType)\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',vmData?.storeFixtureList[vmtaskIndex]?._id,issues._id,item._id,item?.Details[vmtaskIndex]._id,'vmRollout',item.issueType)\">Close\r\n Issue</button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image&&vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture678798</div>\r\n <img src=\"{{cdnUrl}}{{vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n \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 \r\n <div *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n <div class=\"my-4\" *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.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 vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.comments?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Redo\"</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\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=\"vmData?.storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending'&&selectedFixture?.fixtureId && !vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.status\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('redo',vmData?.storeFixtureList[fixturetaskIndex]?._id,vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?._id,'','','vmRollout','')\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',vmData?.storeFixtureList[fixturetaskIndex]?._id,vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?._id,'','','vmRollout','')\">\r\n Close Issue</button>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image&&vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4\" *ngIf=\"vmData?.comments.length&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmData?.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\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|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 \r\n \r\n </div>\r\n </div>\r\n <div class=\"mt-5\">\r\n @if (!vmData?.storeFixtureList.length) {\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\r\n 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\"\r\n 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 response</div>\r\n <div class=\"mt-4\">Yet to receive store response.</div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n <div *ngIf=\"rolloutSection === 'merch'\">\r\n <div ngbAccordion [closeOthers]=\"true\" class=\"mt-5\">\r\n @for(mergeData of mergeRolloutList;track i;let i = $index;let first=$first) {\r\n <ng-container>\r\n <div ngbAccordionItem [collapsed]=\"!first\" class=\"mb-5\" [id]=\"'merch'+i\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 fs-4\">\r\n <div *ngIf=\"!mergeData?.redoStatus\">Merchandise rollout assigned</div>\r\n <div *ngIf=\"mergeData?.redoStatus\">Merchandise rollout Reassigned</div>\r\n <div class=\"grayText\">{{mergeData?.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 *ngIf=\"!selectedFixture || selectedFixture?.isMerchEdited || selectedFixture?.issueData?.length\">\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 {{mergeData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{mergeData?.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=\"mergeData?.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 {{mergeData?.userName}}\r\n </div>\r\n <div class=\"grayText\" *ngIf=\"mergeData?.submitTime_string!==''\">\r\n {{mergeData?.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 *ngIf=\"mergeData?.storeFixtureList?.length>0\">\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\"\r\n *ngIf=\"showMatch(mergeData?.storeFixtureList)\">\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\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\"\r\n *ngIf=\"!showMatch(mergeData?.storeFixtureList)\">\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\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\"\r\n (click)=\"previoustaskFixture(fixturetaskIndex,mergeData?.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 {{ mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}} -\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{mergeData?.storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,mergeData?.storeFixtureList)\">\r\n <svg *ngIf=\"mergeData?.storeFixtureList.length>fixturetaskIndex+1\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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=\"(mergeData?.storeFixtureList.length)===(fixturetaskIndex+1)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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\"\r\n *ngIf=\"mergeData?.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\">\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.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=\"mergeData?.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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{mergeData?.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\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.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 {{mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone\"\r\n [ngStyle]=\"{\r\n 'background-color':mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{\r\n mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n mergeData?.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 mergeData?.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 || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':(shelfData?.zone || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg : shlefColor[i].textBg,\r\n color:(shelfData?.zone || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text : shlefColor[i].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> {{mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.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> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{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=\"mb-4 mt-2\"\r\n *ngFor=\"let merchDetails of item?.Details[fixtureIndex].merchData;let i = index\">\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Brand:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{merchDetails?.productBrandName || '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Category:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{merchDetails?.productCategory?.toString() ||\r\n '--'}}\r\n </div>\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 \r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{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\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n \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-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 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 text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex].merchData.length\">\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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ??\r\n ''}}\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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\" [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n mergeData?.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>\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 <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\"\r\n [ngbTooltip]=\"tooltip\">{{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 \r\n <div\r\n *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\"\r\n [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px 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> {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ??\r\n ''}}</p>\r\n </div>\r\n </div>\r\n \r\n </div>\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?.slice().reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Redo\"</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \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('redo',mergeData?.storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'merchRollout',item.issueType)\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',mergeData?.storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'merchRollout',item.issueType)\">Close\r\n Issue</button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img\r\n src=\"{{cdnUrl}}{{mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n <div *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers?.[0]?.issues?.length===0\">\r\n \r\n \r\n <div class=\"my-4\"\r\n *ngIf=\"mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.comments?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">Redo</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\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=\"mergeData?.storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending'&&selectedFixture?.fixtureId && !mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.status\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('redo',mergeData?.storeFixtureList[fixturetaskIndex]?._id,mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','merchRollout','')\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',mergeData?.storeFixtureList[fixturetaskIndex]?._id,mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','merchRollout','')\">\r\n Close Issue</button>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"my-4\" *ngIf=\"mergeData.comments.length && !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of mergeData.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\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|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 \r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"mt-5\" *ngIf=\"!loading\">\r\n @if (!mergeData?.storeFixtureList.length) {\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\r\n 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\"\r\n 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 response</div>\r\n <div class=\"mt-4\">Yet to receive store response.</div>\r\n </div>\r\n }\r\n </div>\r\n \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5\" *ngIf=\"!loading\">\r\n @if ((rolloutSection === 'vm' && !vmFeedback.length) || (rolloutSection === 'merch' && !mergeRolloutList.length) ) {\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\r\n 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\"\r\n 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 task assigned</div>\r\n <div class=\"mt-4\">Store response viewed here</div>\r\n </div>\r\n }\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-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;justify-content:start;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;min-height:52px}.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 rgba(152,162,179,.2901960784);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:0;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;border-bottom:3px solid #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}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;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-800, #1D2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;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}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.subText{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}\n"] }]
|
|
685
|
+
args: [{ selector: "lib-rollout-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 <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\"\r\n class=\"btn btn-light text-primary border-0 px-3 py-2\" style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\"\r\n (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div *ngIf=\"rolloutSection === 'vm'\">\r\n <div ngbAccordion [closeOthers]=\"true\" class=\"mt-5\">\r\n @for(vmData of vmFeedback;track i;let i = $index;let first=$first) {\r\n <ng-container>\r\n <div ngbAccordionItem [collapsed]=\"!first\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader (click)=\"vmtaskIndex=0\">\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"!vmData?.redoStatus\">Visual merch rollout assigned</div>\r\n <div *ngIf=\"vmData?.redoStatus\">Visual merch rollout Reassigned</div>\r\n <div class=\"grayText\">{{vmData?.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 *ngIf=\"!selectedFixture || selectedFixture?.isVmEdited || selectedFixture?.issueData?.length\">\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 {{vmData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmData?.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=\"vmData?.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 {{vmData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmData?.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 *ngIf=\"vmData.storeFixtureList?.length>0\">\r\n \r\n \r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\"\r\n *ngIf=\"showMatch(vmData?.storeFixtureList)\">\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\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\"\r\n *ngIf=\"!showMatch(vmData?.storeFixtureList)\">\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\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmData?.storeFixtureList)\">\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=\"#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 {{ vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureName}} -\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureWidth.value}}\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmData?.storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmData?.storeFixtureList)\">\r\n <svg *ngIf=\"vmData?.storeFixtureList.length>vmtaskIndex+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=\"(vmData?.storeFixtureList.length)===(vmtaskIndex+1)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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=\"vmData?.storeFixtureList[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\">\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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\">\r\n {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmData?.storeFixtureList[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=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[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 {{vmData?.storeFixtureList[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\r\n *ngFor=\"let vm of vmData?.storeFixtureList[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 wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of vmData?.storeFixtureList[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> {{vmData?.storeFixtureList[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 vmData?.storeFixtureList[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.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 \r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{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]?.vmData\">\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmPartiallyRecevied'\">\r\n <div class=\"subText\">Total partially recieved VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmDamaged'\">\r\n <div class=\"subText\">Total issues/damages VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmnotRecevied'\">\r\n <div class=\"subText\">Total not received VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"pt-5 pb-5\" *ngIf=\"item.issueType==='vmMismatch'\">\r\n <div class=\"subText\">Total mismatched size VMs:\r\n {{item?.Details[fixtureIndex]?.vmData.length}}</div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-6\">\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\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Category :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmType}}\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <img src=\"{{cdnUrl}}{{vmData?.image}}\" *ngIf=\"vmData?.image\" />\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmData?.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 {{vmData?.storeFixtureList[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\r\n *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=\"{{cdnUrl}}{{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\r\n *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> {{vmData?.storeFixtureList[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n \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?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">Redo</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[vmtaskIndex]?.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('redo',vmData?.storeFixtureList[vmtaskIndex]?._id,issues._id,item._id,item?.Details[vmtaskIndex]?._id,'vmRollout',item.issueType)\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',vmData?.storeFixtureList[vmtaskIndex]?._id,issues._id,item._id,item?.Details[vmtaskIndex]._id,'vmRollout',item.issueType)\">Close\r\n Issue</button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image&&vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmData?.storeFixtureList[vmtaskIndex].answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n \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 \r\n <div *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n <div class=\"my-4\" *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.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 vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.comments?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Redo\"</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\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=\"vmData?.storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending'&&selectedFixture?.fixtureId && !vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.status\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('redo',vmData?.storeFixtureList[fixturetaskIndex]?._id,vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?._id,'','','vmRollout','')\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',vmData?.storeFixtureList[fixturetaskIndex]?._id,vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?._id,'','','vmRollout','')\">\r\n Close Issue</button>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image&&vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmData?.storeFixtureList[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4\" *ngIf=\"vmData?.comments.length&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmData?.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\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|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 \r\n \r\n </div>\r\n </div>\r\n <div class=\"mt-5\">\r\n @if (!vmData?.storeFixtureList.length) {\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\r\n 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\"\r\n 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 response</div>\r\n <div class=\"mt-4\">Yet to receive store response.</div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n <div *ngIf=\"rolloutSection === 'merch'\">\r\n <div ngbAccordion [closeOthers]=\"true\" class=\"mt-5\">\r\n @for(mergeData of mergeRolloutList;track i;let i = $index;let first=$first) {\r\n <ng-container>\r\n <div ngbAccordionItem [collapsed]=\"!first\" class=\"mb-5\" [id]=\"'merch'+i\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 fs-4\">\r\n <div *ngIf=\"!mergeData?.redoStatus\">Merchandise rollout assigned</div>\r\n <div *ngIf=\"mergeData?.redoStatus\">Merchandise rollout Reassigned</div>\r\n <div class=\"grayText\">{{mergeData?.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 *ngIf=\"!selectedFixture || selectedFixture?.isMerchEdited || selectedFixture?.issueData?.length\">\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 {{mergeData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{mergeData?.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=\"mergeData?.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 {{mergeData?.userName}}\r\n </div>\r\n <div class=\"grayText\" *ngIf=\"mergeData?.submitTime_string!==''\">\r\n {{mergeData?.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 *ngIf=\"mergeData?.storeFixtureList?.length>0\">\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\"\r\n *ngIf=\"showMatch(mergeData?.storeFixtureList)\">\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\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\"\r\n *ngIf=\"!showMatch(mergeData?.storeFixtureList)\">\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\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\"\r\n (click)=\"previoustaskFixture(fixturetaskIndex,mergeData?.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 {{ mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}} -\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{mergeData?.storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,mergeData?.storeFixtureList)\">\r\n <svg *ngIf=\"mergeData?.storeFixtureList.length>fixturetaskIndex+1\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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=\"(mergeData?.storeFixtureList.length)===(fixturetaskIndex+1)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" 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\"\r\n *ngIf=\"mergeData?.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\">\r\n {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.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=\"mergeData?.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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{mergeData?.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\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"mergeData?.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 {{mergeData?.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 {{mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone\"\r\n [ngStyle]=\"{\r\n 'background-color':mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{\r\n mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n mergeData?.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 mergeData?.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 || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':(shelfData?.zone || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg : shlefColor[i].textBg,\r\n color:(shelfData?.zone || mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData.productResolutionLevel === 'L1') ? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text : shlefColor[i].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> {{mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.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> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{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=\"mb-4 mt-2\"\r\n *ngFor=\"let merchDetails of item?.Details[fixtureIndex].merchData;let i = index\">\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Brand:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{merchDetails?.productBrandName || '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Category:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{merchDetails?.productCategory?.toString() ||\r\n '--'}}\r\n </div>\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 \r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{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\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n \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-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 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 text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex].merchData.length\">\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 {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ??\r\n ''}}\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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\" [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n mergeData?.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>\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 <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\"\r\n [ngbTooltip]=\"tooltip\">{{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 \r\n <div\r\n *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\"\r\n [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig,item?.Details[fixtureIndex].merchData) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '2px 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> {{mergeData?.storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ??\r\n ''}}</p>\r\n </div>\r\n </div>\r\n \r\n </div>\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?.slice().reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Redo\"</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \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('redo',mergeData?.storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'merchRollout',item.issueType)\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',mergeData?.storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'merchRollout',item.issueType)\">Close\r\n Issue</button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img\r\n src=\"{{cdnUrl}}{{mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n <div *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers?.[0]?.issues?.length===0\">\r\n \r\n \r\n <div class=\"my-4\"\r\n *ngIf=\"mergeData?.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 mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.comments?.slice()?.reverse()\">\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\">\"Closed\r\n issue\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">Redo</span>\r\n <span *ngIf=\"comment?.responsetype==='revoke'\" class=\"assignText\">Revoked</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\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=\"mergeData?.storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending'&&selectedFixture?.fixtureId && !mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.status\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('redo',mergeData?.storeFixtureList[fixturetaskIndex]?._id,mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','merchRollout','')\">\r\n Mark Redo\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('closeIssue',mergeData?.storeFixtureList[fixturetaskIndex]?._id,mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','merchRollout','')\">\r\n Close Issue</button>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{mergeData?.storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"my-4\" *ngIf=\"mergeData.comments.length && !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of mergeData.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\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|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 \r\n \r\n </div>\r\n </div>\r\n \r\n <div class=\"mt-5\" *ngIf=\"!loading\">\r\n @if (!mergeData?.storeFixtureList.length) {\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\r\n 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\"\r\n 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 response</div>\r\n <div class=\"mt-4\">Yet to receive store response.</div>\r\n </div>\r\n }\r\n </div>\r\n \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5\" *ngIf=\"!loading\">\r\n @if ((rolloutSection === 'vm' && !vmFeedback.length) || (rolloutSection === 'merch' && !mergeRolloutList.length) ) {\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\r\n 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\"\r\n 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 task assigned</div>\r\n <div class=\"mt-4\">Store response viewed here</div>\r\n </div>\r\n }\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-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;justify-content:start;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;min-height:52px}.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 rgba(152,162,179,.2901960784);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:0;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;border-bottom:3px solid #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}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;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-800, #1D2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;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}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.subText{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}\n"] }]
|
|
686
686
|
}], ctorParameters: () => [{ type: i1.StoreBuilderService }, { type: i0.ChangeDetectorRef }, { type: i2.NgbModal }, { type: i3.GlobalStateService }], propDecorators: { bodyBlockRef: [{
|
|
687
687
|
type: ViewChild,
|
|
688
688
|
args: ["bodyBlock"]
|
|
@@ -702,4 +702,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
702
702
|
}], rolloutSection: [{
|
|
703
703
|
type: Input
|
|
704
704
|
}] } });
|
|
705
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbG91dC1mZWVkYmFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9tYW5hZ2Utc3RvcmUtcGxhbm8vcm9sbG91dC1mZWVkYmFjay9yb2xsb3V0LWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9yb2xsb3V0LWZlZWRiYWNrL3JvbGxvdXQtZmVlZGJhY2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixZQUFZLEVBQWlCLFNBQVMsRUFBNEMsTUFBTSxlQUFlLENBQUM7QUFDOUosT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFBO0FBQy9GLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFNN0IsTUFBTSxPQUFPLHdCQUF3QjtJQTJEekI7SUFDQTtJQUNBO0lBQ0E7SUE3RGMsWUFBWSxDQUFjO0lBQ1AsU0FBUyxDQUFNO0lBQzFELE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDZixZQUFZLENBQU07SUFDbEIsYUFBYSxDQUFNO0lBQ25CLGFBQWEsQ0FBTTtJQUNuQixRQUFRLENBQU07SUFDYixVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUN0QyxjQUFjLEdBQVcsT0FBTyxDQUFDO0lBQzFDLGVBQWUsQ0FBTTtJQUNyQixVQUFV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QUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sU0FBUyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQTl3QlUsd0JBQXdCOzRGQUF4Qix3QkFBd0IsOGRDYnJDLGd1MkZBeXlDVTs7NEZENXhDRyx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0Usc0JBQXNCO2dMQUtSLFlBQVk7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVztnQkFDcUIsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVoQyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0UsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yZS1idWlsZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTSEVMRl9DT0xPUlMgfSBmcm9tICcuLi8uLi8uLi9kYXRhL2ZpeHR1cmUtdGVtcGxhdGUuZGF0YSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblBvcHVwQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbmZpcm1hdGlvbi1wb3B1cC9jb25maXJtYXRpb24tcG9wdXAuY29tcG9uZW50XCJcclxuaW1wb3J0IHsgdGltZXIgfSBmcm9tICdyeGpzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXJvbGxvdXQtZmVlZGJhY2tcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3JvbGxvdXQtZmVlZGJhY2suY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3JvbGxvdXQtZmVlZGJhY2suY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvbGxvdXRGZWVkYmFja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoXCJib2R5QmxvY2tcIikgYm9keUJsb2NrUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiYWNjb3JkaW9uXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBhY2NvcmRpb246IGFueTtcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjdXJyZW50UGxhbm86IGFueTtcclxuICBASW5wdXQoKSBzdG9yZUZlZWRiYWNrOiBhbnk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJc3N1ZTogYW55O1xyXG4gIEBJbnB1dCgpIHRhc2tJbmZvOiBhbnk7XHJcbiAgQE91dHB1dCgpIGlzQXBwcm92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBASW5wdXQoKSByb2xsb3V0U2VjdGlvbjogc3RyaW5nID0gJ21lcmNoJztcclxuICBzZWxlY3RlZEZpeHR1cmU6IGFueTtcclxuICBkYXRhT2JqZWN0OiBhbnkgPSBbXHJcbiAgICAvLyB7XHJcbiAgICAvLyAgIERlc2NyaXB0aW9uOiBcIlJvbGxvdXRcIixcclxuICAgIC8vICAgSXNzdWVzOiBbXHJcbiAgICAvLyAgICAgeyB0ZXh0OiBcIk1lcmNoYW5kaXNlIFJvbGxvdXRcIiwgaWQ6IFwibWVyY2hSb2xsb3V0XCIgfSxcclxuICAgIC8vICAgICB7IHRleHQ6IFwiVmlzdWFsIE1lcmNoIFJvbGxvdXRcIiwgaWQ6IFwidm1Sb2xsb3V0XCIgfSxcclxuICAgIC8vICAgXSxcclxuICAgIC8vIH0sXHJcbiAgICB7XHJcbiAgICAgIERlc2NyaXB0aW9uOiBcIlN0YXR1c1wiLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICB7IHRleHQ6IFwiTWF0Y2hcIiwgaWQ6IFwiY29tcGxldGVcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJNaXNtYXRjaFwiLCBpZDogXCJpbmNvbXBsZXRlXCIgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIERlc2NyaXB0aW9uOiBcIkFwcHJvdmFsIFN0YXR1c1wiLFxyXG4gICAgICB0eXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICB7IHRleHQ6IFwiQWN0aW9uIFBlbmRpbmdcIiwgaWQ6IFwicGVuZGluZ1wiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIkFjdGlvbiBEb25lXCIsIGlkOiBcImFncmVlXCIgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgXTtcclxuICB2bUZlZWRiYWNrOiBhbnkgPSBbXTtcclxuICBtZXJjaHRhc2tEYXRhOiBhbnkgPSB7fTtcclxuICB2bXRhc2tEYXRhOiBhbnkgPSBbXTtcclxuICBvcGVuZml4dHVyZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgb3BlbnZtOiBib29sZWFuID0gdHJ1ZTtcclxuICBmaXh0dXJldGFza0luZGV4OiBudW1iZXIgPSAwO1xyXG4gIHZtdGFza0luZGV4OiBudW1iZXIgPSAwO1xyXG4gIGZpeHR1cmVJbmRleDogbnVtYmVyID0gMDtcclxuICBzdG9yZUZpeHR1cmVMaXN0OiBhbnkgPSBbXTtcclxuICBtZXJnZVJvbGxvdXRMaXN0OiBhbnkgPSBbXTtcclxuICBwZW5kaW5nRml4dHVyZWlzc3VlczogbnVtYmVyID0gMDtcclxuICBhcHByb3ZlZEZpeHR1cmVpc3N1ZXM6IG51bWJlciA9IDA7XHJcbiAgdG90YWxGaXh0dXJlaXNzdWVzOiBudW1iZXIgPSAwO1xyXG4gIGNvbXBsZXRlZEZpeHR1cmU6IG51bWJlciA9IDA7XHJcbiAgcGVuZGluZ1ZtaXNzdWVzOiBudW1iZXIgPSAwO1xyXG4gIGFwcHJvdmVkVm1pc3N1ZXM6IG51bWJlciA9IDA7XHJcbiAgdG90YWxWbWlzc3VlczogbnVtYmVyID0gMDtcclxuICBjb21wbGV0ZWRWbTogbnVtYmVyID0gMDtcclxuICBvcmlnaW5hbERhdGE6IGFueTtcclxuICBjdXJyZW50UGxhbm9EZXRhaWxzOiBhbnk7XHJcbiAgc2hsZWZDb2xvciA9IFNIRUxGX0NPTE9SUztcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBjZG5Vcmw6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1sncm9sbG91dFNlY3Rpb24nXSkge1xyXG4gICAgICB0aGlzLnJvbGxvdXRTZWN0aW9uID0gY2hhbmdlc1tcInJvbGxvdXRTZWN0aW9uXCJdLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wiY3VycmVudFBsYW5vXCJdKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBsYW5vRGV0YWlscyA9IGNoYW5nZXNbXCJjdXJyZW50UGxhbm9cIl0uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbXCJ0YXNrSW5mb1wiXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1tcInRhc2tJbmZvXCJdLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMubWVyY2h0YXNrRGF0YSA9IGNoYW5nZXNbXCJ0YXNrSW5mb1wiXS5jdXJyZW50VmFsdWU/LnRhc2tEZXRhaWxzPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUudHlwZSA9PSAnbWVyY2hSb2xsb3V0JylbMF07XHJcbiAgICAgICAgdGhpcy52bXRhc2tEYXRhID0gY2hhbmdlc1tcInRhc2tJbmZvXCJdLmN1cnJlbnRWYWx1ZT8udGFza0RldGFpbHM/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS50eXBlID09ICd2bVJvbGxvdXQnKVswXTtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1tcInN0b3JlRmVlZGJhY2tcIl0uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldEluaXRpYWxWYWx1ZXMoKTtcclxuICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgZmVlZGJhY2tEYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbXCJzdG9yZUZlZWRiYWNrXCJdLmN1cnJlbnRWYWx1ZSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKGZlZWRiYWNrRGF0YT8ubWVyY2hSb2xsb3V0RGF0YSk7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZVZtZmVlZGJhY2soZmVlZGJhY2tEYXRhPy52bVJvbGxvdXREYXRhKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBmZWVkYmFja0RhdGE/Lm1lcmNoUm9sbG91dERhdGE/Lmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgICAgZmVlZGJhY2tEYXRhPy52bVJvbGxvdXREYXRhPy5sZW5ndGggPT09IDBcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbXCJzZWxlY3RlZElzc3VlXCJdKSB7XHJcbiAgICAgIHRoaXMucmVzZXRJbml0aWFsVmFsdWVzKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlID0gY2hhbmdlc1tcInNlbGVjdGVkSXNzdWVcIl0uY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5vcmlnaW5hbERhdGE/Lm1lcmNoUm9sbG91dERhdGEpIHtcclxuICAgICAgICBsZXQgcmVzdWx0RGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLm9yaWdpbmFsRGF0YT8ubWVyY2hSb2xsb3V0RGF0YSkpXHJcblxyXG4gICAgICAgIHJlc3VsdERhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGVtZW50LnN0b3JlRml4dHVyZUxpc3QgPSBlbGVtZW50Py5zdG9yZUZpeHR1cmVMaXN0Py5maWx0ZXIoXHJcbiAgICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEuZml4dHVyZUlkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdERhdGEgJiYgcmVzdWx0RGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgZmVlZEJhY2tEYXRhLGVtcHR5TGlzdCA9IFtdO1xyXG4gICAgICAgICAgICBmZWVkQmFja0RhdGEgPSByZXN1bHREYXRhLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlLnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoKTtcclxuICAgICAgICAgICAgbGV0IHN0YXR1cyA9IHRoaXMudGFza0luZm8/LnRhc2tEZXRhaWxzLmZpbmQoKGVsZTphbnkpID0+IGVsZS50eXBlID09ICdtZXJjaFJvbGxvdXQnKT8uc3RhdHVzO1xyXG4gICAgICAgICAgICBpZih0aGlzLnJvbGxvdXRTZWN0aW9uID09PSAnbWVyY2gnICYmIHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5pc01lcmNoRWRpdGVkICYmIHN0YXR1cyAmJiBbJ29wZW4nLCdpbnByb2dyZXNzJ10uaW5jbHVkZXMoc3RhdHVzKSkge1xyXG4gICAgICAgICAgICAgIGVtcHR5TGlzdCA9IHJlc3VsdERhdGEuZmlsdGVyKChlbGU6YW55KSA9PiAhZWxlLnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoIClcclxuICAgICAgICAgICAgICBpZihlbXB0eUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBlbXB0eUxpc3QgPSBbZW1wdHlMaXN0WzBdXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHREYXRhID0gWy4uLmZlZWRCYWNrRGF0YSwgLi4uZW1wdHlMaXN0XTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKHJlc3VsdERhdGEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYodGhpcy5yb2xsb3V0U2VjdGlvbiA9PT0gJ21lcmNoJyAmJiB0aGlzLnNlbGVjdGVkRml4dHVyZT8uaXNNZXJjaEVkaXRlZCkge1xyXG4gICAgICAgICAgICAgIHJlc3VsdERhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5vcmlnaW5hbERhdGE/Lm1lcmNoUm9sbG91dERhdGEpXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIHJlc3VsdERhdGEgPSByZXN1bHREYXRhLmZpbHRlcigoZWxlOmFueSkgPT4gIWVsZS5zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2socmVzdWx0RGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soW10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMub3JpZ2luYWxEYXRhPy52bVJvbGxvdXREYXRhKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdERhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5vcmlnaW5hbERhdGE/LnZtUm9sbG91dERhdGEpKVxyXG4gICAgICAgIHJlc3VsdERhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGVtZW50LnN0b3JlRml4dHVyZUxpc3QgPSBlbGVtZW50Py5zdG9yZUZpeHR1cmVMaXN0LmZpbHRlcihcclxuICAgICAgICAgICAgKGRhdGE6IGFueSkgPT4gZGF0YS5maXh0dXJlSWQgPT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAocmVzdWx0RGF0YSAmJiByZXN1bHREYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBsZXQgZmVlZEJhY2tEYXRhLGVtcHR5TGlzdCA9IFtdO1xyXG4gICAgICAgICAgICBmZWVkQmFja0RhdGEgPSByZXN1bHREYXRhLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlLnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoKTtcclxuICAgICAgICAgICAgbGV0IHN0YXR1cyA9IHRoaXMudGFza0luZm8/LnRhc2tEZXRhaWxzLmZpbmQoKGVsZTphbnkpID0+IGVsZS50eXBlID09ICd2bVJvbGxvdXQnKT8uc3RhdHVzO1xyXG4gICAgICAgICAgICBpZih0aGlzLnJvbGxvdXRTZWN0aW9uID09PSAndm0nICYmIHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5pc1ZtRWRpdGVkICYmIHN0YXR1cyAmJiBbJ29wZW4nLCdpbnByb2dyZXNzJ10uaW5jbHVkZXMoc3RhdHVzKSkge1xyXG4gICAgICAgICAgICAgIGVtcHR5TGlzdCA9IHJlc3VsdERhdGEuZmlsdGVyKChlbGU6YW55KSA9PiAhZWxlLnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoIClcclxuICAgICAgICAgICAgICBpZihlbXB0eUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBlbXB0eUxpc3QgPSBbZW1wdHlMaXN0WzBdXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHREYXRhID0gWy4uLmZlZWRCYWNrRGF0YSwgLi4uZW1wdHlMaXN0XTtcclxuICAgICAgICAgIHRoaXMuZ2V0U3RvcmVWbWZlZWRiYWNrKHJlc3VsdERhdGEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZih0aGlzLnJvbGxvdXRTZWN0aW9uID09PSAndm0nICYmIHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5pc1ZtRWRpdGVkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdERhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxEYXRhPy52bVJvbGxvdXREYXRhKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5maWx0ZXIoKGVsZTphbnkpID0+ICFlbGUuc3RvcmVGaXh0dXJlTGlzdC5sZW5ndGgpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayhyZXN1bHREYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayhbXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhmaXh0dXJlRGF0YTogYW55KSB7XHJcbiAgICB0aGlzLm1lcmdlUm9sbG91dExpc3QgPSBbXVxyXG5cclxuICAgIGZpeHR1cmVEYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPT09IGZpeHR1cmVEYXRhLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBlbGVtZW50Lm9wZW5maXh0dXJlID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWxlbWVudC5vcGVuZml4dHVyZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21wbGV0ZWRGaXh0dXJlID0gZWxlbWVudD8uc3RvcmVGaXh0dXJlTGlzdD8uZmlsdGVyKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzID09PSBcImNvbXBsZXRlXCJcclxuICAgICAgKS5sZW5ndGg7XHJcbiAgICAgIGVsZW1lbnQ/LnN0b3JlRml4dHVyZUxpc3Q/LmZvckVhY2goKHNoZWxmOiBhbnksIGk6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWcgJiZcclxuICAgICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDBcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKFxyXG4gICAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZyxcclxuICAgICAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5wcm9kdWN0UmVzb2x1dGlvbkxldmVsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKHNoZWxmPy5GaXh0dXJlRGF0YT8ucHJvZHVjdFJlc29sdXRpb25MZXZlbCA9PSAnTDEnKSB7XHJcbiAgICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdbMF0ucHJvZHVjdEJyYW5kTmFtZSA9IHNoZWxmPy5GaXh0dXJlRGF0YS5wcm9kdWN0QnJhbmROYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHpvbmVDb2xvcjogYW55ID0ge307XHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHpvbmVDb2xvcltlbGUuem9uZV0gPSB7IGNvbG9yOiBlbGUuY29sb3IgfTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuem9uZUNvbG9yID0gem9uZUNvbG9yO1xyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhcclxuICAgICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscyA9IHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgICAgc2hlbGY/LmFuc3dlcnM/LmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGVsZS5pc3N1ZXMgPSBlbGU/Lmlzc3Vlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGlzc3VlOiBhbnkpID0+IGlzc3VlLkRldGFpbHMgJiYgaXNzdWUuRGV0YWlscy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxGaXh0dXJlaXNzdWVzID1cclxuICAgICAgICAgICAgICB0aGlzLnRvdGFsRml4dHVyZWlzc3VlcyArIGVsZT8uaXNzdWVzPy5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgICBlbGU/Lmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgaXNzdWU/LkRldGFpbHMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzID09PSBcInBlbmRpbmdcIilcclxuICAgICAgICAgICAgICAgICAgLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGlzc3VlLmNvbGxhcHNlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nRml4dHVyZWlzc3VlcyA9IHRoaXMucGVuZGluZ0ZpeHR1cmVpc3N1ZXMgKyAxO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpc3N1ZS5jb2xsYXBzZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRGaXh0dXJlaXNzdWVzID0gdGhpcy5hcHByb3ZlZEZpeHR1cmVpc3N1ZXMgKyAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5mb3JFYWNoKChuZXdzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3c2hlbGY/LnNoZWxmQ29uZmlnICYmIG5ld3NoZWxmPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZ0Zvcm1hdGVkID0gdGhpcy5mb3JtYXREYXRhKFxyXG4gICAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNlY3Rpb25Db25maWcgPSB0aGlzLnN0b3JlRGF0YShcclxuICAgICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZyxcclxuICAgICAgICAgICAgICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWxcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHNoZWxmPy5GaXh0dXJlRGF0YT8ucHJvZHVjdFJlc29sdXRpb25MZXZlbCA9PSBcIkwxXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zZWN0aW9uQ29uZmlnWzBdLnByb2R1Y3RCcmFuZE5hbWUgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhLnByb2R1Y3RCcmFuZE5hbWU7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhuZXdzaGVsZi5zZWN0aW9uQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIFtcInByb2R1Y3RjYXRlZ29yeVdyb25nXCIsIFwiYnJhbmRXcm9uZ1wiXS5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgICAgICAgIGlzc3VlLmlzc3VlVHlwZVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZEZXRhaWxzLmZvckVhY2goKHNoZWxmOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaGVsZkRldGFpbHMgPSBuZXdzaGVsZi5zaGVsZkNvbmZpZy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmV3U2hlbGY6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTaGVsZi5zaGVsZk51bWJlciA9PSBzaGVsZi5zaGVsZk51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxmLm9sZFNoZWxmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWcucHVzaChzaGVsZik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWcuc29ydChcclxuICAgICAgICAgICAgICAgICAgICAgIChhOiBhbnksIGI6IGFueSkgPT4gYS5zaGVsZk51bWJlciAtIGIuc2hlbGZOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmRGV0YWlscyA9IG5ld3NoZWxmLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubWVyZ2VSb2xsb3V0TGlzdCA9IGZpeHR1cmVEYXRhLnNsaWNlKCkucmV2ZXJzZSgpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICB9XHJcbiAgZ2V0U3RvcmVWbWZlZWRiYWNrKFZtRGF0YTogYW55KSB7XHJcblxyXG4gICAgdGhpcy52bUZlZWRiYWNrID0gW107XHJcbiAgICBWbURhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gVm1EYXRhLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBlbGVtZW50Lm9wZW5maXh0dXJlID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWxlbWVudC5vcGVuZml4dHVyZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21wbGV0ZWRWbSA9IGVsZW1lbnQ/LnN0b3JlRml4dHVyZUxpc3Q/LmZpbHRlcihcclxuICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gXCJjb21wbGV0ZVwiXHJcbiAgICAgICkubGVuZ3RoO1xyXG4gICAgICBlbGVtZW50Py5zdG9yZUZpeHR1cmVMaXN0Py5mb3JFYWNoKChzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZyAmJlxyXG4gICAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID4gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoXHJcbiAgICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMoXHJcbiAgICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkRldGFpbHMgPSBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZztcclxuICAgICAgICAgIGxldCB2bUNvbmZpZyA9IHNoZWxmLkZpeHR1cmVEYXRhLnZtQ29uZmlnO1xyXG4gICAgICAgICAgc2hlbGY/LmFuc3dlcnMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlLmlzc3VlcyA9IGVsZT8uaXNzdWVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbFZtaXNzdWVzID0gdGhpcy50b3RhbFZtaXNzdWVzICsgZWxlPy5pc3N1ZXM/Lmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgIGVsZT8uaXNzdWVzLmZvckVhY2goKGlzc3VlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgPT09IFwicGVuZGluZ1wiKVxyXG4gICAgICAgICAgICAgICAgICAubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgaXNzdWUuY29sbGFwc2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdWbWlzc3VlcyA9IHRoaXMucGVuZGluZ1ZtaXNzdWVzICsgMTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaXNzdWUuY29sbGFwc2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRWbWlzc3VlcyA9IHRoaXMuYXBwcm92ZWRWbWlzc3VlcyArIDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlzc3VlPy5EZXRhaWxzLmZvckVhY2goKG5ld3NoZWxmOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIG5ld3NoZWxmLnZtQ29uZmlnbmV3ID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgICAgIC8vICAgSlNPTi5zdHJpbmdpZnkobmV3c2hlbGYudm1Db25maWcpXHJcbiAgICAgICAgICAgICAgICAvLyApO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYudm1EYXRhLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlbGU/LnZtSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdm1UeXBlID0gdm1Db25maWcuZmluZCgodm06IGFueSkgPT4gdm0udm1JZC50b1N0cmluZygpID09IGVsZS52bUlkLnRvU3RyaW5nKCkpPy52bVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlLnZtVHlwZSA9IHZtVHlwZTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIGlmIChuZXdzaGVsZj8uc2hlbGZDb25maWcgJiYgbmV3c2hlbGY/LnNoZWxmQ29uZmlnPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWdcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKG5ld3NoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhuZXdzaGVsZi5zZWN0aW9uQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZEZXRhaWxzID0gbmV3c2hlbGYuc2hlbGZDb25maWc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBuZXdzaGVsZi52bUNvbmZpZ25ldy5mb3JFYWNoKCh2bTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGlzc3VlLmlzc3VlVHlwZSA9PSBcIlZtTWlzbWF0Y2hcIikge1xyXG4gICAgICAgICAgICAgICAgICAvLyAgICAgdm0uc3RhcnRZUG9zaXRpb24gPSB2bS5uZXdzdGFydFlQb3NpdGlvbjtcclxuICAgICAgICAgICAgICAgICAgLy8gICAgIHZtLmVuZFlQb3NpdGlvbiA9IHZtLm5ld2VuZFlQb3NpdGlvbjtcclxuICAgICAgICAgICAgICAgICAgLy8gICAgIHZtLnhab25lID0gdm0ubmV3eFpvbmUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gICAgIHZtLnlab25lID0gdm0ubmV3eVpvbmUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgdm0ubmV3Vm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYudm1Db25maWduZXcgPSB2bUNvbmZpZztcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGY/LnZtQ29uZmlnbmV3Py5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGUudm1JZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbmRWbSA9IG5ld3NoZWxmPy52bURhdGE/LmZpbmQoKGVsZTogYW55KSA9PiBlbGU/LnZtSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRWbSkgZWxlLm5ld1ZtID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pXHJcbiAgICB0aGlzLnZtRmVlZGJhY2sgPSBWbURhdGEuc2xpY2UoKS5yZXZlcnNlKCk7XHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRpbWVyKDMwMDApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBmb3JtYXREYXRhKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgZ3JvdXBlZEFycmF5ID0gT2JqZWN0LnZhbHVlcyhcclxuICAgICAgZGF0YS5yZWR1Y2UoKGFjYzogYW55LCBpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB6b25lID0gaXRlbS56b25lIHx8IFwidW5kZWZpbmVkXCI7XHJcbiAgICAgICAgaWYgKCFhY2Nbem9uZV0pIHtcclxuICAgICAgICAgIGFjY1t6b25lXSA9IHsgem9uZSwgaXRlbXM6IFtdIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFjY1t6b25lXS5pdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgIH0sIHt9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBncm91cGVkQXJyYXk7XHJcbiAgfVxyXG4gIHN0b3JlRGF0YShzaGVsZkRhdGE6IGFueSwgbGV2ZWw/OiBzdHJpbmcpIHtcclxuICAgIHNoZWxmRGF0YS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYS5zaGVsZk51bWJlciAtIGIuc2hlbGZOdW1iZXIpO1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGxldCBzZWN0aW9uQ29uZmlnOiBhbnlbXSA9IFtdO1xyXG4gICAgc2hlbGZEYXRhLmZvckVhY2goKHNoZWxmOiBhbnkpID0+IHtcclxuICAgICAgbGV0IGdldFNlY3Rpb24gPSBzZWN0aW9uQ29uZmlnLmZpbHRlcigoZWxlKSA9PiBlbGUuem9uZSA9PSBzaGVsZi56b25lKTtcclxuICAgICAgaWYgKCFnZXRTZWN0aW9uLmxlbmd0aCB8fCAoIXNoZWxmLnpvbmUgJiYgbGV2ZWwgPT0gXCJMMlwiKSkge1xyXG4gICAgICAgIHNlY3Rpb25Db25maWcucHVzaCh7XHJcbiAgICAgICAgICAuLi5zaGVsZixcclxuICAgICAgICAgIHN0YXJ0WVBvc2l0aW9uOiBzaGVsZi5zaGVsZk51bWJlcixcclxuICAgICAgICAgIGVuZFlQb3NpdGlvbjogc2hlbGYuc2hlbGZOdW1iZXIsXHJcbiAgICAgICAgICBjb2xvcjogdGhpcy5zaGxlZkNvbG9yW2NvdW50XSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb3VudCsrO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5lbmRZUG9zaXRpb24gKyAxID09XHJcbiAgICAgICAgICBzaGVsZi5zaGVsZk51bWJlclxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aCAtIDFdLmVuZFlQb3NpdGlvbiA9IHNoZWxmLnNoZWxmTnVtYmVyO1xyXG4gICAgICAgICAgZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aCAtIDFdLnByb2R1Y3RCcmFuZE5hbWUgPSBbXHJcbiAgICAgICAgICAgIC4uLmdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0QnJhbmROYW1lLFxyXG4gICAgICAgICAgICAuLi5zaGVsZi5wcm9kdWN0QnJhbmROYW1lLFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0QnJhbmROYW1lID0gW1xyXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0QnJhbmROYW1lLm1hcChcclxuICAgICAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0Q2F0ZWdvcnkgPSBbXHJcbiAgICAgICAgICAgIC4uLmdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0Q2F0ZWdvcnksXHJcbiAgICAgICAgICAgIC4uLnNoZWxmLnByb2R1Y3RDYXRlZ29yeSxcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0ucHJvZHVjdENhdGVnb3J5ID0gW1xyXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0Q2F0ZWdvcnkubWFwKFxyXG4gICAgICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGVcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZWN0aW9uQ29uZmlnLnB1c2goe1xyXG4gICAgICAgICAgICAuLi5zaGVsZixcclxuICAgICAgICAgICAgc3RhcnRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgICBlbmRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgICBjb2xvcjogZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aCAtIDFdLmNvbG9yLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyB0aGlzLmhhbmRsZXZtUG9zaXRpb24oc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAvLyB0aGlzLmhhbmRsZVNlY3Rpb24oc2VjdGlvbkNvbmZpZyk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiBzZWN0aW9uQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRJbml0aWFsVmFsdWVzKCkge1xyXG4gICAgdGhpcy5wZW5kaW5nRml4dHVyZWlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLmFwcHJvdmVkRml4dHVyZWlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLnRvdGFsRml4dHVyZWlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLmNvbXBsZXRlZEZpeHR1cmUgPSAwO1xyXG4gICAgdGhpcy5wZW5kaW5nVm1pc3N1ZXMgPSAwO1xyXG4gICAgdGhpcy5hcHByb3ZlZFZtaXNzdWVzID0gMDtcclxuICAgIHRoaXMudG90YWxWbWlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLmNvbXBsZXRlZFZtID0gMDtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgICBpZiAoZW52KSB7XHJcbiAgICAgICAgdGhpcy5jZG5VcmwgPSBlbnYucGxhbm9ncmFtQ0ROO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29uZmlybWF0aW9uKFxyXG4gICAgdHlwZTogYW55LFxyXG4gICAgX2lkOiBhbnksXHJcbiAgICBhbnN3ZXJJZDogYW55LFxyXG4gICAgaXNzdWVJZDogYW55LFxyXG4gICAgRGV0YWlsc0lkOiBhbnksXHJcbiAgICB0YXNrVHlwZTogYW55LFxyXG4gICAgaXNzdWVUeXBlOiBhbnlcclxuICApIHtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBfaWQ6IF9pZCxcclxuICAgICAgYW5zd2VySWQ6IGFuc3dlcklkLFxyXG4gICAgICBpc3N1ZUlkOiBpc3N1ZUlkLFxyXG4gICAgICBEZXRhaWxzSWQ6IERldGFpbHNJZCxcclxuICAgICAgdGFza1R5cGU6IHRhc2tUeXBlLFxyXG4gICAgICBpc3N1ZVR5cGU6IGlzc3VlVHlwZSxcclxuICAgICAgcGxhbm9JZDogdGhpcy5jdXJyZW50UGxhbm9EZXRhaWxzPy5wbGFub0lkLFxyXG4gICAgICBmbG9vcklkOiB0aGlzLmN1cnJlbnRQbGFub0RldGFpbHM/Ll9pZCxcclxuICAgICAgLy8gZml4dHVyZUlkOiB0aGlzLnNlbGVjdGVkRml4dHVyZS5maXh0dXJlSWQsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENvbmZpcm1hdGlvblBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLFxyXG4gICAgICB3aW5kb3dDbGFzczogXCJjdXN0b20taGVpZ2h0LW1vZGFsXCIsIC8vIDwtLSBBZGQgYSBjdXN0b20gY2xhc3MgaGVyZVxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gdHlwZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmlucHV0RGF0YSA9IHBheWxvYWQ7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwic3VibWl0XCIpIHtcclxuICAgICAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbG9hZCgpIHtcclxuICAgIGxldCByZXN1bHQgPSB7XHJcbiAgICAgIHJlbG9hZDogdHJ1ZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gIH1cclxuICBhcHBseUZpbHRlcnMoZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IHJlc3VsdDogYW55ID0ge307XHJcbiAgICBpZiAoZXZlbnQ/Lmxlbmd0aCkge1xyXG4gICAgICBldmVudC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAvLyBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJUYXNrXCIpIHtcclxuICAgICAgICAvLyAgIHJlc3VsdC5maWx0ZXJCeVRhc2sgPSBlbGVtZW50Lklzc3Vlcy5tYXAoKHZhbDogYW55KSA9PiB2YWw/LmlkKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiU3RhdHVzXCIpIHtcclxuICAgICAgICAgIHJlc3VsdC5maWx0ZXJCeVN0YXR1cyA9IGVsZW1lbnQuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbD8uaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJBcHByb3ZhbCBTdGF0dXNcIikge1xyXG4gICAgICAgICAgcmVzdWx0LmZpbHRlckJ5QXBwcm92YWxTdGF0dXMgPSBlbGVtZW50Lklzc3Vlcy5pZFxyXG4gICAgICAgICAgICA/IGVsZW1lbnQuSXNzdWVzLmlkXHJcbiAgICAgICAgICAgIDogXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHJlc3VsdC5maWx0ZXJCeUFwcHJvdmFsU3RhdHVzPy5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICByZXN1bHQuZmlsdGVyQnlTdGF0dXM/Lmxlbmd0aCA9PT0gMFxyXG4gICAgICAgIC8vICYmIHJlc3VsdC5maWx0ZXJCeVRhc2s/Lmxlbmd0aCA9PT0gMFxyXG4gICAgICApIHtcclxuICAgICAgICByZXN1bHQucmVsb2FkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuICB1cGRhdGVTdHlsZShkYXRhOiBhbnksIGk6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlU2VjdGlvbihkYXRhLCBpKTtcclxuICB9XHJcblxyXG4gIG5leHR0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcblxyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiBmaXh0dXJldGFza0luZGV4ICsgMSkge1xyXG4gICAgICB0aGlzLmZpeHR1cmV0YXNrSW5kZXggPSBmaXh0dXJldGFza0luZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXN0YXNrVm0odm10YXNrSW5kZXg6IG51bWJlciwgdG90YWxEYXRhOiBhbnkpIHtcclxuICAgIGlmICh2bXRhc2tJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy52bXRhc2tJbmRleCA9IHZtdGFza0luZGV4IC0gMTtcclxuICAgIH1cclxuICB9XHJcbiAgbmV4dHRhc2tWbSh2bXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG5cclxuICAgIGlmICh0b3RhbERhdGEubGVuZ3RoID4gdm10YXNrSW5kZXggKyAxKSB7XHJcbiAgICAgIHRoaXMudm10YXNrSW5kZXggPSB2bXRhc2tJbmRleCArIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByZXZpb3VzdGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKGZpeHR1cmV0YXNrSW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuZml4dHVyZXRhc2tJbmRleCA9IGZpeHR1cmV0YXNrSW5kZXggLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBoYW5kbGV2bVBvc2l0aW9uKHZtRGF0YTogYW55LCBpOiBhbnkpIHtcclxuICAgIGNvbnN0IHZpZXdQb3J0ID0gdGhpcy5ib2R5QmxvY2tSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBib2R5SGVpZ2h0ID0gdmlld1BvcnQ/Lm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IGJvZHlXaWR0aCA9IHZpZXdQb3J0Py5vZmZzZXRXaWR0aDtcclxuICAgIGxldCBzdHlsZTtcclxuICAgIC8vIHRoaXMudm1Db25maWcuZm9yRWFjaCgoZTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGxldCBzdGFydFNoZWxmID0gdm1EYXRhPy5zdGFydFlQb3NpdGlvbiA/PyAxO1xyXG4gICAgbGV0IGVuZFNoZWxmID0gdm1EYXRhPy5lbmRZUG9zaXRpb24gPz8gMTtcclxuICAgIGNvbnN0IHZtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ2bVwiICsgaSk7XHJcbiAgICBpZiAoIXZtKSByZXR1cm47XHJcblxyXG4gICAgbGV0IHdpZHRoID0gMTAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDEwMDtcclxuICAgIGxldCB4ID0gMDtcclxuICAgIGxldCB5ID0gMDtcclxuXHJcbiAgICBsZXQgeVN0YXJ0ID0gMDtcclxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc3RhcnRTaGVsZiAtIDE7IGsrKykge1xyXG4gICAgICBjb25zdCBzaGVsZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hlbGZcIiArIGspIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXNoZWxmKSByZXR1cm47XHJcblxyXG4gICAgICB5U3RhcnQgKz0gc2hlbGYub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwbGFjZW1lbnRIZWlnaHQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IHN0YXJ0U2hlbGYgLSAxOyBrIDwgZW5kU2hlbGY7IGsrKykge1xyXG4gICAgICBjb25zdCBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghcykgcmV0dXJuO1xyXG4gICAgICBwbGFjZW1lbnRIZWlnaHQgKz0gcy5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh2bURhdGE/Lnhab25lKSB7XHJcbiAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgeCA9IDA7XHJcbiAgICAgICAgd2lkdGggPSAxMDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIHggPSBib2R5V2lkdGggLSB3aWR0aDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIm1pZGRsZVwiOlxyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIHggPSAoYm9keVdpZHRoIC0gd2lkdGgpIC8gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcclxuICAgICAgICB3aWR0aCA9IGJvZHlXaWR0aDtcclxuICAgICAgICB4ID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHZtRGF0YT8ueVpvbmUpIHtcclxuICAgICAgY2FzZSBcInRvcFwiOlxyXG4gICAgICAgIGhlaWdodCA9IHBsYWNlbWVudEhlaWdodCA8IDEwMCA/IHBsYWNlbWVudEhlaWdodCAtIDIwIDogMTAwO1xyXG4gICAgICAgIHkgPSB5U3RhcnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtaWRkbGVcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyBwbGFjZW1lbnRIZWlnaHQgLSAyMCA6IDEwMDtcclxuICAgICAgICB5ID0gKHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCkgLyAyICsgeVN0YXJ0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiYm90dG9tXCI6XHJcbiAgICAgICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0IDwgMTAwID8gcGxhY2VtZW50SGVpZ2h0IC0gMjAgOiAxMDA7XHJcbiAgICAgICAgeSA9IHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCArIHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQ7XHJcbiAgICAgICAgeSA9IHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodm1EYXRhLm5ld1ZtKSB7XHJcbiAgICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpO3otaW5kZXg6MjtgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3R5bGUgPSBgd2lkdGg6JHt3aWR0aH1weDtoZWlnaHQ6JHtoZWlnaHR9cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgke3h9cHgsICR7eX1weCk7YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAvLyB9KTtcclxuICB9XHJcbiAgaGFuZGxlU2VjdGlvbihzZWN0aW9uQ29uZmlnOiBhbnksIGk6IGFueSkge1xyXG4gICAgY29uc3Qgdmlld1BvcnQgPSB0aGlzLmJvZHlCbG9ja1JlZj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGJvZHlIZWlnaHQgPSB2aWV3UG9ydD8ub2Zmc2V0SGVpZ2h0O1xyXG4gICAgY29uc3QgYm9keVdpZHRoID0gdmlld1BvcnQ/Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIGxldCBzdHlsZTogYW55O1xyXG4gICAgLy8gT2JqZWN0LmtleXMoc2VjdGlvbkNvbmZpZykuZm9yRWFjaCgoZTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGxldCBzdGFydFNoZWxmID0gc2VjdGlvbkNvbmZpZz8uc3RhcnRZUG9zaXRpb24gPz8gMTtcclxuICAgIGxldCBlbmRTaGVsZiA9IHNlY3Rpb25Db25maWc/LmVuZFlQb3NpdGlvbiA/PyBzZWN0aW9uQ29uZmlnLmxlbmd0aDtcclxuICAgIGNvbnN0IHNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlY3Rpb25cIiArIGkpO1xyXG4gICAgaWYgKCFzZWN0aW9uKSByZXR1cm47XHJcblxyXG4gICAgbGV0IHdpZHRoID0gMTAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDUwO1xyXG4gICAgbGV0IHggPSAwO1xyXG4gICAgbGV0IHkgPSAwO1xyXG5cclxuICAgIGxldCB5U3RhcnQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBzdGFydFNoZWxmIC0gMTsgaysrKSB7XHJcbiAgICAgIGNvbnN0IHNoZWxmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghc2hlbGYpIHJldHVybjtcclxuXHJcbiAgICAgIHlTdGFydCArPSBzaGVsZi5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBsYWNlbWVudEhlaWdodCA9IDA7XHJcbiAgICBmb3IgKGxldCBrID0gc3RhcnRTaGVsZiAtIDE7IGsgPCBlbmRTaGVsZjsgaysrKSB7XHJcbiAgICAgIGNvbnN0IHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNoZWxmXCIgKyBrKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgIGlmICghcykgcmV0dXJuO1xyXG4gICAgICBwbGFjZW1lbnRIZWlnaHQgKz0gcy5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICB4ID0gMTA7XHJcbiAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyA0OCA6IDUwO1xyXG4gICAgLy8gaGVpZ2h0ID0gNTA7XHJcbiAgICB5ID0gKHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCkgLyAyICsgeVN0YXJ0O1xyXG5cclxuICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpYDtcclxuICAgIC8vIGxldCB2bURldGFpbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgdm0tcGxhY2Vob2xkZXIke2l9YCk7XHJcbiAgICAvLyBpZiAodm1EZXRhaWxzKSB7XHJcbiAgICAvLyAgIHZtRGV0YWlscy5zdHlsZS5ib3JkZXIgPSBgMXB4IHNvbGlkICR7dGhpcy5zaGxlZkNvbG9yW2ldLmJvcmRlcn1gO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gc3R5bGUucHVzaCh7em9uZTplLHN0eWxlOnN0eWxlTGlzdH0pXHJcbiAgICAvLyB9KTtcclxuICAgIHJldHVybiBzdHlsZTtcclxuICB9XHJcblxyXG4gIGdldFN0YXJ0UG9zaXRpb24oXHJcbiAgICBzaGVsZk51bWJlcjogbnVtYmVyLFxyXG4gICAgem9uZTogYW55LFxyXG4gICAgc2hlbGZEZXRhaWxzOiBhbnksXHJcbiAgICBkYXRhOiBhbnkgPSBbXVxyXG4gICkge1xyXG4gICAgc2hlbGZEZXRhaWxzID0gc2hlbGZEZXRhaWxzLmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLnpvbmUgPT0gem9uZSAmJiBlbGUuc3RhcnRZUG9zaXRpb24gPT0gc2hlbGZOdW1iZXJcclxuICAgICk7XHJcbiAgICBpZiAoc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgIGlmIChkYXRhLmxlbmd0aCkge1xyXG4gICAgICAgIGxldCBtYXRjaGVkQ291bnQgPSAwO1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChzaGVsZkRldGFpbHMucHJvZHVjdEJyYW5kTmFtZS5pbmNsdWRlcyhlbGUucHJvZHVjdEJyYW5kTmFtZSkpIHtcclxuICAgICAgICAgICAgaWYgKCFlbGUucHJvZHVjdENhdGVnb3J5Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIG1hdGNoZWRDb3VudCsrO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGVsZS5wcm9kdWN0Q2F0ZWdvcnkuZm9yRWFjaCgoY2F0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChzaGVsZkRldGFpbHMucHJvZHVjdENhdGVnb3J5LmluY2x1ZGVzKGNhdCkpIHtcclxuICAgICAgICAgICAgICAgICAgbWF0Y2hlZENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIW1hdGNoZWRDb3VudCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgZ2V0RW5kUG9zaXRpb24oXHJcbiAgICBzaGVsZk51bWJlcjogbnVtYmVyLFxyXG4gICAgem9uZTogYW55LFxyXG4gICAgc2hlbGZEZXRhaWxzOiBhbnksXHJcbiAgICBkYXRhOiBhbnkgPSBbXVxyXG4gICkge1xyXG4gICAgc2hlbGZEZXRhaWxzID0gc2hlbGZEZXRhaWxzLmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLnpvbmUgPT0gem9uZSAmJiBlbGUuZW5kWVBvc2l0aW9uID09IHNoZWxmTnVtYmVyXHJcbiAgICApO1xyXG4gICAgaWYgKHNoZWxmRGV0YWlscykge1xyXG4gICAgICBpZiAoZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgbWF0Y2hlZENvdW50ID0gMDtcclxuICAgICAgICBkYXRhLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2hlbGZEZXRhaWxzLnByb2R1Y3RCcmFuZE5hbWUuaW5jbHVkZXMoZWxlLnByb2R1Y3RCcmFuZE5hbWUpKSB7XHJcbiAgICAgICAgICAgIGlmICghZWxlLnByb2R1Y3RDYXRlZ29yeS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICBtYXRjaGVkQ291bnQrKztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBlbGUucHJvZHVjdENhdGVnb3J5LmZvckVhY2goKGNhdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hlbGZEZXRhaWxzLnByb2R1Y3RDYXRlZ29yeS5pbmNsdWRlcyhjYXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgIG1hdGNoZWRDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFtYXRjaGVkQ291bnQpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGdldE1pZFBvc2l0aW9uKFxyXG4gICAgc2hlbGZOdW1iZXI6IG51bWJlcixcclxuICAgIHpvbmU6IGFueSxcclxuICAgIHNoZWxmRGV0YWlsczogYW55LFxyXG4gICAgZGF0YTogYW55ID0gW11cclxuICApIHtcclxuICAgIHNoZWxmRGV0YWlscyA9IHNoZWxmRGV0YWlscy5maW5kKFxyXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZS56b25lID09IHpvbmUgJiYgZWxlLmVuZFlQb3NpdGlvbiA+PSBzaGVsZk51bWJlclxyXG4gICAgKTtcclxuICAgIGlmIChzaGVsZkRldGFpbHMpIHtcclxuICAgICAgaWYgKGRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IG1hdGNoZWRDb3VudCA9IDA7XHJcbiAgICAgICAgZGF0YS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHNoZWxmRGV0YWlscy5wcm9kdWN0QnJhbmROYW1lLmluY2x1ZGVzKGVsZS5wcm9kdWN0QnJhbmROYW1lKSkge1xyXG4gICAgICAgICAgICBpZiAoIWVsZS5wcm9kdWN0Q2F0ZWdvcnkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgbWF0Y2hlZENvdW50Kys7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZWxlLnByb2R1Y3RDYXRlZ29yeS5mb3JFYWNoKChjYXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNoZWxmRGV0YWlscy5wcm9kdWN0Q2F0ZWdvcnkuaW5jbHVkZXMoY2F0KSkge1xyXG4gICAgICAgICAgICAgICAgICBtYXRjaGVkQ291bnQrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghbWF0Y2hlZENvdW50KSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2hvd01hdGNoKGRhdGE6YW55KSB7XHJcbiAgICBsZXQgZmluZE1hdGNoID0gZGF0YT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlLnN0YXR1cyA9PSBcImNvbXBsZXRlXCIpO1xyXG4gICAgcmV0dXJuIGZpbmRNYXRjaD8ubGVuZ3RoID09IGRhdGEubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8c2VjdGlvbiAqbmdJZj1cImxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPHNlY3Rpb24gKm5nSWY9XCIhbG9hZGluZ1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0b3JlUmVzcG9uc2VcIj5TdG9yZSByZXNwb25zZTwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibm9ybWFsVGV4dCBtYi01XCI+Q2xpY2sgYSBmaXh0dXJlIG9yIHZpZXcgYWxsPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiIChjbGljayk9XCJyZWxvYWQoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHRleHQtcHJpbWFyeSBib3JkZXItMCBweC0zIHB5LTJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNlYWY2ZmY7IGJvcmRlci1yYWRpdXM6IDFyZW07XCI+XHJcbiAgICAgICAgQ2xlYXIgRmlsdGVyXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bGliLWZpbHRlcnMgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIiBbZGF0YU9iamVjdF09XCJkYXRhT2JqZWN0XCJcclxuICAgICAgICAoYXBwbGllZEZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInJvbGxvdXRTZWN0aW9uID09PSAndm0nXCI+XHJcbiAgICA8ZGl2IG5nYkFjY29yZGlvbiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIGNsYXNzPVwibXQtNVwiPlxyXG4gICAgICBAZm9yKHZtRGF0YSBvZiB2bUZlZWRiYWNrO3RyYWNrIGk7bGV0IGkgPSAkaW5kZXg7bGV0IGZpcnN0PSRmaXJzdCkge1xyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW0gW2NvbGxhcHNlZF09XCIhZmlyc3RcIiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlciAoY2xpY2spPVwidm10YXNrSW5kZXg9MFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0wXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhdm1EYXRhPy5yZWRvU3RhdHVzXCI+VmlzdWFsIG1lcmNoIHJvbGxvdXQgYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZtRGF0YT8ucmVkb1N0YXR1c1wiPlZpc3VhbCBtZXJjaCByb2xsb3V0IFJlYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+e3t2bURhdGE/LmNyZWF0ZWRBdCB8ZGF0ZTogJ2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicHMtMCBwZS0wXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlIHx8IHNlbGVjdGVkRml4dHVyZT8uaXNWbUVkaXRlZCB8fCBzZWxlY3RlZEZpeHR1cmU/Lmlzc3VlRGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uY3JlYXRlZEJ5TmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwidm1EYXRhPy51c2VyTmFtZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWRpdmlkZXIgbXQtMyBtcy01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1EYXRhPy51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uc3VibWl0VGltZV9zdHJpbmd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZtRGF0YS5zdG9yZUZpeHR1cmVMaXN0Py5sZW5ndGg+MFwiPlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtM1wiICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTMgbWUtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd01hdGNoKHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAzTDQuNSA4LjVMMiA2XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5WbSBtYXRjaGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIHAtMyBtZS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd01hdGNoKHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNiA0VjZNNiA4SDYuMDA1TTExIDZDMTEgOC43NjE0MiA4Ljc2MTQyIDExIDYgMTFDMy4yMzg1OCAxMSAxIDguNzYxNDIgMSA2QzEgMy4yMzg1OCAzLjIzODU4IDEgNiAxQzguNzYxNDIgMSAxMSAzLjIzODU4IDExIDZaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5WbSBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCIgKm5nSWY9XCJwZW5kaW5nVm1pc3N1ZXM+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3BlbmRpbmdWbWlzc3Vlc319L3t7dG90YWxWbWlzc3Vlc319IGFjdGlvbiBwZW5kaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtM1wiICpuZ0lmPVwiYXBwcm92ZWRWbWlzc3Vlcz4wJiZwZW5kaW5nVm1pc3N1ZXM9PT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7YXBwcm92ZWRWbWlzc3Vlc319L3t7dG90YWxWbWlzc3Vlc319IGFjdGlvbiBkb25lXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c3Rhc2tWbSh2bXRhc2tJbmRleCx2bURhdGE/LnN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJ2bXRhc2tJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhdm10YXNrSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGEuZml4dHVyZU5hbWV9fSAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGEuZml4dHVyZVdpZHRoLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YS5maXh0dXJlV2lkdGgudW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3ZtdGFza0luZGV4KzF9fS97e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdC5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwibmV4dHRhc2tWbSh2bXRhc2tJbmRleCx2bURhdGE/LnN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJ2bURhdGE/LnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoPnZtdGFza0luZGV4KzFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIodm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aCk9PT0odm10YXNrSW5kZXgrMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZEltZyBtdC00IHBzLTMgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIG5hbWU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3t2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplIChXaWR0aCk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3t2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ub3RhbCBzaGVsdmVzOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNoZWxmQ29uZmlnPy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgcHJvZHVjdCBjYXBhY2l0eTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgUGxhbm9ncmFtIGRlc2lnblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRml4dHVyZSBkZXNpZ25lZCBieSB0aGUgcGxhbm9ncmFtIHRlYW1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhbGwtdmlld3BvcnQgdy0xMDAgbXQtNVwiPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgPz8gJyd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgI2JvZHlCbG9jayBpZD1cImJvZHlCbG9ja1wiIGNsYXNzPVwiYm9keS1ibG9jayB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2bSBvZiB2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8udm1Db25maWc7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIid2bScgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiIFtzdHlsZV09XCJoYW5kbGV2bVBvc2l0aW9uKHZtLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ2bT8uaW1nU3JjXCIgKm5nSWY9XCJ2bT8uaW1nU3JjXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCI+e3t2bT8udm1OYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNoZWxmRGF0YSBvZiB2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzond2hpdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjond2hpdGUnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiB7e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpc3N1ZXMgb2Ygdm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uYW5zd2VycztsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnbmV3ZGV0YWlscy0nICsgayB9fVwiIFtjb2xsYXBzZWRdPVwiaXRlbS5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48c3BhbiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1ibG9jayBiZy13YXJuaW5nIHJvdW5kZWQtY2lyY2xlIG14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7XCI+PC9zcGFuPnt7aXRlbT8ucXVlc3Rpb259fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IG10LTVcIj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J1ZtTWlzc2luZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBhZGRpdGlvbmFsIFZNczoge3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J2V4dHJhVm0nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgYWRkaXRpb25hbCBWTXM6IHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWcubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdWbU1pc21hdGNoJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIG1pc3BsYWNlZCBWTXM6IHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWcubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZtRGF0YSBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTUgcGItNVwiICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0ndm1QYXJ0aWFsbHlSZWNldmllZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YlRleHRcIj5Ub3RhbCBwYXJ0aWFsbHkgcmVjaWV2ZWQgVk1zOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bURhdGEubGVuZ3RofX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTUgcGItNVwiICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0ndm1EYW1hZ2VkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViVGV4dFwiPlRvdGFsIGlzc3Vlcy9kYW1hZ2VzIFZNczpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1EYXRhLmxlbmd0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC01IHBiLTVcIiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J3Ztbm90UmVjZXZpZWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJUZXh0XCI+VG90YWwgbm90IHJlY2VpdmVkIFZNczpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1EYXRhLmxlbmd0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC01IHBiLTVcIiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J3ZtTWlzbWF0Y2gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJUZXh0XCI+VG90YWwgbWlzbWF0Y2hlZCBzaXplIFZNczpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1EYXRhLmxlbmd0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy52bU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Vk0gTmFtZSA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1EYXRhPy52bU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkNhdGVnb3J5IDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/LnZtVHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3ZtRGF0YT8uaW1hZ2V9fVwiICpuZ0lmPVwidm1EYXRhPy5pbWFnZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1EYXRhPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIFJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXh0dXJlIGZlZWRiYWNrIGJ5IHRoZSBzdG9yZSB0ZWFtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImhlYWRlci1ibG9ja1wiIGNsYXNzPVwiaGVhZGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5oZWFkZXI/LmxhYmVsID8/ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2sgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdm0gb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZ25ldztsZXQgbT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3ZtJyArIG1cIiBjbGFzcz1cInZtLWJsb2NrXCIgW3N0eWxlXT1cImhhbmRsZXZtUG9zaXRpb24odm0sbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwidm0ubmV3Vm0gPyAncmVkQm9yZGVyJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3t2bT8uaW1nU3JjfX1cIiAqbmdJZj1cInZtPy5pbWdTcmNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGVcIj57e3ZtPy52bU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxoMz57eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvaDM+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzaGVsZicgKyBpXCIgY2xhc3M9XCJibG9jayBzaGVsZiBoaWRlLXNjcm9sbCBkLWJsb2NrIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOid3aGl0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOid3aGl0ZSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hlbGYgQ2FwYWNpdHkgOiB7e3NoZWxmRGF0YT8ucHJvZHVjdFBlclNoZWxmfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3t2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/PyAnJ319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJpdGVtPy5jb21tZW50cy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgaXRlbT8uY29tbWVudHM/LnNsaWNlKCk/LnJldmVyc2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dCBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQ2xvc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdkaXNhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5SZWRvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0ncmV2b2tlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlJldm9rZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbdm10YXNrSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdyZWRvJyx2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5faWQsaXNzdWVzLl9pZCxpdGVtLl9pZCxpdGVtPy5EZXRhaWxzW3ZtdGFza0luZGV4XT8uX2lkLCd2bVJvbGxvdXQnLGl0ZW0uaXNzdWVUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmsgUmVkb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Nsb3NlSXNzdWUnLHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbdm10YXNrSW5kZXhdLl9pZCwndm1Sb2xsb3V0JyxpdGVtLmlzc3VlVHlwZSlcIj5DbG9zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzc3VlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2UmJnZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlNjc4Nzk4PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImltYWdlXCIgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/Lmlzc3Vlcz8ubGVuZ3RoPT09MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiB2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5jb21tZW50cz8uc2xpY2UoKT8ucmV2ZXJzZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0IGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQ2xvc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nZGlzYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJSZWRvXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J3Jldm9rZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5SZXZva2VkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIiAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnQhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYXBwcm92YWxTdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkICYmICF2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5zdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ3JlZG8nLHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uX2lkLHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/Ll9pZCwnJywnJywndm1Sb2xsb3V0JywnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmsgUmVkb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Nsb3NlSXNzdWUnLHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uX2lkLHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/Ll9pZCwnJywnJywndm1Sb2xsb3V0JywnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb3NlIElzc3VlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UmJnZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tjZG5Vcmx9fXt7dm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiIGFsdD1cImltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwidm1EYXRhPy5jb21tZW50cy5sZW5ndGgmJiAhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2Ygdm1EYXRhPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jcmVhdGVkQXR8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmICghdm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOTRcIiBoZWlnaHQ9XCI5NFwiIHZpZXdCb3g9XCIwIDAgOTQgOTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjEzLjMzMzNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM1Ljk1MDIgNDguMTk5N0MzNS42NDg5IDQ4LjIzMTUgMzUuMzQyMiA0OC4yNTA1IDM1LjAzMTIgNDguMjUwNUMzNC44NjE3IDQ4LjI1MDUgMzQuNjk0NCA0OC4yNDM2IDM0LjUyOTMgNDguMjMzOVY1OC42MDY5QzM0LjUyOTMgNjAuMDM0OSAzNS43MTIzIDYxLjIyNiAzNy4yMDAyIDYxLjIyNjFINTYuODA0N0M1OC4yOTI3IDYxLjIyNjEgNTkuNDc1NiA2MC4wMzUgNTkuNDc1NiA1OC42MDY5VjQ4LjIzNDlDNTkuMzEzNyA0OC4yNDQxIDU5LjE0OTggNDguMjUwNSA1OC45ODU0IDQ4LjI1MDVDNTguNjcxNCA0OC4yNTA1IDU4LjM2MDggNDguMjMyNSA1OC4wNTQ3IDQ4LjE5OTdWNTUuOTg3OEgzNS45NTAyVjQ4LjE5OTdaTTU3LjkzMTYgMzIuNzczOUgzNi4wNzMyQzM1Ljg5NTkgMzIuNzczOSAzNS43NDA2IDMyLjg2NjcgMzUuNjYzMSAzMi45ODc4TDM1LjY2MTEgMzIuOTg5N0wzMi4xNTE0IDM4LjQ3MzFMMzIuMDU2NiAzOC42MjA2QzMwLjgzMTEgNDAuNzQwNCAzMi4wOTU3IDQzLjQ2NzQgMzQuNDQ3MyA0My43NzY5QzM0LjY0ODIgNDMuODAxMyAzNC44Mzc5IDQzLjgxNTkgMzUuMDI1NCA0My44MTU5QzM2LjI1NTUgNDMuODE1OSAzNy4zNDM0IDQzLjI4NzIgMzguMTAwNiA0Mi40NjUzTDM5LjAyMjUgNDEuNDY0NEwzOS45NDE0IDQyLjQ2ODNDNDAuNjkwMyA0My4yODYzIDQxLjc3NyA0My44MTU5IDQzLjAxNDYgNDMuODE1OUM0NC4yNDY3IDQzLjgxNTggNDUuMzM4NiA0My4yODU2IDQ2LjA4NjkgNDIuNDY4M0w0Ny4wMDg4IDQxLjQ2MTRMNDcuOTMwNyA0Mi40NjgzQzQ4LjY3OSA0My4yODU3IDQ5Ljc3MDcgNDMuODE1OSA1MS4wMDI5IDQzLjgxNTlDNTIuMjM1MSA0My44MTU5IDUzLjMyNjggNDMuMjg1NyA1NC4wNzUyIDQyLjQ2ODNMNTQuOTk3MSA0MS40NjE0TDU1LjkxODkgNDIuNDY4M0M1Ni42NjczIDQzLjI4NTcgNTcuNzYgNDMuODE1OSA1OC45OTIyIDQzLjgxNTlDNTkuMTczNiA0My44MTU5IDU5LjM2ODcgNDMuODAyMSA1OS41Njg0IDQzLjc3NzhINTkuNTY3NEM2MS45NjExIDQzLjQ1NzMgNjMuMjI5MyA0MC42MDc4IDYxLjg2MTMgMzguNDczMUw2MS44NjA0IDM4LjQ3NDFMNTguMzQzOCAzMi45OTA3TDU4LjM0MjggMzIuOTg3OEM1OC4yNjUzIDMyLjg2NjUgNTguMTA5MiAzMi43NzM5IDU3LjkzMTYgMzIuNzczOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjIuNVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGgzIG10LTJcIj5ObyByZXNwb25zZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+WWV0IHRvIHJlY2VpdmUgc3RvcmUgcmVzcG9uc2UuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInJvbGxvdXRTZWN0aW9uID09PSAnbWVyY2gnXCI+XHJcbiAgICA8ZGl2IG5nYkFjY29yZGlvbiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIGNsYXNzPVwibXQtNVwiPlxyXG4gICAgICBAZm9yKG1lcmdlRGF0YSBvZiBtZXJnZVJvbGxvdXRMaXN0O3RyYWNrIGk7bGV0IGkgPSAkaW5kZXg7bGV0IGZpcnN0PSRmaXJzdCkge1xyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW0gW2NvbGxhcHNlZF09XCIhZmlyc3RcIiBjbGFzcz1cIm1iLTVcIiBbaWRdPVwiJ21lcmNoJytpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgZnMtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW1lcmdlRGF0YT8ucmVkb1N0YXR1c1wiPk1lcmNoYW5kaXNlIHJvbGxvdXQgYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1lcmdlRGF0YT8ucmVkb1N0YXR1c1wiPk1lcmNoYW5kaXNlIHJvbGxvdXQgUmVhc3NpZ25lZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj57e21lcmdlRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwcy0wIHBlLTBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmUgfHwgc2VsZWN0ZWRGaXh0dXJlPy5pc01lcmNoRWRpdGVkIHx8IHNlbGVjdGVkRml4dHVyZT8uaXNzdWVEYXRhPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWRpdmlkZXIgbXQtMyBtcy01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVyZ2VEYXRhPy5jcmVhdGVkQnlOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVyZ2VEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzaWduZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJtZXJnZURhdGE/LnVzZXJOYW1lIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiICpuZ0lmPVwibWVyZ2VEYXRhPy5zdWJtaXRUaW1lX3N0cmluZyE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnN1Ym1pdFRpbWVfc3RyaW5nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzaWduZWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3Q/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtcy0zXCIgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtMyBtZS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93TWF0Y2gobWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDNMNC41IDguNUwyIDZcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkZpeHR1cmUgbWF0Y2hlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBwLTMgbWUtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dNYXRjaChtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYgNFY2TTYgOEg2LjAwNU0xMSA2QzExIDguNzYxNDIgOC43NjE0MiAxMSA2IDExQzMuMjM4NTggMTEgMSA4Ljc2MTQyIDEgNkMxIDMuMjM4NTggMy4yMzg1OCAxIDYgMUM4Ljc2MTQyIDEgMTEgMy4yMzg1OCAxMSA2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+Rml4dHVyZSBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCIgKm5nSWY9XCJwZW5kaW5nRml4dHVyZWlzc3Vlcz4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7cGVuZGluZ0ZpeHR1cmVpc3N1ZXN9fS97e3RvdGFsRml4dHVyZWlzc3Vlc319IGFjdGlvbiBwZW5kaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXBwcm92ZWRGaXh0dXJlaXNzdWVzPjAmJnBlbmRpbmdGaXh0dXJlaXNzdWVzPT09MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2FwcHJvdmVkRml4dHVyZWlzc3Vlc319L3t7dG90YWxGaXh0dXJlaXNzdWVzfX0gYWN0aW9uIGRvbmVcclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzdGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleCxtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmaXh0dXJldGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFmaXh0dXJldGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lfX0gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2ZpeHR1cmV0YXNrSW5kZXgrMX19L3t7bWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZXh0dGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleCxtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoPmZpeHR1cmV0YXNrSW5kZXgrMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIihtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoKT09PShmaXh0dXJldGFza0luZGV4KzEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIG5hbWU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgVHlwZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlNpemUgKFdpZHRoKTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNoZWxmQ29uZmlnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlRvdGFsIHNoZWx2ZXM6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgcHJvZHVjdCBjYXBhY2l0eTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXBhY2l0eX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQbGFub2dyYW0gZGVzaWduXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBGaXh0dXJlIGRlc2lnbmVkIGJ5IHRoZSBwbGFub2dyYW0gdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5oZWFkZXI/LmxhYmVsID8/ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NlY3Rpb24nICsgaVwiIGNsYXNzPVwidm0tYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwidXBkYXRlU3R5bGUobWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInYm9yZGVyOjFweCBzb2xpZCAnK21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy5ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy56b25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6bWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uY29sb3I/LnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjptZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8udGV4dH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy56b25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGUgd29yZFdyYXBcIiBbbmdiVG9vbHRpcF09XCJ0b29sdGlwXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2YgbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6KHNoZWxmRGF0YT8uem9uZSB8fCBtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09ICdMMScpID8gbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uem9uZUNvbG9yW3NoZWxmRGF0YS56b25lXT8uY29sb3I/LmJnIDogc2hsZWZDb2xvcltpXS5iZ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOihzaGVsZkRhdGE/LnpvbmUgfHwgbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YS5wcm9kdWN0UmVzb2x1dGlvbkxldmVsID09PSAnTDEnKSA/IG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy50ZXh0QmcgOiBzaGxlZkNvbG9yW2ldLnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjooc2hlbGZEYXRhPy56b25lIHx8IG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGEucHJvZHVjdFJlc29sdXRpb25MZXZlbCA9PT0gJ0wxJykgPyBtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy56b25lQ29sb3Jbc2hlbGZEYXRhLnpvbmVdPy5jb2xvcj8udGV4dCA6IHNobGVmQ29sb3JbaV0udGV4dH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb290ZXIgYmxvY2sgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpc3N1ZXMgb2YgbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzO2xldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSXRlbT1cInt7ICduZXdkZXRhaWxzLScgKyBrIH19XCIgW2NvbGxhcHNlZF09XCJpdGVtLmNvbGxhcHNlZFwiIGNsYXNzPVwibWItNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXNzdWVzLmlzc3VlcztsZXQgayA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBuZ2JBY2NvcmRpb25CdXR0b24gY2xhc3M9XCJtYWluaGVhZGluZyBwLTMgYmFja2dyb3VuZEltZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgbGF5b3V0LUxiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiA8c3BhbiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1ibG9jayBiZy13YXJuaW5nIHJvdW5kZWQtY2lyY2xlIG14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7XCI+PC9zcGFuPnt7aXRlbT8ucXVlc3Rpb259fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC01XCI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00IG10LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbWVyY2hEZXRhaWxzIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5tZXJjaERhdGE7bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+QnJhbmQ6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7bWVyY2hEZXRhaWxzPy5wcm9kdWN0QnJhbmROYW1lIHx8ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Q2F0ZWdvcnk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7bWVyY2hEZXRhaWxzPy5wcm9kdWN0Q2F0ZWdvcnk/LnRvU3RyaW5nKCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmV0ZW1wbGF0ZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5UZW1wbGF0ZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmV0ZW1wbGF0ZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J3NpemVXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZVdpZHRoPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/Lmlzc3VlVHlwZT09PSdwcm9kdWN0Y2F0ZWdvcnlXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1pc3Npbmcgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5taXNzaW5nRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIm1pc3Npbmc/LnpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnt7bWlzc2luZz8uem9uZX19OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIG1pc3Npbmc/LnByb2R1Y3RDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmQgYmFkZ2UgXCI+e3tjYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J2JyYW5kV3JvbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtaXNzaW5nIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubWlzc2luZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJtaXNzaW5nPy56b25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj57e21pc3Npbmc/LnpvbmV9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGJyYW5kIG9mIG1pc3Npbmc/LmJyYW5kXCIgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkIGJhZGdlIG0tMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ticmFuZH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5pc3N1ZVR5cGUhPT0nYnJhbmRXcm9uZycmJml0ZW0/Lmlzc3VlVHlwZSE9PSdwcm9kdWN0Y2F0ZWdvcnlXcm9uZydcIj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZml4dHVyZUxpc3Qgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkNvbmZpZ0Zvcm1hdGVkXCI+XHJcbiAgICBcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbCB0ZXh0LWNhcGl0YWxpemVcIj57e2ZpeHR1cmVMaXN0Py56b25lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgc2hsZWZkYXRhIG9mIGZpeHR1cmVMaXN0Py5pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7c2hsZWZkYXRhPy5zaGVsZlR5cGV9fSB7e3NobGVmZGF0YT8uc2hlbGZOdW1iZXJ9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiID5DYXBhY2l0eTogPHNwYW4gY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnt7c2hsZWZkYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdGb3I9XCJsZXQgYnJhbmRzIG9mIHNobGVmZGF0YT8ucHJvZHVjdEJyYW5kTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG1lLTMgbWItMlwiPnt7YnJhbmRzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5tZXJjaERhdGEubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgUmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSByZXNwb25zZSBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIlsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pID8gJ2JvcmRlcjoxcHggc29saWQgcmVkJyA6ICcnXCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXI6IDAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpO2JhY2tncm91bmQ6ICNGMkYzRjc7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ3Byb2R1Y3RjYXRlZ29yeVdyb25nJywgJ2JyYW5kV3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5pc3N1ZVR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbktleXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzZWN0aW9uJyArIGlcIiBjbGFzcz1cInZtLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0saSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMC45NjlweCBzb2xpZCB2YXIoLS1HcmF5LTMwMCwgI0QwRDVERCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kJzogJ3ZhcigtLUdyYXktMTAwLCAjZWJlZWYzKSd9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/Lmxlbmd0aCA/J2RhbmdlcicgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy50b1N0cmluZygpID8/IG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWNTdHlsZSB3b3JkV3JhcFwiIFtuZ2JUb29sdGlwXT1cInRvb2x0aXBcIiBbbmdDbGFzc109XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/Lmxlbmd0aCA/ICdkYW5nZXInIDogJydcIj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8uWzBdIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMC45NjlweCBzb2xpZCB2YXIoLS1HcmF5LTMwMCwgI0QwRDVERCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTMuODQzcHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8udG9TdHJpbmcoKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItdG9wJzooZ2V0U3RhcnRQb3NpdGlvbihpKzEsc2hlbGZEYXRhLnpvbmUsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5tZXJjaERhdGEpICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgID8gJzJweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItYm90dG9tJzooZ2V0RW5kUG9zaXRpb24oaSsxLHNoZWxmRGF0YS56b25lLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZyxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0ubWVyY2hEYXRhKSAmJiAhWydGaXh0dXJlIHR5cGUgaXMgd3JvbmcnLCdGaXh0dXJlIHNpemUgaXMgd3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5xdWVzdGlvbikpID8gJzJweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItbGVmdCc6KGdldE1pZFBvc2l0aW9uKGkrMSxzaGVsZkRhdGEuem9uZSxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWcsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdLm1lcmNoRGF0YSkgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcycHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJpZ2h0JzooZ2V0TWlkUG9zaXRpb24oaSsxLHNoZWxmRGF0YS56b25lLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZyxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0ubWVyY2hEYXRhKSAmJiAhWydGaXh0dXJlIHR5cGUgaXMgd3JvbmcnLCdGaXh0dXJlIHNpemUgaXMgd3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5xdWVzdGlvbikpID8gJzJweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1HcmF5LTEwMCwgI2Y4ZjlmYiknLH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZCc6ICd2YXIoLS1HcmF5LTEwMCwgI2ViZWVmMyknfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+IHt7bWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwiaXRlbT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIGl0ZW0/LmNvbW1lbnRzPy5zbGljZSgpLnJldmVyc2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dCBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQ2xvc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdkaXNhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIlJlZG9cIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J3Jldm9rZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5SZXZva2VkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiICpuZ0lmPVwiY29tbWVudD8uY29tbWVudCE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnJiZzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0d28tdG9uZS1idG4gbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbigncmVkbycsbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5faWQsaXNzdWVzLl9pZCxpdGVtLl9pZCxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0uX2lkLCdtZXJjaFJvbGxvdXQnLGl0ZW0uaXNzdWVUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmsgUmVkb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Nsb3NlSXNzdWUnLG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5faWQsJ21lcmNoUm9sbG91dCcsaXRlbS5pc3N1ZVR5cGUpXCI+Q2xvc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc3N1ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlJiZtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2NkblVybH19e3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJpbWFnZVwiIGNsYXNzPVwibXQtNCB3LTEwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzPy5bMF0/Lmlzc3Vlcz8ubGVuZ3RoPT09MFwiPlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHM/LnNsaWNlKCk/LnJldmVyc2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dCBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZSE9PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkNsb3NlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlJlZG88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J3Jldm9rZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5SZXZva2VkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIiAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnQhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYXBwcm92YWxTdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkICYmICFtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LnN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHdvLXRvbmUtYnRuIG1lLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbigncmVkbycsbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5faWQsbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5faWQsJycsJycsJ21lcmNoUm9sbG91dCcsJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXJrIFJlZG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdjbG9zZUlzc3VlJyxtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/Ll9pZCwnJywnJywnbWVyY2hSb2xsb3V0JywnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb3NlIElzc3VlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSYmbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiaW1hZ2VcIiBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwibWVyZ2VEYXRhLmNvbW1lbnRzLmxlbmd0aCAmJiAhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgbWVyZ2VEYXRhLmNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jcmVhdGVkQXR8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIEBpZiAoIW1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIiB2aWV3Qm94PVwiMCAwIDk0IDk0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCIxMy4zMzMzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zNS45NTAyIDQ4LjE5OTdDMzUuNjQ4OSA0OC4yMzE1IDM1LjM0MjIgNDguMjUwNSAzNS4wMzEyIDQ4LjI1MDVDMzQuODYxNyA0OC4yNTA1IDM0LjY5NDQgNDguMjQzNiAzNC41MjkzIDQ4LjIzMzlWNTguNjA2OUMzNC41MjkzIDYwLjAzNDkgMzUuNzEyMyA2MS4yMjYgMzcuMjAwMiA2MS4yMjYxSDU2LjgwNDdDNTguMjkyNyA2MS4yMjYxIDU5LjQ3NTYgNjAuMDM1IDU5LjQ3NTYgNTguNjA2OVY0OC4yMzQ5QzU5LjMxMzcgNDguMjQ0MSA1OS4xNDk4IDQ4LjI1MDUgNTguOTg1NCA0OC4yNTA1QzU4LjY3MTQgNDguMjUwNSA1OC4zNjA4IDQ4LjIzMjUgNTguMDU0NyA0OC4xOTk3VjU1Ljk4NzhIMzUuOTUwMlY0OC4xOTk3Wk01Ny45MzE2IDMyLjc3MzlIMzYuMDczMkMzNS44OTU5IDMyLjc3MzkgMzUuNzQwNiAzMi44NjY3IDM1LjY2MzEgMzIuOTg3OEwzNS42NjExIDMyLjk4OTdMMzIuMTUxNCAzOC40NzMxTDMyLjA1NjYgMzguNjIwNkMzMC44MzExIDQwLjc0MDQgMzIuMDk1NyA0My40Njc0IDM0LjQ0NzMgNDMuNzc2OUMzNC42NDgyIDQzLjgwMTMgMzQuODM3OSA0My44MTU5IDM1LjAyNTQgNDMuODE1OUMzNi4yNTU1IDQzLjgxNTkgMzcuMzQzNCA0My4yODcyIDM4LjEwMDYgNDIuNDY1M0wzOS4wMjI1IDQxLjQ2NDRMMzkuOTQxNCA0Mi40NjgzQzQwLjY5MDMgNDMuMjg2MyA0MS43NzcgNDMuODE1OSA0My4wMTQ2IDQzLjgxNTlDNDQuMjQ2NyA0My44MTU4IDQ1LjMzODYgNDMuMjg1NiA0Ni4wODY5IDQyLjQ2ODNMNDcuMDA4OCA0MS40NjE0TDQ3LjkzMDcgNDIuNDY4M0M0OC42NzkgNDMuMjg1NyA0OS43NzA3IDQzLjgxNTkgNTEuMDAyOSA0My44MTU5QzUyLjIzNTEgNDMuODE1OSA1My4zMjY4IDQzLjI4NTcgNTQuMDc1MiA0Mi40NjgzTDU0Ljk5NzEgNDEuNDYxNEw1NS45MTg5IDQyLjQ2ODNDNTYuNjY3MyA0My4yODU3IDU3Ljc2IDQzLjgxNTkgNTguOTkyMiA0My44MTU5QzU5LjE3MzYgNDMuODE1OSA1OS4zNjg3IDQzLjgwMjEgNTkuNTY4NCA0My43Nzc4SDU5LjU2NzRDNjEuOTYxMSA0My40NTczIDYzLjIyOTMgNDAuNjA3OCA2MS44NjEzIDM4LjQ3MzFMNjEuODYwNCAzOC40NzQxTDU4LjM0MzggMzIuOTkwN0w1OC4zNDI4IDMyLjk4NzhDNTguMjY1MyAzMi44NjY1IDU4LjEwOTIgMzIuNzczOSA1Ny45MzE2IDMyLjc3MzlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBoMyBtdC0yXCI+Tm8gcmVzcG9uc2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPllldCB0byByZWNlaXZlIHN0b3JlIHJlc3BvbnNlLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibXQtNVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICAgIEBpZiAoKHJvbGxvdXRTZWN0aW9uID09PSAndm0nICYmICF2bUZlZWRiYWNrLmxlbmd0aCkgfHwgKHJvbGxvdXRTZWN0aW9uID09PSAnbWVyY2gnICYmICFtZXJnZVJvbGxvdXRMaXN0Lmxlbmd0aCkgKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOTRcIiBoZWlnaHQ9XCI5NFwiIHZpZXdCb3g9XCIwIDAgOTQgOTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCIxMy4zMzMzXCIgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMzUuOTUwMiA0OC4xOTk3QzM1LjY0ODkgNDguMjMxNSAzNS4zNDIyIDQ4LjI1MDUgMzUuMDMxMiA0OC4yNTA1QzM0Ljg2MTcgNDguMjUwNSAzNC42OTQ0IDQ4LjI0MzYgMzQuNTI5MyA0OC4yMzM5VjU4LjYwNjlDMzQuNTI5MyA2MC4wMzQ5IDM1LjcxMjMgNjEuMjI2IDM3LjIwMDIgNjEuMjI2MUg1Ni44MDQ3QzU4LjI5MjcgNjEuMjI2MSA1OS40NzU2IDYwLjAzNSA1OS40NzU2IDU4LjYwNjlWNDguMjM0OUM1OS4zMTM3IDQ4LjI0NDEgNTkuMTQ5OCA0OC4yNTA1IDU4Ljk4NTQgNDguMjUwNUM1OC42NzE0IDQ4LjI1MDUgNTguMzYwOCA0OC4yMzI1IDU4LjA1NDcgNDguMTk5N1Y1NS45ODc4SDM1Ljk1MDJWNDguMTk5N1pNNTcuOTMxNiAzMi43NzM5SDM2LjA3MzJDMzUuODk1OSAzMi43NzM5IDM1Ljc0MDYgMzIuODY2NyAzNS42NjMxIDMyLjk4NzhMMzUuNjYxMSAzMi45ODk3TDMyLjE1MTQgMzguNDczMUwzMi4wNTY2IDM4LjYyMDZDMzAuODMxMSA0MC43NDA0IDMyLjA5NTcgNDMuNDY3NCAzNC40NDczIDQzLjc3NjlDMzQuNjQ4MiA0My44MDEzIDM0LjgzNzkgNDMuODE1OSAzNS4wMjU0IDQzLjgxNTlDMzYuMjU1NSA0My44MTU5IDM3LjM0MzQgNDMuMjg3MiAzOC4xMDA2IDQyLjQ2NTNMMzkuMDIyNSA0MS40NjQ0TDM5Ljk0MTQgNDIuNDY4M0M0MC42OTAzIDQzLjI4NjMgNDEuNzc3IDQzLjgxNTkgNDMuMDE0NiA0My44MTU5QzQ0LjI0NjcgNDMuODE1OCA0NS4zMzg2IDQzLjI4NTYgNDYuMDg2OSA0Mi40NjgzTDQ3LjAwODggNDEuNDYxNEw0Ny45MzA3IDQyLjQ2ODNDNDguNjc5IDQzLjI4NTcgNDkuNzcwNyA0My44MTU5IDUxLjAwMjkgNDMuODE1OUM1Mi4yMzUxIDQzLjgxNTkgNTMuMzI2OCA0My4yODU3IDU0LjA3NTIgNDIuNDY4M0w1NC45OTcxIDQxLjQ2MTRMNTUuOTE4OSA0Mi40NjgzQzU2LjY2NzMgNDMuMjg1NyA1Ny43NiA0My44MTU5IDU4Ljk5MjIgNDMuODE1OUM1OS4xNzM2IDQzLjgxNTkgNTkuMzY4NyA0My44MDIxIDU5LjU2ODQgNDMuNzc3OEg1OS41Njc0QzYxLjk2MTEgNDMuNDU3MyA2My4yMjkzIDQwLjYwNzggNjEuODYxMyAzOC40NzMxTDYxLjg2MDQgMzguNDc0MUw1OC4zNDM4IDMyLjk5MDdMNTguMzQyOCAzMi45ODc4QzU4LjI2NTMgMzIuODY2NSA1OC4xMDkyIDMyLjc3MzkgNTcuOTMxNiAzMi43NzM5WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGgzIG10LTJcIj5ObyB0YXNrIGFzc2lnbmVkPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlN0b3JlIHJlc3BvbnNlIHZpZXdlZCBoZXJlPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19
|
|
705
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbG91dC1mZWVkYmFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9tYW5hZ2Utc3RvcmUtcGxhbm8vcm9sbG91dC1mZWVkYmFjay9yb2xsb3V0LWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9yb2xsb3V0LWZlZWRiYWNrL3JvbGxvdXQtZmVlZGJhY2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixZQUFZLEVBQWlCLFNBQVMsRUFBNEMsTUFBTSxlQUFlLENBQUM7QUFDOUosT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFBO0FBQy9GLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFNN0IsTUFBTSxPQUFPLHdCQUF3QjtJQTJEekI7SUFDQTtJQUNBO0lBQ0E7SUE3RGMsWUFBWSxDQUFjO0lBQ1AsU0FBUyxDQUFNO0lBQzFELE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDZixZQUFZLENBQU07SUFDbEIsYUFBYSxDQUFNO0lBQ25CLGFBQWEsQ0FBTTtJQUNuQixRQUFRLENBQU07SUFDYixVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUN0QyxjQUFjLEdBQVcsT0FBTyxDQUFDO0lBQzFDLGVBQWUsQ0FBTTtJQUNyQixVQUFV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QUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sU0FBUyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQTl3QlUsd0JBQXdCOzRGQUF4Qix3QkFBd0IsOGRDYnJDLDB0MkZBeXlDVTs7NEZENXhDRyx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0Usc0JBQXNCO2dMQUtSLFlBQVk7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVztnQkFDcUIsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVoQyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0UsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yZS1idWlsZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTSEVMRl9DT0xPUlMgfSBmcm9tICcuLi8uLi8uLi9kYXRhL2ZpeHR1cmUtdGVtcGxhdGUuZGF0YSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblBvcHVwQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbmZpcm1hdGlvbi1wb3B1cC9jb25maXJtYXRpb24tcG9wdXAuY29tcG9uZW50XCJcclxuaW1wb3J0IHsgdGltZXIgfSBmcm9tICdyeGpzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXJvbGxvdXQtZmVlZGJhY2tcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3JvbGxvdXQtZmVlZGJhY2suY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3JvbGxvdXQtZmVlZGJhY2suY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvbGxvdXRGZWVkYmFja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoXCJib2R5QmxvY2tcIikgYm9keUJsb2NrUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiYWNjb3JkaW9uXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBhY2NvcmRpb246IGFueTtcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjdXJyZW50UGxhbm86IGFueTtcclxuICBASW5wdXQoKSBzdG9yZUZlZWRiYWNrOiBhbnk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJc3N1ZTogYW55O1xyXG4gIEBJbnB1dCgpIHRhc2tJbmZvOiBhbnk7XHJcbiAgQE91dHB1dCgpIGlzQXBwcm92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBASW5wdXQoKSByb2xsb3V0U2VjdGlvbjogc3RyaW5nID0gJ21lcmNoJztcclxuICBzZWxlY3RlZEZpeHR1cmU6IGFueTtcclxuICBkYXRhT2JqZWN0OiBhbnkgPSBbXHJcbiAgICAvLyB7XHJcbiAgICAvLyAgIERlc2NyaXB0aW9uOiBcIlJvbGxvdXRcIixcclxuICAgIC8vICAgSXNzdWVzOiBbXHJcbiAgICAvLyAgICAgeyB0ZXh0OiBcIk1lcmNoYW5kaXNlIFJvbGxvdXRcIiwgaWQ6IFwibWVyY2hSb2xsb3V0XCIgfSxcclxuICAgIC8vICAgICB7IHRleHQ6IFwiVmlzdWFsIE1lcmNoIFJvbGxvdXRcIiwgaWQ6IFwidm1Sb2xsb3V0XCIgfSxcclxuICAgIC8vICAgXSxcclxuICAgIC8vIH0sXHJcbiAgICB7XHJcbiAgICAgIERlc2NyaXB0aW9uOiBcIlN0YXR1c1wiLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICB7IHRleHQ6IFwiTWF0Y2hcIiwgaWQ6IFwiY29tcGxldGVcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJNaXNtYXRjaFwiLCBpZDogXCJpbmNvbXBsZXRlXCIgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIERlc2NyaXB0aW9uOiBcIkFwcHJvdmFsIFN0YXR1c1wiLFxyXG4gICAgICB0eXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICB7IHRleHQ6IFwiQWN0aW9uIFBlbmRpbmdcIiwgaWQ6IFwicGVuZGluZ1wiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIkFjdGlvbiBEb25lXCIsIGlkOiBcImFncmVlXCIgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgXTtcclxuICB2bUZlZWRiYWNrOiBhbnkgPSBbXTtcclxuICBtZXJjaHRhc2tEYXRhOiBhbnkgPSB7fTtcclxuICB2bXRhc2tEYXRhOiBhbnkgPSBbXTtcclxuICBvcGVuZml4dHVyZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgb3BlbnZtOiBib29sZWFuID0gdHJ1ZTtcclxuICBmaXh0dXJldGFza0luZGV4OiBudW1iZXIgPSAwO1xyXG4gIHZtdGFza0luZGV4OiBudW1iZXIgPSAwO1xyXG4gIGZpeHR1cmVJbmRleDogbnVtYmVyID0gMDtcclxuICBzdG9yZUZpeHR1cmVMaXN0OiBhbnkgPSBbXTtcclxuICBtZXJnZVJvbGxvdXRMaXN0OiBhbnkgPSBbXTtcclxuICBwZW5kaW5nRml4dHVyZWlzc3VlczogbnVtYmVyID0gMDtcclxuICBhcHByb3ZlZEZpeHR1cmVpc3N1ZXM6IG51bWJlciA9IDA7XHJcbiAgdG90YWxGaXh0dXJlaXNzdWVzOiBudW1iZXIgPSAwO1xyXG4gIGNvbXBsZXRlZEZpeHR1cmU6IG51bWJlciA9IDA7XHJcbiAgcGVuZGluZ1ZtaXNzdWVzOiBudW1iZXIgPSAwO1xyXG4gIGFwcHJvdmVkVm1pc3N1ZXM6IG51bWJlciA9IDA7XHJcbiAgdG90YWxWbWlzc3VlczogbnVtYmVyID0gMDtcclxuICBjb21wbGV0ZWRWbTogbnVtYmVyID0gMDtcclxuICBvcmlnaW5hbERhdGE6IGFueTtcclxuICBjdXJyZW50UGxhbm9EZXRhaWxzOiBhbnk7XHJcbiAgc2hsZWZDb2xvciA9IFNIRUxGX0NPTE9SUztcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBjZG5Vcmw6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1sncm9sbG91dFNlY3Rpb24nXSkge1xyXG4gICAgICB0aGlzLnJvbGxvdXRTZWN0aW9uID0gY2hhbmdlc1tcInJvbGxvdXRTZWN0aW9uXCJdLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wiY3VycmVudFBsYW5vXCJdKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBsYW5vRGV0YWlscyA9IGNoYW5nZXNbXCJjdXJyZW50UGxhbm9cIl0uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbXCJ0YXNrSW5mb1wiXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1tcInRhc2tJbmZvXCJdLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMubWVyY2h0YXNrRGF0YSA9IGNoYW5nZXNbXCJ0YXNrSW5mb1wiXS5jdXJyZW50VmFsdWU/LnRhc2tEZXRhaWxzPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUudHlwZSA9PSAnbWVyY2hSb2xsb3V0JylbMF07XHJcbiAgICAgICAgdGhpcy52bXRhc2tEYXRhID0gY2hhbmdlc1tcInRhc2tJbmZvXCJdLmN1cnJlbnRWYWx1ZT8udGFza0RldGFpbHM/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS50eXBlID09ICd2bVJvbGxvdXQnKVswXTtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1tcInN0b3JlRmVlZGJhY2tcIl0uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldEluaXRpYWxWYWx1ZXMoKTtcclxuICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgZmVlZGJhY2tEYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbXCJzdG9yZUZlZWRiYWNrXCJdLmN1cnJlbnRWYWx1ZSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKGZlZWRiYWNrRGF0YT8ubWVyY2hSb2xsb3V0RGF0YSk7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZVZtZmVlZGJhY2soZmVlZGJhY2tEYXRhPy52bVJvbGxvdXREYXRhKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBmZWVkYmFja0RhdGE/Lm1lcmNoUm9sbG91dERhdGE/Lmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgICAgZmVlZGJhY2tEYXRhPy52bVJvbGxvdXREYXRhPy5sZW5ndGggPT09IDBcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbXCJzZWxlY3RlZElzc3VlXCJdKSB7XHJcbiAgICAgIHRoaXMucmVzZXRJbml0aWFsVmFsdWVzKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlID0gY2hhbmdlc1tcInNlbGVjdGVkSXNzdWVcIl0uY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5vcmlnaW5hbERhdGE/Lm1lcmNoUm9sbG91dERhdGEpIHtcclxuICAgICAgICBsZXQgcmVzdWx0RGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLm9yaWdpbmFsRGF0YT8ubWVyY2hSb2xsb3V0RGF0YSkpXHJcblxyXG4gICAgICAgIHJlc3VsdERhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGVtZW50LnN0b3JlRml4dHVyZUxpc3QgPSBlbGVtZW50Py5zdG9yZUZpeHR1cmVMaXN0Py5maWx0ZXIoXHJcbiAgICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEuZml4dHVyZUlkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdERhdGEgJiYgcmVzdWx0RGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgZmVlZEJhY2tEYXRhLGVtcHR5TGlzdCA9IFtdO1xyXG4gICAgICAgICAgICBmZWVkQmFja0RhdGEgPSByZXN1bHREYXRhLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlLnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoKTtcclxuICAgICAgICAgICAgbGV0IHN0YXR1cyA9IHRoaXMudGFza0luZm8/LnRhc2tEZXRhaWxzLmZpbmQoKGVsZTphbnkpID0+IGVsZS50eXBlID09ICdtZXJjaFJvbGxvdXQnKT8uc3RhdHVzO1xyXG4gICAgICAgICAgICBpZih0aGlzLnJvbGxvdXRTZWN0aW9uID09PSAnbWVyY2gnICYmIHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5pc01lcmNoRWRpdGVkICYmIHN0YXR1cyAmJiBbJ29wZW4nLCdpbnByb2dyZXNzJ10uaW5jbHVkZXMoc3RhdHVzKSkge1xyXG4gICAgICAgICAgICAgIGVtcHR5TGlzdCA9IHJlc3VsdERhdGEuZmlsdGVyKChlbGU6YW55KSA9PiAhZWxlLnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoIClcclxuICAgICAgICAgICAgICBpZihlbXB0eUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBlbXB0eUxpc3QgPSBbZW1wdHlMaXN0WzBdXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHREYXRhID0gWy4uLmZlZWRCYWNrRGF0YSwgLi4uZW1wdHlMaXN0XTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKHJlc3VsdERhdGEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYodGhpcy5yb2xsb3V0U2VjdGlvbiA9PT0gJ21lcmNoJyAmJiB0aGlzLnNlbGVjdGVkRml4dHVyZT8uaXNNZXJjaEVkaXRlZCkge1xyXG4gICAgICAgICAgICAgIHJlc3VsdERhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5vcmlnaW5hbERhdGE/Lm1lcmNoUm9sbG91dERhdGEpXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIHJlc3VsdERhdGEgPSByZXN1bHREYXRhLmZpbHRlcigoZWxlOmFueSkgPT4gIWVsZS5zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2socmVzdWx0RGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soW10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMub3JpZ2luYWxEYXRhPy52bVJvbGxvdXREYXRhKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdERhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5vcmlnaW5hbERhdGE/LnZtUm9sbG91dERhdGEpKVxyXG4gICAgICAgIHJlc3VsdERhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGVtZW50LnN0b3JlRml4dHVyZUxpc3QgPSBlbGVtZW50Py5zdG9yZUZpeHR1cmVMaXN0LmZpbHRlcihcclxuICAgICAgICAgICAgKGRhdGE6IGFueSkgPT4gZGF0YS5maXh0dXJlSWQgPT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAocmVzdWx0RGF0YSAmJiByZXN1bHREYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBsZXQgZmVlZEJhY2tEYXRhLGVtcHR5TGlzdCA9IFtdO1xyXG4gICAgICAgICAgICBmZWVkQmFja0RhdGEgPSByZXN1bHREYXRhLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlLnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoKTtcclxuICAgICAgICAgICAgbGV0IHN0YXR1cyA9IHRoaXMudGFza0luZm8/LnRhc2tEZXRhaWxzLmZpbmQoKGVsZTphbnkpID0+IGVsZS50eXBlID09ICd2bVJvbGxvdXQnKT8uc3RhdHVzO1xyXG4gICAgICAgICAgICBpZih0aGlzLnJvbGxvdXRTZWN0aW9uID09PSAndm0nICYmIHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5pc1ZtRWRpdGVkICYmIHN0YXR1cyAmJiBbJ29wZW4nLCdpbnByb2dyZXNzJ10uaW5jbHVkZXMoc3RhdHVzKSkge1xyXG4gICAgICAgICAgICAgIGVtcHR5TGlzdCA9IHJlc3VsdERhdGEuZmlsdGVyKChlbGU6YW55KSA9PiAhZWxlLnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoIClcclxuICAgICAgICAgICAgICBpZihlbXB0eUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBlbXB0eUxpc3QgPSBbZW1wdHlMaXN0WzBdXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHREYXRhID0gWy4uLmZlZWRCYWNrRGF0YSwgLi4uZW1wdHlMaXN0XTtcclxuICAgICAgICAgIHRoaXMuZ2V0U3RvcmVWbWZlZWRiYWNrKHJlc3VsdERhdGEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZih0aGlzLnJvbGxvdXRTZWN0aW9uID09PSAndm0nICYmIHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5pc1ZtRWRpdGVkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdERhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxEYXRhPy52bVJvbGxvdXREYXRhKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5maWx0ZXIoKGVsZTphbnkpID0+ICFlbGUuc3RvcmVGaXh0dXJlTGlzdC5sZW5ndGgpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayhyZXN1bHREYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayhbXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhmaXh0dXJlRGF0YTogYW55KSB7XHJcbiAgICB0aGlzLm1lcmdlUm9sbG91dExpc3QgPSBbXVxyXG5cclxuICAgIGZpeHR1cmVEYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPT09IGZpeHR1cmVEYXRhLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBlbGVtZW50Lm9wZW5maXh0dXJlID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWxlbWVudC5vcGVuZml4dHVyZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21wbGV0ZWRGaXh0dXJlID0gZWxlbWVudD8uc3RvcmVGaXh0dXJlTGlzdD8uZmlsdGVyKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzID09PSBcImNvbXBsZXRlXCJcclxuICAgICAgKS5sZW5ndGg7XHJcbiAgICAgIGVsZW1lbnQ/LnN0b3JlRml4dHVyZUxpc3Q/LmZvckVhY2goKHNoZWxmOiBhbnksIGk6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWcgJiZcclxuICAgICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDBcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKFxyXG4gICAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZyxcclxuICAgICAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5wcm9kdWN0UmVzb2x1dGlvbkxldmVsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKHNoZWxmPy5GaXh0dXJlRGF0YT8ucHJvZHVjdFJlc29sdXRpb25MZXZlbCA9PSAnTDEnKSB7XHJcbiAgICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdbMF0ucHJvZHVjdEJyYW5kTmFtZSA9IHNoZWxmPy5GaXh0dXJlRGF0YS5wcm9kdWN0QnJhbmROYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHpvbmVDb2xvcjogYW55ID0ge307XHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHpvbmVDb2xvcltlbGUuem9uZV0gPSB7IGNvbG9yOiBlbGUuY29sb3IgfTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuem9uZUNvbG9yID0gem9uZUNvbG9yO1xyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhcclxuICAgICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscyA9IHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgICAgc2hlbGY/LmFuc3dlcnM/LmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGVsZS5pc3N1ZXMgPSBlbGU/Lmlzc3Vlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGlzc3VlOiBhbnkpID0+IGlzc3VlLkRldGFpbHMgJiYgaXNzdWUuRGV0YWlscy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxGaXh0dXJlaXNzdWVzID1cclxuICAgICAgICAgICAgICB0aGlzLnRvdGFsRml4dHVyZWlzc3VlcyArIGVsZT8uaXNzdWVzPy5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgICBlbGU/Lmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgaXNzdWU/LkRldGFpbHMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzID09PSBcInBlbmRpbmdcIilcclxuICAgICAgICAgICAgICAgICAgLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGlzc3VlLmNvbGxhcHNlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nRml4dHVyZWlzc3VlcyA9IHRoaXMucGVuZGluZ0ZpeHR1cmVpc3N1ZXMgKyAxO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpc3N1ZS5jb2xsYXBzZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRGaXh0dXJlaXNzdWVzID0gdGhpcy5hcHByb3ZlZEZpeHR1cmVpc3N1ZXMgKyAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5mb3JFYWNoKChuZXdzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3c2hlbGY/LnNoZWxmQ29uZmlnICYmIG5ld3NoZWxmPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZ0Zvcm1hdGVkID0gdGhpcy5mb3JtYXREYXRhKFxyXG4gICAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNlY3Rpb25Db25maWcgPSB0aGlzLnN0b3JlRGF0YShcclxuICAgICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZyxcclxuICAgICAgICAgICAgICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWxcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHNoZWxmPy5GaXh0dXJlRGF0YT8ucHJvZHVjdFJlc29sdXRpb25MZXZlbCA9PSBcIkwxXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zZWN0aW9uQ29uZmlnWzBdLnByb2R1Y3RCcmFuZE5hbWUgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhLnByb2R1Y3RCcmFuZE5hbWU7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhuZXdzaGVsZi5zZWN0aW9uQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIFtcInByb2R1Y3RjYXRlZ29yeVdyb25nXCIsIFwiYnJhbmRXcm9uZ1wiXS5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgICAgICAgIGlzc3VlLmlzc3VlVHlwZVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZEZXRhaWxzLmZvckVhY2goKHNoZWxmOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaGVsZkRldGFpbHMgPSBuZXdzaGVsZi5zaGVsZkNvbmZpZy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmV3U2hlbGY6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTaGVsZi5zaGVsZk51bWJlciA9PSBzaGVsZi5zaGVsZk51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxmLm9sZFNoZWxmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWcucHVzaChzaGVsZik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWcuc29ydChcclxuICAgICAgICAgICAgICAgICAgICAgIChhOiBhbnksIGI6IGFueSkgPT4gYS5zaGVsZk51bWJlciAtIGIuc2hlbGZOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmRGV0YWlscyA9IG5ld3NoZWxmLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubWVyZ2VSb2xsb3V0TGlzdCA9IGZpeHR1cmVEYXRhLnNsaWNlKCkucmV2ZXJzZSgpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICB9XHJcbiAgZ2V0U3RvcmVWbWZlZWRiYWNrKFZtRGF0YTogYW55KSB7XHJcblxyXG4gICAgdGhpcy52bUZlZWRiYWNrID0gW107XHJcbiAgICBWbURhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gVm1EYXRhLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBlbGVtZW50Lm9wZW5maXh0dXJlID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWxlbWVudC5vcGVuZml4dHVyZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21wbGV0ZWRWbSA9IGVsZW1lbnQ/LnN0b3JlRml4dHVyZUxpc3Q/LmZpbHRlcihcclxuICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gXCJjb21wbGV0ZVwiXHJcbiAgICAgICkubGVuZ3RoO1xyXG4gICAgICBlbGVtZW50Py5zdG9yZUZpeHR1cmVMaXN0Py5mb3JFYWNoKChzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZyAmJlxyXG4gICAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID4gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoXHJcbiAgICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMoXHJcbiAgICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkRldGFpbHMgPSBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZztcclxuICAgICAgICAgIGxldCB2bUNvbmZpZyA9IHNoZWxmLkZpeHR1cmVEYXRhLnZtQ29uZmlnO1xyXG4gICAgICAgICAgc2hlbGY/LmFuc3dlcnMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlLmlzc3VlcyA9IGVsZT8uaXNzdWVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbFZtaXNzdWVzID0gdGhpcy50b3RhbFZtaXNzdWVzICsgZWxlPy5pc3N1ZXM/Lmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgIGVsZT8uaXNzdWVzLmZvckVhY2goKGlzc3VlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgPT09IFwicGVuZGluZ1wiKVxyXG4gICAgICAgICAgICAgICAgICAubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgaXNzdWUuY29sbGFwc2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdWbWlzc3VlcyA9IHRoaXMucGVuZGluZ1ZtaXNzdWVzICsgMTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaXNzdWUuY29sbGFwc2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRWbWlzc3VlcyA9IHRoaXMuYXBwcm92ZWRWbWlzc3VlcyArIDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlzc3VlPy5EZXRhaWxzLmZvckVhY2goKG5ld3NoZWxmOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIG5ld3NoZWxmLnZtQ29uZmlnbmV3ID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgICAgIC8vICAgSlNPTi5zdHJpbmdpZnkobmV3c2hlbGYudm1Db25maWcpXHJcbiAgICAgICAgICAgICAgICAvLyApO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYudm1EYXRhLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlbGU/LnZtSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdm1UeXBlID0gdm1Db25maWcuZmluZCgodm06IGFueSkgPT4gdm0udm1JZC50b1N0cmluZygpID09IGVsZS52bUlkLnRvU3RyaW5nKCkpPy52bVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlLnZtVHlwZSA9IHZtVHlwZTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIGlmIChuZXdzaGVsZj8uc2hlbGZDb25maWcgJiYgbmV3c2hlbGY/LnNoZWxmQ29uZmlnPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWdcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKG5ld3NoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhuZXdzaGVsZi5zZWN0aW9uQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZEZXRhaWxzID0gbmV3c2hlbGYuc2hlbGZDb25maWc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBuZXdzaGVsZi52bUNvbmZpZ25ldy5mb3JFYWNoKCh2bTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgaWYgKGlzc3VlLmlzc3VlVHlwZSA9PSBcIlZtTWlzbWF0Y2hcIikge1xyXG4gICAgICAgICAgICAgICAgICAvLyAgICAgdm0uc3RhcnRZUG9zaXRpb24gPSB2bS5uZXdzdGFydFlQb3NpdGlvbjtcclxuICAgICAgICAgICAgICAgICAgLy8gICAgIHZtLmVuZFlQb3NpdGlvbiA9IHZtLm5ld2VuZFlQb3NpdGlvbjtcclxuICAgICAgICAgICAgICAgICAgLy8gICAgIHZtLnhab25lID0gdm0ubmV3eFpvbmUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gICAgIHZtLnlab25lID0gdm0ubmV3eVpvbmUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgdm0ubmV3Vm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYudm1Db25maWduZXcgPSB2bUNvbmZpZztcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGY/LnZtQ29uZmlnbmV3Py5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGUudm1JZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbmRWbSA9IG5ld3NoZWxmPy52bURhdGE/LmZpbmQoKGVsZTogYW55KSA9PiBlbGU/LnZtSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRWbSkgZWxlLm5ld1ZtID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pXHJcbiAgICB0aGlzLnZtRmVlZGJhY2sgPSBWbURhdGEuc2xpY2UoKS5yZXZlcnNlKCk7XHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRpbWVyKDMwMDApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBmb3JtYXREYXRhKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgZ3JvdXBlZEFycmF5ID0gT2JqZWN0LnZhbHVlcyhcclxuICAgICAgZGF0YS5yZWR1Y2UoKGFjYzogYW55LCBpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB6b25lID0gaXRlbS56b25lIHx8IFwidW5kZWZpbmVkXCI7XHJcbiAgICAgICAgaWYgKCFhY2Nbem9uZV0pIHtcclxuICAgICAgICAgIGFjY1t6b25lXSA9IHsgem9uZSwgaXRlbXM6IFtdIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFjY1t6b25lXS5pdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgIH0sIHt9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBncm91cGVkQXJyYXk7XHJcbiAgfVxyXG4gIHN0b3JlRGF0YShzaGVsZkRhdGE6IGFueSwgbGV2ZWw/OiBzdHJpbmcpIHtcclxuICAgIHNoZWxmRGF0YS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYS5zaGVsZk51bWJlciAtIGIuc2hlbGZOdW1iZXIpO1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGxldCBzZWN0aW9uQ29uZmlnOiBhbnlbXSA9IFtdO1xyXG4gICAgc2hlbGZEYXRhLmZvckVhY2goKHNoZWxmOiBhbnkpID0+IHtcclxuICAgICAgbGV0IGdldFNlY3Rpb24gPSBzZWN0aW9uQ29uZmlnLmZpbHRlcigoZWxlKSA9PiBlbGUuem9uZSA9PSBzaGVsZi56b25lKTtcclxuICAgICAgaWYgKCFnZXRTZWN0aW9uLmxlbmd0aCB8fCAoIXNoZWxmLnpvbmUgJiYgbGV2ZWwgPT0gXCJMMlwiKSkge1xyXG4gICAgICAgIHNlY3Rpb25Db25maWcucHVzaCh7XHJcbiAgICAgICAgICAuLi5zaGVsZixcclxuICAgICAgICAgIHN0YXJ0WVBvc2l0aW9uOiBzaGVsZi5zaGVsZk51bWJlcixcclxuICAgICAgICAgIGVuZFlQb3NpdGlvbjogc2hlbGYuc2hlbGZOdW1iZXIsXHJcbiAgICAgICAgICBjb2xvcjogdGhpcy5zaGxlZkNvbG9yW2NvdW50XSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb3VudCsrO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5lbmRZUG9zaXRpb24gKyAxID09XHJcbiAgICAgICAgICBzaGVsZi5zaGVsZk51bWJlclxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aCAtIDFdLmVuZFlQb3NpdGlvbiA9IHNoZWxmLnNoZWxmTnVtYmVyO1xyXG4gICAgICAgICAgZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aCAtIDFdLnByb2R1Y3RCcmFuZE5hbWUgPSBbXHJcbiAgICAgICAgICAgIC4uLmdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0QnJhbmROYW1lLFxyXG4gICAgICAgICAgICAuLi5zaGVsZi5wcm9kdWN0QnJhbmROYW1lLFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0QnJhbmROYW1lID0gW1xyXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0QnJhbmROYW1lLm1hcChcclxuICAgICAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0Q2F0ZWdvcnkgPSBbXHJcbiAgICAgICAgICAgIC4uLmdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0Q2F0ZWdvcnksXHJcbiAgICAgICAgICAgIC4uLnNoZWxmLnByb2R1Y3RDYXRlZ29yeSxcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0ucHJvZHVjdENhdGVnb3J5ID0gW1xyXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0Q2F0ZWdvcnkubWFwKFxyXG4gICAgICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGVcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZWN0aW9uQ29uZmlnLnB1c2goe1xyXG4gICAgICAgICAgICAuLi5zaGVsZixcclxuICAgICAgICAgICAgc3RhcnRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgICBlbmRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgICBjb2xvcjogZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aCAtIDFdLmNvbG9yLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyB0aGlzLmhhbmRsZXZtUG9zaXRpb24oc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAvLyB0aGlzLmhhbmRsZVNlY3Rpb24oc2VjdGlvbkNvbmZpZyk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiBzZWN0aW9uQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRJbml0aWFsVmFsdWVzKCkge1xyXG4gICAgdGhpcy5wZW5kaW5nRml4dHVyZWlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLmFwcHJvdmVkRml4dHVyZWlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLnRvdGFsRml4dHVyZWlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLmNvbXBsZXRlZEZpeHR1cmUgPSAwO1xyXG4gICAgdGhpcy5wZW5kaW5nVm1pc3N1ZXMgPSAwO1xyXG4gICAgdGhpcy5hcHByb3ZlZFZtaXNzdWVzID0gMDtcclxuICAgIHRoaXMudG90YWxWbWlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLmNvbXBsZXRlZFZtID0gMDtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgICBpZiAoZW52KSB7XHJcbiAgICAgICAgdGhpcy5jZG5VcmwgPSBlbnYucGxhbm9ncmFtQ0ROO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29uZmlybWF0aW9uKFxyXG4gICAgdHlwZTogYW55LFxyXG4gICAgX2lkOiBhbnksXHJcbiAgICBhbnN3ZXJJZDogYW55LFxyXG4gICAgaXNzdWVJZDogYW55LFxyXG4gICAgRGV0YWlsc0lkOiBhbnksXHJcbiAgICB0YXNrVHlwZTogYW55LFxyXG4gICAgaXNzdWVUeXBlOiBhbnlcclxuICApIHtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBfaWQ6IF9pZCxcclxuICAgICAgYW5zd2VySWQ6IGFuc3dlcklkLFxyXG4gICAgICBpc3N1ZUlkOiBpc3N1ZUlkLFxyXG4gICAgICBEZXRhaWxzSWQ6IERldGFpbHNJZCxcclxuICAgICAgdGFza1R5cGU6IHRhc2tUeXBlLFxyXG4gICAgICBpc3N1ZVR5cGU6IGlzc3VlVHlwZSxcclxuICAgICAgcGxhbm9JZDogdGhpcy5jdXJyZW50UGxhbm9EZXRhaWxzPy5wbGFub0lkLFxyXG4gICAgICBmbG9vcklkOiB0aGlzLmN1cnJlbnRQbGFub0RldGFpbHM/Ll9pZCxcclxuICAgICAgLy8gZml4dHVyZUlkOiB0aGlzLnNlbGVjdGVkRml4dHVyZS5maXh0dXJlSWQsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENvbmZpcm1hdGlvblBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLFxyXG4gICAgICB3aW5kb3dDbGFzczogXCJjdXN0b20taGVpZ2h0LW1vZGFsXCIsIC8vIDwtLSBBZGQgYSBjdXN0b20gY2xhc3MgaGVyZVxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gdHlwZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmlucHV0RGF0YSA9IHBheWxvYWQ7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwic3VibWl0XCIpIHtcclxuICAgICAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbG9hZCgpIHtcclxuICAgIGxldCByZXN1bHQgPSB7XHJcbiAgICAgIHJlbG9hZDogdHJ1ZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gIH1cclxuICBhcHBseUZpbHRlcnMoZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IHJlc3VsdDogYW55ID0ge307XHJcbiAgICBpZiAoZXZlbnQ/Lmxlbmd0aCkge1xyXG4gICAgICBldmVudC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAvLyBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJUYXNrXCIpIHtcclxuICAgICAgICAvLyAgIHJlc3VsdC5maWx0ZXJCeVRhc2sgPSBlbGVtZW50Lklzc3Vlcy5tYXAoKHZhbDogYW55KSA9PiB2YWw/LmlkKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiU3RhdHVzXCIpIHtcclxuICAgICAgICAgIHJlc3VsdC5maWx0ZXJCeVN0YXR1cyA9IGVsZW1lbnQuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbD8uaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJBcHByb3ZhbCBTdGF0dXNcIikge1xyXG4gICAgICAgICAgcmVzdWx0LmZpbHRlckJ5QXBwcm92YWxTdGF0dXMgPSBlbGVtZW50Lklzc3Vlcy5pZFxyXG4gICAgICAgICAgICA/IGVsZW1lbnQuSXNzdWVzLmlkXHJcbiAgICAgICAgICAgIDogXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHJlc3VsdC5maWx0ZXJCeUFwcHJvdmFsU3RhdHVzPy5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICByZXN1bHQuZmlsdGVyQnlTdGF0dXM/Lmxlbmd0aCA9PT0gMFxyXG4gICAgICAgIC8vICYmIHJlc3VsdC5maWx0ZXJCeVRhc2s/Lmxlbmd0aCA9PT0gMFxyXG4gICAgICApIHtcclxuICAgICAgICByZXN1bHQucmVsb2FkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuICB1cGRhdGVTdHlsZShkYXRhOiBhbnksIGk6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlU2VjdGlvbihkYXRhLCBpKTtcclxuICB9XHJcblxyXG4gIG5leHR0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcblxyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiBmaXh0dXJldGFza0luZGV4ICsgMSkge1xyXG4gICAgICB0aGlzLmZpeHR1cmV0YXNrSW5kZXggPSBmaXh0dXJldGFza0luZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXN0YXNrVm0odm10YXNrSW5kZXg6IG51bWJlciwgdG90YWxEYXRhOiBhbnkpIHtcclxuICAgIGlmICh2bXRhc2tJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy52bXRhc2tJbmRleCA9IHZtdGFza0luZGV4IC0gMTtcclxuICAgIH1cclxuICB9XHJcbiAgbmV4dHRhc2tWbSh2bXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG5cclxuICAgIGlmICh0b3RhbERhdGEubGVuZ3RoID4gdm10YXNrSW5kZXggKyAxKSB7XHJcbiAgICAgIHRoaXMudm10YXNrSW5kZXggPSB2bXRhc2tJbmRleCArIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByZXZpb3VzdGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKGZpeHR1cmV0YXNrSW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuZml4dHVyZXRhc2tJbmRleCA9IGZpeHR1cmV0YXNrSW5kZXggLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBoYW5kbGV2bVBvc2l0aW9uKHZtRGF0YTogYW55LCBpOiBhbnkpIHtcclxuICAgIGNvbnN0IHZpZXdQb3J0ID0gdGhpcy5ib2R5QmxvY2tSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBib2R5SGVpZ2h0ID0gdmlld1BvcnQ/Lm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IGJvZHlXaWR0aCA9IHZpZXdQb3J0Py5vZmZzZXRXaWR0aDtcclxuICAgIGxldCBzdHlsZTtcclxuICAgIC8vIHRoaXMudm1Db25maWcuZm9yRWFjaCgoZTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGxldCBzdGFydFNoZWxmID0gdm1EYXRhPy5zdGFydFlQb3NpdGlvbiA/PyAxO1xyXG4gICAgbGV0IGVuZFNoZWxmID0gdm1EYXRhPy5lbmRZUG9zaXRpb24gPz8gMTtcclxuICAgIGNvbnN0IHZtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ2bVwiICsgaSk7XHJcbiAgICBpZiAoIXZtKSByZXR1cm47XHJcblxyXG4gICAgbGV0IHdpZHRoID0gMTAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDEwMDtcclxuICAgIGxldCB4ID0gMDtcclxuICAgIGxldCB5ID0gMDtcclxuXHJcbiAgICBsZXQgeVN0YXJ0ID0gMDtcclxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc3RhcnRTaGVsZiAtIDE7IGsrKykge1xyXG4gICAgICBjb25zdCBzaGVsZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hlbGZcIiArIGspIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXNoZWxmKSByZXR1cm47XHJcblxyXG4gICAgICB5U3RhcnQgKz0gc2hlbGYub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwbGFjZW1lbnRIZWlnaHQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IHN0YXJ0U2hlbGYgLSAxOyBrIDwgZW5kU2hlbGY7IGsrKykge1xyXG4gICAgICBjb25zdCBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghcykgcmV0dXJuO1xyXG4gICAgICBwbGFjZW1lbnRIZWlnaHQgKz0gcy5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh2bURhdGE/Lnhab25lKSB7XHJcbiAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgeCA9IDA7XHJcbiAgICAgICAgd2lkdGggPSAxMDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIHggPSBib2R5V2lkdGggLSB3aWR0aDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIm1pZGRsZVwiOlxyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIHggPSAoYm9keVdpZHRoIC0gd2lkdGgpIC8gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcclxuICAgICAgICB3aWR0aCA9IGJvZHlXaWR0aDtcclxuICAgICAgICB4ID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHZtRGF0YT8ueVpvbmUpIHtcclxuICAgICAgY2FzZSBcInRvcFwiOlxyXG4gICAgICAgIGhlaWdodCA9IHBsYWNlbWVudEhlaWdodCA8IDEwMCA/IHBsYWNlbWVudEhlaWdodCAtIDIwIDogMTAwO1xyXG4gICAgICAgIHkgPSB5U3RhcnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtaWRkbGVcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyBwbGFjZW1lbnRIZWlnaHQgLSAyMCA6IDEwMDtcclxuICAgICAgICB5ID0gKHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCkgLyAyICsgeVN0YXJ0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiYm90dG9tXCI6XHJcbiAgICAgICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0IDwgMTAwID8gcGxhY2VtZW50SGVpZ2h0IC0gMjAgOiAxMDA7XHJcbiAgICAgICAgeSA9IHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCArIHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQ7XHJcbiAgICAgICAgeSA9IHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodm1EYXRhLm5ld1ZtKSB7XHJcbiAgICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpO3otaW5kZXg6MjtgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3R5bGUgPSBgd2lkdGg6JHt3aWR0aH1weDtoZWlnaHQ6JHtoZWlnaHR9cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgke3h9cHgsICR7eX1weCk7YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAvLyB9KTtcclxuICB9XHJcbiAgaGFuZGxlU2VjdGlvbihzZWN0aW9uQ29uZmlnOiBhbnksIGk6IGFueSkge1xyXG4gICAgY29uc3Qgdmlld1BvcnQgPSB0aGlzLmJvZHlCbG9ja1JlZj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGJvZHlIZWlnaHQgPSB2aWV3UG9ydD8ub2Zmc2V0SGVpZ2h0O1xyXG4gICAgY29uc3QgYm9keVdpZHRoID0gdmlld1BvcnQ/Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIGxldCBzdHlsZTogYW55O1xyXG4gICAgLy8gT2JqZWN0LmtleXMoc2VjdGlvbkNvbmZpZykuZm9yRWFjaCgoZTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGxldCBzdGFydFNoZWxmID0gc2VjdGlvbkNvbmZpZz8uc3RhcnRZUG9zaXRpb24gPz8gMTtcclxuICAgIGxldCBlbmRTaGVsZiA9IHNlY3Rpb25Db25maWc/LmVuZFlQb3NpdGlvbiA/PyBzZWN0aW9uQ29uZmlnLmxlbmd0aDtcclxuICAgIGNvbnN0IHNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlY3Rpb25cIiArIGkpO1xyXG4gICAgaWYgKCFzZWN0aW9uKSByZXR1cm47XHJcblxyXG4gICAgbGV0IHdpZHRoID0gMTAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDUwO1xyXG4gICAgbGV0IHggPSAwO1xyXG4gICAgbGV0IHkgPSAwO1xyXG5cclxuICAgIGxldCB5U3RhcnQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBzdGFydFNoZWxmIC0gMTsgaysrKSB7XHJcbiAgICAgIGNvbnN0IHNoZWxmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghc2hlbGYpIHJldHVybjtcclxuXHJcbiAgICAgIHlTdGFydCArPSBzaGVsZi5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBsYWNlbWVudEhlaWdodCA9IDA7XHJcbiAgICBmb3IgKGxldCBrID0gc3RhcnRTaGVsZiAtIDE7IGsgPCBlbmRTaGVsZjsgaysrKSB7XHJcbiAgICAgIGNvbnN0IHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNoZWxmXCIgKyBrKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgIGlmICghcykgcmV0dXJuO1xyXG4gICAgICBwbGFjZW1lbnRIZWlnaHQgKz0gcy5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICB4ID0gMTA7XHJcbiAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyA0OCA6IDUwO1xyXG4gICAgLy8gaGVpZ2h0ID0gNTA7XHJcbiAgICB5ID0gKHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCkgLyAyICsgeVN0YXJ0O1xyXG5cclxuICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpYDtcclxuICAgIC8vIGxldCB2bURldGFpbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgdm0tcGxhY2Vob2xkZXIke2l9YCk7XHJcbiAgICAvLyBpZiAodm1EZXRhaWxzKSB7XHJcbiAgICAvLyAgIHZtRGV0YWlscy5zdHlsZS5ib3JkZXIgPSBgMXB4IHNvbGlkICR7dGhpcy5zaGxlZkNvbG9yW2ldLmJvcmRlcn1gO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gc3R5bGUucHVzaCh7em9uZTplLHN0eWxlOnN0eWxlTGlzdH0pXHJcbiAgICAvLyB9KTtcclxuICAgIHJldHVybiBzdHlsZTtcclxuICB9XHJcblxyXG4gIGdldFN0YXJ0UG9zaXRpb24oXHJcbiAgICBzaGVsZk51bWJlcjogbnVtYmVyLFxyXG4gICAgem9uZTogYW55LFxyXG4gICAgc2hlbGZEZXRhaWxzOiBhbnksXHJcbiAgICBkYXRhOiBhbnkgPSBbXVxyXG4gICkge1xyXG4gICAgc2hlbGZEZXRhaWxzID0gc2hlbGZEZXRhaWxzLmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLnpvbmUgPT0gem9uZSAmJiBlbGUuc3RhcnRZUG9zaXRpb24gPT0gc2hlbGZOdW1iZXJcclxuICAgICk7XHJcbiAgICBpZiAoc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgIGlmIChkYXRhLmxlbmd0aCkge1xyXG4gICAgICAgIGxldCBtYXRjaGVkQ291bnQgPSAwO1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChzaGVsZkRldGFpbHMucHJvZHVjdEJyYW5kTmFtZS5pbmNsdWRlcyhlbGUucHJvZHVjdEJyYW5kTmFtZSkpIHtcclxuICAgICAgICAgICAgaWYgKCFlbGUucHJvZHVjdENhdGVnb3J5Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIG1hdGNoZWRDb3VudCsrO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGVsZS5wcm9kdWN0Q2F0ZWdvcnkuZm9yRWFjaCgoY2F0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChzaGVsZkRldGFpbHMucHJvZHVjdENhdGVnb3J5LmluY2x1ZGVzKGNhdCkpIHtcclxuICAgICAgICAgICAgICAgICAgbWF0Y2hlZENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIW1hdGNoZWRDb3VudCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgZ2V0RW5kUG9zaXRpb24oXHJcbiAgICBzaGVsZk51bWJlcjogbnVtYmVyLFxyXG4gICAgem9uZTogYW55LFxyXG4gICAgc2hlbGZEZXRhaWxzOiBhbnksXHJcbiAgICBkYXRhOiBhbnkgPSBbXVxyXG4gICkge1xyXG4gICAgc2hlbGZEZXRhaWxzID0gc2hlbGZEZXRhaWxzLmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLnpvbmUgPT0gem9uZSAmJiBlbGUuZW5kWVBvc2l0aW9uID09IHNoZWxmTnVtYmVyXHJcbiAgICApO1xyXG4gICAgaWYgKHNoZWxmRGV0YWlscykge1xyXG4gICAgICBpZiAoZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgbWF0Y2hlZENvdW50ID0gMDtcclxuICAgICAgICBkYXRhLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2hlbGZEZXRhaWxzLnByb2R1Y3RCcmFuZE5hbWUuaW5jbHVkZXMoZWxlLnByb2R1Y3RCcmFuZE5hbWUpKSB7XHJcbiAgICAgICAgICAgIGlmICghZWxlLnByb2R1Y3RDYXRlZ29yeS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICBtYXRjaGVkQ291bnQrKztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBlbGUucHJvZHVjdENhdGVnb3J5LmZvckVhY2goKGNhdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hlbGZEZXRhaWxzLnByb2R1Y3RDYXRlZ29yeS5pbmNsdWRlcyhjYXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgIG1hdGNoZWRDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFtYXRjaGVkQ291bnQpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGdldE1pZFBvc2l0aW9uKFxyXG4gICAgc2hlbGZOdW1iZXI6IG51bWJlcixcclxuICAgIHpvbmU6IGFueSxcclxuICAgIHNoZWxmRGV0YWlsczogYW55LFxyXG4gICAgZGF0YTogYW55ID0gW11cclxuICApIHtcclxuICAgIHNoZWxmRGV0YWlscyA9IHNoZWxmRGV0YWlscy5maW5kKFxyXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZS56b25lID09IHpvbmUgJiYgZWxlLmVuZFlQb3NpdGlvbiA+PSBzaGVsZk51bWJlclxyXG4gICAgKTtcclxuICAgIGlmIChzaGVsZkRldGFpbHMpIHtcclxuICAgICAgaWYgKGRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IG1hdGNoZWRDb3VudCA9IDA7XHJcbiAgICAgICAgZGF0YS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHNoZWxmRGV0YWlscy5wcm9kdWN0QnJhbmROYW1lLmluY2x1ZGVzKGVsZS5wcm9kdWN0QnJhbmROYW1lKSkge1xyXG4gICAgICAgICAgICBpZiAoIWVsZS5wcm9kdWN0Q2F0ZWdvcnkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgbWF0Y2hlZENvdW50Kys7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZWxlLnByb2R1Y3RDYXRlZ29yeS5mb3JFYWNoKChjYXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNoZWxmRGV0YWlscy5wcm9kdWN0Q2F0ZWdvcnkuaW5jbHVkZXMoY2F0KSkge1xyXG4gICAgICAgICAgICAgICAgICBtYXRjaGVkQ291bnQrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghbWF0Y2hlZENvdW50KSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2hvd01hdGNoKGRhdGE6YW55KSB7XHJcbiAgICBsZXQgZmluZE1hdGNoID0gZGF0YT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlLnN0YXR1cyA9PSBcImNvbXBsZXRlXCIpO1xyXG4gICAgcmV0dXJuIGZpbmRNYXRjaD8ubGVuZ3RoID09IGRhdGEubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8c2VjdGlvbiAqbmdJZj1cImxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPHNlY3Rpb24gKm5nSWY9XCIhbG9hZGluZ1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0b3JlUmVzcG9uc2VcIj5TdG9yZSByZXNwb25zZTwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibm9ybWFsVGV4dCBtYi01XCI+Q2xpY2sgYSBmaXh0dXJlIG9yIHZpZXcgYWxsPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiIChjbGljayk9XCJyZWxvYWQoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHRleHQtcHJpbWFyeSBib3JkZXItMCBweC0zIHB5LTJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNlYWY2ZmY7IGJvcmRlci1yYWRpdXM6IDFyZW07XCI+XHJcbiAgICAgICAgQ2xlYXIgRmlsdGVyXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bGliLWZpbHRlcnMgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIiBbZGF0YU9iamVjdF09XCJkYXRhT2JqZWN0XCJcclxuICAgICAgICAoYXBwbGllZEZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInJvbGxvdXRTZWN0aW9uID09PSAndm0nXCI+XHJcbiAgICA8ZGl2IG5nYkFjY29yZGlvbiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIGNsYXNzPVwibXQtNVwiPlxyXG4gICAgICBAZm9yKHZtRGF0YSBvZiB2bUZlZWRiYWNrO3RyYWNrIGk7bGV0IGkgPSAkaW5kZXg7bGV0IGZpcnN0PSRmaXJzdCkge1xyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW0gW2NvbGxhcHNlZF09XCIhZmlyc3RcIiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlciAoY2xpY2spPVwidm10YXNrSW5kZXg9MFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0wXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhdm1EYXRhPy5yZWRvU3RhdHVzXCI+VmlzdWFsIG1lcmNoIHJvbGxvdXQgYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZtRGF0YT8ucmVkb1N0YXR1c1wiPlZpc3VhbCBtZXJjaCByb2xsb3V0IFJlYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+e3t2bURhdGE/LmNyZWF0ZWRBdCB8ZGF0ZTogJ2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicHMtMCBwZS0wXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlIHx8IHNlbGVjdGVkRml4dHVyZT8uaXNWbUVkaXRlZCB8fCBzZWxlY3RlZEZpeHR1cmU/Lmlzc3VlRGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uY3JlYXRlZEJ5TmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwidm1EYXRhPy51c2VyTmFtZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWRpdmlkZXIgbXQtMyBtcy01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1EYXRhPy51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uc3VibWl0VGltZV9zdHJpbmd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZtRGF0YS5zdG9yZUZpeHR1cmVMaXN0Py5sZW5ndGg+MFwiPlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtM1wiICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTMgbWUtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd01hdGNoKHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAzTDQuNSA4LjVMMiA2XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5WbSBtYXRjaGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIHAtMyBtZS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd01hdGNoKHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNiA0VjZNNiA4SDYuMDA1TTExIDZDMTEgOC43NjE0MiA4Ljc2MTQyIDExIDYgMTFDMy4yMzg1OCAxMSAxIDguNzYxNDIgMSA2QzEgMy4yMzg1OCAzLjIzODU4IDEgNiAxQzguNzYxNDIgMSAxMSAzLjIzODU4IDExIDZaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5WbSBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCIgKm5nSWY9XCJwZW5kaW5nVm1pc3N1ZXM+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3BlbmRpbmdWbWlzc3Vlc319L3t7dG90YWxWbWlzc3Vlc319IGFjdGlvbiBwZW5kaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtM1wiICpuZ0lmPVwiYXBwcm92ZWRWbWlzc3Vlcz4wJiZwZW5kaW5nVm1pc3N1ZXM9PT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7YXBwcm92ZWRWbWlzc3Vlc319L3t7dG90YWxWbWlzc3Vlc319IGFjdGlvbiBkb25lXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c3Rhc2tWbSh2bXRhc2tJbmRleCx2bURhdGE/LnN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJ2bXRhc2tJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhdm10YXNrSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGEuZml4dHVyZU5hbWV9fSAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGEuZml4dHVyZVdpZHRoLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YS5maXh0dXJlV2lkdGgudW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3ZtdGFza0luZGV4KzF9fS97e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdC5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwibmV4dHRhc2tWbSh2bXRhc2tJbmRleCx2bURhdGE/LnN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJ2bURhdGE/LnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoPnZtdGFza0luZGV4KzFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIodm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aCk9PT0odm10YXNrSW5kZXgrMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZEltZyBtdC00IHBzLTMgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIG5hbWU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3t2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplIChXaWR0aCk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3t2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ub3RhbCBzaGVsdmVzOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNoZWxmQ29uZmlnPy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgcHJvZHVjdCBjYXBhY2l0eTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgUGxhbm9ncmFtIGRlc2lnblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRml4dHVyZSBkZXNpZ25lZCBieSB0aGUgcGxhbm9ncmFtIHRlYW1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhbGwtdmlld3BvcnQgdy0xMDAgbXQtNVwiPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgPz8gJyd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgI2JvZHlCbG9jayBpZD1cImJvZHlCbG9ja1wiIGNsYXNzPVwiYm9keS1ibG9jayB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2bSBvZiB2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8udm1Db25maWc7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIid2bScgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiIFtzdHlsZV09XCJoYW5kbGV2bVBvc2l0aW9uKHZtLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ2bT8uaW1nU3JjXCIgKm5nSWY9XCJ2bT8uaW1nU3JjXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCI+e3t2bT8udm1OYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNoZWxmRGF0YSBvZiB2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzond2hpdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjond2hpdGUnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiB7e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpc3N1ZXMgb2Ygdm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uYW5zd2VycztsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnbmV3ZGV0YWlscy0nICsgayB9fVwiIFtjb2xsYXBzZWRdPVwiaXRlbS5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48c3BhbiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1ibG9jayBiZy13YXJuaW5nIHJvdW5kZWQtY2lyY2xlIG14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7XCI+PC9zcGFuPnt7aXRlbT8ucXVlc3Rpb259fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IG10LTVcIj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J1ZtTWlzc2luZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBhZGRpdGlvbmFsIFZNczoge3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J2V4dHJhVm0nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgYWRkaXRpb25hbCBWTXM6IHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWcubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdWbU1pc21hdGNoJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIG1pc3BsYWNlZCBWTXM6IHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWcubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZtRGF0YSBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTUgcGItNVwiICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0ndm1QYXJ0aWFsbHlSZWNldmllZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YlRleHRcIj5Ub3RhbCBwYXJ0aWFsbHkgcmVjaWV2ZWQgVk1zOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bURhdGEubGVuZ3RofX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTUgcGItNVwiICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0ndm1EYW1hZ2VkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViVGV4dFwiPlRvdGFsIGlzc3Vlcy9kYW1hZ2VzIFZNczpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1EYXRhLmxlbmd0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC01IHBiLTVcIiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J3Ztbm90UmVjZXZpZWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJUZXh0XCI+VG90YWwgbm90IHJlY2VpdmVkIFZNczpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1EYXRhLmxlbmd0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC01IHBiLTVcIiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J3ZtTWlzbWF0Y2gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJUZXh0XCI+VG90YWwgbWlzbWF0Y2hlZCBzaXplIFZNczpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1EYXRhLmxlbmd0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy52bU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Vk0gTmFtZSA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1EYXRhPy52bU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkNhdGVnb3J5IDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/LnZtVHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3ZtRGF0YT8uaW1hZ2V9fVwiICpuZ0lmPVwidm1EYXRhPy5pbWFnZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1EYXRhPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIFJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXh0dXJlIGZlZWRiYWNrIGJ5IHRoZSBzdG9yZSB0ZWFtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImhlYWRlci1ibG9ja1wiIGNsYXNzPVwiaGVhZGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5oZWFkZXI/LmxhYmVsID8/ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2sgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdm0gb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZ25ldztsZXQgbT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3ZtJyArIG1cIiBjbGFzcz1cInZtLWJsb2NrXCIgW3N0eWxlXT1cImhhbmRsZXZtUG9zaXRpb24odm0sbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwidm0ubmV3Vm0gPyAncmVkQm9yZGVyJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3t2bT8uaW1nU3JjfX1cIiAqbmdJZj1cInZtPy5pbWdTcmNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGVcIj57e3ZtPy52bU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxoMz57eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvaDM+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzaGVsZicgKyBpXCIgY2xhc3M9XCJibG9jayBzaGVsZiBoaWRlLXNjcm9sbCBkLWJsb2NrIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOid3aGl0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOid3aGl0ZSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hlbGYgQ2FwYWNpdHkgOiB7e3NoZWxmRGF0YT8ucHJvZHVjdFBlclNoZWxmfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3t2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/PyAnJ319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJpdGVtPy5jb21tZW50cy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgaXRlbT8uY29tbWVudHM/LnNsaWNlKCk/LnJldmVyc2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dCBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQ2xvc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdkaXNhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5SZWRvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0ncmV2b2tlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlJldm9rZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbdm10YXNrSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdyZWRvJyx2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5faWQsaXNzdWVzLl9pZCxpdGVtLl9pZCxpdGVtPy5EZXRhaWxzW3ZtdGFza0luZGV4XT8uX2lkLCd2bVJvbGxvdXQnLGl0ZW0uaXNzdWVUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmsgUmVkb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Nsb3NlSXNzdWUnLHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbdm10YXNrSW5kZXhdLl9pZCwndm1Sb2xsb3V0JyxpdGVtLmlzc3VlVHlwZSlcIj5DbG9zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzc3VlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2UmJnZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3ZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImltYWdlXCIgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/Lmlzc3Vlcz8ubGVuZ3RoPT09MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiB2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5jb21tZW50cz8uc2xpY2UoKT8ucmV2ZXJzZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0IGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQ2xvc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nZGlzYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJSZWRvXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J3Jldm9rZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5SZXZva2VkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIiAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnQhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYXBwcm92YWxTdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkICYmICF2bURhdGE/LnN0b3JlRml4dHVyZUxpc3Rbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5zdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ3JlZG8nLHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uX2lkLHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/Ll9pZCwnJywnJywndm1Sb2xsb3V0JywnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmsgUmVkb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Nsb3NlSXNzdWUnLHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uX2lkLHZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/Ll9pZCwnJywnJywndm1Sb2xsb3V0JywnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb3NlIElzc3VlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UmJnZtRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFt2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tjZG5Vcmx9fXt7dm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0W3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiIGFsdD1cImltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwidm1EYXRhPy5jb21tZW50cy5sZW5ndGgmJiAhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2Ygdm1EYXRhPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jcmVhdGVkQXR8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmICghdm1EYXRhPy5zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOTRcIiBoZWlnaHQ9XCI5NFwiIHZpZXdCb3g9XCIwIDAgOTQgOTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjEzLjMzMzNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM1Ljk1MDIgNDguMTk5N0MzNS42NDg5IDQ4LjIzMTUgMzUuMzQyMiA0OC4yNTA1IDM1LjAzMTIgNDguMjUwNUMzNC44NjE3IDQ4LjI1MDUgMzQuNjk0NCA0OC4yNDM2IDM0LjUyOTMgNDguMjMzOVY1OC42MDY5QzM0LjUyOTMgNjAuMDM0OSAzNS43MTIzIDYxLjIyNiAzNy4yMDAyIDYxLjIyNjFINTYuODA0N0M1OC4yOTI3IDYxLjIyNjEgNTkuNDc1NiA2MC4wMzUgNTkuNDc1NiA1OC42MDY5VjQ4LjIzNDlDNTkuMzEzNyA0OC4yNDQxIDU5LjE0OTggNDguMjUwNSA1OC45ODU0IDQ4LjI1MDVDNTguNjcxNCA0OC4yNTA1IDU4LjM2MDggNDguMjMyNSA1OC4wNTQ3IDQ4LjE5OTdWNTUuOTg3OEgzNS45NTAyVjQ4LjE5OTdaTTU3LjkzMTYgMzIuNzczOUgzNi4wNzMyQzM1Ljg5NTkgMzIuNzczOSAzNS43NDA2IDMyLjg2NjcgMzUuNjYzMSAzMi45ODc4TDM1LjY2MTEgMzIuOTg5N0wzMi4xNTE0IDM4LjQ3MzFMMzIuMDU2NiAzOC42MjA2QzMwLjgzMTEgNDAuNzQwNCAzMi4wOTU3IDQzLjQ2NzQgMzQuNDQ3MyA0My43NzY5QzM0LjY0ODIgNDMuODAxMyAzNC44Mzc5IDQzLjgxNTkgMzUuMDI1NCA0My44MTU5QzM2LjI1NTUgNDMuODE1OSAzNy4zNDM0IDQzLjI4NzIgMzguMTAwNiA0Mi40NjUzTDM5LjAyMjUgNDEuNDY0NEwzOS45NDE0IDQyLjQ2ODNDNDAuNjkwMyA0My4yODYzIDQxLjc3NyA0My44MTU5IDQzLjAxNDYgNDMuODE1OUM0NC4yNDY3IDQzLjgxNTggNDUuMzM4NiA0My4yODU2IDQ2LjA4NjkgNDIuNDY4M0w0Ny4wMDg4IDQxLjQ2MTRMNDcuOTMwNyA0Mi40NjgzQzQ4LjY3OSA0My4yODU3IDQ5Ljc3MDcgNDMuODE1OSA1MS4wMDI5IDQzLjgxNTlDNTIuMjM1MSA0My44MTU5IDUzLjMyNjggNDMuMjg1NyA1NC4wNzUyIDQyLjQ2ODNMNTQuOTk3MSA0MS40NjE0TDU1LjkxODkgNDIuNDY4M0M1Ni42NjczIDQzLjI4NTcgNTcuNzYgNDMuODE1OSA1OC45OTIyIDQzLjgxNTlDNTkuMTczNiA0My44MTU5IDU5LjM2ODcgNDMuODAyMSA1OS41Njg0IDQzLjc3NzhINTkuNTY3NEM2MS45NjExIDQzLjQ1NzMgNjMuMjI5MyA0MC42MDc4IDYxLjg2MTMgMzguNDczMUw2MS44NjA0IDM4LjQ3NDFMNTguMzQzOCAzMi45OTA3TDU4LjM0MjggMzIuOTg3OEM1OC4yNjUzIDMyLjg2NjUgNTguMTA5MiAzMi43NzM5IDU3LjkzMTYgMzIuNzczOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjIuNVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGgzIG10LTJcIj5ObyByZXNwb25zZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+WWV0IHRvIHJlY2VpdmUgc3RvcmUgcmVzcG9uc2UuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInJvbGxvdXRTZWN0aW9uID09PSAnbWVyY2gnXCI+XHJcbiAgICA8ZGl2IG5nYkFjY29yZGlvbiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIGNsYXNzPVwibXQtNVwiPlxyXG4gICAgICBAZm9yKG1lcmdlRGF0YSBvZiBtZXJnZVJvbGxvdXRMaXN0O3RyYWNrIGk7bGV0IGkgPSAkaW5kZXg7bGV0IGZpcnN0PSRmaXJzdCkge1xyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW0gW2NvbGxhcHNlZF09XCIhZmlyc3RcIiBjbGFzcz1cIm1iLTVcIiBbaWRdPVwiJ21lcmNoJytpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgZnMtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW1lcmdlRGF0YT8ucmVkb1N0YXR1c1wiPk1lcmNoYW5kaXNlIHJvbGxvdXQgYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1lcmdlRGF0YT8ucmVkb1N0YXR1c1wiPk1lcmNoYW5kaXNlIHJvbGxvdXQgUmVhc3NpZ25lZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj57e21lcmdlRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwcy0wIHBlLTBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmUgfHwgc2VsZWN0ZWRGaXh0dXJlPy5pc01lcmNoRWRpdGVkIHx8IHNlbGVjdGVkRml4dHVyZT8uaXNzdWVEYXRhPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWRpdmlkZXIgbXQtMyBtcy01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVyZ2VEYXRhPy5jcmVhdGVkQnlOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVyZ2VEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzaWduZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJtZXJnZURhdGE/LnVzZXJOYW1lIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiICpuZ0lmPVwibWVyZ2VEYXRhPy5zdWJtaXRUaW1lX3N0cmluZyE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnN1Ym1pdFRpbWVfc3RyaW5nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzaWduZWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3Q/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtcy0zXCIgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtMyBtZS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93TWF0Y2gobWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDNMNC41IDguNUwyIDZcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkZpeHR1cmUgbWF0Y2hlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBwLTMgbWUtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dNYXRjaChtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYgNFY2TTYgOEg2LjAwNU0xMSA2QzExIDguNzYxNDIgOC43NjE0MiAxMSA2IDExQzMuMjM4NTggMTEgMSA4Ljc2MTQyIDEgNkMxIDMuMjM4NTggMy4yMzg1OCAxIDYgMUM4Ljc2MTQyIDEgMTEgMy4yMzg1OCAxMSA2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+Rml4dHVyZSBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCIgKm5nSWY9XCJwZW5kaW5nRml4dHVyZWlzc3Vlcz4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7cGVuZGluZ0ZpeHR1cmVpc3N1ZXN9fS97e3RvdGFsRml4dHVyZWlzc3Vlc319IGFjdGlvbiBwZW5kaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXBwcm92ZWRGaXh0dXJlaXNzdWVzPjAmJnBlbmRpbmdGaXh0dXJlaXNzdWVzPT09MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2FwcHJvdmVkRml4dHVyZWlzc3Vlc319L3t7dG90YWxGaXh0dXJlaXNzdWVzfX0gYWN0aW9uIGRvbmVcclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzdGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleCxtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmaXh0dXJldGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFmaXh0dXJldGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lfX0gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2ZpeHR1cmV0YXNrSW5kZXgrMX19L3t7bWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZXh0dGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleCxtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoPmZpeHR1cmV0YXNrSW5kZXgrMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIihtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3QubGVuZ3RoKT09PShmaXh0dXJldGFza0luZGV4KzEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIG5hbWU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgVHlwZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlNpemUgKFdpZHRoKTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNoZWxmQ29uZmlnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlRvdGFsIHNoZWx2ZXM6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgcHJvZHVjdCBjYXBhY2l0eTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXBhY2l0eX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQbGFub2dyYW0gZGVzaWduXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBGaXh0dXJlIGRlc2lnbmVkIGJ5IHRoZSBwbGFub2dyYW0gdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5oZWFkZXI/LmxhYmVsID8/ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NlY3Rpb24nICsgaVwiIGNsYXNzPVwidm0tYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwidXBkYXRlU3R5bGUobWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInYm9yZGVyOjFweCBzb2xpZCAnK21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy5ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy56b25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6bWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uY29sb3I/LnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjptZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8udGV4dH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy56b25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGUgd29yZFdyYXBcIiBbbmdiVG9vbHRpcF09XCJ0b29sdGlwXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2YgbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6KHNoZWxmRGF0YT8uem9uZSB8fCBtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09ICdMMScpID8gbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uem9uZUNvbG9yW3NoZWxmRGF0YS56b25lXT8uY29sb3I/LmJnIDogc2hsZWZDb2xvcltpXS5iZ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOihzaGVsZkRhdGE/LnpvbmUgfHwgbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YS5wcm9kdWN0UmVzb2x1dGlvbkxldmVsID09PSAnTDEnKSA/IG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy50ZXh0QmcgOiBzaGxlZkNvbG9yW2ldLnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjooc2hlbGZEYXRhPy56b25lIHx8IG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGEucHJvZHVjdFJlc29sdXRpb25MZXZlbCA9PT0gJ0wxJykgPyBtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy56b25lQ29sb3Jbc2hlbGZEYXRhLnpvbmVdPy5jb2xvcj8udGV4dCA6IHNobGVmQ29sb3JbaV0udGV4dH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb290ZXIgYmxvY2sgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpc3N1ZXMgb2YgbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzO2xldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSXRlbT1cInt7ICduZXdkZXRhaWxzLScgKyBrIH19XCIgW2NvbGxhcHNlZF09XCJpdGVtLmNvbGxhcHNlZFwiIGNsYXNzPVwibWItNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXNzdWVzLmlzc3VlcztsZXQgayA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBuZ2JBY2NvcmRpb25CdXR0b24gY2xhc3M9XCJtYWluaGVhZGluZyBwLTMgYmFja2dyb3VuZEltZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgbGF5b3V0LUxiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiA8c3BhbiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1ibG9jayBiZy13YXJuaW5nIHJvdW5kZWQtY2lyY2xlIG14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7XCI+PC9zcGFuPnt7aXRlbT8ucXVlc3Rpb259fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC01XCI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00IG10LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbWVyY2hEZXRhaWxzIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5tZXJjaERhdGE7bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+QnJhbmQ6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7bWVyY2hEZXRhaWxzPy5wcm9kdWN0QnJhbmROYW1lIHx8ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Q2F0ZWdvcnk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7bWVyY2hEZXRhaWxzPy5wcm9kdWN0Q2F0ZWdvcnk/LnRvU3RyaW5nKCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmV0ZW1wbGF0ZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5UZW1wbGF0ZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmV0ZW1wbGF0ZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J3NpemVXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZVdpZHRoPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/Lmlzc3VlVHlwZT09PSdwcm9kdWN0Y2F0ZWdvcnlXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1pc3Npbmcgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5taXNzaW5nRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIm1pc3Npbmc/LnpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnt7bWlzc2luZz8uem9uZX19OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIG1pc3Npbmc/LnByb2R1Y3RDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmQgYmFkZ2UgXCI+e3tjYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J2JyYW5kV3JvbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtaXNzaW5nIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubWlzc2luZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJtaXNzaW5nPy56b25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj57e21pc3Npbmc/LnpvbmV9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGJyYW5kIG9mIG1pc3Npbmc/LmJyYW5kXCIgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkIGJhZGdlIG0tMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ticmFuZH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5pc3N1ZVR5cGUhPT0nYnJhbmRXcm9uZycmJml0ZW0/Lmlzc3VlVHlwZSE9PSdwcm9kdWN0Y2F0ZWdvcnlXcm9uZydcIj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZml4dHVyZUxpc3Qgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkNvbmZpZ0Zvcm1hdGVkXCI+XHJcbiAgICBcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbCB0ZXh0LWNhcGl0YWxpemVcIj57e2ZpeHR1cmVMaXN0Py56b25lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgc2hsZWZkYXRhIG9mIGZpeHR1cmVMaXN0Py5pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7c2hsZWZkYXRhPy5zaGVsZlR5cGV9fSB7e3NobGVmZGF0YT8uc2hlbGZOdW1iZXJ9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiID5DYXBhY2l0eTogPHNwYW4gY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnt7c2hsZWZkYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdGb3I9XCJsZXQgYnJhbmRzIG9mIHNobGVmZGF0YT8ucHJvZHVjdEJyYW5kTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG1lLTMgbWItMlwiPnt7YnJhbmRzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5tZXJjaERhdGEubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgUmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSByZXNwb25zZSBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIlsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pID8gJ2JvcmRlcjoxcHggc29saWQgcmVkJyA6ICcnXCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXI6IDAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpO2JhY2tncm91bmQ6ICNGMkYzRjc7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ3Byb2R1Y3RjYXRlZ29yeVdyb25nJywgJ2JyYW5kV3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5pc3N1ZVR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbktleXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzZWN0aW9uJyArIGlcIiBjbGFzcz1cInZtLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0saSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMC45NjlweCBzb2xpZCB2YXIoLS1HcmF5LTMwMCwgI0QwRDVERCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kJzogJ3ZhcigtLUdyYXktMTAwLCAjZWJlZWYzKSd9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/Lmxlbmd0aCA/J2RhbmdlcicgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy50b1N0cmluZygpID8/IG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWNTdHlsZSB3b3JkV3JhcFwiIFtuZ2JUb29sdGlwXT1cInRvb2x0aXBcIiBbbmdDbGFzc109XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/Lmxlbmd0aCA/ICdkYW5nZXInIDogJydcIj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8uWzBdIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMC45NjlweCBzb2xpZCB2YXIoLS1HcmF5LTMwMCwgI0QwRDVERCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTMuODQzcHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8udG9TdHJpbmcoKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItdG9wJzooZ2V0U3RhcnRQb3NpdGlvbihpKzEsc2hlbGZEYXRhLnpvbmUsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5tZXJjaERhdGEpICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgID8gJzJweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItYm90dG9tJzooZ2V0RW5kUG9zaXRpb24oaSsxLHNoZWxmRGF0YS56b25lLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZyxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0ubWVyY2hEYXRhKSAmJiAhWydGaXh0dXJlIHR5cGUgaXMgd3JvbmcnLCdGaXh0dXJlIHNpemUgaXMgd3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5xdWVzdGlvbikpID8gJzJweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItbGVmdCc6KGdldE1pZFBvc2l0aW9uKGkrMSxzaGVsZkRhdGEuem9uZSxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWcsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdLm1lcmNoRGF0YSkgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcycHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJpZ2h0JzooZ2V0TWlkUG9zaXRpb24oaSsxLHNoZWxmRGF0YS56b25lLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZyxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0ubWVyY2hEYXRhKSAmJiAhWydGaXh0dXJlIHR5cGUgaXMgd3JvbmcnLCdGaXh0dXJlIHNpemUgaXMgd3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5xdWVzdGlvbikpID8gJzJweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1HcmF5LTEwMCwgI2Y4ZjlmYiknLH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZCc6ICd2YXIoLS1HcmF5LTEwMCwgI2ViZWVmMyknfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+IHt7bWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwiaXRlbT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIGl0ZW0/LmNvbW1lbnRzPy5zbGljZSgpLnJldmVyc2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dCBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQ2xvc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdkaXNhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIlJlZG9cIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J3Jldm9rZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5SZXZva2VkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiICpuZ0lmPVwiY29tbWVudD8uY29tbWVudCE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnJiZzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0d28tdG9uZS1idG4gbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbigncmVkbycsbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5faWQsaXNzdWVzLl9pZCxpdGVtLl9pZCxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0uX2lkLCdtZXJjaFJvbGxvdXQnLGl0ZW0uaXNzdWVUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmsgUmVkb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Nsb3NlSXNzdWUnLG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5faWQsJ21lcmNoUm9sbG91dCcsaXRlbS5pc3N1ZVR5cGUpXCI+Q2xvc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc3N1ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlJiZtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJ7e2NkblVybH19e3ttZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJpbWFnZVwiIGNsYXNzPVwibXQtNCB3LTEwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzPy5bMF0/Lmlzc3Vlcz8ubGVuZ3RoPT09MFwiPlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIG1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHM/LnNsaWNlKCk/LnJldmVyc2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dCBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZSE9PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkNsb3NlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlJlZG88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J3Jldm9rZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5SZXZva2VkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIiAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnQhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYXBwcm92YWxTdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkICYmICFtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LnN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHdvLXRvbmUtYnRuIG1lLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbigncmVkbycsbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5faWQsbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5faWQsJycsJycsJ21lcmNoUm9sbG91dCcsJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXJrIFJlZG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdjbG9zZUlzc3VlJyxtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxtZXJnZURhdGE/LnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/Ll9pZCwnJywnJywnbWVyY2hSb2xsb3V0JywnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb3NlIElzc3VlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSYmbWVyZ2VEYXRhPy5zdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e21lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiaW1hZ2VcIiBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwibWVyZ2VEYXRhLmNvbW1lbnRzLmxlbmd0aCAmJiAhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgbWVyZ2VEYXRhLmNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jcmVhdGVkQXR8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIEBpZiAoIW1lcmdlRGF0YT8uc3RvcmVGaXh0dXJlTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIiB2aWV3Qm94PVwiMCAwIDk0IDk0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCIxMy4zMzMzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zNS45NTAyIDQ4LjE5OTdDMzUuNjQ4OSA0OC4yMzE1IDM1LjM0MjIgNDguMjUwNSAzNS4wMzEyIDQ4LjI1MDVDMzQuODYxNyA0OC4yNTA1IDM0LjY5NDQgNDguMjQzNiAzNC41MjkzIDQ4LjIzMzlWNTguNjA2OUMzNC41MjkzIDYwLjAzNDkgMzUuNzEyMyA2MS4yMjYgMzcuMjAwMiA2MS4yMjYxSDU2LjgwNDdDNTguMjkyNyA2MS4yMjYxIDU5LjQ3NTYgNjAuMDM1IDU5LjQ3NTYgNTguNjA2OVY0OC4yMzQ5QzU5LjMxMzcgNDguMjQ0MSA1OS4xNDk4IDQ4LjI1MDUgNTguOTg1NCA0OC4yNTA1QzU4LjY3MTQgNDguMjUwNSA1OC4zNjA4IDQ4LjIzMjUgNTguMDU0NyA0OC4xOTk3VjU1Ljk4NzhIMzUuOTUwMlY0OC4xOTk3Wk01Ny45MzE2IDMyLjc3MzlIMzYuMDczMkMzNS44OTU5IDMyLjc3MzkgMzUuNzQwNiAzMi44NjY3IDM1LjY2MzEgMzIuOTg3OEwzNS42NjExIDMyLjk4OTdMMzIuMTUxNCAzOC40NzMxTDMyLjA1NjYgMzguNjIwNkMzMC44MzExIDQwLjc0MDQgMzIuMDk1NyA0My40Njc0IDM0LjQ0NzMgNDMuNzc2OUMzNC42NDgyIDQzLjgwMTMgMzQuODM3OSA0My44MTU5IDM1LjAyNTQgNDMuODE1OUMzNi4yNTU1IDQzLjgxNTkgMzcuMzQzNCA0My4yODcyIDM4LjEwMDYgNDIuNDY1M0wzOS4wMjI1IDQxLjQ2NDRMMzkuOTQxNCA0Mi40NjgzQzQwLjY5MDMgNDMuMjg2MyA0MS43NzcgNDMuODE1OSA0My4wMTQ2IDQzLjgxNTlDNDQuMjQ2NyA0My44MTU4IDQ1LjMzODYgNDMuMjg1NiA0Ni4wODY5IDQyLjQ2ODNMNDcuMDA4OCA0MS40NjE0TDQ3LjkzMDcgNDIuNDY4M0M0OC42NzkgNDMuMjg1NyA0OS43NzA3IDQzLjgxNTkgNTEuMDAyOSA0My44MTU5QzUyLjIzNTEgNDMuODE1OSA1My4zMjY4IDQzLjI4NTcgNTQuMDc1MiA0Mi40NjgzTDU0Ljk5NzEgNDEuNDYxNEw1NS45MTg5IDQyLjQ2ODNDNTYuNjY3MyA0My4yODU3IDU3Ljc2IDQzLjgxNTkgNTguOTkyMiA0My44MTU5QzU5LjE3MzYgNDMuODE1OSA1OS4zNjg3IDQzLjgwMjEgNTkuNTY4NCA0My43Nzc4SDU5LjU2NzRDNjEuOTYxMSA0My40NTczIDYzLjIyOTMgNDAuNjA3OCA2MS44NjEzIDM4LjQ3MzFMNjEuODYwNCAzOC40NzQxTDU4LjM0MzggMzIuOTkwN0w1OC4zNDI4IDMyLjk4NzhDNTguMjY1MyAzMi44NjY1IDU4LjEwOTIgMzIuNzczOSA1Ny45MzE2IDMyLjc3MzlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBoMyBtdC0yXCI+Tm8gcmVzcG9uc2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPllldCB0byByZWNlaXZlIHN0b3JlIHJlc3BvbnNlLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibXQtNVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICAgIEBpZiAoKHJvbGxvdXRTZWN0aW9uID09PSAndm0nICYmICF2bUZlZWRiYWNrLmxlbmd0aCkgfHwgKHJvbGxvdXRTZWN0aW9uID09PSAnbWVyY2gnICYmICFtZXJnZVJvbGxvdXRMaXN0Lmxlbmd0aCkgKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOTRcIiBoZWlnaHQ9XCI5NFwiIHZpZXdCb3g9XCIwIDAgOTQgOTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCIxMy4zMzMzXCIgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMzUuOTUwMiA0OC4xOTk3QzM1LjY0ODkgNDguMjMxNSAzNS4zNDIyIDQ4LjI1MDUgMzUuMDMxMiA0OC4yNTA1QzM0Ljg2MTcgNDguMjUwNSAzNC42OTQ0IDQ4LjI0MzYgMzQuNTI5MyA0OC4yMzM5VjU4LjYwNjlDMzQuNTI5MyA2MC4wMzQ5IDM1LjcxMjMgNjEuMjI2IDM3LjIwMDIgNjEuMjI2MUg1Ni44MDQ3QzU4LjI5MjcgNjEuMjI2MSA1OS40NzU2IDYwLjAzNSA1OS40NzU2IDU4LjYwNjlWNDguMjM0OUM1OS4zMTM3IDQ4LjI0NDEgNTkuMTQ5OCA0OC4yNTA1IDU4Ljk4NTQgNDguMjUwNUM1OC42NzE0IDQ4LjI1MDUgNTguMzYwOCA0OC4yMzI1IDU4LjA1NDcgNDguMTk5N1Y1NS45ODc4SDM1Ljk1MDJWNDguMTk5N1pNNTcuOTMxNiAzMi43NzM5SDM2LjA3MzJDMzUuODk1OSAzMi43NzM5IDM1Ljc0MDYgMzIuODY2NyAzNS42NjMxIDMyLjk4NzhMMzUuNjYxMSAzMi45ODk3TDMyLjE1MTQgMzguNDczMUwzMi4wNTY2IDM4LjYyMDZDMzAuODMxMSA0MC43NDA0IDMyLjA5NTcgNDMuNDY3NCAzNC40NDczIDQzLjc3NjlDMzQuNjQ4MiA0My44MDEzIDM0LjgzNzkgNDMuODE1OSAzNS4wMjU0IDQzLjgxNTlDMzYuMjU1NSA0My44MTU5IDM3LjM0MzQgNDMuMjg3MiAzOC4xMDA2IDQyLjQ2NTNMMzkuMDIyNSA0MS40NjQ0TDM5Ljk0MTQgNDIuNDY4M0M0MC42OTAzIDQzLjI4NjMgNDEuNzc3IDQzLjgxNTkgNDMuMDE0NiA0My44MTU5QzQ0LjI0NjcgNDMuODE1OCA0NS4zMzg2IDQzLjI4NTYgNDYuMDg2OSA0Mi40NjgzTDQ3LjAwODggNDEuNDYxNEw0Ny45MzA3IDQyLjQ2ODNDNDguNjc5IDQzLjI4NTcgNDkuNzcwNyA0My44MTU5IDUxLjAwMjkgNDMuODE1OUM1Mi4yMzUxIDQzLjgxNTkgNTMuMzI2OCA0My4yODU3IDU0LjA3NTIgNDIuNDY4M0w1NC45OTcxIDQxLjQ2MTRMNTUuOTE4OSA0Mi40NjgzQzU2LjY2NzMgNDMuMjg1NyA1Ny43NiA0My44MTU5IDU4Ljk5MjIgNDMuODE1OUM1OS4xNzM2IDQzLjgxNTkgNTkuMzY4NyA0My44MDIxIDU5LjU2ODQgNDMuNzc3OEg1OS41Njc0QzYxLjk2MTEgNDMuNDU3MyA2My4yMjkzIDQwLjYwNzggNjEuODYxMyAzOC40NzMxTDYxLjg2MDQgMzguNDc0MUw1OC4zNDM4IDMyLjk5MDdMNTguMzQyOCAzMi45ODc4QzU4LjI2NTMgMzIuODY2NSA1OC4xMDkyIDMyLjc3MzkgNTcuOTMxNiAzMi43NzM5WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGgzIG10LTJcIj5ObyB0YXNrIGFzc2lnbmVkPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlN0b3JlIHJlc3BvbnNlIHZpZXdlZCBoZXJlPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19
|