tango-app-ui-analyse-traffic 3.8.0-alpha.27 → 3.8.0-alpha.28

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.
@@ -256,7 +256,6 @@ export class ImgRvpsComponent {
256
256
  this.getRvpsImageList = res?.data?.result;
257
257
  this.ticketReviewStatus = res?.data?.ticketStatus;
258
258
  console.log('revops getRvpsListApi :', res?.data);
259
- console.log('revops ticketReviewStatus :', this.ticketReviewStatus);
260
259
  // Save the full footfall data (grouped by timeRange)
261
260
  this.allFootfallData = res?.data?.result?.footfallData || [];
262
261
  // Create timeRange + count object
@@ -413,6 +412,7 @@ export class ImgRvpsComponent {
413
412
  remainingImageArray;
414
413
  revopsTypeValue = false;
415
414
  editBtnShow = false;
415
+ // when image selection from folder view
416
416
  selectImageForSplitView(obj) {
417
417
  this.splitScreenEnabled = true; // Enable split-screen when image is clicked
418
418
  this.selectImageArray = obj;
@@ -561,6 +561,7 @@ export class ImgRvpsComponent {
561
561
  }
562
562
  selectedType = ""; // default selected
563
563
  selectedRadioType;
564
+ // -- Non-shoppers selection type --
564
565
  onRadioChange(val) {
565
566
  this.selectedRadioType = val;
566
567
  this.selectedDuplicateImagesList = [];
@@ -1309,11 +1310,11 @@ export class ImgRvpsComponent {
1309
1310
  return normalizedDate ? this.cardDataMap[normalizedDate] : null;
1310
1311
  }
1311
1312
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImgRvpsComponent, deps: [{ token: i1.TrafficService }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i3.NgbModal }, { token: i4.ToastService }, { token: i5.TrafficRvpsService }], target: i0.ɵɵFactoryTarget.Component });
1312
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImgRvpsComponent, selector: "lib-img-rvps", viewQueries: [{ propertyName: "zoomPopup", first: true, predicate: ["zoomPopup"], descendants: true }, { propertyName: "raisedPopup", first: true, predicate: ["raisedPopup"], descendants: true }, { propertyName: "resetRequestPopup", first: true, predicate: ["resetRequestPopup"], descendants: true }, { propertyName: "imagePopup", first: true, predicate: ["imagePopup"], descendants: true }], ngImport: i0, template: "<div class=\"card mt-3\">\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\n <div class=\"custom-accordion\">\n <div class=\"custom-accordion-item\">\n <!-- for new navigation changes -->\n <!-- old view while folder view -->\n <button *ngIf=\"folderView\" class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\n <div class=\"header-row\">\n <span class=\"img-direc\">Image Directory</span>\n\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </button>\n <!-- new view while not in folder view view -->\n <div *ngIf=\"!folderView\" class=\"header-row\">\n <span *ngIf=\"backnav && !imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <!-- back from image flow -->\n <span *ngIf=\"imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <span class=\"img-direc\">Image Directory | {{folderDate | date:'dd MMM, yyyy'}}</span>\n <button *ngIf=\"!folderView\" class=\"mainheading-1 pb-0 custom-accordion-header\"\n (click)=\"toggleAccordion()\">\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <section *ngIf=\"isAccordionExpanded\">\n\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\n <div class=\"date-list-container\">\n <div class=\"date-list-scroll\">\n <div class=\"date-card\" *ngFor=\"let obj of dateArray; let i = index\"\n [ngClass]=\"{'date-card-active': i === selectIndex}\" (click)=\"getimages(i, obj)\">\n <div class=\"date-card-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"calendar-icon\">\n <path\n d=\"M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6H12.6667V13.3333Z\"\n fill=\"#667085\" />\n </svg>\n <span class=\"date-text\">{{obj | date:'dd MMM'}}</span>\n <span *ngIf=\"cardDataMap[obj]?.ticketStatusLower as status\" class=\"badge ms-2\" [ngClass]=\"{\n 'badge-light-success': status === 'closed',\n 'badge-light-warning': status === 'raised',\n 'badge-light-default': status !== 'closed' && status !== 'raised'\n }\">\n {{ status === 'closed' ? 'Ticket closed' : (status === 'raised' ? 'Ticket raised' :\n (cardDataMap[obj]?.ticketStatus || '')) }}\n </span>\n </div>\n <div class=\"footfall-count\">{{ cardDataMap[obj]?.footfallCount || 0 }}</div>\n <div class=\"footfall-label\">Total footfall</div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"!folderView\" class=\"card-body\">\n <section *ngIf=\"!imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- footfall trends feature -->\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <!-- footfall trends feature end -->\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <!-- <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span> -->\n <!-- <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}\n <span class=\"badge badge-light-warning mx-2\"\n *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\n Ticket Raised\n </span>\n <span class=\"badge badge-light-success mx-2\"\n *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\n\n </span> -->\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div *ngIf=\"!folderView\" class=\"d-flex flex-wrap align-items-center justify-content-between w-100 my-2 gap-3\">\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n \n \n </ng-container>\n \n </div>\n \n <div class=\"btn-group view-toggle ms-auto\" role=\"group\" aria-label=\"Toggle view\">\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'grid'}\"\n (click)=\"setViewMode('grid')\" aria-label=\"Grid view\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"3\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'list'}\"\n (click)=\"setViewMode('list')\" aria-label=\"List view\">\n <svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"2\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"8\" y=\"4.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"8\" y=\"12.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"2\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"!imageFlow\">\n <div *ngIf=\"type === 'footfall' && viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\n <li class=\"nav-item cursor-pointer\">\n <a (click)=\"selectedTimes(obj.timeRange)\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\n {{obj?.timeRange}}<span class=\"mx-2\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\n {{ obj?.count ? obj?.count : 0 }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n <div *ngIf=\"noData\" class=\"row\">\n\n <div class=\"col-lg-12 mb-3\">\n\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\nbackground: var(--Gray-50, #F9FAFB);\">\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\n stroke-width=\"13.3333\" />\n <path\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <div class=\"nodata-title my-3\">\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <!-- Split-screen layout (only shown after clicking an image) -->\n <div class=\"split-screen-container\" *ngIf=\"splitScreenEnabled && !noData && !loading\">\n <!-- Left Panel: Thumbnail List + Related Images -->\n <div class=\"left-panel\">\n <!-- Main Images List (hidden when duplicate is selected) -->\n <ng-container *ngIf=\"selectedRadioType !== 'duplicate'\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of listViewGroups\">\n <div class=\"time-range-header\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">#{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': selectImageArray?.templd === obj?.templd}\"\n (click)=\"selectImageForSplitView(obj)\">\n <img class=\"thumbnail-image\" [src]=\"imageUrl + obj?.filePath\"\n (error)=\"obj.filePath = null\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\"\n style=\"height: 120px; padding: 20px;\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd }}</div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme || obj?.entryTime\n }}</div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Related Images Section (ONLY shown when duplicate is selected) -->\n <div class=\"thumbnail-list-section\"\n *ngIf=\"selectedRadioType === 'duplicate' && remainingImagesGroups && remainingImagesGroups.length > 0\">\n <!-- <div class=\"time-range-header\">\n <span class=\"time-range-title\">Select related images</span>\n </div> -->\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of remainingImagesGroups\">\n <div class=\"time-range-header\" style=\"margin-top: 16px;\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">#{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': obj.selected}\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\"\n type=\"checkbox\" [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n style=\"top: 5px; right: 5px; z-index: 2;\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n (click)=\"$event.stopPropagation()\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n <img class=\"thumbnail-image cursor-pointer\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\n alt=\"\" *ngIf=\"obj?.filePath\"\n (click)=\"handleImageClick($event, obj)\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview cursor-pointer\"\n style=\"height: 120px; padding: 20px;\"\n (click)=\"handleImageClick($event, obj)\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd || obj?.tempId }}\n </div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\n obj?.entryTime }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Right Panel: Selected Image Details -->\n <div class=\"right-panel\" *ngIf=\"selectImageArray\">\n <ng-container\n *ngTemplateOutlet=\"imageDetailView; context: { $implicit: selectImageArray }\"></ng-container>\n </div>\n <div class=\"right-panel\" *ngIf=\"!selectImageArray\"\n style=\"display: flex; align-items: center; justify-content: center; color: var(--Gray-500, #667085);\">\n <div style=\"text-align: center;\">\n <p style=\"font-size: 16px; font-weight: 500;\">Select an image to view details</p>\n </div>\n </div>\n </div>\n\n <!-- Image Detail View Template for Split-Screen Right Panel -->\n <ng-template #imageDetailView let-obj>\n <div class=\"border-gray p-3 mb-3\">\n <div class=\"position-relative\">\n <img class=\"img-src1\" [src]=\"imageUrl + obj?.filePath\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <!-- Zoom Icon -->\n <div class=\"zoom-icon-button\" (click)=\"openImageZoomModal(imageUrl, obj)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\n fill=\"none\">\n <path\n d=\"M18.3333 18.3333L15 15M16.6667 9.16667C16.6667 13.3067 13.3067 16.6667 9.16667 16.6667C5.02667 16.6667 1.66667 13.3067 1.66667 9.16667C1.66667 5.02667 5.02667 1.66667 9.16667 1.66667C13.3067 1.66667 16.6667 5.02667 16.6667 9.16667Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M9.16667 6.66667V11.6667M6.66667 9.16667H11.6667\" stroke=\"#475467\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\" style=\"height: 375px;\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the moment.</span>\n </div>\n </div>\n <div class=\"row px-2 mb-2 mt-3\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme || obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\n placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div class=\"border-gray p-3\">\n <div class=\"row mb-3\">\n <div class=\"col-md-6 title-type\">Select non-shopper type</div>\n <div class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"mb-3 text-end d-inline-flex align-items-center gap-2\">\n <!-- Clear Tag Button (visible when Edit button OR Save/Cancel buttons are visible) -->\n <button\n *ngIf=\"!revopsTypeValue || (revopsTypeValue && editBtnShow)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\"\n class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\" type=\"button\"\n (click)=\"clearValue()\">\n <svg width=\"49\" height=\"49\" viewBox=\"0 0 49 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_516_96841)\">\n <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\" rx=\"8.67445\" fill=\"#FEF3F2\" />\n <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\" rx=\"8.13229\" stroke=\"#FEF3F2\"\n stroke-width=\"1.08431\" />\n <path\n d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\n fill=\"#B42318\" />\n <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\" width=\"48.3724\" height=\"48.3655\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\" />\n <feOffset dy=\"1.08431\" />\n <feGaussianBlur stdDeviation=\"1.08431\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_516_96841\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_516_96841\" result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </button>\n <!-- Cancel and Save Buttons (when !revopsTypeValue) -->\n <div *ngIf=\"!revopsTypeValue\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\">Save</button>\n </div>\n <!-- Edit Button (when revopsTypeValue && editBtnShow) -->\n <div *ngIf=\"revopsTypeValue && editBtnShow\">\n <button\n class=\"btn btn-outline me-2\" (click)=\"editValue()\">\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate-split\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee-split\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping-split\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\">Junk</span>\n </label>\n </div>\n <div class=\"mt-3\">\n <label class=\"form-label\">Remarks (Optional)</label>\n <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\"\n [(ngModel)]=\"userComment\"></textarea>\n </div>\n </div>\n </ng-template>\n\n <!-- Grid/List View (shown when split-screen is not enabled) -->\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\"\n *ngIf=\"viewMode === 'grid' && !noData && !loading && !splitScreenEnabled\">\n <ng-container *ngFor=\"let obj of imagesArrayData\">\n <ng-container *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n\n <div class=\"list-view-wrapper\"\n *ngIf=\"viewMode === 'list' && !noData && !loading && !splitScreenEnabled\">\n <div class=\"list-group mb-5\" *ngFor=\"let group of listViewGroups\">\n <div class=\"list-group-header d-flex align-items-center mb-3\">\n <div class=\"group-title\">{{ group?.timeRange }}</div>\n <span class=\"group-count badge badge-light-default ms-2\">\n #{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"row gx-4 list-group-row\">\n <ng-container *ngFor=\"let obj of group?.data\">\n <ng-container\n *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-template #imageCard let-obj>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\n <ng-container>\n <img class=\"img-src cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"selectImageForSplitView(obj)\" />\n </ng-container>\n \n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n \n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span\n *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}\n </span>\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n\n </div>\n </section>\n\n <!-- full image View -->\n <section *ngIf=\"imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n\n </ng-container>\n\n </div>\n\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"position-relative border-gray p-2 \">\n <!-- Main Image -->\n <!-- <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\"> -->\n <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" alt=\"\">\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage ||\n selectImageArray)?.entryTme || (tempModalImage ||\n selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"mx-2 \">\n <div class=\"row\">\n <div class=\"col-md-6 title-type\">\n Select non-shopper type\n </div>\n\n\n <section class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <div\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\n\n <button [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \" class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\" [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \">\n Save\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <ng-container *ngIf=\"editBtnShow\">\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <button\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>Edit</button>\n\n </div>\n </ng-container>\n </div>\n </section>\n\n </div>\n\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate\">\n <span class=\"ms-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\"> House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\"\n (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\"> Junk</span>\n </label>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n\n <img class=\"img-src\"\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"handleImageClick($event, obj)\" />\n\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd :\n obj?.tempId}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme\n :obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </section>\n </div>\n </section>\n</div>\n\n\n<ng-template #zoomPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <g clip-path=\"url(#clip0_2088_98337)\">\n <path\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2088_98337\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\n\n </h5>\n <p class=\"mb-3\">\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\n 'Non-tag'.</span>\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\n\n </p>\n </div>\n\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, Tag\n </button>\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, clear\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #raisedPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span>Raise tickets for the following</span>\n\n </h5>\n <p class=\"mb-3\">\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\n validation.</span>\n\n\n </p>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Duplicates\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Employee\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n House Keeping\n </div>\n </div>\n </div>\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Junk\n </div>\n </div>\n\n </div>\n </div>\n\n <!-- Label and Textarea -->\n <div class=\"my-3\">\n <label class=\"form-label\">Description (Optional)</label>\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\n placeholder=\"Enter description\"></textarea>\n </div>\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\n Raise Ticket\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #imagePopup let-model>\n <div class=\"mx-4\">\n <div class=\"row\">\n <div class=\" p-2 mb-2 mt-5\">\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\n \u25C0\n </button> -->\n\n <!-- Main Image -->\n <!-- <img class=\" cursor-pointer w-100 h-525px\" \n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\"\n appMagnifier alt=\"\"> -->\n <img class=\" cursor-pointer w-100 h-525px\"\n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\n \u25B6\n </button> -->\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\n (tempModalImage || selectImageArray)?.tempId}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage || selectImageArray)?.entryTme ||\n (tempModalImage || selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\n fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\n\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\n\n </div>\n <!-- </div> -->\n </div>\n</ng-template>\n\n<!-- Footfall Trends Template -->\n<ng-template #footfallTrendsTemplate>\n <div class=\"row w-100 mb-3\">\n <!-- Total Footfall Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Footfall</span>\n <svg placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n </div>\n <div class=\"metric-value\">{{ getCurrentFootfall() || 0 }}</div>\n <div class=\"metric-trend\" [ngClass]=\"getFootfallPercentageChange() >= 0 ? 'up' : 'down'\">\n <svg *ngIf=\"getFootfallPercentageChange() >= 0\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 2L10 6H7V10H5V6H2L6 2Z\" fill=\"#10B981\" />\n </svg>\n <svg *ngIf=\"getFootfallPercentageChange() < 0\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 10L2 6H5V2H7V6H10L6 10Z\" fill=\"#F04438\" />\n </svg>\n <span>{{ getFootfallPercentageChange() >= 0 ? '+' : '' }}{{\n getFootfallPercentageChange() }}% vs Yesterday</span>\n </div>\n </div>\n </div>\n <!-- Total Downtime Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Downtime</span>\n <div class=\"downtime-icons\">\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\n fill=\"#667085\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\n fill=\"#F04438\" />\n </svg>\n </div>\n </div>\n </div>\n <div class=\"metric-value\">{{ getFormattedDowntime() || '-' }}</div>\n <!-- <div class=\"metric-tag success\" *ngIf=\"hasDowntime()\"> -->\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.6667 3.5L5.25 9.91667L2.33334 7\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- <span>Issue submitted</span>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.5 2.5L7.5 5.5L10.5 2.5\" stroke=\"#10B981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- </div> -->\n </div>\n </div>\n\n <!-- Ticket Status Card -->\n <div class=\"col-md-4\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <span class=\"metric-title\">Ticket status</span>\n </div>\n <div class=\"metric-value\">{{ getTicketStatus() === '-' ? '-' : (getTicketStatus() |\n titlecase) }}</div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resetRequestPopup let-model>\n <div class=\"p-4\">\n <div class=\"modal-header border-0 p-0 w-100\">\n <h5 class=\"modal-title mb-3 fw-bold\">\n Reset request.\n </h5>\n </div>\n <div class=\"modal-body p-0\">\n <p class=\"text-muted mb-3\">\n You're requesting to re-enable footfall tickets, disabled after three instances of exceeding 95%\n accuracy.\n </p>\n <p class=\"text-muted mb-0\">\n Please ensure future accuracy stays on or within 95%.\n </p>\n </div>\n <div class=\"modal-footer border-0 p-0 mt-4 d-flex justify-content-end gap-2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancelResetRequest()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"submitResetRequest()\">\n Send Request\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #ticketStatusTemplate let-model>\n <!-- Ticket Review Card (shown when ticket status is raised) -->\n <div class=\"col-12 mb-3\" *ngIf=\"(isTicketRaised() || isTicketClosed()) && getTaggingData('tagging')\">\n <div class=\"ticket-review-card\">\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Final revision Card (shown when ticket status is closed) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketClosed() && getTaggingData('finalreview')\">\n <div class=\"ticket-review-card\">\n <!-- Ticket card section in revision start -->\n\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n <!-- Ticket card section in revision end -->\n\n <!-- Final Revision Section -->\n <div class=\"revision-section\">\n <div class=\"revision-title\">Final revision</div>\n <div class=\"final-revision-note\">\n Please reach centraloperations&#64;lenskart.in for any further discrepancies\n </div>\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('finalreview')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('finalreview')?.revicedPerc || 0}}%)\n </span>\n <span class=\"metric-arrow\">\u2191</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('finalreview')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'duplicate') }}\n </div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'employee') }}\n </div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'houseKeeping')\n }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>", styles: ["@charset \"UTF-8\";.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:24%!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.mainheading-1{width:77%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.view-toggle .btn{border-radius:6px}.view-toggle .btn.active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-200, #99DAFF)}.date-list-container{padding:4px 23px;width:100%}.date-list-scroll{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;max-height:287px;overflow-y:auto;overflow-x:hidden;padding-bottom:8px}.date-card{min-width:0;max-width:none;padding:16px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:8px}.date-card:hover{box-shadow:0 2px 8px #0000001a;border-color:#00a3ff}.date-card .date-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.date-card .date-card-header .calendar-icon{flex-shrink:0}.date-card .date-card-header .date-text{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px;flex:1}.date-card .footfall-count{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:4px}.date-card .footfall-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.date-card-active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-600, #00A3FF);border-width:2px}.date-card-active .date-text{color:var(--Primary-700, #009BF3);font-weight:600}.date-card-active .footfall-count{color:var(--Primary-700, #009BF3)}.list-view-wrapper{padding:0 8px 16px;max-height:480px;overflow-y:auto}.list-group{border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;background:#fff;padding:16px 20px}.list-group-header{border-bottom:1px solid var(--Gray-200, #EAECF0);padding-bottom:12px;margin-bottom:16px!important}.list-group-header .group-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.list-group-header .group-count{color:var(--Gray-600, #667085);font-weight:500}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:12px;border:1px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px;object-fit:contain}.zoom-icon-button{position:absolute;top:10px;right:10px;z-index:10;cursor:pointer;background:#fffffff2;border-radius:50%;padding:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:all .2s ease}.zoom-icon-button:hover{background:#fff;box-shadow:0 4px 12px #0003;transform:scale(1.05)}.zoom-icon-button svg{width:20px;height:20px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 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}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}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}::ng-deep .modal-backdrop{pointer-events:none}.meta-change.up{color:#10b981}.meta-change.down{color:#ef4444}.meta-change.neutral{color:#64748b}.split-screen-container{display:flex;height:calc(100vh - 300px);min-height:600px;gap:16px;margin-top:16px}.split-screen-container .left-panel{flex:0 0 35%;max-width:35%;overflow-y:auto;overflow-x:hidden;padding-right:8px;border-right:1px solid var(--Gray-200, #EAECF0)}.split-screen-container .right-panel{flex:1;overflow-y:auto;padding-left:16px}.thumbnail-list-section{margin-bottom:24px}.thumbnail-list-section .time-range-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.thumbnail-list-section .time-range-header .time-range-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.thumbnail-list-section .time-range-header .time-range-count{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);padding:2px 10px;border-radius:16px}.thumbnail-list-section .thumbnail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.thumbnail-list-section .thumbnail-item{cursor:pointer;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:8px;transition:all .2s ease}.thumbnail-list-section .thumbnail-item:hover{border-color:var(--Primary-600, #00A3FF);box-shadow:0 2px 8px #00a3ff1a}.thumbnail-list-section .thumbnail-item.selected{border-color:var(--Primary-600, #00A3FF);border-width:2px;background:var(--Primary-50, #EAF8FF)}.thumbnail-list-section .thumbnail-item .thumbnail-image{width:100%;height:120px;object-fit:cover;border-radius:4px;margin-bottom:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info .tango-id{color:var(--Gray-900, #101828);font-size:12px;font-weight:600;line-height:16px;margin-bottom:4px}.thumbnail-list-section .thumbnail-item .thumbnail-info .entry-time{color:var(--Gray-600, #667085);font-size:11px;font-weight:400;line-height:16px}.metric-card{background:var(--White, #FFF);border-radius:8px;padding:16px;height:100%;display:flex;flex-direction:column;gap:2px}.metric-card .metric-header{display:flex;justify-content:space-between;align-items:center}.metric-card .metric-header .metric-title{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-header .metric-icon,.metric-card .metric-header .footfall-icon-header{flex-shrink:0}.metric-card .metric-header .downtime-icons{position:relative;display:inline-flex;align-items:center;width:31px;height:24px}.metric-card .metric-header .downtime-icons .clock-icon{position:absolute;left:0;top:2px;z-index:1}.metric-card .metric-header .downtime-icons .alert-icon{position:absolute;right:-2px;top:-2px;z-index:2}.metric-card .metric-value{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px}.metric-card .metric-trend{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-trend.up{color:#10b981}.metric-card .metric-trend.down{color:#f04438}.metric-card .metric-trend svg{flex-shrink:0}.metric-card .metric-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:16px;width:fit-content}.metric-card .metric-tag.success{background:#d1fadf;color:#10b981}.metric-card .metric-tag svg{flex-shrink:0}.ticket-review-card{background:var(--White, #FFF);border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);padding:20px;box-shadow:0 1px 3px #0000001a}.ticket-review-card .actual-footfall-header{background:var(--Primary-50, #EAF8FF);border-radius:8px;padding:16px 20px;margin-bottom:20px;display:flex;align-items:center;gap:12px}.ticket-review-card .actual-footfall-header .actual-footfall-number{color:var(--Gray-900, #101828);font-size:32px;font-weight:600;line-height:40px}.ticket-review-card .actual-footfall-header .actual-footfall-label{color:var(--Gray-700, #344054);font-size:16px;font-weight:500;line-height:24px}.ticket-review-card .ticket-creator-section{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .ticket-creator-section .creator-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.ticket-review-card .ticket-creator-section .creator-avatar img{width:100%;height:100%;object-fit:cover}.ticket-review-card .ticket-creator-section .creator-avatar-placeholder{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ticket-review-card .ticket-creator-section .creator-info{flex:1}.ticket-review-card .ticket-creator-section .creator-info .creator-label{color:var(--Gray-600, #667085);font-size:12px;font-weight:400;line-height:18px;margin-bottom:4px}.ticket-review-card .ticket-creator-section .creator-info .creator-details{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-email{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-separator{color:var(--Gray-400, #98A2B3);font-size:14px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-time{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revised-footfall-section .metrics-row{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.ticket-review-card .revised-footfall-section .metrics-row .metric-item{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number{color:var(--Gray-900, #101828);font-size:24px;font-weight:600;line-height:32px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text{color:var(--Primary-700, #009BF3)}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-percentage{font-size:16px;font-weight:500;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-arrow{color:var(--Primary-700, #009BF3);font-size:16px;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revision-section{margin-top:24px;padding-top:24px;border-top:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .revision-section .revision-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px;margin-bottom:16px}.ticket-review-card .revision-section .final-revision-note{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px;margin-bottom:16px;font-style:italic}.ticket-block-alert{border-radius:8px;border:2px dashed #F04438;background:#fee4e2;padding:16px;margin-bottom:16px}.ticket-block-alert .ticket-block-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon svg{width:24px;height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-title{color:#f04438;font-size:16px;font-weight:700;line-height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-description,.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action{color:#f04438;font-size:14px;font-weight:400;line-height:20px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link{color:#f04438;text-decoration:underline;cursor:pointer;font-weight:500}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link:hover{color:#d92d20;text-decoration:underline}.ticket-request-alert{border-radius:8px;border:2px dashed #10B981;background:#d1fae5;padding:16px;margin-bottom:16px}.ticket-request-alert .ticket-request-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon svg{width:24px;height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-title{color:#10b981;font-size:16px;font-weight:700;line-height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-description{color:#10b981;font-size:14px;font-weight:400;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
1313
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImgRvpsComponent, selector: "lib-img-rvps", viewQueries: [{ propertyName: "zoomPopup", first: true, predicate: ["zoomPopup"], descendants: true }, { propertyName: "raisedPopup", first: true, predicate: ["raisedPopup"], descendants: true }, { propertyName: "resetRequestPopup", first: true, predicate: ["resetRequestPopup"], descendants: true }, { propertyName: "imagePopup", first: true, predicate: ["imagePopup"], descendants: true }], ngImport: i0, template: "<div class=\"card mt-3\">\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\n <div class=\"custom-accordion\">\n <div class=\"custom-accordion-item\">\n <!-- for new navigation changes -->\n <!-- old view while folder view -->\n <button *ngIf=\"folderView\" class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\n <div class=\"header-row\">\n <span class=\"img-direc\" style=\"padding-left: 40px;\">Image Directory</span>\n\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </button>\n <!-- new view while not in folder view view -->\n <div *ngIf=\"!folderView\" class=\"header-row\">\n <span *ngIf=\"backnav && !imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <!-- back from image flow -->\n <span *ngIf=\"imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <span class=\"img-direc\">Image Directory | {{folderDate | date:'dd MMM, yyyy'}}</span>\n <button *ngIf=\"!folderView\" class=\"mainheading-1 pb-0 custom-accordion-header\"\n (click)=\"toggleAccordion()\">\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <section *ngIf=\"isAccordionExpanded\">\n\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\n <div class=\"date-list-container\">\n <div class=\"date-list-scroll\">\n <div class=\"date-card\" *ngFor=\"let obj of dateArray; let i = index\"\n [ngClass]=\"{'date-card-active': i === selectIndex}\" (click)=\"getimages(i, obj)\">\n <div class=\"date-card-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"calendar-icon\">\n <path\n d=\"M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6H12.6667V13.3333Z\"\n fill=\"#667085\" />\n </svg>\n <span class=\"date-text\">{{obj | date:'dd MMM'}}</span>\n <span *ngIf=\"cardDataMap[obj]?.ticketStatusLower as status\" class=\"badge ms-2\" [ngClass]=\"{\n 'badge-light-success': status === 'closed',\n 'badge-light-warning': status === 'raised',\n 'badge-light-default': status !== 'closed' && status !== 'raised'\n }\">\n {{ status === 'closed' ? 'Ticket closed' : (status === 'raised' ? 'Ticket raised' :\n (cardDataMap[obj]?.ticketStatus || '')) }}\n </span>\n </div>\n <div class=\"footfall-count\">{{ cardDataMap[obj]?.footfallCount || 0 }}</div>\n <div class=\"footfall-label\">Total footfall</div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"!folderView\" class=\"card-body\">\n <section *ngIf=\"!imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- footfall trends feature -->\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <!-- footfall trends feature end -->\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <!-- <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span> -->\n <!-- <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}\n <span class=\"badge badge-light-warning mx-2\"\n *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\n Ticket Raised\n </span>\n <span class=\"badge badge-light-success mx-2\"\n *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\n\n </span> -->\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div *ngIf=\"!folderView\" class=\"d-flex flex-wrap align-items-center justify-content-between w-100 my-2 gap-3\">\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n \n \n </ng-container>\n \n </div>\n \n <div class=\"btn-group view-toggle ms-auto\" role=\"group\" aria-label=\"Toggle view\">\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'grid'}\"\n (click)=\"setViewMode('grid')\" aria-label=\"Grid view\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"3\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'list'}\"\n (click)=\"setViewMode('list')\" aria-label=\"List view\">\n <svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"2\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"8\" y=\"4.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"8\" y=\"12.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"2\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"!imageFlow\">\n <div *ngIf=\"type === 'footfall' && viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\n <li class=\"nav-item cursor-pointer\">\n <a (click)=\"selectedTimes(obj.timeRange)\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\n {{obj?.timeRange}}<span class=\"mx-2\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\n {{ obj?.count ? obj?.count : 0 }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n <div *ngIf=\"noData\" class=\"row\">\n\n <div class=\"col-lg-12 mb-3\">\n\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\nbackground: var(--Gray-50, #F9FAFB);\">\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\n stroke-width=\"13.3333\" />\n <path\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <div class=\"nodata-title my-3\">\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <!-- Split-screen layout (only shown after clicking an image) -->\n <div class=\"split-screen-container\" *ngIf=\"splitScreenEnabled && !noData && !loading\">\n <!-- Left Panel: Thumbnail List + Related Images -->\n <div class=\"left-panel\">\n <!-- Main Images List (hidden when duplicate is selected) -->\n <ng-container *ngIf=\"selectedRadioType !== 'duplicate'\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of listViewGroups\">\n <div class=\"time-range-header\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': selectImageArray?.templd === obj?.templd}\"\n (click)=\"selectImageForSplitView(obj)\">\n <img class=\"thumbnail-image\" [src]=\"imageUrl + obj?.filePath\"\n (error)=\"obj.filePath = null\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\"\n style=\"height: 120px; padding: 20px;\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd }}</div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme || obj?.entryTime}}</div>\n <!-- left panel image logo -->\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Related Images Section (ONLY shown when duplicate is selected) -->\n <div class=\"thumbnail-list-section\"\n *ngIf=\"selectedRadioType === 'duplicate' && remainingImagesGroups && remainingImagesGroups.length > 0\">\n <!-- <div class=\"time-range-header\">\n <span class=\"time-range-title\">Select related images</span>\n </div> -->\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of remainingImagesGroups\">\n <div class=\"time-range-header\" style=\"margin-top: 16px;\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">#{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\" [ngClass]=\"{'selected': obj.selected}\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\" class=\"position-absolute absolute form-check-input cursor-pointer\"\n style=\"top: 5px; right: 5px; z-index: 2;\" (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n (click)=\"$event.stopPropagation()\" [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n <img class=\"thumbnail-image cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\n alt=\"\" *ngIf=\"obj?.filePath\" (click)=\"handleImageClick($event, obj)\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview cursor-pointer\" style=\"height: 120px; padding: 20px;\"\n (click)=\"handleImageClick($event, obj)\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd || obj?.tempId }}\n </div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\n obj?.entryTime }}</div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Right Panel: Selected Image Details -->\n <div class=\"right-panel\" *ngIf=\"selectImageArray\">\n <ng-container\n *ngTemplateOutlet=\"imageDetailView; context: { $implicit: selectImageArray }\"></ng-container>\n </div>\n <div class=\"right-panel\" *ngIf=\"!selectImageArray\"\n style=\"display: flex; align-items: center; justify-content: center; color: var(--Gray-500, #667085);\">\n <div style=\"text-align: center;\">\n <p style=\"font-size: 16px; font-weight: 500;\">Select an image to view details</p>\n </div>\n </div>\n </div>\n\n <!-- Image Detail View Template for Split-Screen Right Panel -->\n <ng-template #imageDetailView let-obj>\n <div class=\"border-gray p-3 mb-3\">\n <div class=\"position-relative\">\n <img class=\"img-src1\" [src]=\"imageUrl + obj?.filePath\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <!-- Zoom Icon -->\n <div class=\"zoom-icon-button\" (click)=\"openImageZoomModal(imageUrl, obj)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\n fill=\"none\">\n <path\n d=\"M18.3333 18.3333L15 15M16.6667 9.16667C16.6667 13.3067 13.3067 16.6667 9.16667 16.6667C5.02667 16.6667 1.66667 13.3067 1.66667 9.16667C1.66667 5.02667 5.02667 1.66667 9.16667 1.66667C13.3067 1.66667 16.6667 5.02667 16.6667 9.16667Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M9.16667 6.66667V11.6667M6.66667 9.16667H11.6667\" stroke=\"#475467\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\" style=\"height: 375px;\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the moment.</span>\n </div>\n </div>\n <div class=\"row px-2 mb-2 mt-3\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme || obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\n placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div class=\"border-gray p-3\">\n <div class=\"row mb-3\">\n <div class=\"col-md-6 title-type\">Select non-shopper type</div>\n <div class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"mb-3 text-end d-inline-flex align-items-center gap-2\">\n <!-- Clear Tag Button (visible when Edit button OR Save/Cancel buttons are visible) -->\n <button\n *ngIf=\"!revopsTypeValue || (revopsTypeValue && editBtnShow)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\"\n class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\" type=\"button\"\n (click)=\"clearValue()\">\n <svg width=\"49\" height=\"49\" viewBox=\"0 0 49 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_516_96841)\">\n <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\" rx=\"8.67445\" fill=\"#FEF3F2\" />\n <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\" rx=\"8.13229\" stroke=\"#FEF3F2\"\n stroke-width=\"1.08431\" />\n <path\n d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\n fill=\"#B42318\" />\n <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\" width=\"48.3724\" height=\"48.3655\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\" />\n <feOffset dy=\"1.08431\" />\n <feGaussianBlur stdDeviation=\"1.08431\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_516_96841\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_516_96841\" result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </button>\n <!-- Cancel and Save Buttons (when !revopsTypeValue) -->\n <div *ngIf=\"!revopsTypeValue\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\">Save</button>\n </div>\n <!-- Edit Button (when revopsTypeValue && editBtnShow) -->\n <div *ngIf=\"revopsTypeValue && editBtnShow\">\n <button\n class=\"btn btn-outline me-2\" (click)=\"editValue()\">\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate-split\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee-split\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping-split\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\">Junk</span>\n </label>\n </div>\n <div class=\"mt-3\">\n <label class=\"form-label\">Remarks (Optional)</label>\n <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\"\n [(ngModel)]=\"userComment\"></textarea>\n </div>\n </div>\n </ng-template>\n\n <!-- Grid/List View (shown when split-screen is not enabled) -->\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\"\n *ngIf=\"viewMode === 'grid' && !noData && !loading && !splitScreenEnabled\">\n <ng-container *ngFor=\"let obj of imagesArrayData\">\n <ng-container *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n\n <div class=\"list-view-wrapper\"\n *ngIf=\"viewMode === 'list' && !noData && !loading && !splitScreenEnabled\">\n <div class=\"list-group mb-5\" *ngFor=\"let group of listViewGroups\">\n <div class=\"list-group-header d-flex align-items-center mb-3\">\n <div class=\"group-title\">{{ group?.timeRange }}</div>\n <span class=\"group-count badge badge-light-default ms-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"row gx-4 list-group-row\">\n <ng-container *ngFor=\"let obj of group?.data\">\n <ng-container\n *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-template #imageCard let-obj>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\n <ng-container>\n <img class=\"img-src cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"selectImageForSplitView(obj)\" />\n </ng-container>\n \n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n \n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span\n *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}\n </span>\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n\n </div>\n </section>\n\n <!-- full image View -->\n <section *ngIf=\"imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n {{getTicketStatus()}}\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n\n </ng-container>\n\n </div>\n\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"position-relative border-gray p-2 \">\n <!-- Main Image -->\n <!-- <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\"> -->\n <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" alt=\"\">\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage ||\n selectImageArray)?.entryTme || (tempModalImage ||\n selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"mx-2 \">\n <div class=\"row\">\n <div class=\"col-md-6 title-type\">\n Select non-shopper type\n </div>\n\n\n <section class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <div\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\n\n <button [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \" class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\" [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \">\n Save\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <ng-container *ngIf=\"editBtnShow\">\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <button\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>Edit</button>\n\n </div>\n </ng-container>\n </div>\n </section>\n\n </div>\n\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate\">\n <span class=\"ms-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\"> House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\"\n (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\"> Junk</span>\n </label>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n\n <img class=\"img-src\"\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"handleImageClick($event, obj)\" />\n\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd :\n obj?.tempId}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme\n :obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </section>\n </div>\n </section>\n</div>\n\n\n<ng-template #zoomPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <g clip-path=\"url(#clip0_2088_98337)\">\n <path\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2088_98337\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\n\n </h5>\n <p class=\"mb-3\">\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\n 'Non-tag'.</span>\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\n\n </p>\n </div>\n\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, Tag\n </button>\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, clear\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #raisedPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span>Raise tickets for the following</span>\n\n </h5>\n <p class=\"mb-3\">\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\n validation.</span>\n\n\n </p>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Duplicates\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Employee\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n House Keeping\n </div>\n </div>\n </div>\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Junk\n </div>\n </div>\n\n </div>\n </div>\n\n <!-- Label and Textarea -->\n <div class=\"my-3\">\n <label class=\"form-label\">Description (Optional)</label>\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\n placeholder=\"Enter description\"></textarea>\n </div>\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\n Raise Ticket\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #imagePopup let-model>\n <div class=\"mx-4\">\n <div class=\"row\">\n <div class=\" p-2 mb-2 mt-5\">\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\n \u25C0\n </button> -->\n\n <!-- Main Image -->\n <!-- <img class=\" cursor-pointer w-100 h-525px\" \n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\"\n appMagnifier alt=\"\"> -->\n <img class=\" cursor-pointer w-100 h-525px\"\n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\n \u25B6\n </button> -->\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\n (tempModalImage || selectImageArray)?.tempId}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage || selectImageArray)?.entryTme ||\n (tempModalImage || selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\n fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\n\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\n\n </div>\n <!-- </div> -->\n </div>\n</ng-template>\n\n<!-- Footfall Trends Template -->\n<ng-template #footfallTrendsTemplate>\n <div class=\"row w-100 mb-3\">\n <!-- Total Footfall Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Footfall</span>\n <svg placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n </div>\n <div class=\"metric-value\">{{ getCurrentFootfall() || 0 }}</div>\n <!-- [ngClass]=\"getFootfallPercentageChange() >= 0 ? 'up' : 'down'\" -->\n <div class=\"metric-trend\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.3327 3.99998L8.99935 10.3333L5.66602 6.99998L0.666016 12M15.3327 3.99998H11.3327M15.3327 3.99998V7.99998\"\n stroke=\"#039855\" stroke-width=\"1.18681\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span style=\"color: #10B981\">{{getFootfallPercentageChange() }}% </span><span>vs Yesterday</span>\n </div>\n </div>\n </div>\n <!-- Total Downtime Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Downtime</span>\n <div class=\"downtime-icons\">\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\n fill=\"#667085\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\n fill=\"#F04438\" />\n </svg>\n </div>\n </div>\n </div>\n <div class=\"metric-value\">{{ getFormattedDowntime() || '-' }}</div>\n <!-- <div class=\"metric-tag success\" *ngIf=\"hasDowntime()\"> -->\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.6667 3.5L5.25 9.91667L2.33334 7\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- <span>Issue submitted</span>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.5 2.5L7.5 5.5L10.5 2.5\" stroke=\"#10B981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- </div> -->\n </div>\n </div>\n\n <!-- Ticket Status Card -->\n <div class=\"col-md-4\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <span class=\"metric-title\">Ticket status</span>\n </div>\n <div class=\"metric-value\" \n [ngClass]=\"{\n 'ticket-status-raised': getTicketStatus()?.toLowerCase() === 'raised',\n 'ticket-status-closed': getTicketStatus()?.toLowerCase() === 'close'\n }\">\n {{ getTicketStatus() === '-' ? '-' : (getTicketStatus() | titlecase) }}\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resetRequestPopup let-model>\n <div class=\"p-4\">\n <div class=\"modal-header border-0 p-0 w-100\">\n <h5 class=\"modal-title mb-3 fw-bold\">\n Reset request.\n </h5>\n </div>\n <div class=\"modal-body p-0\">\n <p class=\"text-muted mb-3\">\n You're requesting to re-enable footfall tickets, disabled after three instances of exceeding 95%\n accuracy.\n </p>\n <p class=\"text-muted mb-0\">\n Please ensure future accuracy stays on or within 95%.\n </p>\n </div>\n <div class=\"modal-footer border-0 p-0 mt-4 d-flex justify-content-end gap-2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancelResetRequest()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"submitResetRequest()\">\n Send Request\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #ticketStatusTemplate let-model>\n <!-- Ticket Review Card (shown when ticket status is raised) -->\n <div class=\"col-12 mb-3\" *ngIf=\"(isTicketRaised() || isTicketClosed()) && getTaggingData('tagging')\">\n <div class=\"ticket-review-card\">\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Final revision Card (shown when ticket status is closed) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketClosed() && getTaggingData('finalreview')\">\n <div class=\"ticket-review-card\">\n <!-- Ticket card section in revision start -->\n\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n <!-- Ticket card section in revision end -->\n\n <!-- Final Revision Section -->\n <div class=\"revision-section\">\n <div class=\"revision-title\">Final revision</div>\n <div class=\"final-revision-note\">\n Please reach centraloperations&#64;lenskart.in for any further discrepancies\n </div>\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('finalreview')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('finalreview')?.revicedPerc || 0}}%)\n </span>\n <span class=\"metric-arrow\">\u2191</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('finalreview')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'duplicate') }}\n </div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'employee') }}\n </div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'houseKeeping')\n }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>", styles: ["@charset \"UTF-8\";.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:24%!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.mainheading-1{width:77%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.view-toggle .btn{border-radius:6px}.view-toggle .btn.active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-200, #99DAFF)}.date-list-container{padding:4px 23px;width:100%}.date-list-scroll{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;max-height:287px;overflow-y:auto;overflow-x:hidden;padding-bottom:8px}.date-card{min-width:0;max-width:none;padding:16px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:8px}.date-card:hover{box-shadow:0 2px 8px #0000001a;border-color:#00a3ff}.date-card .date-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.date-card .date-card-header .calendar-icon{flex-shrink:0}.date-card .date-card-header .date-text{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px;flex:1}.date-card .footfall-count{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:4px}.date-card .footfall-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.date-card-active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-600, #00A3FF);border-width:2px}.date-card-active .date-text{color:var(--Primary-700, #009BF3);font-weight:600}.date-card-active .footfall-count{color:var(--Primary-700, #009BF3)}.list-view-wrapper{padding:0 8px 16px;max-height:480px;overflow-y:auto}.list-group{border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;background:#fff;padding:16px 20px}.list-group-header{border-bottom:1px solid var(--Gray-200, #EAECF0);padding-bottom:12px;margin-bottom:16px!important}.list-group-header .group-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.list-group-header .group-count{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-weight:600;padding:4px 10px!important;border-radius:12px!important;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.list-group-header .group-count svg{flex-shrink:0;display:block}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:12px;border:1px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px;object-fit:contain}.zoom-icon-button{position:absolute;top:10px;right:10px;z-index:10;cursor:pointer;background:#fffffff2;border-radius:50%;padding:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:all .2s ease}.zoom-icon-button:hover{background:#fff;box-shadow:0 4px 12px #0003;transform:scale(1.05)}.zoom-icon-button svg{width:20px;height:20px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 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}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}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}::ng-deep .modal-backdrop{pointer-events:none}.meta-change.up{color:#10b981}.meta-change.down{color:#ef4444}.meta-change.neutral{color:#64748b}.split-screen-container{display:flex;height:calc(100vh - 300px);min-height:600px;gap:16px;margin-top:16px}.split-screen-container .left-panel{flex:0 0 35%;max-width:35%;overflow-y:auto;overflow-x:hidden;padding-right:8px;border-right:1px solid var(--Gray-200, #EAECF0)}.split-screen-container .right-panel{flex:1;overflow-y:auto;padding-left:16px}.thumbnail-list-section{margin-bottom:24px}.thumbnail-list-section .time-range-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.thumbnail-list-section .time-range-header .time-range-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.thumbnail-list-section .time-range-header .time-range-count{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);padding:2px 10px;border-radius:16px}.thumbnail-list-section .thumbnail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.thumbnail-list-section .thumbnail-item{cursor:pointer;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:8px;transition:all .2s ease}.thumbnail-list-section .thumbnail-item:hover{border-color:var(--Primary-600, #00A3FF);box-shadow:0 2px 8px #00a3ff1a}.thumbnail-list-section .thumbnail-item.selected{border-color:var(--Primary-600, #00A3FF);border-width:2px;background:var(--Primary-50, #EAF8FF)}.thumbnail-list-section .thumbnail-item .thumbnail-image{width:100%;height:120px;object-fit:cover;border-radius:4px;margin-bottom:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info{display:grid;grid-template-columns:1fr auto;align-items:flex-start;gap:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info .tango-id{color:var(--Gray-900, #101828);font-size:12px;font-weight:600;line-height:16px;margin-bottom:4px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .entry-time{color:var(--Gray-600, #667085);font-size:11px;font-weight:400;line-height:16px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5{grid-column:2;grid-row:1/-1;display:flex;align-items:center;justify-content:flex-end;padding:0!important;margin:0!important}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5 svg{display:block}.metric-card{background:var(--White, #FFF);border-radius:8px;padding:16px;height:100%;display:flex;flex-direction:column;gap:2px}.metric-card .metric-header{display:flex;justify-content:space-between;align-items:center}.metric-card .metric-header .metric-title{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-header .metric-icon,.metric-card .metric-header .footfall-icon-header{flex-shrink:0}.metric-card .metric-header .downtime-icons{position:relative;display:inline-flex;align-items:center;width:31px;height:24px}.metric-card .metric-header .downtime-icons .clock-icon{position:absolute;left:0;top:2px;z-index:1}.metric-card .metric-header .downtime-icons .alert-icon{position:absolute;right:-2px;top:-2px;z-index:2}.metric-card .metric-value{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px}.metric-card .metric-value.ticket-status-raised{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#fef3c7;color:#92400e;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-value.ticket-status-closed{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#d1fae5;color:#10b981;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-trend{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-trend.up{color:#10b981}.metric-card .metric-trend.down{color:#f04438}.metric-card .metric-trend svg{flex-shrink:0}.metric-card .metric-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:16px;width:fit-content}.metric-card .metric-tag.success{background:#d1fadf;color:#10b981}.metric-card .metric-tag svg{flex-shrink:0}.ticket-review-card{background:var(--White, #FFF);border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);padding:20px;box-shadow:0 1px 3px #0000001a}.ticket-review-card .actual-footfall-header{background:var(--Primary-50, #EAF8FF);border-radius:8px;padding:16px 20px;margin-bottom:20px;display:flex;align-items:center;gap:12px}.ticket-review-card .actual-footfall-header .actual-footfall-number{color:var(--Gray-900, #101828);font-size:32px;font-weight:600;line-height:40px}.ticket-review-card .actual-footfall-header .actual-footfall-label{color:var(--Gray-700, #344054);font-size:16px;font-weight:500;line-height:24px}.ticket-review-card .ticket-creator-section{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .ticket-creator-section .creator-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.ticket-review-card .ticket-creator-section .creator-avatar img{width:100%;height:100%;object-fit:cover}.ticket-review-card .ticket-creator-section .creator-avatar-placeholder{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ticket-review-card .ticket-creator-section .creator-info{flex:1}.ticket-review-card .ticket-creator-section .creator-info .creator-label{color:var(--Gray-600, #667085);font-size:12px;font-weight:400;line-height:18px;margin-bottom:4px}.ticket-review-card .ticket-creator-section .creator-info .creator-details{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-email{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-separator{color:var(--Gray-400, #98A2B3);font-size:14px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-time{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revised-footfall-section .metrics-row{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.ticket-review-card .revised-footfall-section .metrics-row .metric-item{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number{color:var(--Gray-900, #101828);font-size:24px;font-weight:600;line-height:32px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text{color:var(--Primary-700, #009BF3)}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-percentage{font-size:16px;font-weight:500;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-arrow{color:var(--Primary-700, #009BF3);font-size:16px;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revision-section{margin-top:24px;padding-top:24px;border-top:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .revision-section .revision-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px;margin-bottom:16px}.ticket-review-card .revision-section .final-revision-note{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px;margin-bottom:16px;font-style:italic}.ticket-block-alert{border-radius:8px;border:2px dashed #F04438;background:#fee4e2;padding:16px;margin-bottom:16px}.ticket-block-alert .ticket-block-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon svg{width:24px;height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-title{color:#f04438;font-size:16px;font-weight:700;line-height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-description,.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action{color:#f04438;font-size:14px;font-weight:400;line-height:20px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link{color:#f04438;text-decoration:underline;cursor:pointer;font-weight:500}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link:hover{color:#d92d20;text-decoration:underline}.ticket-request-alert{border-radius:8px;border:2px dashed #10B981;background:#d1fae5;padding:16px;margin-bottom:16px}.ticket-request-alert .ticket-request-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon svg{width:24px;height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-title{color:#10b981;font-size:16px;font-weight:700;line-height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-description{color:#10b981;font-size:14px;font-weight:400;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
1313
1314
  }
1314
1315
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImgRvpsComponent, decorators: [{
1315
1316
  type: Component,
1316
- args: [{ selector: "lib-img-rvps", template: "<div class=\"card mt-3\">\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\n <div class=\"custom-accordion\">\n <div class=\"custom-accordion-item\">\n <!-- for new navigation changes -->\n <!-- old view while folder view -->\n <button *ngIf=\"folderView\" class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\n <div class=\"header-row\">\n <span class=\"img-direc\">Image Directory</span>\n\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </button>\n <!-- new view while not in folder view view -->\n <div *ngIf=\"!folderView\" class=\"header-row\">\n <span *ngIf=\"backnav && !imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <!-- back from image flow -->\n <span *ngIf=\"imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <span class=\"img-direc\">Image Directory | {{folderDate | date:'dd MMM, yyyy'}}</span>\n <button *ngIf=\"!folderView\" class=\"mainheading-1 pb-0 custom-accordion-header\"\n (click)=\"toggleAccordion()\">\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <section *ngIf=\"isAccordionExpanded\">\n\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\n <div class=\"date-list-container\">\n <div class=\"date-list-scroll\">\n <div class=\"date-card\" *ngFor=\"let obj of dateArray; let i = index\"\n [ngClass]=\"{'date-card-active': i === selectIndex}\" (click)=\"getimages(i, obj)\">\n <div class=\"date-card-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"calendar-icon\">\n <path\n d=\"M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6H12.6667V13.3333Z\"\n fill=\"#667085\" />\n </svg>\n <span class=\"date-text\">{{obj | date:'dd MMM'}}</span>\n <span *ngIf=\"cardDataMap[obj]?.ticketStatusLower as status\" class=\"badge ms-2\" [ngClass]=\"{\n 'badge-light-success': status === 'closed',\n 'badge-light-warning': status === 'raised',\n 'badge-light-default': status !== 'closed' && status !== 'raised'\n }\">\n {{ status === 'closed' ? 'Ticket closed' : (status === 'raised' ? 'Ticket raised' :\n (cardDataMap[obj]?.ticketStatus || '')) }}\n </span>\n </div>\n <div class=\"footfall-count\">{{ cardDataMap[obj]?.footfallCount || 0 }}</div>\n <div class=\"footfall-label\">Total footfall</div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"!folderView\" class=\"card-body\">\n <section *ngIf=\"!imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- footfall trends feature -->\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <!-- footfall trends feature end -->\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <!-- <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span> -->\n <!-- <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}\n <span class=\"badge badge-light-warning mx-2\"\n *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\n Ticket Raised\n </span>\n <span class=\"badge badge-light-success mx-2\"\n *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\n\n </span> -->\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div *ngIf=\"!folderView\" class=\"d-flex flex-wrap align-items-center justify-content-between w-100 my-2 gap-3\">\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n \n \n </ng-container>\n \n </div>\n \n <div class=\"btn-group view-toggle ms-auto\" role=\"group\" aria-label=\"Toggle view\">\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'grid'}\"\n (click)=\"setViewMode('grid')\" aria-label=\"Grid view\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"3\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'list'}\"\n (click)=\"setViewMode('list')\" aria-label=\"List view\">\n <svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"2\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"8\" y=\"4.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"8\" y=\"12.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"2\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"!imageFlow\">\n <div *ngIf=\"type === 'footfall' && viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\n <li class=\"nav-item cursor-pointer\">\n <a (click)=\"selectedTimes(obj.timeRange)\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\n {{obj?.timeRange}}<span class=\"mx-2\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\n {{ obj?.count ? obj?.count : 0 }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n <div *ngIf=\"noData\" class=\"row\">\n\n <div class=\"col-lg-12 mb-3\">\n\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\nbackground: var(--Gray-50, #F9FAFB);\">\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\n stroke-width=\"13.3333\" />\n <path\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <div class=\"nodata-title my-3\">\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <!-- Split-screen layout (only shown after clicking an image) -->\n <div class=\"split-screen-container\" *ngIf=\"splitScreenEnabled && !noData && !loading\">\n <!-- Left Panel: Thumbnail List + Related Images -->\n <div class=\"left-panel\">\n <!-- Main Images List (hidden when duplicate is selected) -->\n <ng-container *ngIf=\"selectedRadioType !== 'duplicate'\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of listViewGroups\">\n <div class=\"time-range-header\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">#{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': selectImageArray?.templd === obj?.templd}\"\n (click)=\"selectImageForSplitView(obj)\">\n <img class=\"thumbnail-image\" [src]=\"imageUrl + obj?.filePath\"\n (error)=\"obj.filePath = null\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\"\n style=\"height: 120px; padding: 20px;\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd }}</div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme || obj?.entryTime\n }}</div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Related Images Section (ONLY shown when duplicate is selected) -->\n <div class=\"thumbnail-list-section\"\n *ngIf=\"selectedRadioType === 'duplicate' && remainingImagesGroups && remainingImagesGroups.length > 0\">\n <!-- <div class=\"time-range-header\">\n <span class=\"time-range-title\">Select related images</span>\n </div> -->\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of remainingImagesGroups\">\n <div class=\"time-range-header\" style=\"margin-top: 16px;\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">#{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': obj.selected}\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\"\n type=\"checkbox\" [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n style=\"top: 5px; right: 5px; z-index: 2;\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n (click)=\"$event.stopPropagation()\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n <img class=\"thumbnail-image cursor-pointer\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\n alt=\"\" *ngIf=\"obj?.filePath\"\n (click)=\"handleImageClick($event, obj)\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview cursor-pointer\"\n style=\"height: 120px; padding: 20px;\"\n (click)=\"handleImageClick($event, obj)\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd || obj?.tempId }}\n </div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\n obj?.entryTime }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Right Panel: Selected Image Details -->\n <div class=\"right-panel\" *ngIf=\"selectImageArray\">\n <ng-container\n *ngTemplateOutlet=\"imageDetailView; context: { $implicit: selectImageArray }\"></ng-container>\n </div>\n <div class=\"right-panel\" *ngIf=\"!selectImageArray\"\n style=\"display: flex; align-items: center; justify-content: center; color: var(--Gray-500, #667085);\">\n <div style=\"text-align: center;\">\n <p style=\"font-size: 16px; font-weight: 500;\">Select an image to view details</p>\n </div>\n </div>\n </div>\n\n <!-- Image Detail View Template for Split-Screen Right Panel -->\n <ng-template #imageDetailView let-obj>\n <div class=\"border-gray p-3 mb-3\">\n <div class=\"position-relative\">\n <img class=\"img-src1\" [src]=\"imageUrl + obj?.filePath\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <!-- Zoom Icon -->\n <div class=\"zoom-icon-button\" (click)=\"openImageZoomModal(imageUrl, obj)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\n fill=\"none\">\n <path\n d=\"M18.3333 18.3333L15 15M16.6667 9.16667C16.6667 13.3067 13.3067 16.6667 9.16667 16.6667C5.02667 16.6667 1.66667 13.3067 1.66667 9.16667C1.66667 5.02667 5.02667 1.66667 9.16667 1.66667C13.3067 1.66667 16.6667 5.02667 16.6667 9.16667Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M9.16667 6.66667V11.6667M6.66667 9.16667H11.6667\" stroke=\"#475467\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\" style=\"height: 375px;\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the moment.</span>\n </div>\n </div>\n <div class=\"row px-2 mb-2 mt-3\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme || obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\n placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div class=\"border-gray p-3\">\n <div class=\"row mb-3\">\n <div class=\"col-md-6 title-type\">Select non-shopper type</div>\n <div class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"mb-3 text-end d-inline-flex align-items-center gap-2\">\n <!-- Clear Tag Button (visible when Edit button OR Save/Cancel buttons are visible) -->\n <button\n *ngIf=\"!revopsTypeValue || (revopsTypeValue && editBtnShow)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\"\n class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\" type=\"button\"\n (click)=\"clearValue()\">\n <svg width=\"49\" height=\"49\" viewBox=\"0 0 49 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_516_96841)\">\n <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\" rx=\"8.67445\" fill=\"#FEF3F2\" />\n <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\" rx=\"8.13229\" stroke=\"#FEF3F2\"\n stroke-width=\"1.08431\" />\n <path\n d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\n fill=\"#B42318\" />\n <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\" width=\"48.3724\" height=\"48.3655\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\" />\n <feOffset dy=\"1.08431\" />\n <feGaussianBlur stdDeviation=\"1.08431\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_516_96841\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_516_96841\" result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </button>\n <!-- Cancel and Save Buttons (when !revopsTypeValue) -->\n <div *ngIf=\"!revopsTypeValue\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\">Save</button>\n </div>\n <!-- Edit Button (when revopsTypeValue && editBtnShow) -->\n <div *ngIf=\"revopsTypeValue && editBtnShow\">\n <button\n class=\"btn btn-outline me-2\" (click)=\"editValue()\">\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate-split\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee-split\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping-split\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\">Junk</span>\n </label>\n </div>\n <div class=\"mt-3\">\n <label class=\"form-label\">Remarks (Optional)</label>\n <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\"\n [(ngModel)]=\"userComment\"></textarea>\n </div>\n </div>\n </ng-template>\n\n <!-- Grid/List View (shown when split-screen is not enabled) -->\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\"\n *ngIf=\"viewMode === 'grid' && !noData && !loading && !splitScreenEnabled\">\n <ng-container *ngFor=\"let obj of imagesArrayData\">\n <ng-container *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n\n <div class=\"list-view-wrapper\"\n *ngIf=\"viewMode === 'list' && !noData && !loading && !splitScreenEnabled\">\n <div class=\"list-group mb-5\" *ngFor=\"let group of listViewGroups\">\n <div class=\"list-group-header d-flex align-items-center mb-3\">\n <div class=\"group-title\">{{ group?.timeRange }}</div>\n <span class=\"group-count badge badge-light-default ms-2\">\n #{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"row gx-4 list-group-row\">\n <ng-container *ngFor=\"let obj of group?.data\">\n <ng-container\n *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-template #imageCard let-obj>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\n <ng-container>\n <img class=\"img-src cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"selectImageForSplitView(obj)\" />\n </ng-container>\n \n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n \n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span\n *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}\n </span>\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n\n </div>\n </section>\n\n <!-- full image View -->\n <section *ngIf=\"imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n\n </ng-container>\n\n </div>\n\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"position-relative border-gray p-2 \">\n <!-- Main Image -->\n <!-- <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\"> -->\n <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" alt=\"\">\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage ||\n selectImageArray)?.entryTme || (tempModalImage ||\n selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"mx-2 \">\n <div class=\"row\">\n <div class=\"col-md-6 title-type\">\n Select non-shopper type\n </div>\n\n\n <section class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <div\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\n\n <button [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \" class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\" [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \">\n Save\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <ng-container *ngIf=\"editBtnShow\">\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <button\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>Edit</button>\n\n </div>\n </ng-container>\n </div>\n </section>\n\n </div>\n\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate\">\n <span class=\"ms-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\"> House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\"\n (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\"> Junk</span>\n </label>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n\n <img class=\"img-src\"\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"handleImageClick($event, obj)\" />\n\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd :\n obj?.tempId}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme\n :obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </section>\n </div>\n </section>\n</div>\n\n\n<ng-template #zoomPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <g clip-path=\"url(#clip0_2088_98337)\">\n <path\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2088_98337\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\n\n </h5>\n <p class=\"mb-3\">\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\n 'Non-tag'.</span>\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\n\n </p>\n </div>\n\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, Tag\n </button>\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, clear\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #raisedPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span>Raise tickets for the following</span>\n\n </h5>\n <p class=\"mb-3\">\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\n validation.</span>\n\n\n </p>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Duplicates\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Employee\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n House Keeping\n </div>\n </div>\n </div>\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Junk\n </div>\n </div>\n\n </div>\n </div>\n\n <!-- Label and Textarea -->\n <div class=\"my-3\">\n <label class=\"form-label\">Description (Optional)</label>\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\n placeholder=\"Enter description\"></textarea>\n </div>\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\n Raise Ticket\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #imagePopup let-model>\n <div class=\"mx-4\">\n <div class=\"row\">\n <div class=\" p-2 mb-2 mt-5\">\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\n \u25C0\n </button> -->\n\n <!-- Main Image -->\n <!-- <img class=\" cursor-pointer w-100 h-525px\" \n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\"\n appMagnifier alt=\"\"> -->\n <img class=\" cursor-pointer w-100 h-525px\"\n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\n \u25B6\n </button> -->\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\n (tempModalImage || selectImageArray)?.tempId}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage || selectImageArray)?.entryTme ||\n (tempModalImage || selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\n fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\n\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\n\n </div>\n <!-- </div> -->\n </div>\n</ng-template>\n\n<!-- Footfall Trends Template -->\n<ng-template #footfallTrendsTemplate>\n <div class=\"row w-100 mb-3\">\n <!-- Total Footfall Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Footfall</span>\n <svg placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n </div>\n <div class=\"metric-value\">{{ getCurrentFootfall() || 0 }}</div>\n <div class=\"metric-trend\" [ngClass]=\"getFootfallPercentageChange() >= 0 ? 'up' : 'down'\">\n <svg *ngIf=\"getFootfallPercentageChange() >= 0\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 2L10 6H7V10H5V6H2L6 2Z\" fill=\"#10B981\" />\n </svg>\n <svg *ngIf=\"getFootfallPercentageChange() < 0\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 10L2 6H5V2H7V6H10L6 10Z\" fill=\"#F04438\" />\n </svg>\n <span>{{ getFootfallPercentageChange() >= 0 ? '+' : '' }}{{\n getFootfallPercentageChange() }}% vs Yesterday</span>\n </div>\n </div>\n </div>\n <!-- Total Downtime Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Downtime</span>\n <div class=\"downtime-icons\">\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\n fill=\"#667085\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\n fill=\"#F04438\" />\n </svg>\n </div>\n </div>\n </div>\n <div class=\"metric-value\">{{ getFormattedDowntime() || '-' }}</div>\n <!-- <div class=\"metric-tag success\" *ngIf=\"hasDowntime()\"> -->\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.6667 3.5L5.25 9.91667L2.33334 7\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- <span>Issue submitted</span>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.5 2.5L7.5 5.5L10.5 2.5\" stroke=\"#10B981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- </div> -->\n </div>\n </div>\n\n <!-- Ticket Status Card -->\n <div class=\"col-md-4\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <span class=\"metric-title\">Ticket status</span>\n </div>\n <div class=\"metric-value\">{{ getTicketStatus() === '-' ? '-' : (getTicketStatus() |\n titlecase) }}</div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resetRequestPopup let-model>\n <div class=\"p-4\">\n <div class=\"modal-header border-0 p-0 w-100\">\n <h5 class=\"modal-title mb-3 fw-bold\">\n Reset request.\n </h5>\n </div>\n <div class=\"modal-body p-0\">\n <p class=\"text-muted mb-3\">\n You're requesting to re-enable footfall tickets, disabled after three instances of exceeding 95%\n accuracy.\n </p>\n <p class=\"text-muted mb-0\">\n Please ensure future accuracy stays on or within 95%.\n </p>\n </div>\n <div class=\"modal-footer border-0 p-0 mt-4 d-flex justify-content-end gap-2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancelResetRequest()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"submitResetRequest()\">\n Send Request\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #ticketStatusTemplate let-model>\n <!-- Ticket Review Card (shown when ticket status is raised) -->\n <div class=\"col-12 mb-3\" *ngIf=\"(isTicketRaised() || isTicketClosed()) && getTaggingData('tagging')\">\n <div class=\"ticket-review-card\">\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Final revision Card (shown when ticket status is closed) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketClosed() && getTaggingData('finalreview')\">\n <div class=\"ticket-review-card\">\n <!-- Ticket card section in revision start -->\n\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n <!-- Ticket card section in revision end -->\n\n <!-- Final Revision Section -->\n <div class=\"revision-section\">\n <div class=\"revision-title\">Final revision</div>\n <div class=\"final-revision-note\">\n Please reach centraloperations&#64;lenskart.in for any further discrepancies\n </div>\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('finalreview')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('finalreview')?.revicedPerc || 0}}%)\n </span>\n <span class=\"metric-arrow\">\u2191</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('finalreview')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'duplicate') }}\n </div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'employee') }}\n </div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'houseKeeping')\n }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>", styles: ["@charset \"UTF-8\";.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:24%!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.mainheading-1{width:77%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.view-toggle .btn{border-radius:6px}.view-toggle .btn.active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-200, #99DAFF)}.date-list-container{padding:4px 23px;width:100%}.date-list-scroll{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;max-height:287px;overflow-y:auto;overflow-x:hidden;padding-bottom:8px}.date-card{min-width:0;max-width:none;padding:16px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:8px}.date-card:hover{box-shadow:0 2px 8px #0000001a;border-color:#00a3ff}.date-card .date-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.date-card .date-card-header .calendar-icon{flex-shrink:0}.date-card .date-card-header .date-text{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px;flex:1}.date-card .footfall-count{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:4px}.date-card .footfall-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.date-card-active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-600, #00A3FF);border-width:2px}.date-card-active .date-text{color:var(--Primary-700, #009BF3);font-weight:600}.date-card-active .footfall-count{color:var(--Primary-700, #009BF3)}.list-view-wrapper{padding:0 8px 16px;max-height:480px;overflow-y:auto}.list-group{border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;background:#fff;padding:16px 20px}.list-group-header{border-bottom:1px solid var(--Gray-200, #EAECF0);padding-bottom:12px;margin-bottom:16px!important}.list-group-header .group-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.list-group-header .group-count{color:var(--Gray-600, #667085);font-weight:500}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:12px;border:1px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px;object-fit:contain}.zoom-icon-button{position:absolute;top:10px;right:10px;z-index:10;cursor:pointer;background:#fffffff2;border-radius:50%;padding:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:all .2s ease}.zoom-icon-button:hover{background:#fff;box-shadow:0 4px 12px #0003;transform:scale(1.05)}.zoom-icon-button svg{width:20px;height:20px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 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}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}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}::ng-deep .modal-backdrop{pointer-events:none}.meta-change.up{color:#10b981}.meta-change.down{color:#ef4444}.meta-change.neutral{color:#64748b}.split-screen-container{display:flex;height:calc(100vh - 300px);min-height:600px;gap:16px;margin-top:16px}.split-screen-container .left-panel{flex:0 0 35%;max-width:35%;overflow-y:auto;overflow-x:hidden;padding-right:8px;border-right:1px solid var(--Gray-200, #EAECF0)}.split-screen-container .right-panel{flex:1;overflow-y:auto;padding-left:16px}.thumbnail-list-section{margin-bottom:24px}.thumbnail-list-section .time-range-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.thumbnail-list-section .time-range-header .time-range-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.thumbnail-list-section .time-range-header .time-range-count{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);padding:2px 10px;border-radius:16px}.thumbnail-list-section .thumbnail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.thumbnail-list-section .thumbnail-item{cursor:pointer;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:8px;transition:all .2s ease}.thumbnail-list-section .thumbnail-item:hover{border-color:var(--Primary-600, #00A3FF);box-shadow:0 2px 8px #00a3ff1a}.thumbnail-list-section .thumbnail-item.selected{border-color:var(--Primary-600, #00A3FF);border-width:2px;background:var(--Primary-50, #EAF8FF)}.thumbnail-list-section .thumbnail-item .thumbnail-image{width:100%;height:120px;object-fit:cover;border-radius:4px;margin-bottom:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info .tango-id{color:var(--Gray-900, #101828);font-size:12px;font-weight:600;line-height:16px;margin-bottom:4px}.thumbnail-list-section .thumbnail-item .thumbnail-info .entry-time{color:var(--Gray-600, #667085);font-size:11px;font-weight:400;line-height:16px}.metric-card{background:var(--White, #FFF);border-radius:8px;padding:16px;height:100%;display:flex;flex-direction:column;gap:2px}.metric-card .metric-header{display:flex;justify-content:space-between;align-items:center}.metric-card .metric-header .metric-title{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-header .metric-icon,.metric-card .metric-header .footfall-icon-header{flex-shrink:0}.metric-card .metric-header .downtime-icons{position:relative;display:inline-flex;align-items:center;width:31px;height:24px}.metric-card .metric-header .downtime-icons .clock-icon{position:absolute;left:0;top:2px;z-index:1}.metric-card .metric-header .downtime-icons .alert-icon{position:absolute;right:-2px;top:-2px;z-index:2}.metric-card .metric-value{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px}.metric-card .metric-trend{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-trend.up{color:#10b981}.metric-card .metric-trend.down{color:#f04438}.metric-card .metric-trend svg{flex-shrink:0}.metric-card .metric-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:16px;width:fit-content}.metric-card .metric-tag.success{background:#d1fadf;color:#10b981}.metric-card .metric-tag svg{flex-shrink:0}.ticket-review-card{background:var(--White, #FFF);border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);padding:20px;box-shadow:0 1px 3px #0000001a}.ticket-review-card .actual-footfall-header{background:var(--Primary-50, #EAF8FF);border-radius:8px;padding:16px 20px;margin-bottom:20px;display:flex;align-items:center;gap:12px}.ticket-review-card .actual-footfall-header .actual-footfall-number{color:var(--Gray-900, #101828);font-size:32px;font-weight:600;line-height:40px}.ticket-review-card .actual-footfall-header .actual-footfall-label{color:var(--Gray-700, #344054);font-size:16px;font-weight:500;line-height:24px}.ticket-review-card .ticket-creator-section{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .ticket-creator-section .creator-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.ticket-review-card .ticket-creator-section .creator-avatar img{width:100%;height:100%;object-fit:cover}.ticket-review-card .ticket-creator-section .creator-avatar-placeholder{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ticket-review-card .ticket-creator-section .creator-info{flex:1}.ticket-review-card .ticket-creator-section .creator-info .creator-label{color:var(--Gray-600, #667085);font-size:12px;font-weight:400;line-height:18px;margin-bottom:4px}.ticket-review-card .ticket-creator-section .creator-info .creator-details{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-email{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-separator{color:var(--Gray-400, #98A2B3);font-size:14px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-time{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revised-footfall-section .metrics-row{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.ticket-review-card .revised-footfall-section .metrics-row .metric-item{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number{color:var(--Gray-900, #101828);font-size:24px;font-weight:600;line-height:32px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text{color:var(--Primary-700, #009BF3)}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-percentage{font-size:16px;font-weight:500;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-arrow{color:var(--Primary-700, #009BF3);font-size:16px;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revision-section{margin-top:24px;padding-top:24px;border-top:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .revision-section .revision-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px;margin-bottom:16px}.ticket-review-card .revision-section .final-revision-note{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px;margin-bottom:16px;font-style:italic}.ticket-block-alert{border-radius:8px;border:2px dashed #F04438;background:#fee4e2;padding:16px;margin-bottom:16px}.ticket-block-alert .ticket-block-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon svg{width:24px;height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-title{color:#f04438;font-size:16px;font-weight:700;line-height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-description,.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action{color:#f04438;font-size:14px;font-weight:400;line-height:20px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link{color:#f04438;text-decoration:underline;cursor:pointer;font-weight:500}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link:hover{color:#d92d20;text-decoration:underline}.ticket-request-alert{border-radius:8px;border:2px dashed #10B981;background:#d1fae5;padding:16px;margin-bottom:16px}.ticket-request-alert .ticket-request-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon svg{width:24px;height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-title{color:#10b981;font-size:16px;font-weight:700;line-height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-description{color:#10b981;font-size:14px;font-weight:400;line-height:20px}\n"] }]
1317
+ args: [{ selector: "lib-img-rvps", template: "<div class=\"card mt-3\">\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\n <div class=\"custom-accordion\">\n <div class=\"custom-accordion-item\">\n <!-- for new navigation changes -->\n <!-- old view while folder view -->\n <button *ngIf=\"folderView\" class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\n <div class=\"header-row\">\n <span class=\"img-direc\" style=\"padding-left: 40px;\">Image Directory</span>\n\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </button>\n <!-- new view while not in folder view view -->\n <div *ngIf=\"!folderView\" class=\"header-row\">\n <span *ngIf=\"backnav && !imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <!-- back from image flow -->\n <span *ngIf=\"imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <span class=\"img-direc\">Image Directory | {{folderDate | date:'dd MMM, yyyy'}}</span>\n <button *ngIf=\"!folderView\" class=\"mainheading-1 pb-0 custom-accordion-header\"\n (click)=\"toggleAccordion()\">\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <section *ngIf=\"isAccordionExpanded\">\n\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\n <div class=\"date-list-container\">\n <div class=\"date-list-scroll\">\n <div class=\"date-card\" *ngFor=\"let obj of dateArray; let i = index\"\n [ngClass]=\"{'date-card-active': i === selectIndex}\" (click)=\"getimages(i, obj)\">\n <div class=\"date-card-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"calendar-icon\">\n <path\n d=\"M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6H12.6667V13.3333Z\"\n fill=\"#667085\" />\n </svg>\n <span class=\"date-text\">{{obj | date:'dd MMM'}}</span>\n <span *ngIf=\"cardDataMap[obj]?.ticketStatusLower as status\" class=\"badge ms-2\" [ngClass]=\"{\n 'badge-light-success': status === 'closed',\n 'badge-light-warning': status === 'raised',\n 'badge-light-default': status !== 'closed' && status !== 'raised'\n }\">\n {{ status === 'closed' ? 'Ticket closed' : (status === 'raised' ? 'Ticket raised' :\n (cardDataMap[obj]?.ticketStatus || '')) }}\n </span>\n </div>\n <div class=\"footfall-count\">{{ cardDataMap[obj]?.footfallCount || 0 }}</div>\n <div class=\"footfall-label\">Total footfall</div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"!folderView\" class=\"card-body\">\n <section *ngIf=\"!imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- footfall trends feature -->\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <!-- footfall trends feature end -->\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <!-- <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span> -->\n <!-- <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}\n <span class=\"badge badge-light-warning mx-2\"\n *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\n Ticket Raised\n </span>\n <span class=\"badge badge-light-success mx-2\"\n *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\n\n </span> -->\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div *ngIf=\"!folderView\" class=\"d-flex flex-wrap align-items-center justify-content-between w-100 my-2 gap-3\">\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n \n \n </ng-container>\n \n </div>\n \n <div class=\"btn-group view-toggle ms-auto\" role=\"group\" aria-label=\"Toggle view\">\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'grid'}\"\n (click)=\"setViewMode('grid')\" aria-label=\"Grid view\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"3\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'list'}\"\n (click)=\"setViewMode('list')\" aria-label=\"List view\">\n <svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"2\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"8\" y=\"4.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"8\" y=\"12.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"2\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"!imageFlow\">\n <div *ngIf=\"type === 'footfall' && viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\n <li class=\"nav-item cursor-pointer\">\n <a (click)=\"selectedTimes(obj.timeRange)\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\n {{obj?.timeRange}}<span class=\"mx-2\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\n {{ obj?.count ? obj?.count : 0 }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n <div *ngIf=\"noData\" class=\"row\">\n\n <div class=\"col-lg-12 mb-3\">\n\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\nbackground: var(--Gray-50, #F9FAFB);\">\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\n stroke-width=\"13.3333\" />\n <path\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <div class=\"nodata-title my-3\">\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <!-- Split-screen layout (only shown after clicking an image) -->\n <div class=\"split-screen-container\" *ngIf=\"splitScreenEnabled && !noData && !loading\">\n <!-- Left Panel: Thumbnail List + Related Images -->\n <div class=\"left-panel\">\n <!-- Main Images List (hidden when duplicate is selected) -->\n <ng-container *ngIf=\"selectedRadioType !== 'duplicate'\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of listViewGroups\">\n <div class=\"time-range-header\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': selectImageArray?.templd === obj?.templd}\"\n (click)=\"selectImageForSplitView(obj)\">\n <img class=\"thumbnail-image\" [src]=\"imageUrl + obj?.filePath\"\n (error)=\"obj.filePath = null\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\"\n style=\"height: 120px; padding: 20px;\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd }}</div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme || obj?.entryTime}}</div>\n <!-- left panel image logo -->\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- Related Images Section (ONLY shown when duplicate is selected) -->\n <div class=\"thumbnail-list-section\"\n *ngIf=\"selectedRadioType === 'duplicate' && remainingImagesGroups && remainingImagesGroups.length > 0\">\n <!-- <div class=\"time-range-header\">\n <span class=\"time-range-title\">Select related images</span>\n </div> -->\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of remainingImagesGroups\">\n <div class=\"time-range-header\" style=\"margin-top: 16px;\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">#{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\" [ngClass]=\"{'selected': obj.selected}\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\" class=\"position-absolute absolute form-check-input cursor-pointer\"\n style=\"top: 5px; right: 5px; z-index: 2;\" (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n (click)=\"$event.stopPropagation()\" [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n <img class=\"thumbnail-image cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\n alt=\"\" *ngIf=\"obj?.filePath\" (click)=\"handleImageClick($event, obj)\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview cursor-pointer\" style=\"height: 120px; padding: 20px;\"\n (click)=\"handleImageClick($event, obj)\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd || obj?.tempId }}\n </div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\n obj?.entryTime }}</div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Right Panel: Selected Image Details -->\n <div class=\"right-panel\" *ngIf=\"selectImageArray\">\n <ng-container\n *ngTemplateOutlet=\"imageDetailView; context: { $implicit: selectImageArray }\"></ng-container>\n </div>\n <div class=\"right-panel\" *ngIf=\"!selectImageArray\"\n style=\"display: flex; align-items: center; justify-content: center; color: var(--Gray-500, #667085);\">\n <div style=\"text-align: center;\">\n <p style=\"font-size: 16px; font-weight: 500;\">Select an image to view details</p>\n </div>\n </div>\n </div>\n\n <!-- Image Detail View Template for Split-Screen Right Panel -->\n <ng-template #imageDetailView let-obj>\n <div class=\"border-gray p-3 mb-3\">\n <div class=\"position-relative\">\n <img class=\"img-src1\" [src]=\"imageUrl + obj?.filePath\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <!-- Zoom Icon -->\n <div class=\"zoom-icon-button\" (click)=\"openImageZoomModal(imageUrl, obj)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\n fill=\"none\">\n <path\n d=\"M18.3333 18.3333L15 15M16.6667 9.16667C16.6667 13.3067 13.3067 16.6667 9.16667 16.6667C5.02667 16.6667 1.66667 13.3067 1.66667 9.16667C1.66667 5.02667 5.02667 1.66667 9.16667 1.66667C13.3067 1.66667 16.6667 5.02667 16.6667 9.16667Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M9.16667 6.66667V11.6667M6.66667 9.16667H11.6667\" stroke=\"#475467\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\" style=\"height: 375px;\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the moment.</span>\n </div>\n </div>\n <div class=\"row px-2 mb-2 mt-3\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme || obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\n placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div class=\"border-gray p-3\">\n <div class=\"row mb-3\">\n <div class=\"col-md-6 title-type\">Select non-shopper type</div>\n <div class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"mb-3 text-end d-inline-flex align-items-center gap-2\">\n <!-- Clear Tag Button (visible when Edit button OR Save/Cancel buttons are visible) -->\n <button\n *ngIf=\"!revopsTypeValue || (revopsTypeValue && editBtnShow)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\"\n class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\" type=\"button\"\n (click)=\"clearValue()\">\n <svg width=\"49\" height=\"49\" viewBox=\"0 0 49 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_516_96841)\">\n <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\" rx=\"8.67445\" fill=\"#FEF3F2\" />\n <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\" rx=\"8.13229\" stroke=\"#FEF3F2\"\n stroke-width=\"1.08431\" />\n <path\n d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\n fill=\"#B42318\" />\n <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\" width=\"48.3724\" height=\"48.3655\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\" />\n <feOffset dy=\"1.08431\" />\n <feGaussianBlur stdDeviation=\"1.08431\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_516_96841\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_516_96841\" result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </button>\n <!-- Cancel and Save Buttons (when !revopsTypeValue) -->\n <div *ngIf=\"!revopsTypeValue\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\">Save</button>\n </div>\n <!-- Edit Button (when revopsTypeValue && editBtnShow) -->\n <div *ngIf=\"revopsTypeValue && editBtnShow\">\n <button\n class=\"btn btn-outline me-2\" (click)=\"editValue()\">\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate-split\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee-split\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping-split\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\">Junk</span>\n </label>\n </div>\n <div class=\"mt-3\">\n <label class=\"form-label\">Remarks (Optional)</label>\n <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\"\n [(ngModel)]=\"userComment\"></textarea>\n </div>\n </div>\n </ng-template>\n\n <!-- Grid/List View (shown when split-screen is not enabled) -->\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\"\n *ngIf=\"viewMode === 'grid' && !noData && !loading && !splitScreenEnabled\">\n <ng-container *ngFor=\"let obj of imagesArrayData\">\n <ng-container *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n\n <div class=\"list-view-wrapper\"\n *ngIf=\"viewMode === 'list' && !noData && !loading && !splitScreenEnabled\">\n <div class=\"list-group mb-5\" *ngFor=\"let group of listViewGroups\">\n <div class=\"list-group-header d-flex align-items-center mb-3\">\n <div class=\"group-title\">{{ group?.timeRange }}</div>\n <span class=\"group-count badge badge-light-default ms-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"row gx-4 list-group-row\">\n <ng-container *ngFor=\"let obj of group?.data\">\n <ng-container\n *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-template #imageCard let-obj>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\n <ng-container>\n <img class=\"img-src cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"selectImageForSplitView(obj)\" />\n </ng-container>\n \n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n \n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span\n *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}\n </span>\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n\n </div>\n </section>\n\n <!-- full image View -->\n <section *ngIf=\"imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n {{getTicketStatus()}}\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n\n </ng-container>\n\n </div>\n\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"position-relative border-gray p-2 \">\n <!-- Main Image -->\n <!-- <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\"> -->\n <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" alt=\"\">\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg\n style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage ||\n selectImageArray)?.entryTme || (tempModalImage ||\n selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"mx-2 \">\n <div class=\"row\">\n <div class=\"col-md-6 title-type\">\n Select non-shopper type\n </div>\n\n\n <section class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <div\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\n\n <button [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \" class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\"\n (click)=\"save(selectedType)\" [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \">\n Save\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\">\n <ng-container *ngIf=\"editBtnShow\">\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <button\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>Edit</button>\n\n </div>\n </ng-container>\n </div>\n </section>\n\n </div>\n\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate\">\n <span class=\"ms-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\"> House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\"\n (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\"> Junk</span>\n </label>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n\n <img class=\"img-src\"\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"handleImageClick($event, obj)\" />\n\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd :\n obj?.tempId}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme\n :obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </section>\n </div>\n </section>\n</div>\n\n\n<ng-template #zoomPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <g clip-path=\"url(#clip0_2088_98337)\">\n <path\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2088_98337\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\n\n </h5>\n <p class=\"mb-3\">\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\n 'Non-tag'.</span>\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\n\n </p>\n </div>\n\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, Tag\n </button>\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, clear\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #raisedPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span>Raise tickets for the following</span>\n\n </h5>\n <p class=\"mb-3\">\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\n validation.</span>\n\n\n </p>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Duplicates\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Employee\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n House Keeping\n </div>\n </div>\n </div>\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Junk\n </div>\n </div>\n\n </div>\n </div>\n\n <!-- Label and Textarea -->\n <div class=\"my-3\">\n <label class=\"form-label\">Description (Optional)</label>\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\n placeholder=\"Enter description\"></textarea>\n </div>\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\n Raise Ticket\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #imagePopup let-model>\n <div class=\"mx-4\">\n <div class=\"row\">\n <div class=\" p-2 mb-2 mt-5\">\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\n \u25C0\n </button> -->\n\n <!-- Main Image -->\n <!-- <img class=\" cursor-pointer w-100 h-525px\" \n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\"\n appMagnifier alt=\"\"> -->\n <img class=\" cursor-pointer w-100 h-525px\"\n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\n \u25B6\n </button> -->\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\n (tempModalImage || selectImageArray)?.tempId}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage || selectImageArray)?.entryTme ||\n (tempModalImage || selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\n fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\n\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\n\n </div>\n <!-- </div> -->\n </div>\n</ng-template>\n\n<!-- Footfall Trends Template -->\n<ng-template #footfallTrendsTemplate>\n <div class=\"row w-100 mb-3\">\n <!-- Total Footfall Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Footfall</span>\n <svg placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n </div>\n <div class=\"metric-value\">{{ getCurrentFootfall() || 0 }}</div>\n <!-- [ngClass]=\"getFootfallPercentageChange() >= 0 ? 'up' : 'down'\" -->\n <div class=\"metric-trend\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.3327 3.99998L8.99935 10.3333L5.66602 6.99998L0.666016 12M15.3327 3.99998H11.3327M15.3327 3.99998V7.99998\"\n stroke=\"#039855\" stroke-width=\"1.18681\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span style=\"color: #10B981\">{{getFootfallPercentageChange() }}% </span><span>vs Yesterday</span>\n </div>\n </div>\n </div>\n <!-- Total Downtime Card -->\n <div class=\"col-md-4 mb-3 mb-md-0\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Downtime</span>\n <div class=\"downtime-icons\">\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\n fill=\"#667085\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\n fill=\"#F04438\" />\n </svg>\n </div>\n </div>\n </div>\n <div class=\"metric-value\">{{ getFormattedDowntime() || '-' }}</div>\n <!-- <div class=\"metric-tag success\" *ngIf=\"hasDowntime()\"> -->\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.6667 3.5L5.25 9.91667L2.33334 7\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- <span>Issue submitted</span>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.5 2.5L7.5 5.5L10.5 2.5\" stroke=\"#10B981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- </div> -->\n </div>\n </div>\n\n <!-- Ticket Status Card -->\n <div class=\"col-md-4\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <span class=\"metric-title\">Ticket status</span>\n </div>\n <div class=\"metric-value\" \n [ngClass]=\"{\n 'ticket-status-raised': getTicketStatus()?.toLowerCase() === 'raised',\n 'ticket-status-closed': getTicketStatus()?.toLowerCase() === 'close'\n }\">\n {{ getTicketStatus() === '-' ? '-' : (getTicketStatus() | titlecase) }}\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resetRequestPopup let-model>\n <div class=\"p-4\">\n <div class=\"modal-header border-0 p-0 w-100\">\n <h5 class=\"modal-title mb-3 fw-bold\">\n Reset request.\n </h5>\n </div>\n <div class=\"modal-body p-0\">\n <p class=\"text-muted mb-3\">\n You're requesting to re-enable footfall tickets, disabled after three instances of exceeding 95%\n accuracy.\n </p>\n <p class=\"text-muted mb-0\">\n Please ensure future accuracy stays on or within 95%.\n </p>\n </div>\n <div class=\"modal-footer border-0 p-0 mt-4 d-flex justify-content-end gap-2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancelResetRequest()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"submitResetRequest()\">\n Send Request\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #ticketStatusTemplate let-model>\n <!-- Ticket Review Card (shown when ticket status is raised) -->\n <div class=\"col-12 mb-3\" *ngIf=\"(isTicketRaised() || isTicketClosed()) && getTaggingData('tagging')\">\n <div class=\"ticket-review-card\">\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Final revision Card (shown when ticket status is closed) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketClosed() && getTaggingData('finalreview')\">\n <div class=\"ticket-review-card\">\n <!-- Ticket card section in revision start -->\n\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n <!-- Ticket card section in revision end -->\n\n <!-- Final Revision Section -->\n <div class=\"revision-section\">\n <div class=\"revision-title\">Final revision</div>\n <div class=\"final-revision-note\">\n Please reach centraloperations&#64;lenskart.in for any further discrepancies\n </div>\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('finalreview')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('finalreview')?.revicedPerc || 0}}%)\n </span>\n <span class=\"metric-arrow\">\u2191</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('finalreview')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'duplicate') }}\n </div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'employee') }}\n </div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalreview'), 'houseKeeping')\n }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>", styles: ["@charset \"UTF-8\";.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:24%!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.mainheading-1{width:77%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.view-toggle .btn{border-radius:6px}.view-toggle .btn.active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-200, #99DAFF)}.date-list-container{padding:4px 23px;width:100%}.date-list-scroll{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;max-height:287px;overflow-y:auto;overflow-x:hidden;padding-bottom:8px}.date-card{min-width:0;max-width:none;padding:16px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:8px}.date-card:hover{box-shadow:0 2px 8px #0000001a;border-color:#00a3ff}.date-card .date-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.date-card .date-card-header .calendar-icon{flex-shrink:0}.date-card .date-card-header .date-text{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px;flex:1}.date-card .footfall-count{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:4px}.date-card .footfall-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.date-card-active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-600, #00A3FF);border-width:2px}.date-card-active .date-text{color:var(--Primary-700, #009BF3);font-weight:600}.date-card-active .footfall-count{color:var(--Primary-700, #009BF3)}.list-view-wrapper{padding:0 8px 16px;max-height:480px;overflow-y:auto}.list-group{border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;background:#fff;padding:16px 20px}.list-group-header{border-bottom:1px solid var(--Gray-200, #EAECF0);padding-bottom:12px;margin-bottom:16px!important}.list-group-header .group-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.list-group-header .group-count{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-weight:600;padding:4px 10px!important;border-radius:12px!important;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.list-group-header .group-count svg{flex-shrink:0;display:block}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:12px;border:1px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px;object-fit:contain}.zoom-icon-button{position:absolute;top:10px;right:10px;z-index:10;cursor:pointer;background:#fffffff2;border-radius:50%;padding:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:all .2s ease}.zoom-icon-button:hover{background:#fff;box-shadow:0 4px 12px #0003;transform:scale(1.05)}.zoom-icon-button svg{width:20px;height:20px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 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}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}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}::ng-deep .modal-backdrop{pointer-events:none}.meta-change.up{color:#10b981}.meta-change.down{color:#ef4444}.meta-change.neutral{color:#64748b}.split-screen-container{display:flex;height:calc(100vh - 300px);min-height:600px;gap:16px;margin-top:16px}.split-screen-container .left-panel{flex:0 0 35%;max-width:35%;overflow-y:auto;overflow-x:hidden;padding-right:8px;border-right:1px solid var(--Gray-200, #EAECF0)}.split-screen-container .right-panel{flex:1;overflow-y:auto;padding-left:16px}.thumbnail-list-section{margin-bottom:24px}.thumbnail-list-section .time-range-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.thumbnail-list-section .time-range-header .time-range-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.thumbnail-list-section .time-range-header .time-range-count{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);padding:2px 10px;border-radius:16px}.thumbnail-list-section .thumbnail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.thumbnail-list-section .thumbnail-item{cursor:pointer;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:8px;transition:all .2s ease}.thumbnail-list-section .thumbnail-item:hover{border-color:var(--Primary-600, #00A3FF);box-shadow:0 2px 8px #00a3ff1a}.thumbnail-list-section .thumbnail-item.selected{border-color:var(--Primary-600, #00A3FF);border-width:2px;background:var(--Primary-50, #EAF8FF)}.thumbnail-list-section .thumbnail-item .thumbnail-image{width:100%;height:120px;object-fit:cover;border-radius:4px;margin-bottom:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info{display:grid;grid-template-columns:1fr auto;align-items:flex-start;gap:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info .tango-id{color:var(--Gray-900, #101828);font-size:12px;font-weight:600;line-height:16px;margin-bottom:4px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .entry-time{color:var(--Gray-600, #667085);font-size:11px;font-weight:400;line-height:16px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5{grid-column:2;grid-row:1/-1;display:flex;align-items:center;justify-content:flex-end;padding:0!important;margin:0!important}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5 svg{display:block}.metric-card{background:var(--White, #FFF);border-radius:8px;padding:16px;height:100%;display:flex;flex-direction:column;gap:2px}.metric-card .metric-header{display:flex;justify-content:space-between;align-items:center}.metric-card .metric-header .metric-title{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-header .metric-icon,.metric-card .metric-header .footfall-icon-header{flex-shrink:0}.metric-card .metric-header .downtime-icons{position:relative;display:inline-flex;align-items:center;width:31px;height:24px}.metric-card .metric-header .downtime-icons .clock-icon{position:absolute;left:0;top:2px;z-index:1}.metric-card .metric-header .downtime-icons .alert-icon{position:absolute;right:-2px;top:-2px;z-index:2}.metric-card .metric-value{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px}.metric-card .metric-value.ticket-status-raised{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#fef3c7;color:#92400e;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-value.ticket-status-closed{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#d1fae5;color:#10b981;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-trend{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-trend.up{color:#10b981}.metric-card .metric-trend.down{color:#f04438}.metric-card .metric-trend svg{flex-shrink:0}.metric-card .metric-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:16px;width:fit-content}.metric-card .metric-tag.success{background:#d1fadf;color:#10b981}.metric-card .metric-tag svg{flex-shrink:0}.ticket-review-card{background:var(--White, #FFF);border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);padding:20px;box-shadow:0 1px 3px #0000001a}.ticket-review-card .actual-footfall-header{background:var(--Primary-50, #EAF8FF);border-radius:8px;padding:16px 20px;margin-bottom:20px;display:flex;align-items:center;gap:12px}.ticket-review-card .actual-footfall-header .actual-footfall-number{color:var(--Gray-900, #101828);font-size:32px;font-weight:600;line-height:40px}.ticket-review-card .actual-footfall-header .actual-footfall-label{color:var(--Gray-700, #344054);font-size:16px;font-weight:500;line-height:24px}.ticket-review-card .ticket-creator-section{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .ticket-creator-section .creator-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.ticket-review-card .ticket-creator-section .creator-avatar img{width:100%;height:100%;object-fit:cover}.ticket-review-card .ticket-creator-section .creator-avatar-placeholder{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ticket-review-card .ticket-creator-section .creator-info{flex:1}.ticket-review-card .ticket-creator-section .creator-info .creator-label{color:var(--Gray-600, #667085);font-size:12px;font-weight:400;line-height:18px;margin-bottom:4px}.ticket-review-card .ticket-creator-section .creator-info .creator-details{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-email{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-separator{color:var(--Gray-400, #98A2B3);font-size:14px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-time{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revised-footfall-section .metrics-row{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.ticket-review-card .revised-footfall-section .metrics-row .metric-item{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number{color:var(--Gray-900, #101828);font-size:24px;font-weight:600;line-height:32px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text{color:var(--Primary-700, #009BF3)}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-percentage{font-size:16px;font-weight:500;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-arrow{color:var(--Primary-700, #009BF3);font-size:16px;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revision-section{margin-top:24px;padding-top:24px;border-top:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .revision-section .revision-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px;margin-bottom:16px}.ticket-review-card .revision-section .final-revision-note{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px;margin-bottom:16px;font-style:italic}.ticket-block-alert{border-radius:8px;border:2px dashed #F04438;background:#fee4e2;padding:16px;margin-bottom:16px}.ticket-block-alert .ticket-block-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon svg{width:24px;height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-title{color:#f04438;font-size:16px;font-weight:700;line-height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-description,.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action{color:#f04438;font-size:14px;font-weight:400;line-height:20px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link{color:#f04438;text-decoration:underline;cursor:pointer;font-weight:500}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link:hover{color:#d92d20;text-decoration:underline}.ticket-request-alert{border-radius:8px;border:2px dashed #10B981;background:#d1fae5;padding:16px;margin-bottom:16px}.ticket-request-alert .ticket-request-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon svg{width:24px;height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-title{color:#10b981;font-size:16px;font-weight:700;line-height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-description{color:#10b981;font-size:14px;font-weight:400;line-height:20px}\n"] }]
1317
1318
  }], ctorParameters: () => [{ type: i1.TrafficService }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.NgbModal }, { type: i4.ToastService }, { type: i5.TrafficRvpsService }], propDecorators: { zoomPopup: [{
1318
1319
  type: ViewChild,
1319
1320
  args: ["zoomPopup"]
@@ -1327,4 +1328,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1327
1328
  type: ViewChild,
1328
1329
  args: ["imagePopup"]
1329
1330
  }] } });
1330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXJ2cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmFmZmljL3NyYy9saWIvY29tcG9uZW50cy9pbWctcnZwcy9pbWctcnZwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1ydnBzL2ltZy1ydnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1MsU0FBUyxFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQU85QyxNQUFNLE9BQU8sZ0JBQWdCO0lBV2pCO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQWZWLFVBQVUsQ0FBTTtJQUNoQixZQUFZLENBQU07SUFDbEIsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsU0FBUyxDQUFNO0lBQ2YsZUFBZSxHQUFRLEVBQUUsQ0FBQztJQUMxQixXQUFXLEdBQTRCLEVBQUUsQ0FBQztJQUMxQyxrQkFBa0IsR0FBUSxFQUFFLENBQUM7SUFDN0IsV0FBVyxDQUFNO0lBQ2pCLFlBQ1UsT0FBdUIsRUFDeEIsRUFBc0IsRUFDckIsRUFBcUIsRUFDckIsWUFBc0IsRUFDdEIsS0FBbUIsRUFDbkIsV0FBK0I7UUFML0IsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsVUFBSyxHQUFM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QUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsdUJBQXVCO1FBQ3JCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2hELE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEUsQ0FBQzt3R0FoL0NVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCLDZiQ3BCN0Isa2trTEFtaUVjOzs0RkQvZ0VELGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjO3VPQTI1QkEsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQTZGSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ1EsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFvT0wsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LEVsZW1lbnRSZWYsVmlld0NoaWxkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmFmZmljUnZwc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJhZmZpYy1ydnBzLnNlcnZpY2VcIjtcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XG5pbXBvcnQgeyBUcmFmZmljU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90cmFmZmljLnNlcnZpY2VcIjtcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibGliLWltZy1ydnBzXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW1nLXJ2cHMuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmw6IFwiLi9pbWctcnZwcy5jb21wb25lbnQuc2Nzc1wiLFxufSlcbmV4cG9ydCBjbGFzcyBJbWdSdnBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBoZWFkZXJEYXRhOiBhbnk7XG4gIHN0b3JlSWRhcnJheTogYW55O1xuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgbm9EYXRhID0gZmFsc2U7XG4gIG5vcm1hbGl6ZTogYW55O1xuICBvdmVyYWxsQ2FyZERhdGE6IGFueSA9IFtdO1xuICBjYXJkRGF0YU1hcDogeyBbZGF0ZTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgdGlja2V0UmV2aWV3U3RhdHVzOiBhbnkgPSBbXTtcbiAgdXNlckNvbW1lbnQ6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBUcmFmZmljU2VydmljZSxcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcnZwc1NlcnZpY2U6IFRyYWZmaWNSdnBzU2VydmljZVxuICApIHt9XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG4gIGlzQWNjb3JkaW9uRXhwYW5kZWQgPSB0cnVlO1xuICB0b2dnbGVBY2NvcmRpb24oKSB7XG4gICAgdGhpcy5pc0FjY29yZGlvbkV4cGFuZGVkID0gIXRoaXMuaXNBY2NvcmRpb25FeHBhbmRlZDtcbiAgfVxuICB1c2Vyczphbnk7XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0SW5pdGFsKCk7XG4gICAgY29uc3QgdXNlckRhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJ7fVwiKTtcbiAgICB0aGlzLnVzZXJzID0gdXNlckRhdGE7XG4gIH1cbiAgZ2V0SW5pdGFsKCkge1xuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ2RhdGEgOicsIGRhdGEpO1xuICAgICAgICBpZiAoZGF0YSAhPT0gbnVsbCB8fCBkYXRhPy5jbGllbnQgIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xuICAgICAgICAgIHRoaXMuc3RvcmVJZGFycmF5ID0gdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpXG4gICAgICAgICAgICAubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKTtcbiAgICAgICAgICB0aGlzLmJhY2tUb0Zvb3RmYWxsKCk7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5RGF0ZVJhbmdlKCk7XG4gICAgICAgICAgdGhpcy5sb2FkQ2FyZERhdGEoKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSA9PT0gdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmJhY2tuYXYgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheURhdGVSYW5nZSgpO1xuICAgICAgICAgICAgdGhpcy5nZXRpbWFnZXMoMCwgdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyVmlldyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmJhY2tuYXYgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBiYWNrVG9Gb290ZmFsbCgpIHtcbiAgICB0aGlzLmZvbGRlclZpZXcgPSB0cnVlO1xuICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcbiAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcbiAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XG4gICAgdGhpcy50eXBlID0gXCJmb290ZmFsbFwiO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gXCJcIjtcbiAgICB0aGlzLnNwbGl0U2NyZWVuRW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG51bGw7XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gW107XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTtcbiAgfVxuICBmb2xkZXJWaWV3OiBib29sZWFuO1xuICBiYWNrbmF2OiBib29sZWFuO1xuICBkYXRlQXJyYXk6IGFueTtcbiAgZGlzcGxheURhdGVSYW5nZSgpIHtcbiAgICBjb25zdCBkYXRlcyA9IHRoaXMuZ2V0RGF0ZVJhbmdlQXJyYXkoXG4gICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXG4gICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlXG4gICAgKTtcbiAgICB0aGlzLmRhdGVBcnJheSA9IGRhdGVzO1xuICB9XG5cbiAgZ2V0RGF0ZVJhbmdlQXJyYXkoZnJvbURhdGU6IHN0cmluZywgdG9EYXRlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShmcm9tRGF0ZSk7IC8vIENvbnZlcnQgc3RyaW5nIHRvIERhdGUgb2JqZWN0XG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUodG9EYXRlKTsgLy8gQ29udmVydCBzdHJpbmcgdG8gRGF0ZSBvYmplY3RcbiAgICBjb25zdCBkYXRlQXJyYXk6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgZGF0ZXMgYXJlIHZhbGlkXG4gICAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkgfHwgaXNOYU4oZW5kLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiBkYXRlQXJyYXk7XG4gICAgfVxuXG4gICAgLy8gTG9vcCBmcm9tIHN0YXJ0IGRhdGUgdG8gZW5kIGRhdGVcbiAgICBsZXQgY3VycmVudERhdGUgPSBzdGFydDtcbiAgICB3aGlsZSAoY3VycmVudERhdGUgPD0gZW5kKSB7XG4gICAgICBkYXRlQXJyYXkucHVzaChjdXJyZW50RGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSk7IC8vIEZvcm1hdCBZWVlZLU1NLUREXG4gICAgICBjdXJyZW50RGF0ZS5zZXREYXRlKGN1cnJlbnREYXRlLmdldERhdGUoKSArIDEpOyAvLyBJbmNyZW1lbnQgdGhlIGRhdGUgYnkgMSBkYXlcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0ZUFycmF5O1xuICB9XG5cbiAgLy8gTG9hZCBjYXJkIGRhdGFcbiAgbG9hZENhcmREYXRhKCkge1xuICAgIGNvbnN0IHN0b3JlSWQgPVxuICAgIHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDAgPyB0aGlzLnN0b3JlSWRhcnJheVswXSA6IG51bGw7XG4gICAgaWYgKCFzdG9yZUlkIHx8ICF0aGlzLmhlYWRlckRhdGE/LmRhdGUpIHtcbiAgICAgIHRoaXMub3ZlcmFsbENhcmREYXRhID0gW107XG4gICAgICB0aGlzLmNhcmREYXRhTWFwID0ge307XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5ydnBzU2VydmljZVxuICAgICAgLmdldEltYWdlRGlyZWN0b3J5Q2FyZERhdGEoXG4gICAgICAgIHN0b3JlSWQsXG4gICAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcbiAgICAgICAgdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZVxuICAgICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgPy5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmFsbENhcmREYXRhID0gcmVzPy5kYXRhIHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5jYXJkRGF0YU1hcCA9ICh0aGlzLm92ZXJhbGxDYXJkRGF0YSB8fCBbXSkucmVkdWNlKFxuICAgICAgICAgICAgICAoYWNjOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IGl0ZW0/LmRhdGVcbiAgICAgICAgICAgICAgICAgID8gbmV3IERhdGUoaXRlbS5kYXRlKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgYWNjW25vcm1hbGl6ZWREYXRlXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgdGlja2V0U3RhdHVzTG93ZXI6IGl0ZW0/LnRpY2tldFN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgID8gU3RyaW5nKGl0ZW0udGlja2V0U3RhdHVzKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmFsbENhcmREYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLmNhcmREYXRhTWFwID0ge307XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBsb2FkQ2FyZERhdGE6XCIsIGVycik7XG4gICAgICAgICAgdGhpcy5vdmVyYWxsQ2FyZERhdGEgPSBbXTtcbiAgICAgICAgICB0aGlzLmNhcmREYXRhTWFwID0ge307XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG5cbiAgc2VsZWN0ZWRUaW1lOiBhbnk7XG4gIGZvbGRlck5hbWU6IGFueTtcbiAgc2VsZWN0ZWRUaW1lcyh2YWw6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gdmFsO1xuICAgIHRoaXMuZm9sZGVyTmFtZSA9IHZhbDtcbiAgICB0aGlzLmZvbGRlclZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnR5cGUgPSB0aGlzLnR5cGU7XG4gICAgdGhpcy5nZXRSZXZvcHMoKTtcbiAgfVxuICBmb2xkZXJEYXRlOiBhbnk7XG4gIGltYWdlRmxvdyA9IGZhbHNlO1xuICBzcGxpdFNjcmVlbkVuYWJsZWQgPSBmYWxzZTsgLy8gRmxhZyB0byBlbmFibGUgc3BsaXQtc2NyZWVuIHZpZXdcbiAgLy8gZ2V0IFJldm9wcyBBcGlcbiAgZ2V0UnZwc0xpc3Q6IGFueTtcbiAgZ2V0UnZwc0ltYWdlTGlzdDogYW55O1xuICBvYmplY3RzQXJyYXk6IGFueTtcbiAgaW1hZ2VzQXJyYXlEYXRhOiBhbnk7XG4gIGxpc3RWaWV3R3JvdXBzOiBBcnJheTx7IHRpbWVSYW5nZTogc3RyaW5nOyBkYXRhOiBhbnlbXSB9PiA9IFtdO1xuICBzZWxlY3RJbmRleDogYW55ID0gMDtcbiAgZm9vdGZhbGxEYXRlOiBhbnk7XG4gIGxlbmd0aFZhbHVlOiBib29sZWFuO1xuICB2aWV3TW9kZTogXCJncmlkXCIgfCBcImxpc3RcIiA9IFwiZ3JpZFwiO1xuICBnZXRpbWFnZXMoaW5kZXg6IGFueSwgb2JqOiBhbnkpIHtcbiAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0SW5kZXggPSBpbmRleDtcbiAgICB0aGlzLmZvbGRlckRhdGUgPSBvYmo7XG4gICAgKHRoaXMuZm9vdGZhbGxEYXRlID0gb2JqKSwgKHRoaXMuZm9sZGVyVmlldyA9IGZhbHNlKTtcbiAgICB0aGlzLnNlcnZpY2U/Lmlzbm9ybWFsaXplU291cmNlXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgID8uc3Vic2NyaWJlKChub3JtYWxpemU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTtcbiAgICAgICAgaWYgKCFub3JtYWxpemUpIHtcbiAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcbiAgICAgICAgICB0aGlzLmdldFJldm9wcygpO1xuICAgICAgICAgIC8vIHRoaXMuZ2V0VG90YWwoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxlbmd0aFZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbiAgY291bnREYXRhOiBhbnkgPSBbXTtcbiAgZ2V0VG90YWwoKSB7XG4gICAgdGhpcy5jb3VudERhdGEgPSBbXTtcbiAgICBjb25zdCBzdG9yZUlkID1cbiAgICAgIHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLnN0b3JlSWRhcnJheVswXVxuICAgICAgICA6IG51bGw7XG4gICAgY29uc3QgZGF0ZVN0cmluZyA9IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiO1xuICAgIHRoaXMucnZwc1NlcnZpY2VcbiAgICAgIC5nZXRUb3RhbFZhbChzdG9yZUlkLCBkYXRlU3RyaW5nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgPy5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0UnZwc0xpc3Q/Lmxlbmd0aCkgdGhpcy5jb3VudERhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb3VudERhdGEgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7fSxcbiAgICAgIH0pO1xuICB9XG4gIGltYWdlVXJsOiBhbnk7XG4gIHJldm9wc1R5cGVDb3VudDogYW55O1xuICBjdXJyZW50VGltZVJhbmdlRGF0YTogYW55ID0gW107XG4gIG92ZXJhbGxBcnJheURhdGE6IGFueSA9IFtdO1xuICBhbGxGb290ZmFsbERhdGE6IGFueSA9IFtdO1xuICBnZXRUaWNrZXRTdGF0dXNlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc3RhdHVzTGlzdCA9IHRoaXMuZ2V0UnZwc0xpc3Q/LnRpY2tldFN0YXR1cztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzdGF0dXNMaXN0KSkge1xuICAgICAgcmV0dXJuIHN0YXR1c0xpc3QubWFwKChzKSA9PiBzPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkpLmZpbHRlcihCb29sZWFuKTsgLy8gUmVtb3ZlcyBudWxsL3VuZGVmaW5lZFxuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cbiAgZ2V0UmV2b3BzKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcbiAgICAvLyB0aGlzLm9iamVjdHNBcnJheSA9W107XG4gICAgLy8gdGhpcy5vdmVyYWxsQXJyYXlEYXRhID1bXTtcbiAgICAvLyB0aGlzLmdldFJ2cHNMaXN0ID1bXTtcbiAgICAvLyB0aGlzLmdldFJ2cHNJbWFnZUxpc3Q9W107XG4gICAgLy8gdGhpcy5hbGxGb290ZmFsbERhdGEgPVtdXG4gICAgY29uc3Qgc3RvcmVJZCA9XG4gICAgICB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cbiAgICAgICAgOiBudWxsO1xuICAgIGNvbnN0IGRhdGVTdHJpbmcgPSB0aGlzLmZvbGRlckRhdGUgfHwgXCJcIjtcbiAgICBjb25zdCBncm91cEJ5S2V5ID0gXCJ0aW1lXCI7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMudHlwZSA9PT0gXCJmb290ZmFsbFwiID8gXCJcIiA6IHRoaXMudHlwZSB8fCBcIlwiO1xuICAgIGNvbnN0IHByb2Nlc3NUeXBlID0gXCJmb290ZmFsbFwiO1xuXG4gICAgdGhpcy5ydnBzU2VydmljZVxuICAgICAgLmdldFJ2cHNMaXN0QXBpKHN0b3JlSWQsIGRhdGVTdHJpbmcsIGdyb3VwQnlLZXksIHR5cGUsIHByb2Nlc3NUeXBlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdCA9IHJlcz8uZGF0YTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VVcmwgPSB0aGlzLnJ2cHNTZXJ2aWNlPy5mb290ZmFsbENETjtcbiAgICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IHJlcz8uZGF0YT8ucmVzdWx0O1xuICAgICAgICAgICAgdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMgPSByZXM/LmRhdGE/LnRpY2tldFN0YXR1cztcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZXZvcHMgZ2V0UnZwc0xpc3RBcGkgOicsIHJlcz8uZGF0YSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygncmV2b3BzIHRpY2tldFJldmlld1N0YXR1cyA6JywgdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMpO1xuICAgICAgICAgICAgLy8gU2F2ZSB0aGUgZnVsbCBmb290ZmFsbCBkYXRhIChncm91cGVkIGJ5IHRpbWVSYW5nZSlcbiAgICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhID0gcmVzPy5kYXRhPy5yZXN1bHQ/LmZvb3RmYWxsRGF0YSB8fCBbXTtcblxuICAgICAgICAgICAgLy8gQ3JlYXRlIHRpbWVSYW5nZSArIGNvdW50IG9iamVjdFxuICAgICAgICAgICAgY29uc3QgdGltZVJhbmdlcyA9IHRoaXMuYWxsRm9vdGZhbGxEYXRhLm1hcChcbiAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50aW1lUmFuZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IHRpbWVSYW5nZXMubWFwKCh0aW1lUmFuZ2U6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgdGltZVJhbmdlLFxuICAgICAgICAgICAgICBjb3VudDpcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEZvb3RmYWxsRGF0YS5maW5kKChkOiBhbnkpID0+IGQudGltZVJhbmdlID09PSB0aW1lUmFuZ2UpXG4gICAgICAgICAgICAgICAgICA/LmRhdGE/Lmxlbmd0aCB8fCAwLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgLy8gT25seSByZXNldCBpZiBwcmV2aW91cyBzZWxlY3RlZCB0aW1lIGlzIE5PVCBpbiB0aGUgbmV3IGxpc3RcbiAgICAgICAgICAgIGlmICghdGltZVJhbmdlcy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkVGltZSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRpbWVzKHRoaXMub2JqZWN0c0FycmF5WzBdLnRpbWVSYW5nZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEdldCBkYXRhIGZvciB0aGUgc2VsZWN0ZWQgdGltZVJhbmdlXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhID1cbiAgICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEuZmluZChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpbWVSYW5nZSA9PT0gdGhpcy5zZWxlY3RlZFRpbWVcbiAgICAgICAgICAgICAgKT8uZGF0YSB8fCBbXTtcblxuICAgICAgICAgICAgLy8gQ291bnQgcmV2b3BzVHlwZXNcbiAgICAgICAgICAgIGNvbnN0IHJldm9wc1R5cGVDb3VudDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHtcbiAgICAgICAgICAgICAgXCJub24tdGFnZ2luZ1wiOiAwLFxuICAgICAgICAgICAgICBkdXBsaWNhdGU6IDAsXG4gICAgICAgICAgICAgIGVtcGxveWVlOiAwLFxuICAgICAgICAgICAgICBcImhvdXNlLWtlZXBpbmdcIjogMCxcbiAgICAgICAgICAgICAganVuazogMCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxldCB0b3RhbENvdW50ID0gMDtcbiAgICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9IFtdO1xuXG4gICAgICAgICAgICB0aGlzLmFsbEZvb3RmYWxsRGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaXRlbS5kYXRhPy5mb3JFYWNoKChpbWFnZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhLnB1c2goaW1hZ2UpO1xuICAgICAgICAgICAgICAgIHRvdGFsQ291bnQrKztcblxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPVxuICAgICAgICAgICAgICAgICAgaW1hZ2UucmV2b3BzVHlwZT8udHJpbSgpLnRvTG93ZXJDYXNlKCkgfHwgXCJ1bmtub3duXCI7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJub24tdGFnZ2luZ1wiKSB7XG4gICAgICAgICAgICAgICAgICByZXZvcHNUeXBlQ291bnRbXCJub24tdGFnZ2luZ1wiXSsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJlbXBsb3llZVwiKSB7XG4gICAgICAgICAgICAgICAgICByZXZvcHNUeXBlQ291bnRbXCJlbXBsb3llZVwiXSsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcImhvdXNlLWtlZXBpbmdcIl0rKztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYodHlwZSA9PT0gXCJqdW5rXCIpIHtcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcImp1bmtcIl0rKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyDinIUgQ291bnQgZHVwbGljYXRlcyBvbmx5IGZyb20gZHVwbGljYXRlSW1hZ2VQYXRoXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW1hZ2UuZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wiZHVwbGljYXRlXCJdICs9XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IHtcbiAgICAgICAgICAgICAgZm9vdGZhbGxDb3VudDogdG90YWxDb3VudCxcbiAgICAgICAgICAgICAgbm9uVGFnczogcmV2b3BzVHlwZUNvdW50W1wibm9uLXRhZ2dpbmdcIl0sXG4gICAgICAgICAgICAgIGR1cGxpY2F0ZTogcmV2b3BzVHlwZUNvdW50W1wiZHVwbGljYXRlXCJdLFxuICAgICAgICAgICAgICBlbXBsb3llZTogcmV2b3BzVHlwZUNvdW50W1wiZW1wbG95ZWVcIl0sXG4gICAgICAgICAgICAgIGhvdXNla2VlcGluZzogcmV2b3BzVHlwZUNvdW50W1wiaG91c2Uta2VlcGluZ1wiXSxcbiAgICAgICAgICAgICAganVuazogcmV2b3BzVHlwZUNvdW50W1wianVua1wiXVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gQXBwbHkgdHlwZSBmaWx0ZXIgYWZ0ZXIgbG9hZGluZyB0aW1lUmFuZ2UgZGF0YVxuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIHRoaXMubm9EYXRhID0gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgZmFpbHVyZVxuICAgICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gW107XG4gICAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5jb3VudERhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICAgZXJyLmVycm9yLmVycm9yIHx8XG4gICAgICAgICAgICBlcnIuZXJyb3IgfHxcbiAgICAgICAgICAgIGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHxcbiAgICAgICAgICAgIGVyci5tZXNzYWdlIHx8XG4gICAgICAgICAgICBcIlVua25vd24gZXJyb3JcIjtcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QobXNnKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xuICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xuICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XG4gICAgICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSBbXTtcbiAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSBbXTtcbiAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IFtdO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBvcmlnaW5hbENoZWNrZWREdXBsaWNhdGVJZHM6IGFueTtcbiAgZWRpdFZhbHVlKCkge1xuICAgIGNvbnN0IHR5cGUgPSAodGhpcy5zZWxlY3RlZFR5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJbWFnZSA9IHRoaXMuc2VsZWN0SW1hZ2VBcnJheTtcbiAgICBjb25zdCBzZWxlY3RlZFRlbXBsZCA9IHNlbGVjdGVkSW1hZ2U/LnRlbXBsZDtcblxuICAgIGlmIChcbiAgICAgIHR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRJbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgpXG4gICAgKSB7XG4gICAgICAvLyAxLiBDb252ZXJ0IGR1cGxpY2F0ZSBjaGlsZHJlbiBpbnRvIGNvbnNpc3RlbnQgb2JqZWN0cyB3aXRoIHBhcmVudCByZWZlcmVuY2VcbiAgICAgIGNvbnN0IGR1cGxpY2F0ZUNoaWxkcmVuID0gc2VsZWN0ZWRJbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgubWFwKFxuICAgICAgICAoY2hpbGQ6IGFueSkgPT4gKHtcbiAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICBwYXJlbnQ6IHNlbGVjdGVkVGVtcGxkLFxuICAgICAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgLy8gMi4gQ29sbGVjdCB0aGUgdGVtcGxkIHZhbHVlcyBvZiBkdXBsaWNhdGUgY2hpbGRyZW5cbiAgICAgIGNvbnN0IGR1cGxpY2F0ZUNoaWxkSWRzID0gZHVwbGljYXRlQ2hpbGRyZW4ubWFwKFxuICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQudGVtcElkXG4gICAgICApO1xuXG4gICAgICAvLyAzLiBGaWx0ZXIgb3V0IG5vbi10YWdnaW5nIGltYWdlcyBleGNlcHQgdGhlIHNlbGVjdGVkIHBhcmVudCAmIGl0cyBjaGlsZHJlblxuICAgICAgY29uc3Qgbm9uVGFnZ2luZ0ltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzTm9uVGFnZ2luZyA9XG4gICAgICAgICAgKGltZy5yZXZvcHNUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCkgPT09IFwibm9uLXRhZ2dpbmdcIjtcbiAgICAgICAgY29uc3QgaXNOb3RTZWxlY3RlZCA9XG4gICAgICAgICAgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQgJiZcbiAgICAgICAgICAhZHVwbGljYXRlQ2hpbGRJZHMuaW5jbHVkZXMoaW1nLnRlbXBsZCk7XG4gICAgICAgIHJldHVybiBpc05vblRhZ2dpbmcgJiYgaXNOb3RTZWxlY3RlZDtcbiAgICAgIH0pO1xuXG4gICAgICAvLyA0LiBNZXJnZSBkdXBsaWNhdGUgY2hpbGRyZW4gKyBvdGhlciBub24tdGFnZ2luZyBpbWFnZXNcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IFsuLi5kdXBsaWNhdGVDaGlsZHJlbiwgLi4ubm9uVGFnZ2luZ0ltYWdlc107XG5cbiAgICAgIC8vIDUuIE1hcmsgc2VsZWN0ZWQ6IG9ubHkgZHVwbGljYXRlIGltYWdlcyB0aGF0IHdlcmUgbWFya2VkIGlzQ2hlY2tlZFxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZvckVhY2goKGltZzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzRHVwbGljYXRlID1cbiAgICAgICAgICAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKSA9PT0gXCJkdXBsaWNhdGVcIjtcbiAgICAgICAgaW1nLnNlbGVjdGVkID0gaXNEdXBsaWNhdGUgJiYgaW1nLmlzQ2hlY2tlZCA9PT0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyA2LiBTdG9yZSBvcmlnaW5hbCBjaGVja2VkIElEcyB0byBjb21wYXJlIGxhdGVyIGR1cmluZyBzdWJtaXRcbiAgICAgIHRoaXMub3JpZ2luYWxDaGVja2VkRHVwbGljYXRlSWRzID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XG4gICAgICAgIC5maWx0ZXIoKGltZzogYW55KSA9PiBpbWcuaXNDaGVja2VkID09PSB0cnVlKVxuICAgICAgICAubWFwKChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCk7XG5cbiAgICAgIC8vIOKchSA3LiBGaWxsIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCB3aXRoIHByZS1zZWxlY3RlZCBkdXBsaWNhdGVzXG4gICAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgIChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpID09PSBcImR1cGxpY2F0ZVwiICYmXG4gICAgICAgICAgICBpbWcuaXNDaGVja2VkID09PSB0cnVlXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgoaW1nOiBhbnkpID0+ICh7XG4gICAgICAgICAgLi4uaW1nLFxuICAgICAgICAgIHBhcmVudDogaW1nLnBhcmVudCB8fCBzZWxlY3RlZFRlbXBsZCxcbiAgICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm90IGR1cGxpY2F0ZSB0eXBlIOKGkiBzaG93IG9ubHkgc2VsZWN0ZWQgdHlwZSAoZXhjbHVkaW5nIHRoZSBjdXJyZW50IHNlbGVjdGVkIGltYWdlKVxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaW1nVHlwZSA9IChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gaW1nVHlwZSA9PT0gdHlwZSAmJiBpbWcudGVtcGxkICE9PSBzZWxlY3RlZFRlbXBsZDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGJhY2tUb0Zvb3RmYWxsMSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XG4gICAgdGhpcy5zcGxpdFNjcmVlbkVuYWJsZWQgPSBmYWxzZTsgLy8gRGlzYWJsZSBzcGxpdC1zY3JlZW4gd2hlbiBnb2luZyBiYWNrXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcbiAgfVxuICBzZWxlY3RJbWFnZUFycmF5OiBhbnk7XG4gIHJlbWFpbmluZ0ltYWdlQXJyYXk6IGFueTtcbiAgcmV2b3BzVHlwZVZhbHVlID0gZmFsc2U7XG5cbiAgZWRpdEJ0blNob3cgPSBmYWxzZTtcbiAgc2VsZWN0SW1hZ2VGb3JTcGxpdFZpZXcob2JqOiBhbnkpIHtcbiAgICB0aGlzLnNwbGl0U2NyZWVuRW5hYmxlZCA9IHRydWU7IC8vIEVuYWJsZSBzcGxpdC1zY3JlZW4gd2hlbiBpbWFnZSBpcyBjbGlja2VkXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gb2JqO1xuICAgIFxuICAgIC8vIElmIGR1cGxpY2F0ZSBpcyBhbHJlYWR5IHNlbGVjdGVkLCBwcmVzZXJ2ZSB0aGUgZHVwbGljYXRlIGNvbnRleHRcbiAgICBjb25zdCBpc0R1cGxpY2F0ZU1vZGUgPSB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSBcImR1cGxpY2F0ZVwiO1xuICAgIFxuICAgIGlmICghaXNEdXBsaWNhdGVNb2RlKSB7XG4gICAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IFtdOyAvLyBSZXNldCByZW1haW5pbmcgaW1hZ2VzIGluaXRpYWxseVxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTsgLy8gUmVzZXQgZ3JvdXBzXG4gICAgfVxuICAgIFxuICAgIGxldCBmaWx0ZXJlZEJ5VHlwZTogYW55W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZFR5cGUgPSBvYmoucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIElmIHdlJ3JlIGluIGR1cGxpY2F0ZSBtb2RlIGFuZCBjbGlja2luZyBvbiBhIHJlbWFpbmluZyBpbWFnZSwga2VlcCB0aGUgZHVwbGljYXRlIGNvbnRleHRcbiAgICBpZiAoaXNEdXBsaWNhdGVNb2RlKSB7XG4gICAgICAvLyBLZWVwIHRoZSBleGlzdGluZyByZW1haW5pbmcgaW1hZ2VzIGJ1dCB1cGRhdGUgdGhlIHNlbGVjdGVkIGltYWdlXG4gICAgICAvLyBEb24ndCByZXNldCB0aGUgZHVwbGljYXRlIHNlbGVjdGlvbiBjb250ZXh0XG4gICAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlOyAvLyBBbGxvdyBlZGl0aW5nIHRoaXMgaW1hZ2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gXCJcIjsgLy8gUmVzZXQgdG8gYWxsb3cgbmV3IHNlbGVjdGlvblxuICAgICAgLy8gS2VlcCBzZWxlY3RlZFJhZGlvVHlwZSBhcyAnZHVwbGljYXRlJyB0byBtYWludGFpbiBjb250ZXh0XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZFR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiYgQXJyYXkuaXNBcnJheShvYmouZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBvYmouZHVwbGljYXRlSW1hZ2VQYXRoLm1hcCgoY2hpbGQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGVkID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbmQoXG4gICAgICAgICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkID09PSBjaGlsZC50ZW1wSWRcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAuLi4obWF0Y2hlZCB8fCB7fSksXG4gICAgICAgICAgcGFyZW50OiBvYmoudGVtcGxkLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBmaWx0ZXJlZEJ5VHlwZSA9IFtvYmosIC4uLmNoaWxkcmVuXTtcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSAwO1xuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gY2hpbGRyZW47XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBub24tZHVwbGljYXRlIGltYWdlcywgZG9uJ3QgcG9wdWxhdGUgcmVtYWluaW5nSW1hZ2VBcnJheSBpbml0aWFsbHlcbiAgICAgIC8vIEl0IHdpbGwgYmUgcG9wdWxhdGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcmFkaW8gYnV0dG9uXG4gICAgICBmaWx0ZXJlZEJ5VHlwZSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoXG4gICAgICAgIChpbWc6IGFueSkgPT4gaW1nLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkVHlwZVxuICAgICAgKTtcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSBmaWx0ZXJlZEJ5VHlwZS5maW5kSW5kZXgoXG4gICAgICAgIChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCA9PT0gb2JqLnRlbXBsZFxuICAgICAgKTtcbiAgICAgIC8vIE9ubHkgc2V0IHJlbWFpbmluZ0ltYWdlQXJyYXkgaWYgdGhlcmUgYXJlIG90aGVyIGltYWdlcyBvZiB0aGUgc2FtZSB0eXBlXG4gICAgICAvLyBPdGhlcndpc2UsIGxlYXZlIGl0IGVtcHR5IGZvciByYWRpbyBidXR0b24gc2VsZWN0aW9uIHRvIHBvcHVsYXRlXG4gICAgICBpZiAoZmlsdGVyZWRCeVR5cGUubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBmaWx0ZXJlZEJ5VHlwZS5maWx0ZXIoXG4gICAgICAgICAgKF86IGFueSwgaTogbnVtYmVyKSA9PiBpICE9PSB0aGlzLmN1cnJlbnRJbWFnZUluZGV4XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT25seSBhdXRvLXNldCByZXZvcHNUeXBlVmFsdWUgaWYgbm90IGluIGR1cGxpY2F0ZSBtb2RlXG4gICAgaWYgKCFpc0R1cGxpY2F0ZU1vZGUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImR1cGxpY2F0ZVwiIHx8XG4gICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJlbXBsb3llZVwiIHx8XG4gICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCIgfHwgb2JqPy5yZXZvcHNUeXBlID09PVwianVua1wiXG4gICAgICApIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxuICAgICAgICAgIG9iaj8uZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJlbXBsb3llZVwiIHx8XG4gICAgICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImhvdXNlLWtlZXBpbmdcIiB8fCBvYmo/LnJldm9wc1R5cGUgPT09XCJqdW5rXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBvYmo/LnJldm9wc1R5cGU7XG4gICAgICAgIHRoaXMub25SYWRpb0NoYW5nZShvYmo/LnJldm9wc1R5cGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJbiBkdXBsaWNhdGUgbW9kZSwgYWxsb3cgZWRpdGluZyB0aGUgc2VsZWN0ZWQgaW1hZ2VcbiAgICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLmVkaXRCdG5TaG93ID0gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIC8vIEJ1aWxkIHJlbWFpbmluZyBpbWFnZXMgZ3JvdXBzIGJ5IHRpbWUgcmFuZ2VcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gIH1cblxuICBpbWdGdWxsVmlldyhvYmo6IGFueSkge1xuICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBvYmo7XG4gIHRoaXMuaW1hZ2VGbG93ID0gdHJ1ZTtcbiAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcbiAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICBsZXQgZmlsdGVyZWRCeVR5cGU6IGFueVtdID0gW107XG4gIGNvbnN0IHNlbGVjdGVkVHlwZSA9IG9iai5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChzZWxlY3RlZFR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiYgQXJyYXkuaXNBcnJheShvYmouZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xuICAgIC8vIPCflLkgQ2FzZSAxOiBEdXBsaWNhdGUgcGFyZW50IOKGkiBzaG93IG9ubHkgcGFyZW50ICsgaXRzIGNoaWxkcmVuXG4gICAgY29uc3QgY2hpbGRyZW4gPSBvYmouZHVwbGljYXRlSW1hZ2VQYXRoLm1hcCgoY2hpbGQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hlZCA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maW5kKFxuICAgICAgICAoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IGNoaWxkLnRlbXBJZFxuICAgICAgKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAuLi4obWF0Y2hlZCB8fCB7fSksXG4gICAgICAgIHBhcmVudDogb2JqLnRlbXBsZCxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBmaWx0ZXJlZEJ5VHlwZSA9IFtvYmosIC4uLmNoaWxkcmVuXTtcblxuICAgIC8vIGN1cnJlbnQgaW5kZXggYWx3YXlzIDAgKHBhcmVudCBmaXJzdClcbiAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID0gMDtcblxuICAgIC8vIHJlbWFpbmluZyA9IGNoaWxkcmVuIG9ubHlcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBjaGlsZHJlbjtcbiAgfSBlbHNlIHtcbiAgICAvLyDwn5S5IENhc2UgMjogTm9ybWFsIOKGkiBmaWx0ZXIgYnkgc2FtZSB0eXBlXG4gICAgZmlsdGVyZWRCeVR5cGUgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxuICAgICAgKGltZzogYW55KSA9PiBpbWcucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gc2VsZWN0ZWRUeXBlXG4gICAgKTtcblxuICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSBmaWx0ZXJlZEJ5VHlwZS5maW5kSW5kZXgoXG4gICAgICAoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IG9iai50ZW1wbGRcbiAgICApO1xuXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gZmlsdGVyZWRCeVR5cGUuZmlsdGVyKFxuICAgICAgKF86IGFueSwgaTogbnVtYmVyKSA9PiBpICE9PSB0aGlzLmN1cnJlbnRJbWFnZUluZGV4XG4gICAgKTtcbiAgfVxuXG5cbiAgLy8g4pyFIEhhbmRsZSBlZGl0IGJ1dHRvbiAvIHJhZGlvIGxvZ2ljXG4gIGlmIChcbiAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZHVwbGljYXRlXCIgfHxcbiAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxuICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCIgfHwgb2JqPy5yZXZvcHNUeXBlID09PVwianVua1wiXG4gICkge1xuICAgIGlmIChcbiAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxuICAgICAgb2JqPy5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxuICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImhvdXNlLWtlZXBpbmdcIiB8fCBvYmo/LnJldm9wc1R5cGUgPT09XCJqdW5rXCJcbiAgICApIHtcbiAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVkaXRCdG5TaG93ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gb2JqPy5yZXZvcHNUeXBlO1xuICAgIHRoaXMub25SYWRpb0NoYW5nZShvYmo/LnJldm9wc1R5cGUpO1xuICB9XG59XG5cblxuICBpbWdTd2FwKG9iajogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0SW1hZ2VBcnJheSkge1xuICAgICAgLy8gRmluZCB3aGVyZSB0aGUgbmV3IHNlbGVjdGVkIGltYWdlIGlzIGluIHRoZSBsaXN0XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5maW5kSW5kZXgoXG4gICAgICAgIChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCA9PT0gb2JqLnRlbXBsZFxuICAgICAgKTtcblxuICAgICAgLy8gUmVwbGFjZSBzZWxlY3RlZEltYWdlQXJyYXkgYmFjayBpbnRvIGl0cyBvcmlnaW5hbCBwb3NpdGlvblxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlbaW5kZXhdID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZmFsbGJhY2sgaWYgbm90IGZvdW5kXG4gICAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5wdXNoKHRoaXMuc2VsZWN0SW1hZ2VBcnJheSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNlbGVjdGVkIGltYWdlXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gb2JqO1xuXG4gICAgLy8gUmVtb3ZlIHNlbGVjdGVkIGZyb20gcmVtYWluaW5nIGxpc3RcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZmlsdGVyKFxuICAgICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkICE9PSBvYmoudGVtcGxkXG4gICAgKTtcblxuICAgIC8vIFJlYnVpbGQgcmVtYWluaW5nIGltYWdlcyBncm91cHNcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gICAgXG4gICAgdGhpcy5pbWFnZUZsb3cgPSB0cnVlO1xuICB9XG5cbiAgc2VsZWN0ZWRUeXBlOiBhbnkgPSBcIlwiOyAvLyBkZWZhdWx0IHNlbGVjdGVkXG4gIHNlbGVjdGVkUmFkaW9UeXBlOiBhbnk7XG4gIG9uUmFkaW9DaGFuZ2UodmFsOiBhbnkpIHtcbiAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHZhbDtcbiAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSBbXTtcblxuICBjb25zdCB0eXBlID0gKHZhbCB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmICh0eXBlID09PSBcImR1cGxpY2F0ZVwiKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpID09PSBcImR1cGxpY2F0ZVwiICYmXG4gICAgICBBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0SW1hZ2VBcnJheT8uZHVwbGljYXRlSW1hZ2VQYXRoKSAmJlxuICAgICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5LmR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICAvLyDwn5S5IENhc2UgMTogQWxyZWFkeSBpbiBkdXBsaWNhdGUgZmxvdyDihpIga2VlcCBjaGlsZHJlbiBzZXQgYnkgc2VsZWN0SW1hZ2VGb3JTcGxpdFZpZXdcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5tYXAoKGNoaWxkOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uY2hpbGQsIHNlbGVjdGVkOiBmYWxzZSwgaXNDaGVja2VkOiBmYWxzZSB9O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIPCflLkgQ2FzZSAyOiBSYWRpbyBkdXBsaWNhdGUgZm9yIG5vbi1kdXBsaWNhdGUgcGFyZW50IOKGkiBzaG93IG5vbi10YWdnaW5nIGltYWdlc1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZDtcblxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaW1nVHlwZSA9IChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gaW1nVHlwZSA9PT0gXCJub24tdGFnZ2luZ1wiICYmIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xuICAgICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgaW1nLmlzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFJlYnVpbGQgcmVtYWluaW5nIGltYWdlcyBncm91cHMgYWZ0ZXIgdXBkYXRpbmdcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gICAgY29uc29sZS5sb2coJ3JlbWFpbiBpbWFnZSBhcnJheSA6OicsIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSlcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3Igbm9uLWR1cGxpY2F0ZSB0eXBlcywgY2xlYXIgcmVtYWluaW5nIGltYWdlc1xuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IFtdO1xuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VzR3JvdXBzID0gW107XG4gIH1cbn1cblxuXG4gIHR5cGU6IGFueSA9IFwiZm9vdGZhbGxcIjtcbiAgc2VsZWN0UGxhblRyZW5kcyh0eXBlOiBhbnkpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVycygpIHtcbiAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xuICAgIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkID0gZmFsc2U7IC8vIFJlc2V0IHNwbGl0LXNjcmVlbiB3aGVuIGZpbHRlcnMgY2hhbmdlXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcblxuICAgIC8vIENvbnZlcnQgdHlwZSB0byBsb3dlcmNhc2Ugc2FmZWx5XG4gICAgY29uc3Qgc2VsZWN0ZWRUeXBlID0gdGhpcy50eXBlPy50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKHNlbGVjdGVkVHlwZSA9PT0gXCJmb290ZmFsbFwiKSB7XG4gICAgICAvLyBGb290ZmFsbCBzaG93cyBhbGwgY3VycmVudFRpbWVSYW5nZURhdGEgKHRpbWUgcmFuZ2UgYmFzZWQpXG4gICAgICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IFsuLi50aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIHRhZ2dlZCB0eXBlcyBsaWtlICdkdXBsaWNhdGUnLCAnZW1wbG95ZWUnLCAnaG91c2VrZWVwaW5nJ1xuICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkVHlwZVxuICAgICAgKTtcbiAgICB9XG4gICAgLy8gZWxzZSB7XG4gICAgLy8gICAvLyBOb24tdGFnZ2luZyBtZWFucyBubyByZXZvcHNUeXBlIC0gc2hvdyBhbGwgdW5tYXRjaGVkIChubyB0YWcpXG4gICAgLy8gICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IHRoaXMuY3VycmVudFRpbWVSYW5nZURhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgLy8gICAgICFpdGVtLnJldm9wc1R5cGVcbiAgICAvLyAgICk7XG4gICAgLy8gfVxuXG4gICAgLy8gU2V0IG5vRGF0YSBiYXNlZCBvbiByZXN1bHRcbiAgICB0aGlzLm5vRGF0YSA9ICF0aGlzLmltYWdlc0FycmF5RGF0YT8ubGVuZ3RoO1xuXG4gICAgdGhpcy5idWlsZExpc3RWaWV3R3JvdXBzKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgc2V0Vmlld01vZGUobW9kZTogXCJncmlkXCIgfCBcImxpc3RcIikge1xuICAgIGlmICh0aGlzLnZpZXdNb2RlICE9PSBtb2RlKSB7XG4gICAgICB0aGlzLnZpZXdNb2RlID0gbW9kZTtcbiAgICB9XG4gIH1cblxuICAvLyBDb252ZXJ0IG1pbnV0ZXMg4oaSIGhyICsgbWluc1xuICAgIGNvbnZlcnRNaW51dGVzKHRvdGFsTWludXRlczogbnVtYmVyKSB7XG4gICAgICBpZiAoIXRvdGFsTWludXRlcyAmJiB0b3RhbE1pbnV0ZXMgIT09IDApIHJldHVybiB7IGhvdXJzOiAwLCBtaW5zOiAwIH07XG4gICAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodG90YWxNaW51dGVzIC8gNjApO1xuICAgICAgY29uc3QgbWlucyA9IHRvdGFsTWludXRlcyAlIDYwO1xuICAgICAgcmV0dXJuIHsgaG91cnMsIG1pbnMgfTtcbiAgICB9XG5cbiAgcmVtYWluaW5nSW1hZ2VzR3JvdXBzOiBBcnJheTx7IHRpbWVSYW5nZTogc3RyaW5nOyBkYXRhOiBhbnlbXSB9PiA9IFtdO1xuXG4gIHByaXZhdGUgYnVpbGRSZW1haW5pbmdJbWFnZXNHcm91cHMoKSB7XG4gICAgaWYgKCF0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgfHwgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcmRlcjogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XG5cbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZm9yRWFjaCgoaW1nOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGltZz8udGltZVJhbmdlIHx8IFwiTkFcIjtcbiAgICAgIGlmICghbWFwLmhhcyhrZXkpKSB7XG4gICAgICAgIG1hcC5zZXQoa2V5LCBbXSk7XG4gICAgICAgIG9yZGVyLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICAgIG1hcC5nZXQoa2V5KT8ucHVzaChpbWcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBvcmRlci5tYXAoKGtleSkgPT4gKHtcbiAgICAgIHRpbWVSYW5nZToga2V5LFxuICAgICAgZGF0YTogbWFwLmdldChrZXkpIHx8IFtdLFxuICAgIH0pKTtcblxuICAgIGNvbnNvbGUubG9nKCdteSBtZXRoZCA9PicsIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSlcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMaXN0Vmlld0dyb3VwcygpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBcImZvb3RmYWxsXCIpIHtcbiAgICAgIHRoaXMubGlzdFZpZXdHcm91cHMgPSAodGhpcy5hbGxGb290ZmFsbERhdGEgfHwgW10pXG4gICAgICAgIC5maWx0ZXIoKGdyb3VwOiBhbnkpID0+IEFycmF5LmlzQXJyYXkoZ3JvdXA/LmRhdGEpICYmIGdyb3VwLmRhdGEubGVuZ3RoKVxuICAgICAgICAubWFwKChncm91cDogYW55KSA9PiAoe1xuICAgICAgICAgIHRpbWVSYW5nZTogZ3JvdXA/LnRpbWVSYW5nZSB8fCBcIk5BXCIsXG4gICAgICAgICAgZGF0YTogZ3JvdXA/LmRhdGEgfHwgW10sXG4gICAgICAgIH0pKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcmRlcjogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XG5cbiAgICAodGhpcy5pbWFnZXNBcnJheURhdGEgfHwgW10pLmZvckVhY2goKGltZzogYW55KSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBpbWc/LnRpbWVSYW5nZSB8fCBcIk5BXCI7XG4gICAgICBpZiAoIW1hcC5oYXMoa2V5KSkge1xuICAgICAgICBtYXAuc2V0KGtleSwgW10pO1xuICAgICAgICBvcmRlci5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgICBtYXAuZ2V0KGtleSk/LnB1c2goaW1nKTtcbiAgICB9KTtcblxuICAgIHRoaXMubGlzdFZpZXdHcm91cHMgPSBvcmRlci5tYXAoKGtleSkgPT4gKHtcbiAgICAgIHRpbWVSYW5nZToga2V5LFxuICAgICAgZGF0YTogbWFwLmdldChrZXkpIHx8IFtdLFxuICAgIH0pKTtcbiAgfVxuICBoYW5kbGVJbWFnZUNsaWNrKGV2dDogYW55LCBvYmo6IGFueSkge1xuICAgIC8vIFdoZW4gZHVwbGljYXRlIGlzIHNlbGVjdGVkLCBjbGlja2luZyBvbiBpbWFnZXMgc2hvdWxkIG9wZW4gdGhlbSBpbiB6b29tIG1vZGFsXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPT09IFwiZHVwbGljYXRlXCIgJiYgdGhpcy5zcGxpdFNjcmVlbkVuYWJsZWQpIHtcbiAgICAgIC8vIE9wZW4gaW1hZ2UgaW4gem9vbSBtb2RhbCB3aGVuIGR1cGxpY2F0ZSBpcyBzZWxlY3RlZFxuICAgICAgLy8gU3RvcmUgdGhlIGNsaWNrZWQgaW1hZ2UgdGVtcG9yYXJpbHkgZm9yIG1vZGFsIGRpc3BsYXlcbiAgICAgIHRoaXMub3BlbkltYWdlWm9vbU1vZGFsKHRoaXMuaW1hZ2VVcmwsIG9iaik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIEZvciBzcGxpdC1zY3JlZW4gdmlldywgY2xpY2tpbmcgb24gcmVsYXRlZCBpbWFnZXMgc2hvdWxkIHN3YXAgdG8gdGhhdCBpbWFnZVxuICAgIGlmICh0aGlzLnNwbGl0U2NyZWVuRW5hYmxlZCAmJiB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlICE9PSBcImR1cGxpY2F0ZVwiKSB7XG4gICAgICB0aGlzLnNlbGVjdEltYWdlRm9yU3BsaXRWaWV3KG9iaik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkUmFkaW9UeXBlICE9PSBcImR1cGxpY2F0ZVwiKSB7XG4gICAgICB0aGlzLmltZ1N3YXAob2JqKTsgLy8gZXhpc3Rpbmcgbm9uLWR1cGxpY2F0ZSBjbGljayBiZWhhdmlvclxuICAgIH1cbiAgfVxuXG4gIHRlbXBNb2RhbEltYWdlOiBhbnkgPSBudWxsOyAvLyBUZW1wb3Jhcnkgc3RvcmFnZSBmb3IgbW9kYWwgaW1hZ2Ugd2hlbiBkdXBsaWNhdGUgaXMgc2VsZWN0ZWRcblxuICBvcGVuSW1hZ2Vab29tTW9kYWwoaW1hZ2VVcmw6IGFueSwgaW1hZ2VEYXRhOiBhbnkpIHtcbiAgICAvLyBTdG9yZSB0aGUgaW1hZ2UgZGF0YSB0ZW1wb3JhcmlseSBmb3IgbW9kYWwgZGlzcGxheVxuICAgIHRoaXMudGVtcE1vZGFsSW1hZ2UgPSBpbWFnZURhdGE7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuaW1hZ2VQb3B1cCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICBzaXplOiBcImxnXCIsXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuICBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Q6IGFueSA9IFtdO1xuXG4gIHRvZ2dsZUR1cGxpY2F0ZVNlbGVjdGlvbihpbWc6IGFueSkge1xuICAgIGlmICghaW1nIHx8IGltZy5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0b3RhbEltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5sZW5ndGg7XG4gICAgY29uc3QgYWxyZWFkeVRhZ2dlZENvdW50ID0gdGhpcy5jb3VudERhdGE/LmR1cGxpY2F0ZSB8fCAwO1xuICAgIGNvbnN0IG1heFNlbGVjdGFibGUgPSBNYXRoLnJvdW5kKHRvdGFsSW1hZ2VzICogMC4yKTtcbiAgICBjb25zdCBjdXJyZW50bHlTZWxlY3RlZENvdW50ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZpbHRlcihcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWRcbiAgICApLmxlbmd0aDtcblxuICAgIGNvbnN0IHdpbGxTZWxlY3QgPSAhaW1nLnNlbGVjdGVkO1xuXG4gICAgLy8g4puUIEJsb2NrIHNlbGVjdGlvbiBpZiB0cnlpbmcgdG8gZ28gYmV5b25kIDIwJSBjYXBcbiAgICBpZiAoXG4gICAgICB3aWxsU2VsZWN0ICYmXG4gICAgICBjdXJyZW50bHlTZWxlY3RlZENvdW50ICsgYWxyZWFkeVRhZ2dlZENvdW50ID49IG1heFNlbGVjdGFibGVcbiAgICApIHtcbiAgICAgIHRoaXMudG9hc3QuZ2V0V2FybmluZ1RvYXN0KFxuICAgICAgICBgWW91IGNhbiBzZWxlY3Qgb25seSAke21heFNlbGVjdGFibGV9IGltYWdlcyAoJHtcbiAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0Py5kYXRhPy5jb25maWc/LmR1cGxpY2F0ZSA/PyBcIjIwJVwiXG4gICAgICAgIH0gb2YgdG90YWwgZm9vdGZhbGwpYFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyDinIUgUHJvY2VlZCB3aXRoIHNlbGVjdGlvbiB0b2dnbGVcbiAgICBpbWcuc2VsZWN0ZWQgPSAhaW1nLnNlbGVjdGVkO1xuICAgIGltZy5pc0NoZWNrZWQgPSBpbWcuc2VsZWN0ZWQ7XG5cbiAgICAvLyDinIUgQWx3YXlzIHJlYnVpbGQgdGhlIHNlbGVjdGVkIGxpc3RcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxuICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnNlbGVjdGVkKVxuICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBwYXJlbnQ6IGl0ZW0ucGFyZW50IHx8IHRoaXMuc2VsZWN0SW1hZ2VBcnJheT8udGVtcGxkLFxuICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXG4gICAgICB9KSk7XG5cbiAgICAvLyBSZWJ1aWxkIHJlbWFpbmluZyBpbWFnZXMgZ3JvdXBzIGFmdGVyIGNoZWNrYm94IGNoYW5nZVxuICAgIHRoaXMuYnVpbGRSZW1haW5pbmdJbWFnZXNHcm91cHMoKTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uSW1hZ2VDaGVja2JveENoYW5nZShldnQ6IGFueSwgaW1nOiBhbnksIHR5cGU6IHN0cmluZykge1xuICAgIGlmICh0eXBlID09PSBcImR1cGxpY2F0ZVwiKSB7XG4gICAgICAvLyBVc2UgdGhlIHRvZ2dsZSBtZXRob2QgZm9yIGR1cGxpY2F0ZSBzZWxlY3Rpb25cbiAgICAgIHRoaXMudG9nZ2xlRHVwbGljYXRlU2VsZWN0aW9uKGltZyk7XG4gICAgICAvLyBVcGRhdGUgY2hlY2tib3ggc3RhdGUgdG8gbWF0Y2ggc2VsZWN0aW9uXG4gICAgICBpZiAoZXZ0ICYmIGV2dC50YXJnZXQpIHtcbiAgICAgICAgZXZ0LnRhcmdldC5jaGVja2VkID0gaW1nLnNlbGVjdGVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyVmFsdWUoKSB7XG4gICAgdGhpcy5zYXZlKFwibm9uLXRhZ2dpbmdcIik7XG4gICAgLy8gdGhpcy5zdWJtaXRWYWx1ZSgnbm9uLXRhZ2dpbmcnKVxuICB9XG4gIGNhbmNlbCgpIHtcbiAgICAvLyAxLiBDbGVhciBzZWxlY3RlZCBkdXBsaWNhdGUgaW1hZ2VzIGxpc3RcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IFtdO1xuXG4gICAgLy8gMi4gUmVzZXQgYWxsIGNoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMgaW4gb3ZlcmFsbCBpbWFnZSBsaXN0XG4gICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLm1hcCgoaW1nOiBhbnkpID0+ICh7XG4gICAgICAuLi5pbWcsXG4gICAgICBpc0NoZWNrZWQ6IGZhbHNlLFxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLCAvLyBhc3N1bWluZyAnc2VsZWN0ZWQnIGlzIGNoZWNrYm94IGJpbmRcbiAgICAgIHBhcmVudDogbnVsbCwgLy8gcmVzZXQgcGFyZW50IGlmIHVzZWRcbiAgICAgIC8vIEFkZCBvdGhlciBmbGFncyBoZXJlIGlmIG5lZWRlZFxuICAgIH0pKTtcblxuICAgIC8vIDMuIENsb3NlIGltYWdlIGZsb3cvZnVsbC12aWV3IGlmIG9wZW5cbiAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xuXG4gICAgLy8gNC4gUmVzZXQgc3BsaXQtc2NyZWVuIGFuZCBzZWxlY3RlZCBpbWFnZVxuICAgIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcbiAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID0gMDtcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbXTtcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlc0dyb3VwcyA9IFtdO1xuXG4gICAgLy8gNS4gKE9wdGlvbmFsKSBSZXNldCByYWRpbyBidXR0b25zIOKAlCBpZiB5b3UgaGF2ZSBhbnkgc3BlY2lmaWMgZmxhZ1xuICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gZmFsc2U7XG4gIH1cbiAgcG9wdXBUeXBlOiBhbnk7XG4gIEBWaWV3Q2hpbGQoXCJ6b29tUG9wdXBcIikgem9vbVBvcHVwOiBFbGVtZW50UmVmO1xuICBzYXZlKGNhdGVnb3J5OiBhbnkpIHtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy56b29tUG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJtZFwiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsIC8vIFByZXZlbnQgY2xvc2luZyBvbiBvdXRzaWRlIGNsaWNrXG4gICAgICBrZXlib2FyZDogZmFsc2UsIC8vIFByZXZlbnQgY2xvc2luZyBvbiBFU0Mga2V5XG4gICAgfSk7XG4gICAgdGhpcy5wb3B1cFR5cGUgPSBjYXRlZ29yeTtcbiAgfVxuXG4gIGNhbmNlbFN1Ym1pdCgpIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XG5cbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IFtdO1xuICB9XG4gIHN1Ym1pdFZhbHVlKGNhdGVnb3J5OiBhbnkpIHtcbiAgICBsZXQgZHVwbGljYXRlSW1hZ2VzID0gW107XG5cbiAgICBpZiAoY2F0ZWdvcnkgPT09IFwiZHVwbGljYXRlXCIpIHtcbiAgICAgIGR1cGxpY2F0ZUltYWdlcyA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxuICAgICAgICAuZmlsdGVyKChpbWc6IGFueSkgPT4gaW1nLnNlbGVjdGVkID09PSB0cnVlKVxuICAgICAgICAubWFwKChpbWc6IGFueSkgPT4gKHtcbiAgICAgICAgICB0ZW1wSWQ6IGltZy50ZW1wbGQgfHwgaW1nLnRlbXBJZCB8fCBcIlwiLFxuICAgICAgICAgIHRpbWVSYW5nZTogaW1nLnRpbWVSYW5nZSB8fCBcIlwiLFxuICAgICAgICAgIGVudHJ5VGltZTogaW1nLmVudHJ5VGltZSB8fCBpbWcuZW50cnlUbWUgfHwgXCJcIixcbiAgICAgICAgICBleGl0VGltZTogaW1nLmV4aXRUaW1lIHx8IFwiXCIsXG4gICAgICAgICAgZmlsZVBhdGg6IGltZy5maWxlUGF0aCxcbiAgICAgICAgICByZXZvcHNUeXBlOiBcImR1cGxpY2F0ZVwiLFxuICAgICAgICAgIGlzQ2hlY2tlZDogdHJ1ZSxcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNvbnN0IGltZyA9IHRoaXMuc2VsZWN0SW1hZ2VBcnJheTtcblxuICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgIHN0b3JlSWQ6XG4gICAgICAgIHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMuc3RvcmVJZGFycmF5WzBdXG4gICAgICAgICAgOiBudWxsLFxuICAgICAgZGF0ZVN0cmluZzogdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCIsXG4gICAgICB0ZW1wSWQ6IGltZz8udGVtcGxkIHx8IDAsXG4gICAgICByZXZvcHNUeXBlOiBjYXRlZ29yeSxcbiAgICAgIHRpbWVSYW5nZTogaW1nPy50aW1lUmFuZ2UgfHwgXCJcIixcbiAgICAgIGlzQ2hlY2tlZDogdHJ1ZSxcbiAgICAgIGR1cGxpY2F0ZUltYWdlOiBkdXBsaWNhdGVJbWFnZXMsXG4gICAgICBwcm9jZXNzVHlwZTogaW1nPy5wcm9jZXNzVHlwZSB8fCBcImZvb3RmYWxsXCIsXG4gICAgICBlbnRyeVRpbWU6IGltZz8uZW50cnlUaW1lIHx8IGltZz8uZW50cnlUbWUgfHwgXCJcIixcbiAgICAgIGV4aXRUaW1lOiBpbWc/LmV4aXRUaW1lIHx8IFwiXCIsXG4gICAgICBmaWxlUGF0aDogaW1nPy5maWxlUGF0aCB8fCBcIlwiLFxuICAgICAgY29tbWVudHM6IHRoaXMudXNlckNvbW1lbnQgfHwgXCJcIixcbiAgICAgIG1vZGU6ICd3ZWInXG4gICAgfTtcblxuICAgIHRoaXMucnZwc1NlcnZpY2VcbiAgICAgIC5nZXRSdnBzVGFnKG9iailcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFxuICAgICAgICAgICAgICByZXM/Lm1lc3NhZ2UgfHwgXCJUaWNrZXQgdXBkYXRlZCBzdWNjZXNzZnVsbHlcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmdldFJldm9wcygpO1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxTdWJtaXQoKTtcbiAgICAgICAgICAgIHRoaXMubG9hZENhcmREYXRhKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJGYWlsZWQgdG8gdXBkYXRlXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9XG4gICAgICAgICAgICBlcnIuZXJyb3I/LmVycm9yIHx8IGVyci5lcnJvciB8fCBlcnI/Lm1lc3NhZ2UgfHwgXCJVbmtub3duIGVycm9yXCI7XG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIG5vRGF0YU1lc3NhZ2VzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGR1cGxpY2F0ZTogXCJObyBkdXBsaWNhdGVzIGZvdW5kXCIsXG4gICAgZW1wbG95ZWU6IFwiTm8gZW1wbG95ZWUvc3RhZmYgZm91bmRcIixcbiAgICBcImhvdXNlLWtlZXBpbmdcIjogXCJObyBob3VzZSBrZWVwaW5nIGZvdW5kXCIsXG4gICAgXCJub24tdGFnZ2luZ1wiOiBcIk5vIG5vbi10YWdnaW5nIGZvdW5kXCIsXG4gICAganVuazogXCJObyBqdW5rIGZvdW5kXCJcbiAgfTtcblxuICB0ZW1wUmFpc2VkUGF5bG9hZDogYW55ID0gbnVsbDsgLy8gY2xhc3MtbGV2ZWwgdmFyaWFibGUgZm9yIHByZXZpZXdcblxuICBwcmVwYXJlUmFpc2VkUGF5bG9hZChzaG93T25seSA9IGZhbHNlKTogYW55IHt9XG5cbiAgQFZpZXdDaGlsZChcInJhaXNlZFBvcHVwXCIpIHJhaXNlZFBvcHVwOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKFwicmVzZXRSZXF1ZXN0UG9wdXBcIikgcmVzZXRSZXF1ZXN0UG9wdXA6IEVsZW1lbnRSZWY7XG4gIFJhaXNlZCgpIHtcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgICBkYXRlU3RyaW5nOiB0aGlzLmZvbGRlckRhdGUsXG4gICAgICBzdG9yZUlkOiB0aGlzLnN0b3JlSWRhcnJheT8ubGVuZ3RoID4gMCA/IHRoaXMuc3RvcmVJZGFycmF5WzBdIDogbnVsbCxcbiAgICAgIHRpY2tldE5hbWU6IFwiZm9vdGZhbGwtZGlyZWN0b3J5XCIsXG4gICAgICBmb290ZmFsbENvdW50OiAwLFxuICAgICAgZHVwbGljYXRlQ291bnQ6IDAsXG4gICAgICBlbXBsb3llZUNvdW50OiAwLFxuICAgICAgaG91c2VLZWVwaW5nQ291bnQ6IDAsXG4gICAgICBqdW5rQ291bnQ6MCxcbiAgICAgIGNvbW1lbnRzOiB0aGlzLmNvbW1lbnRUZXh0IHx8IFwiXCIsXG4gICAgICBkdXBsaWNhdGVJbWFnZXM6IFtdLFxuICAgICAgaG91c2VLZWVwaW5nOiBbXSxcbiAgICAgIGVtcGxveWVlOiBbXSxcbiAgICAgIGp1bms6IFtdLFxuICAgIH07XG5cbiAgICBsZXQgdG90YWxDaGVja2VkQ291bnQgPSAwO1xuXG4gICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IGl0ZW0ucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKT8udHJpbSgpO1xuICAgICAgY29uc3QgaXNDaGVja2VkID0gaXRlbS5pc0NoZWNrZWQgPT09IHRydWU7XG5cbiAgICAgIC8vIOKchSBDb3VudCBvbmx5IGlmIGl0ZW0gaXMgY2hlY2tlZCBBTkQgcmV2b3BzVHlwZSBpcyAnbm9uLXRhZ2dpbmcnXG4gICAgICAvLyBjb25zdCBpc05vdFRhZ2dlZCA9IHR5cGUgPT09ICdub24tdGFnZ2luZyc7XG5cbiAgICAgIC8vIGlmIChpc05vdFRhZ2dlZCkge1xuICAgICAgLy8gICB0b3RhbENoZWNrZWRDb3VudCsrO1xuICAgICAgLy8gfVxuXG4gICAgICAvLyBEVVBMSUNBVEUgVFlQRVxuICAgICAgaWYgKHR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiYgQXJyYXkuaXNBcnJheShpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aCkpIHtcbiAgICAgICAgY29uc3QgbmVzdGVkRGF0YSA9IGl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoXG4gICAgICAgICAgLmZpbHRlcigoZHVwOiBhbnkpID0+IGR1cC5pc0NoZWNrZWQpXG4gICAgICAgICAgLm1hcCgoZHVwOiBhbnkpID0+ICh7XG4gICAgICAgICAgICB0ZW1wSWQ6IGR1cC50ZW1wSWQgfHwgZHVwLnRlbXBsZCB8fCBcIlwiLFxuICAgICAgICAgICAgZmlsZVBhdGg6IGR1cC5maWxlUGF0aCxcbiAgICAgICAgICAgIGVudHJ5VGltZTogZHVwPy5lbnRyeVRpbWUgfHwgZHVwPy5lbnRyeVRtZSB8fCBcIlwiLFxuICAgICAgICAgICAgZXhpdFRpbWU6IGR1cC5leGl0VGltZSxcbiAgICAgICAgICAgIHRpbWVSYW5nZTogZHVwLnRpbWVSYW5nZSxcbiAgICAgICAgICAgIGlzQ2hlY2tlZDogZHVwLmlzQ2hlY2tlZCxcbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgaWYgKG5lc3RlZERhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHBheWxvYWQuZHVwbGljYXRlSW1hZ2VzLnB1c2goe1xuICAgICAgICAgICAgdGVtcElkOiBpdGVtLnRlbXBsZCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxuICAgICAgICAgICAgZW50cnlUaW1lOiBpdGVtPy5lbnRyeVRpbWUgfHwgaXRlbT8uZW50cnlUbWUgfHwgXCJcIixcbiAgICAgICAgICAgIGV4aXRUaW1lOiBpdGVtLmV4aXRUaW1lLFxuICAgICAgICAgICAgdGltZVJhbmdlOiBpdGVtLnRpbWVSYW5nZSxcbiAgICAgICAgICAgIGlzQ2hlY2tlZDogaXRlbS5pc0NoZWNrZWQsXG4gICAgICAgICAgICBkYXRhOiBuZXN0ZWREYXRhLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcGF5bG9hZC5kdXBsaWNhdGVDb3VudCArPSBuZXN0ZWREYXRhLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBFTVBMT1lFRVxuICAgICAgZWxzZSBpZiAodHlwZSA9PT0gXCJlbXBsb3llZVwiICYmIGlzQ2hlY2tlZCkge1xuICAgICAgICBwYXlsb2FkLmVtcGxveWVlLnB1c2goe1xuICAgICAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXG4gICAgICAgICAgZmlsZVBhdGg6IGl0ZW0uZmlsZVBhdGgsXG4gICAgICAgICAgZW50cnlUaW1lOiBpdGVtPy5lbnRyeVRpbWUgfHwgaXRlbT8uZW50cnlUbWUgfHwgXCJcIixcbiAgICAgICAgICBleGl0VGltZTogaXRlbS5leGl0VGltZSxcbiAgICAgICAgICB0aW1lUmFuZ2U6IGl0ZW0udGltZVJhbmdlLFxuICAgICAgICAgIGlzQ2hlY2tlZDogaXRlbS5pc0NoZWNrZWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHBheWxvYWQuZW1wbG95ZWVDb3VudCsrO1xuICAgICAgfVxuXG4gICAgICAvLyBIT1VTRUtFRVBJTkdcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT09IFwiaG91c2Uta2VlcGluZ1wiICYmIGlzQ2hlY2tlZCkge1xuICAgICAgICBwYXlsb2FkLmhvdXNlS2VlcGluZy5wdXNoKHtcbiAgICAgICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxuICAgICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxuICAgICAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgZXhpdFRpbWU6IGl0ZW0uZXhpdFRpbWUsXG4gICAgICAgICAgdGltZVJhbmdlOiBpdGVtLnRpbWVSYW5nZSxcbiAgICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxuICAgICAgICB9KTtcblxuICAgICAgICBwYXlsb2FkLmhvdXNlS2VlcGluZ0NvdW50Kys7XG4gICAgICB9IFxuICAgICAgZWxzZSBpZiAodHlwZSA9PT0gXCJqdW5rXCIgJiYgaXNDaGVja2VkKSB7XG4gICAgICAgIHBheWxvYWQuanVuay5wdXNoKHtcbiAgICAgICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxuICAgICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxuICAgICAgICAgIGVudHJ5VGltZSA6IGl0ZW0/LmVudHJ5VGltZSB8fCBpdGVtPy5lbnRyeVRtZSB8fCBcIlwiLFxuICAgICAgICAgIGV4aXRUaW1lIDogaXRlbS5leGl0VGltZSxcbiAgICAgICAgICB0aW1lUmFuZ2UgOiBpdGVtLnRpbWVSYW5nZSxcbiAgICAgICAgICBpc0NoZWNrZWQgOiBpdGVtLmlzQ2hlY2tlZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcGF5bG9hZC5qdW5rQ291bnQrKztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHBheWxvYWQuZm9vdGZhbGxDb3VudCA9IHRoaXMuY291bnREYXRhPy5mb290ZmFsbENvdW50O1xuXG4gICAgLy8g8J+RhyBSZXR1cm4gb3IgYXNzaWduXG5cbiAgICB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkID0gcGF5bG9hZDtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5yYWlzZWRQb3B1cCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICBzaXplOiBcIm1kXCIsXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbFJhc2llZCgpIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XG4gICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSBbXTtcbiAgfVxuXG4gIGNvbW1lbnRUZXh0OiBhbnk7XG4gIGdldFJhaXNlZERhdGE6IGFueTtcbiAgc3VibWl0UmFpc2VkKCkge1xuICAgIC8vIGNvbnN0IHBheWxvYWQgPSB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkOyAvLyBmcmVzaCBkYXRhIGZvciBBUElcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgdGlja2V0TmFtZTogXCJmb290ZmFsbC1kaXJlY3RvcnlcIixcbiAgICAgIHN0b3JlSWQ6IHRoaXMudGVtcFJhaXNlZFBheWxvYWQuc3RvcmVJZCxcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMudGVtcFJhaXNlZFBheWxvYWQuZGF0ZVN0cmluZyxcbiAgICAgIHR5cGU6IFwiY3JlYXRlXCIsXG4gICAgICBtb2RlOiBcIndlYlwiXG4gICAgfVxuICAgIHRoaXMuZ2V0UmFpc2VkRGF0YSA9IHBheWxvYWQ7XG4gICAgY29uc29sZS5sb2coJ3N1Ym1pdCByYWlzZWQgOicsIHBheWxvYWQpXG4gICAgdGhpcy5ydnBzU2VydmljZVxuICAgICAgLmdldENyZWF0ZVJhaXNlZFRhZyhwYXlsb2FkKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoXG4gICAgICAgICAgICAgIHJlcz8ubWVzc2FnZSB8fCBcIlRpY2tldCB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRDYXJkRGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxSYXNpZWQoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IFwiXCI7XG4gICAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IFtdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJGYWlsZWQgdG8gdXBkYXRlXCIpO1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxSYXNpZWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICAgZXJyLmVycm9yPy5lcnJvciB8fFxuICAgICAgICAgICAgZXJyLmVycm9yIHx8XG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8XG4gICAgICAgICAgICBlcnIubWVzc2FnZSB8fFxuICAgICAgICAgICAgXCJVbmtub3duIGVycm9yXCI7XG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyk7XG4gICAgICAgICAgdGhpcy5jYW5jZWxSYXNpZWQoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gb25JbWFnZUNoZWNrYm94Q2hhbmdlKGltZzogYW55LCB0eXBlOiBzdHJpbmcpIHtcbiAgLy8gICBpZiAodHlwZSA9PT0gJ2R1cGxpY2F0ZScpIHtcbiAgLy8gICAgIC8vIENvdW50IG9ubHkgdmFsaWQgZHVwbGljYXRlIGltYWdlcyB3aGVyZSBgZHVwbGljYXRlSW1hZ2VQYXRoLmxlbmd0aCA9PT0gMGBcbiAgLy8gICAgIGNvbnN0IHRvdGFsVmFsaWREdXBsaWNhdGVJbWFnZXMgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxuICAvLyAgICAgICAoaXRlbTogYW55KSA9PlxuICAvLyAgICAgICAgIGl0ZW0ucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgKCFpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aCB8fCBpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGggPT09IDApXG4gIC8vICAgICApLmxlbmd0aDtcblxuICAvLyAgICAgY29uc3QgbWF4QWxsb3dlZCA9IE1hdGguZmxvb3IodG90YWxWYWxpZER1cGxpY2F0ZUltYWdlcyAqIDAuMSk7IC8vIDEwJSBsaW1pdFxuXG4gIC8vICAgICBjb25zdCBhbHJlYWR5RXhpc3RzID0gdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Quc29tZShcbiAgLy8gICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgPT09IGltZy50ZW1wbGRcbiAgLy8gICAgICk7XG5cbiAgLy8gICAgIGlmIChpbWcuc2VsZWN0ZWQpIHtcbiAgLy8gICAgICAgLy8g4p2MIFJlYWNoZWQgbWF4IGFsbG93ZWQg4oCUIGJsb2NrIGl0XG4gIC8vICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPj0gbWF4QWxsb3dlZCkge1xuICAvLyAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcbiAgLy8gICAgICAgICAgIGBPbmx5ICR7bWF4QWxsb3dlZH0gaW1hZ2VzIGNhbiBiZSBzZWxlY3RlZCBhcyBkdXBsaWNhdGUgKDEwJSBvZiB1bnRhZ2dlZCBkdXBsaWNhdGVzKS5gXG4gIC8vICAgICAgICAgKTtcblxuICAvLyAgICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xuICAvLyAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCA9PT0gaW1nLnRlbXBsZCk7XG4gIC8vICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAvLyAgICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhW2luZGV4XS5zZWxlY3RlZCA9IGZhbHNlO1xuICAvLyAgICAgICAgIH1cblxuICAvLyAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAvLyAgICAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XG4gIC8vICAgICAgICAgfSk7XG5cbiAgLy8gICAgICAgICByZXR1cm47XG4gIC8vICAgICAgIH1cblxuICAvLyAgICAgICAvLyDinIUgQWRkIGlmIG5vdCBhbHJlYWR5IGluIGxpc3RcbiAgLy8gICAgICAgaWYgKCFhbHJlYWR5RXhpc3RzKSB7XG4gIC8vICAgICAgICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QucHVzaCh7XG4gIC8vICAgICAgICAgICAuLi5pbWcsXG4gIC8vICAgICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXG4gIC8vICAgICAgICAgICBwYXJlbnQ6IGltZy5wYXJlbnQgfHwgbnVsbFxuICAvLyAgICAgICAgIH0pO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAvLyDinYwgUmVtb3ZhbCBjYXNlXG4gIC8vICAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QuZmlsdGVyKFxuICAvLyAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGVtcGxkICE9PSBpbWcudGVtcGxkXG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vICAgLy8g4pqg77iPIENhbGwgdGhpcyB0byB1cGRhdGUgYnV0dG9uIGVuYWJsZSBzdGF0ZVxuICAvLyAgIHRoaXMuY2hlY2tEdXBsaWNhdGVTYXZlRW5hYmxlKCk7XG4gIC8vIH1cblxuICAvLyBkdXBsaWNhdGVTYXZlRW5hYmxlZCA9IGZhbHNlO1xuXG4gIC8vIGNoZWNrRHVwbGljYXRlU2F2ZUVuYWJsZSgpIHtcbiAgLy8gICB0aGlzLmR1cGxpY2F0ZVNhdmVFbmFibGVkID1cbiAgLy8gICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA+IDA7XG4gIC8vIH1cblxuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKFwiaW1hZ2VQb3B1cFwiKSBpbWFnZVBvcHVwOiBFbGVtZW50UmVmO1xuICBzZWxlY3RlZEltYWdlQXJyYXkodXJsOiBhbnksIGRhdGE6IGFueSkge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmltYWdlUG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJsZ1wiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBjbG9zZUltYWdlKCkge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnRlbXBNb2RhbEltYWdlID0gbnVsbDsgLy8gQ2xlYXIgdGVtcG9yYXJ5IGltYWdlIHdoZW4gY2xvc2luZyBtb2RhbFxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcbiAgfVxuXG4gIGNhbkVuYWJsZUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY291bnREYXRhIHx8ICF0aGlzLmZvbGRlckRhdGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgeyBkdXBsaWNhdGUsIGhvdXNla2VlcGluZywgZW1wbG95ZWUsIGp1bmsgfSA9IHRoaXMuY291bnREYXRhO1xuXG4gICAgLy8gQ2hlY2sgY291bnQgY29uZGl0aW9uXG4gICAgY29uc3QgaGFzQ291bnQgPSBkdXBsaWNhdGUgPiAwIHx8IGhvdXNla2VlcGluZyA+IDAgfHwgZW1wbG95ZWUgPiAwIHx8IGp1bmsgPiAwO1xuXG4gICAgLy8gQ29udmVydCBmb2xkZXJEYXRlIHRvIERhdGVcbiAgICBjb25zdCBmb2xkZXIgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpO1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICAgIC8vIE5vcm1hbGl6ZSB0aW1lcyAocmVtb3ZlIGhvdXJzIGZvciBwcm9wZXIgZGF5IGNvbXBhcmlzb24pXG4gICAgZm9sZGVyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHRvZGF5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGRpZmZlcmVuY2UgaW4gZGF5c1xuICAgIGNvbnN0IGRpZmZJblRpbWUgPSB0b2RheS5nZXRUaW1lKCkgLSBmb2xkZXIuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRpZmZJbkRheXMgPSBkaWZmSW5UaW1lIC8gKDEwMDAgKiAzNjAwICogMjQpO1xuXG4gICAgLy8gV2l0aGluIGxhc3QgNyBkYXlzIOKGkiBkaWZmIGJldHdlZW4gMCBhbmQgN1xuICAgIGNvbnN0IGlzV2l0aGluTGFzdDcgPSBkaWZmSW5EYXlzID49IDAgJiYgZGlmZkluRGF5cyA8PSA3O1xuXG4gICAgcmV0dXJuIGhhc0NvdW50ICYmIGlzV2l0aGluTGFzdDc7XG4gIH1cblxuICBjdXJyZW50SW1hZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgZ2V0IGNhbk5hdmlnYXRlTGVmdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA+IDA7XG4gIH1cblxuICBnZXQgY2FuTmF2aWdhdGVSaWdodCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA8IHRoaXMuaW1hZ2VzQXJyYXlEYXRhLmxlbmd0aCAtIDE7XG4gIH1cblxuICBuYXZpZ2F0ZUltYWdlKGRpcmVjdGlvbjogXCJsZWZ0XCIgfCBcInJpZ2h0XCIpIHtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmltYWdlc0FycmF5RGF0YS5sZW5ndGg7XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSBcImxlZnRcIiAmJiB0aGlzLmNhbk5hdmlnYXRlTGVmdCkge1xuICAgICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleC0tO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSBcInJpZ2h0XCIgJiYgdGhpcy5jYW5OYXZpZ2F0ZVJpZ2h0KSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4Kys7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNlbGVjdGVkIGltYWdlXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gdGhpcy5pbWFnZXNBcnJheURhdGFbdGhpcy5jdXJyZW50SW1hZ2VJbmRleF07XG5cbiAgICAvLyBVcGRhdGUgcmVtYWluaW5nIGltYWdlc1xuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMuaW1hZ2VzQXJyYXlEYXRhLmZpbHRlcihcbiAgICAgIChfOiBhbnksIGk6IGFueSkgPT4gaSAhPT0gdGhpcy5jdXJyZW50SW1hZ2VJbmRleFxuICAgICk7XG4gIH1cblxuICAvLyBHZXQgY3VycmVudCBmb290ZmFsbCBjb3VudCBmb3Igc2VsZWN0ZWQgZGF0ZVxuICBnZXRDdXJyZW50Rm9vdGZhbGwoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZm9sZGVyRGF0ZSkgcmV0dXJuIDA7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICAgIHJldHVybiB0aGlzLmNhcmREYXRhTWFwW25vcm1hbGl6ZWREYXRlXT8uZm9vdGZhbGxDb3VudCB8fCAwO1xuICB9XG5cbiAgLy8gR2V0IHBlcmNlbnRhZ2UgY2hhbmdlIGZyb20gZm9vdGZhbGxDb3VudFRyZW5kXG4gIGdldEZvb3RmYWxsUGVyY2VudGFnZUNoYW5nZSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5mb2xkZXJEYXRlKSByZXR1cm4gMDtcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF07XG4gICAgcmV0dXJuIHRoaXMuY2FyZERhdGFNYXBbbm9ybWFsaXplZERhdGVdPy5mb290ZmFsbENvdW50VHJlbmQgfHwgMDtcbiAgfVxuXG4gIC8vIEZvcm1hdCBkb3dudGltZSBmcm9tIGRvd250aW1lIGtleSAoaW4gbWludXRlcylcbiAgZ2V0Rm9ybWF0dGVkRG93bnRpbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuZm9sZGVyRGF0ZSkgcmV0dXJuICctJztcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF07XG4gICAgY29uc3QgZG93bnRpbWVNaW51dGVzID0gdGhpcy5jYXJkRGF0YU1hcFtub3JtYWxpemVkRGF0ZV0/LmRvd250aW1lIHx8IDA7XG4gICAgXG4gICAgaWYgKCFkb3dudGltZU1pbnV0ZXMgfHwgZG93bnRpbWVNaW51dGVzID09PSAwKSByZXR1cm4gJy0nO1xuICAgIFxuICAgIGNvbnN0IHsgaG91cnMsIG1pbnMgfSA9IHRoaXMuY29udmVydE1pbnV0ZXMoZG93bnRpbWVNaW51dGVzKTtcbiAgICBpZiAoaG91cnMgPiAwICYmIG1pbnMgPiAwKSB7XG4gICAgICByZXR1cm4gYCR7aG91cnN9aHIgJHttaW5zfSBtaW5zYDtcbiAgICB9IGVsc2UgaWYgKGhvdXJzID4gMCkge1xuICAgICAgcmV0dXJuIGAke2hvdXJzfWhyYDtcbiAgICB9IGVsc2UgaWYgKG1pbnMgPiAwKSB7XG4gICAgICByZXR1cm4gYCR7bWluc30gbWluc2A7XG4gICAgfVxuICAgIHJldHVybiAnLSc7XG4gIH1cblxuICAvLyBHZXQgdGlja2V0IHN0YXR1c1xuICBnZXRUaWNrZXRTdGF0dXMoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuZm9sZGVyRGF0ZSkgcmV0dXJuICctJztcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF07XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5jYXJkRGF0YU1hcFtub3JtYWxpemVkRGF0ZV0/LnRpY2tldFN0YXR1cztcbiAgICByZXR1cm4gc3RhdHVzIHx8ICctJztcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZXJlJ3MgZG93bnRpbWVcbiAgaGFzRG93bnRpbWUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF07XG4gICAgY29uc3QgZG93bnRpbWUgPSB0aGlzLmNhcmREYXRhTWFwW25vcm1hbGl6ZWREYXRlXT8uZG93bnRpbWUgfHwgMDtcbiAgICByZXR1cm4gZG93bnRpbWUgPiAwO1xuICB9XG5cbiAgLy8gR2V0IHRhZ2dpbmcgZGF0YSBmcm9tIHRpY2tldFJldmlld1N0YXR1cyB3aGVyZSBhY3Rpb25UeXBlID0gXCJ0YWdnaW5nXCJcbiAgZ2V0VGFnZ2luZ0RhdGEodHlwZTogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoIXRoaXMudGlja2V0UmV2aWV3U3RhdHVzIHx8ICFBcnJheS5pc0FycmF5KHRoaXMudGlja2V0UmV2aWV3U3RhdHVzKSB8fCAhdHlwZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRpY2tldFJldmlld1N0YXR1cy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0/LmFjdGlvblR5cGUgPT09IHR5cGUpIHx8IG51bGw7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aWNrZXQgc3RhdHVzIGlzIHJhaXNlZFxuICBpc1RpY2tldFJhaXNlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLmdldFRpY2tldFN0YXR1cygpO1xuICAgIHJldHVybiBzdGF0dXMgIT09ICctJyAmJiBzdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09IFwicmFpc2VkXCI7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aWNrZXQgc3RhdHVzIGlzIGNsb3NlZFxuICBpc1RpY2tldENsb3NlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLmdldFRpY2tldFN0YXR1cygpO1xuICAgIHJldHVybiBzdGF0dXMgIT09ICctJyAmJiBzdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09IFwiY2xvc2VkXCI7XG4gIH1cblxuICAvLyBHZXQgYWxsIHRhZ2dpbmcgZGF0YSBpdGVtcyAoZm9yIGluaXRpYWwgYW5kIGZpbmFsIHJldmlzaW9ucylcbiAgZ2V0QWxsVGFnZ2luZ0RhdGEoKTogYW55W10ge1xuICAgIGlmICghdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMgfHwgIUFycmF5LmlzQXJyYXkodGhpcy50aWNrZXRSZXZpZXdTdGF0dXMpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRpY2tldFJldmlld1N0YXR1cy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uYWN0aW9uVHlwZSA9PT0gXCJ0YWdnaW5nXCIpIHx8IFtdO1xuICB9XG5cbiAgLy8gR2V0IGluaXRpYWwgcmV2aXNpb24gZGF0YSAoZmlyc3QgdGFnZ2luZyBpdGVtKVxuICBnZXRJbml0aWFsUmV2aXNpb25EYXRhKCk6IGFueSB7XG4gICAgY29uc3QgYWxsVGFnZ2luZyA9IHRoaXMuZ2V0QWxsVGFnZ2luZ0RhdGEoKTtcbiAgICByZXR1cm4gYWxsVGFnZ2luZy5sZW5ndGggPiAwID8gYWxsVGFnZ2luZ1swXSA6IG51bGw7XG4gIH1cblxuICAvLyBHZXQgZmluYWwgcmV2aXNpb24gZGF0YSAobGFzdCB0YWdnaW5nIGl0ZW0sIG9yIHNlY29uZCBpZiBleGlzdHMpXG4gIGdldEZpbmFsUmV2aXNpb25EYXRhKCk6IGFueSB7XG4gICAgY29uc3QgYWxsVGFnZ2luZyA9IHRoaXMuZ2V0QWxsVGFnZ2luZ0RhdGEoKTtcbiAgICByZXR1cm4gYWxsVGFnZ2luZy5sZW5ndGggPiAxID8gYWxsVGFnZ2luZ1thbGxUYWdnaW5nLmxlbmd0aCAtIDFdIDogKGFsbFRhZ2dpbmcubGVuZ3RoID4gMCA/IGFsbFRhZ2dpbmdbMF0gOiBudWxsKTtcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gZ2V0IGNvdW50IHZhbHVlIGJ5IHR5cGUgZnJvbSBjb3VudCBhcnJheVxuICBnZXRDb3VudEJ5VHlwZShkYXRhOiBhbnksIGNvdW50VHlwZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoIWRhdGEgfHwgIWRhdGEuY291bnQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBpZiBjb3VudCBpcyBhbiBhcnJheSAobmV3IGZvcm1hdClcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLmNvdW50KSkge1xuICAgICAgY29uc3QgY291bnRJdGVtID0gZGF0YS5jb3VudC5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0/LnR5cGUgPT09IGNvdW50VHlwZSk7XG4gICAgICByZXR1cm4gY291bnRJdGVtPy52YWx1ZSB8fCAwO1xuICAgIH1cbiAgICBcbiAgICAvLyBGYWxsYmFjayBmb3Igb2xkIGZvcm1hdCAob2JqZWN0KVxuICAgIGNvbnN0IGtleU1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICdkdXBsaWNhdGUnOiAnZHVwbGljYXRlQ291bnQnLFxuICAgICAgJ2VtcGxveWVlJzogJ2VtcGxveWVlQ291bnQnLFxuICAgICAgJ2p1bmsnOiAnanVua0NvdW50JyxcbiAgICAgICdob3VzZUtlZXBpbmcnOiAnaG91c2VLZWVwaW5nQ291bnQnXG4gICAgfTtcbiAgICBcbiAgICBjb25zdCBrZXkgPSBrZXlNYXBbY291bnRUeXBlXTtcbiAgICByZXR1cm4ga2V5ID8gKGRhdGEuY291bnRba2V5XSB8fCAwKSA6IDA7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgdG90YWwgcGVyY2VudGFnZTogKHN1bSBvZiBhbGwgY291bnQgdmFsdWVzIC8gcmV2aWNlZEZvb3RmYWxsKSAqIDEwMFxuICAvLyB0eXBlOiAncmFpc2VkJyB8ICdmaW5hbHJldmlldydcbiAgZ2V0UmV2aXNpb25DYWxjdWxhdGlvbih0eXBlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMgfHwgIUFycmF5LmlzQXJyYXkodGhpcy50aWNrZXRSZXZpZXdTdGF0dXMgfHwgIXR5cGUgKSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgLy8gRmlsdGVyIGl0ZW1zIGJhc2VkIG9uIGFjdGlvblR5cGVcbiAgICBjb25zdCB0YWdnaW5nSXRlbXMgPSB0aGlzLnRpY2tldFJldmlld1N0YXR1cy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uYWN0aW9uVHlwZSA9PT0gdHlwZSk7XG4gICAgaWYgKHRhZ2dpbmdJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICghdGFnZ2luZ0l0ZW1zWzBdIHx8ICF0YWdnaW5nSXRlbXNbMF0ucmV2aWNlZEZvb3RmYWxsIHx8IHRhZ2dpbmdJdGVtc1swXS5yZXZpY2VkRm9vdGZhbGwgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBjb3VudCA9IHRhZ2dpbmdJdGVtc1swXS5jb3VudCB8fCBbXTtcbiAgICAvLyBDaGVjayBpZiBjb3VudCBpcyBhbiBhcnJheSAobmV3IGZvcm1hdCkgb3Igb2JqZWN0IChvbGQgZm9ybWF0KVxuICAgIGxldCB0b3RhbENvdW50ID0gMDtcbiAgICBcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb3VudCkpIHtcbiAgICAgIC8vIE5ldyBmb3JtYXQ6IGNvdW50IGlzIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCB0eXBlIGFuZCB2YWx1ZVxuICAgICAgY29uc3QgdHlwZXNUb1N1bSA9IFsnZHVwbGljYXRlJywgJ2VtcGxveWVlJywgJ2hvdXNlS2VlcGluZycsICdqdW5rJ107XG4gICAgICB0b3RhbENvdW50ID0gY291bnRcbiAgICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiB0eXBlc1RvU3VtLmluY2x1ZGVzKGl0ZW0/LnR5cGUpKVxuICAgICAgICAucmVkdWNlKChzdW06IG51bWJlciwgaXRlbTogYW55KSA9PiBzdW0gKyAoaXRlbT8udmFsdWUgfHwgMCksIDApO1xuICAgIH0gXG4gICAgLy8gZWxzZSB7XG4gICAgLy8gICAvLyBPbGQgZm9ybWF0OiBjb3VudCBpcyBhbiBvYmplY3Qgd2l0aCBrZXlzXG4gICAgLy8gICB0b3RhbENvdW50ID0gKGNvdW50LmR1cGxpY2F0ZUNvdW50IHx8IDApICsgXG4gICAgLy8gICAgICAgICAgICAgICAgKGNvdW50LmVtcGxveWVlQ291bnQgfHwgMCkgKyBcbiAgICAvLyAgICAgICAgICAgICAgICAoY291bnQuanVua0NvdW50IHx8IDApICsgXG4gICAgLy8gICAgICAgICAgICAgICAgKGNvdW50LmhvdXNlS2VlcGluZ0NvdW50IHx8IDApO1xuICAgIC8vIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgodG90YWxDb3VudCAvIHRhZ2dpbmdJdGVtc1swXS5yZXZpY2VkRm9vdGZhbGwpICogMTAwKTtcbiAgfVxuXG4gIHJlcXVlc3RSZXNldCgpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5yZXNldFJlcXVlc3RQb3B1cCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICBzaXplOiBcIm1kXCIsXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbFJlc2V0UmVxdWVzdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XG4gIH1cblxuICBzdWJtaXRSZXNldFJlcXVlc3QoKTogdm9pZCB7XG4gICAgbGV0IHBheWxvYWQgPSB7XG4gICAgICBzdG9yZUlkOiB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwID8gdGhpcy5zdG9yZUlkYXJyYXlbMF0gOiBudWxsLFxuICAgICAgZGF0ZVN0cmluZzogdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCJcbiAgICB9O1xuICAgIGNvbnNvbGUubG9nKCdzdWJtaXRSZXNldFJlcXVlc3QgUGF5bG9hZDonLCBwYXlsb2FkKTtcbiAgICAvLyBDbG9zZSBtb2RhbCBhZnRlciBzdWJtaXNzaW9uXG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICAgIHRoaXMuc2VydmljZVxuICAgICAgLnNlbmRWTVNSZXNldFJlcXVlc3QocGF5bG9hZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgID8uc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRDYXJkRGF0YSgpO1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoXCJSZXF1ZXN0IHJlc2V0IHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiRmFpbGVkIHRvIHJlc2V0IHJlcXVlc3RcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9XG4gICAgICAgICAgICBlcnIuZXJyb3I/LmVycm9yIHx8XG4gICAgICAgICAgICBlcnIuZXJyb3IgfHxcbiAgICAgICAgICAgIGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHxcbiAgICAgICAgICAgIGVyci5tZXNzYWdlIHx8XG4gICAgICAgICAgICBcIlVua25vd24gZXJyb3JcIjtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBzdWJtaXRSZXNldFJlcXVlc3QgOicsIGVycik7XG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyB8fCBcIlVua25vd24gZXJyb3Igb2NjdXJyZWRcIik7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICBcbiAgfVxuXG4gIC8vIEdldCBub3JtYWxpemVkIGRhdGUgZm9yIGN1cnJlbnQgZm9sZGVyRGF0ZVxuICBnZXROb3JtYWxpemVkRGF0ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuZm9sZGVyRGF0ZSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF07XG4gIH1cblxuICAvLyBHZXQgc2VsZWN0ZWQgZGF0ZSdzIGNhcmQgZGF0YVxuICBnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpOiBhbnkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gdGhpcy5nZXROb3JtYWxpemVkRGF0ZSgpO1xuICAgIHJldHVybiBub3JtYWxpemVkRGF0ZSA/IHRoaXMuY2FyZERhdGFNYXBbbm9ybWFsaXplZERhdGVdIDogbnVsbDtcbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJjYXJkIG10LTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbXQtMyBweC0wIGJvcmRlci1ib3R0b20tMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWFjY29yZGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1hY2NvcmRpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgIDwhLS0gZm9yIG5ldyBuYXZpZ2F0aW9uIGNoYW5nZXMgLS0+XG4gICAgICAgICAgICAgICAgPCEtLSBvbGQgdmlldyB3aGlsZSBmb2xkZXIgdmlldyAtLT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZm9sZGVyVmlld1wiIGNsYXNzPVwibWFpbmhlYWRpbmcgcGItMCBjdXN0b20tYWNjb3JkaW9uLWhlYWRlclwiIChjbGljayk9XCJ0b2dnbGVBY2NvcmRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWctZGlyZWNcIj5JbWFnZSBEaXJlY3Rvcnk8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWNjb3JkaW9uLWFycm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEb3duIGFycm93IGZvciBjb2xsYXBzZWQgc3RhdGUsIHVwIGFycm93IGZvciBleHBhbmRlZCBzdGF0ZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgMUw1IDVMOSAxXCIgc3Ryb2tlPVwiIzA3MTQzN1wiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNBY2NvcmRpb25FeHBhbmRlZFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI2XCIgaGVpZ2h0PVwiNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMSA1TDUgMUw5IDVcIiBzdHJva2U9XCIjMWI4NGZmXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8IS0tIG5ldyB2aWV3IHdoaWxlIG5vdCBpbiBmb2xkZXIgdmlldyB2aWV3IC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImJhY2tuYXYgJiYgIWltYWdlRmxvd1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYmFja1RvRm9vdGZhbGwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMjU4NV83MDM2KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgcng9XCI4XCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI1LjgzMjcgMTlIMTQuMTY2TTE0LjE2NiAxOUwxOS45OTkzIDI0LjgzMzRNMTQuMTY2IDE5TDE5Ljk5OTMgMTMuMTY2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yNTg1XzcwMzZcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gYmFjayBmcm9tIGltYWdlIGZsb3cgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW1hZ2VGbG93XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbDEoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMjU4NV83MDM2KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgcng9XCI4XCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI1LjgzMjcgMTlIMTQuMTY2TTE0LjE2NiAxOUwxOS45OTkzIDI0LjgzMzRNMTQuMTY2IDE5TDE5Ljk5OTMgMTMuMTY2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yNTg1XzcwMzZcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1nLWRpcmVjXCI+SW1hZ2UgRGlyZWN0b3J5IHwge3tmb2xkZXJEYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWZvbGRlclZpZXdcIiBjbGFzcz1cIm1haW5oZWFkaW5nLTEgcGItMCBjdXN0b20tYWNjb3JkaW9uLWhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWNjb3JkaW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWNjb3JkaW9uLWFycm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEb3duIGFycm93IGZvciBjb2xsYXBzZWQgc3RhdGUsIHVwIGFycm93IGZvciBleHBhbmRlZCBzdGF0ZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgMUw1IDVMOSAxXCIgc3Ryb2tlPVwiIzA3MTQzN1wiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNBY2NvcmRpb25FeHBhbmRlZFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI2XCIgaGVpZ2h0PVwiNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMSA1TDUgMUw5IDVcIiBzdHJva2U9XCIjMWI4NGZmXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxzZWN0aW9uICpuZ0lmPVwiaXNBY2NvcmRpb25FeHBhbmRlZFwiPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJmb2xkZXJWaWV3XCIgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtbGlzdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1saXN0LXNjcm9sbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1jYXJkXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBkYXRlQXJyYXk7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkYXRlLWNhcmQtYWN0aXZlJzogaSA9PT0gc2VsZWN0SW5kZXh9XCIgKGNsaWNrKT1cImdldGltYWdlcyhpLCBvYmopXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1jYXJkLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiY2FsZW5kYXItaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi42NjY3IDIuNjY2NjdIMTJWMkMxMiAxLjYzMTgxIDExLjcwMTUgMS4zMzMzMyAxMS4zMzMzIDEuMzMzMzNDMTAuOTY1MSAxLjMzMzMzIDEwLjY2NjcgMS42MzE4MSAxMC42NjY3IDJWMi42NjY2N0g1LjMzMzMzVjJDNS4zMzMzMyAxLjYzMTgxIDUuMDM0ODYgMS4zMzMzMyA0LjY2NjY3IDEuMzMzMzNDNC4yOTg0OCAxLjMzMzMzIDQgMS42MzE4MSA0IDJWMi42NjY2N0gzLjMzMzMzQzIuNTk2OTUgMi42NjY2NyAyIDMuMjYzNjIgMiA0VjEzLjMzMzNDMiAxNC4wNjk3IDIuNTk2OTUgMTQuNjY2NyAzLjMzMzMzIDE0LjY2NjdIMTIuNjY2N0MxMy40MDMgMTQuNjY2NyAxNCAxNC4wNjk3IDE0IDEzLjMzMzNWNEMxNCAzLjI2MzYyIDEzLjQwMyAyLjY2NjY3IDEyLjY2NjcgMi42NjY2N1pNMTIuNjY2NyAxMy4zMzMzSDMuMzMzMzNWNkgxMi42NjY3VjEzLjMzMzNaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtdGV4dFwiPnt7b2JqIHwgZGF0ZTonZGQgTU1NJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2FyZERhdGFNYXBbb2JqXT8udGlja2V0U3RhdHVzTG93ZXIgYXMgc3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBtcy0yXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZGdlLWxpZ2h0LXN1Y2Nlc3MnOiBzdGF0dXMgPT09ICdjbG9zZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZGdlLWxpZ2h0LXdhcm5pbmcnOiBzdGF0dXMgPT09ICdyYWlzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZGdlLWxpZ2h0LWRlZmF1bHQnOiBzdGF0dXMgIT09ICdjbG9zZWQnICYmIHN0YXR1cyAhPT0gJ3JhaXNlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0YXR1cyA9PT0gJ2Nsb3NlZCcgPyAnVGlja2V0IGNsb3NlZCcgOiAoc3RhdHVzID09PSAncmFpc2VkJyA/ICdUaWNrZXQgcmFpc2VkJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXJkRGF0YU1hcFtvYmpdPy50aWNrZXRTdGF0dXMgfHwgJycpKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RmYWxsLWNvdW50XCI+e3sgY2FyZERhdGFNYXBbb2JqXT8uZm9vdGZhbGxDb3VudCB8fCAwIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGZhbGwtbGFiZWxcIj5Ub3RhbCBmb290ZmFsbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuXG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFmb2xkZXJWaWV3XCIgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWltYWdlRmxvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUaWNrZXQgQmxvY2sgQWxlcnQgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpPy5yYWlzZWRTdGF0dXNFbmFibGVkID09PSAnYmxvY2snXCIgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMlwiIGZpbGw9XCIjRjA0NDM4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDhWMTNcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTZcIiByPVwiMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgcmFpc2UgdGlja2V0IGZvciBuZXh0IHt7IGdldFNlbGVjdGVkRGF0ZUNhcmREYXRhKCk/Lm5vT2ZCbG9ja2VkRGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICcwJyB9fSBkYXlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBsb29rcyBsaWtlIHlvdSBoYXZlIGFjaGlldmVkIDk1JSBhY2N1cmFjeSBmb3IgdGhlIHRocmVlIHRpY2tldHMgcmFpc2VkIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aC4gVGhpcyBsaW1pdHMgeW91IGZyb20gcmFpc2luZyBtb3JlIHRpY2tldHMgdG8gYXZvaWQgcmVkdW5kYW5jeS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1hY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc3RpbGwgd2FudCB0byByYWlzZSB0aWNrZXRzLCA8c3BhbiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlcXVlc3RSZXNldCgpXCI+c2VuZCByZXF1ZXN0PC9zcGFuPiB0byByZXNldC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUaWNrZXQgUmVxdWVzdCBTdWNjZXNzIEFsZXJ0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKT8ucmFpc2VkU3RhdHVzRW5hYmxlZCA9PT0gJ3JlcXVlc3QnXCIgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yIDIxTDIzIDEyTDIgM1YxMEwxNyAxMkwyIDE0VjIxWlwiIGZpbGw9XCIjMTBCOTgxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2V0IFJlcXVlc3QgU2VudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIHJlcXVlc3QgdG8gZW5hYmxlIHRpY2tldCByYWlzaW5nIGhhcyBiZWVuIHN1Ym1pdHRlZC4gWW91J2xsIGJlIG5vdGlmaWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZSBpdCdzIGFwcHJvdmVkLiBQbGVhc2UgZW5zdXJlIGZ1dHVyZSB0aWNrZXQgYWNjdXJhY3kgcmVtYWlucyB3aXRoaW4gdGhlIDk1JVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBmb290ZmFsbCB0cmVuZHMgZmVhdHVyZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RmYWxsVHJlbmRzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpY2tldFN0YXR1c1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBmb290ZmFsbCB0cmVuZHMgZmVhdHVyZSBlbmQgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zaHJpbmstMCBtdC0zIGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cImJhY2tuYXZcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImJhY2tUb0Zvb3RmYWxsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMjU4NV83MDM2KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHJ4PVwiNy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI1LjgzMjcgMTlIMTQuMTY2TTE0LjE2NiAxOUwxOS45OTkzIDI0LjgzMzRNMTQuMTY2IDE5TDE5Ljk5OTMgMTMuMTY2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI1ODVfNzAzNlwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImltZy1kaXJlYyBtcy0yIG10LTFcIj57e2ZvbGRlckRhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgbXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpICYmIGdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXQgUmFpc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBteC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKVwiPlRpY2tldCBDbG9zZWQ8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtYXV0byB0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFjYW5FbmFibGVCdXR0b24oKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJSYWlzZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYWlzZSB0aWNrZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFmb2xkZXJWaWV3XCIgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMCBteS0yIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWdyb3VwIGJnLXdoaXRlIGJvcmRlci0xIGJ0bi1ncm91cCB3LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShjb3VudERhdGE/Lmxlbmd0aCA+IDApXCI+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZm9vdGZhbGwnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2Zvb3RmYWxsJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEZvb3RmYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZm9vdGZhbGxDb3VudCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdub24tdGFnZ2luZycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb24tdGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnbm9uLXRhZ2dpbmcnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/Lm5vblRhZ3MgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2R1cGxpY2F0ZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmR1cGxpY2F0ZSB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2VtcGxveWVlJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdlbXBsb3llZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZS9TdGFmZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmVtcGxveWVlIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCIgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2p1bmsnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2p1bmsnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnanVuaycgPyAnYmFkZ2UgYmFkZ2UtYWN0aXZlIGFjdGl2ZVBsYW5CdG4nIDogJyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IGluYWN0aXZlUGxhbkJ0bidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/Lmp1bmsgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2hvdXNlLWtlZXBpbmcnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG91c2UgS2VlcGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnaG91c2Uta2VlcGluZycgPyAnYmFkZ2UgYmFkZ2UtYWN0aXZlIGFjdGl2ZVBsYW5CdG4nIDogJyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IGluYWN0aXZlUGxhbkJ0bidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmhvdXNla2VlcGluZyB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCB2aWV3LXRvZ2dsZSBtcy1hdXRvXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRvZ2dsZSB2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtMyBweS0yXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiB2aWV3TW9kZSA9PT0gJ2dyaWQnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRWaWV3TW9kZSgnZ3JpZCcpXCIgYXJpYS1sYWJlbD1cIkdyaWQgdmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2dyaWQnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjExXCIgeT1cIjNcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2dyaWQnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiMTFcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2dyaWQnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjExXCIgeT1cIjExXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdncmlkJyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtMyBweS0yXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiB2aWV3TW9kZSA9PT0gJ2xpc3QnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRWaWV3TW9kZSgnbGlzdCcpXCIgYXJpYS1sYWJlbD1cIkxpc3Qgdmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjAgMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjNcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2xpc3QnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiNC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEuNVwiIHJ4PVwiMC43NVwiIGZpbGw9XCIjNDc1NDY3XCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiMTIuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxLjVcIiByeD1cIjAuNzVcIiBmaWxsPVwiIzQ3NTQ2N1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjExXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdsaXN0JyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW1hZ2VGbG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ2Zvb3RmYWxsJyAmJiB2aWV3TW9kZSA9PT0gJ2dyaWQnXCIgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdGV4dC1ub3dyYXBcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIG9iamVjdHNBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNlbGVjdGVkVGltZXMob2JqLnRpbWVSYW5nZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2FjdGl2ZScgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG14LTMgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29iaj8udGltZVJhbmdlfX08c3BhbiBjbGFzcz1cIm14LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRUaW1lID09PSBvYmo/LnRpbWVSYW5nZSA/ICdiYWRnZS1udW0tcHJpbWFyeScgOidiYWRnZS1udW0tbXV0ZWQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvYmo/LmNvdW50ID8gb2JqPy5jb3VudCA6IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJyb3dcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtbiBcIiBzdHlsZT1cIm1hcmdpbjogNjRweDtib3JkZXItcmFkaXVzOiA4cHg7XG5iYWNrZ3JvdW5kOiB2YXIoLS1HcmF5LTUwLCAjRjlGQUZCKTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIiB2aWV3Qm94PVwiMCAwIDk0IDk0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEzLjMzMzNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM1LjMzMiA1MS45OTk5SDMzLjY2NTRDMzIuNzgxMyA1MS45OTk5IDMxLjkzMzUgNTEuNjQ4NyAzMS4zMDgzIDUxLjAyMzZDMzAuNjgzMiA1MC4zOTg1IDMwLjMzMiA0OS41NTA2IDMwLjMzMiA0OC42NjY2VjMzLjY2NjZDMzAuMzMyIDMyLjc4MjUgMzAuNjgzMiAzMS45MzQ3IDMxLjMwODMgMzEuMzA5NkMzMS45MzM1IDMwLjY4NDQgMzIuNzgxMyAzMC4zMzMzIDMzLjY2NTQgMzAuMzMzM0g0OC42NjU0QzQ5LjU0OTQgMzAuMzMzMyA1MC4zOTczIDMwLjY4NDQgNTEuMDIyNCAzMS4zMDk2QzUxLjY0NzUgMzEuOTM0NyA1MS45OTg3IDMyLjc4MjUgNTEuOTk4NyAzMy42NjY2VjM1LjMzMzNNNDUuMzMyIDQxLjk5OTlINjAuMzMyQzYyLjE3MyA0MS45OTk5IDYzLjY2NTQgNDMuNDkyMyA2My42NjU0IDQ1LjMzMzNWNjAuMzMzM0M2My42NjU0IDYyLjE3NDIgNjIuMTczIDYzLjY2NjYgNjAuMzMyIDYzLjY2NjZINDUuMzMyQzQzLjQ5MTEgNjMuNjY2NiA0MS45OTg3IDYyLjE3NDIgNDEuOTk4NyA2MC4zMzMzVjQ1LjMzMzNDNDEuOTk4NyA0My40OTIzIDQzLjQ5MTEgNDEuOTk5OSA0NS4zMzIgNDEuOTk5OVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCI0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZSBteS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBub0RhdGFNZXNzYWdlc1t0eXBlPy50b0xvd2VyQ2FzZSgpXSB8fCAnTm8gZGF0YSBmb3VuZCcgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTcGxpdC1zY3JlZW4gbGF5b3V0IChvbmx5IHNob3duIGFmdGVyIGNsaWNraW5nIGFuIGltYWdlKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwbGl0LXNjcmVlbi1jb250YWluZXJcIiAqbmdJZj1cInNwbGl0U2NyZWVuRW5hYmxlZCAmJiAhbm9EYXRhICYmICFsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIExlZnQgUGFuZWw6IFRodW1ibmFpbCBMaXN0ICsgUmVsYXRlZCBJbWFnZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1wYW5lbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTWFpbiBJbWFnZXMgTGlzdCAoaGlkZGVuIHdoZW4gZHVwbGljYXRlIGlzIHNlbGVjdGVkKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRSYWRpb1R5cGUgIT09ICdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtbGlzdC1zZWN0aW9uXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGxpc3RWaWV3R3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1yYW5nZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcmFuZ2UtdGl0bGVcIj57eyBncm91cD8udGltZVJhbmdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1yYW5nZS1jb3VudFwiPiN7eyBncm91cD8uZGF0YT8ubGVuZ3RoIHx8IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtaXRlbVwiICpuZ0Zvcj1cImxldCBvYmogb2YgZ3JvdXA/LmRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogc2VsZWN0SW1hZ2VBcnJheT8udGVtcGxkID09PSBvYmo/LnRlbXBsZH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SW1hZ2VGb3JTcGxpdFZpZXcob2JqKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidGh1bWJuYWlsLWltYWdlXCIgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIiBhbHQ9XCJcIiAqbmdJZj1cIm9iaj8uZmlsZVBhdGhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4OyBwYWRkaW5nOiAyMHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJjb2xvcjogIzY2NzA4NTsgZm9udC1zaXplOiAxMXB4O1wiPk5vIHByZXZpZXc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YW5nby1pZFwiPlRhbmdvIElEOiB7eyBvYmo/LnRlbXBsZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5LXRpbWVcIj5FbnRyeSBUaW1lOiB7eyBvYmo/LmVudHJ5VG1lIHx8IG9iaj8uZW50cnlUaW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJlbGF0ZWQgSW1hZ2VzIFNlY3Rpb24gKE9OTFkgc2hvd24gd2hlbiBkdXBsaWNhdGUgaXMgc2VsZWN0ZWQpIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtbGlzdC1zZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgcmVtYWluaW5nSW1hZ2VzR3JvdXBzICYmIHJlbWFpbmluZ0ltYWdlc0dyb3Vwcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInRpbWUtcmFuZ2UtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcmFuZ2UtdGl0bGVcIj5TZWxlY3QgcmVsYXRlZCBpbWFnZXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbC1saXN0LXNlY3Rpb25cIiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgcmVtYWluaW5nSW1hZ2VzR3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1yYW5nZS1oZWFkZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE2cHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXJhbmdlLXRpdGxlXCI+e3sgZ3JvdXA/LnRpbWVSYW5nZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcmFuZ2UtY291bnRcIj4je3sgZ3JvdXA/LmRhdGE/Lmxlbmd0aCB8fCAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWl0ZW1cIiAqbmdGb3I9XCJsZXQgb2JqIG9mIGdyb3VwPy5kYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IG9iai5zZWxlY3RlZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCIhcmV2b3BzVHlwZVZhbHVlICYmIHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwib2JqLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGFic29sdXRlIGZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiA1cHg7IHJpZ2h0OiA1cHg7IHotaW5kZXg6IDI7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW1hZ2VDaGVja2JveENoYW5nZSgkZXZlbnQsIG9iaiwgJ2R1cGxpY2F0ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidGh1bWJuYWlsLWltYWdlIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlVXJsICsgb2JqPy5maWxlUGF0aFwiIChlcnJvcik9XCJvYmouZmlsZVBhdGggPSBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIiAqbmdJZj1cIm9iaj8uZmlsZVBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVJbWFnZUNsaWNrKCRldmVudCwgb2JqKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXcgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMjBweDsgcGFkZGluZzogMjBweDtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVJbWFnZUNsaWNrKCRldmVudCwgb2JqKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6ICM2NjcwODU7IGZvbnQtc2l6ZTogMTFweDtcIj5ObyBwcmV2aWV3PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFuZ28taWRcIj5UYW5nbyBJRDoge3sgb2JqPy50ZW1wbGQgfHwgb2JqPy50ZW1wSWQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnktdGltZVwiPkVudHJ5IFRpbWU6IHt7IG9iaj8uZW50cnlUbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqPy5lbnRyeVRpbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IFBhbmVsOiBTZWxlY3RlZCBJbWFnZSBEZXRhaWxzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXBhbmVsXCIgKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImltYWdlRGV0YWlsVmlldzsgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdEltYWdlQXJyYXkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtcGFuZWxcIiAqbmdJZj1cIiFzZWxlY3RJbWFnZUFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBjb2xvcjogdmFyKC0tR3JheS01MDAsICM2NjcwODUpO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNTAwO1wiPlNlbGVjdCBhbiBpbWFnZSB0byB2aWV3IGRldGFpbHM8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBJbWFnZSBEZXRhaWwgVmlldyBUZW1wbGF0ZSBmb3IgU3BsaXQtU2NyZWVuIFJpZ2h0IFBhbmVsIC0tPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ltYWdlRGV0YWlsVmlldyBsZXQtb2JqPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1ncmF5IHAtMyBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjMVwiIFtzcmNdPVwiaW1hZ2VVcmwgKyBvYmo/LmZpbGVQYXRoXCIgYWx0PVwiXCIgKm5nSWY9XCJvYmo/LmZpbGVQYXRoXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBab29tIEljb24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ6b29tLWljb24tYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5JbWFnZVpvb21Nb2RhbChpbWFnZVVybCwgb2JqKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4LjMzMzMgMTguMzMzM0wxNSAxNU0xNi42NjY3IDkuMTY2NjdDMTYuNjY2NyAxMy4zMDY3IDEzLjMwNjcgMTYuNjY2NyA5LjE2NjY3IDE2LjY2NjdDNS4wMjY2NyAxNi42NjY3IDEuNjY2NjcgMTMuMzA2NyAxLjY2NjY3IDkuMTY2NjdDMS42NjY2NyA1LjAyNjY3IDUuMDI2NjcgMS42NjY2NyA5LjE2NjY3IDEuNjY2NjdDMTMuMzA2NyAxLjY2NjY3IDE2LjY2NjcgNS4wMjY2NyAxNi42NjY3IDkuMTY2NjdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS4xNjY2NyA2LjY2NjY3VjExLjY2NjdNNi42NjY2NyA5LjE2NjY3SDExLjY2NjdcIiBzdHJva2U9XCIjNDc1NDY3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlld1wiIHN0eWxlPVwiaGVpZ2h0OiAzNzVweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMyAyMFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjUgNi4zMjIyN0g2LjUxTTE2LjI1IDkuMzIyMjdIMjEuNUwxOCAxNi4zMjIzTDE0LjkxIDEyLjAwMjNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JfMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjUgMTYuMzIyOUg1LjI2QzUuNjMyNzMgMTYuMzI1NSA1Ljk5ODc3IDE2LjIyMzkgNi4zMTY4MiAxNi4wMjk1QzYuNjM0ODcgMTUuODM1MiA2Ljg5MjI4IDE1LjU1NTggNy4wNiAxNS4yMjI5TDguNSAxMi4zMjI5TTEuNSAxOC4zMjI5VjE0LjMyMjlNMTcuNSA2LjgyMjkxTDEzLjUgMTQuODIyOUwzLjExIDkuNjIyOTFDMi40MjAzMyA5LjI3NTUzIDEuODk2MzUgOC42NjkxIDEuNjUyNzIgNy45MzYzMkMxLjQwOTA5IDcuMjAzNTQgMS40NjU2NCA2LjQwNDEgMS44MSA1LjcxMjkxTDMuMTkgMi45MjI5MUMzLjM2MiAyLjU4MDE0IDMuNTk5ODQgMi4yNzQ2IDMuODg5OTQgMi4wMjM3NUM0LjE4MDAzIDEuNzcyOSA0LjUxNjcgMS41ODE2NSA0Ljg4MDcyIDEuNDYwOTNDNS4yNDQ3NCAxLjM0MDIxIDUuNjI4OTcgMS4yOTIzOSA2LjAxMTQ3IDEuMzIwMThDNi4zOTM5OCAxLjM0Nzk3IDYuNzY3MjYgMS40NTA4NCA3LjExIDEuNjIyOTFMMTcuNSA2LjgyMjkxWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyIG1iLTUgdGV4dC1jZW50ZXJcIj5QcmV2aWV3IG5vdCBhdmFpbGFibGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlc2NyaXB0aW9uIG1iLTUgdGV4dC1jZW50ZXJcIj5UaGUgc2VsZWN0ZWQgY2FtZXJhIGlzIG5vdCBhdmFpbGFibGUgYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbW9tZW50Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0yIG1iLTIgbXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tvYmo/LnRlbXBsZH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCIgY2xhc3M9XCJtcy0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxMCAxMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xMjIyIDMuNTc5MTlMNC4xMzg4NyA2LjQ1ODM2TDMuMzQ3MiA1LjYxMjUzQzMuMjAxMzcgNS40NzUwMyAyLjk3MjIgNS40NjY2OSAyLjgwNTUzIDUuNTgzMzZDMi42NDMwMyA1LjcwNDE5IDIuNTk3MiA1LjkxNjY5IDIuNjk3MiA2LjA4NzUzTDMuNjM0NyA3LjYxMjUzQzMuNzI2MzcgNy43NTQxOSAzLjg4NDcgNy44NDE2OSA0LjA2Mzg3IDcuODQxNjlDNC4yMzQ3IDcuODQxNjkgNC4zOTcyIDcuNzU0MTkgNC40ODg4NyA3LjYxMjUzQzQuNjM4ODcgNy40MTY2OSA3LjUwMTM3IDQuMDA0MTkgNy41MDEzNyA0LjAwNDE5QzcuODc2MzcgMy42MjA4NiA3LjQyMjIgMy4yODMzNiA3LjEyMjIgMy41NzUwM1YzLjU3OTE5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxMkI3NkFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0ncmVqZWN0ZWQnXCIgY2xhc3M9XCJtcy0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDk5NjEgNUw1LjA5OTYxIDhNNS4wOTk2MSA1TDguMDk5NjEgOE00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQyOF81OTQ4NFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNTk5NjA5IDAuNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tvYmo/LmVudHJ5VG1lIHx8IG9iaj8uZW50cnlUaW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCIgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdob3VzZS1rZWVwaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdqdW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1ncmF5IHAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdGl0bGUtdHlwZVwiPlNlbGVjdCBub24tc2hvcHBlciB0eXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB0ZXh0LWVuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiEodXNlcnM/LnJvbGUgPT09J3VzZXInICYmIHVzZXJzPy51c2VyVHlwZSA9PT0nY2xpZW50JyAmJiBzZWxlY3RlZFJhZGlvVHlwZSA9PT0nanVuaycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIiBjbGFzcz1cIm1iLTMgdGV4dC1lbmQgZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENsZWFyIFRhZyBCdXR0b24gKHZpc2libGUgd2hlbiBFZGl0IGJ1dHRvbiBPUiBTYXZlL0NhbmNlbCBidXR0b25zIGFyZSB2aXNpYmxlKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJldm9wc1R5cGVWYWx1ZSB8fCAocmV2b3BzVHlwZVZhbHVlICYmIGVkaXRCdG5TaG93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoc2VsZWN0ZWRSYWRpb1R5cGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJycpIHx8IChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tY2xlYXItdGFnIGQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyVmFsdWUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQ5XCIgaGVpZ2h0PVwiNDlcIiB2aWV3Qm94PVwiMCAwIDQ5IDQ5XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNTE2Xzk2ODQxKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi4xNjc5N1wiIHk9XCIxLjA4NDQ3XCIgd2lkdGg9XCI0NC4wMzQyXCIgaGVpZ2h0PVwiNDQuMDI4NFwiIHJ4PVwiOC42NzQ0NVwiIGZpbGw9XCIjRkVGM0YyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNzEwMTJcIiB5PVwiMS42MjY2M1wiIHdpZHRoPVwiNDIuOTQ5OVwiIGhlaWdodD1cIjQyLjk0NDFcIiByeD1cIjguMTMyMjlcIiBzdHJva2U9XCIjRkVGM0YyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMDg0MzFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zMy40ODkzIDIxLjM2MTNMMzMuNDkxMiAyMS4zNjQzQzM0LjA1MzMgMjEuOTI5NyAzNC4zNjkgMjIuNjk0OSAzNC4zNjkxIDIzLjQ5MjJDMzQuMzY5MSAyNC4yODk1IDM0LjA1MzMgMjUuMDU0NiAzMy40OTEyIDI1LjYyMDFMMjYuNzI1NiAzMi4zODU3QzI2LjQ0NTQgMzIuNjY2MSAyNi4xMTIyIDMyLjg4ODIgMjUuNzQ2MSAzMy4wNEMyNS4zNzk4IDMzLjE5MTkgMjQuOTg3MyAzMy4yNzA1IDI0LjU5MDggMzMuMjcwNUMyNC4xOTQyIDMzLjI3MDUgMjMuODAxIDMzLjE5MTkgMjMuNDM0NiAzMy4wNEMyMy4wNjg2IDMyLjg4ODMgMjIuNzM2MSAzMi42NjU5IDIyLjQ1NjEgMzIuMzg1N0wyMC43Njc2IDMwLjY5OTJMMjIuMzY4MiAyOS4wOTg2TDI0LjA1NTcgMzAuNzg0MkwyNC4wNTY2IDMwLjc4NTJDMjQuMTI2NyAzMC44NTUzIDI0LjIxMDIgMzAuOTExMiAyNC4zMDE4IDMwLjk0OTJDMjQuMzkzMyAzMC45ODcyIDI0LjQ5MTcgMzEuMDA2OCAyNC41OTA4IDMxLjAwNjhDMjQuNjg5OSAzMS4wMDY4IDI0Ljc4ODMgMzAuOTg3MiAyNC44Nzk5IDMwLjk0OTJDMjQuOTcxMyAzMC45MTEzIDI1LjA1NDEgMzAuODU1MiAyNS4xMjQgMzAuNzg1MkgyNS4xMjVMMzEuODg3NyAyNC4wMjE1QzMyLjAyNjcgMjMuODgwNCAzMi4xMDU1IDIzLjY5MDMgMzIuMTA1NSAyMy40OTIyQzMyLjEwNTQgMjMuMjk0MSAzMi4wMjY3IDIzLjEwMzkgMzEuODg3NyAyMi45NjI5TDMwLjE5NjMgMjEuMjcxNUwzMS43OTc5IDE5LjY2OTlMMzMuNDg5MyAyMS4zNjEzWk0yNC42OTgyIDEyLjkzMzZDMjQuOTU3MSAxMi45NTk0IDI1LjIwMTEgMTMuMDczMyAyNS4zODY3IDEzLjI1ODhMMzAuMTk3MyAxOC4wNjkzTDI4LjU5NTcgMTkuNjcwOUwyNC4xMTYyIDE1LjE5MTRIMTYuMjg1MlYyMy4wMjI1TDIwLjc2NjYgMjcuNDk5TDE5LjE2NiAyOS4wOTk2TDE0LjM1MzUgMjQuMjkzQzE0LjE0MTEgMjQuMDgwNyAxNC4wMjE1IDIzLjc5MjUgMTQuMDIxNSAyMy40OTIyVjE0LjA1OTZDMTQuMDIxNyAxMy40MzQ2IDE0LjUyODMgMTIuOTI3NyAxNS4xNTMzIDEyLjkyNzdIMjQuNTg1OUwyNC42OTgyIDEyLjkzMzZaTTE5Ljg3ODkgMTcuNjQzNkMyMC41MDM4IDE3LjY0MzYgMjEuMDEwMyAxOC4xNTA2IDIxLjAxMDcgMTguNzc1NEMyMS4wMTA3IDE5LjQwMDUgMjAuNTA0IDE5LjkwODIgMTkuODc4OSAxOS45MDgySDE5Ljg2OTFDMTkuMjQ0MiAxOS45MDggMTguNzM3MyAxOS40MDA0IDE4LjczNzMgMTguNzc1NEMxOC43Mzc4IDE4LjE1MDggMTkuMjQ0NSAxNy42NDM4IDE5Ljg2OTEgMTcuNjQzNkgxOS44Nzg5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0I0MjMxOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMzMuMTY5OSAxNC4wODQ1TDE1LjE2OTkgMzIuMDg0NVwiIHN0cm9rZT1cIiNCNDIzMThcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzUxNl85Njg0MVwiIHg9XCItMC4wMDA2NDMyNTNcIiB5PVwiMC4wMDAxNjY2NTVcIiB3aWR0aD1cIjQ4LjM3MjRcIiBoZWlnaHQ9XCI0OC4zNjU1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMS4wODQzMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMS4wODQzMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd181MTZfOTY4NDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd181MTZfOTY4NDFcIiByZXN1bHQ9XCJzaGFwZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ2FuY2VsIGFuZCBTYXZlIEJ1dHRvbnMgKHdoZW4gIXJldm9wc1R5cGVWYWx1ZSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBpZD1cImFsZXJ0LXRvYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKHNlbGVjdGVkVHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIihzZWxlY3RlZFJhZGlvVHlwZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGVkUmFkaW9UeXBlID09PSAnJykgfHwgKHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID09PSAwKVwiPlNhdmU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEVkaXQgQnV0dG9uICh3aGVuIHJldm9wc1R5cGVWYWx1ZSAmJiBlZGl0QnRuU2hvdykgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJldm9wc1R5cGVWYWx1ZSAmJiBlZGl0QnRuU2hvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImVkaXRWYWx1ZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuNjU1NCAxLjcxMDQ3QzE0Ljg5MjcgMS40NzMxNSAxNS4xNzQ1IDEuMjg0OSAxNS40ODQ1IDEuMTU2NDZDMTUuNzk0NiAxLjAyODAyIDE2LjEyNjkgMC45NjE5MTQgMTYuNDYyNiAwLjk2MTkxNEMxNi43OTgyIDAuOTYxOTE0IDE3LjEzMDUgMS4wMjgwMiAxNy40NDA2IDEuMTU2NDZDMTcuNzUwNyAxLjI4NDkgMTguMDMyNCAxLjQ3MzE1IDE4LjI2OTcgMS43MTA0N0MxOC41MDcxIDEuOTQ3NzkgMTguNjk1MyAyLjIyOTUzIDE4LjgyMzggMi41Mzk2MUMxOC45NTIyIDIuODQ5NjkgMTkuMDE4MyAzLjE4MjAyIDE5LjAxODMgMy41MTc2NUMxOS4wMTgzIDMuODUzMjcgMTguOTUyMiA0LjE4NTYxIDE4LjgyMzggNC40OTU2OEMxOC42OTUzIDQuODA1NzYgMTguNTA3MSA1LjA4NzUgMTguMjY5NyA1LjMyNDgyTDYuMDcxMyAxNy41MjMzTDEuMTAxNTYgMTguODc4NkwyLjQ1Njk1IDEzLjkwODlMMTQuNjU1NCAxLjcxMDQ3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS44MTA3OVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiZHVwbGljYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZHVwbGljYXRlLXNwbGl0XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2R1cGxpY2F0ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJkdXBsaWNhdGUtc3BsaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkR1cGxpY2F0ZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImVtcGxveWVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZW1wbG95ZWUtc3BsaXRcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInZW1wbG95ZWUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZW1wbG95ZWUtc3BsaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+RW1wbG95ZWUvU3RhZmY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJob3VzZS1rZWVwaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaG91c2Uta2VlcGluZy1zcGxpdFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidob3VzZS1rZWVwaW5nJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImhvdXNlLWtlZXBpbmctc3BsaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+SG91c2UgS2VlcGluZzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImp1bmtcIiBpZD1cImp1bmstc3BsaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2p1bmsnXCIgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB1c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgfHwgcmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJqdW5rLXNwbGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMyA2SDVNNSA2SDIxTTUgNlYyMEM1IDIwLjUzMDQgNS4yMTA3MSAyMS4wMzkxIDUuNTg1NzkgMjEuNDE0MkM1Ljk2MDg2IDIxLjc4OTMgNi40Njk1NyAyMiA3IDIySDE3QzE3LjUzMDQgMjIgMTguMDM5MSAyMS43ODkzIDE4LjQxNDIgMjEuNDE0MkMxOC43ODkzIDIxLjAzOTEgMTkgMjAuNTMwNCAxOSAyMFY2SDVaTTggNlY0QzggMy40Njk1NyA4LjIxMDcxIDIuOTYwODYgOC41ODU3OSAyLjU4NTc5QzguOTYwODYgMi4yMTA3MSA5LjQ2OTU3IDIgMTAgMkgxNEMxNC41MzA0IDIgMTUuMDM5MSAyLjIxMDcxIDE1LjQxNDIgMi41ODU3OUMxNS43ODkzIDIuOTYwODYgMTYgMy40Njk1NyAxNiA0VjZNMTAgMTFWMTdNMTQgMTFWMTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+SnVuazwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UmVtYXJrcyAoT3B0aW9uYWwpPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcm93cz1cIjNcIiBwbGFjZWhvbGRlcj1cIkNvbW1lbnQgaGVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInVzZXJDb21tZW50XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gR3JpZC9MaXN0IFZpZXcgKHNob3duIHdoZW4gc3BsaXQtc2NyZWVuIGlzIG5vdCBlbmFibGVkKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0wIGltZy10cmFmZmljIGNvbnRhaW4gaGlnaC00MDBweCBzY3JvbGwteVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZpZXdNb2RlID09PSAnZ3JpZCcgJiYgIW5vRGF0YSAmJiAhbG9hZGluZyAmJiAhc3BsaXRTY3JlZW5FbmFibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvYmogb2YgaW1hZ2VzQXJyYXlEYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImltYWdlQ2FyZDsgY29udGV4dDogeyAkaW1wbGljaXQ6IG9iaiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3Qtdmlldy13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlld01vZGUgPT09ICdsaXN0JyAmJiAhbm9EYXRhICYmICFsb2FkaW5nICYmICFzcGxpdFNjcmVlbkVuYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwIG1iLTVcIiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgbGlzdFZpZXdHcm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cC1oZWFkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC10aXRsZVwiPnt7IGdyb3VwPy50aW1lUmFuZ2UgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJncm91cC1jb3VudCBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IG1zLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN7eyBncm91cD8uZGF0YT8ubGVuZ3RoIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZ3gtNCBsaXN0LWdyb3VwLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvYmogb2YgZ3JvdXA/LmRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImltYWdlQ2FyZDsgY29udGV4dDogeyAkaW1wbGljaXQ6IG9iaiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW1hZ2VDYXJkIGxldC1vYmo+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSAhPT0gJ2R1cGxpY2F0ZScgfHwgKHR5cGUgPT09ICdkdXBsaWNhdGUnJiYgb2JqLnJldm9wc1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIG9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1tZC0zIGJvcmRlci1ncmF5IG14LTIgcC0yIG10LTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvbmRpdGlvbjogT25seSBzaG93IGlmIG5vdCBkdXBsaWNhdGUgT1IgZHVwbGljYXRlIHdpdGggbm9uLWVtcHR5IGR1cGxpY2F0ZUltYWdlUGF0aCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYyBjdXJzb3ItcG9pbnRlclwiIFtzcmNdPVwiaW1hZ2VVcmwgKyBvYmo/LmZpbGVQYXRoXCIgKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIiBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEltYWdlRm9yU3BsaXRWaWV3KG9iailcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjMgMjBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCIgZD1cIk02LjUgNi4zMjIyN0g2LjUxTTE2LjI1IDkuMzIyMjdIMjEuNUwxOCAxNi4zMjIzTDE0LjkxIDEyLjAwMjNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDE2LjMyMjlINS4yNkM1LjYzMjczIDE2LjMyNTUgNS45OTg3NyAxNi4yMjM5IDYuMzE2ODIgMTYuMDI5NUM2LjYzNDg3IDE1LjgzNTIgNi44OTIyOCAxNS41NTU4IDcuMDYgMTUuMjIyOUw4LjUgMTIuMzIyOU0xLjUgMTguMzIyOVYxNC4zMjI5TTE3LjUgNi44MjI5MUwxMy41IDE0LjgyMjlMMy4xMSA5LjYyMjkxQzIuNDIwMzMgOS4yNzU1MyAxLjg5NjM1IDguNjY5MSAxLjY1MjcyIDcuOTM2MzJDMS40MDkwOSA3LjIwMzU0IDEuNDY1NjQgNi40MDQxIDEuODEgNS43MTI5MUwzLjE5IDIuOTIyOTFDMy4zNjIgMi41ODAxNCAzLjU5OTg0IDIuMjc0NiAzLjg4OTk0IDIuMDIzNzVDNC4xODAwMyAxLjc3MjkgNC41MTY3IDEuNTgxNjUgNC44ODA3MiAxLjQ2MDkzQzUuMjQ0NzQgMS4zNDAyMSA1LjYyODk3IDEuMjkyMzkgNi4wMTE0NyAxLjMyMDE4QzYuMzkzOTggMS4zNDc5NyA2Ljc2NzI2IDEuNDUwODQgNy4xMSAxLjYyMjkxTDE3LjUgNi44MjI5MVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlciBtYi01IHRleHQtY2VudGVyXCI+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlc2NyaXB0aW9uIG1iLTUgdGV4dC1jZW50ZXJcIj5UaGUgc2VsZWN0ZWQgY2FtZXJhIGlzIG5vdCBhdmFpbGFibGUgYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9tZW50Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSAhPT0gJ2R1cGxpY2F0ZScgfHwgKHR5cGUgPT09ICdkdXBsaWNhdGUnJiYgb2JqLnJldm9wc1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIG9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e29iaj8udGVtcGxkfX0gPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIodHlwZSA9PT0gJ2R1cGxpY2F0ZScmJiBvYmoucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgb2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm14LTIgYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7b2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RofX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCIgY2xhc3M9XCJtcy0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxMCAxMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xMjIyIDMuNTc5MTlMNC4xMzg4NyA2LjQ1ODM2TDMuMzQ3MiA1LjYxMjUzQzMuMjAxMzcgNS40NzUwMyAyLjk3MjIgNS40NjY2OSAyLjgwNTUzIDUuNTgzMzZDMi42NDMwMyA1LjcwNDE5IDIuNTk3MiA1LjkxNjY5IDIuNjk3MiA2LjA4NzUzTDMuNjM0NyA3LjYxMjUzQzMuNzI2MzcgNy43NTQxOSAzLjg4NDcgNy44NDE2OSA0LjA2Mzg3IDcuODQxNjlDNC4yMzQ3IDcuODQxNjkgNC4zOTcyIDcuNzU0MTkgNC40ODg4NyA3LjYxMjUzQzQuNjM4ODcgNy40MTY2OSA3LjUwMTM3IDQuMDA0MTkgNy41MDEzNyA0LjAwNDE5QzcuODc2MzcgMy42MjA4NiA3LjQyMjIgMy4yODMzNiA3LjEyMjIgMy41NzUwM1YzLjU3OTE5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxMkI3NkFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0ncmVqZWN0ZWQnXCIgY2xhc3M9XCJtcy0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDk5NjEgNUw1LjA5OTYxIDhNNS4wOTk2MSA1TDguMDk5NjEgOE00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQyOF81OTQ4NFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41OTk2MDkgMC41KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7e29iaj8uZW50cnlUbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIiBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJvYmo/LmlzUGFyZW50XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzU2OF8xMDM2NTcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF81NjhfMTAzNjU3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIW9iaj8uaXNQYXJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdob3VzZS1rZWVwaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdqdW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMyA2SDVNNSA2SDIxTTUgNlYyMEM1IDIwLjUzMDQgNS4yMTA3MSAyMS4wMzkxIDUuNTg1NzkgMjEuNDE0MkM1Ljk2MDg2IDIxLjc4OTMgNi40Njk1NyAyMiA3IDIySDE3QzE3LjUzMDQgMjIgMTguMDM5MSAyMS43ODkzIDE4LjQxNDIgMjEuNDE0MkMxOC43ODkzIDIxLjAzOTEgMTkgMjAuNTMwNCAxOSAyMFY2SDVaTTggNlY0QzggMy40Njk1NyA4LjIxMDcxIDIuOTYwODYgOC41ODU3OSAyLjU4NTc5QzguOTYwODYgMi4yMTA3MSA5LjQ2OTU3IDIgMTAgMkgxNEMxNC41MzA0IDIgMTUuMDM5MSAyLjIxMDcxIDE1LjQxNDIgMi41ODU3OUMxNS43ODkzIDIuOTYwODYgMTYgMy40Njk1NyAxNiA0VjZNMTAgMTFWMTdNMTQgMTFWMTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgIDwhLS0gZnVsbCBpbWFnZSBWaWV3IC0tPlxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpbWFnZUZsb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGlja2V0IEJsb2NrIEFsZXJ0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKT8ucmFpc2VkU3RhdHVzRW5hYmxlZCA9PT0gJ2Jsb2NrJ1wiIGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTJcIiBmaWxsPVwiI0YwNDQzOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4VjEzXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHJhaXNlIHRpY2tldCBmb3IgbmV4dCB7eyBnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpPy5ub09mQmxvY2tlZERheXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnMCcgfX0gZGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgbG9va3MgbGlrZSB5b3UgaGF2ZSBhY2hpZXZlZCA5NSUgYWNjdXJhY3kgZm9yIHRoZSB0aHJlZSB0aWNrZXRzIHJhaXNlZCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGguIFRoaXMgbGltaXRzIHlvdSBmcm9tIHJhaXNpbmcgbW9yZSB0aWNrZXRzIHRvIGF2b2lkIHJlZHVuZGFuY3kuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHN0aWxsIHdhbnQgdG8gcmFpc2UgdGlja2V0cywgPHNwYW4gY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0UmVzZXQoKVwiPnNlbmQgcmVxdWVzdDwvc3Bhbj4gdG8gcmVzZXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGlja2V0IFJlcXVlc3QgU3VjY2VzcyBBbGVydCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldFNlbGVjdGVkRGF0ZUNhcmREYXRhKCk/LnJhaXNlZFN0YXR1c0VuYWJsZWQgPT09ICdyZXF1ZXN0J1wiIGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiAyMUwyMyAxMkwyIDNWMTBMMTcgMTJMMiAxNFYyMVpcIiBmaWxsPVwiIzEwQjk4MVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNldCBSZXF1ZXN0IFNlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciByZXF1ZXN0IHRvIGVuYWJsZSB0aWNrZXQgcmFpc2luZyBoYXMgYmVlbiBzdWJtaXR0ZWQuIFlvdSdsbCBiZSBub3RpZmllZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2UgaXQncyBhcHByb3ZlZC4gUGxlYXNlIGVuc3VyZSBmdXR1cmUgdGlja2V0IGFjY3VyYWN5IHJlbWFpbnMgd2l0aGluIHRoZSA5NSVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RmYWxsVHJlbmRzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWNrZXRTdGF0dXNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zaHJpbmstMCBtdC0zIGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLWF1dG8gdGV4dC1lbmRcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFjYW5FbmFibGVCdXR0b24oKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJSYWlzZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYWlzZSB0aWNrZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncm91cCBiZy13aGl0ZSBib3JkZXItMSBidG4tZ3JvdXAgdy1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShjb3VudERhdGE/Lmxlbmd0aCA+IDApXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdmb290ZmFsbCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEZvb3RmYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZm9vdGZhbGwnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZm9vdGZhbGxDb3VudCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ25vbi10YWdnaW5nJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uLXRhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdub24tdGFnZ2luZycgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5ub25UYWdzIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZHVwbGljYXRlJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2R1cGxpY2F0ZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1cGxpY2F0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZHVwbGljYXRlIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnZW1wbG95ZWUnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZS9TdGFmZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2VtcGxveWVlJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmVtcGxveWVlIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2p1bmsnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnanVuaycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdqdW5rJyA/ICdiYWRnZSBiYWRnZS1hY3RpdmUgYWN0aXZlUGxhbkJ0bicgOiAnIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgaW5hY3RpdmVQbGFuQnRuJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5qdW5rIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnaG91c2Uta2VlcGluZycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdob3VzZS1rZWVwaW5nJyA/ICdiYWRnZSBiYWRnZS1hY3RpdmUgYWN0aXZlUGxhbkJ0bicgOiAnIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgaW5hY3RpdmVQbGFuQnRuJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5ob3VzZWtlZXBpbmcgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtMCBib3JkZXItZ3JheSBpbWctdHJhZmZpY1wiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHAtMiAgbWItMiBtdC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNYWluIEltYWdlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbWcgY2xhc3M9XCJpbWctc3JjIGN1cnNvci1wb2ludGVyIGgtNDUwcHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkSW1hZ2VBcnJheShpbWFnZVVybCwgc2VsZWN0SW1hZ2VBcnJheSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoXCIgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXIgaC00NTBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRJbWFnZUFycmF5KGltYWdlVXJsLCBzZWxlY3RJbWFnZUFycmF5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlVXJsICsgc2VsZWN0SW1hZ2VBcnJheT8uZmlsZVBhdGhcIiBhbHQ9XCJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IGFycm93IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tzZWxlY3RJbWFnZUFycmF5Py50ZW1wbGR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjEyMjIgMy41NzkxOUw0LjEzODg3IDYuNDU4MzZMMy4zNDcyIDUuNjEyNTNDMy4yMDEzNyA1LjQ3NTAzIDIuOTcyMiA1LjQ2NjY5IDIuODA1NTMgNS41ODMzNkMyLjY0MzAzIDUuNzA0MTkgMi41OTcyIDUuOTE2NjkgMi42OTcyIDYuMDg3NTNMMy42MzQ3IDcuNjEyNTNDMy43MjYzNyA3Ljc1NDE5IDMuODg0NyA3Ljg0MTY5IDQuMDYzODcgNy44NDE2OUM0LjIzNDcgNy44NDE2OSA0LjM5NzIgNy43NTQxOSA0LjQ4ODg3IDcuNjEyNTNDNC42Mzg4NyA3LjQxNjY5IDcuNTAxMzcgNC4wMDQxOSA3LjUwMTM3IDQuMDA0MTlDNy44NzYzNyAzLjYyMDg2IDcuNDIyMiAzLjI4MzM2IDcuMTIyMiAzLjU3NTAzVjMuNTc5MTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxMkI3NkFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnN0YXR1cyA9PT0ncmVqZWN0ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNTk5NjA5IDAuNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7eyh0ZW1wTW9kYWxJbWFnZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RJbWFnZUFycmF5KT8uZW50cnlUbWUgfHwgKHRlbXBNb2RhbEltYWdlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEltYWdlQXJyYXkpPy5lbnRyeVRpbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHAtMiBtYi0yICBtdC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB0aXRsZS10eXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IG5vbi1zaG9wcGVyIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY29sLW1kLTYgdGV4dC1lbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiISh1c2Vycz8ucm9sZSA9PT0ndXNlcicgJiYgdXNlcnM/LnVzZXJUeXBlID09PSdjbGllbnQnICYmIHNlbGVjdGVkUmFkaW9UeXBlID09PSdqdW5rJylcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcmV2b3BzVHlwZVZhbHVlXCIgY2xhc3M9XCJtYi01IHRleHQtZW5kXCIgcm9sZT1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xlYXJWYWx1ZSgpXCI+Q2xlYXI8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIGlkPVwiYWxlcnQtdG9hc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXZlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiISh1c2Vycz8ucm9sZSA9PT0ndXNlcicgJiYgdXNlcnM/LnVzZXJUeXBlID09PSdjbGllbnQnICYmIHNlbGVjdGVkUmFkaW9UeXBlID09PSdqdW5rJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRCdG5TaG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmV2b3BzVHlwZVZhbHVlXCIgY2xhc3M9XCJtYi01IHRleHQtZW5kXCIgcm9sZT1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJlZGl0VmFsdWUoKVwiPjxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuNjU1NCAxLjcxMDQ3QzE0Ljg5MjcgMS40NzMxNSAxNS4xNzQ1IDEuMjg0OSAxNS40ODQ1IDEuMTU2NDZDMTUuNzk0NiAxLjAyODAyIDE2LjEyNjkgMC45NjE5MTQgMTYuNDYyNiAwLjk2MTkxNEMxNi43OTgyIDAuOTYxOTE0IDE3LjEzMDUgMS4wMjgwMiAxNy40NDA2IDEuMTU2NDZDMTcuNzUwNyAxLjI4NDkgMTguMDMyNCAxLjQ3MzE1IDE4LjI2OTcgMS43MTA0N0MxOC41MDcxIDEuOTQ3NzkgMTguNjk1MyAyLjIyOTUzIDE4LjgyMzggMi41Mzk2MUMxOC45NTIyIDIuODQ5NjkgMTkuMDE4MyAzLjE4MjAyIDE5LjAxODMgMy41MTc2NUMxOS4wMTgzIDMuODUzMjcgMTguOTUyMiA0LjE4NTYxIDE4LjgyMzggNC40OTU2OEMxOC42OTUzIDQuODA1NzYgMTguNTA3MSA1LjA4NzUgMTguMjY5NyA1LjMyNDgyTDYuMDcxMyAxNy41MjMzTDEuMTAxNTYgMTguODc4NkwyLjQ1Njk1IDEzLjkwODlMMTQuNjU1NCAxLjcxMDQ3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjgxMDc5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0PC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJkdXBsaWNhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZHVwbGljYXRlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2R1cGxpY2F0ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImR1cGxpY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj5EdXBsaWNhdGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiZW1wbG95ZWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZW1wbG95ZWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInZW1wbG95ZWUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJlbXBsb3llZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+RW1wbG95ZWUvU3RhZmY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiaG91c2Uta2VlcGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJob3VzZS1rZWVwaW5nXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2hvdXNlLWtlZXBpbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJob3VzZS1rZWVwaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPiBIb3VzZSBLZWVwaW5nPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImp1bmtcIiBpZD1cImp1bmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidqdW5rJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1c2Vycz8ucm9sZSA9PT0ndXNlcicgJiYgdGhpcy51c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgfHwgcmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwianVua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+IEp1bms8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTAgaW1nLXRyYWZmaWMgbXQtMyBoaWdoLTQwMHB4IHNjcm9sbC15XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgYm9yZGVyLWdyYXkgbXgtMiBwLTIgbXQtNVwiICpuZ0Zvcj1cImxldCBvYmogb2YgcmVtYWluaW5nSW1hZ2VBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCIhcmV2b3BzVHlwZVZhbHVlICYmIHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJ1wiIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJvYmouc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBhYnNvbHV0ZSBmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbWFnZUNoZWNrYm94Q2hhbmdlKCRldmVudCwgb2JqLCAnZHVwbGljYXRlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDBcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkUmFkaW9UeXBlICE9PSAnZHVwbGljYXRlJyA/ICdjdXJzb3ItcG9pbnRlcicgOiAnY3Vyc29yLXBvaW50ZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmwgKyBvYmo/LmZpbGVQYXRoXCIgKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIiBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUltYWdlQ2xpY2soJGV2ZW50LCBvYmopXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMyAyMFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjUgNi4zMjIyN0g2LjUxTTE2LjI1IDkuMzIyMjdIMjEuNUwxOCAxNi4zMjIzTDE0LjkxIDEyLjAwMjNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JfMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjUgMTYuMzIyOUg1LjI2QzUuNjMyNzMgMTYuMzI1NSA1Ljk5ODc3IDE2LjIyMzkgNi4zMTY4MiAxNi4wMjk1QzYuNjM0ODcgMTUuODM1MiA2Ljg5MjI4IDE1LjU1NTggNy4wNiAxNS4yMjI5TDguNSAxMi4zMjI5TTEuNSAxOC4zMjI5VjE0LjMyMjlNMTcuNSA2LjgyMjkxTDEzLjUgMTQuODIyOUwzLjExIDkuNjIyOTFDMi40MjAzMyA5LjI3NTUzIDEuODk2MzUgOC42NjkxIDEuNjUyNzIgNy45MzYzMkMxLjQwOTA5IDcuMjAzNTQgMS40NjU2NCA2LjQwNDEgMS44MSA1LjcxMjkxTDMuMTkgMi45MjI5MUMzLjM2MiAyLjU4MDE0IDMuNTk5ODQgMi4yNzQ2IDMuODg5OTQgMi4wMjM3NUM0LjE4MDAzIDEuNzcyOSA0LjUxNjcgMS41ODE2NSA0Ljg4MDcyIDEuNDYwOTNDNS4yNDQ3NCAxLjM0MDIxIDUuNjI4OTcgMS4yOTIzOSA2LjAxMTQ3IDEuMzIwMThDNi4zOTM5OCAxLjM0Nzk3IDYuNzY3MjYgMS40NTA4NCA3LjExIDEuNjIyOTFMMTcuNSA2LjgyMjkxWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXIgbWItNSB0ZXh0LWNlbnRlclwiPlByZXZpZXcgbm90IGF2YWlsYWJsZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JpcHRpb24gbWItNSB0ZXh0LWNlbnRlclwiPlRoZSBzZWxlY3RlZCBjYW1lcmEgaXMgbm90IGF2YWlsYWJsZSBhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudC48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e29iaj8udGVtcGxkID8gb2JqPy50ZW1wbGQgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmo/LnRlbXBJZH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5zdGF0dXMgPT09J2FwcHJvdmVkJ1wiIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0QxRkFERlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzEyQjc2QVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5zdGF0dXMgPT09J3JlamVjdGVkJ1wiIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTMgMTNcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQyOF81OTQ4NClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRUU0RTJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjA5OTYxIDVMNS4wOTk2MSA4TTUuMDk5NjEgNUw4LjA5OTYxIDhNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQyOF81OTQ4NFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41OTk2MDkgMC41KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7b2JqPy5lbnRyeVRtZSA/IG9iaj8uZW50cnlUbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm9iaj8uZW50cnlUaW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdqdW5rJ1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG48L2Rpdj5cblxuXG48bmctdGVtcGxhdGUgI3pvb21Qb3B1cCBsZXQtbW9kZWw+XG4gICAgPGRpdiBjbGFzcz1cInAtNCBtLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBib3JkZXItMCBwLTAgdy0xMDAgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCIgY2xhc3M9XCJteS0zXCI+XG5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDg4Xzk4MzM3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI5LjE2OTMgMTMuMzMzM1YxOC4zMzMzTTI5LjE2OTMgMTguMzMzM0gyNC4xNjkzTTI5LjE2OTMgMTguMzMzM0wyNS4zMDI2IDE0LjdDMjQuNDA3IDEzLjgwMzkgMjMuMjk5IDEzLjE0OTMgMjIuMDgxOSAxMi43OTczQzIwLjg2NDkgMTIuNDQ1MyAxOS41Nzg1IDEyLjQwNzMgMTguMzQyOCAxMi42ODY5QzE3LjEwNzIgMTIuOTY2NSAxNS45NjI0IDEzLjU1NDUgMTUuMDE1NSAxNC4zOTYyQzE0LjA2ODUgMTUuMjM3OCAxMy4zNTAyIDE2LjMwNTYgMTIuOTI3NiAxNy41TTEwLjgzNTkgMjYuNjY2NlYyMS42NjY2TTEwLjgzNTkgMjEuNjY2NkgxNS44MzU5TTEwLjgzNTkgMjEuNjY2NkwxNC43MDI2IDI1LjNDMTUuNTk4MiAyNi4xOTYxIDE2LjcwNjIgMjYuODUwNiAxNy45MjMzIDI3LjIwMjdDMTkuMTQwMyAyNy41NTQ3IDIwLjQyNjcgMjcuNTkyNyAyMS42NjI0IDI3LjMxMzFDMjIuODk4IDI3LjAzMzUgMjQuMDQyOCAyNi40NDU1IDI0Ljk4OTcgMjUuNjAzOEMyNS45MzY3IDI0Ljc2MjEgMjYuNjU1IDIzLjY5NDMgMjcuMDc3NiAyMi41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDg4Xzk4MzM3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDEwIDEwKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8IS0tIEhlYWRpbmcgLS0+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdlbXBsb3llZSdcIj5UYWdnaW5nIGFzIGVtcGxveWVlL3N0YWZmIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIj5UYWdnaW5nIGFzIGR1cGxpY2F0ZXMgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnaG91c2Uta2VlcGluZydcIj5UYWdnaW5nIGFzIGhvdXNlIGtlZXBpbmcgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCI+Q2xlYXIgZHVwbGljYXRlczwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0nanVuaydcIj5UYWdnaW5nIGFzIGp1bms8L3NwYW4+XG5cbiAgICAgICAgICAgIDwvaDU+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2VtcGxveWVlJ1wiPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB0YWcgdGhpcyBhcyBlbXBsb3llZS9zdGFmZj88L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdkdXBsaWNhdGUnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGR1cGxpY2F0ZXM/IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGhvdXNlIGtlZXBpbmc/IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiPlRoaXMgd2lsbCByZW1vdmUgdGFnZ2VkIGR1cGxpY2F0ZXMgYW5kIG1vdmUgdGhlbSB0b1xuICAgICAgICAgICAgICAgICAgICAnTm9uLXRhZycuPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSdqdW5rJ1wiPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB0YWcgdGhpcyBhcyBqdW5rPzwvc3Bhbj5cblxuICAgICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgbXQtNSBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbFN1Ym1pdCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicG9wdXBUeXBlICE9PSAnbm9uLXRhZ2dpbmcnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic3VibWl0VmFsdWUocG9wdXBUeXBlKVwiPlxuICAgICAgICAgICAgICAgIFllcywgVGFnXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXRWYWx1ZShwb3B1cFR5cGUpXCI+XG4gICAgICAgICAgICAgICAgWWVzLCBjbGVhclxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG48bmctdGVtcGxhdGUgI3JhaXNlZFBvcHVwIGxldC1tb2RlbD5cbiAgICA8ZGl2IGNsYXNzPVwicC00IG0tNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIGJvcmRlci0wIHAtMCB3LTEwMCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XG5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjEuMjUxIDExLjA4MDZDMjEuNzQwNSAxMS4wNjk5IDIyLjIxNTMgMTEuMjQ4NyAyMi41NzYyIDExLjU3OTZMMjMuNDkyMiAxMi40MjA0QzIzLjgwODkgMTIuNzA5NyAyMy44OTMgMTMuMTAxNyAyMy44NjUyIDEzLjQyNjNWMTMuNDI3MkMyMy44MzYgMTMuNzQ3OCAyMy42OTU0IDE0LjA1OTIgMjMuNDc4NSAxNC4yOTQ0QzIzLjM2OTkgMTQuNDEzIDIzLjI4NjUgMTQuNTUyNSAyMy4yMzE0IDE0LjcwMzZDMjMuMTc2NCAxNC44NTQ4IDIzLjE1MTIgMTUuMDE1NSAyMy4xNTgyIDE1LjE3NjNDMjMuMTY1MiAxNS4zMzcgMjMuMjAzNSAxNS40OTUzIDIzLjI3MTUgMTUuNjQxMUMyMy4zMzk0IDE1Ljc4NjkgMjMuNDM2MiAxNS45MTcyIDIzLjU1NDcgMTYuMDI1OUMyMy42NzMzIDE2LjEzNDYgMjMuODExNyAxNi4yMTk4IDIzLjk2MjkgMTYuMjc0OUMyNC4xMTQxIDE2LjMzIDI0LjI3NDggMTYuMzU0MSAyNC40MzU1IDE2LjM0NzJDMjQuNTk2MSAxNi4zNDAyIDI0Ljc1MzcgMTYuMzAxNyAyNC44OTk0IDE2LjIzMzlDMjUuMDA4OSAxNi4xODI5IDI1LjExMDYgMTYuMTE2IDI1LjIwMDIgMTYuMDM1NkwyNS4zNzAxIDE1Ljg2NTdDMjUuNTc1OSAxNS42NzQ4IDI1LjgzODUgMTUuNTQwOCAyNi4xMTUyIDE1LjQ5MDdDMjYuMjk3MiAxNS40NTQ2IDI2LjQ4NSAxNS40NjE3IDI2LjY2NDEgMTUuNTEwM0MyNi44NDM5IDE1LjU1OTEgMjcuMDEwMyAxNS42NDkgMjcuMTQ5NCAxNS43NzI5TDI3LjE1MTQgMTUuNzc0OUwyOC4yNTk4IDE2Ljc5MDVDMjguNDQ1IDE2Ljk2MDUgMjguNTk0OCAxNy4xNjU4IDI4LjcwMDIgMTcuMzk0QzI4LjgwNTYgMTcuNjIyMyAyOC44NjQ4IDE3Ljg2OTQgMjguODc0IDE4LjEyMDZDMjguODgzMiAxOC4zNzIgMjguODQyMyAxOC42MjM0IDI4Ljc1MzkgMTguODU4OUMyOC42NjU1IDE5LjA5NDEgMjguNTMxNiAxOS4zMDk2IDI4LjM1OTQgMTkuNDkyN0wyMC4xMTEzIDI4LjI1ODNDMTkuOTM3IDI4LjQ0MzQgMTkuNzI2OCAyOC41OTEyIDE5LjQ5NDEgMjguNjkzOEMxOS4yNjE0IDI4Ljc5NjUgMTkuMDEwMiAyOC44NTIyIDE4Ljc1NTkgMjguODU2QzE4LjUwMTYgMjguODU5NyAxOC4yNDkzIDI4LjgxMTkgMTguMDEzNyAyOC43MTYzQzE3Ljc3NzkgMjguNjIwNiAxNy41NjM2IDI4LjQ3ODQgMTcuMzgzOCAyOC4yOTgzTDE2LjI1MzkgMjcuMTY4NUMxNS43NTExIDI2LjY2NTYgMTUuODgzMiAyNS45NTUyIDE2LjE1MTQgMjUuNTU0MkwxNi4yMDYxIDI1LjQ2NDRDMTYuMzI0MSAyNS4yNDg2IDE2LjM3NDIgMjUuMDAwOCAxNi4zNDk2IDI0Ljc1NDRDMTYuMzIxNCAyNC40NzMxIDE2LjE5NyAyNC4yMTAyIDE1Ljk5NzEgMjQuMDEwM0MxNS43OTcxIDIzLjgxMDMgMTUuNTM0MyAyMy42ODU5IDE1LjI1MjkgMjMuNjU3N0MxNC45NzE1IDIzLjYyOTcgMTQuNjg4NyAyMy42OTk1IDE0LjQ1MzEgMjMuODU2SDE0LjQ1MjFDMTQuMDQ5NCAyNC4xMjIyIDEzLjM0MDcgMjQuMjU1MiAxMi44Mzc5IDIzLjc1MTVMMTEuNjc5NyAyMi41OTMzQzExLjUwMzQgMjIuNDE2OSAxMS4zNjQgMjIuMjA3NCAxMS4yNjg2IDIxLjk3NzFDMTEuMTczMSAyMS43NDY3IDExLjEyMzEgMjEuNDk5OSAxMS4xMjMgMjEuMjUwNUMxMS4xMjMgMjEuMDAxIDExLjE3MzEgMjAuNzUzNSAxMS4yNjg2IDIwLjUyMjlDMTEuMzY0IDIwLjI5MjYgMTEuNTAzNCAyMC4wODMxIDExLjY3OTcgMTkuOTA2N0wxOS45NDkyIDExLjYzNjJDMjAuMjk1NCAxMS4yOTAyIDIwLjc2MTYgMTEuMDkxMiAyMS4yNTEgMTEuMDgwNlpNMjEuMjc4MyAxMi4zODA0QzIxLjEyMzcgMTIuMzgzOCAyMC45NzY1IDEyLjQ0NjggMjAuODY3MiAxMi41NTYyTDEyLjU5NjcgMjAuODI1N0MxMi41NDA5IDIwLjg4MTQgMTIuNDk3IDIwLjk0ODIgMTIuNDY2OCAyMS4wMjFDMTIuNDM2NyAyMS4wOTM4IDEyLjQyMDkgMjEuMTcxNyAxMi40MjA5IDIxLjI1MDVDMTIuNDIwOSAyMS4zMjkyIDEyLjQzNjcgMjEuNDA3MyAxMi40NjY4IDIxLjQ4QzEyLjQ5NyAyMS41NTI4IDEyLjU0MSAyMS42MTk2IDEyLjU5NjcgMjEuNjc1M0wxMy43MDYxIDIyLjc4MzdMMTMuNzMxNCAyMi43NzJDMTQuMjE2OSAyMi40NDg1IDE0Ljc5OTMgMjIuMzAzNSAxNS4zNzk5IDIyLjM2MDhDMTUuOTYwOCAyMi40MTgzIDE2LjUwNDIgMjIuNjc0NyAxNi45MTcgMjMuMDg3NEMxNy4zMjk4IDIzLjUwMDIgMTcuNTg3IDI0LjA0MzYgMTcuNjQ0NSAyNC42MjQ1QzE3LjcwMiAyNS4yMDU1IDE3LjU1NjUgMjUuNzg5MiAxNy4yMzI0IDI2LjI3NDlMMTcuMjMwNSAyNi4yNzU5QzE3LjIyNjEgMjYuMjgyMiAxNy4yMjI2IDI2LjI4OTMgMTcuMjE5NyAyNi4yOTY0TDE4LjMwMTggMjcuMzgwNEMxOC4zNTg1IDI3LjQzNzIgMTguNDI2NiAyNy40ODIgMTguNTAxIDI3LjUxMjJDMTguNTc1NSAyNy41NDI1IDE4LjY1NTkgMjcuNTU3NCAxOC43MzYzIDI3LjU1NjJDMTguODE2NiAyNy41NTQ5IDE4Ljg5NjMgMjcuNTM3OCAxOC45Njk3IDI3LjUwNTRDMTkuMDQzIDI3LjQ3MjkgMTkuMTA5MSAyNy40MjYxIDE5LjE2NDEgMjcuMzY3N0wyNy40MTMxIDE4LjYwMjFDMjcuNDY3MyAxOC41NDQyIDI3LjUwOTMgMTguNDc2MSAyNy41MzcxIDE4LjQwMTlDMjcuNTY0OSAxOC4zMjc2IDI3LjU3ODEgMTguMjQ4NyAyNy41NzUyIDE4LjE2OTRDMjcuNTcyMiAxOC4wOTAyIDI3LjU1MzggMTguMDExOSAyNy41MjA1IDE3LjkzOTlDMjcuNDg3MiAxNy44Njc5IDI3LjQzOTQgMTcuODAzMiAyNy4zODA5IDE3Ljc0OTVMMjYuMzIyMyAxNi43Nzc4QzI2LjI5MjUgMTYuNzg4NSAyNi4yNjQ4IDE2LjgwNTMgMjYuMjQzMiAxNi44Mjg2QzI2LjAyMTcgMTcuMDc4OCAyNS43NTI5IDE3LjI4MjcgMjUuNDUyMSAxNy40MjgyQzI1LjE1IDE3LjU3NDMgMjQuODIxNCAxNy42NTg1IDI0LjQ4NjMgMTcuNjc2M0MyNC4xNTExIDE3LjY5NCAyMy44MTUgMTcuNjQ1MiAyMy40OTkgMTcuNTMxN0MyMy4xODMyIDE3LjQxODMgMjIuODkyOCAxNy4yNDI5IDIyLjY0NTUgMTcuMDE2MUMyMi4zOTgyIDE2Ljc4OTMgMjIuMTk4OCAxNi41MTUzIDIyLjA1ODYgMTYuMjEwNEMyMS45MTgzIDE1LjkwNTUgMjEuODQwNCAxNS41NzUyIDIxLjgyOTEgMTUuMjM5N0MyMS44MTc4IDE0LjkwNDMgMjEuODczNyAxNC41NyAyMS45OTMyIDE0LjI1NjNDMjIuMTEyMSAxMy45NDQyIDIyLjI5MTUgMTMuNjU4NyAyMi41MjE1IDEzLjQxNjVMMjIuNTU0NyAxMy4zNjU3QzIyLjU1OTQgMTMuMzU1MiAyMi41NjA3IDEzLjM0MzcgMjIuNTYzNSAxMy4zMzI1TDIxLjY5NzMgMTIuNTM4NlYxMi41Mzc2QzIxLjU4MzMgMTIuNDMzMSAyMS40MzI5IDEyLjM3NyAyMS4yNzgzIDEyLjM4MDRaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjAuM1wiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8IS0tIEhlYWRpbmcgLS0+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+UmFpc2UgdGlja2V0cyBmb3IgdGhlIGZvbGxvd2luZzwvc3Bhbj5cblxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPlJhaXNpbmcgYSB0aWNrZXQgZm9yIGZvb3RmYWxsIGNvdW50IGlzc3Vlcy4gTWFrZSBzdXJlIGFsbCByZWNvcmRzIGFyZSBpZGVudGlmaWVkIGZvclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uLjwvc3Bhbj5cblxuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uZHVwbGljYXRlQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uZHVwbGljYXRlQ291bnQgOicwJ319XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIER1cGxpY2F0ZXNcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG15LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQgcC0zIGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBmcy01IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dGVtcFJhaXNlZFBheWxvYWQ/LmVtcGxveWVlQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uZW1wbG95ZWVDb3VudDonMCcgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRW1wbG95ZWVcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG15LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQgcC0zIGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBmcy01IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dGVtcFJhaXNlZFBheWxvYWQ/LmhvdXNlS2VlcGluZ0NvdW50ID8gdGVtcFJhaXNlZFBheWxvYWQ/LmhvdXNlS2VlcGluZ0NvdW50IDonMCd9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBIb3VzZSBLZWVwaW5nXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uanVua0NvdW50ID8gdGVtcFJhaXNlZFBheWxvYWQ/Lmp1bmtDb3VudCA6JzAnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgSnVua1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gTGFiZWwgYW5kIFRleHRhcmVhIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktM1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkRlc2NyaXB0aW9uIChPcHRpb25hbCk8L2xhYmVsPlxuICAgICAgICAgICAgPHRleHRhcmVhIHJvd3M9XCIzXCIgWyhuZ01vZGVsKV09XCJjb21tZW50VGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGRlc2NyaXB0aW9uXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtdC01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy01MCBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbFJhc2llZCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctNTBcIiAoY2xpY2spPVwic3VibWl0UmFpc2VkKClcIj5cbiAgICAgICAgICAgICAgICBSYWlzZSBUaWNrZXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cblxuPG5nLXRlbXBsYXRlICNpbWFnZVBvcHVwIGxldC1tb2RlbD5cbiAgICA8ZGl2IGNsYXNzPVwibXgtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIHAtMiAgbWItMiBtdC01XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTW9kYWxPcGVuXCIgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBib3JkZXItZ3JheSBwLTIgXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cImNhbk5hdmlnYXRlTGVmdFwiIChjbGljayk9XCJuYXZpZ2F0ZUltYWdlKCdsZWZ0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIHN0YXJ0LTAgdG9wLTUwIHotaW5kZXgtMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKXgFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBNYWluIEltYWdlIC0tPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbWcgY2xhc3M9XCIgY3Vyc29yLXBvaW50ZXIgdy0xMDAgaC01MjVweFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArICh0ZW1wTW9kYWxJbWFnZT8uZmlsZVBhdGggfHwgc2VsZWN0SW1hZ2VBcnJheT8uZmlsZVBhdGgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcE1hZ25pZmllciBhbHQ9XCJcIj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCIgY3Vyc29yLXBvaW50ZXIgdy0xMDAgaC01MjVweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlVXJsICsgKHRlbXBNb2RhbEltYWdlPy5maWxlUGF0aCB8fCBzZWxlY3RJbWFnZUFycmF5Py5maWxlUGF0aClcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwiY2FuTmF2aWdhdGVSaWdodFwiIChjbGljayk9XCJuYXZpZ2F0ZUltYWdlKCdyaWdodCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB0b3AtNTAgei1pbmRleC0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pa2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IGFycm93IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3sodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnRlbXBsZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnRlbXBJZH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5zdGF0dXMgPT09J2FwcHJvdmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjEyMjIgMy41NzkxOUw0LjEzODg3IDYuNDU4MzZMMy4zNDcyIDUuNjEyNTNDMy4yMDEzNyA1LjQ3NTAzIDIuOTcyMiA1LjQ2NjY5IDIuODA1NTMgNS41ODMzNkMyLjY0MzAzIDUuNzA0MTkgMi41OTcyIDUuOTE2NjkgMi42OTcyIDYuMDg3NTNMMy42MzQ3IDcuNjEyNTNDMy43MjYzNyA3Ljc1NDE5IDMuODg0NyA3Ljg0MTY5IDQuMDYzODcgNy44NDE2OUM0LjIzNDcgNy44NDE2OSA0LjM5NzIgNy43NTQxOSA0LjQ4ODg3IDcuNjEyNTNDNC42Mzg4NyA3LjQxNjY5IDcuNTAxMzcgNC4wMDQxOSA3LjUwMTM3IDQuMDA0MTlDNy44NzYzNyAzLjYyMDg2IDcuNDIyMiAzLjI4MzM2IDcuMTIyMiAzLjU3NTAzVjMuNTc5MTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxMkI3NkFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIih0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8uc3RhdHVzID09PSdyZWplY3RlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRTRFMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDk5NjEgNUw1LjA5OTYxIDhNNS4wOTk2MSA1TDguMDk5NjEgOE00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNTk5NjA5IDAuNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7eyh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8uZW50cnlUbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5lbnRyeVRpbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOSAxOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjEgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBweS0yIHB4LTBcIj4gLS0+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIHB5LTIgbWItMiBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAoY2xpY2spPVwiY2xvc2VJbWFnZSgpXCI+Q2xvc2U8L2J1dHRvbj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEZvb3RmYWxsIFRyZW5kcyBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjZm9vdGZhbGxUcmVuZHNUZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHctMTAwIG1iLTNcIj5cbiAgICAgICAgPCEtLSBUb3RhbCBGb290ZmFsbCBDYXJkIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbWItMyBtYi1tZC0wXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtdGl0bGVcIj5Ub3RhbCBGb290ZmFsbDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgcGxhY2VtZW50PVwidG9wXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDE4SDkuNVYxOS4yNUM5LjUgMTkuOTc5MyA5LjIxMDI3IDIwLjY3ODggOC42OTQ1NCAyMS4xOTQ1QzguMTc4ODIgMjEuNzEwMyA3LjQ3OTM1IDIyIDYuNzUgMjJDNi4wMjA2NSAyMiA1LjMyMTE4IDIxLjcxMDMgNC44MDU0NiAyMS4xOTQ1QzQuMjg5NzMgMjAuNjc4OCA0IDE5Ljk3OTMgNCAxOS4yNVYxOFpNOCA2LjExOTk5QzEwIDYuMTE5OTkgMTEgOC45OTk5OSAxMSAxMUMxMSAxMiAxMC41IDEzIDEwIDE0LjVMOS41IDE2SDRDNCAxNSAzLjUgMTMuNSAzLjUgMTFDMy41IDguNDk5OTkgNS40OTggNi4xMTk5OSA4IDYuMTE5OTlaTTIwLjA1NCAxNC4wOThMMTkuODM3IDE1LjMyOUMxOS43MDIzIDE2LjAzOTYgMTkuMjkzMSAxNi42Njg2IDE4LjY5OCAxNy4wNzk2QzE4LjEwMjkgMTcuNDkwNyAxNy4zNjk4IDE3LjY1MDggMTYuNjU3NiAxNy41MjUyQzE1Ljk0NTMgMTcuMzk5NiAxNS4zMTExIDE2Ljk5ODQgMTQuODkyNSAxNi40MDg2QzE0LjQ3MzkgMTUuODE4OCAxNC4zMDQ1IDE1LjA4NzggMTQuNDIxIDE0LjM3NEwxNC42MzcgMTMuMTQ0TDIwLjA1NCAxNC4wOThaTTE4LjE3OCAxLjcwNDk5QzIwLjY0MiAyLjEzODk5IDIyLjE5NiA0LjgyOTk5IDIxLjc2MiA3LjI5MTk5QzIxLjMyOCA5Ljc1Mzk5IDIwLjU3NSAxMS4xNDQgMjAuNDAyIDEyLjEyOUwxNC45ODUgMTEuMTc0TDE0Ljc1MyA5LjYwOTk5QzE0LjUyMSA4LjA0NTk5IDE0LjIwMyA2Ljk3Mzk5IDE0LjM3NiA1Ljk4OTk5QzE0LjcyMyA0LjAxOTk5IDE2LjIwOCAxLjM1Nzk5IDE4LjE3OCAxLjcwNDk5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXZhbHVlXCI+e3sgZ2V0Q3VycmVudEZvb3RmYWxsKCkgfHwgMCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtdHJlbmRcIiBbbmdDbGFzc109XCJnZXRGb290ZmFsbFBlcmNlbnRhZ2VDaGFuZ2UoKSA+PSAwID8gJ3VwJyA6ICdkb3duJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZ2V0Rm9vdGZhbGxQZXJjZW50YWdlQ2hhbmdlKCkgPj0gMFwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYgMkwxMCA2SDdWMTBINVY2SDJMNiAyWlwiIGZpbGw9XCIjMTBCOTgxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJnZXRGb290ZmFsbFBlcmNlbnRhZ2VDaGFuZ2UoKSA8IDBcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDEwTDIgNkg1VjJIN1Y2SDEwTDYgMTBaXCIgZmlsbD1cIiNGMDQ0MzhcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0Rm9vdGZhbGxQZXJjZW50YWdlQ2hhbmdlKCkgPj0gMCA/ICcrJyA6ICcnIH19e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEZvb3RmYWxsUGVyY2VudGFnZUNoYW5nZSgpIH19JSB2cyBZZXN0ZXJkYXk8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gVG90YWwgRG93bnRpbWUgQ2FyZCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG1iLTMgbWItbWQtMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLXRpdGxlXCI+VG90YWwgRG93bnRpbWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG93bnRpbWUtaWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MVwiIHZpZXdCb3g9XCIwIDAgNDAgNDFcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIxLjkwMDQgMTIuMTY3NUMyMi45OTU4IDEyLjE2NzUgMjQuMDQyMyAxMi4zOTE4IDI0Ljk5NzcgMTIuNzk4N0MyNS45ODg5IDEzLjIyMDcgMjYuODgwOSAxMy44NDAyIDI3LjYyNzkgMTQuNjA4N0MyOC4zNzM0IDE1LjM3NTYgMjguOTc1NiAxNi4yOTMxIDI5LjM4NTcgMTcuMzE2MkMyOS43ODEzIDE4LjI5OSAyOS45OTkzIDE5LjM3NTYgMjkuOTk5MyAyMC41MDA4QzI5Ljk5OTMgMjEuNjI3NyAyOS43ODEzIDIyLjcwNDMgMjkuMzg1NyAyMy42ODcxQzI4Ljk3NTYgMjQuNzA2OCAyOC4zNzM0IDI1LjYyNDQgMjcuNjI2MyAyNi4zOTI5QzI2Ljg4MDkgMjcuMTU5OCAyNS45ODg5IDI3Ljc3OTMgMjQuOTk0NSAyOC4yMDEyQzI0LjAzOTEgMjguNjA4MSAyMi45OTI1IDI4LjgzMjUgMjEuODk4OCAyOC44MzI1QzIwLjgwMzQgMjguODMyNSAxOS43NTY4IDI4LjYwODEgMTguODAxNCAyOC4yMDEyQzE3LjgxMDIgMjcuNzc5MyAxNi45MTgzIDI3LjE1OTggMTYuMTcyOSAyNi4zOTI5TDE2LjE3MTIgMjYuMzkxMkMxNS40MjQyIDI1LjYyMjcgMTQuODIzNiAyNC43MDUyIDE0LjQxMzQgMjMuNjg3MUMxNC4yODY1IDIzLjM3MDcgMTQuMTc3NCAyMy4wNDU5IDE0LjA4NzkgMjIuNzEyN0MxNC4yNTcyIDIyLjcyOTQgMTQuNDI5NyAyMi43Mzc4IDE0LjYwMzggMjIuNzM3OEMxNC45MzQyIDIyLjczNzggMTUuMjU2NSAyMi43MDc2IDE1LjU3MDYgMjIuNjQ5QzE1LjYyMjcgMjIuODA5OCAxNS42Nzk3IDIyLjk2ODggMTUuNzQxNSAyMy4xMjQ2QzE2LjA3ODUgMjMuOTYxNyAxNi41NzMyIDI0LjcxNTIgMTcuMTg4NSAyNS4zNDgxQzE3LjgwMzcgMjUuOTgxIDE4LjUzNzggMjYuNDkgMTkuMzQ5OSAyNi44MzY2QzIwLjEzMjggMjcuMTY5OCAyMC45OTM4IDI3LjM1NTcgMjEuODk4OCAyNy4zNTU3QzIyLjgwMzcgMjcuMzU1NyAyMy42NjMxIDI3LjE3MTUgMjQuNDQ3NiAyNi44MzY2QzI1LjI2MTQgMjYuNDkgMjUuOTkzOCAyNS45ODEgMjYuNjA5MSAyNS4zNDgxQzI3LjIyNDMgMjQuNzE1MiAyNy43MTkxIDIzLjk2MDEgMjguMDU2IDIzLjEyNDZDMjguMzc5OSAyMi4zMTkyIDI4LjU2MDUgMjEuNDMzNCAyOC41NjA1IDIwLjUwMjVDMjguNTYwNSAxOS41NzE1IDI4LjM4MTUgMTguNjg3NSAyOC4wNTYgMTcuODgwNEMyNy43MTkxIDE3LjA0MzIgMjcuMjI0MyAxNi4yODk4IDI2LjYwOTEgMTUuNjU2OUMyNS45OTM4IDE1LjAyNCAyNS4yNTk4IDE0LjUxNDkgMjQuNDQ3NiAxNC4xNjg0QzIzLjY2NDcgMTMuODM1MiAyMi44MDM3IDEzLjY0OTMgMjEuODk4OCAxMy42NDkzQzIwLjk5MzggMTMuNjQ5MyAyMC4xMzQ0IDEzLjgzMzUgMTkuMzQ5OSAxNC4xNjg0QzE5LjI3OTkgMTQuMTk4NSAxOS4yMSAxNC4yMzAzIDE5LjE0MTYgMTQuMjYyMUMxOC44NzQ3IDEzLjgzMDEgMTguNTUyNCAxMy40MzgzIDE4LjE4MjkgMTMuMDk4NEMxOC4zODQ4IDEyLjk5MTMgMTguNTkxNSAxMi44OTI1IDE4LjgwMTQgMTIuODAyMUMxOS43NjAxIDEyLjM5MTggMjAuODA1IDEyLjE2NzUgMjEuOTAwNCAxMi4xNjc1Wk0yMC45NzEgMTYuNTM5M0MyMC45NzEgMTYuMzM1IDIxLjA1MjQgMTYuMTUwOCAyMS4xODEgMTYuMDE2OUMyMS4zMTEyIDE1Ljg4MjkgMjEuNDkwMiAxNS44MDA5IDIxLjY4ODggMTUuODAwOUMyMS44ODc0IDE1LjgwMDkgMjIuMDY2NCAxNS44ODI5IDIyLjE5NjYgMTYuMDE2OUMyMi4zMjY4IDE2LjE1MDggMjIuNDA2NiAxNi4zMzUgMjIuNDA2NiAxNi41MzkzVjIwLjQyNzFMMjUuMjMwNSAyMi4xNTAxQzI1LjM5OTcgMjIuMjUzOSAyNS41MTM3IDIyLjQxOTYgMjUuNTU5MiAyMi42MDIxQzI1LjYwNDggMjIuNzg0NyAyNS41ODM3IDIyLjk4NTYgMjUuNDgyNyAyMy4xNTk3VjIzLjE2MTRDMjUuMzgxOCAyMy4zMzU1IDI1LjIyMDcgMjMuNDUyNyAyNS4wNDMzIDIzLjQ5OTZDMjQuODY1OSAyMy41NDY1IDI0LjY3MDYgMjMuNTI0NyAyNC41MDEzIDIzLjQyMDlIMjQuNDk5N0wyMS4zNDA1IDIxLjQ5MzdDMjEuMjMxNCAyMS40MzE4IDIxLjE0MTkgMjEuMzQxMyAyMS4wNzY4IDIxLjIzNDJDMjEuMDEwMSAyMS4xMjIgMjAuOTcxIDIwLjk4OTcgMjAuOTcxIDIwLjg0OTFWMTYuNTM5M1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjM5MTMgMTIuNjA5NUMxNi44MTY0IDEyLjYwOTUgMTguNzgyNiAxNC42MzIxIDE4Ljc4MjYgMTcuMTI2OUMxOC43ODI2IDE5LjYyMTggMTYuODE2NCAyMS42NDQ0IDE0LjM5MTMgMjEuNjQ0NEMxMS45NjYxIDIxLjY0NDQgMTAgMTkuNjIxOCAxMCAxNy4xMjY5QzEwIDE0LjYzMjEgMTEuOTY2MSAxMi42MDk1IDE0LjM5MTMgMTIuNjA5NVpNMTQuMzkxMyAxOS43MTcyTDE2Ljc0OCAxNi43MjAxSDE1LjI4NDhWMTUuMTI2MUgxMy40OTc3VjE2LjcyMDFIMTIuMDM0NUwxNC4zOTEzIDE5LjcxNzJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjA0NDM4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXZhbHVlXCI+e3sgZ2V0Rm9ybWF0dGVkRG93bnRpbWUoKSB8fCAnLScgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtZXRyaWMtdGFnIHN1Y2Nlc3NcIiAqbmdJZj1cImhhc0Rvd250aW1lKClcIj4gLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNjY2NyAzLjVMNS4yNSA5LjkxNjY3TDIuMzMzMzQgN1wiIHN0cm9rZT1cIiMxMEI5ODFcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8c3Bhbj5Jc3N1ZSBzdWJtaXR0ZWQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk00LjUgMi41TDcuNSA1LjVMMTAuNSAyLjVcIiBzdHJva2U9XCIjMTBCOTgxXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBUaWNrZXQgU3RhdHVzIENhcmQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtdGl0bGVcIj5UaWNrZXQgc3RhdHVzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtdmFsdWVcIj57eyBnZXRUaWNrZXRTdGF0dXMoKSA9PT0gJy0nID8gJy0nIDogKGdldFRpY2tldFN0YXR1cygpIHxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGVjYXNlKSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyZXNldFJlcXVlc3RQb3B1cCBsZXQtbW9kZWw+XG4gICAgPGRpdiBjbGFzcz1cInAtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIGJvcmRlci0wIHAtMCB3LTEwMFwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgbWItMyBmdy1ib2xkXCI+XG4gICAgICAgICAgICAgICAgUmVzZXQgcmVxdWVzdC5cbiAgICAgICAgICAgIDwvaDU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBwLTBcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1tdXRlZCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgWW91J3JlIHJlcXVlc3RpbmcgdG8gcmUtZW5hYmxlIGZvb3RmYWxsIHRpY2tldHMsIGRpc2FibGVkIGFmdGVyIHRocmVlIGluc3RhbmNlcyBvZiBleGNlZWRpbmcgOTUlXG4gICAgICAgICAgICAgICAgYWNjdXJhY3kuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbXV0ZWQgbWItMFwiPlxuICAgICAgICAgICAgICAgIFBsZWFzZSBlbnN1cmUgZnV0dXJlIGFjY3VyYWN5IHN0YXlzIG9uIG9yIHdpdGhpbiA5NSUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyIGJvcmRlci0wIHAtMCBtdC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGdhcC0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIChjbGljayk9XCJjYW5jZWxSZXNldFJlcXVlc3QoKVwiPlxuICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXRSZXNldFJlcXVlc3QoKVwiPlxuICAgICAgICAgICAgICAgIFNlbmQgUmVxdWVzdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0aWNrZXRTdGF0dXNUZW1wbGF0ZSBsZXQtbW9kZWw+XG4gICAgPCEtLSBUaWNrZXQgUmV2aWV3IENhcmQgKHNob3duIHdoZW4gdGlja2V0IHN0YXR1cyBpcyByYWlzZWQpIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItM1wiICpuZ0lmPVwiKGlzVGlja2V0UmFpc2VkKCkgfHwgaXNUaWNrZXRDbG9zZWQoKSkgJiYgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJldmlldy1jYXJkXCI+XG4gICAgICAgICAgICA8IS0tIEFjdHVhbCBGb290ZmFsbCBIZWFkZXIgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0dWFsLWZvb3RmYWxsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0dWFsLWZvb3RmYWxsLW51bWJlclwiPnt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmZvb3RmYWxsIHx8IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3R1YWwtZm9vdGZhbGwtbGFiZWxcIj5BY3R1YWwgRm9vdGZhbGw8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gVGlja2V0IENyZWF0ZWQgQnkgU2VjdGlvbiAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY3JlYXRvci1zZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsIHx8IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNyZWF0b3ItYXZhdGFyXCIgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgpPy5jcmVhdGVkQnlFbWFpbD8ucHJvZmlsZVBpY3R1cmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRUYWdnaW5nRGF0YSgpPy5jcmVhdGVkQnlFbWFpbD8ucHJvZmlsZVBpY3R1cmVcIiBhbHQ9XCJQcm9maWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1hdmF0YXItcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWw/LnByb2ZpbGVQaWN0dXJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYgMTBDMTcuNjU2OSAxMCAxOSAxMS4zNDMxIDE5IDEzQzE5IDE0LjY1NjkgMTcuNjU2OSAxNiAxNiAxNkMxNC4zNDMxIDE2IDEzIDE0LjY1NjkgMTMgMTNDMTMgMTEuMzQzMSAxNC4zNDMxIDEwIDE2IDEwWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDIyQzExIDE5LjIzODYgMTMuMjM4NiAxNyAxNiAxN0MxOC43NjE0IDE3IDIxIDE5LjIzODYgMjEgMjJWMjNIMTFWMjJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1sYWJlbFwiPlRpY2tldCBjcmVhdGVkIGJ5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdG9yLWVtYWlsXCI+e3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWwgfHwgJ04vQScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdG9yLXNlcGFyYXRvclwiICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0XCI+4oCiPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3JlYXRvci10aW1lXCIgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXRcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXQgfCBkYXRlOidoOm1tOnNzIGEgLSBkIE1NTSB5eXl5JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFRpY2tldCBSZXZpc2VkIEZvb3RmYWxsIGFuZCBNZXRyaWNzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzZWQtZm9vdGZhbGwtc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWNzLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyIGJsdWUtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LnJldmljZWRGb290ZmFsbCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtcGVyY2VudGFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8ucmV2aWNlZFBlcmMgfHwgMCB9fSUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLWFycm93XCI+4oaTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+UmV2aXNlZCBmb290ZmFsbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPih7eyBnZXRSZXZpc2lvbkNhbGN1bGF0aW9uKCd0YWdnaW5nJyl9fSUpPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+VGlja2V0JTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdkdXBsaWNhdGUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkR1cGxpY2F0ZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnZW1wbG95ZWUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkVtcGxveWVlL1N0YWZmPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2p1bmsnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkp1bms8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnaG91c2VLZWVwaW5nJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5Ib3VzZSBLZWVwaW5nPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUaWNrZXQgRmluYWwgcmV2aXNpb24gQ2FyZCAoc2hvd24gd2hlbiB0aWNrZXQgc3RhdHVzIGlzIGNsb3NlZCkgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi0zXCIgKm5nSWY9XCJpc1RpY2tldENsb3NlZCgpICYmIGdldFRhZ2dpbmdEYXRhKCdmaW5hbHJldmlldycpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmV2aWV3LWNhcmRcIj5cbiAgICAgICAgICAgIDwhLS0gVGlja2V0IGNhcmQgc2VjdGlvbiBpbiByZXZpc2lvbiBzdGFydCAtLT5cblxuICAgICAgICAgICAgPCEtLSBBY3R1YWwgRm9vdGZhbGwgSGVhZGVyIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdHVhbC1mb290ZmFsbC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdHVhbC1mb290ZmFsbC1udW1iZXJcIj57eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5mb290ZmFsbCB8fCAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0dWFsLWZvb3RmYWxsLWxhYmVsXCI+QWN0dWFsIEZvb3RmYWxsPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFRpY2tldCBDcmVhdGVkIEJ5IFNlY3Rpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWNyZWF0b3Itc2VjdGlvblwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbCB8fCBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWF2YXRhclwiICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoKT8uY3JlYXRlZEJ5RW1haWw/LnByb2ZpbGVQaWN0dXJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0VGFnZ2luZ0RhdGEoKT8uY3JlYXRlZEJ5RW1haWw/LnByb2ZpbGVQaWN0dXJlXCIgYWx0PVwiUHJvZmlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItYXZhdGFyLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsPy5wcm9maWxlUGljdHVyZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjRUFGOEZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2IDEwQzE3LjY1NjkgMTAgMTkgMTEuMzQzMSAxOSAxM0MxOSAxNC42NTY5IDE3LjY1NjkgMTYgMTYgMTZDMTQuMzQzMSAxNiAxMyAxNC42NTY5IDEzIDEzQzEzIDExLjM0MzEgMTQuMzQzMSAxMCAxNiAxMFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAyMkMxMSAxOS4yMzg2IDEzLjIzODYgMTcgMTYgMTdDMTguNzYxNCAxNyAyMSAxOS4yMzg2IDIxIDIyVjIzSDExVjIyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItbGFiZWxcIj5UaWNrZXQgY3JlYXRlZCBieTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3JlYXRvci1lbWFpbFwiPnt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsIHx8ICdOL0EnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3JlYXRvci1zZXBhcmF0b3JcIiAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdFwiPuKAojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0b3ItdGltZVwiICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0IHwgZGF0ZTonaDptbTpzcyBhIC0gZCBNTU0geXl5eScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBUaWNrZXQgUmV2aXNlZCBGb290ZmFsbCBhbmQgTWV0cmljcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLWZvb3RmYWxsLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljcy1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlciBibHVlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5yZXZpY2VkRm9vdGZhbGwgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLXBlcmNlbnRhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LnJldmljZWRQZXJjIHx8IDAgfX0lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy1hcnJvd1wiPuKGkzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPlJldmlzZWQgZm9vdGZhbGw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj4oe3sgZ2V0UmV2aXNpb25DYWxjdWxhdGlvbigndGFnZ2luZycpfX0lKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPlRpY2tldCU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnZHVwbGljYXRlJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5EdXBsaWNhdGVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2VtcGxveWVlJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5FbXBsb3llZS9TdGFmZjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdqdW5rJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5KdW5rPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2hvdXNlS2VlcGluZycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SG91c2UgS2VlcGluZzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBUaWNrZXQgY2FyZCBzZWN0aW9uIGluIHJldmlzaW9uIGVuZCAtLT5cblxuICAgICAgICAgICAgPCEtLSBGaW5hbCBSZXZpc2lvbiBTZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzaW9uLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNpb24tdGl0bGVcIj5GaW5hbCByZXZpc2lvbjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaW5hbC1yZXZpc2lvbi1ub3RlXCI+XG4gICAgICAgICAgICAgICAgICAgIFBsZWFzZSByZWFjaCBjZW50cmFsb3BlcmF0aW9ucyYjNjQ7bGVuc2thcnQuaW4gZm9yIGFueSBmdXJ0aGVyIGRpc2NyZXBhbmNpZXNcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1mb290ZmFsbC1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWNzLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXIgYmx1ZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFRhZ2dpbmdEYXRhKCdmaW5hbHJldmlldycpPy5yZXZpY2VkRm9vdGZhbGwgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy1wZXJjZW50YWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3sgZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFscmV2aWV3Jyk/LnJldmljZWRQZXJjIHx8IDB9fSUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtYXJyb3dcIj7ihpE8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPlJldmlzZWQgZm9vdGZhbGw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj4oe3sgZ2V0UmV2aXNpb25DYWxjdWxhdGlvbignZmluYWxyZXZpZXcnKX19JSk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+VGlja2V0JTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCdmaW5hbHJldmlldycpLCAnZHVwbGljYXRlJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+RHVwbGljYXRlczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCdmaW5hbHJldmlldycpLCAnZW1wbG95ZWUnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5FbXBsb3llZS9TdGFmZjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCdmaW5hbHJldmlldycpLCAnanVuaycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkp1bms8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgnZmluYWxyZXZpZXcnKSwgJ2hvdXNlS2VlcGluZycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkhvdXNlIEtlZXBpbmc8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
1331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXJ2cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmFmZmljL3NyYy9saWIvY29tcG9uZW50cy9pbWctcnZwcy9pbWctcnZwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1ydnBzL2ltZy1ydnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1MsU0FBUyxFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQU85QyxNQUFNLE9BQU8sZ0JBQWdCO0lBV2pCO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQWZWLFVBQVUsQ0FBTTtJQUNoQixZQUFZLENBQU07SUFDbEIsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsU0FBUyxDQUFNO0lBQ2YsZUFBZSxHQUFRLEVBQUUsQ0FBQztJQUMxQixXQUFXLEdBQTRCLEVBQUUsQ0FBQztJQUMxQyxrQkFBa0IsR0FBUSxFQUFFLENBQUM7SUFDN0IsV0FBVyxDQUFNO0lBQ2pCLFlBQ1UsT0FBdUIsRUFDeEIsRUFBc0IsRUFDckIsRUFBcUIsRUFDckIsWUFBc0IsRUFDdEIsS0FBbUIsRUFDbkIsV0FBK0I7UUFML0IsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsVUFBSyxHQUFM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QUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGdDQUFnQztJQUNoQyx1QkFBdUI7UUFDckIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRSxDQUFDO3dHQWovQ1UsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsNmJDcEI3Qix3aTBNQTBzRWM7OzRGRHRyRUQsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7dU9BNDVCQSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBNkZJLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDUSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQW9PTCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsRWxlbWVudFJlZixWaWV3Q2hpbGRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRyYWZmaWNSdnBzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90cmFmZmljLXJ2cHMuc2VydmljZVwiO1xuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcbmltcG9ydCB7IFRyYWZmaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYWZmaWMuc2VydmljZVwiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1zaGFyZWRcIjtcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJsaWItaW1nLXJ2cHNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbWctcnZwcy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybDogXCIuL2ltZy1ydnBzLmNvbXBvbmVudC5zY3NzXCIsXG59KVxuZXhwb3J0IGNsYXNzIEltZ1J2cHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGhlYWRlckRhdGE6IGFueTtcbiAgc3RvcmVJZGFycmF5OiBhbnk7XG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBub0RhdGEgPSBmYWxzZTtcbiAgbm9ybWFsaXplOiBhbnk7XG4gIG92ZXJhbGxDYXJkRGF0YTogYW55ID0gW107XG4gIGNhcmREYXRhTWFwOiB7IFtkYXRlOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICB0aWNrZXRSZXZpZXdTdGF0dXM6IGFueSA9IFtdO1xuICB1c2VyQ29tbWVudDogYW55O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlcnZpY2U6IFRyYWZmaWNTZXJ2aWNlLFxuICAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBydnBzU2VydmljZTogVHJhZmZpY1J2cHNTZXJ2aWNlXG4gICkge31cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbiAgaXNBY2NvcmRpb25FeHBhbmRlZCA9IHRydWU7XG4gIHRvZ2dsZUFjY29yZGlvbigpIHtcbiAgICB0aGlzLmlzQWNjb3JkaW9uRXhwYW5kZWQgPSAhdGhpcy5pc0FjY29yZGlvbkV4cGFuZGVkO1xuICB9XG4gIHVzZXJzOmFueTtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRJbml0YWwoKTtcbiAgICBjb25zdCB1c2VyRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcInt9XCIpO1xuICAgIHRoaXMudXNlcnMgPSB1c2VyRGF0YTtcbiAgfVxuICBnZXRJbml0YWwoKSB7XG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnZGF0YSA6JywgZGF0YSk7XG4gICAgICAgIGlmIChkYXRhICE9PSBudWxsIHx8IGRhdGE/LmNsaWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XG4gICAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlc1xuICAgICAgICAgICAgLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZClcbiAgICAgICAgICAgIC5tYXAoKHN0b3JlOiBhbnkpID0+IHN0b3JlLnN0b3JlSWQpO1xuICAgICAgICAgIHRoaXMuYmFja1RvRm9vdGZhbGwoKTtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlEYXRlUmFuZ2UoKTtcbiAgICAgICAgICB0aGlzLmxvYWRDYXJkRGF0YSgpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlID09PSB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYmFja25hdiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5RGF0ZVJhbmdlKCk7XG4gICAgICAgICAgICB0aGlzLmdldGltYWdlcygwLCB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2xkZXJWaWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYmFja25hdiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGJhY2tUb0Zvb3RmYWxsKCkge1xuICAgIHRoaXMuZm9sZGVyVmlldyA9IHRydWU7XG4gICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xuICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xuICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcbiAgICB0aGlzLnR5cGUgPSBcImZvb3RmYWxsXCI7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPSBcIlwiO1xuICAgIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbXTtcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlc0dyb3VwcyA9IFtdO1xuICB9XG4gIGZvbGRlclZpZXc6IGJvb2xlYW47XG4gIGJhY2tuYXY6IGJvb2xlYW47XG4gIGRhdGVBcnJheTogYW55O1xuICBkaXNwbGF5RGF0ZVJhbmdlKCkge1xuICAgIGNvbnN0IGRhdGVzID0gdGhpcy5nZXREYXRlUmFuZ2VBcnJheShcbiAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcbiAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGVcbiAgICApO1xuICAgIHRoaXMuZGF0ZUFycmF5ID0gZGF0ZXM7XG4gIH1cblxuICBnZXREYXRlUmFuZ2VBcnJheShmcm9tRGF0ZTogc3RyaW5nLCB0b0RhdGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGZyb21EYXRlKTsgLy8gQ29udmVydCBzdHJpbmcgdG8gRGF0ZSBvYmplY3RcbiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSh0b0RhdGUpOyAvLyBDb252ZXJ0IHN0cmluZyB0byBEYXRlIG9iamVjdFxuICAgIGNvbnN0IGRhdGVBcnJheTogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBkYXRlcyBhcmUgdmFsaWRcbiAgICBpZiAoaXNOYU4oc3RhcnQuZ2V0VGltZSgpKSB8fCBpc05hTihlbmQuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIGRhdGVBcnJheTtcbiAgICB9XG5cbiAgICAvLyBMb29wIGZyb20gc3RhcnQgZGF0ZSB0byBlbmQgZGF0ZVxuICAgIGxldCBjdXJyZW50RGF0ZSA9IHN0YXJ0O1xuICAgIHdoaWxlIChjdXJyZW50RGF0ZSA8PSBlbmQpIHtcbiAgICAgIGRhdGVBcnJheS5wdXNoKGN1cnJlbnREYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdKTsgLy8gRm9ybWF0IFlZWVktTU0tRERcbiAgICAgIGN1cnJlbnREYXRlLnNldERhdGUoY3VycmVudERhdGUuZ2V0RGF0ZSgpICsgMSk7IC8vIEluY3JlbWVudCB0aGUgZGF0ZSBieSAxIGRheVxuICAgIH1cblxuICAgIHJldHVybiBkYXRlQXJyYXk7XG4gIH1cblxuICAvLyBMb2FkIGNhcmQgZGF0YVxuICBsb2FkQ2FyZERhdGEoKSB7XG4gICAgY29uc3Qgc3RvcmVJZCA9XG4gICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMCA/IHRoaXMuc3RvcmVJZGFycmF5WzBdIDogbnVsbDtcbiAgICBpZiAoIXN0b3JlSWQgfHwgIXRoaXMuaGVhZGVyRGF0YT8uZGF0ZSkge1xuICAgICAgdGhpcy5vdmVyYWxsQ2FyZERhdGEgPSBbXTtcbiAgICAgIHRoaXMuY2FyZERhdGFNYXAgPSB7fTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXG4gICAgICAuZ2V0SW1hZ2VEaXJlY3RvcnlDYXJkRGF0YShcbiAgICAgICAgc3RvcmVJZCxcbiAgICAgICAgdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxuICAgICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlXG4gICAgICApXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICA/LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy5vdmVyYWxsQ2FyZERhdGEgPSByZXM/LmRhdGEgfHwgW107XG4gICAgICAgICAgICB0aGlzLmNhcmREYXRhTWFwID0gKHRoaXMub3ZlcmFsbENhcmREYXRhIHx8IFtdKS5yZWR1Y2UoXG4gICAgICAgICAgICAgIChhY2M6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gaXRlbT8uZGF0ZVxuICAgICAgICAgICAgICAgICAgPyBuZXcgRGF0ZShpdGVtLmRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICBhY2Nbbm9ybWFsaXplZERhdGVdID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICB0aWNrZXRTdGF0dXNMb3dlcjogaXRlbT8udGlja2V0U3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcoaXRlbS50aWNrZXRTdGF0dXMpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vdmVyYWxsQ2FyZERhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY2FyZERhdGFNYXAgPSB7fTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIGxvYWRDYXJkRGF0YTpcIiwgZXJyKTtcbiAgICAgICAgICB0aGlzLm92ZXJhbGxDYXJkRGF0YSA9IFtdO1xuICAgICAgICAgIHRoaXMuY2FyZERhdGFNYXAgPSB7fTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cblxuICBzZWxlY3RlZFRpbWU6IGFueTtcbiAgZm9sZGVyTmFtZTogYW55O1xuICBzZWxlY3RlZFRpbWVzKHZhbDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPSB2YWw7XG4gICAgdGhpcy5mb2xkZXJOYW1lID0gdmFsO1xuICAgIHRoaXMuZm9sZGVyVmlldyA9IGZhbHNlO1xuICAgIHRoaXMudHlwZSA9IHRoaXMudHlwZTtcbiAgICB0aGlzLmdldFJldm9wcygpO1xuICB9XG4gIGZvbGRlckRhdGU6IGFueTtcbiAgaW1hZ2VGbG93ID0gZmFsc2U7XG4gIHNwbGl0U2NyZWVuRW5hYmxlZCA9IGZhbHNlOyAvLyBGbGFnIHRvIGVuYWJsZSBzcGxpdC1zY3JlZW4gdmlld1xuICAvLyBnZXQgUmV2b3BzIEFwaVxuICBnZXRSdnBzTGlzdDogYW55O1xuICBnZXRSdnBzSW1hZ2VMaXN0OiBhbnk7XG4gIG9iamVjdHNBcnJheTogYW55O1xuICBpbWFnZXNBcnJheURhdGE6IGFueTtcbiAgbGlzdFZpZXdHcm91cHM6IEFycmF5PHsgdGltZVJhbmdlOiBzdHJpbmc7IGRhdGE6IGFueVtdIH0+ID0gW107XG4gIHNlbGVjdEluZGV4OiBhbnkgPSAwO1xuICBmb290ZmFsbERhdGU6IGFueTtcbiAgbGVuZ3RoVmFsdWU6IGJvb2xlYW47XG4gIHZpZXdNb2RlOiBcImdyaWRcIiB8IFwibGlzdFwiID0gXCJncmlkXCI7XG4gIGdldGltYWdlcyhpbmRleDogYW55LCBvYmo6IGFueSkge1xuICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XG4gICAgdGhpcy5zZWxlY3RJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuZm9sZGVyRGF0ZSA9IG9iajtcbiAgICAodGhpcy5mb290ZmFsbERhdGUgPSBvYmopLCAodGhpcy5mb2xkZXJWaWV3ID0gZmFsc2UpO1xuICAgIHRoaXMuc2VydmljZT8uaXNub3JtYWxpemVTb3VyY2VcbiAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxuICAgICAgPy5zdWJzY3JpYmUoKG5vcm1hbGl6ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubm9ybWFsaXplID0gbm9ybWFsaXplO1xuICAgICAgICBpZiAoIW5vcm1hbGl6ZSkge1xuICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XG4gICAgICAgICAgLy8gdGhpcy5nZXRUb3RhbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubGVuZ3RoVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuICBjb3VudERhdGE6IGFueSA9IFtdO1xuICBnZXRUb3RhbCgpIHtcbiAgICB0aGlzLmNvdW50RGF0YSA9IFtdO1xuICAgIGNvbnN0IHN0b3JlSWQgPVxuICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuc3RvcmVJZGFycmF5WzBdXG4gICAgICAgIDogbnVsbDtcbiAgICBjb25zdCBkYXRlU3RyaW5nID0gdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCI7XG4gICAgdGhpcy5ydnBzU2VydmljZVxuICAgICAgLmdldFRvdGFsVmFsKHN0b3JlSWQsIGRhdGVTdHJpbmcpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICA/LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRSdnBzTGlzdD8ubGVuZ3RoKSB0aGlzLmNvdW50RGF0YSA9IHJlcy5kYXRhO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHt9LFxuICAgICAgfSk7XG4gIH1cbiAgaW1hZ2VVcmw6IGFueTtcbiAgcmV2b3BzVHlwZUNvdW50OiBhbnk7XG4gIGN1cnJlbnRUaW1lUmFuZ2VEYXRhOiBhbnkgPSBbXTtcbiAgb3ZlcmFsbEFycmF5RGF0YTogYW55ID0gW107XG4gIGFsbEZvb3RmYWxsRGF0YTogYW55ID0gW107XG4gIGdldFRpY2tldFN0YXR1c2VzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdGF0dXNMaXN0ID0gdGhpcy5nZXRSdnBzTGlzdD8udGlja2V0U3RhdHVzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHN0YXR1c0xpc3QpKSB7XG4gICAgICByZXR1cm4gc3RhdHVzTGlzdC5tYXAoKHMpID0+IHM/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSkuZmlsdGVyKEJvb2xlYW4pOyAvLyBSZW1vdmVzIG51bGwvdW5kZWZpbmVkXG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuICBnZXRSZXZvcHMoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xuICAgIC8vIHRoaXMub2JqZWN0c0FycmF5ID1bXTtcbiAgICAvLyB0aGlzLm92ZXJhbGxBcnJheURhdGEgPVtdO1xuICAgIC8vIHRoaXMuZ2V0UnZwc0xpc3QgPVtdO1xuICAgIC8vIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdD1bXTtcbiAgICAvLyB0aGlzLmFsbEZvb3RmYWxsRGF0YSA9W11cbiAgICBjb25zdCBzdG9yZUlkID1cbiAgICAgIHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLnN0b3JlSWRhcnJheVswXVxuICAgICAgICA6IG51bGw7XG4gICAgY29uc3QgZGF0ZVN0cmluZyA9IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiO1xuICAgIGNvbnN0IGdyb3VwQnlLZXkgPSBcInRpbWVcIjtcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlID09PSBcImZvb3RmYWxsXCIgPyBcIlwiIDogdGhpcy50eXBlIHx8IFwiXCI7XG4gICAgY29uc3QgcHJvY2Vzc1R5cGUgPSBcImZvb3RmYWxsXCI7XG5cbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXG4gICAgICAuZ2V0UnZwc0xpc3RBcGkoc3RvcmVJZCwgZGF0ZVN0cmluZywgZ3JvdXBCeUtleSwgdHlwZSwgcHJvY2Vzc1R5cGUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gcmVzPy5kYXRhO1xuICAgICAgICAgICAgdGhpcy5pbWFnZVVybCA9IHRoaXMucnZwc1NlcnZpY2U/LmZvb3RmYWxsQ0ROO1xuICAgICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gcmVzPy5kYXRhPy5yZXN1bHQ7XG4gICAgICAgICAgICB0aGlzLnRpY2tldFJldmlld1N0YXR1cyA9IHJlcz8uZGF0YT8udGlja2V0U3RhdHVzO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3Jldm9wcyBnZXRSdnBzTGlzdEFwaSA6JywgcmVzPy5kYXRhKTtcbiAgICAgICAgICAgIC8vIFNhdmUgdGhlIGZ1bGwgZm9vdGZhbGwgZGF0YSAoZ3JvdXBlZCBieSB0aW1lUmFuZ2UpXG4gICAgICAgICAgICB0aGlzLmFsbEZvb3RmYWxsRGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0Py5mb290ZmFsbERhdGEgfHwgW107XG5cbiAgICAgICAgICAgIC8vIENyZWF0ZSB0aW1lUmFuZ2UgKyBjb3VudCBvYmplY3RcbiAgICAgICAgICAgIGNvbnN0IHRpbWVSYW5nZXMgPSB0aGlzLmFsbEZvb3RmYWxsRGF0YS5tYXAoXG4gICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGltZVJhbmdlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSB0aW1lUmFuZ2VzLm1hcCgodGltZVJhbmdlOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgIHRpbWVSYW5nZSxcbiAgICAgICAgICAgICAgY291bnQ6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEuZmluZCgoZDogYW55KSA9PiBkLnRpbWVSYW5nZSA9PT0gdGltZVJhbmdlKVxuICAgICAgICAgICAgICAgICAgPy5kYXRhPy5sZW5ndGggfHwgMCxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIC8vIE9ubHkgcmVzZXQgaWYgcHJldmlvdXMgc2VsZWN0ZWQgdGltZSBpcyBOT1QgaW4gdGhlIG5ldyBsaXN0XG4gICAgICAgICAgICBpZiAoIXRpbWVSYW5nZXMuaW5jbHVkZXModGhpcy5zZWxlY3RlZFRpbWUpKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lcyh0aGlzLm9iamVjdHNBcnJheVswXS50aW1lUmFuZ2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBHZXQgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIHRpbWVSYW5nZVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VGltZVJhbmdlRGF0YSA9XG4gICAgICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhLmZpbmQoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50aW1lUmFuZ2UgPT09IHRoaXMuc2VsZWN0ZWRUaW1lXG4gICAgICAgICAgICAgICk/LmRhdGEgfHwgW107XG5cbiAgICAgICAgICAgIC8vIENvdW50IHJldm9wc1R5cGVzXG4gICAgICAgICAgICBjb25zdCByZXZvcHNUeXBlQ291bnQ6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7XG4gICAgICAgICAgICAgIFwibm9uLXRhZ2dpbmdcIjogMCxcbiAgICAgICAgICAgICAgZHVwbGljYXRlOiAwLFxuICAgICAgICAgICAgICBlbXBsb3llZTogMCxcbiAgICAgICAgICAgICAgXCJob3VzZS1rZWVwaW5nXCI6IDAsXG4gICAgICAgICAgICAgIGp1bms6IDAsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsZXQgdG90YWxDb3VudCA9IDA7XG4gICAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW0uZGF0YT8uZm9yRWFjaCgoaW1hZ2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YS5wdXNoKGltYWdlKTtcbiAgICAgICAgICAgICAgICB0b3RhbENvdW50Kys7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID1cbiAgICAgICAgICAgICAgICAgIGltYWdlLnJldm9wc1R5cGU/LnRyaW0oKS50b0xvd2VyQ2FzZSgpIHx8IFwidW5rbm93blwiO1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwibm9uLXRhZ2dpbmdcIikge1xuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wibm9uLXRhZ2dpbmdcIl0rKztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZW1wbG95ZWVcIikge1xuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wiZW1wbG95ZWVcIl0rKztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiaG91c2Uta2VlcGluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICByZXZvcHNUeXBlQ291bnRbXCJob3VzZS1rZWVwaW5nXCJdKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmKHR5cGUgPT09IFwianVua1wiKSB7XG4gICAgICAgICAgICAgICAgICByZXZvcHNUeXBlQ291bnRbXCJqdW5rXCJdKys7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8g4pyFIENvdW50IGR1cGxpY2F0ZXMgb25seSBmcm9tIGR1cGxpY2F0ZUltYWdlUGF0aFxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcImR1cGxpY2F0ZVwiXSArPVxuICAgICAgICAgICAgICAgICAgICBpbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5jb3VudERhdGEgPSB7XG4gICAgICAgICAgICAgIGZvb3RmYWxsQ291bnQ6IHRvdGFsQ291bnQsXG4gICAgICAgICAgICAgIG5vblRhZ3M6IHJldm9wc1R5cGVDb3VudFtcIm5vbi10YWdnaW5nXCJdLFxuICAgICAgICAgICAgICBkdXBsaWNhdGU6IHJldm9wc1R5cGVDb3VudFtcImR1cGxpY2F0ZVwiXSxcbiAgICAgICAgICAgICAgZW1wbG95ZWU6IHJldm9wc1R5cGVDb3VudFtcImVtcGxveWVlXCJdLFxuICAgICAgICAgICAgICBob3VzZWtlZXBpbmc6IHJldm9wc1R5cGVDb3VudFtcImhvdXNlLWtlZXBpbmdcIl0sXG4gICAgICAgICAgICAgIGp1bms6IHJldm9wc1R5cGVDb3VudFtcImp1bmtcIl1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIEFwcGx5IHR5cGUgZmlsdGVyIGFmdGVyIGxvYWRpbmcgdGltZVJhbmdlIGRhdGFcbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAvLyB0aGlzLm5vRGF0YSA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGZhaWx1cmVcbiAgICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID1cbiAgICAgICAgICAgIGVyci5lcnJvci5lcnJvciB8fFxuICAgICAgICAgICAgZXJyLmVycm9yIHx8XG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8XG4gICAgICAgICAgICBlcnIubWVzc2FnZSB8fFxuICAgICAgICAgICAgXCJVbmtub3duIGVycm9yXCI7XG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgICAgICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gW107XG4gICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID0gW107XG4gICAgICAgICAgdGhpcy5jb3VudERhdGEgPSBbXTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgb3JpZ2luYWxDaGVja2VkRHVwbGljYXRlSWRzOiBhbnk7XG4gIGVkaXRWYWx1ZSgpIHtcbiAgICBjb25zdCB0eXBlID0gKHRoaXMuc2VsZWN0ZWRUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNlbGVjdGVkSW1hZ2UgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk7XG4gICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSBzZWxlY3RlZEltYWdlPy50ZW1wbGQ7XG5cbiAgICBpZiAoXG4gICAgICB0eXBlID09PSBcImR1cGxpY2F0ZVwiICYmXG4gICAgICBBcnJheS5pc0FycmF5KHNlbGVjdGVkSW1hZ2UuZHVwbGljYXRlSW1hZ2VQYXRoKVxuICAgICkge1xuICAgICAgLy8gMS4gQ29udmVydCBkdXBsaWNhdGUgY2hpbGRyZW4gaW50byBjb25zaXN0ZW50IG9iamVjdHMgd2l0aCBwYXJlbnQgcmVmZXJlbmNlXG4gICAgICBjb25zdCBkdXBsaWNhdGVDaGlsZHJlbiA9IHNlbGVjdGVkSW1hZ2UuZHVwbGljYXRlSW1hZ2VQYXRoLm1hcChcbiAgICAgICAgKGNoaWxkOiBhbnkpID0+ICh7XG4gICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgcGFyZW50OiBzZWxlY3RlZFRlbXBsZCxcbiAgICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIC8vIDIuIENvbGxlY3QgdGhlIHRlbXBsZCB2YWx1ZXMgb2YgZHVwbGljYXRlIGNoaWxkcmVuXG4gICAgICBjb25zdCBkdXBsaWNhdGVDaGlsZElkcyA9IGR1cGxpY2F0ZUNoaWxkcmVuLm1hcChcbiAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLnRlbXBJZFxuICAgICAgKTtcblxuICAgICAgLy8gMy4gRmlsdGVyIG91dCBub24tdGFnZ2luZyBpbWFnZXMgZXhjZXB0IHRoZSBzZWxlY3RlZCBwYXJlbnQgJiBpdHMgY2hpbGRyZW5cbiAgICAgIGNvbnN0IG5vblRhZ2dpbmdJbWFnZXMgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpbWc6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpc05vblRhZ2dpbmcgPVxuICAgICAgICAgIChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpID09PSBcIm5vbi10YWdnaW5nXCI7XG4gICAgICAgIGNvbnN0IGlzTm90U2VsZWN0ZWQgPVxuICAgICAgICAgIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkICYmXG4gICAgICAgICAgIWR1cGxpY2F0ZUNoaWxkSWRzLmluY2x1ZGVzKGltZy50ZW1wbGQpO1xuICAgICAgICByZXR1cm4gaXNOb25UYWdnaW5nICYmIGlzTm90U2VsZWN0ZWQ7XG4gICAgICB9KTtcblxuICAgICAgLy8gNC4gTWVyZ2UgZHVwbGljYXRlIGNoaWxkcmVuICsgb3RoZXIgbm9uLXRhZ2dpbmcgaW1hZ2VzXG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbLi4uZHVwbGljYXRlQ2hpbGRyZW4sIC4uLm5vblRhZ2dpbmdJbWFnZXNdO1xuXG4gICAgICAvLyA1LiBNYXJrIHNlbGVjdGVkOiBvbmx5IGR1cGxpY2F0ZSBpbWFnZXMgdGhhdCB3ZXJlIG1hcmtlZCBpc0NoZWNrZWRcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpc0R1cGxpY2F0ZSA9XG4gICAgICAgICAgKGltZy5yZXZvcHNUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCkgPT09IFwiZHVwbGljYXRlXCI7XG4gICAgICAgIGltZy5zZWxlY3RlZCA9IGlzRHVwbGljYXRlICYmIGltZy5pc0NoZWNrZWQgPT09IHRydWU7XG4gICAgICB9KTtcblxuICAgICAgLy8gNi4gU3RvcmUgb3JpZ2luYWwgY2hlY2tlZCBJRHMgdG8gY29tcGFyZSBsYXRlciBkdXJpbmcgc3VibWl0XG4gICAgICB0aGlzLm9yaWdpbmFsQ2hlY2tlZER1cGxpY2F0ZUlkcyA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxuICAgICAgICAuZmlsdGVyKChpbWc6IGFueSkgPT4gaW1nLmlzQ2hlY2tlZCA9PT0gdHJ1ZSlcbiAgICAgICAgLm1hcCgoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQpO1xuXG4gICAgICAvLyDinIUgNy4gRmlsbCBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Qgd2l0aCBwcmUtc2VsZWN0ZWQgZHVwbGljYXRlc1xuICAgICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxuICAgICAgICAgICAgaW1nLmlzQ2hlY2tlZCA9PT0gdHJ1ZVxuICAgICAgICApXG4gICAgICAgIC5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgIC4uLmltZyxcbiAgICAgICAgICBwYXJlbnQ6IGltZy5wYXJlbnQgfHwgc2VsZWN0ZWRUZW1wbGQsXG4gICAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAgICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vdCBkdXBsaWNhdGUgdHlwZSDihpIgc2hvdyBvbmx5IHNlbGVjdGVkIHR5cGUgKGV4Y2x1ZGluZyB0aGUgY3VycmVudCBzZWxlY3RlZCBpbWFnZSlcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGltZ1R5cGUgPT09IHR5cGUgJiYgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBiYWNrVG9Gb290ZmFsbDEoKSB7XG4gICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xuICAgIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkID0gZmFsc2U7IC8vIERpc2FibGUgc3BsaXQtc2NyZWVuIHdoZW4gZ29pbmcgYmFja1xuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG51bGw7XG4gIH1cbiAgc2VsZWN0SW1hZ2VBcnJheTogYW55O1xuICByZW1haW5pbmdJbWFnZUFycmF5OiBhbnk7XG4gIHJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xuXG4gIGVkaXRCdG5TaG93ID0gZmFsc2U7XG4gIC8vIHdoZW4gaW1hZ2Ugc2VsZWN0aW9uIGZyb20gZm9sZGVyIHZpZXdcbiAgc2VsZWN0SW1hZ2VGb3JTcGxpdFZpZXcob2JqOiBhbnkpIHtcbiAgICB0aGlzLnNwbGl0U2NyZWVuRW5hYmxlZCA9IHRydWU7IC8vIEVuYWJsZSBzcGxpdC1zY3JlZW4gd2hlbiBpbWFnZSBpcyBjbGlja2VkXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gb2JqO1xuICAgIFxuICAgIC8vIElmIGR1cGxpY2F0ZSBpcyBhbHJlYWR5IHNlbGVjdGVkLCBwcmVzZXJ2ZSB0aGUgZHVwbGljYXRlIGNvbnRleHRcbiAgICBjb25zdCBpc0R1cGxpY2F0ZU1vZGUgPSB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSBcImR1cGxpY2F0ZVwiO1xuICAgIFxuICAgIGlmICghaXNEdXBsaWNhdGVNb2RlKSB7XG4gICAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IFtdOyAvLyBSZXNldCByZW1haW5pbmcgaW1hZ2VzIGluaXRpYWxseVxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTsgLy8gUmVzZXQgZ3JvdXBzXG4gICAgfVxuICAgIFxuICAgIGxldCBmaWx0ZXJlZEJ5VHlwZTogYW55W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZFR5cGUgPSBvYmoucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIElmIHdlJ3JlIGluIGR1cGxpY2F0ZSBtb2RlIGFuZCBjbGlja2luZyBvbiBhIHJlbWFpbmluZyBpbWFnZSwga2VlcCB0aGUgZHVwbGljYXRlIGNvbnRleHRcbiAgICBpZiAoaXNEdXBsaWNhdGVNb2RlKSB7XG4gICAgICAvLyBLZWVwIHRoZSBleGlzdGluZyByZW1haW5pbmcgaW1hZ2VzIGJ1dCB1cGRhdGUgdGhlIHNlbGVjdGVkIGltYWdlXG4gICAgICAvLyBEb24ndCByZXNldCB0aGUgZHVwbGljYXRlIHNlbGVjdGlvbiBjb250ZXh0XG4gICAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlOyAvLyBBbGxvdyBlZGl0aW5nIHRoaXMgaW1hZ2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gXCJcIjsgLy8gUmVzZXQgdG8gYWxsb3cgbmV3IHNlbGVjdGlvblxuICAgICAgLy8gS2VlcCBzZWxlY3RlZFJhZGlvVHlwZSBhcyAnZHVwbGljYXRlJyB0byBtYWludGFpbiBjb250ZXh0XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZFR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiYgQXJyYXkuaXNBcnJheShvYmouZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBvYmouZHVwbGljYXRlSW1hZ2VQYXRoLm1hcCgoY2hpbGQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGVkID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbmQoXG4gICAgICAgICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkID09PSBjaGlsZC50ZW1wSWRcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAuLi4obWF0Y2hlZCB8fCB7fSksXG4gICAgICAgICAgcGFyZW50OiBvYmoudGVtcGxkLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBmaWx0ZXJlZEJ5VHlwZSA9IFtvYmosIC4uLmNoaWxkcmVuXTtcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSAwO1xuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gY2hpbGRyZW47XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBub24tZHVwbGljYXRlIGltYWdlcywgZG9uJ3QgcG9wdWxhdGUgcmVtYWluaW5nSW1hZ2VBcnJheSBpbml0aWFsbHlcbiAgICAgIC8vIEl0IHdpbGwgYmUgcG9wdWxhdGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcmFkaW8gYnV0dG9uXG4gICAgICBmaWx0ZXJlZEJ5VHlwZSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoXG4gICAgICAgIChpbWc6IGFueSkgPT4gaW1nLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkVHlwZVxuICAgICAgKTtcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSBmaWx0ZXJlZEJ5VHlwZS5maW5kSW5kZXgoXG4gICAgICAgIChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCA9PT0gb2JqLnRlbXBsZFxuICAgICAgKTtcbiAgICAgIC8vIE9ubHkgc2V0IHJlbWFpbmluZ0ltYWdlQXJyYXkgaWYgdGhlcmUgYXJlIG90aGVyIGltYWdlcyBvZiB0aGUgc2FtZSB0eXBlXG4gICAgICAvLyBPdGhlcndpc2UsIGxlYXZlIGl0IGVtcHR5IGZvciByYWRpbyBidXR0b24gc2VsZWN0aW9uIHRvIHBvcHVsYXRlXG4gICAgICBpZiAoZmlsdGVyZWRCeVR5cGUubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBmaWx0ZXJlZEJ5VHlwZS5maWx0ZXIoXG4gICAgICAgICAgKF86IGFueSwgaTogbnVtYmVyKSA9PiBpICE9PSB0aGlzLmN1cnJlbnRJbWFnZUluZGV4XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT25seSBhdXRvLXNldCByZXZvcHNUeXBlVmFsdWUgaWYgbm90IGluIGR1cGxpY2F0ZSBtb2RlXG4gICAgaWYgKCFpc0R1cGxpY2F0ZU1vZGUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImR1cGxpY2F0ZVwiIHx8XG4gICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJlbXBsb3llZVwiIHx8XG4gICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCIgfHwgb2JqPy5yZXZvcHNUeXBlID09PVwianVua1wiXG4gICAgICApIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxuICAgICAgICAgIG9iaj8uZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJlbXBsb3llZVwiIHx8XG4gICAgICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImhvdXNlLWtlZXBpbmdcIiB8fCBvYmo/LnJldm9wc1R5cGUgPT09XCJqdW5rXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBvYmo/LnJldm9wc1R5cGU7XG4gICAgICAgIHRoaXMub25SYWRpb0NoYW5nZShvYmo/LnJldm9wc1R5cGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJbiBkdXBsaWNhdGUgbW9kZSwgYWxsb3cgZWRpdGluZyB0aGUgc2VsZWN0ZWQgaW1hZ2VcbiAgICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLmVkaXRCdG5TaG93ID0gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIC8vIEJ1aWxkIHJlbWFpbmluZyBpbWFnZXMgZ3JvdXBzIGJ5IHRpbWUgcmFuZ2VcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gIH1cblxuICBpbWdGdWxsVmlldyhvYmo6IGFueSkge1xuICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBvYmo7XG4gIHRoaXMuaW1hZ2VGbG93ID0gdHJ1ZTtcbiAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcbiAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICBsZXQgZmlsdGVyZWRCeVR5cGU6IGFueVtdID0gW107XG4gIGNvbnN0IHNlbGVjdGVkVHlwZSA9IG9iai5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChzZWxlY3RlZFR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiYgQXJyYXkuaXNBcnJheShvYmouZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xuICAgIC8vIPCflLkgQ2FzZSAxOiBEdXBsaWNhdGUgcGFyZW50IOKGkiBzaG93IG9ubHkgcGFyZW50ICsgaXRzIGNoaWxkcmVuXG4gICAgY29uc3QgY2hpbGRyZW4gPSBvYmouZHVwbGljYXRlSW1hZ2VQYXRoLm1hcCgoY2hpbGQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hlZCA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maW5kKFxuICAgICAgICAoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IGNoaWxkLnRlbXBJZFxuICAgICAgKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAuLi4obWF0Y2hlZCB8fCB7fSksXG4gICAgICAgIHBhcmVudDogb2JqLnRlbXBsZCxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBmaWx0ZXJlZEJ5VHlwZSA9IFtvYmosIC4uLmNoaWxkcmVuXTtcblxuICAgIC8vIGN1cnJlbnQgaW5kZXggYWx3YXlzIDAgKHBhcmVudCBmaXJzdClcbiAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID0gMDtcblxuICAgIC8vIHJlbWFpbmluZyA9IGNoaWxkcmVuIG9ubHlcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBjaGlsZHJlbjtcbiAgfSBlbHNlIHtcbiAgICAvLyDwn5S5IENhc2UgMjogTm9ybWFsIOKGkiBmaWx0ZXIgYnkgc2FtZSB0eXBlXG4gICAgZmlsdGVyZWRCeVR5cGUgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxuICAgICAgKGltZzogYW55KSA9PiBpbWcucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gc2VsZWN0ZWRUeXBlXG4gICAgKTtcblxuICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSBmaWx0ZXJlZEJ5VHlwZS5maW5kSW5kZXgoXG4gICAgICAoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IG9iai50ZW1wbGRcbiAgICApO1xuXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gZmlsdGVyZWRCeVR5cGUuZmlsdGVyKFxuICAgICAgKF86IGFueSwgaTogbnVtYmVyKSA9PiBpICE9PSB0aGlzLmN1cnJlbnRJbWFnZUluZGV4XG4gICAgKTtcbiAgfVxuXG5cbiAgLy8g4pyFIEhhbmRsZSBlZGl0IGJ1dHRvbiAvIHJhZGlvIGxvZ2ljXG4gIGlmIChcbiAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZHVwbGljYXRlXCIgfHxcbiAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxuICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCIgfHwgb2JqPy5yZXZvcHNUeXBlID09PVwianVua1wiXG4gICkge1xuICAgIGlmIChcbiAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxuICAgICAgb2JqPy5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxuICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImhvdXNlLWtlZXBpbmdcIiB8fCBvYmo/LnJldm9wc1R5cGUgPT09XCJqdW5rXCJcbiAgICApIHtcbiAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVkaXRCdG5TaG93ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gb2JqPy5yZXZvcHNUeXBlO1xuICAgIHRoaXMub25SYWRpb0NoYW5nZShvYmo/LnJldm9wc1R5cGUpO1xuICB9XG59XG5cblxuICBpbWdTd2FwKG9iajogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0SW1hZ2VBcnJheSkge1xuICAgICAgLy8gRmluZCB3aGVyZSB0aGUgbmV3IHNlbGVjdGVkIGltYWdlIGlzIGluIHRoZSBsaXN0XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5maW5kSW5kZXgoXG4gICAgICAgIChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCA9PT0gb2JqLnRlbXBsZFxuICAgICAgKTtcblxuICAgICAgLy8gUmVwbGFjZSBzZWxlY3RlZEltYWdlQXJyYXkgYmFjayBpbnRvIGl0cyBvcmlnaW5hbCBwb3NpdGlvblxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlbaW5kZXhdID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZmFsbGJhY2sgaWYgbm90IGZvdW5kXG4gICAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5wdXNoKHRoaXMuc2VsZWN0SW1hZ2VBcnJheSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNlbGVjdGVkIGltYWdlXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gb2JqO1xuXG4gICAgLy8gUmVtb3ZlIHNlbGVjdGVkIGZyb20gcmVtYWluaW5nIGxpc3RcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZmlsdGVyKFxuICAgICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkICE9PSBvYmoudGVtcGxkXG4gICAgKTtcblxuICAgIC8vIFJlYnVpbGQgcmVtYWluaW5nIGltYWdlcyBncm91cHNcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gICAgXG4gICAgdGhpcy5pbWFnZUZsb3cgPSB0cnVlO1xuICB9XG5cbiAgc2VsZWN0ZWRUeXBlOiBhbnkgPSBcIlwiOyAvLyBkZWZhdWx0IHNlbGVjdGVkXG4gIHNlbGVjdGVkUmFkaW9UeXBlOiBhbnk7XG4gIC8vIC0tIE5vbi1zaG9wcGVycyBzZWxlY3Rpb24gdHlwZSAtLVxuICBvblJhZGlvQ2hhbmdlKHZhbDogYW55KSB7XG4gIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB2YWw7XG4gIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XG5cbiAgY29uc3QgdHlwZSA9ICh2YWwgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcblxuICBpZiAodHlwZSA9PT0gXCJkdXBsaWNhdGVcIikge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxuICAgICAgQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdEltYWdlQXJyYXk/LmR1cGxpY2F0ZUltYWdlUGF0aCkgJiZcbiAgICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheS5kdXBsaWNhdGVJbWFnZVBhdGgubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgLy8g8J+UuSBDYXNlIDE6IEFscmVhZHkgaW4gZHVwbGljYXRlIGZsb3cg4oaSIGtlZXAgY2hpbGRyZW4gc2V0IGJ5IHNlbGVjdEltYWdlRm9yU3BsaXRWaWV3XG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkubWFwKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmNoaWxkLCBzZWxlY3RlZDogZmFsc2UsIGlzQ2hlY2tlZDogZmFsc2UgfTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDwn5S5IENhc2UgMjogUmFkaW8gZHVwbGljYXRlIGZvciBub24tZHVwbGljYXRlIHBhcmVudCDihpIgc2hvdyBub24tdGFnZ2luZyBpbWFnZXNcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5Py50ZW1wbGQ7XG5cbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGltZ1R5cGUgPT09IFwibm9uLXRhZ2dpbmdcIiAmJiBpbWcudGVtcGxkICE9PSBzZWxlY3RlZFRlbXBsZDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZm9yRWFjaCgoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGltZy5pc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBSZWJ1aWxkIHJlbWFpbmluZyBpbWFnZXMgZ3JvdXBzIGFmdGVyIHVwZGF0aW5nXG4gICAgdGhpcy5idWlsZFJlbWFpbmluZ0ltYWdlc0dyb3VwcygpO1xuICAgIGNvbnNvbGUubG9nKCdyZW1haW4gaW1hZ2UgYXJyYXkgOjonLCB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkpXG4gIH0gZWxzZSB7XG4gICAgLy8gRm9yIG5vbi1kdXBsaWNhdGUgdHlwZXMsIGNsZWFyIHJlbWFpbmluZyBpbWFnZXNcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbXTtcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlc0dyb3VwcyA9IFtdO1xuICB9XG59XG5cblxuICB0eXBlOiBhbnkgPSBcImZvb3RmYWxsXCI7XG4gIHNlbGVjdFBsYW5UcmVuZHModHlwZTogYW55KSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gIH1cblxuICBhcHBseUZpbHRlcnMoKSB7XG4gICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcbiAgICB0aGlzLnNwbGl0U2NyZWVuRW5hYmxlZCA9IGZhbHNlOyAvLyBSZXNldCBzcGxpdC1zY3JlZW4gd2hlbiBmaWx0ZXJzIGNoYW5nZVxuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG51bGw7XG5cbiAgICAvLyBDb252ZXJ0IHR5cGUgdG8gbG93ZXJjYXNlIHNhZmVseVxuICAgIGNvbnN0IHNlbGVjdGVkVHlwZSA9IHRoaXMudHlwZT8udG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChzZWxlY3RlZFR5cGUgPT09IFwiZm9vdGZhbGxcIikge1xuICAgICAgLy8gRm9vdGZhbGwgc2hvd3MgYWxsIGN1cnJlbnRUaW1lUmFuZ2VEYXRhICh0aW1lIHJhbmdlIGJhc2VkKVxuICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSBbLi4udGhpcy5jdXJyZW50VGltZVJhbmdlRGF0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciB0YWdnZWQgdHlwZXMgbGlrZSAnZHVwbGljYXRlJywgJ2VtcGxveWVlJywgJ2hvdXNla2VlcGluZydcbiAgICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcihcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFR5cGVcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIGVsc2Uge1xuICAgIC8vICAgLy8gTm9uLXRhZ2dpbmcgbWVhbnMgbm8gcmV2b3BzVHlwZSAtIHNob3cgYWxsIHVubWF0Y2hlZCAobm8gdGFnKVxuICAgIC8vICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSB0aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgIC8vICAgICAhaXRlbS5yZXZvcHNUeXBlXG4gICAgLy8gICApO1xuICAgIC8vIH1cblxuICAgIC8vIFNldCBub0RhdGEgYmFzZWQgb24gcmVzdWx0XG4gICAgdGhpcy5ub0RhdGEgPSAhdGhpcy5pbWFnZXNBcnJheURhdGE/Lmxlbmd0aDtcblxuICAgIHRoaXMuYnVpbGRMaXN0Vmlld0dyb3VwcygpO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIHNldFZpZXdNb2RlKG1vZGU6IFwiZ3JpZFwiIHwgXCJsaXN0XCIpIHtcbiAgICBpZiAodGhpcy52aWV3TW9kZSAhPT0gbW9kZSkge1xuICAgICAgdGhpcy52aWV3TW9kZSA9IG1vZGU7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29udmVydCBtaW51dGVzIOKGkiBociArIG1pbnNcbiAgICBjb252ZXJ0TWludXRlcyh0b3RhbE1pbnV0ZXM6IG51bWJlcikge1xuICAgICAgaWYgKCF0b3RhbE1pbnV0ZXMgJiYgdG90YWxNaW51dGVzICE9PSAwKSByZXR1cm4geyBob3VyczogMCwgbWluczogMCB9O1xuICAgICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHRvdGFsTWludXRlcyAvIDYwKTtcbiAgICAgIGNvbnN0IG1pbnMgPSB0b3RhbE1pbnV0ZXMgJSA2MDtcbiAgICAgIHJldHVybiB7IGhvdXJzLCBtaW5zIH07XG4gICAgfVxuXG4gIHJlbWFpbmluZ0ltYWdlc0dyb3VwczogQXJyYXk8eyB0aW1lUmFuZ2U6IHN0cmluZzsgZGF0YTogYW55W10gfT4gPSBbXTtcblxuICBwcml2YXRlIGJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCkge1xuICAgIGlmICghdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5IHx8IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VzR3JvdXBzID0gW107XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JkZXI6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZvckVhY2goKGltZzogYW55KSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBpbWc/LnRpbWVSYW5nZSB8fCBcIk5BXCI7XG4gICAgICBpZiAoIW1hcC5oYXMoa2V5KSkge1xuICAgICAgICBtYXAuc2V0KGtleSwgW10pO1xuICAgICAgICBvcmRlci5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgICBtYXAuZ2V0KGtleSk/LnB1c2goaW1nKTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VzR3JvdXBzID0gb3JkZXIubWFwKChrZXkpID0+ICh7XG4gICAgICB0aW1lUmFuZ2U6IGtleSxcbiAgICAgIGRhdGE6IG1hcC5nZXQoa2V5KSB8fCBbXSxcbiAgICB9KSk7XG5cbiAgICBjb25zb2xlLmxvZygnbXkgbWV0aGQgPT4nLCB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkpXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGlzdFZpZXdHcm91cHMoKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gXCJmb290ZmFsbFwiKSB7XG4gICAgICB0aGlzLmxpc3RWaWV3R3JvdXBzID0gKHRoaXMuYWxsRm9vdGZhbGxEYXRhIHx8IFtdKVxuICAgICAgICAuZmlsdGVyKChncm91cDogYW55KSA9PiBBcnJheS5pc0FycmF5KGdyb3VwPy5kYXRhKSAmJiBncm91cC5kYXRhLmxlbmd0aClcbiAgICAgICAgLm1hcCgoZ3JvdXA6IGFueSkgPT4gKHtcbiAgICAgICAgICB0aW1lUmFuZ2U6IGdyb3VwPy50aW1lUmFuZ2UgfHwgXCJOQVwiLFxuICAgICAgICAgIGRhdGE6IGdyb3VwPy5kYXRhIHx8IFtdLFxuICAgICAgICB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JkZXI6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG4gICAgKHRoaXMuaW1hZ2VzQXJyYXlEYXRhIHx8IFtdKS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gaW1nPy50aW1lUmFuZ2UgfHwgXCJOQVwiO1xuICAgICAgaWYgKCFtYXAuaGFzKGtleSkpIHtcbiAgICAgICAgbWFwLnNldChrZXksIFtdKTtcbiAgICAgICAgb3JkZXIucHVzaChrZXkpO1xuICAgICAgfVxuICAgICAgbWFwLmdldChrZXkpPy5wdXNoKGltZyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmxpc3RWaWV3R3JvdXBzID0gb3JkZXIubWFwKChrZXkpID0+ICh7XG4gICAgICB0aW1lUmFuZ2U6IGtleSxcbiAgICAgIGRhdGE6IG1hcC5nZXQoa2V5KSB8fCBbXSxcbiAgICB9KSk7XG4gIH1cbiAgaGFuZGxlSW1hZ2VDbGljayhldnQ6IGFueSwgb2JqOiBhbnkpIHtcbiAgICAvLyBXaGVuIGR1cGxpY2F0ZSBpcyBzZWxlY3RlZCwgY2xpY2tpbmcgb24gaW1hZ2VzIHNob3VsZCBvcGVuIHRoZW0gaW4gem9vbSBtb2RhbFxuICAgIGlmICh0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSBcImR1cGxpY2F0ZVwiICYmIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkKSB7XG4gICAgICAvLyBPcGVuIGltYWdlIGluIHpvb20gbW9kYWwgd2hlbiBkdXBsaWNhdGUgaXMgc2VsZWN0ZWRcbiAgICAgIC8vIFN0b3JlIHRoZSBjbGlja2VkIGltYWdlIHRlbXBvcmFyaWx5IGZvciBtb2RhbCBkaXNwbGF5XG4gICAgICB0aGlzLm9wZW5JbWFnZVpvb21Nb2RhbCh0aGlzLmltYWdlVXJsLCBvYmopO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyBGb3Igc3BsaXQtc2NyZWVuIHZpZXcsIGNsaWNraW5nIG9uIHJlbGF0ZWQgaW1hZ2VzIHNob3VsZCBzd2FwIHRvIHRoYXQgaW1hZ2VcbiAgICBpZiAodGhpcy5zcGxpdFNjcmVlbkVuYWJsZWQgJiYgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSAhPT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgdGhpcy5zZWxlY3RJbWFnZUZvclNwbGl0VmlldyhvYmopO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFJhZGlvVHlwZSAhPT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgdGhpcy5pbWdTd2FwKG9iaik7IC8vIGV4aXN0aW5nIG5vbi1kdXBsaWNhdGUgY2xpY2sgYmVoYXZpb3JcbiAgICB9XG4gIH1cblxuICB0ZW1wTW9kYWxJbWFnZTogYW55ID0gbnVsbDsgLy8gVGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIG1vZGFsIGltYWdlIHdoZW4gZHVwbGljYXRlIGlzIHNlbGVjdGVkXG5cbiAgb3BlbkltYWdlWm9vbU1vZGFsKGltYWdlVXJsOiBhbnksIGltYWdlRGF0YTogYW55KSB7XG4gICAgLy8gU3RvcmUgdGhlIGltYWdlIGRhdGEgdGVtcG9yYXJpbHkgZm9yIG1vZGFsIGRpc3BsYXlcbiAgICB0aGlzLnRlbXBNb2RhbEltYWdlID0gaW1hZ2VEYXRhO1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmltYWdlUG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJsZ1wiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cbiAgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0OiBhbnkgPSBbXTtcblxuICB0b2dnbGVEdXBsaWNhdGVTZWxlY3Rpb24oaW1nOiBhbnkpIHtcbiAgICBpZiAoIWltZyB8fCBpbWcuZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdG90YWxJbWFnZXMgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEubGVuZ3RoO1xuICAgIGNvbnN0IGFscmVhZHlUYWdnZWRDb3VudCA9IHRoaXMuY291bnREYXRhPy5kdXBsaWNhdGUgfHwgMDtcbiAgICBjb25zdCBtYXhTZWxlY3RhYmxlID0gTWF0aC5yb3VuZCh0b3RhbEltYWdlcyAqIDAuMik7XG4gICAgY29uc3QgY3VycmVudGx5U2VsZWN0ZWRDb3VudCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5maWx0ZXIoXG4gICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnNlbGVjdGVkXG4gICAgKS5sZW5ndGg7XG5cbiAgICBjb25zdCB3aWxsU2VsZWN0ID0gIWltZy5zZWxlY3RlZDtcblxuICAgIC8vIOKblCBCbG9jayBzZWxlY3Rpb24gaWYgdHJ5aW5nIHRvIGdvIGJleW9uZCAyMCUgY2FwXG4gICAgaWYgKFxuICAgICAgd2lsbFNlbGVjdCAmJlxuICAgICAgY3VycmVudGx5U2VsZWN0ZWRDb3VudCArIGFscmVhZHlUYWdnZWRDb3VudCA+PSBtYXhTZWxlY3RhYmxlXG4gICAgKSB7XG4gICAgICB0aGlzLnRvYXN0LmdldFdhcm5pbmdUb2FzdChcbiAgICAgICAgYFlvdSBjYW4gc2VsZWN0IG9ubHkgJHttYXhTZWxlY3RhYmxlfSBpbWFnZXMgKCR7XG4gICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdD8uZGF0YT8uY29uZmlnPy5kdXBsaWNhdGUgPz8gXCIyMCVcIlxuICAgICAgICB9IG9mIHRvdGFsIGZvb3RmYWxsKWBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g4pyFIFByb2NlZWQgd2l0aCBzZWxlY3Rpb24gdG9nZ2xlXG4gICAgaW1nLnNlbGVjdGVkID0gIWltZy5zZWxlY3RlZDtcbiAgICBpbWcuaXNDaGVja2VkID0gaW1nLnNlbGVjdGVkO1xuXG4gICAgLy8g4pyFIEFsd2F5cyByZWJ1aWxkIHRoZSBzZWxlY3RlZCBsaXN0XG4gICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlcbiAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZClcbiAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgcGFyZW50OiBpdGVtLnBhcmVudCB8fCB0aGlzLnNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZCxcbiAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAgICAgfSkpO1xuXG4gICAgLy8gUmVidWlsZCByZW1haW5pbmcgaW1hZ2VzIGdyb3VwcyBhZnRlciBjaGVja2JveCBjaGFuZ2VcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvbkltYWdlQ2hlY2tib3hDaGFuZ2UoZXZ0OiBhbnksIGltZzogYW55LCB0eXBlOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZSA9PT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgLy8gVXNlIHRoZSB0b2dnbGUgbWV0aG9kIGZvciBkdXBsaWNhdGUgc2VsZWN0aW9uXG4gICAgICB0aGlzLnRvZ2dsZUR1cGxpY2F0ZVNlbGVjdGlvbihpbWcpO1xuICAgICAgLy8gVXBkYXRlIGNoZWNrYm94IHN0YXRlIHRvIG1hdGNoIHNlbGVjdGlvblxuICAgICAgaWYgKGV2dCAmJiBldnQudGFyZ2V0KSB7XG4gICAgICAgIGV2dC50YXJnZXQuY2hlY2tlZCA9IGltZy5zZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbGVhclZhbHVlKCkge1xuICAgIHRoaXMuc2F2ZShcIm5vbi10YWdnaW5nXCIpO1xuICAgIC8vIHRoaXMuc3VibWl0VmFsdWUoJ25vbi10YWdnaW5nJylcbiAgfVxuICBjYW5jZWwoKSB7XG4gICAgLy8gMS4gQ2xlYXIgc2VsZWN0ZWQgZHVwbGljYXRlIGltYWdlcyBsaXN0XG4gICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSBbXTtcblxuICAgIC8vIDIuIFJlc2V0IGFsbCBjaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIGluIG92ZXJhbGwgaW1hZ2UgbGlzdFxuICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgLi4uaW1nLFxuICAgICAgaXNDaGVja2VkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSwgLy8gYXNzdW1pbmcgJ3NlbGVjdGVkJyBpcyBjaGVja2JveCBiaW5kXG4gICAgICBwYXJlbnQ6IG51bGwsIC8vIHJlc2V0IHBhcmVudCBpZiB1c2VkXG4gICAgICAvLyBBZGQgb3RoZXIgZmxhZ3MgaGVyZSBpZiBuZWVkZWRcbiAgICB9KSk7XG5cbiAgICAvLyAzLiBDbG9zZSBpbWFnZSBmbG93L2Z1bGwtdmlldyBpZiBvcGVuXG4gICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcblxuICAgIC8vIDQuIFJlc2V0IHNwbGl0LXNjcmVlbiBhbmQgc2VsZWN0ZWQgaW1hZ2VcbiAgICB0aGlzLnNwbGl0U2NyZWVuRW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IDA7XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gW107XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTtcblxuICAgIC8vIDUuIChPcHRpb25hbCkgUmVzZXQgcmFkaW8gYnV0dG9ucyDigJQgaWYgeW91IGhhdmUgYW55IHNwZWNpZmljIGZsYWdcbiAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gXCJcIjtcbiAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xuICB9XG4gIHBvcHVwVHlwZTogYW55O1xuICBAVmlld0NoaWxkKFwiem9vbVBvcHVwXCIpIHpvb21Qb3B1cDogRWxlbWVudFJlZjtcbiAgc2F2ZShjYXRlZ29yeTogYW55KSB7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuem9vbVBvcHVwLCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgIHNpemU6IFwibWRcIixcbiAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLCAvLyBQcmV2ZW50IGNsb3Npbmcgb24gb3V0c2lkZSBjbGlja1xuICAgICAga2V5Ym9hcmQ6IGZhbHNlLCAvLyBQcmV2ZW50IGNsb3Npbmcgb24gRVNDIGtleVxuICAgIH0pO1xuICAgIHRoaXMucG9wdXBUeXBlID0gY2F0ZWdvcnk7XG4gIH1cblxuICBjYW5jZWxTdWJtaXQoKSB7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuXG4gICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSBbXTtcbiAgfVxuICBzdWJtaXRWYWx1ZShjYXRlZ29yeTogYW55KSB7XG4gICAgbGV0IGR1cGxpY2F0ZUltYWdlcyA9IFtdO1xuXG4gICAgaWYgKGNhdGVnb3J5ID09PSBcImR1cGxpY2F0ZVwiKSB7XG4gICAgICBkdXBsaWNhdGVJbWFnZXMgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlcbiAgICAgICAgLmZpbHRlcigoaW1nOiBhbnkpID0+IGltZy5zZWxlY3RlZCA9PT0gdHJ1ZSlcbiAgICAgICAgLm1hcCgoaW1nOiBhbnkpID0+ICh7XG4gICAgICAgICAgdGVtcElkOiBpbWcudGVtcGxkIHx8IGltZy50ZW1wSWQgfHwgXCJcIixcbiAgICAgICAgICB0aW1lUmFuZ2U6IGltZy50aW1lUmFuZ2UgfHwgXCJcIixcbiAgICAgICAgICBlbnRyeVRpbWU6IGltZy5lbnRyeVRpbWUgfHwgaW1nLmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgZXhpdFRpbWU6IGltZy5leGl0VGltZSB8fCBcIlwiLFxuICAgICAgICAgIGZpbGVQYXRoOiBpbWcuZmlsZVBhdGgsXG4gICAgICAgICAgcmV2b3BzVHlwZTogXCJkdXBsaWNhdGVcIixcbiAgICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbWcgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk7XG5cbiAgICBjb25zdCBvYmogPSB7XG4gICAgICBzdG9yZUlkOlxuICAgICAgICB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLnN0b3JlSWRhcnJheVswXVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiLFxuICAgICAgdGVtcElkOiBpbWc/LnRlbXBsZCB8fCAwLFxuICAgICAgcmV2b3BzVHlwZTogY2F0ZWdvcnksXG4gICAgICB0aW1lUmFuZ2U6IGltZz8udGltZVJhbmdlIHx8IFwiXCIsXG4gICAgICBpc0NoZWNrZWQ6IHRydWUsXG4gICAgICBkdXBsaWNhdGVJbWFnZTogZHVwbGljYXRlSW1hZ2VzLFxuICAgICAgcHJvY2Vzc1R5cGU6IGltZz8ucHJvY2Vzc1R5cGUgfHwgXCJmb290ZmFsbFwiLFxuICAgICAgZW50cnlUaW1lOiBpbWc/LmVudHJ5VGltZSB8fCBpbWc/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICBleGl0VGltZTogaW1nPy5leGl0VGltZSB8fCBcIlwiLFxuICAgICAgZmlsZVBhdGg6IGltZz8uZmlsZVBhdGggfHwgXCJcIixcbiAgICAgIGNvbW1lbnRzOiB0aGlzLnVzZXJDb21tZW50IHx8IFwiXCIsXG4gICAgICBtb2RlOiAnd2ViJ1xuICAgIH07XG5cbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXG4gICAgICAuZ2V0UnZwc1RhZyhvYmopXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChcbiAgICAgICAgICAgICAgcmVzPy5tZXNzYWdlIHx8IFwiVGlja2V0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5nZXRSZXZvcHMoKTtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsU3VibWl0KCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRDYXJkRGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gXCJcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiRmFpbGVkIHRvIHVwZGF0ZVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICAgZXJyLmVycm9yPy5lcnJvciB8fCBlcnIuZXJyb3IgfHwgZXJyPy5tZXNzYWdlIHx8IFwiVW5rbm93biBlcnJvclwiO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBub0RhdGFNZXNzYWdlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBkdXBsaWNhdGU6IFwiTm8gZHVwbGljYXRlcyBmb3VuZFwiLFxuICAgIGVtcGxveWVlOiBcIk5vIGVtcGxveWVlL3N0YWZmIGZvdW5kXCIsXG4gICAgXCJob3VzZS1rZWVwaW5nXCI6IFwiTm8gaG91c2Uga2VlcGluZyBmb3VuZFwiLFxuICAgIFwibm9uLXRhZ2dpbmdcIjogXCJObyBub24tdGFnZ2luZyBmb3VuZFwiLFxuICAgIGp1bms6IFwiTm8ganVuayBmb3VuZFwiXG4gIH07XG5cbiAgdGVtcFJhaXNlZFBheWxvYWQ6IGFueSA9IG51bGw7IC8vIGNsYXNzLWxldmVsIHZhcmlhYmxlIGZvciBwcmV2aWV3XG5cbiAgcHJlcGFyZVJhaXNlZFBheWxvYWQoc2hvd09ubHkgPSBmYWxzZSk6IGFueSB7fVxuXG4gIEBWaWV3Q2hpbGQoXCJyYWlzZWRQb3B1cFwiKSByYWlzZWRQb3B1cDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChcInJlc2V0UmVxdWVzdFBvcHVwXCIpIHJlc2V0UmVxdWVzdFBvcHVwOiBFbGVtZW50UmVmO1xuICBSYWlzZWQoKSB7XG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xuICAgICAgZGF0ZVN0cmluZzogdGhpcy5mb2xkZXJEYXRlLFxuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDAgPyB0aGlzLnN0b3JlSWRhcnJheVswXSA6IG51bGwsXG4gICAgICB0aWNrZXROYW1lOiBcImZvb3RmYWxsLWRpcmVjdG9yeVwiLFxuICAgICAgZm9vdGZhbGxDb3VudDogMCxcbiAgICAgIGR1cGxpY2F0ZUNvdW50OiAwLFxuICAgICAgZW1wbG95ZWVDb3VudDogMCxcbiAgICAgIGhvdXNlS2VlcGluZ0NvdW50OiAwLFxuICAgICAganVua0NvdW50OjAsXG4gICAgICBjb21tZW50czogdGhpcy5jb21tZW50VGV4dCB8fCBcIlwiLFxuICAgICAgZHVwbGljYXRlSW1hZ2VzOiBbXSxcbiAgICAgIGhvdXNlS2VlcGluZzogW10sXG4gICAgICBlbXBsb3llZTogW10sXG4gICAgICBqdW5rOiBbXSxcbiAgICB9O1xuXG4gICAgbGV0IHRvdGFsQ2hlY2tlZENvdW50ID0gMDtcblxuICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBpdGVtLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCk/LnRyaW0oKTtcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGl0ZW0uaXNDaGVja2VkID09PSB0cnVlO1xuXG4gICAgICAvLyDinIUgQ291bnQgb25seSBpZiBpdGVtIGlzIGNoZWNrZWQgQU5EIHJldm9wc1R5cGUgaXMgJ25vbi10YWdnaW5nJ1xuICAgICAgLy8gY29uc3QgaXNOb3RUYWdnZWQgPSB0eXBlID09PSAnbm9uLXRhZ2dpbmcnO1xuXG4gICAgICAvLyBpZiAoaXNOb3RUYWdnZWQpIHtcbiAgICAgIC8vICAgdG90YWxDaGVja2VkQ291bnQrKztcbiAgICAgIC8vIH1cblxuICAgICAgLy8gRFVQTElDQVRFIFRZUEVcbiAgICAgIGlmICh0eXBlID09PSBcImR1cGxpY2F0ZVwiICYmIEFycmF5LmlzQXJyYXkoaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZERhdGEgPSBpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aFxuICAgICAgICAgIC5maWx0ZXIoKGR1cDogYW55KSA9PiBkdXAuaXNDaGVja2VkKVxuICAgICAgICAgIC5tYXAoKGR1cDogYW55KSA9PiAoe1xuICAgICAgICAgICAgdGVtcElkOiBkdXAudGVtcElkIHx8IGR1cC50ZW1wbGQgfHwgXCJcIixcbiAgICAgICAgICAgIGZpbGVQYXRoOiBkdXAuZmlsZVBhdGgsXG4gICAgICAgICAgICBlbnRyeVRpbWU6IGR1cD8uZW50cnlUaW1lIHx8IGR1cD8uZW50cnlUbWUgfHwgXCJcIixcbiAgICAgICAgICAgIGV4aXRUaW1lOiBkdXAuZXhpdFRpbWUsXG4gICAgICAgICAgICB0aW1lUmFuZ2U6IGR1cC50aW1lUmFuZ2UsXG4gICAgICAgICAgICBpc0NoZWNrZWQ6IGR1cC5pc0NoZWNrZWQsXG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgIGlmIChuZXN0ZWREYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwYXlsb2FkLmR1cGxpY2F0ZUltYWdlcy5wdXNoKHtcbiAgICAgICAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXG4gICAgICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcbiAgICAgICAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgICBleGl0VGltZTogaXRlbS5leGl0VGltZSxcbiAgICAgICAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXG4gICAgICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxuICAgICAgICAgICAgZGF0YTogbmVzdGVkRGF0YSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHBheWxvYWQuZHVwbGljYXRlQ291bnQgKz0gbmVzdGVkRGF0YS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gRU1QTE9ZRUVcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT09IFwiZW1wbG95ZWVcIiAmJiBpc0NoZWNrZWQpIHtcbiAgICAgICAgcGF5bG9hZC5lbXBsb3llZS5wdXNoKHtcbiAgICAgICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxuICAgICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxuICAgICAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgZXhpdFRpbWU6IGl0ZW0uZXhpdFRpbWUsXG4gICAgICAgICAgdGltZVJhbmdlOiBpdGVtLnRpbWVSYW5nZSxcbiAgICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxuICAgICAgICB9KTtcblxuICAgICAgICBwYXlsb2FkLmVtcGxveWVlQ291bnQrKztcbiAgICAgIH1cblxuICAgICAgLy8gSE9VU0VLRUVQSU5HXG4gICAgICBlbHNlIGlmICh0eXBlID09PSBcImhvdXNlLWtlZXBpbmdcIiAmJiBpc0NoZWNrZWQpIHtcbiAgICAgICAgcGF5bG9hZC5ob3VzZUtlZXBpbmcucHVzaCh7XG4gICAgICAgICAgdGVtcElkOiBpdGVtLnRlbXBsZCxcbiAgICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcbiAgICAgICAgICBlbnRyeVRpbWU6IGl0ZW0/LmVudHJ5VGltZSB8fCBpdGVtPy5lbnRyeVRtZSB8fCBcIlwiLFxuICAgICAgICAgIGV4aXRUaW1lOiBpdGVtLmV4aXRUaW1lLFxuICAgICAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXG4gICAgICAgICAgaXNDaGVja2VkOiBpdGVtLmlzQ2hlY2tlZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcGF5bG9hZC5ob3VzZUtlZXBpbmdDb3VudCsrO1xuICAgICAgfSBcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT09IFwianVua1wiICYmIGlzQ2hlY2tlZCkge1xuICAgICAgICBwYXlsb2FkLmp1bmsucHVzaCh7XG4gICAgICAgICAgdGVtcElkOiBpdGVtLnRlbXBsZCxcbiAgICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcbiAgICAgICAgICBlbnRyeVRpbWUgOiBpdGVtPy5lbnRyeVRpbWUgfHwgaXRlbT8uZW50cnlUbWUgfHwgXCJcIixcbiAgICAgICAgICBleGl0VGltZSA6IGl0ZW0uZXhpdFRpbWUsXG4gICAgICAgICAgdGltZVJhbmdlIDogaXRlbS50aW1lUmFuZ2UsXG4gICAgICAgICAgaXNDaGVja2VkIDogaXRlbS5pc0NoZWNrZWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHBheWxvYWQuanVua0NvdW50Kys7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBwYXlsb2FkLmZvb3RmYWxsQ291bnQgPSB0aGlzLmNvdW50RGF0YT8uZm9vdGZhbGxDb3VudDtcblxuICAgIC8vIPCfkYcgUmV0dXJuIG9yIGFzc2lnblxuXG4gICAgdGhpcy50ZW1wUmFpc2VkUGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMucmFpc2VkUG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJtZFwiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWxSYXNpZWQoKSB7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XG4gIH1cblxuICBjb21tZW50VGV4dDogYW55O1xuICBnZXRSYWlzZWREYXRhOiBhbnk7XG4gIHN1Ym1pdFJhaXNlZCgpIHtcbiAgICAvLyBjb25zdCBwYXlsb2FkID0gdGhpcy50ZW1wUmFpc2VkUGF5bG9hZDsgLy8gZnJlc2ggZGF0YSBmb3IgQVBJXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIHRpY2tldE5hbWU6IFwiZm9vdGZhbGwtZGlyZWN0b3J5XCIsXG4gICAgICBzdG9yZUlkOiB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkLnN0b3JlSWQsXG4gICAgICBkYXRlU3RyaW5nOiB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkLmRhdGVTdHJpbmcsXG4gICAgICB0eXBlOiBcImNyZWF0ZVwiLFxuICAgICAgbW9kZTogXCJ3ZWJcIlxuICAgIH1cbiAgICB0aGlzLmdldFJhaXNlZERhdGEgPSBwYXlsb2FkO1xuICAgIGNvbnNvbGUubG9nKCdzdWJtaXQgcmFpc2VkIDonLCBwYXlsb2FkKVxuICAgIHRoaXMucnZwc1NlcnZpY2VcbiAgICAgIC5nZXRDcmVhdGVSYWlzZWRUYWcocGF5bG9hZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFxuICAgICAgICAgICAgICByZXM/Lm1lc3NhZ2UgfHwgXCJUaWNrZXQgdXBkYXRlZCBzdWNjZXNzZnVsbHlcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmdldFJldm9wcygpO1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2FyZERhdGEoKTtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsUmFzaWVkKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICAgICAgICAgICAgdGhpcy5jb3VudERhdGEgPSBbXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiRmFpbGVkIHRvIHVwZGF0ZVwiKTtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsUmFzaWVkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID1cbiAgICAgICAgICAgIGVyci5lcnJvcj8uZXJyb3IgfHxcbiAgICAgICAgICAgIGVyci5lcnJvciB8fFxuICAgICAgICAgICAgZXJyPy5lcnJvcj8ubWVzc2FnZSB8fFxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UgfHxcbiAgICAgICAgICAgIFwiVW5rbm93biBlcnJvclwiO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xuICAgICAgICAgIHRoaXMuY2FuY2VsUmFzaWVkKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIG9uSW1hZ2VDaGVja2JveENoYW5nZShpbWc6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gIC8vICAgaWYgKHR5cGUgPT09ICdkdXBsaWNhdGUnKSB7XG4gIC8vICAgICAvLyBDb3VudCBvbmx5IHZhbGlkIGR1cGxpY2F0ZSBpbWFnZXMgd2hlcmUgYGR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGggPT09IDBgXG4gIC8vICAgICBjb25zdCB0b3RhbFZhbGlkRHVwbGljYXRlSW1hZ2VzID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcihcbiAgLy8gICAgICAgKGl0ZW06IGFueSkgPT5cbiAgLy8gICAgICAgICBpdGVtLnJldm9wc1R5cGUgPT09ICdkdXBsaWNhdGUnICYmICghaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGggfHwgaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGgubGVuZ3RoID09PSAwKVxuICAvLyAgICAgKS5sZW5ndGg7XG5cbiAgLy8gICAgIGNvbnN0IG1heEFsbG93ZWQgPSBNYXRoLmZsb29yKHRvdGFsVmFsaWREdXBsaWNhdGVJbWFnZXMgKiAwLjEpOyAvLyAxMCUgbGltaXRcblxuICAvLyAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LnNvbWUoXG4gIC8vICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGVtcGxkID09PSBpbWcudGVtcGxkXG4gIC8vICAgICApO1xuXG4gIC8vICAgICBpZiAoaW1nLnNlbGVjdGVkKSB7XG4gIC8vICAgICAgIC8vIOKdjCBSZWFjaGVkIG1heCBhbGxvd2VkIOKAlCBibG9jayBpdFxuICAvLyAgICAgICBpZiAodGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID49IG1heEFsbG93ZWQpIHtcbiAgLy8gICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXG4gIC8vICAgICAgICAgICBgT25seSAke21heEFsbG93ZWR9IGltYWdlcyBjYW4gYmUgc2VsZWN0ZWQgYXMgZHVwbGljYXRlICgxMCUgb2YgdW50YWdnZWQgZHVwbGljYXRlcykuYFxuICAvLyAgICAgICAgICk7XG5cbiAgLy8gICAgICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgLy8gICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgPT09IGltZy50ZW1wbGQpO1xuICAvLyAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgLy8gICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YVtpbmRleF0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgLy8gICAgICAgICB9XG5cbiAgLy8gICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgLy8gICAgICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xuICAvLyAgICAgICAgIH0pO1xuXG4gIC8vICAgICAgICAgcmV0dXJuO1xuICAvLyAgICAgICB9XG5cbiAgLy8gICAgICAgLy8g4pyFIEFkZCBpZiBub3QgYWxyZWFkeSBpbiBsaXN0XG4gIC8vICAgICAgIGlmICghYWxyZWFkeUV4aXN0cykge1xuICAvLyAgICAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LnB1c2goe1xuICAvLyAgICAgICAgICAgLi4uaW1nLFxuICAvLyAgICAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAvLyAgICAgICAgICAgcGFyZW50OiBpbWcucGFyZW50IHx8IG51bGxcbiAgLy8gICAgICAgICB9KTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgLy8g4p2MIFJlbW92YWwgY2FzZVxuICAvLyAgICAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LmZpbHRlcihcbiAgLy8gICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCAhPT0gaW1nLnRlbXBsZFxuICAvLyAgICAgICApO1xuICAvLyAgICAgfVxuICAvLyAgIH1cblxuICAvLyAgIC8vIOKaoO+4jyBDYWxsIHRoaXMgdG8gdXBkYXRlIGJ1dHRvbiBlbmFibGUgc3RhdGVcbiAgLy8gICB0aGlzLmNoZWNrRHVwbGljYXRlU2F2ZUVuYWJsZSgpO1xuICAvLyB9XG5cbiAgLy8gZHVwbGljYXRlU2F2ZUVuYWJsZWQgPSBmYWxzZTtcblxuICAvLyBjaGVja0R1cGxpY2F0ZVNhdmVFbmFibGUoKSB7XG4gIC8vICAgdGhpcy5kdXBsaWNhdGVTYXZlRW5hYmxlZCA9XG4gIC8vICAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPiAwO1xuICAvLyB9XG5cbiAgaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZChcImltYWdlUG9wdXBcIikgaW1hZ2VQb3B1cDogRWxlbWVudFJlZjtcbiAgc2VsZWN0ZWRJbWFnZUFycmF5KHVybDogYW55LCBkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5pbWFnZVBvcHVwLCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgIHNpemU6IFwibGdcIixcbiAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLFxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgY2xvc2VJbWFnZSgpIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gZmFsc2U7XG4gICAgdGhpcy50ZW1wTW9kYWxJbWFnZSA9IG51bGw7IC8vIENsZWFyIHRlbXBvcmFyeSBpbWFnZSB3aGVuIGNsb3NpbmcgbW9kYWxcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XG4gIH1cblxuICBjYW5FbmFibGVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvdW50RGF0YSB8fCAhdGhpcy5mb2xkZXJEYXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHsgZHVwbGljYXRlLCBob3VzZWtlZXBpbmcsIGVtcGxveWVlLCBqdW5rIH0gPSB0aGlzLmNvdW50RGF0YTtcblxuICAgIC8vIENoZWNrIGNvdW50IGNvbmRpdGlvblxuICAgIGNvbnN0IGhhc0NvdW50ID0gZHVwbGljYXRlID4gMCB8fCBob3VzZWtlZXBpbmcgPiAwIHx8IGVtcGxveWVlID4gMCB8fCBqdW5rID4gMDtcblxuICAgIC8vIENvbnZlcnQgZm9sZGVyRGF0ZSB0byBEYXRlXG4gICAgY29uc3QgZm9sZGVyID0gbmV3IERhdGUodGhpcy5mb2xkZXJEYXRlKTtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG5cbiAgICAvLyBOb3JtYWxpemUgdGltZXMgKHJlbW92ZSBob3VycyBmb3IgcHJvcGVyIGRheSBjb21wYXJpc29uKVxuICAgIGZvbGRlci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICB0b2RheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcblxuICAgIC8vIENhbGN1bGF0ZSBkaWZmZXJlbmNlIGluIGRheXNcbiAgICBjb25zdCBkaWZmSW5UaW1lID0gdG9kYXkuZ2V0VGltZSgpIC0gZm9sZGVyLmdldFRpbWUoKTtcbiAgICBjb25zdCBkaWZmSW5EYXlzID0gZGlmZkluVGltZSAvICgxMDAwICogMzYwMCAqIDI0KTtcblxuICAgIC8vIFdpdGhpbiBsYXN0IDcgZGF5cyDihpIgZGlmZiBiZXR3ZWVuIDAgYW5kIDdcbiAgICBjb25zdCBpc1dpdGhpbkxhc3Q3ID0gZGlmZkluRGF5cyA+PSAwICYmIGRpZmZJbkRheXMgPD0gNztcblxuICAgIHJldHVybiBoYXNDb3VudCAmJiBpc1dpdGhpbkxhc3Q3O1xuICB9XG5cbiAgY3VycmVudEltYWdlSW5kZXg6IG51bWJlciA9IDA7XG4gIGdldCBjYW5OYXZpZ2F0ZUxlZnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEltYWdlSW5kZXggPiAwO1xuICB9XG5cbiAgZ2V0IGNhbk5hdmlnYXRlUmlnaHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEltYWdlSW5kZXggPCB0aGlzLmltYWdlc0FycmF5RGF0YS5sZW5ndGggLSAxO1xuICB9XG5cbiAgbmF2aWdhdGVJbWFnZShkaXJlY3Rpb246IFwibGVmdFwiIHwgXCJyaWdodFwiKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5pbWFnZXNBcnJheURhdGEubGVuZ3RoO1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJsZWZ0XCIgJiYgdGhpcy5jYW5OYXZpZ2F0ZUxlZnQpIHtcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXgtLTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gXCJyaWdodFwiICYmIHRoaXMuY2FuTmF2aWdhdGVSaWdodCkge1xuICAgICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCsrO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBpbWFnZVxuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IHRoaXMuaW1hZ2VzQXJyYXlEYXRhW3RoaXMuY3VycmVudEltYWdlSW5kZXhdO1xuXG4gICAgLy8gVXBkYXRlIHJlbWFpbmluZyBpbWFnZXNcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLmltYWdlc0FycmF5RGF0YS5maWx0ZXIoXG4gICAgICAoXzogYW55LCBpOiBhbnkpID0+IGkgIT09IHRoaXMuY3VycmVudEltYWdlSW5kZXhcbiAgICApO1xuICB9XG5cbiAgLy8gR2V0IGN1cnJlbnQgZm9vdGZhbGwgY291bnQgZm9yIHNlbGVjdGVkIGRhdGVcbiAgZ2V0Q3VycmVudEZvb3RmYWxsKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiAwO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gbmV3IERhdGUodGhpcy5mb2xkZXJEYXRlKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXTtcbiAgICByZXR1cm4gdGhpcy5jYXJkRGF0YU1hcFtub3JtYWxpemVkRGF0ZV0/LmZvb3RmYWxsQ291bnQgfHwgMDtcbiAgfVxuXG4gIC8vIEdldCBwZXJjZW50YWdlIGNoYW5nZSBmcm9tIGZvb3RmYWxsQ291bnRUcmVuZFxuICBnZXRGb290ZmFsbFBlcmNlbnRhZ2VDaGFuZ2UoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZm9sZGVyRGF0ZSkgcmV0dXJuIDA7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICAgIHJldHVybiB0aGlzLmNhcmREYXRhTWFwW25vcm1hbGl6ZWREYXRlXT8uZm9vdGZhbGxDb3VudFRyZW5kIHx8IDA7XG4gIH1cblxuICAvLyBGb3JtYXQgZG93bnRpbWUgZnJvbSBkb3dudGltZSBrZXkgKGluIG1pbnV0ZXMpXG4gIGdldEZvcm1hdHRlZERvd250aW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiAnLSc7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICAgIGNvbnN0IGRvd250aW1lTWludXRlcyA9IHRoaXMuY2FyZERhdGFNYXBbbm9ybWFsaXplZERhdGVdPy5kb3dudGltZSB8fCAwO1xuICAgIFxuICAgIGlmICghZG93bnRpbWVNaW51dGVzIHx8IGRvd250aW1lTWludXRlcyA9PT0gMCkgcmV0dXJuICctJztcbiAgICBcbiAgICBjb25zdCB7IGhvdXJzLCBtaW5zIH0gPSB0aGlzLmNvbnZlcnRNaW51dGVzKGRvd250aW1lTWludXRlcyk7XG4gICAgaWYgKGhvdXJzID4gMCAmJiBtaW5zID4gMCkge1xuICAgICAgcmV0dXJuIGAke2hvdXJzfWhyICR7bWluc30gbWluc2A7XG4gICAgfSBlbHNlIGlmIChob3VycyA+IDApIHtcbiAgICAgIHJldHVybiBgJHtob3Vyc31ocmA7XG4gICAgfSBlbHNlIGlmIChtaW5zID4gMCkge1xuICAgICAgcmV0dXJuIGAke21pbnN9IG1pbnNgO1xuICAgIH1cbiAgICByZXR1cm4gJy0nO1xuICB9XG5cbiAgLy8gR2V0IHRpY2tldCBzdGF0dXNcbiAgZ2V0VGlja2V0U3RhdHVzKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiAnLSc7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuY2FyZERhdGFNYXBbbm9ybWFsaXplZERhdGVdPy50aWNrZXRTdGF0dXM7XG4gICAgcmV0dXJuIHN0YXR1cyB8fCAnLSc7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGVyZSdzIGRvd250aW1lXG4gIGhhc0Rvd250aW1lKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5mb2xkZXJEYXRlKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICAgIGNvbnN0IGRvd250aW1lID0gdGhpcy5jYXJkRGF0YU1hcFtub3JtYWxpemVkRGF0ZV0/LmRvd250aW1lIHx8IDA7XG4gICAgcmV0dXJuIGRvd250aW1lID4gMDtcbiAgfVxuXG4gIC8vIEdldCB0YWdnaW5nIGRhdGEgZnJvbSB0aWNrZXRSZXZpZXdTdGF0dXMgd2hlcmUgYWN0aW9uVHlwZSA9IFwidGFnZ2luZ1wiXG4gIGdldFRhZ2dpbmdEYXRhKHR5cGU6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKCF0aGlzLnRpY2tldFJldmlld1N0YXR1cyB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLnRpY2tldFJldmlld1N0YXR1cykgfHwgIXR5cGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtPy5hY3Rpb25UeXBlID09PSB0eXBlKSB8fCBudWxsO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGlja2V0IHN0YXR1cyBpcyByYWlzZWRcbiAgaXNUaWNrZXRSYWlzZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5nZXRUaWNrZXRTdGF0dXMoKTtcbiAgICByZXR1cm4gc3RhdHVzICE9PSAnLScgJiYgc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSBcInJhaXNlZFwiO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGlja2V0IHN0YXR1cyBpcyBjbG9zZWRcbiAgaXNUaWNrZXRDbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5nZXRUaWNrZXRTdGF0dXMoKTtcbiAgICByZXR1cm4gc3RhdHVzICE9PSAnLScgJiYgc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSBcImNsb3NlZFwiO1xuICB9XG5cbiAgLy8gR2V0IGFsbCB0YWdnaW5nIGRhdGEgaXRlbXMgKGZvciBpbml0aWFsIGFuZCBmaW5hbCByZXZpc2lvbnMpXG4gIGdldEFsbFRhZ2dpbmdEYXRhKCk6IGFueVtdIHtcbiAgICBpZiAoIXRoaXMudGlja2V0UmV2aWV3U3RhdHVzIHx8ICFBcnJheS5pc0FycmF5KHRoaXMudGlja2V0UmV2aWV3U3RhdHVzKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0/LmFjdGlvblR5cGUgPT09IFwidGFnZ2luZ1wiKSB8fCBbXTtcbiAgfVxuXG4gIC8vIEdldCBpbml0aWFsIHJldmlzaW9uIGRhdGEgKGZpcnN0IHRhZ2dpbmcgaXRlbSlcbiAgZ2V0SW5pdGlhbFJldmlzaW9uRGF0YSgpOiBhbnkge1xuICAgIGNvbnN0IGFsbFRhZ2dpbmcgPSB0aGlzLmdldEFsbFRhZ2dpbmdEYXRhKCk7XG4gICAgcmV0dXJuIGFsbFRhZ2dpbmcubGVuZ3RoID4gMCA/IGFsbFRhZ2dpbmdbMF0gOiBudWxsO1xuICB9XG5cbiAgLy8gR2V0IGZpbmFsIHJldmlzaW9uIGRhdGEgKGxhc3QgdGFnZ2luZyBpdGVtLCBvciBzZWNvbmQgaWYgZXhpc3RzKVxuICBnZXRGaW5hbFJldmlzaW9uRGF0YSgpOiBhbnkge1xuICAgIGNvbnN0IGFsbFRhZ2dpbmcgPSB0aGlzLmdldEFsbFRhZ2dpbmdEYXRhKCk7XG4gICAgcmV0dXJuIGFsbFRhZ2dpbmcubGVuZ3RoID4gMSA/IGFsbFRhZ2dpbmdbYWxsVGFnZ2luZy5sZW5ndGggLSAxXSA6IChhbGxUYWdnaW5nLmxlbmd0aCA+IDAgPyBhbGxUYWdnaW5nWzBdIDogbnVsbCk7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCBjb3VudCB2YWx1ZSBieSB0eXBlIGZyb20gY291bnQgYXJyYXlcbiAgZ2V0Q291bnRCeVR5cGUoZGF0YTogYW55LCBjb3VudFR5cGU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKCFkYXRhIHx8ICFkYXRhLmNvdW50KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgY291bnQgaXMgYW4gYXJyYXkgKG5ldyBmb3JtYXQpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5jb3VudCkpIHtcbiAgICAgIGNvbnN0IGNvdW50SXRlbSA9IGRhdGEuY291bnQuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtPy50eXBlID09PSBjb3VudFR5cGUpO1xuICAgICAgcmV0dXJuIGNvdW50SXRlbT8udmFsdWUgfHwgMDtcbiAgICB9XG4gICAgXG4gICAgLy8gRmFsbGJhY2sgZm9yIG9sZCBmb3JtYXQgKG9iamVjdClcbiAgICBjb25zdCBrZXlNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAnZHVwbGljYXRlJzogJ2R1cGxpY2F0ZUNvdW50JyxcbiAgICAgICdlbXBsb3llZSc6ICdlbXBsb3llZUNvdW50JyxcbiAgICAgICdqdW5rJzogJ2p1bmtDb3VudCcsXG4gICAgICAnaG91c2VLZWVwaW5nJzogJ2hvdXNlS2VlcGluZ0NvdW50J1xuICAgIH07XG4gICAgXG4gICAgY29uc3Qga2V5ID0ga2V5TWFwW2NvdW50VHlwZV07XG4gICAgcmV0dXJuIGtleSA/IChkYXRhLmNvdW50W2tleV0gfHwgMCkgOiAwO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHRvdGFsIHBlcmNlbnRhZ2U6IChzdW0gb2YgYWxsIGNvdW50IHZhbHVlcyAvIHJldmljZWRGb290ZmFsbCkgKiAxMDBcbiAgLy8gdHlwZTogJ3JhaXNlZCcgfCAnZmluYWxyZXZpZXcnXG4gIGdldFJldmlzaW9uQ2FsY3VsYXRpb24odHlwZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudGlja2V0UmV2aWV3U3RhdHVzIHx8ICFBcnJheS5pc0FycmF5KHRoaXMudGlja2V0UmV2aWV3U3RhdHVzIHx8ICF0eXBlICkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8vIEZpbHRlciBpdGVtcyBiYXNlZCBvbiBhY3Rpb25UeXBlXG4gICAgY29uc3QgdGFnZ2luZ0l0ZW1zID0gdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0/LmFjdGlvblR5cGUgPT09IHR5cGUpO1xuICAgIGlmICh0YWdnaW5nSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAoIXRhZ2dpbmdJdGVtc1swXSB8fCAhdGFnZ2luZ0l0ZW1zWzBdLnJldmljZWRGb290ZmFsbCB8fCB0YWdnaW5nSXRlbXNbMF0ucmV2aWNlZEZvb3RmYWxsID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgY291bnQgPSB0YWdnaW5nSXRlbXNbMF0uY291bnQgfHwgW107XG4gICAgLy8gQ2hlY2sgaWYgY291bnQgaXMgYW4gYXJyYXkgKG5ldyBmb3JtYXQpIG9yIG9iamVjdCAob2xkIGZvcm1hdClcbiAgICBsZXQgdG90YWxDb3VudCA9IDA7XG4gICAgXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY291bnQpKSB7XG4gICAgICAvLyBOZXcgZm9ybWF0OiBjb3VudCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggdHlwZSBhbmQgdmFsdWVcbiAgICAgIGNvbnN0IHR5cGVzVG9TdW0gPSBbJ2R1cGxpY2F0ZScsICdlbXBsb3llZScsICdob3VzZUtlZXBpbmcnLCAnanVuayddO1xuICAgICAgdG90YWxDb3VudCA9IGNvdW50XG4gICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gdHlwZXNUb1N1bS5pbmNsdWRlcyhpdGVtPy50eXBlKSlcbiAgICAgICAgLnJlZHVjZSgoc3VtOiBudW1iZXIsIGl0ZW06IGFueSkgPT4gc3VtICsgKGl0ZW0/LnZhbHVlIHx8IDApLCAwKTtcbiAgICB9IFxuICAgIC8vIGVsc2Uge1xuICAgIC8vICAgLy8gT2xkIGZvcm1hdDogY291bnQgaXMgYW4gb2JqZWN0IHdpdGgga2V5c1xuICAgIC8vICAgdG90YWxDb3VudCA9IChjb3VudC5kdXBsaWNhdGVDb3VudCB8fCAwKSArIFxuICAgIC8vICAgICAgICAgICAgICAgIChjb3VudC5lbXBsb3llZUNvdW50IHx8IDApICsgXG4gICAgLy8gICAgICAgICAgICAgICAgKGNvdW50Lmp1bmtDb3VudCB8fCAwKSArIFxuICAgIC8vICAgICAgICAgICAgICAgIChjb3VudC5ob3VzZUtlZXBpbmdDb3VudCB8fCAwKTtcbiAgICAvLyB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoKHRvdGFsQ291bnQgLyB0YWdnaW5nSXRlbXNbMF0ucmV2aWNlZEZvb3RmYWxsKSAqIDEwMCk7XG4gIH1cblxuICByZXF1ZXN0UmVzZXQoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMucmVzZXRSZXF1ZXN0UG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJtZFwiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWxSZXNldFJlcXVlc3QoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICB9XG5cbiAgc3VibWl0UmVzZXRSZXF1ZXN0KCk6IHZvaWQge1xuICAgIGxldCBwYXlsb2FkID0ge1xuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMCA/IHRoaXMuc3RvcmVJZGFycmF5WzBdIDogbnVsbCxcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiXG4gICAgfTtcbiAgICBjb25zb2xlLmxvZygnc3VibWl0UmVzZXRSZXF1ZXN0IFBheWxvYWQ6JywgcGF5bG9hZCk7XG4gICAgLy8gQ2xvc2UgbW9kYWwgYWZ0ZXIgc3VibWlzc2lvblxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcbiAgICB0aGlzLnNlcnZpY2VcbiAgICAgIC5zZW5kVk1TUmVzZXRSZXF1ZXN0KHBheWxvYWQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICA/LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2FyZERhdGEoKTtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFwiUmVxdWVzdCByZXNldCBzdWNjZXNzZnVsbHlcIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIkZhaWxlZCB0byByZXNldCByZXF1ZXN0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICAgZXJyLmVycm9yPy5lcnJvciB8fFxuICAgICAgICAgICAgZXJyLmVycm9yIHx8XG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8XG4gICAgICAgICAgICBlcnIubWVzc2FnZSB8fFxuICAgICAgICAgICAgXCJVbmtub3duIGVycm9yXCI7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gc3VibWl0UmVzZXRSZXF1ZXN0IDonLCBlcnIpO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cgfHwgXCJVbmtub3duIGVycm9yIG9jY3VycmVkXCIpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgXG4gIH1cblxuICAvLyBHZXQgbm9ybWFsaXplZCBkYXRlIGZvciBjdXJyZW50IGZvbGRlckRhdGVcbiAgZ2V0Tm9ybWFsaXplZERhdGUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICB9XG5cbiAgLy8gR2V0IHNlbGVjdGVkIGRhdGUncyBjYXJkIGRhdGFcbiAgZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKTogYW55IHtcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IHRoaXMuZ2V0Tm9ybWFsaXplZERhdGUoKTtcbiAgICByZXR1cm4gbm9ybWFsaXplZERhdGUgPyB0aGlzLmNhcmREYXRhTWFwW25vcm1hbGl6ZWREYXRlXSA6IG51bGw7XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZCBtdC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG10LTMgcHgtMCBib3JkZXItYm90dG9tLTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1hY2NvcmRpb25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8IS0tIGZvciBuZXcgbmF2aWdhdGlvbiBjaGFuZ2VzIC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gb2xkIHZpZXcgd2hpbGUgZm9sZGVyIHZpZXcgLS0+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImZvbGRlclZpZXdcIiBjbGFzcz1cIm1haW5oZWFkaW5nIHBiLTAgY3VzdG9tLWFjY29yZGlvbi1oZWFkZXJcIiAoY2xpY2spPVwidG9nZ2xlQWNjb3JkaW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1nLWRpcmVjXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDQwcHg7XCI+SW1hZ2UgRGlyZWN0b3J5PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjY29yZGlvbi1hcnJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRG93biBhcnJvdyBmb3IgY29sbGFwc2VkIHN0YXRlLCB1cCBhcnJvdyBmb3IgZXhwYW5kZWQgc3RhdGUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0FjY29yZGlvbkV4cGFuZGVkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCI2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiA2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xIDFMNSA1TDkgMVwiIHN0cm9rZT1cIiMwNzE0MzdcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgNUw1IDFMOSA1XCIgc3Ryb2tlPVwiIzFiODRmZlwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPCEtLSBuZXcgdmlldyB3aGlsZSBub3QgaW4gZm9sZGVyIHZpZXcgdmlldyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZvbGRlclZpZXdcIiBjbGFzcz1cImhlYWRlci1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJiYWNrbmF2ICYmICFpbWFnZUZsb3dcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImJhY2tUb0Zvb3RmYWxsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMjU4NV83MDM2XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIGJhY2sgZnJvbSBpbWFnZSBmbG93IC0tPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImltYWdlRmxvd1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYmFja1RvRm9vdGZhbGwxKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMjU4NV83MDM2XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltZy1kaXJlY1wiPkltYWdlIERpcmVjdG9yeSB8IHt7Zm9sZGVyRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFmb2xkZXJWaWV3XCIgY2xhc3M9XCJtYWluaGVhZGluZy0xIHBiLTAgY3VzdG9tLWFjY29yZGlvbi1oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjY29yZGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjY29yZGlvbi1hcnJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRG93biBhcnJvdyBmb3IgY29sbGFwc2VkIHN0YXRlLCB1cCBhcnJvdyBmb3IgZXhwYW5kZWQgc3RhdGUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0FjY29yZGlvbkV4cGFuZGVkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCI2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiA2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xIDFMNSA1TDkgMVwiIHN0cm9rZT1cIiMwNzE0MzdcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgNUw1IDFMOSA1XCIgc3Ryb2tlPVwiIzFiODRmZlwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8c2VjdGlvbiAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9sZGVyVmlld1wiIGNsYXNzPVwiY2FyZC1ib2R5IHB4LTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtbGlzdC1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtY2FyZFwiICpuZ0Zvcj1cImxldCBvYmogb2YgZGF0ZUFycmF5OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGF0ZS1jYXJkLWFjdGl2ZSc6IGkgPT09IHNlbGVjdEluZGV4fVwiIChjbGljayk9XCJnZXRpbWFnZXMoaSwgb2JqKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNhbGVuZGFyLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuNjY2NyAyLjY2NjY3SDEyVjJDMTIgMS42MzE4MSAxMS43MDE1IDEuMzMzMzMgMTEuMzMzMyAxLjMzMzMzQzEwLjk2NTEgMS4zMzMzMyAxMC42NjY3IDEuNjMxODEgMTAuNjY2NyAyVjIuNjY2NjdINS4zMzMzM1YyQzUuMzMzMzMgMS42MzE4MSA1LjAzNDg2IDEuMzMzMzMgNC42NjY2NyAxLjMzMzMzQzQuMjk4NDggMS4zMzMzMyA0IDEuNjMxODEgNCAyVjIuNjY2NjdIMy4zMzMzM0MyLjU5Njk1IDIuNjY2NjcgMiAzLjI2MzYyIDIgNFYxMy4zMzMzQzIgMTQuMDY5NyAyLjU5Njk1IDE0LjY2NjcgMy4zMzMzMyAxNC42NjY3SDEyLjY2NjdDMTMuNDAzIDE0LjY2NjcgMTQgMTQuMDY5NyAxNCAxMy4zMzMzVjRDMTQgMy4yNjM2MiAxMy40MDMgMi42NjY2NyAxMi42NjY3IDIuNjY2NjdaTTEyLjY2NjcgMTMuMzMzM0gzLjMzMzMzVjZIMTIuNjY2N1YxMy4zMzMzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLXRleHRcIj57e29iaiB8IGRhdGU6J2RkIE1NTSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNhcmREYXRhTWFwW29ial0/LnRpY2tldFN0YXR1c0xvd2VyIGFzIHN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgbXMtMlwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWRnZS1saWdodC1zdWNjZXNzJzogc3RhdHVzID09PSAnY2xvc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWRnZS1saWdodC13YXJuaW5nJzogc3RhdHVzID09PSAncmFpc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWRnZS1saWdodC1kZWZhdWx0Jzogc3RhdHVzICE9PSAnY2xvc2VkJyAmJiBzdGF0dXMgIT09ICdyYWlzZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGF0dXMgPT09ICdjbG9zZWQnID8gJ1RpY2tldCBjbG9zZWQnIDogKHN0YXR1cyA9PT0gJ3JhaXNlZCcgPyAnVGlja2V0IHJhaXNlZCcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyZERhdGFNYXBbb2JqXT8udGlja2V0U3RhdHVzIHx8ICcnKSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZmFsbC1jb3VudFwiPnt7IGNhcmREYXRhTWFwW29ial0/LmZvb3RmYWxsQ291bnQgfHwgMCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RmYWxsLWxhYmVsXCI+VG90YWwgZm9vdGZhbGw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cIiFpbWFnZUZsb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGlja2V0IEJsb2NrIEFsZXJ0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKT8ucmFpc2VkU3RhdHVzRW5hYmxlZCA9PT0gJ2Jsb2NrJ1wiIGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTJcIiBmaWxsPVwiI0YwNDQzOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4VjEzXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHJhaXNlIHRpY2tldCBmb3IgbmV4dCB7eyBnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpPy5ub09mQmxvY2tlZERheXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnMCcgfX0gZGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgbG9va3MgbGlrZSB5b3UgaGF2ZSBhY2hpZXZlZCA5NSUgYWNjdXJhY3kgZm9yIHRoZSB0aHJlZSB0aWNrZXRzIHJhaXNlZCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGguIFRoaXMgbGltaXRzIHlvdSBmcm9tIHJhaXNpbmcgbW9yZSB0aWNrZXRzIHRvIGF2b2lkIHJlZHVuZGFuY3kuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHN0aWxsIHdhbnQgdG8gcmFpc2UgdGlja2V0cywgPHNwYW4gY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0UmVzZXQoKVwiPnNlbmQgcmVxdWVzdDwvc3Bhbj4gdG8gcmVzZXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGlja2V0IFJlcXVlc3QgU3VjY2VzcyBBbGVydCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldFNlbGVjdGVkRGF0ZUNhcmREYXRhKCk/LnJhaXNlZFN0YXR1c0VuYWJsZWQgPT09ICdyZXF1ZXN0J1wiIGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiAyMUwyMyAxMkwyIDNWMTBMMTcgMTJMMiAxNFYyMVpcIiBmaWxsPVwiIzEwQjk4MVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNldCBSZXF1ZXN0IFNlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciByZXF1ZXN0IHRvIGVuYWJsZSB0aWNrZXQgcmFpc2luZyBoYXMgYmVlbiBzdWJtaXR0ZWQuIFlvdSdsbCBiZSBub3RpZmllZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2UgaXQncyBhcHByb3ZlZC4gUGxlYXNlIGVuc3VyZSBmdXR1cmUgdGlja2V0IGFjY3VyYWN5IHJlbWFpbnMgd2l0aGluIHRoZSA5NSVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZm9vdGZhbGwgdHJlbmRzIGZlYXR1cmUgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZmFsbFRyZW5kc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWNrZXRTdGF0dXNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZm9vdGZhbGwgdHJlbmRzIGZlYXR1cmUgZW5kIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTAgbXQtMyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJiYWNrbmF2XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yNTg1XzcwMzZcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJpbWctZGlyZWMgbXMtMiBtdC0xXCI+e3tmb2xkZXJEYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIG14LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKSAmJiBnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0IFJhaXNlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgbXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIj5UaWNrZXQgQ2xvc2VkPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLWF1dG8gdGV4dC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhY2FuRW5hYmxlQnV0dG9uKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUmFpc2VkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFpc2UgdGlja2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDAgbXktMiBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncm91cCBiZy13aGl0ZSBib3JkZXItMSBidG4tZ3JvdXAgdy1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoY291bnREYXRhPy5sZW5ndGggPiAwKVwiPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2Zvb3RmYWxsJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdmb290ZmFsbCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBGb290ZmFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZm9vdGZhbGwnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmZvb3RmYWxsQ291bnQgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdub24tdGFnZ2luZycgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnbm9uLXRhZ2dpbmcnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uLXRhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5ub25UYWdzIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZHVwbGljYXRlJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdkdXBsaWNhdGUnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZHVwbGljYXRlJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5kdXBsaWNhdGUgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdlbXBsb3llZScgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnZW1wbG95ZWUnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wbG95ZWUvU3RhZmZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2VtcGxveWVlJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5lbXBsb3llZSB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdqdW5rJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdqdW5rJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2p1bmsnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5qdW5rIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdob3VzZS1rZWVwaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdob3VzZS1rZWVwaW5nJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5ob3VzZWtlZXBpbmcgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgdmlldy10b2dnbGUgbXMtYXV0b1wiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUb2dnbGUgdmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTMgcHktMlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogdmlld01vZGUgPT09ICdncmlkJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0Vmlld01vZGUoJ2dyaWQnKVwiIGFyaWEtbGFiZWw9XCJHcmlkIHZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdncmlkJyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIxMVwiIHk9XCIzXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdncmlkJyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjExXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdncmlkJyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIxMVwiIHk9XCIxMVwiIHdpZHRoPVwiNFwiIGhlaWdodD1cIjRcIiByeD1cIjFcIiBzdHJva2U9XCIjNDc1NDY3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cInZpZXdNb2RlID09PSAnZ3JpZCcgPyAnI0VBRjhGRicgOiAnbm9uZSdcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTMgcHktMlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogdmlld01vZGUgPT09ICdsaXN0J31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0Vmlld01vZGUoJ2xpc3QnKVwiIGFyaWEtbGFiZWw9XCJMaXN0IHZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDIwIDE4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIzXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdsaXN0JyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI4XCIgeT1cIjQuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxLjVcIiByeD1cIjAuNzVcIiBmaWxsPVwiIzQ3NTQ2N1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI4XCIgeT1cIjEyLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMS41XCIgcng9XCIwLjc1XCIgZmlsbD1cIiM0NzU0NjdcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxMVwiIHdpZHRoPVwiNFwiIGhlaWdodD1cIjRcIiByeD1cIjFcIiBzdHJva2U9XCIjNDc1NDY3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cInZpZXdNb2RlID09PSAnbGlzdCcgPyAnI0VBRjhGRicgOiAnbm9uZSdcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWltYWdlRmxvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgPT09ICdmb290ZmFsbCcgJiYgdmlld01vZGUgPT09ICdncmlkJ1wiIGNsYXNzPVwiZC1mbGV4IG10LTIgbWItMiB3LTEwMCBvdmVyZmxvdy14IHB4LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHRleHQtbm93cmFwXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBvYmplY3RzQXJyYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMxIG5hdi1saW5lLXRhYnMgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzZWxlY3RlZFRpbWVzKG9iai50aW1lUmFuZ2UpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRUaW1lID09PSBvYmo/LnRpbWVSYW5nZSA/ICdhY3RpdmUnIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciBteC0zIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvYmo/LnRpbWVSYW5nZX19PHNwYW4gY2xhc3M9XCJteC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGltZSA9PT0gb2JqPy50aW1lUmFuZ2UgPyAnYmFkZ2UtbnVtLXByaW1hcnknIDonYmFkZ2UtbnVtLW11dGVkJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb2JqPy5jb3VudCA/IG9iaj8uY291bnQgOiAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicm93XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW4gXCIgc3R5bGU9XCJtYXJnaW46IDY0cHg7Ym9yZGVyLXJhZGl1czogOHB4O1xuYmFja2dyb3VuZDogdmFyKC0tR3JheS01MCwgI0Y5RkFGQik7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI5NFwiIGhlaWdodD1cIjk0XCIgdmlld0JveD1cIjAgMCA5NCA5NFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBzdHJva2U9XCIjRUFGOEZGXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxMy4zMzMzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zNS4zMzIgNTEuOTk5OUgzMy42NjU0QzMyLjc4MTMgNTEuOTk5OSAzMS45MzM1IDUxLjY0ODcgMzEuMzA4MyA1MS4wMjM2QzMwLjY4MzIgNTAuMzk4NSAzMC4zMzIgNDkuNTUwNiAzMC4zMzIgNDguNjY2NlYzMy42NjY2QzMwLjMzMiAzMi43ODI1IDMwLjY4MzIgMzEuOTM0NyAzMS4zMDgzIDMxLjMwOTZDMzEuOTMzNSAzMC42ODQ0IDMyLjc4MTMgMzAuMzMzMyAzMy42NjU0IDMwLjMzMzNINDguNjY1NEM0OS41NDk0IDMwLjMzMzMgNTAuMzk3MyAzMC42ODQ0IDUxLjAyMjQgMzEuMzA5NkM1MS42NDc1IDMxLjkzNDcgNTEuOTk4NyAzMi43ODI1IDUxLjk5ODcgMzMuNjY2NlYzNS4zMzMzTTQ1LjMzMiA0MS45OTk5SDYwLjMzMkM2Mi4xNzMgNDEuOTk5OSA2My42NjU0IDQzLjQ5MjMgNjMuNjY1NCA0NS4zMzMzVjYwLjMzMzNDNjMuNjY1NCA2Mi4xNzQyIDYyLjE3MyA2My42NjY2IDYwLjMzMiA2My42NjY2SDQ1LjMzMkM0My40OTExIDYzLjY2NjYgNDEuOTk4NyA2Mi4xNzQyIDQxLjk5ODcgNjAuMzMzM1Y0NS4zMzMzQzQxLjk5ODcgNDMuNDkyMyA0My40OTExIDQxLjk5OTkgNDUuMzMyIDQxLjk5OTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGUgbXktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9EYXRhTWVzc2FnZXNbdHlwZT8udG9Mb3dlckNhc2UoKV0gfHwgJ05vIGRhdGEgZm91bmQnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3BsaXQtc2NyZWVuIGxheW91dCAob25seSBzaG93biBhZnRlciBjbGlja2luZyBhbiBpbWFnZSkgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGxpdC1zY3JlZW4tY29udGFpbmVyXCIgKm5nSWY9XCJzcGxpdFNjcmVlbkVuYWJsZWQgJiYgIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMZWZ0IFBhbmVsOiBUaHVtYm5haWwgTGlzdCArIFJlbGF0ZWQgSW1hZ2VzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtcGFuZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2VzIExpc3QgKGhpZGRlbiB3aGVuIGR1cGxpY2F0ZSBpcyBzZWxlY3RlZCkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkUmFkaW9UeXBlICE9PSAnZHVwbGljYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWxpc3Qtc2VjdGlvblwiICpuZ0Zvcj1cImxldCBncm91cCBvZiBsaXN0Vmlld0dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtcmFuZ2UtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXJhbmdlLXRpdGxlXCI+e3sgZ3JvdXA/LnRpbWVSYW5nZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcmFuZ2UtY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIxNDlfMjM0NDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yIDkuMDAwNzdINC43NVY5LjYyNTc3QzQuNzUgOS45OTA0NSA0LjYwNTEzIDEwLjM0MDIgNC4zNDcyNyAxMC41OThDNC4wODk0MSAxMC44NTU5IDMuNzM5NjcgMTEuMDAwOCAzLjM3NSAxMS4wMDA4QzMuMDEwMzMgMTEuMDAwOCAyLjY2MDU5IDEwLjg1NTkgMi40MDI3MyAxMC41OThDMi4xNDQ4NyAxMC4zNDAyIDIgOS45OTA0NSAyIDkuNjI1NzdWOS4wMDA3N1pNNCAzLjA2MDc3QzUgMy4wNjA3NyA1LjUgNC41MDA3NyA1LjUgNS41MDA3N0M1LjUgNi4wMDA3NyA1LjI1IDYuNTAwNzcgNSA3LjI1MDc3TDQuNzUgOC4wMDA3N0gyQzIgNy41MDA3NyAxLjc1IDYuNzUwNzcgMS43NSA1LjUwMDc3QzEuNzUgNC4yNTA3NyAyLjc0OSAzLjA2MDc3IDQgMy4wNjA3N1pNMTAuMDI3IDcuMDQ5NzdMOS45MTg1IDcuNjY1MjdDOS44NTExNyA4LjAyMDU4IDkuNjQ2NTYgOC4zMzUwNyA5LjM0OTAxIDguNTQwNkM5LjA1MTQ2IDguNzQ2MTMgOC42ODQ5MiA4LjgyNjE2IDguMzI4NzggOC43NjMzN0M3Ljk3MjYzIDguNzAwNTcgNy42NTU1NyA4LjQ5OTk5IDcuNDQ2MjYgOC4yMDUwOUM3LjIzNjk1IDcuOTEwMTggNy4xNTIyNSA3LjU0NDY5IDcuMjEwNSA3LjE4Nzc3TDcuMzE4NSA2LjU3Mjc3TDEwLjAyNyA3LjA0OTc3Wk05LjA4OSAwLjg1MzI3MkMxMC4zMjEgMS4wNzAyNyAxMS4wOTggMi40MTU3NyAxMC44ODEgMy42NDY3N0MxMC42NjQgNC44Nzc3NyAxMC4yODc1IDUuNTcyNzcgMTAuMjAxIDYuMDY1MjdMNy40OTI1IDUuNTg3NzdMNy4zNzY1IDQuODA1NzdDNy4yNjA1IDQuMDIzNzcgNy4xMDE1IDMuNDg3NzcgNy4xODggMi45OTU3N0M3LjM2MTUgMi4wMTA3NyA4LjEwNCAwLjY3OTc3MiA5LjA4OSAwLjg1MzI3MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMTQ5XzIzNDQwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+e3sgZ3JvdXA/LmRhdGE/Lmxlbmd0aCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWl0ZW1cIiAqbmdGb3I9XCJsZXQgb2JqIG9mIGdyb3VwPy5kYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IHNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZCA9PT0gb2JqPy50ZW1wbGR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEltYWdlRm9yU3BsaXRWaWV3KG9iailcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInRodW1ibmFpbC1pbWFnZVwiIFtzcmNdPVwiaW1hZ2VVcmwgKyBvYmo/LmZpbGVQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvYmouZmlsZVBhdGggPSBudWxsXCIgYWx0PVwiXCIgKm5nSWY9XCJvYmo/LmZpbGVQYXRoXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmo/LmZpbGVQYXRoXCIgY2xhc3M9XCJuby1wcmV2aWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMjBweDsgcGFkZGluZzogMjBweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6ICM2NjcwODU7IGZvbnQtc2l6ZTogMTFweDtcIj5ObyBwcmV2aWV3PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFuZ28taWRcIj5UYW5nbyBJRDoge3sgb2JqPy50ZW1wbGQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeS10aW1lXCI+RW50cnkgVGltZToge3sgb2JqPy5lbnRyeVRtZSB8fCBvYmo/LmVudHJ5VGltZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGxlZnQgcGFuZWwgaW1hZ2UgbG9nbyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwib2JqPy5pc1BhcmVudFwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNTY4XzEwMzY1NylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMDgzOTggNi4yNTAwMUgxLjY2NzMyQzEuNDQ2MyA2LjI1MDAxIDEuMjM0MzQgNi4xNjIyMSAxLjA3ODA2IDYuMDA1OTNDMC45MjE3ODIgNS44NDk2NSAwLjgzMzk4NCA1LjYzNzY5IDAuODMzOTg0IDUuNDE2NjhWMS42NjY2OEMwLjgzMzk4NCAxLjQ0NTY2IDAuOTIxNzgyIDEuMjMzNyAxLjA3ODA2IDEuMDc3NDJDMS4yMzQzNCAwLjkyMTE0MSAxLjQ0NjMgMC44MzMzNDQgMS42NjczMiAwLjgzMzM0NEg1LjQxNzMyQzUuNjM4MzMgMC44MzMzNDQgNS44NTAyOSAwLjkyMTE0MSA2LjAwNjU3IDEuMDc3NDJDNi4xNjI4NSAxLjIzMzcgNi4yNTA2NSAxLjQ0NTY2IDYuMjUwNjUgMS42NjY2OFYyLjA4MzM0TTQuNTgzOTggMy43NTAwMUg4LjMzMzk4QzguNzk0MjIgMy43NTAwMSA5LjE2NzMyIDQuMTIzMTEgOS4xNjczMiA0LjU4MzM0VjguMzMzMzRDOS4xNjczMiA4Ljc5MzU4IDguNzk0MjIgOS4xNjY2OCA4LjMzMzk4IDkuMTY2NjhINC41ODM5OEM0LjEyMzc1IDkuMTY2NjggMy43NTA2NSA4Ljc5MzU4IDMuNzUwNjUgOC4zMzMzNFY0LjU4MzM0QzMuNzUwNjUgNC4xMjMxMSA0LjEyMzc1IDMuNzUwMDEgNC41ODM5OCAzLjc1MDAxWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF81NjhfMTAzNjU3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhb2JqPy5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nanVuaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMyA2SDVNNSA2SDIxTTUgNlYyMEM1IDIwLjUzMDQgNS4yMTA3MSAyMS4wMzkxIDUuNTg1NzkgMjEuNDE0MkM1Ljk2MDg2IDIxLjc4OTMgNi40Njk1NyAyMiA3IDIySDE3QzE3LjUzMDQgMjIgMTguMDM5MSAyMS43ODkzIDE4LjQxNDIgMjEuNDE0MkMxOC43ODkzIDIxLjAzOTEgMTkgMjAuNTMwNCAxOSAyMFY2SDVaTTggNlY0QzggMy40Njk1NyA4LjIxMDcxIDIuOTYwODYgOC41ODU3OSAyLjU4NTc5QzguOTYwODYgMi4yMTA3MSA5LjQ2OTU3IDIgMTAgMkgxNEMxNC41MzA0IDIgMTUuMDM5MSAyLjIxMDcxIDE1LjQxNDIgMi41ODU3OUMxNS43ODkzIDIuOTYwODYgMTYgMy40Njk1NyAxNiA0VjZNMTAgMTFWMTdNMTQgMTFWMTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZWxhdGVkIEltYWdlcyBTZWN0aW9uIChPTkxZIHNob3duIHdoZW4gZHVwbGljYXRlIGlzIHNlbGVjdGVkKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWxpc3Qtc2VjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHJlbWFpbmluZ0ltYWdlc0dyb3VwcyAmJiByZW1haW5pbmdJbWFnZXNHcm91cHMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0aW1lLXJhbmdlLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXJhbmdlLXRpdGxlXCI+U2VsZWN0IHJlbGF0ZWQgaW1hZ2VzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtbGlzdC1zZWN0aW9uXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHJlbWFpbmluZ0ltYWdlc0dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtcmFuZ2UtaGVhZGVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxNnB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1yYW5nZS10aXRsZVwiPnt7IGdyb3VwPy50aW1lUmFuZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXJhbmdlLWNvdW50XCI+I3t7IGdyb3VwPy5kYXRhPy5sZW5ndGggfHwgMCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbC1ncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbC1pdGVtXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBncm91cD8uZGF0YVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBvYmouc2VsZWN0ZWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiIXJldm9wc1R5cGVWYWx1ZSAmJiBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIiB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm9iai5zZWxlY3RlZFwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgYWJzb2x1dGUgZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDVweDsgcmlnaHQ6IDVweDsgei1pbmRleDogMjtcIiAoY2hhbmdlKT1cIm9uSW1hZ2VDaGVja2JveENoYW5nZSgkZXZlbnQsIG9iaiwgJ2R1cGxpY2F0ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW2Rpc2FibGVkXT1cIm9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInRodW1ibmFpbC1pbWFnZSBjdXJzb3ItcG9pbnRlclwiIFtzcmNdPVwiaW1hZ2VVcmwgKyBvYmo/LmZpbGVQYXRoXCIgKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiICpuZ0lmPVwib2JqPy5maWxlUGF0aFwiIChjbGljayk9XCJoYW5kbGVJbWFnZUNsaWNrKCRldmVudCwgb2JqKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXcgY3Vyc29yLXBvaW50ZXJcIiBzdHlsZT1cImhlaWdodDogMTIwcHg7IHBhZGRpbmc6IDIwcHg7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlSW1hZ2VDbGljaygkZXZlbnQsIG9iailcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiAjNjY3MDg1OyBmb250LXNpemU6IDExcHg7XCI+Tm8gcHJldmlldzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhbmdvLWlkXCI+VGFuZ28gSUQ6IHt7IG9iaj8udGVtcGxkIHx8IG9iaj8udGVtcElkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5LXRpbWVcIj5FbnRyeSBUaW1lOiB7eyBvYmo/LmVudHJ5VG1lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaj8uZW50cnlUaW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJvYmo/LmlzUGFyZW50XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4Mzk4IDYuMjUwMDFIMS42NjczMkMxLjQ0NjMgNi4yNTAwMSAxLjIzNDM0IDYuMTYyMjEgMS4wNzgwNiA2LjAwNTkzQzAuOTIxNzgyIDUuODQ5NjUgMC44MzM5ODQgNS42Mzc2OSAwLjgzMzk4NCA1LjQxNjY4VjEuNjY2NjhDMC44MzM5ODQgMS40NDU2NiAwLjkyMTc4MiAxLjIzMzcgMS4wNzgwNiAxLjA3NzQyQzEuMjM0MzQgMC45MjExNDEgMS40NDYzIDAuODMzMzQ0IDEuNjY3MzIgMC44MzMzNDRINS40MTczMkM1LjYzODMzIDAuODMzMzQ0IDUuODUwMjkgMC45MjExNDEgNi4wMDY1NyAxLjA3NzQyQzYuMTYyODUgMS4yMzM3IDYuMjUwNjUgMS40NDU2NiA2LjI1MDY1IDEuNjY2NjhWMi4wODMzNE00LjU4Mzk4IDMuNzUwMDFIOC4zMzM5OEM4Ljc5NDIyIDMuNzUwMDEgOS4xNjczMiA0LjEyMzExIDkuMTY3MzIgNC41ODMzNFY4LjMzMzM0QzkuMTY3MzIgOC43OTM1OCA4Ljc5NDIyIDkuMTY2NjggOC4zMzM5OCA5LjE2NjY4SDQuNTgzOThDNC4xMjM3NSA5LjE2NjY4IDMuNzUwNjUgOC43OTM1OCAzLjc1MDY1IDguMzMzMzRWNC41ODMzNEMzLjc1MDY1IDQuMTIzMTEgNC4xMjM3NSAzLjc1MDAxIDQuNTgzOTggMy43NTAwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF81NjhfMTAzNjU3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFvYmo/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSaWdodCBQYW5lbDogU2VsZWN0ZWQgSW1hZ2UgRGV0YWlscyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1wYW5lbFwiICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWFnZURldGFpbFZpZXc7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBzZWxlY3RJbWFnZUFycmF5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXBhbmVsXCIgKm5nSWY9XCIhc2VsZWN0SW1hZ2VBcnJheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgY29sb3I6IHZhcigtLUdyYXktNTAwLCAjNjY3MDg1KTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDUwMDtcIj5TZWxlY3QgYW4gaW1hZ2UgdG8gdmlldyBkZXRhaWxzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gSW1hZ2UgRGV0YWlsIFZpZXcgVGVtcGxhdGUgZm9yIFNwbGl0LVNjcmVlbiBSaWdodCBQYW5lbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbWFnZURldGFpbFZpZXcgbGV0LW9iaj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItZ3JheSBwLTMgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYzFcIiBbc3JjXT1cImltYWdlVXJsICsgb2JqPy5maWxlUGF0aFwiIGFsdD1cIlwiICpuZ0lmPVwib2JqPy5maWxlUGF0aFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gWm9vbSBJY29uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiem9vbS1pY29uLWJ1dHRvblwiIChjbGljayk9XCJvcGVuSW1hZ2Vab29tTW9kYWwoaW1hZ2VVcmwsIG9iailcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC4zMzMzIDE4LjMzMzNMMTUgMTVNMTYuNjY2NyA5LjE2NjY3QzE2LjY2NjcgMTMuMzA2NyAxMy4zMDY3IDE2LjY2NjcgOS4xNjY2NyAxNi42NjY3QzUuMDI2NjcgMTYuNjY2NyAxLjY2NjY3IDEzLjMwNjcgMS42NjY2NyA5LjE2NjY3QzEuNjY2NjcgNS4wMjY2NyA1LjAyNjY3IDEuNjY2NjcgOS4xNjY2NyAxLjY2NjY3QzEzLjMwNjcgMS42NjY2NyAxNi42NjY3IDUuMDI2NjcgMTYuNjY2NyA5LjE2NjY3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuMTY2NjcgNi42NjY2N1YxMS42NjY3TTYuNjY2NjcgOS4xNjY2N0gxMS42NjY3XCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXdcIiBzdHlsZT1cImhlaWdodDogMzc1cHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjMgMjBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDE2LjMyMjlINS4yNkM1LjYzMjczIDE2LjMyNTUgNS45OTg3NyAxNi4yMjM5IDYuMzE2ODIgMTYuMDI5NUM2LjYzNDg3IDE1LjgzNTIgNi44OTIyOCAxNS41NTU4IDcuMDYgMTUuMjIyOUw4LjUgMTIuMzIyOU0xLjUgMTguMzIyOVYxNC4zMjI5TTE3LjUgNi44MjI5MUwxMy41IDE0LjgyMjlMMy4xMSA5LjYyMjkxQzIuNDIwMzMgOS4yNzU1MyAxLjg5NjM1IDguNjY5MSAxLjY1MjcyIDcuOTM2MzJDMS40MDkwOSA3LjIwMzU0IDEuNDY1NjQgNi40MDQxIDEuODEgNS43MTI5MUwzLjE5IDIuOTIyOTFDMy4zNjIgMi41ODAxNCAzLjU5OTg0IDIuMjc0NiAzLjg4OTk0IDIuMDIzNzVDNC4xODAwMyAxLjc3MjkgNC41MTY3IDEuNTgxNjUgNC44ODA3MiAxLjQ2MDkzQzUuMjQ0NzQgMS4zNDAyMSA1LjYyODk3IDEuMjkyMzkgNi4wMTE0NyAxLjMyMDE4QzYuMzkzOTggMS4zNDc5NyA2Ljc2NzI2IDEuNDUwODQgNy4xMSAxLjYyMjkxTDE3LjUgNi44MjI5MVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlciBtYi01IHRleHQtY2VudGVyXCI+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01IHRleHQtY2VudGVyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1vbWVudC48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yIG10LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7b2JqPy50ZW1wbGR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5zdGF0dXMgPT09J2FwcHJvdmVkJ1wiIGNsYXNzPVwibXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7IGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRDFGQURGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5zdGF0dXMgPT09J3JlamVjdGVkJ1wiIGNsYXNzPVwibXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7IGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTMgMTNcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRTRFMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjA5OTYxIDVMNS4wOTk2MSA4TTUuMDk5NjEgNUw4LjA5OTYxIDhNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7b2JqPy5lbnRyeVRtZSB8fCBvYmo/LmVudHJ5VGltZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIm9iaj8uaXNQYXJlbnRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNTY4XzEwMzY1NylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4Mzk4IDYuMjUwMDFIMS42NjczMkMxLjQ0NjMgNi4yNTAwMSAxLjIzNDM0IDYuMTYyMjEgMS4wNzgwNiA2LjAwNTkzQzAuOTIxNzgyIDUuODQ5NjUgMC44MzM5ODQgNS42Mzc2OSAwLjgzMzk4NCA1LjQxNjY4VjEuNjY2NjhDMC44MzM5ODQgMS40NDU2NiAwLjkyMTc4MiAxLjIzMzcgMS4wNzgwNiAxLjA3NzQyQzEuMjM0MzQgMC45MjExNDEgMS40NDYzIDAuODMzMzQ0IDEuNjY3MzIgMC44MzMzNDRINS40MTczMkM1LjYzODMzIDAuODMzMzQ0IDUuODUwMjkgMC45MjExNDEgNi4wMDY1NyAxLjA3NzQyQzYuMTYyODUgMS4yMzM3IDYuMjUwNjUgMS40NDU2NiA2LjI1MDY1IDEuNjY2NjhWMi4wODMzNE00LjU4Mzk4IDMuNzUwMDFIOC4zMzM5OEM4Ljc5NDIyIDMuNzUwMDEgOS4xNjczMiA0LjEyMzExIDkuMTY3MzIgNC41ODMzNFY4LjMzMzM0QzkuMTY3MzIgOC43OTM1OCA4Ljc5NDIyIDkuMTY2NjggOC4zMzM5OCA5LjE2NjY4SDQuNTgzOThDNC4xMjM3NSA5LjE2NjY4IDMuNzUwNjUgOC43OTM1OCAzLjc1MDY1IDguMzMzMzRWNC41ODMzNEMzLjc1MDY1IDQuMTIzMTEgNC4xMjM3NSAzLjc1MDAxIDQuNTgzOTggMy43NTAwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhb2JqPy5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nanVuaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMyA2SDVNNSA2SDIxTTUgNlYyMEM1IDIwLjUzMDQgNS4yMTA3MSAyMS4wMzkxIDUuNTg1NzkgMjEuNDE0MkM1Ljk2MDg2IDIxLjc4OTMgNi40Njk1NyAyMiA3IDIySDE3QzE3LjUzMDQgMjIgMTguMDM5MSAyMS43ODkzIDE4LjQxNDIgMjEuNDE0MkMxOC43ODkzIDIxLjAzOTEgMTkgMjAuNTMwNCAxOSAyMFY2SDVaTTggNlY0QzggMy40Njk1NyA4LjIxMDcxIDIuOTYwODYgOC41ODU3OSAyLjU4NTc5QzguOTYwODYgMi4yMTA3MSA5LjQ2OTU3IDIgMTAgMkgxNEMxNC41MzA0IDIgMTUuMDM5MSAyLjIxMDcxIDE1LjQxNDIgMi41ODU3OUMxNS43ODkzIDIuOTYwODYgMTYgMy40Njk1NyAxNiA0VjZNMTAgMTFWMTdNMTQgMTFWMTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItZ3JheSBwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHRpdGxlLXR5cGVcIj5TZWxlY3Qgbm9uLXNob3BwZXIgdHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdGV4dC1lbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB1c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09J2p1bmsnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCIgY2xhc3M9XCJtYi0zIHRleHQtZW5kIGQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDbGVhciBUYWcgQnV0dG9uICh2aXNpYmxlIHdoZW4gRWRpdCBidXR0b24gT1IgU2F2ZS9DYW5jZWwgYnV0dG9ucyBhcmUgdmlzaWJsZSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWUgfHwgKHJldm9wc1R5cGVWYWx1ZSAmJiBlZGl0QnRuU2hvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fCAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPT09IDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNsZWFyLXRhZyBkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclZhbHVlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0OVwiIGhlaWdodD1cIjQ5XCIgdmlld0JveD1cIjAgMCA0OSA0OVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzUxNl85Njg0MSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuMTY3OTdcIiB5PVwiMS4wODQ0N1wiIHdpZHRoPVwiNDQuMDM0MlwiIGhlaWdodD1cIjQ0LjAyODRcIiByeD1cIjguNjc0NDVcIiBmaWxsPVwiI0ZFRjNGMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjcxMDEyXCIgeT1cIjEuNjI2NjNcIiB3aWR0aD1cIjQyLjk0OTlcIiBoZWlnaHQ9XCI0Mi45NDQxXCIgcng9XCI4LjEzMjI5XCIgc3Ryb2tlPVwiI0ZFRjNGMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjA4NDMxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMzMuNDg5MyAyMS4zNjEzTDMzLjQ5MTIgMjEuMzY0M0MzNC4wNTMzIDIxLjkyOTcgMzQuMzY5IDIyLjY5NDkgMzQuMzY5MSAyMy40OTIyQzM0LjM2OTEgMjQuMjg5NSAzNC4wNTMzIDI1LjA1NDYgMzMuNDkxMiAyNS42MjAxTDI2LjcyNTYgMzIuMzg1N0MyNi40NDU0IDMyLjY2NjEgMjYuMTEyMiAzMi44ODgyIDI1Ljc0NjEgMzMuMDRDMjUuMzc5OCAzMy4xOTE5IDI0Ljk4NzMgMzMuMjcwNSAyNC41OTA4IDMzLjI3MDVDMjQuMTk0MiAzMy4yNzA1IDIzLjgwMSAzMy4xOTE5IDIzLjQzNDYgMzMuMDRDMjMuMDY4NiAzMi44ODgzIDIyLjczNjEgMzIuNjY1OSAyMi40NTYxIDMyLjM4NTdMMjAuNzY3NiAzMC42OTkyTDIyLjM2ODIgMjkuMDk4NkwyNC4wNTU3IDMwLjc4NDJMMjQuMDU2NiAzMC43ODUyQzI0LjEyNjcgMzAuODU1MyAyNC4yMTAyIDMwLjkxMTIgMjQuMzAxOCAzMC45NDkyQzI0LjM5MzMgMzAuOTg3MiAyNC40OTE3IDMxLjAwNjggMjQuNTkwOCAzMS4wMDY4QzI0LjY4OTkgMzEuMDA2OCAyNC43ODgzIDMwLjk4NzIgMjQuODc5OSAzMC45NDkyQzI0Ljk3MTMgMzAuOTExMyAyNS4wNTQxIDMwLjg1NTIgMjUuMTI0IDMwLjc4NTJIMjUuMTI1TDMxLjg4NzcgMjQuMDIxNUMzMi4wMjY3IDIzLjg4MDQgMzIuMTA1NSAyMy42OTAzIDMyLjEwNTUgMjMuNDkyMkMzMi4xMDU0IDIzLjI5NDEgMzIuMDI2NyAyMy4xMDM5IDMxLjg4NzcgMjIuOTYyOUwzMC4xOTYzIDIxLjI3MTVMMzEuNzk3OSAxOS42Njk5TDMzLjQ4OTMgMjEuMzYxM1pNMjQuNjk4MiAxMi45MzM2QzI0Ljk1NzEgMTIuOTU5NCAyNS4yMDExIDEzLjA3MzMgMjUuMzg2NyAxMy4yNTg4TDMwLjE5NzMgMTguMDY5M0wyOC41OTU3IDE5LjY3MDlMMjQuMTE2MiAxNS4xOTE0SDE2LjI4NTJWMjMuMDIyNUwyMC43NjY2IDI3LjQ5OUwxOS4xNjYgMjkuMDk5NkwxNC4zNTM1IDI0LjI5M0MxNC4xNDExIDI0LjA4MDcgMTQuMDIxNSAyMy43OTI1IDE0LjAyMTUgMjMuNDkyMlYxNC4wNTk2QzE0LjAyMTcgMTMuNDM0NiAxNC41MjgzIDEyLjkyNzcgMTUuMTUzMyAxMi45Mjc3SDI0LjU4NTlMMjQuNjk4MiAxMi45MzM2Wk0xOS44Nzg5IDE3LjY0MzZDMjAuNTAzOCAxNy42NDM2IDIxLjAxMDMgMTguMTUwNiAyMS4wMTA3IDE4Ljc3NTRDMjEuMDEwNyAxOS40MDA1IDIwLjUwNCAxOS45MDgyIDE5Ljg3ODkgMTkuOTA4MkgxOS44NjkxQzE5LjI0NDIgMTkuOTA4IDE4LjczNzMgMTkuNDAwNCAxOC43MzczIDE4Ljc3NTRDMTguNzM3OCAxOC4xNTA4IDE5LjI0NDUgMTcuNjQzOCAxOS44NjkxIDE3LjY0MzZIMTkuODc4OVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNCNDIzMThcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMzLjE2OTkgMTQuMDg0NUwxNS4xNjk5IDMyLjA4NDVcIiBzdHJva2U9XCIjQjQyMzE4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF81MTZfOTY4NDFcIiB4PVwiLTAuMDAwNjQzMjUzXCIgeT1cIjAuMDAwMTY2NjU1XCIgd2lkdGg9XCI0OC4zNzI0XCIgaGVpZ2h0PVwiNDguMzY1NVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjEuMDg0MzFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjEuMDg0MzFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNTE2Xzk2ODQxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNTE2Xzk2ODQxXCIgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENhbmNlbCBhbmQgU2F2ZSBCdXR0b25zICh3aGVuICFyZXZvcHNUeXBlVmFsdWUpIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgaWQ9XCJhbGVydC10b2FzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZShzZWxlY3RlZFR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoc2VsZWN0ZWRSYWRpb1R5cGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJycpIHx8IChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcIj5TYXZlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFZGl0IEJ1dHRvbiAod2hlbiByZXZvcHNUeXBlVmFsdWUgJiYgZWRpdEJ0blNob3cpIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXZvcHNUeXBlVmFsdWUgJiYgZWRpdEJ0blNob3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJlZGl0VmFsdWUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjY1NTQgMS43MTA0N0MxNC44OTI3IDEuNDczMTUgMTUuMTc0NSAxLjI4NDkgMTUuNDg0NSAxLjE1NjQ2QzE1Ljc5NDYgMS4wMjgwMiAxNi4xMjY5IDAuOTYxOTE0IDE2LjQ2MjYgMC45NjE5MTRDMTYuNzk4MiAwLjk2MTkxNCAxNy4xMzA1IDEuMDI4MDIgMTcuNDQwNiAxLjE1NjQ2QzE3Ljc1MDcgMS4yODQ5IDE4LjAzMjQgMS40NzMxNSAxOC4yNjk3IDEuNzEwNDdDMTguNTA3MSAxLjk0Nzc5IDE4LjY5NTMgMi4yMjk1MyAxOC44MjM4IDIuNTM5NjFDMTguOTUyMiAyLjg0OTY5IDE5LjAxODMgMy4xODIwMiAxOS4wMTgzIDMuNTE3NjVDMTkuMDE4MyAzLjg1MzI3IDE4Ljk1MjIgNC4xODU2MSAxOC44MjM4IDQuNDk1NjhDMTguNjk1MyA0LjgwNTc2IDE4LjUwNzEgNS4wODc1IDE4LjI2OTcgNS4zMjQ4Mkw2LjA3MTMgMTcuNTIzM0wxLjEwMTU2IDE4Ljg3ODZMMi40NTY5NSAxMy45MDg5TDE0LjY1NTQgMS43MTA0N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuODEwNzlcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+RWRpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImR1cGxpY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImR1cGxpY2F0ZS1zcGxpdFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidkdXBsaWNhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZHVwbGljYXRlLXNwbGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj5EdXBsaWNhdGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJlbXBsb3llZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVtcGxveWVlLXNwbGl0XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2VtcGxveWVlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImVtcGxveWVlLXNwbGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkVtcGxveWVlL1N0YWZmPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiaG91c2Uta2VlcGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImhvdXNlLWtlZXBpbmctc3BsaXRcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInaG91c2Uta2VlcGluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJob3VzZS1rZWVwaW5nLXNwbGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkhvdXNlIEtlZXBpbmc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJqdW5rXCIgaWQ9XCJqdW5rLXNwbGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidqdW5rJ1wiIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1c2Vycz8ucm9sZSA9PT0ndXNlcicgJiYgdXNlcnM/LnVzZXJUeXBlID09PSdjbGllbnQnIHx8IHJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwianVuay1zcGxpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkp1bms8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlJlbWFya3MgKE9wdGlvbmFsKTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbFwiIHJvd3M9XCIzXCIgcGxhY2Vob2xkZXI9XCJDb21tZW50IGhlcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ1c2VyQ29tbWVudFwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIEdyaWQvTGlzdCBWaWV3IChzaG93biB3aGVuIHNwbGl0LXNjcmVlbiBpcyBub3QgZW5hYmxlZCkgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMCBpbWctdHJhZmZpYyBjb250YWluIGhpZ2gtNDAwcHggc2Nyb2xsLXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3TW9kZSA9PT0gJ2dyaWQnICYmICFub0RhdGEgJiYgIWxvYWRpbmcgJiYgIXNwbGl0U2NyZWVuRW5hYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb2JqIG9mIGltYWdlc0FycmF5RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWFnZUNhcmQ7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBvYmogfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LXZpZXctd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZpZXdNb2RlID09PSAnbGlzdCcgJiYgIW5vRGF0YSAmJiAhbG9hZGluZyAmJiAhc3BsaXRTY3JlZW5FbmFibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cCBtYi01XCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGxpc3RWaWV3R3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXAtaGVhZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtdGl0bGVcIj57eyBncm91cD8udGltZVJhbmdlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtY291bnQgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBtcy0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIxNDlfMjM0NDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIgOS4wMDA3N0g0Ljc1VjkuNjI1NzdDNC43NSA5Ljk5MDQ1IDQuNjA1MTMgMTAuMzQwMiA0LjM0NzI3IDEwLjU5OEM0LjA4OTQxIDEwLjg1NTkgMy43Mzk2NyAxMS4wMDA4IDMuMzc1IDExLjAwMDhDMy4wMTAzMyAxMS4wMDA4IDIuNjYwNTkgMTAuODU1OSAyLjQwMjczIDEwLjU5OEMyLjE0NDg3IDEwLjM0MDIgMiA5Ljk5MDQ1IDIgOS42MjU3N1Y5LjAwMDc3Wk00IDMuMDYwNzdDNSAzLjA2MDc3IDUuNSA0LjUwMDc3IDUuNSA1LjUwMDc3QzUuNSA2LjAwMDc3IDUuMjUgNi41MDA3NyA1IDcuMjUwNzdMNC43NSA4LjAwMDc3SDJDMiA3LjUwMDc3IDEuNzUgNi43NTA3NyAxLjc1IDUuNTAwNzdDMS43NSA0LjI1MDc3IDIuNzQ5IDMuMDYwNzcgNCAzLjA2MDc3Wk0xMC4wMjcgNy4wNDk3N0w5LjkxODUgNy42NjUyN0M5Ljg1MTE3IDguMDIwNTggOS42NDY1NiA4LjMzNTA3IDkuMzQ5MDEgOC41NDA2QzkuMDUxNDYgOC43NDYxMyA4LjY4NDkyIDguODI2MTYgOC4zMjg3OCA4Ljc2MzM3QzcuOTcyNjMgOC43MDA1NyA3LjY1NTU3IDguNDk5OTkgNy40NDYyNiA4LjIwNTA5QzcuMjM2OTUgNy45MTAxOCA3LjE1MjI1IDcuNTQ0NjkgNy4yMTA1IDcuMTg3NzdMNy4zMTg1IDYuNTcyNzdMMTAuMDI3IDcuMDQ5NzdaTTkuMDg5IDAuODUzMjcyQzEwLjMyMSAxLjA3MDI3IDExLjA5OCAyLjQxNTc3IDEwLjg4MSAzLjY0Njc3QzEwLjY2NCA0Ljg3Nzc3IDEwLjI4NzUgNS41NzI3NyAxMC4yMDEgNi4wNjUyN0w3LjQ5MjUgNS41ODc3N0w3LjM3NjUgNC44MDU3N0M3LjI2MDUgNC4wMjM3NyA3LjEwMTUgMy40ODc3NyA3LjE4OCAyLjk5NTc3QzcuMzYxNSAyLjAxMDc3IDguMTA0IDAuNjc5NzcyIDkuMDg5IDAuODUzMjcyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMTQ5XzIzNDQwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPnt7IGdyb3VwPy5kYXRhPy5sZW5ndGggfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBneC00IGxpc3QtZ3JvdXAtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9iaiBvZiBncm91cD8uZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW1hZ2VDYXJkOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb2JqIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbWFnZUNhcmQgbGV0LW9iaj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlICE9PSAnZHVwbGljYXRlJyB8fCAodHlwZSA9PT0gJ2R1cGxpY2F0ZScmJiBvYmoucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgb2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTMgYm9yZGVyLWdyYXkgbXgtMiBwLTIgbXQtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29uZGl0aW9uOiBPbmx5IHNob3cgaWYgbm90IGR1cGxpY2F0ZSBPUiBkdXBsaWNhdGUgd2l0aCBub24tZW1wdHkgZHVwbGljYXRlSW1hZ2VQYXRoIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIGN1cnNvci1wb2ludGVyXCIgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIiAoZXJyb3IpPVwib2JqLmZpbGVQYXRoID0gbnVsbFwiIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SW1hZ2VGb3JTcGxpdFZpZXcob2JqKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMyAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIiBkPVwiTTYuNSA2LjMyMjI3SDYuNTFNMTYuMjUgOS4zMjIyN0gyMS41TDE4IDE2LjMyMjNMMTQuOTEgMTIuMDAyM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjUgMTYuMzIyOUg1LjI2QzUuNjMyNzMgMTYuMzI1NSA1Ljk5ODc3IDE2LjIyMzkgNi4zMTY4MiAxNi4wMjk1QzYuNjM0ODcgMTUuODM1MiA2Ljg5MjI4IDE1LjU1NTggNy4wNiAxNS4yMjI5TDguNSAxMi4zMjI5TTEuNSAxOC4zMjI5VjE0LjMyMjlNMTcuNSA2LjgyMjkxTDEzLjUgMTQuODIyOUwzLjExIDkuNjIyOTFDMi40MjAzMyA5LjI3NTUzIDEuODk2MzUgOC42NjkxIDEuNjUyNzIgNy45MzYzMkMxLjQwOTA5IDcuMjAzNTQgMS40NjU2NCA2LjQwNDEgMS44MSA1LjcxMjkxTDMuMTkgMi45MjI5MUMzLjM2MiAyLjU4MDE0IDMuNTk5ODQgMi4yNzQ2IDMuODg5OTQgMi4wMjM3NUM0LjE4MDAzIDEuNzcyOSA0LjUxNjcgMS41ODE2NSA0Ljg4MDcyIDEuNDYwOTNDNS4yNDQ3NCAxLjM0MDIxIDUuNjI4OTcgMS4yOTIzOSA2LjAxMTQ3IDEuMzIwMThDNi4zOTM5OCAxLjM0Nzk3IDYuNzY3MjYgMS40NTA4NCA3LjExIDEuNjIyOTFMMTcuNSA2LjgyMjkxWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyIG1iLTUgdGV4dC1jZW50ZXJcIj5QcmV2aWV3IG5vdCBhdmFpbGFibGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JpcHRpb24gbWItNSB0ZXh0LWNlbnRlclwiPlRoZSBzZWxlY3RlZCBjYW1lcmEgaXMgbm90IGF2YWlsYWJsZSBhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb21lbnQuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlICE9PSAnZHVwbGljYXRlJyB8fCAodHlwZSA9PT0gJ2R1cGxpY2F0ZScmJiBvYmoucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgb2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdyBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7b2JqPy50ZW1wbGR9fSA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIih0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMiBiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCI+e3tvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGh9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uc3RhdHVzID09PSdhcHByb3ZlZCdcIiBjbGFzcz1cIm1zLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0QxRkFERlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjEyMjIgMy41NzkxOUw0LjEzODg3IDYuNDU4MzZMMy4zNDcyIDUuNjEyNTNDMy4yMDEzNyA1LjQ3NTAzIDIuOTcyMiA1LjQ2NjY5IDIuODA1NTMgNS41ODMzNkMyLjY0MzAzIDUuNzA0MTkgMi41OTcyIDUuOTE2NjkgMi42OTcyIDYuMDg3NTNMMy42MzQ3IDcuNjEyNTNDMy43MjYzNyA3Ljc1NDE5IDMuODg0NyA3Ljg0MTY5IDQuMDYzODcgNy44NDE2OUM0LjIzNDcgNy44NDE2OSA0LjM5NzIgNy43NTQxOSA0LjQ4ODg3IDcuNjEyNTNDNC42Mzg4NyA3LjQxNjY5IDcuNTAxMzcgNC4wMDQxOSA3LjUwMTM3IDQuMDA0MTlDNy44NzYzNyAzLjYyMDg2IDcuNDIyMiAzLjI4MzM2IDcuMTIyMiAzLjU3NTAzVjMuNTc5MTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzEyQjc2QVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uc3RhdHVzID09PSdyZWplY3RlZCdcIiBjbGFzcz1cIm1zLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQyOF81OTQ4NClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRUU0RTJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDI4XzU5NDg0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7b2JqPy5lbnRyeVRtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIm9iaj8uaXNQYXJlbnRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNTY4XzEwMzY1NylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4Mzk4IDYuMjUwMDFIMS42NjczMkMxLjQ0NjMgNi4yNTAwMSAxLjIzNDM0IDYuMTYyMjEgMS4wNzgwNiA2LjAwNTkzQzAuOTIxNzgyIDUuODQ5NjUgMC44MzM5ODQgNS42Mzc2OSAwLjgzMzk4NCA1LjQxNjY4VjEuNjY2NjhDMC44MzM5ODQgMS40NDU2NiAwLjkyMTc4MiAxLjIzMzcgMS4wNzgwNiAxLjA3NzQyQzEuMjM0MzQgMC45MjExNDEgMS40NDYzIDAuODMzMzQ0IDEuNjY3MzIgMC44MzMzNDRINS40MTczMkM1LjYzODMzIDAuODMzMzQ0IDUuODUwMjkgMC45MjExNDEgNi4wMDY1NyAxLjA3NzQyQzYuMTYyODUgMS4yMzM3IDYuMjUwNjUgMS40NDU2NiA2LjI1MDY1IDEuNjY2NjhWMi4wODMzNE00LjU4Mzk4IDMuNzUwMDFIOC4zMzM5OEM4Ljc5NDIyIDMuNzUwMDEgOS4xNjczMiA0LjEyMzExIDkuMTY3MzIgNC41ODMzNFY4LjMzMzM0QzkuMTY3MzIgOC43OTM1OCA4Ljc5NDIyIDkuMTY2NjggOC4zMzM5OCA5LjE2NjY4SDQuNTgzOThDNC4xMjM3NSA5LjE2NjY4IDMuNzUwNjUgOC43OTM1OCAzLjc1MDY1IDguMzMzMzRWNC41ODMzNEMzLjc1MDY1IDQuMTIzMTEgNC4xMjM3NSAzLjc1MDAxIDQuNTgzOTggMy43NTAwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhb2JqPy5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2p1bmsnXCI+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgPCEtLSBmdWxsIGltYWdlIFZpZXcgLS0+XG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cImltYWdlRmxvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUaWNrZXQgQmxvY2sgQWxlcnQgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpPy5yYWlzZWRTdGF0dXNFbmFibGVkID09PSAnYmxvY2snXCIgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMlwiIGZpbGw9XCIjRjA0NDM4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDhWMTNcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTZcIiByPVwiMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgcmFpc2UgdGlja2V0IGZvciBuZXh0IHt7IGdldFNlbGVjdGVkRGF0ZUNhcmREYXRhKCk/Lm5vT2ZCbG9ja2VkRGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICcwJyB9fSBkYXlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBsb29rcyBsaWtlIHlvdSBoYXZlIGFjaGlldmVkIDk1JSBhY2N1cmFjeSBmb3IgdGhlIHRocmVlIHRpY2tldHMgcmFpc2VkIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aC4gVGhpcyBsaW1pdHMgeW91IGZyb20gcmFpc2luZyBtb3JlIHRpY2tldHMgdG8gYXZvaWQgcmVkdW5kYW5jeS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1hY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc3RpbGwgd2FudCB0byByYWlzZSB0aWNrZXRzLCA8c3BhbiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlcXVlc3RSZXNldCgpXCI+c2VuZCByZXF1ZXN0PC9zcGFuPiB0byByZXNldC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUaWNrZXQgUmVxdWVzdCBTdWNjZXNzIEFsZXJ0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKT8ucmFpc2VkU3RhdHVzRW5hYmxlZCA9PT0gJ3JlcXVlc3QnXCIgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yIDIxTDIzIDEyTDIgM1YxMEwxNyAxMkwyIDE0VjIxWlwiIGZpbGw9XCIjMTBCOTgxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2V0IFJlcXVlc3QgU2VudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIHJlcXVlc3QgdG8gZW5hYmxlIHRpY2tldCByYWlzaW5nIGhhcyBiZWVuIHN1Ym1pdHRlZC4gWW91J2xsIGJlIG5vdGlmaWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZSBpdCdzIGFwcHJvdmVkLiBQbGVhc2UgZW5zdXJlIGZ1dHVyZSB0aWNrZXQgYWNjdXJhY3kgcmVtYWlucyB3aXRoaW4gdGhlIDk1JVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC0yIG1iLTIgdy0xMDAgb3ZlcmZsb3cteCBweC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGZhbGxUcmVuZHNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpY2tldFN0YXR1c1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXNocmluay0wIG10LTMganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBweC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtYXV0byB0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Z2V0VGlja2V0U3RhdHVzKCl9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFjYW5FbmFibGVCdXR0b24oKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJSYWlzZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYWlzZSB0aWNrZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncm91cCBiZy13aGl0ZSBib3JkZXItMSBidG4tZ3JvdXAgdy1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShjb3VudERhdGE/Lmxlbmd0aCA+IDApXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdmb290ZmFsbCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEZvb3RmYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZm9vdGZhbGwnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZm9vdGZhbGxDb3VudCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ25vbi10YWdnaW5nJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uLXRhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdub24tdGFnZ2luZycgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5ub25UYWdzIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZHVwbGljYXRlJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2R1cGxpY2F0ZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1cGxpY2F0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZHVwbGljYXRlIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnZW1wbG95ZWUnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZS9TdGFmZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2VtcGxveWVlJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmVtcGxveWVlIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2p1bmsnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnanVuaycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdqdW5rJyA/ICdiYWRnZSBiYWRnZS1hY3RpdmUgYWN0aXZlUGxhbkJ0bicgOiAnIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgaW5hY3RpdmVQbGFuQnRuJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5qdW5rIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnaG91c2Uta2VlcGluZycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdob3VzZS1rZWVwaW5nJyA/ICdiYWRnZSBiYWRnZS1hY3RpdmUgYWN0aXZlUGxhbkJ0bicgOiAnIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgaW5hY3RpdmVQbGFuQnRuJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5ob3VzZWtlZXBpbmcgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtMCBib3JkZXItZ3JheSBpbWctdHJhZmZpY1wiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHAtMiAgbWItMiBtdC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNYWluIEltYWdlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbWcgY2xhc3M9XCJpbWctc3JjIGN1cnNvci1wb2ludGVyIGgtNDUwcHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkSW1hZ2VBcnJheShpbWFnZVVybCwgc2VsZWN0SW1hZ2VBcnJheSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoXCIgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXIgaC00NTBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRJbWFnZUFycmF5KGltYWdlVXJsLCBzZWxlY3RJbWFnZUFycmF5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlVXJsICsgc2VsZWN0SW1hZ2VBcnJheT8uZmlsZVBhdGhcIiBhbHQ9XCJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IGFycm93IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tzZWxlY3RJbWFnZUFycmF5Py50ZW1wbGR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjEyMjIgMy41NzkxOUw0LjEzODg3IDYuNDU4MzZMMy4zNDcyIDUuNjEyNTNDMy4yMDEzNyA1LjQ3NTAzIDIuOTcyMiA1LjQ2NjY5IDIuODA1NTMgNS41ODMzNkMyLjY0MzAzIDUuNzA0MTkgMi41OTcyIDUuOTE2NjkgMi42OTcyIDYuMDg3NTNMMy42MzQ3IDcuNjEyNTNDMy43MjYzNyA3Ljc1NDE5IDMuODg0NyA3Ljg0MTY5IDQuMDYzODcgNy44NDE2OUM0LjIzNDcgNy44NDE2OSA0LjM5NzIgNy43NTQxOSA0LjQ4ODg3IDcuNjEyNTNDNC42Mzg4NyA3LjQxNjY5IDcuNTAxMzcgNC4wMDQxOSA3LjUwMTM3IDQuMDA0MTlDNy44NzYzNyAzLjYyMDg2IDcuNDIyMiAzLjI4MzM2IDcuMTIyMiAzLjU3NTAzVjMuNTc5MTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxMkI3NkFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnN0YXR1cyA9PT0ncmVqZWN0ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNTk5NjA5IDAuNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7eyh0ZW1wTW9kYWxJbWFnZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RJbWFnZUFycmF5KT8uZW50cnlUbWUgfHwgKHRlbXBNb2RhbEltYWdlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEltYWdlQXJyYXkpPy5lbnRyeVRpbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5pc1BhcmVudFwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzU2OF8xMDM2NTcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4Mzk4IDYuMjUwMDFIMS42NjczMkMxLjQ0NjMgNi4yNTAwMSAxLjIzNDM0IDYuMTYyMjEgMS4wNzgwNiA2LjAwNTkzQzAuOTIxNzgyIDUuODQ5NjUgMC44MzM5ODQgNS42Mzc2OSAwLjgzMzk4NCA1LjQxNjY4VjEuNjY2NjhDMC44MzM5ODQgMS40NDU2NiAwLjkyMTc4MiAxLjIzMzcgMS4wNzgwNiAxLjA3NzQyQzEuMjM0MzQgMC45MjExNDEgMS40NDYzIDAuODMzMzQ0IDEuNjY3MzIgMC44MzMzNDRINS40MTczMkM1LjYzODMzIDAuODMzMzQ0IDUuODUwMjkgMC45MjExNDEgNi4wMDY1NyAxLjA3NzQyQzYuMTYyODUgMS4yMzM3IDYuMjUwNjUgMS40NDU2NiA2LjI1MDY1IDEuNjY2NjhWMi4wODMzNE00LjU4Mzk4IDMuNzUwMDFIOC4zMzM5OEM4Ljc5NDIyIDMuNzUwMDEgOS4xNjczMiA0LjEyMzExIDkuMTY3MzIgNC41ODMzNFY4LjMzMzM0QzkuMTY3MzIgOC43OTM1OCA4Ljc5NDIyIDkuMTY2NjggOC4zMzM5OCA5LjE2NjY4SDQuNTgzOThDNC4xMjM3NSA5LjE2NjY4IDMuNzUwNjUgOC43OTM1OCAzLjc1MDY1IDguMzMzMzRWNC41ODMzNEMzLjc1MDY1IDQuMTIzMTEgNC4xMjM3NSAzLjc1MDAxIDQuNTgzOTggMy43NTAwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNTY4XzEwMzY1N1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIXNlbGVjdEltYWdlQXJyYXk/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdob3VzZS1rZWVwaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcC0yIG1iLTIgIG10LTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHRpdGxlLXR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Qgbm9uLXNob3BwZXIgdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjb2wtbWQtNiB0ZXh0LWVuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB1c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09J2p1bmsnKVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWVcIiBjbGFzcz1cIm1iLTUgdGV4dC1lbmRcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnb3BlbicpICYmICFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJycpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhclZhbHVlKClcIj5DbGVhcjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgaWQ9XCJhbGVydC10b2FzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJycpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB1c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09J2p1bmsnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdEJ0blNob3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXZvcHNUeXBlVmFsdWVcIiBjbGFzcz1cIm1iLTUgdGV4dC1lbmRcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImVkaXRWYWx1ZSgpXCI+PHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC42NTU0IDEuNzEwNDdDMTQuODkyNyAxLjQ3MzE1IDE1LjE3NDUgMS4yODQ5IDE1LjQ4NDUgMS4xNTY0NkMxNS43OTQ2IDEuMDI4MDIgMTYuMTI2OSAwLjk2MTkxNCAxNi40NjI2IDAuOTYxOTE0QzE2Ljc5ODIgMC45NjE5MTQgMTcuMTMwNSAxLjAyODAyIDE3LjQ0MDYgMS4xNTY0NkMxNy43NTA3IDEuMjg0OSAxOC4wMzI0IDEuNDczMTUgMTguMjY5NyAxLjcxMDQ3QzE4LjUwNzEgMS45NDc3OSAxOC42OTUzIDIuMjI5NTMgMTguODIzOCAyLjUzOTYxQzE4Ljk1MjIgMi44NDk2OSAxOS4wMTgzIDMuMTgyMDIgMTkuMDE4MyAzLjUxNzY1QzE5LjAxODMgMy44NTMyNyAxOC45NTIyIDQuMTg1NjEgMTguODIzOCA0LjQ5NTY4QzE4LjY5NTMgNC44MDU3NiAxOC41MDcxIDUuMDg3NSAxOC4yNjk3IDUuMzI0ODJMNi4wNzEzIDE3LjUyMzNMMS4xMDE1NiAxOC44Nzg2TDIuNDU2OTUgMTMuOTA4OUwxNC42NTU0IDEuNzEwNDdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuODEwNzlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPkVkaXQ8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImR1cGxpY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkdXBsaWNhdGVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInZHVwbGljYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZHVwbGljYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkR1cGxpY2F0ZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJlbXBsb3llZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlbXBsb3llZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidlbXBsb3llZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImVtcGxveWVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj5FbXBsb3llZS9TdGFmZjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJob3VzZS1rZWVwaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImhvdXNlLWtlZXBpbmdcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInaG91c2Uta2VlcGluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImhvdXNlLWtlZXBpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+IEhvdXNlIEtlZXBpbmc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwianVua1wiIGlkPVwianVua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2p1bmsnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB0aGlzLnVzZXJzPy51c2VyVHlwZSA9PT0nY2xpZW50JyB8fCByZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJqdW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj4gSnVuazwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMCBpbWctdHJhZmZpYyBtdC0zIGhpZ2gtNDAwcHggc2Nyb2xsLXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBib3JkZXItZ3JheSBteC0yIHAtMiBtdC01XCIgKm5nRm9yPVwibGV0IG9iaiBvZiByZW1haW5pbmdJbWFnZUFycmF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWUgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnXCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm9iai5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGFic29sdXRlIGZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkltYWdlQ2hlY2tib3hDaGFuZ2UoJGV2ZW50LCBvYmosICdkdXBsaWNhdGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMFwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRSYWRpb1R5cGUgIT09ICdkdXBsaWNhdGUnID8gJ2N1cnNvci1wb2ludGVyJyA6ICdjdXJzb3ItcG9pbnRlcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIiAoZXJyb3IpPVwib2JqLmZpbGVQYXRoID0gbnVsbFwiIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlSW1hZ2VDbGljaygkZXZlbnQsIG9iailcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuNSA2LjMyMjI3SDYuNTFNMTYuMjUgOS4zMjIyN0gyMS41TDE4IDE2LjMyMjNMMTQuOTEgMTIuMDAyM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEuNSAxNi4zMjI5SDUuMjZDNS42MzI3MyAxNi4zMjU1IDUuOTk4NzcgMTYuMjIzOSA2LjMxNjgyIDE2LjAyOTVDNi42MzQ4NyAxNS44MzUyIDYuODkyMjggMTUuNTU1OCA3LjA2IDE1LjIyMjlMOC41IDEyLjMyMjlNMS41IDE4LjMyMjlWMTQuMzIyOU0xNy41IDYuODIyOTFMMTMuNSAxNC44MjI5TDMuMTEgOS42MjI5MUMyLjQyMDMzIDkuMjc1NTMgMS44OTYzNSA4LjY2OTEgMS42NTI3MiA3LjkzNjMyQzEuNDA5MDkgNy4yMDM1NCAxLjQ2NTY0IDYuNDA0MSAxLjgxIDUuNzEyOTFMMy4xOSAyLjkyMjkxQzMuMzYyIDIuNTgwMTQgMy41OTk4NCAyLjI3NDYgMy44ODk5NCAyLjAyMzc1QzQuMTgwMDMgMS43NzI5IDQuNTE2NyAxLjU4MTY1IDQuODgwNzIgMS40NjA5M0M1LjI0NDc0IDEuMzQwMjEgNS42Mjg5NyAxLjI5MjM5IDYuMDExNDcgMS4zMjAxOEM2LjM5Mzk4IDEuMzQ3OTcgNi43NjcyNiAxLjQ1MDg0IDcuMTEgMS42MjI5MUwxNy41IDYuODIyOTFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlciBtYi01IHRleHQtY2VudGVyXCI+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01IHRleHQtY2VudGVyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9tZW50Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7b2JqPy50ZW1wbGQgPyBvYmo/LnRlbXBsZCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaj8udGVtcElkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxMCAxMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRDFGQURGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xMjIyIDMuNTc5MTlMNC4xMzg4NyA2LjQ1ODM2TDMuMzQ3MiA1LjYxMjUzQzMuMjAxMzcgNS40NzUwMyAyLjk3MjIgNS40NjY2OSAyLjgwNTUzIDUuNTgzMzZDMi42NDMwMyA1LjcwNDE5IDIuNTk3MiA1LjkxNjY5IDIuNjk3MiA2LjA4NzUzTDMuNjM0NyA3LjYxMjUzQzMuNzI2MzcgNy43NTQxOSAzLjg4NDcgNy44NDE2OSA0LjA2Mzg3IDcuODQxNjlDNC4yMzQ3IDcuODQxNjkgNC4zOTcyIDcuNzU0MTkgNC40ODg4NyA3LjYxMjUzQzQuNjM4ODcgNy40MTY2OSA3LjUwMTM3IDQuMDA0MTkgNy41MDEzNyA0LjAwNDE5QzcuODc2MzcgMy42MjA4NiA3LjQyMjIgMy4yODMzNiA3LjEyMjIgMy41NzUwM1YzLjU3OTE5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0ncmVqZWN0ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRTRFMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDk5NjEgNUw1LjA5OTYxIDhNNS4wOTk2MSA1TDguMDk5NjEgOE00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDI4XzU5NDg0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tvYmo/LmVudHJ5VG1lID8gb2JqPy5lbnRyeVRtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6b2JqPy5lbnRyeVRpbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIm9iaj8uaXNQYXJlbnRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFvYmo/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2p1bmsnXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG5cbjxuZy10ZW1wbGF0ZSAjem9vbVBvcHVwIGxldC1tb2RlbD5cbiAgICA8ZGl2IGNsYXNzPVwicC00IG0tNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIGJvcmRlci0wIHAtMCB3LTEwMCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cIm15LTNcIj5cblxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwODhfOTgzMzcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjkuMTY5MyAxMy4zMzMzVjE4LjMzMzNNMjkuMTY5MyAxOC4zMzMzSDI0LjE2OTNNMjkuMTY5MyAxOC4zMzMzTDI1LjMwMjYgMTQuN0MyNC40MDcgMTMuODAzOSAyMy4yOTkgMTMuMTQ5MyAyMi4wODE5IDEyLjc5NzNDMjAuODY0OSAxMi40NDUzIDE5LjU3ODUgMTIuNDA3MyAxOC4zNDI4IDEyLjY4NjlDMTcuMTA3MiAxMi45NjY1IDE1Ljk2MjQgMTMuNTU0NSAxNS4wMTU1IDE0LjM5NjJDMTQuMDY4NSAxNS4yMzc4IDEzLjM1MDIgMTYuMzA1NiAxMi45Mjc2IDE3LjVNMTAuODM1OSAyNi42NjY2VjIxLjY2NjZNMTAuODM1OSAyMS42NjY2SDE1LjgzNTlNMTAuODM1OSAyMS42NjY2TDE0LjcwMjYgMjUuM0MxNS41OTgyIDI2LjE5NjEgMTYuNzA2MiAyNi44NTA2IDE3LjkyMzMgMjcuMjAyN0MxOS4xNDAzIDI3LjU1NDcgMjAuNDI2NyAyNy41OTI3IDIxLjY2MjQgMjcuMzEzMUMyMi44OTggMjcuMDMzNSAyNC4wNDI4IDI2LjQ0NTUgMjQuOTg5NyAyNS42MDM4QzI1LjkzNjcgMjQuNzYyMSAyNi42NTUgMjMuNjk0MyAyNy4wNzc2IDIyLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwODhfOTgzMzdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTAgMTApXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyAtLT5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2VtcGxveWVlJ1wiPlRhZ2dpbmcgYXMgZW1wbG95ZWUvc3RhZmYgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZHVwbGljYXRlJ1wiPlRhZ2dpbmcgYXMgZHVwbGljYXRlcyA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdob3VzZS1rZWVwaW5nJ1wiPlRhZ2dpbmcgYXMgaG91c2Uga2VlcGluZyA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIj5DbGVhciBkdXBsaWNhdGVzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSdqdW5rJ1wiPlRhZ2dpbmcgYXMganVuazwvc3Bhbj5cblxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZW1wbG95ZWUnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGVtcGxveWVlL3N0YWZmPzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgZHVwbGljYXRlcz8gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnaG91c2Uta2VlcGluZydcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgaG91c2Uga2VlcGluZz8gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCI+VGhpcyB3aWxsIHJlbW92ZSB0YWdnZWQgZHVwbGljYXRlcyBhbmQgbW92ZSB0aGVtIHRvXG4gICAgICAgICAgICAgICAgICAgICdOb24tdGFnJy48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09J2p1bmsnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGp1bms/PC9zcGFuPlxuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtdC01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsU3VibWl0KClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwb3B1cFR5cGUgIT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXRWYWx1ZShwb3B1cFR5cGUpXCI+XG4gICAgICAgICAgICAgICAgWWVzLCBUYWdcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdFZhbHVlKHBvcHVwVHlwZSlcIj5cbiAgICAgICAgICAgICAgICBZZXMsIGNsZWFyXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG5cbjxuZy10ZW1wbGF0ZSAjcmFpc2VkUG9wdXAgbGV0LW1vZGVsPlxuICAgIDxkaXYgY2xhc3M9XCJwLTQgbS00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgYm9yZGVyLTAgcC0wIHctMTAwIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm15LTNcIj5cblxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMS4yNTEgMTEuMDgwNkMyMS43NDA1IDExLjA2OTkgMjIuMjE1MyAxMS4yNDg3IDIyLjU3NjIgMTEuNTc5NkwyMy40OTIyIDEyLjQyMDRDMjMuODA4OSAxMi43MDk3IDIzLjg5MyAxMy4xMDE3IDIzLjg2NTIgMTMuNDI2M1YxMy40MjcyQzIzLjgzNiAxMy43NDc4IDIzLjY5NTQgMTQuMDU5MiAyMy40Nzg1IDE0LjI5NDRDMjMuMzY5OSAxNC40MTMgMjMuMjg2NSAxNC41NTI1IDIzLjIzMTQgMTQuNzAzNkMyMy4xNzY0IDE0Ljg1NDggMjMuMTUxMiAxNS4wMTU1IDIzLjE1ODIgMTUuMTc2M0MyMy4xNjUyIDE1LjMzNyAyMy4yMDM1IDE1LjQ5NTMgMjMuMjcxNSAxNS42NDExQzIzLjMzOTQgMTUuNzg2OSAyMy40MzYyIDE1LjkxNzIgMjMuNTU0NyAxNi4wMjU5QzIzLjY3MzMgMTYuMTM0NiAyMy44MTE3IDE2LjIxOTggMjMuOTYyOSAxNi4yNzQ5QzI0LjExNDEgMTYuMzMgMjQuMjc0OCAxNi4zNTQxIDI0LjQzNTUgMTYuMzQ3MkMyNC41OTYxIDE2LjM0MDIgMjQuNzUzNyAxNi4zMDE3IDI0Ljg5OTQgMTYuMjMzOUMyNS4wMDg5IDE2LjE4MjkgMjUuMTEwNiAxNi4xMTYgMjUuMjAwMiAxNi4wMzU2TDI1LjM3MDEgMTUuODY1N0MyNS41NzU5IDE1LjY3NDggMjUuODM4NSAxNS41NDA4IDI2LjExNTIgMTUuNDkwN0MyNi4yOTcyIDE1LjQ1NDYgMjYuNDg1IDE1LjQ2MTcgMjYuNjY0MSAxNS41MTAzQzI2Ljg0MzkgMTUuNTU5MSAyNy4wMTAzIDE1LjY0OSAyNy4xNDk0IDE1Ljc3MjlMMjcuMTUxNCAxNS43NzQ5TDI4LjI1OTggMTYuNzkwNUMyOC40NDUgMTYuOTYwNSAyOC41OTQ4IDE3LjE2NTggMjguNzAwMiAxNy4zOTRDMjguODA1NiAxNy42MjIzIDI4Ljg2NDggMTcuODY5NCAyOC44NzQgMTguMTIwNkMyOC44ODMyIDE4LjM3MiAyOC44NDIzIDE4LjYyMzQgMjguNzUzOSAxOC44NTg5QzI4LjY2NTUgMTkuMDk0MSAyOC41MzE2IDE5LjMwOTYgMjguMzU5NCAxOS40OTI3TDIwLjExMTMgMjguMjU4M0MxOS45MzcgMjguNDQzNCAxOS43MjY4IDI4LjU5MTIgMTkuNDk0MSAyOC42OTM4QzE5LjI2MTQgMjguNzk2NSAxOS4wMTAyIDI4Ljg1MjIgMTguNzU1OSAyOC44NTZDMTguNTAxNiAyOC44NTk3IDE4LjI0OTMgMjguODExOSAxOC4wMTM3IDI4LjcxNjNDMTcuNzc3OSAyOC42MjA2IDE3LjU2MzYgMjguNDc4NCAxNy4zODM4IDI4LjI5ODNMMTYuMjUzOSAyNy4xNjg1QzE1Ljc1MTEgMjYuNjY1NiAxNS44ODMyIDI1Ljk1NTIgMTYuMTUxNCAyNS41NTQyTDE2LjIwNjEgMjUuNDY0NEMxNi4zMjQxIDI1LjI0ODYgMTYuMzc0MiAyNS4wMDA4IDE2LjM0OTYgMjQuNzU0NEMxNi4zMjE0IDI0LjQ3MzEgMTYuMTk3IDI0LjIxMDIgMTUuOTk3MSAyNC4wMTAzQzE1Ljc5NzEgMjMuODEwMyAxNS41MzQzIDIzLjY4NTkgMTUuMjUyOSAyMy42NTc3QzE0Ljk3MTUgMjMuNjI5NyAxNC42ODg3IDIzLjY5OTUgMTQuNDUzMSAyMy44NTZIMTQuNDUyMUMxNC4wNDk0IDI0LjEyMjIgMTMuMzQwNyAyNC4yNTUyIDEyLjgzNzkgMjMuNzUxNUwxMS42Nzk3IDIyLjU5MzNDMTEuNTAzNCAyMi40MTY5IDExLjM2NCAyMi4yMDc0IDExLjI2ODYgMjEuOTc3MUMxMS4xNzMxIDIxLjc0NjcgMTEuMTIzMSAyMS40OTk5IDExLjEyMyAyMS4yNTA1QzExLjEyMyAyMS4wMDEgMTEuMTczMSAyMC43NTM1IDExLjI2ODYgMjAuNTIyOUMxMS4zNjQgMjAuMjkyNiAxMS41MDM0IDIwLjA4MzEgMTEuNjc5NyAxOS45MDY3TDE5Ljk0OTIgMTEuNjM2MkMyMC4yOTU0IDExLjI5MDIgMjAuNzYxNiAxMS4wOTEyIDIxLjI1MSAxMS4wODA2Wk0yMS4yNzgzIDEyLjM4MDRDMjEuMTIzNyAxMi4zODM4IDIwLjk3NjUgMTIuNDQ2OCAyMC44NjcyIDEyLjU1NjJMMTIuNTk2NyAyMC44MjU3QzEyLjU0MDkgMjAuODgxNCAxMi40OTcgMjAuOTQ4MiAxMi40NjY4IDIxLjAyMUMxMi40MzY3IDIxLjA5MzggMTIuNDIwOSAyMS4xNzE3IDEyLjQyMDkgMjEuMjUwNUMxMi40MjA5IDIxLjMyOTIgMTIuNDM2NyAyMS40MDczIDEyLjQ2NjggMjEuNDhDMTIuNDk3IDIxLjU1MjggMTIuNTQxIDIxLjYxOTYgMTIuNTk2NyAyMS42NzUzTDEzLjcwNjEgMjIuNzgzN0wxMy43MzE0IDIyLjc3MkMxNC4yMTY5IDIyLjQ0ODUgMTQuNzk5MyAyMi4zMDM1IDE1LjM3OTkgMjIuMzYwOEMxNS45NjA4IDIyLjQxODMgMTYuNTA0MiAyMi42NzQ3IDE2LjkxNyAyMy4wODc0QzE3LjMyOTggMjMuNTAwMiAxNy41ODcgMjQuMDQzNiAxNy42NDQ1IDI0LjYyNDVDMTcuNzAyIDI1LjIwNTUgMTcuNTU2NSAyNS43ODkyIDE3LjIzMjQgMjYuMjc0OUwxNy4yMzA1IDI2LjI3NTlDMTcuMjI2MSAyNi4yODIyIDE3LjIyMjYgMjYuMjg5MyAxNy4yMTk3IDI2LjI5NjRMMTguMzAxOCAyNy4zODA0QzE4LjM1ODUgMjcuNDM3MiAxOC40MjY2IDI3LjQ4MiAxOC41MDEgMjcuNTEyMkMxOC41NzU1IDI3LjU0MjUgMTguNjU1OSAyNy41NTc0IDE4LjczNjMgMjcuNTU2MkMxOC44MTY2IDI3LjU1NDkgMTguODk2MyAyNy41Mzc4IDE4Ljk2OTcgMjcuNTA1NEMxOS4wNDMgMjcuNDcyOSAxOS4xMDkxIDI3LjQyNjEgMTkuMTY0MSAyNy4zNjc3TDI3LjQxMzEgMTguNjAyMUMyNy40NjczIDE4LjU0NDIgMjcuNTA5MyAxOC40NzYxIDI3LjUzNzEgMTguNDAxOUMyNy41NjQ5IDE4LjMyNzYgMjcuNTc4MSAxOC4yNDg3IDI3LjU3NTIgMTguMTY5NEMyNy41NzIyIDE4LjA5MDIgMjcuNTUzOCAxOC4wMTE5IDI3LjUyMDUgMTcuOTM5OUMyNy40ODcyIDE3Ljg2NzkgMjcuNDM5NCAxNy44MDMyIDI3LjM4MDkgMTcuNzQ5NUwyNi4zMjIzIDE2Ljc3NzhDMjYuMjkyNSAxNi43ODg1IDI2LjI2NDggMTYuODA1MyAyNi4yNDMyIDE2LjgyODZDMjYuMDIxNyAxNy4wNzg4IDI1Ljc1MjkgMTcuMjgyNyAyNS40NTIxIDE3LjQyODJDMjUuMTUgMTcuNTc0MyAyNC44MjE0IDE3LjY1ODUgMjQuNDg2MyAxNy42NzYzQzI0LjE1MTEgMTcuNjk0IDIzLjgxNSAxNy42NDUyIDIzLjQ5OSAxNy41MzE3QzIzLjE4MzIgMTcuNDE4MyAyMi44OTI4IDE3LjI0MjkgMjIuNjQ1NSAxNy4wMTYxQzIyLjM5ODIgMTYuNzg5MyAyMi4xOTg4IDE2LjUxNTMgMjIuMDU4NiAxNi4yMTA0QzIxLjkxODMgMTUuOTA1NSAyMS44NDA0IDE1LjU3NTIgMjEuODI5MSAxNS4yMzk3QzIxLjgxNzggMTQuOTA0MyAyMS44NzM3IDE0LjU3IDIxLjk5MzIgMTQuMjU2M0MyMi4xMTIxIDEzLjk0NDIgMjIuMjkxNSAxMy42NTg3IDIyLjUyMTUgMTMuNDE2NUwyMi41NTQ3IDEzLjM2NTdDMjIuNTU5NCAxMy4zNTUyIDIyLjU2MDcgMTMuMzQzNyAyMi41NjM1IDEzLjMzMjVMMjEuNjk3MyAxMi41Mzg2VjEyLjUzNzZDMjEuNTgzMyAxMi40MzMxIDIxLjQzMjkgMTIuMzc3IDIxLjI3ODMgMTIuMzgwNFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMC4zXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyAtLT5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTJcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5SYWlzZSB0aWNrZXRzIGZvciB0aGUgZm9sbG93aW5nPC9zcGFuPlxuXG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+UmFpc2luZyBhIHRpY2tldCBmb3IgZm9vdGZhbGwgY291bnQgaXNzdWVzLiBNYWtlIHN1cmUgYWxsIHJlY29yZHMgYXJlIGlkZW50aWZpZWQgZm9yXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24uPC9zcGFuPlxuXG5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBteS00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA6JzAnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlc1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uZW1wbG95ZWVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5lbXBsb3llZUNvdW50OicwJyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uaG91c2VLZWVwaW5nQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uaG91c2VLZWVwaW5nQ291bnQgOicwJ319XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBteS00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5qdW5rQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uanVua0NvdW50IDonMCd9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBKdW5rXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBMYWJlbCBhbmQgVGV4dGFyZWEgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RGVzY3JpcHRpb24gKE9wdGlvbmFsKTwvbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWEgcm93cz1cIjNcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRUZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgZGVzY3JpcHRpb25cIj48L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG10LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTUwIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsUmFzaWVkKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MFwiIChjbGljayk9XCJzdWJtaXRSYWlzZWQoKVwiPlxuICAgICAgICAgICAgICAgIFJhaXNlIFRpY2tldFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG48bmctdGVtcGxhdGUgI2ltYWdlUG9wdXAgbGV0LW1vZGVsPlxuICAgIDxkaXYgY2xhc3M9XCJteC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgcC0yICBtYi0yIG10LTVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNb2RhbE9wZW5cIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwiY2FuTmF2aWdhdGVMZWZ0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ2xlZnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgcG9zaXRpb24tYWJzb2x1dGUgc3RhcnQtMCB0b3AtNTAgei1pbmRleC0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4peAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGltZyBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciB3LTEwMCBoLTUyNXB4XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlVXJsICsgKHRlbXBNb2RhbEltYWdlPy5maWxlUGF0aCB8fCBzZWxlY3RJbWFnZUFycmF5Py5maWxlUGF0aClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciB3LTEwMCBoLTUyNXB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmwgKyAodGVtcE1vZGFsSW1hZ2U/LmZpbGVQYXRoIHx8IHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoKVwiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZVJpZ2h0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ3JpZ2h0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHRvcC01MCB6LWluZGV4LTEwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilrZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgYXJyb3cgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7eyh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8udGVtcGxkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8udGVtcElkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0QxRkFERlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzEyQjc2QVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5zdGF0dXMgPT09J3JlamVjdGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQyOF81OTQ4NFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41OTk2MDkgMC41KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7KHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5lbnRyeVRtZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LmVudHJ5VGltZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE5IDE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LmlzUGFyZW50XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFzZWxlY3RJbWFnZUFycmF5Py5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIih0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIih0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyIHB5LTIgcHgtMFwiPiAtLT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgcHktMiBtYi0yIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZUltYWdlKClcIj5DbG9zZTwvYnV0dG9uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRm9vdGZhbGwgVHJlbmRzIFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNmb290ZmFsbFRyZW5kc1RlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgbWItM1wiPlxuICAgICAgICA8IS0tIFRvdGFsIEZvb3RmYWxsIENhcmQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtYi0zIG1iLW1kLTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy10aXRsZVwiPlRvdGFsIEZvb3RmYWxsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQgMThIOS41VjE5LjI1QzkuNSAxOS45NzkzIDkuMjEwMjcgMjAuNjc4OCA4LjY5NDU0IDIxLjE5NDVDOC4xNzg4MiAyMS43MTAzIDcuNDc5MzUgMjIgNi43NSAyMkM2LjAyMDY1IDIyIDUuMzIxMTggMjEuNzEwMyA0LjgwNTQ2IDIxLjE5NDVDNC4yODk3MyAyMC42Nzg4IDQgMTkuOTc5MyA0IDE5LjI1VjE4Wk04IDYuMTE5OTlDMTAgNi4xMTk5OSAxMSA4Ljk5OTk5IDExIDExQzExIDEyIDEwLjUgMTMgMTAgMTQuNUw5LjUgMTZINEM0IDE1IDMuNSAxMy41IDMuNSAxMUMzLjUgOC40OTk5OSA1LjQ5OCA2LjExOTk5IDggNi4xMTk5OVpNMjAuMDU0IDE0LjA5OEwxOS44MzcgMTUuMzI5QzE5LjcwMjMgMTYuMDM5NiAxOS4yOTMxIDE2LjY2ODYgMTguNjk4IDE3LjA3OTZDMTguMTAyOSAxNy40OTA3IDE3LjM2OTggMTcuNjUwOCAxNi42NTc2IDE3LjUyNTJDMTUuOTQ1MyAxNy4zOTk2IDE1LjMxMTEgMTYuOTk4NCAxNC44OTI1IDE2LjQwODZDMTQuNDczOSAxNS44MTg4IDE0LjMwNDUgMTUuMDg3OCAxNC40MjEgMTQuMzc0TDE0LjYzNyAxMy4xNDRMMjAuMDU0IDE0LjA5OFpNMTguMTc4IDEuNzA0OTlDMjAuNjQyIDIuMTM4OTkgMjIuMTk2IDQuODI5OTkgMjEuNzYyIDcuMjkxOTlDMjEuMzI4IDkuNzUzOTkgMjAuNTc1IDExLjE0NCAyMC40MDIgMTIuMTI5TDE0Ljk4NSAxMS4xNzRMMTQuNzUzIDkuNjA5OTlDMTQuNTIxIDguMDQ1OTkgMTQuMjAzIDYuOTczOTkgMTQuMzc2IDUuOTg5OTlDMTQuNzIzIDQuMDE5OTkgMTYuMjA4IDEuMzU3OTkgMTguMTc4IDEuNzA0OTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtdmFsdWVcIj57eyBnZXRDdXJyZW50Rm9vdGZhbGwoKSB8fCAwIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgIDwhLS0gW25nQ2xhc3NdPVwiZ2V0Rm9vdGZhbGxQZXJjZW50YWdlQ2hhbmdlKCkgPj0gMCA/ICd1cCcgOiAnZG93bidcIiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXRyZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1LjMzMjcgMy45OTk5OEw4Ljk5OTM1IDEwLjMzMzNMNS42NjYwMiA2Ljk5OTk4TDAuNjY2MDE2IDEyTTE1LjMzMjcgMy45OTk5OEgxMS4zMzI3TTE1LjMzMjcgMy45OTk5OFY3Ljk5OTk4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xODY4MVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiAjMTBCOTgxXCI+e3tnZXRGb290ZmFsbFBlcmNlbnRhZ2VDaGFuZ2UoKSB9fSUgPC9zcGFuPjxzcGFuPnZzIFllc3RlcmRheTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBUb3RhbCBEb3dudGltZSBDYXJkIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbWItMyBtYi1tZC0wXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtdGl0bGVcIj5Ub3RhbCBEb3dudGltZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3dudGltZS1pY29uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQxXCIgdmlld0JveD1cIjAgMCA0MCA0MVwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjEuOTAwNCAxMi4xNjc1QzIyLjk5NTggMTIuMTY3NSAyNC4wNDIzIDEyLjM5MTggMjQuOTk3NyAxMi43OTg3QzI1Ljk4ODkgMTMuMjIwNyAyNi44ODA5IDEzLjg0MDIgMjcuNjI3OSAxNC42MDg3QzI4LjM3MzQgMTUuMzc1NiAyOC45NzU2IDE2LjI5MzEgMjkuMzg1NyAxNy4zMTYyQzI5Ljc4MTMgMTguMjk5IDI5Ljk5OTMgMTkuMzc1NiAyOS45OTkzIDIwLjUwMDhDMjkuOTk5MyAyMS42Mjc3IDI5Ljc4MTMgMjIuNzA0MyAyOS4zODU3IDIzLjY4NzFDMjguOTc1NiAyNC43MDY4IDI4LjM3MzQgMjUuNjI0NCAyNy42MjYzIDI2LjM5MjlDMjYuODgwOSAyNy4xNTk4IDI1Ljk4ODkgMjcuNzc5MyAyNC45OTQ1IDI4LjIwMTJDMjQuMDM5MSAyOC42MDgxIDIyLjk5MjUgMjguODMyNSAyMS44OTg4IDI4LjgzMjVDMjAuODAzNCAyOC44MzI1IDE5Ljc1NjggMjguNjA4MSAxOC44MDE0IDI4LjIwMTJDMTcuODEwMiAyNy43NzkzIDE2LjkxODMgMjcuMTU5OCAxNi4xNzI5IDI2LjM5MjlMMTYuMTcxMiAyNi4zOTEyQzE1LjQyNDIgMjUuNjIyNyAxNC44MjM2IDI0LjcwNTIgMTQuNDEzNCAyMy42ODcxQzE0LjI4NjUgMjMuMzcwNyAxNC4xNzc0IDIzLjA0NTkgMTQuMDg3OSAyMi43MTI3QzE0LjI1NzIgMjIuNzI5NCAxNC40Mjk3IDIyLjczNzggMTQuNjAzOCAyMi43Mzc4QzE0LjkzNDIgMjIuNzM3OCAxNS4yNTY1IDIyLjcwNzYgMTUuNTcwNiAyMi42NDlDMTUuNjIyNyAyMi44MDk4IDE1LjY3OTcgMjIuOTY4OCAxNS43NDE1IDIzLjEyNDZDMTYuMDc4NSAyMy45NjE3IDE2LjU3MzIgMjQuNzE1MiAxNy4xODg1IDI1LjM0ODFDMTcuODAzNyAyNS45ODEgMTguNTM3OCAyNi40OSAxOS4zNDk5IDI2LjgzNjZDMjAuMTMyOCAyNy4xNjk4IDIwLjk5MzggMjcuMzU1NyAyMS44OTg4IDI3LjM1NTdDMjIuODAzNyAyNy4zNTU3IDIzLjY2MzEgMjcuMTcxNSAyNC40NDc2IDI2LjgzNjZDMjUuMjYxNCAyNi40OSAyNS45OTM4IDI1Ljk4MSAyNi42MDkxIDI1LjM0ODFDMjcuMjI0MyAyNC43MTUyIDI3LjcxOTEgMjMuOTYwMSAyOC4wNTYgMjMuMTI0NkMyOC4zNzk5IDIyLjMxOTIgMjguNTYwNSAyMS40MzM0IDI4LjU2MDUgMjAuNTAyNUMyOC41NjA1IDE5LjU3MTUgMjguMzgxNSAxOC42ODc1IDI4LjA1NiAxNy44ODA0QzI3LjcxOTEgMTcuMDQzMiAyNy4yMjQzIDE2LjI4OTggMjYuNjA5MSAxNS42NTY5QzI1Ljk5MzggMTUuMDI0IDI1LjI1OTggMTQuNTE0OSAyNC40NDc2IDE0LjE2ODRDMjMuNjY0NyAxMy44MzUyIDIyLjgwMzcgMTMuNjQ5MyAyMS44OTg4IDEzLjY0OTNDMjAuOTkzOCAxMy42NDkzIDIwLjEzNDQgMTMuODMzNSAxOS4zNDk5IDE0LjE2ODRDMTkuMjc5OSAxNC4xOTg1IDE5LjIxIDE0LjIzMDMgMTkuMTQxNiAxNC4yNjIxQzE4Ljg3NDcgMTMuODMwMSAxOC41NTI0IDEzLjQzODMgMTguMTgyOSAxMy4wOTg0QzE4LjM4NDggMTIuOTkxMyAxOC41OTE1IDEyLjg5MjUgMTguODAxNCAxMi44MDIxQzE5Ljc2MDEgMTIuMzkxOCAyMC44MDUgMTIuMTY3NSAyMS45MDA0IDEyLjE2NzVaTTIwLjk3MSAxNi41MzkzQzIwLjk3MSAxNi4zMzUgMjEuMDUyNCAxNi4xNTA4IDIxLjE4MSAxNi4wMTY5QzIxLjMxMTIgMTUuODgyOSAyMS40OTAyIDE1LjgwMDkgMjEuNjg4OCAxNS44MDA5QzIxLjg4NzQgMTUuODAwOSAyMi4wNjY0IDE1Ljg4MjkgMjIuMTk2NiAxNi4wMTY5QzIyLjMyNjggMTYuMTUwOCAyMi40MDY2IDE2LjMzNSAyMi40MDY2IDE2LjUzOTNWMjAuNDI3MUwyNS4yMzA1IDIyLjE1MDFDMjUuMzk5NyAyMi4yNTM5IDI1LjUxMzcgMjIuNDE5NiAyNS41NTkyIDIyLjYwMjFDMjUuNjA0OCAyMi43ODQ3IDI1LjU4MzcgMjIuOTg1NiAyNS40ODI3IDIzLjE1OTdWMjMuMTYxNEMyNS4zODE4IDIzLjMzNTUgMjUuMjIwNyAyMy40NTI3IDI1LjA0MzMgMjMuNDk5NkMyNC44NjU5IDIzLjU0NjUgMjQuNjcwNiAyMy41MjQ3IDI0LjUwMTMgMjMuNDIwOUgyNC40OTk3TDIxLjM0MDUgMjEuNDkzN0MyMS4yMzE0IDIxLjQzMTggMjEuMTQxOSAyMS4zNDEzIDIxLjA3NjggMjEuMjM0MkMyMS4wMTAxIDIxLjEyMiAyMC45NzEgMjAuOTg5NyAyMC45NzEgMjAuODQ5MVYxNi41MzkzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMzkxMyAxMi42MDk1QzE2LjgxNjQgMTIuNjA5NSAxOC43ODI2IDE0LjYzMjEgMTguNzgyNiAxNy4xMjY5QzE4Ljc4MjYgMTkuNjIxOCAxNi44MTY0IDIxLjY0NDQgMTQuMzkxMyAyMS42NDQ0QzExLjk2NjEgMjEuNjQ0NCAxMCAxOS42MjE4IDEwIDE3LjEyNjlDMTAgMTQuNjMyMSAxMS45NjYxIDEyLjYwOTUgMTQuMzkxMyAxMi42MDk1Wk0xNC4zOTEzIDE5LjcxNzJMMTYuNzQ4IDE2LjcyMDFIMTUuMjg0OFYxNS4xMjYxSDEzLjQ5NzdWMTYuNzIwMUgxMi4wMzQ1TDE0LjM5MTMgMTkuNzE3MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGMDQ0MzhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtdmFsdWVcIj57eyBnZXRGb3JtYXR0ZWREb3dudGltZSgpIHx8ICctJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1ldHJpYy10YWcgc3VjY2Vzc1wiICpuZ0lmPVwiaGFzRG93bnRpbWUoKVwiPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS42NjY3IDMuNUw1LjI1IDkuOTE2NjdMMi4zMzMzNCA3XCIgc3Ryb2tlPVwiIzEwQjk4MVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuPklzc3VlIHN1Ym1pdHRlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuNSAyLjVMNy41IDUuNUwxMC41IDIuNVwiIHN0cm9rZT1cIiMxMEI5ODFcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRpY2tldCBTdGF0dXMgQ2FyZCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy10aXRsZVwiPlRpY2tldCBzdGF0dXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy12YWx1ZVwiIFxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAndGlja2V0LXN0YXR1cy1yYWlzZWQnOiBnZXRUaWNrZXRTdGF0dXMoKT8udG9Mb3dlckNhc2UoKSA9PT0gJ3JhaXNlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlja2V0LXN0YXR1cy1jbG9zZWQnOiBnZXRUaWNrZXRTdGF0dXMoKT8udG9Mb3dlckNhc2UoKSA9PT0gJ2Nsb3NlJ1xuICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldFRpY2tldFN0YXR1cygpID09PSAnLScgPyAnLScgOiAoZ2V0VGlja2V0U3RhdHVzKCkgfCB0aXRsZWNhc2UpIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Jlc2V0UmVxdWVzdFBvcHVwIGxldC1tb2RlbD5cbiAgICA8ZGl2IGNsYXNzPVwicC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgYm9yZGVyLTAgcC0wIHctMTAwXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBtYi0zIGZ3LWJvbGRcIj5cbiAgICAgICAgICAgICAgICBSZXNldCByZXF1ZXN0LlxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHAtMFwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkIG1iLTNcIj5cbiAgICAgICAgICAgICAgICBZb3UncmUgcmVxdWVzdGluZyB0byByZS1lbmFibGUgZm9vdGZhbGwgdGlja2V0cywgZGlzYWJsZWQgYWZ0ZXIgdGhyZWUgaW5zdGFuY2VzIG9mIGV4Y2VlZGluZyA5NSVcbiAgICAgICAgICAgICAgICBhY2N1cmFjeS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1tdXRlZCBtYi0wXCI+XG4gICAgICAgICAgICAgICAgUGxlYXNlIGVuc3VyZSBmdXR1cmUgYWNjdXJhY3kgc3RheXMgb24gb3Igd2l0aGluIDk1JS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgYm9yZGVyLTAgcC0wIG10LTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNhbmNlbFJlc2V0UmVxdWVzdCgpXCI+XG4gICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdFJlc2V0UmVxdWVzdCgpXCI+XG4gICAgICAgICAgICAgICAgU2VuZCBSZXF1ZXN0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RpY2tldFN0YXR1c1RlbXBsYXRlIGxldC1tb2RlbD5cbiAgICA8IS0tIFRpY2tldCBSZXZpZXcgQ2FyZCAoc2hvd24gd2hlbiB0aWNrZXQgc3RhdHVzIGlzIHJhaXNlZCkgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi0zXCIgKm5nSWY9XCIoaXNUaWNrZXRSYWlzZWQoKSB8fCBpc1RpY2tldENsb3NlZCgpKSAmJiBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmV2aWV3LWNhcmRcIj5cbiAgICAgICAgICAgIDwhLS0gQWN0dWFsIEZvb3RmYWxsIEhlYWRlciAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3R1YWwtZm9vdGZhbGwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3R1YWwtZm9vdGZhbGwtbnVtYmVyXCI+e3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uZm9vdGZhbGwgfHwgMCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdHVhbC1mb290ZmFsbC1sYWJlbFwiPkFjdHVhbCBGb290ZmFsbDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBUaWNrZXQgQ3JlYXRlZCBCeSBTZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1jcmVhdG9yLXNlY3Rpb25cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWwgfHwgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY3JlYXRvci1hdmF0YXJcIiAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCk/LmNyZWF0ZWRCeUVtYWlsPy5wcm9maWxlUGljdHVyZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldFRhZ2dpbmdEYXRhKCk/LmNyZWF0ZWRCeUVtYWlsPy5wcm9maWxlUGljdHVyZVwiIGFsdD1cIlByb2ZpbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWF2YXRhci1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbD8ucHJvZmlsZVBpY3R1cmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNiAxMEMxNy42NTY5IDEwIDE5IDExLjM0MzEgMTkgMTNDMTkgMTQuNjU2OSAxNy42NTY5IDE2IDE2IDE2QzE0LjM0MzEgMTYgMTMgMTQuNjU2OSAxMyAxM0MxMyAxMS4zNDMxIDE0LjM0MzEgMTAgMTYgMTBaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMjJDMTEgMTkuMjM4NiAxMy4yMzg2IDE3IDE2IDE3QzE4Ljc2MTQgMTcgMjEgMTkuMjM4NiAyMSAyMlYyM0gxMVYyMlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWxhYmVsXCI+VGlja2V0IGNyZWF0ZWQgYnk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0b3ItZW1haWxcIj57eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbCB8fCAnTi9BJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0b3Itc2VwYXJhdG9yXCIgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXRcIj7igKI8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdG9yLXRpbWVcIiAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdCB8IGRhdGU6J2g6bW06c3MgYSAtIGQgTU1NIHl5eXknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gVGlja2V0IFJldmlzZWQgRm9vdGZhbGwgYW5kIE1ldHJpY3MgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1mb290ZmFsbC1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpY3Mtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXIgYmx1ZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8ucmV2aWNlZEZvb3RmYWxsIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy1wZXJjZW50YWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5yZXZpY2VkUGVyYyB8fCAwIH19JSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtYXJyb3dcIj7ihpM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5SZXZpc2VkIGZvb3RmYWxsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+KHt7IGdldFJldmlzaW9uQ2FsY3VsYXRpb24oJ3RhZ2dpbmcnKX19JSk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5UaWNrZXQlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2R1cGxpY2F0ZScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+RHVwbGljYXRlczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdlbXBsb3llZScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+RW1wbG95ZWUvU3RhZmY8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnanVuaycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SnVuazwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdob3VzZUtlZXBpbmcnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkhvdXNlIEtlZXBpbmc8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFRpY2tldCBGaW5hbCByZXZpc2lvbiBDYXJkIChzaG93biB3aGVuIHRpY2tldCBzdGF0dXMgaXMgY2xvc2VkKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTNcIiAqbmdJZj1cImlzVGlja2V0Q2xvc2VkKCkgJiYgZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFscmV2aWV3JylcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXZpZXctY2FyZFwiPlxuICAgICAgICAgICAgPCEtLSBUaWNrZXQgY2FyZCBzZWN0aW9uIGluIHJldmlzaW9uIHN0YXJ0IC0tPlxuXG4gICAgICAgICAgICA8IS0tIEFjdHVhbCBGb290ZmFsbCBIZWFkZXIgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0dWFsLWZvb3RmYWxsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0dWFsLWZvb3RmYWxsLW51bWJlclwiPnt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmZvb3RmYWxsIHx8IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3R1YWwtZm9vdGZhbGwtbGFiZWxcIj5BY3R1YWwgRm9vdGZhbGw8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gVGlja2V0IENyZWF0ZWQgQnkgU2VjdGlvbiAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY3JlYXRvci1zZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsIHx8IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNyZWF0b3ItYXZhdGFyXCIgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgpPy5jcmVhdGVkQnlFbWFpbD8ucHJvZmlsZVBpY3R1cmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRUYWdnaW5nRGF0YSgpPy5jcmVhdGVkQnlFbWFpbD8ucHJvZmlsZVBpY3R1cmVcIiBhbHQ9XCJQcm9maWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1hdmF0YXItcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWw/LnByb2ZpbGVQaWN0dXJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYgMTBDMTcuNjU2OSAxMCAxOSAxMS4zNDMxIDE5IDEzQzE5IDE0LjY1NjkgMTcuNjU2OSAxNiAxNiAxNkMxNC4zNDMxIDE2IDEzIDE0LjY1NjkgMTMgMTNDMTMgMTEuMzQzMSAxNC4zNDMxIDEwIDE2IDEwWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDIyQzExIDE5LjIzODYgMTMuMjM4NiAxNyAxNiAxN0MxOC43NjE0IDE3IDIxIDE5LjIzODYgMjEgMjJWMjNIMTFWMjJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1sYWJlbFwiPlRpY2tldCBjcmVhdGVkIGJ5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdG9yLWVtYWlsXCI+e3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWwgfHwgJ04vQScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdG9yLXNlcGFyYXRvclwiICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0XCI+4oCiPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3JlYXRvci10aW1lXCIgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXRcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXQgfCBkYXRlOidoOm1tOnNzIGEgLSBkIE1NTSB5eXl5JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFRpY2tldCBSZXZpc2VkIEZvb3RmYWxsIGFuZCBNZXRyaWNzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzZWQtZm9vdGZhbGwtc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWNzLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyIGJsdWUtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LnJldmljZWRGb290ZmFsbCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtcGVyY2VudGFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8ucmV2aWNlZFBlcmMgfHwgMCB9fSUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLWFycm93XCI+4oaTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+UmV2aXNlZCBmb290ZmFsbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPih7eyBnZXRSZXZpc2lvbkNhbGN1bGF0aW9uKCd0YWdnaW5nJyl9fSUpPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+VGlja2V0JTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdkdXBsaWNhdGUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkR1cGxpY2F0ZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnZW1wbG95ZWUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkVtcGxveWVlL1N0YWZmPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2p1bmsnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkp1bms8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnaG91c2VLZWVwaW5nJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5Ib3VzZSBLZWVwaW5nPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFRpY2tldCBjYXJkIHNlY3Rpb24gaW4gcmV2aXNpb24gZW5kIC0tPlxuXG4gICAgICAgICAgICA8IS0tIEZpbmFsIFJldmlzaW9uIFNlY3Rpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNpb24tc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2lvbi10aXRsZVwiPkZpbmFsIHJldmlzaW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbmFsLXJldmlzaW9uLW5vdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHJlYWNoIGNlbnRyYWxvcGVyYXRpb25zJiM2NDtsZW5za2FydC5pbiBmb3IgYW55IGZ1cnRoZXIgZGlzY3JlcGFuY2llc1xuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLWZvb3RmYWxsLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpY3Mtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlciBibHVlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFscmV2aWV3Jyk/LnJldmljZWRGb290ZmFsbCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLXBlcmNlbnRhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7eyBnZXRUYWdnaW5nRGF0YSgnZmluYWxyZXZpZXcnKT8ucmV2aWNlZFBlcmMgfHwgMH19JSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy1hcnJvd1wiPuKGkTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+UmV2aXNlZCBmb290ZmFsbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPih7eyBnZXRSZXZpc2lvbkNhbGN1bGF0aW9uKCdmaW5hbHJldmlldycpfX0lKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5UaWNrZXQlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFscmV2aWV3JyksICdkdXBsaWNhdGUnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5EdXBsaWNhdGVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFscmV2aWV3JyksICdlbXBsb3llZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkVtcGxveWVlL1N0YWZmPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFscmV2aWV3JyksICdqdW5rJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SnVuazwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCdmaW5hbHJldmlldycpLCAnaG91c2VLZWVwaW5nJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SG91c2UgS2VlcGluZzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=