@cqa-lib/cqa-ui 1.1.104 → 1.1.106

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.
@@ -115,10 +115,10 @@ export class VisualComparisonComponent {
115
115
  }
116
116
  }
117
117
  VisualComparisonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VisualComparisonComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
118
- VisualComparisonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: VisualComparisonComponent, selector: "cqa-visual-comparison", inputs: { screenshots: "screenshots", logs: "logs", showFullLogsLink: "showFullLogsLink", isUploadingBaseline: "isUploadingBaseline", isMakingCurrentBaseline: "isMakingCurrentBaseline", isLive: "isLive", testStepResultId: "testStepResultId" }, outputs: { makeCurrentBaseline: "makeCurrentBaseline", uploadBaseline: "uploadBaseline", analyze: "analyze", viewFullLogs: "viewFullLogs" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "baselineImage", first: true, predicate: ["baselineImage"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-grid cqa-grid-cols-12 cqa-gap-x-4 cqa-w-full cqa-max-h-[200px] cqa-h-full cqa-overflow-hidden\">\n <!-- Left Panel: Screenshots & Visual Comparison -->\n <div class=\"cqa-col-span-9 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-pt-2 cqa-px-3 cqa-pb-1 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6.00033 7.33268C6.73671 7.33268 7.33366 6.73573 7.33366 5.99935C7.33366 5.26297 6.73671 4.66602 6.00033 4.66602C5.26395 4.66602 4.66699 5.26297 4.66699 5.99935C4.66699 6.73573 5.26395 7.33268 6.00033 7.33268Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14 10.0004L11.9427 7.94312C11.6926 7.69315 11.3536 7.55273 11 7.55273C10.6464 7.55273 10.3074 7.69315 10.0573 7.94312L4 14.0004\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Screenshots & Visual Comparison\n </div>\n \n <!-- Screenshot Comparison Grid -->\n <div class=\"cqa-grid cqa-grid-cols-3 cqa-gap-3 cqa-mb-2\">\n <!-- Baseline -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Baseline</div>\n <div class=\"cqa-bg-[#F5F5F5] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('baseline')\">\n <div *ngIf=\"!screenshots?.baseline\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img #baselineImage *ngIf=\"baselineImageUrl\" [src]=\"baselineImageUrl\" alt=\"Baseline\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Current -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Current</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('current')\">\n <div *ngIf=\"!screenshots?.current\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.current\" [src]=\"screenshots.current\" alt=\"Current\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Difference -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Difference</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('difference')\">\n <div *ngIf=\"!screenshots?.difference\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.difference\" [src]=\"screenshots.difference\" alt=\"Difference\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-gap-2 cqa-flex-wrap\">\n <button \n (click)=\"onMakeCurrentBaseline()\"\n [disabled]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isMakingCurrentBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.39754 7.93752L2.31254 5.85252L1.60254 6.55752L4.39754 9.35252L10.3975 3.35252L9.69254 2.64752L4.39754 7.93752Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isMakingCurrentBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" values=\"0 6 6;360 6 6\" dur=\"1s\" repeatCount=\"indefinite\"/>\n </circle>\n </svg>\n <span>{{ isMakingCurrentBaseline?.[testStepResultId] === true ? 'Loading...' : 'Make current baseline' }}</span>\n </button>\n <button \n (click)=\"onUploadBaseline()\"\n [disabled]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"isUploadingBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isUploadingBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 7.5V9H3V7.5H2V9C2 9.55 2.45 10 3 10H9C9.55 10 10 9.55 10 9V7.5H9ZM3.5 4.5L4.205 5.205L5.5 3.915V8H6.5V3.915L7.795 5.205L8.5 4.5L6 2L3.5 4.5Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isUploadingBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"animation: spin 1s linear infinite;\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\"/>\n </svg>\n <span>{{ isUploadingBaseline?.[testStepResultId] === true ? 'Uploading...' : 'Upload baseline' }}</span>\n </button>\n <!-- Hidden file input -->\n <input \n #fileInput\n type=\"file\" \n accept=\"image/*\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none;\" \n />\n <!-- <button \n (click)=\"onAnalyze()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122]\">\n <svg width=\"11\" height=\"12\" viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.5115 0C5.57931 0.0303178 5.60828 0.104354 5.63604 0.173128C5.64996 0.2132 5.66273 0.253489 5.67513 0.2941C5.67998 0.309662 5.68484 0.325224 5.68984 0.341258C5.7543 0.550673 5.81172 0.762331 5.86946 0.97384C5.88251 1.02159 5.89563 1.06932 5.90874 1.11704C5.97551 1.36005 6.04177 1.6032 6.10767 1.84646C6.11693 1.88062 6.12619 1.91479 6.13545 1.94895C6.16156 2.04527 6.18764 2.14159 6.21357 2.23796C6.26837 2.44159 6.32467 2.64463 6.38463 2.84668C6.38986 2.86435 6.3951 2.88203 6.4005 2.90024C6.55624 3.42 6.77701 3.88583 7.13888 4.28262C7.14784 4.29294 7.1568 4.30325 7.16603 4.31388C7.3205 4.48583 7.51873 4.62361 7.71687 4.73481C7.72696 4.74057 7.73705 4.74632 7.74745 4.75225C8.33051 5.079 9.03162 5.22272 9.66313 5.414C9.93984 5.49787 10.2157 5.58438 10.4905 5.6747C10.5099 5.68105 10.5292 5.68738 10.5485 5.6937C10.6062 5.7126 10.6639 5.73182 10.7215 5.7513C10.7349 5.75572 10.7483 5.76015 10.7621 5.76471C10.8415 5.79208 10.9174 5.82439 10.9825 5.88036C11.0023 5.92558 11.0023 5.92558 10.9969 5.9708C10.9336 6.03648 10.8707 6.06728 10.7871 6.09733C10.7751 6.10176 10.7632 6.1062 10.7508 6.11077C10.6096 6.16244 10.4665 6.20766 10.3232 6.25247C10.2938 6.26174 10.2644 6.27101 10.235 6.28028C10.0537 6.33735 9.87199 6.3932 9.69014 6.44842C9.45061 6.52117 9.21143 6.59512 8.97249 6.66991C8.93334 6.68216 8.89418 6.69437 8.85501 6.70654C8.64931 6.77048 8.44462 6.83671 8.24162 6.90944C8.22478 6.91545 8.20794 6.92147 8.19059 6.92766C7.51069 7.17443 6.99245 7.63478 6.66809 8.30799C6.49321 8.68634 6.39006 9.09548 6.28483 9.49929C6.25637 9.60825 6.22611 9.7166 6.1955 9.82492C6.17149 9.91015 6.14803 9.99551 6.12515 10.0811C6.12243 10.0913 6.1197 10.1014 6.1169 10.1119C6.1037 10.1612 6.09056 10.2106 6.07752 10.2599C6.04413 10.3851 6.00817 10.5092 5.97123 10.6332C5.90567 10.8536 5.84601 11.0757 5.78672 11.298C5.69732 11.6328 5.69732 11.6328 5.64662 11.7937C5.64326 11.8045 5.6399 11.8153 5.63644 11.8264C5.61793 11.8837 5.5989 11.9364 5.56388 11.9849C5.5106 11.9972 5.5106 11.9972 5.46273 12C5.40801 11.9168 5.37177 11.8361 5.34273 11.7401C5.33851 11.7265 5.33428 11.7129 5.32993 11.6989C5.27614 11.5233 5.22807 11.3459 5.17999 11.1686C5.16898 11.1281 5.15791 11.0875 5.14685 11.047C5.0644 10.7448 4.98331 10.4423 4.90234 10.1397C4.56509 8.64299 4.56509 8.64299 3.71433 7.43288C3.7007 7.42128 3.68706 7.40968 3.67302 7.39773C3.1156 6.93203 2.3813 6.75959 1.70885 6.55751C1.54254 6.50749 1.37628 6.45724 1.21004 6.40697C1.1955 6.40258 1.1955 6.40258 1.18067 6.39809C0.940881 6.32556 0.701157 6.25283 0.462274 6.17711C0.452168 6.17393 0.442063 6.17075 0.431651 6.16747C0.0646543 6.05178 0.0646543 6.05178 0.000790211 5.9708C-0.00101599 5.93406 -0.00101599 5.93406 0.0152398 5.89543C0.0819909 5.8272 0.14676 5.79797 0.234862 5.76825C0.247618 5.76378 0.260375 5.75931 0.273518 5.75471C0.312587 5.7411 0.351741 5.72779 0.390929 5.71455C0.402112 5.71073 0.413295 5.7069 0.424817 5.70296C0.503904 5.6759 0.583275 5.64986 0.662762 5.62412C0.682294 5.61777 0.682294 5.61777 0.70222 5.61129C1.04166 5.50116 1.38332 5.39867 1.72487 5.29595C1.97939 5.21939 2.23347 5.14157 2.48674 5.06065C2.49838 5.05694 2.51001 5.05324 2.52201 5.04943C3.10872 4.86262 3.68229 4.59755 4.06112 4.0716C4.06679 4.0638 4.07247 4.05599 4.07831 4.04796C4.50019 3.4642 4.6647 2.7543 4.8485 2.06161C4.90896 1.83379 4.97015 1.60619 5.03155 1.37865C5.04856 1.31564 5.06553 1.25263 5.08244 1.18959C5.15037 0.936385 5.21932 0.683523 5.29222 0.431818C5.29904 0.408248 5.30583 0.384667 5.31259 0.361076C5.41466 0.00531681 5.41466 0.00531681 5.5115 0Z\" fill=\"#161617\"/><path d=\"M8.84391 0.740443C8.91024 0.818762 8.92349 0.910806 8.94415 1.01081C9.01305 1.32499 9.09241 1.61388 9.36787 1.79638C9.53782 1.89443 9.74037 1.93904 9.92867 1.98118C10.0082 1.99933 10.0753 2.02341 10.1435 2.07158C10.1588 2.09701 10.1588 2.09701 10.1579 2.14129C10.1421 2.19513 10.1282 2.2125 10.0866 2.24774C10.041 2.26364 10.041 2.26364 9.98633 2.27601C9.96564 2.28096 9.94496 2.28597 9.9243 2.29102C9.91322 2.2937 9.90215 2.29638 9.89075 2.29914C9.55401 2.38039 9.55401 2.38039 9.26295 2.56428C9.25348 2.57222 9.24402 2.58017 9.23427 2.58836C9.02625 2.7797 8.98226 3.098 8.91963 3.36464C8.91605 3.37928 8.91246 3.39393 8.90876 3.40901C8.90566 3.42198 8.90255 3.43494 8.89935 3.4483C8.88584 3.48788 8.87183 3.51369 8.84391 3.54402C8.76614 3.55432 8.76614 3.55432 8.72831 3.54402C8.66814 3.49537 8.65468 3.43996 8.63896 3.3655C8.63633 3.35397 8.63369 3.34244 8.63098 3.33056C8.62259 3.29374 8.61447 3.25686 8.60639 3.21995C8.54302 2.93259 8.47148 2.65064 8.21879 2.4822C8.02131 2.36732 7.78118 2.31298 7.56045 2.26911C7.49996 2.25597 7.4653 2.23944 7.42785 2.18745C7.41972 2.1347 7.41972 2.1347 7.42785 2.08194C7.48541 2.01979 7.54597 2.00462 7.62382 1.98585C7.64835 1.97952 7.67286 1.97314 7.69737 1.96671C7.71003 1.96342 7.72269 1.96012 7.73574 1.95673C7.80032 1.93939 7.86425 1.91995 7.92817 1.90012C7.93978 1.89661 7.95139 1.89309 7.96336 1.88947C8.09329 1.84895 8.20541 1.79712 8.30927 1.70512C8.31896 1.6968 8.32864 1.68848 8.33862 1.67992C8.50026 1.52817 8.55518 1.3002 8.60504 1.08748C8.60884 1.07133 8.61264 1.05518 8.61655 1.03854C8.62411 1.0061 8.63154 0.973622 8.63882 0.94111C8.64403 0.918489 8.64403 0.918489 8.64935 0.895412C8.65238 0.881899 8.65542 0.868385 8.65855 0.854462C8.67186 0.811441 8.68935 0.77766 8.71386 0.740443C8.76096 0.715878 8.79401 0.726983 8.84391 0.740443Z\" fill=\"#414146\"/><path d=\"M2.19446 8.32962C2.21166 8.32975 2.21166 8.32975 2.22919 8.32988C2.35253 8.3338 2.43597 8.37503 2.5268 8.46151C2.6325 8.58061 2.6813 8.71497 2.67852 8.87549C2.66666 9.00565 2.59307 9.11929 2.50282 9.20727C2.39658 9.29672 2.28941 9.32628 2.15366 9.32215C2.03919 9.30825 1.93151 9.25153 1.85038 9.16618C1.7495 9.02258 1.72 8.89087 1.73479 8.71398C1.76533 8.57472 1.85337 8.46167 1.96598 8.38238C2.04421 8.34101 2.10713 8.32886 2.19446 8.32962Z\" fill=\"#4C4C51\"/></svg>\n Analyze\n </button> -->\n </div>\n </div>\n\n <!-- Right Panel: Logs -->\n <div class=\"cqa-col-span-3 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-py-2 cqa-px-3 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.6666 12L14.6666 8L10.6666 4\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.33337 4L1.33337 8L5.33337 12\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Logs\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 \">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Console</div>\n \n <div *ngFor=\"let log of logs\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-break-words\" [ngClass]=\"getLogClass(log.level)\">\n {{ log.message }}\n </div>\n \n <div *ngIf=\"!logs || logs.length === 0\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#9CA3AF] cqa-bg-[#f8f8f8] cqa-text-center\">\n No logs available\n </div>\n </div>\n\n <!-- <a \n *ngIf=\"showFullLogsLink && logs?.length\"\n (click)=\"onViewFullLogs()\"\n class=\"cqa-text-[10px] cqa-leading-[15px] cqa-text-[#3F43EE] cqa-font-medium cqa-flex cqa-items-center cqa-justify-end cqa-gap-[2px] cqa-cursor-pointer hover:cqa-underline cqa-mt-4\">\n View full logs Iterations\n <div><svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.03833 6.74335L2.62833 7.33335L5.96166 4.00002L2.62833 0.666687L2.03833 1.25669L4.78166 4.00002L2.03833 6.74335Z\" fill=\"#3F43EE\"/></svg></div>\n </a> -->\n </div>\n\n \n <cqa-visual-difference-modal\n [isOpen]=\"isModalOpen\"\n [baselineUrl]=\"screenshots?.baseline || ''\"\n [currentUrl]=\"screenshots?.current || ''\"\n [differenceUrl]=\"screenshots?.difference || ''\"\n [initialView]=\"initialModalView\"\n (close)=\"onCloseModal()\">\n </cqa-visual-difference-modal>\n</div>\n\n<style>\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n</style>", styles: ["\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n"], components: [{ type: i1.VisualDifferenceModalComponent, selector: "cqa-visual-difference-modal", inputs: ["baselineUrl", "currentUrl", "differenceUrl", "title", "subtitle", "isOpen", "initialView"], outputs: ["close"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
118
+ VisualComparisonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: VisualComparisonComponent, selector: "cqa-visual-comparison", inputs: { screenshots: "screenshots", logs: "logs", showFullLogsLink: "showFullLogsLink", isUploadingBaseline: "isUploadingBaseline", isMakingCurrentBaseline: "isMakingCurrentBaseline", isLive: "isLive", testStepResultId: "testStepResultId" }, outputs: { makeCurrentBaseline: "makeCurrentBaseline", uploadBaseline: "uploadBaseline", analyze: "analyze", viewFullLogs: "viewFullLogs" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "baselineImage", first: true, predicate: ["baselineImage"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-grid cqa-grid-cols-12 cqa-gap-x-4 cqa-w-full cqa-max-h-[200px] cqa-h-full cqa-overflow-hidden\">\n <!-- Left Panel: Screenshots & Visual Comparison -->\n <div class=\"cqa-col-span-9 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-pt-2 cqa-px-3 cqa-pb-1 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6.00033 7.33268C6.73671 7.33268 7.33366 6.73573 7.33366 5.99935C7.33366 5.26297 6.73671 4.66602 6.00033 4.66602C5.26395 4.66602 4.66699 5.26297 4.66699 5.99935C4.66699 6.73573 5.26395 7.33268 6.00033 7.33268Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14 10.0004L11.9427 7.94312C11.6926 7.69315 11.3536 7.55273 11 7.55273C10.6464 7.55273 10.3074 7.69315 10.0573 7.94312L4 14.0004\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Screenshots & Visual Comparison\n </div>\n \n <!-- Screenshot Comparison Grid -->\n <div class=\"cqa-grid cqa-grid-cols-3 cqa-gap-3 cqa-mb-2\">\n <!-- Baseline -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Baseline</div>\n <div class=\"cqa-bg-[#F5F5F5] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('baseline')\">\n <div *ngIf=\"!screenshots?.baseline\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img #baselineImage *ngIf=\"baselineImageUrl\" [src]=\"baselineImageUrl\" alt=\"Baseline\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Current -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Current</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('current')\">\n <div *ngIf=\"!screenshots?.current\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.current\" [src]=\"screenshots.current\" alt=\"Current\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Difference -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Difference</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('difference')\">\n <div *ngIf=\"!screenshots?.difference\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.difference\" [src]=\"screenshots.difference\" alt=\"Difference\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-gap-2 cqa-flex-wrap\">\n <button \n (click)=\"onMakeCurrentBaseline()\"\n [disabled]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isMakingCurrentBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.39754 7.93752L2.31254 5.85252L1.60254 6.55752L4.39754 9.35252L10.3975 3.35252L9.69254 2.64752L4.39754 7.93752Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isMakingCurrentBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" values=\"0 6 6;360 6 6\" dur=\"1s\" repeatCount=\"indefinite\"/>\n </circle>\n </svg>\n <span>{{ isMakingCurrentBaseline?.[testStepResultId] === true ? 'Loading...' : 'Make current baseline' }}</span>\n </button>\n <button \n (click)=\"onUploadBaseline()\"\n [disabled]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"isUploadingBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isUploadingBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 7.5V9H3V7.5H2V9C2 9.55 2.45 10 3 10H9C9.55 10 10 9.55 10 9V7.5H9ZM3.5 4.5L4.205 5.205L5.5 3.915V8H6.5V3.915L7.795 5.205L8.5 4.5L6 2L3.5 4.5Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isUploadingBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"animation: spin 1s linear infinite;\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\"/>\n </svg>\n <span>{{ isUploadingBaseline?.[testStepResultId] === true ? 'Uploading...' : 'Upload baseline' }}</span>\n </button>\n <!-- Hidden file input -->\n <input \n #fileInput\n type=\"file\" \n accept=\"image/*\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none;\" \n />\n <!-- <button \n (click)=\"onAnalyze()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122]\">\n <svg width=\"11\" height=\"12\" viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.5115 0C5.57931 0.0303178 5.60828 0.104354 5.63604 0.173128C5.64996 0.2132 5.66273 0.253489 5.67513 0.2941C5.67998 0.309662 5.68484 0.325224 5.68984 0.341258C5.7543 0.550673 5.81172 0.762331 5.86946 0.97384C5.88251 1.02159 5.89563 1.06932 5.90874 1.11704C5.97551 1.36005 6.04177 1.6032 6.10767 1.84646C6.11693 1.88062 6.12619 1.91479 6.13545 1.94895C6.16156 2.04527 6.18764 2.14159 6.21357 2.23796C6.26837 2.44159 6.32467 2.64463 6.38463 2.84668C6.38986 2.86435 6.3951 2.88203 6.4005 2.90024C6.55624 3.42 6.77701 3.88583 7.13888 4.28262C7.14784 4.29294 7.1568 4.30325 7.16603 4.31388C7.3205 4.48583 7.51873 4.62361 7.71687 4.73481C7.72696 4.74057 7.73705 4.74632 7.74745 4.75225C8.33051 5.079 9.03162 5.22272 9.66313 5.414C9.93984 5.49787 10.2157 5.58438 10.4905 5.6747C10.5099 5.68105 10.5292 5.68738 10.5485 5.6937C10.6062 5.7126 10.6639 5.73182 10.7215 5.7513C10.7349 5.75572 10.7483 5.76015 10.7621 5.76471C10.8415 5.79208 10.9174 5.82439 10.9825 5.88036C11.0023 5.92558 11.0023 5.92558 10.9969 5.9708C10.9336 6.03648 10.8707 6.06728 10.7871 6.09733C10.7751 6.10176 10.7632 6.1062 10.7508 6.11077C10.6096 6.16244 10.4665 6.20766 10.3232 6.25247C10.2938 6.26174 10.2644 6.27101 10.235 6.28028C10.0537 6.33735 9.87199 6.3932 9.69014 6.44842C9.45061 6.52117 9.21143 6.59512 8.97249 6.66991C8.93334 6.68216 8.89418 6.69437 8.85501 6.70654C8.64931 6.77048 8.44462 6.83671 8.24162 6.90944C8.22478 6.91545 8.20794 6.92147 8.19059 6.92766C7.51069 7.17443 6.99245 7.63478 6.66809 8.30799C6.49321 8.68634 6.39006 9.09548 6.28483 9.49929C6.25637 9.60825 6.22611 9.7166 6.1955 9.82492C6.17149 9.91015 6.14803 9.99551 6.12515 10.0811C6.12243 10.0913 6.1197 10.1014 6.1169 10.1119C6.1037 10.1612 6.09056 10.2106 6.07752 10.2599C6.04413 10.3851 6.00817 10.5092 5.97123 10.6332C5.90567 10.8536 5.84601 11.0757 5.78672 11.298C5.69732 11.6328 5.69732 11.6328 5.64662 11.7937C5.64326 11.8045 5.6399 11.8153 5.63644 11.8264C5.61793 11.8837 5.5989 11.9364 5.56388 11.9849C5.5106 11.9972 5.5106 11.9972 5.46273 12C5.40801 11.9168 5.37177 11.8361 5.34273 11.7401C5.33851 11.7265 5.33428 11.7129 5.32993 11.6989C5.27614 11.5233 5.22807 11.3459 5.17999 11.1686C5.16898 11.1281 5.15791 11.0875 5.14685 11.047C5.0644 10.7448 4.98331 10.4423 4.90234 10.1397C4.56509 8.64299 4.56509 8.64299 3.71433 7.43288C3.7007 7.42128 3.68706 7.40968 3.67302 7.39773C3.1156 6.93203 2.3813 6.75959 1.70885 6.55751C1.54254 6.50749 1.37628 6.45724 1.21004 6.40697C1.1955 6.40258 1.1955 6.40258 1.18067 6.39809C0.940881 6.32556 0.701157 6.25283 0.462274 6.17711C0.452168 6.17393 0.442063 6.17075 0.431651 6.16747C0.0646543 6.05178 0.0646543 6.05178 0.000790211 5.9708C-0.00101599 5.93406 -0.00101599 5.93406 0.0152398 5.89543C0.0819909 5.8272 0.14676 5.79797 0.234862 5.76825C0.247618 5.76378 0.260375 5.75931 0.273518 5.75471C0.312587 5.7411 0.351741 5.72779 0.390929 5.71455C0.402112 5.71073 0.413295 5.7069 0.424817 5.70296C0.503904 5.6759 0.583275 5.64986 0.662762 5.62412C0.682294 5.61777 0.682294 5.61777 0.70222 5.61129C1.04166 5.50116 1.38332 5.39867 1.72487 5.29595C1.97939 5.21939 2.23347 5.14157 2.48674 5.06065C2.49838 5.05694 2.51001 5.05324 2.52201 5.04943C3.10872 4.86262 3.68229 4.59755 4.06112 4.0716C4.06679 4.0638 4.07247 4.05599 4.07831 4.04796C4.50019 3.4642 4.6647 2.7543 4.8485 2.06161C4.90896 1.83379 4.97015 1.60619 5.03155 1.37865C5.04856 1.31564 5.06553 1.25263 5.08244 1.18959C5.15037 0.936385 5.21932 0.683523 5.29222 0.431818C5.29904 0.408248 5.30583 0.384667 5.31259 0.361076C5.41466 0.00531681 5.41466 0.00531681 5.5115 0Z\" fill=\"#161617\"/><path d=\"M8.84391 0.740443C8.91024 0.818762 8.92349 0.910806 8.94415 1.01081C9.01305 1.32499 9.09241 1.61388 9.36787 1.79638C9.53782 1.89443 9.74037 1.93904 9.92867 1.98118C10.0082 1.99933 10.0753 2.02341 10.1435 2.07158C10.1588 2.09701 10.1588 2.09701 10.1579 2.14129C10.1421 2.19513 10.1282 2.2125 10.0866 2.24774C10.041 2.26364 10.041 2.26364 9.98633 2.27601C9.96564 2.28096 9.94496 2.28597 9.9243 2.29102C9.91322 2.2937 9.90215 2.29638 9.89075 2.29914C9.55401 2.38039 9.55401 2.38039 9.26295 2.56428C9.25348 2.57222 9.24402 2.58017 9.23427 2.58836C9.02625 2.7797 8.98226 3.098 8.91963 3.36464C8.91605 3.37928 8.91246 3.39393 8.90876 3.40901C8.90566 3.42198 8.90255 3.43494 8.89935 3.4483C8.88584 3.48788 8.87183 3.51369 8.84391 3.54402C8.76614 3.55432 8.76614 3.55432 8.72831 3.54402C8.66814 3.49537 8.65468 3.43996 8.63896 3.3655C8.63633 3.35397 8.63369 3.34244 8.63098 3.33056C8.62259 3.29374 8.61447 3.25686 8.60639 3.21995C8.54302 2.93259 8.47148 2.65064 8.21879 2.4822C8.02131 2.36732 7.78118 2.31298 7.56045 2.26911C7.49996 2.25597 7.4653 2.23944 7.42785 2.18745C7.41972 2.1347 7.41972 2.1347 7.42785 2.08194C7.48541 2.01979 7.54597 2.00462 7.62382 1.98585C7.64835 1.97952 7.67286 1.97314 7.69737 1.96671C7.71003 1.96342 7.72269 1.96012 7.73574 1.95673C7.80032 1.93939 7.86425 1.91995 7.92817 1.90012C7.93978 1.89661 7.95139 1.89309 7.96336 1.88947C8.09329 1.84895 8.20541 1.79712 8.30927 1.70512C8.31896 1.6968 8.32864 1.68848 8.33862 1.67992C8.50026 1.52817 8.55518 1.3002 8.60504 1.08748C8.60884 1.07133 8.61264 1.05518 8.61655 1.03854C8.62411 1.0061 8.63154 0.973622 8.63882 0.94111C8.64403 0.918489 8.64403 0.918489 8.64935 0.895412C8.65238 0.881899 8.65542 0.868385 8.65855 0.854462C8.67186 0.811441 8.68935 0.77766 8.71386 0.740443C8.76096 0.715878 8.79401 0.726983 8.84391 0.740443Z\" fill=\"#414146\"/><path d=\"M2.19446 8.32962C2.21166 8.32975 2.21166 8.32975 2.22919 8.32988C2.35253 8.3338 2.43597 8.37503 2.5268 8.46151C2.6325 8.58061 2.6813 8.71497 2.67852 8.87549C2.66666 9.00565 2.59307 9.11929 2.50282 9.20727C2.39658 9.29672 2.28941 9.32628 2.15366 9.32215C2.03919 9.30825 1.93151 9.25153 1.85038 9.16618C1.7495 9.02258 1.72 8.89087 1.73479 8.71398C1.76533 8.57472 1.85337 8.46167 1.96598 8.38238C2.04421 8.34101 2.10713 8.32886 2.19446 8.32962Z\" fill=\"#4C4C51\"/></svg>\n Analyze\n </button> -->\n </div>\n </div>\n\n <!-- Right Panel: Logs -->\n <div class=\"cqa-col-span-3 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-py-2 cqa-px-3 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.6666 12L14.6666 8L10.6666 4\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.33337 4L1.33337 8L5.33337 12\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Logs\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 \">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Console</div>\n \n <div *ngFor=\"let log of logs\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-break-words\" [ngClass]=\"getLogClass(log.level)\">\n {{ log.message }}\n </div>\n \n <div *ngIf=\"!logs || logs.length === 0\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#9CA3AF] cqa-bg-[#f8f8f8] cqa-text-center\">\n No logs available\n </div>\n </div>\n\n <!-- <a \n *ngIf=\"showFullLogsLink && logs?.length\"\n (click)=\"onViewFullLogs()\"\n class=\"cqa-text-[10px] cqa-leading-[15px] cqa-text-[#3F43EE] cqa-font-medium cqa-flex cqa-items-center cqa-justify-end cqa-gap-[2px] cqa-cursor-pointer hover:cqa-underline cqa-mt-4\">\n View full logs Iterations\n <div><svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.03833 6.74335L2.62833 7.33335L5.96166 4.00002L2.62833 0.666687L2.03833 1.25669L4.78166 4.00002L2.03833 6.74335Z\" fill=\"#3F43EE\"/></svg></div>\n </a> -->\n </div>\n\n \n <cqa-visual-difference-modal style=\"z-index: 60;\"\n [isOpen]=\"isModalOpen\"\n [baselineUrl]=\"screenshots?.baseline || ''\"\n [currentUrl]=\"screenshots?.current || ''\"\n [differenceUrl]=\"screenshots?.difference || ''\"\n [initialView]=\"initialModalView\"\n (close)=\"onCloseModal()\">\n </cqa-visual-difference-modal>\n</div>\n\n<style>\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n</style>", styles: ["\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n"], components: [{ type: i1.VisualDifferenceModalComponent, selector: "cqa-visual-difference-modal", inputs: ["baselineUrl", "currentUrl", "differenceUrl", "title", "subtitle", "isOpen", "initialView"], outputs: ["close"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
119
119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VisualComparisonComponent, decorators: [{
120
120
  type: Component,
121
- args: [{ selector: 'cqa-visual-comparison', host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-grid cqa-grid-cols-12 cqa-gap-x-4 cqa-w-full cqa-max-h-[200px] cqa-h-full cqa-overflow-hidden\">\n <!-- Left Panel: Screenshots & Visual Comparison -->\n <div class=\"cqa-col-span-9 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-pt-2 cqa-px-3 cqa-pb-1 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6.00033 7.33268C6.73671 7.33268 7.33366 6.73573 7.33366 5.99935C7.33366 5.26297 6.73671 4.66602 6.00033 4.66602C5.26395 4.66602 4.66699 5.26297 4.66699 5.99935C4.66699 6.73573 5.26395 7.33268 6.00033 7.33268Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14 10.0004L11.9427 7.94312C11.6926 7.69315 11.3536 7.55273 11 7.55273C10.6464 7.55273 10.3074 7.69315 10.0573 7.94312L4 14.0004\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Screenshots & Visual Comparison\n </div>\n \n <!-- Screenshot Comparison Grid -->\n <div class=\"cqa-grid cqa-grid-cols-3 cqa-gap-3 cqa-mb-2\">\n <!-- Baseline -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Baseline</div>\n <div class=\"cqa-bg-[#F5F5F5] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('baseline')\">\n <div *ngIf=\"!screenshots?.baseline\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img #baselineImage *ngIf=\"baselineImageUrl\" [src]=\"baselineImageUrl\" alt=\"Baseline\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Current -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Current</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('current')\">\n <div *ngIf=\"!screenshots?.current\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.current\" [src]=\"screenshots.current\" alt=\"Current\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Difference -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Difference</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('difference')\">\n <div *ngIf=\"!screenshots?.difference\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.difference\" [src]=\"screenshots.difference\" alt=\"Difference\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-gap-2 cqa-flex-wrap\">\n <button \n (click)=\"onMakeCurrentBaseline()\"\n [disabled]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isMakingCurrentBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.39754 7.93752L2.31254 5.85252L1.60254 6.55752L4.39754 9.35252L10.3975 3.35252L9.69254 2.64752L4.39754 7.93752Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isMakingCurrentBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" values=\"0 6 6;360 6 6\" dur=\"1s\" repeatCount=\"indefinite\"/>\n </circle>\n </svg>\n <span>{{ isMakingCurrentBaseline?.[testStepResultId] === true ? 'Loading...' : 'Make current baseline' }}</span>\n </button>\n <button \n (click)=\"onUploadBaseline()\"\n [disabled]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"isUploadingBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isUploadingBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 7.5V9H3V7.5H2V9C2 9.55 2.45 10 3 10H9C9.55 10 10 9.55 10 9V7.5H9ZM3.5 4.5L4.205 5.205L5.5 3.915V8H6.5V3.915L7.795 5.205L8.5 4.5L6 2L3.5 4.5Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isUploadingBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"animation: spin 1s linear infinite;\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\"/>\n </svg>\n <span>{{ isUploadingBaseline?.[testStepResultId] === true ? 'Uploading...' : 'Upload baseline' }}</span>\n </button>\n <!-- Hidden file input -->\n <input \n #fileInput\n type=\"file\" \n accept=\"image/*\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none;\" \n />\n <!-- <button \n (click)=\"onAnalyze()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122]\">\n <svg width=\"11\" height=\"12\" viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.5115 0C5.57931 0.0303178 5.60828 0.104354 5.63604 0.173128C5.64996 0.2132 5.66273 0.253489 5.67513 0.2941C5.67998 0.309662 5.68484 0.325224 5.68984 0.341258C5.7543 0.550673 5.81172 0.762331 5.86946 0.97384C5.88251 1.02159 5.89563 1.06932 5.90874 1.11704C5.97551 1.36005 6.04177 1.6032 6.10767 1.84646C6.11693 1.88062 6.12619 1.91479 6.13545 1.94895C6.16156 2.04527 6.18764 2.14159 6.21357 2.23796C6.26837 2.44159 6.32467 2.64463 6.38463 2.84668C6.38986 2.86435 6.3951 2.88203 6.4005 2.90024C6.55624 3.42 6.77701 3.88583 7.13888 4.28262C7.14784 4.29294 7.1568 4.30325 7.16603 4.31388C7.3205 4.48583 7.51873 4.62361 7.71687 4.73481C7.72696 4.74057 7.73705 4.74632 7.74745 4.75225C8.33051 5.079 9.03162 5.22272 9.66313 5.414C9.93984 5.49787 10.2157 5.58438 10.4905 5.6747C10.5099 5.68105 10.5292 5.68738 10.5485 5.6937C10.6062 5.7126 10.6639 5.73182 10.7215 5.7513C10.7349 5.75572 10.7483 5.76015 10.7621 5.76471C10.8415 5.79208 10.9174 5.82439 10.9825 5.88036C11.0023 5.92558 11.0023 5.92558 10.9969 5.9708C10.9336 6.03648 10.8707 6.06728 10.7871 6.09733C10.7751 6.10176 10.7632 6.1062 10.7508 6.11077C10.6096 6.16244 10.4665 6.20766 10.3232 6.25247C10.2938 6.26174 10.2644 6.27101 10.235 6.28028C10.0537 6.33735 9.87199 6.3932 9.69014 6.44842C9.45061 6.52117 9.21143 6.59512 8.97249 6.66991C8.93334 6.68216 8.89418 6.69437 8.85501 6.70654C8.64931 6.77048 8.44462 6.83671 8.24162 6.90944C8.22478 6.91545 8.20794 6.92147 8.19059 6.92766C7.51069 7.17443 6.99245 7.63478 6.66809 8.30799C6.49321 8.68634 6.39006 9.09548 6.28483 9.49929C6.25637 9.60825 6.22611 9.7166 6.1955 9.82492C6.17149 9.91015 6.14803 9.99551 6.12515 10.0811C6.12243 10.0913 6.1197 10.1014 6.1169 10.1119C6.1037 10.1612 6.09056 10.2106 6.07752 10.2599C6.04413 10.3851 6.00817 10.5092 5.97123 10.6332C5.90567 10.8536 5.84601 11.0757 5.78672 11.298C5.69732 11.6328 5.69732 11.6328 5.64662 11.7937C5.64326 11.8045 5.6399 11.8153 5.63644 11.8264C5.61793 11.8837 5.5989 11.9364 5.56388 11.9849C5.5106 11.9972 5.5106 11.9972 5.46273 12C5.40801 11.9168 5.37177 11.8361 5.34273 11.7401C5.33851 11.7265 5.33428 11.7129 5.32993 11.6989C5.27614 11.5233 5.22807 11.3459 5.17999 11.1686C5.16898 11.1281 5.15791 11.0875 5.14685 11.047C5.0644 10.7448 4.98331 10.4423 4.90234 10.1397C4.56509 8.64299 4.56509 8.64299 3.71433 7.43288C3.7007 7.42128 3.68706 7.40968 3.67302 7.39773C3.1156 6.93203 2.3813 6.75959 1.70885 6.55751C1.54254 6.50749 1.37628 6.45724 1.21004 6.40697C1.1955 6.40258 1.1955 6.40258 1.18067 6.39809C0.940881 6.32556 0.701157 6.25283 0.462274 6.17711C0.452168 6.17393 0.442063 6.17075 0.431651 6.16747C0.0646543 6.05178 0.0646543 6.05178 0.000790211 5.9708C-0.00101599 5.93406 -0.00101599 5.93406 0.0152398 5.89543C0.0819909 5.8272 0.14676 5.79797 0.234862 5.76825C0.247618 5.76378 0.260375 5.75931 0.273518 5.75471C0.312587 5.7411 0.351741 5.72779 0.390929 5.71455C0.402112 5.71073 0.413295 5.7069 0.424817 5.70296C0.503904 5.6759 0.583275 5.64986 0.662762 5.62412C0.682294 5.61777 0.682294 5.61777 0.70222 5.61129C1.04166 5.50116 1.38332 5.39867 1.72487 5.29595C1.97939 5.21939 2.23347 5.14157 2.48674 5.06065C2.49838 5.05694 2.51001 5.05324 2.52201 5.04943C3.10872 4.86262 3.68229 4.59755 4.06112 4.0716C4.06679 4.0638 4.07247 4.05599 4.07831 4.04796C4.50019 3.4642 4.6647 2.7543 4.8485 2.06161C4.90896 1.83379 4.97015 1.60619 5.03155 1.37865C5.04856 1.31564 5.06553 1.25263 5.08244 1.18959C5.15037 0.936385 5.21932 0.683523 5.29222 0.431818C5.29904 0.408248 5.30583 0.384667 5.31259 0.361076C5.41466 0.00531681 5.41466 0.00531681 5.5115 0Z\" fill=\"#161617\"/><path d=\"M8.84391 0.740443C8.91024 0.818762 8.92349 0.910806 8.94415 1.01081C9.01305 1.32499 9.09241 1.61388 9.36787 1.79638C9.53782 1.89443 9.74037 1.93904 9.92867 1.98118C10.0082 1.99933 10.0753 2.02341 10.1435 2.07158C10.1588 2.09701 10.1588 2.09701 10.1579 2.14129C10.1421 2.19513 10.1282 2.2125 10.0866 2.24774C10.041 2.26364 10.041 2.26364 9.98633 2.27601C9.96564 2.28096 9.94496 2.28597 9.9243 2.29102C9.91322 2.2937 9.90215 2.29638 9.89075 2.29914C9.55401 2.38039 9.55401 2.38039 9.26295 2.56428C9.25348 2.57222 9.24402 2.58017 9.23427 2.58836C9.02625 2.7797 8.98226 3.098 8.91963 3.36464C8.91605 3.37928 8.91246 3.39393 8.90876 3.40901C8.90566 3.42198 8.90255 3.43494 8.89935 3.4483C8.88584 3.48788 8.87183 3.51369 8.84391 3.54402C8.76614 3.55432 8.76614 3.55432 8.72831 3.54402C8.66814 3.49537 8.65468 3.43996 8.63896 3.3655C8.63633 3.35397 8.63369 3.34244 8.63098 3.33056C8.62259 3.29374 8.61447 3.25686 8.60639 3.21995C8.54302 2.93259 8.47148 2.65064 8.21879 2.4822C8.02131 2.36732 7.78118 2.31298 7.56045 2.26911C7.49996 2.25597 7.4653 2.23944 7.42785 2.18745C7.41972 2.1347 7.41972 2.1347 7.42785 2.08194C7.48541 2.01979 7.54597 2.00462 7.62382 1.98585C7.64835 1.97952 7.67286 1.97314 7.69737 1.96671C7.71003 1.96342 7.72269 1.96012 7.73574 1.95673C7.80032 1.93939 7.86425 1.91995 7.92817 1.90012C7.93978 1.89661 7.95139 1.89309 7.96336 1.88947C8.09329 1.84895 8.20541 1.79712 8.30927 1.70512C8.31896 1.6968 8.32864 1.68848 8.33862 1.67992C8.50026 1.52817 8.55518 1.3002 8.60504 1.08748C8.60884 1.07133 8.61264 1.05518 8.61655 1.03854C8.62411 1.0061 8.63154 0.973622 8.63882 0.94111C8.64403 0.918489 8.64403 0.918489 8.64935 0.895412C8.65238 0.881899 8.65542 0.868385 8.65855 0.854462C8.67186 0.811441 8.68935 0.77766 8.71386 0.740443C8.76096 0.715878 8.79401 0.726983 8.84391 0.740443Z\" fill=\"#414146\"/><path d=\"M2.19446 8.32962C2.21166 8.32975 2.21166 8.32975 2.22919 8.32988C2.35253 8.3338 2.43597 8.37503 2.5268 8.46151C2.6325 8.58061 2.6813 8.71497 2.67852 8.87549C2.66666 9.00565 2.59307 9.11929 2.50282 9.20727C2.39658 9.29672 2.28941 9.32628 2.15366 9.32215C2.03919 9.30825 1.93151 9.25153 1.85038 9.16618C1.7495 9.02258 1.72 8.89087 1.73479 8.71398C1.76533 8.57472 1.85337 8.46167 1.96598 8.38238C2.04421 8.34101 2.10713 8.32886 2.19446 8.32962Z\" fill=\"#4C4C51\"/></svg>\n Analyze\n </button> -->\n </div>\n </div>\n\n <!-- Right Panel: Logs -->\n <div class=\"cqa-col-span-3 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-py-2 cqa-px-3 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.6666 12L14.6666 8L10.6666 4\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.33337 4L1.33337 8L5.33337 12\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Logs\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 \">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Console</div>\n \n <div *ngFor=\"let log of logs\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-break-words\" [ngClass]=\"getLogClass(log.level)\">\n {{ log.message }}\n </div>\n \n <div *ngIf=\"!logs || logs.length === 0\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#9CA3AF] cqa-bg-[#f8f8f8] cqa-text-center\">\n No logs available\n </div>\n </div>\n\n <!-- <a \n *ngIf=\"showFullLogsLink && logs?.length\"\n (click)=\"onViewFullLogs()\"\n class=\"cqa-text-[10px] cqa-leading-[15px] cqa-text-[#3F43EE] cqa-font-medium cqa-flex cqa-items-center cqa-justify-end cqa-gap-[2px] cqa-cursor-pointer hover:cqa-underline cqa-mt-4\">\n View full logs Iterations\n <div><svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.03833 6.74335L2.62833 7.33335L5.96166 4.00002L2.62833 0.666687L2.03833 1.25669L4.78166 4.00002L2.03833 6.74335Z\" fill=\"#3F43EE\"/></svg></div>\n </a> -->\n </div>\n\n \n <cqa-visual-difference-modal\n [isOpen]=\"isModalOpen\"\n [baselineUrl]=\"screenshots?.baseline || ''\"\n [currentUrl]=\"screenshots?.current || ''\"\n [differenceUrl]=\"screenshots?.difference || ''\"\n [initialView]=\"initialModalView\"\n (close)=\"onCloseModal()\">\n </cqa-visual-difference-modal>\n</div>\n\n<style>\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n</style>", styles: ["\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n"] }]
121
+ args: [{ selector: 'cqa-visual-comparison', host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-grid cqa-grid-cols-12 cqa-gap-x-4 cqa-w-full cqa-max-h-[200px] cqa-h-full cqa-overflow-hidden\">\n <!-- Left Panel: Screenshots & Visual Comparison -->\n <div class=\"cqa-col-span-9 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-pt-2 cqa-px-3 cqa-pb-1 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6.00033 7.33268C6.73671 7.33268 7.33366 6.73573 7.33366 5.99935C7.33366 5.26297 6.73671 4.66602 6.00033 4.66602C5.26395 4.66602 4.66699 5.26297 4.66699 5.99935C4.66699 6.73573 5.26395 7.33268 6.00033 7.33268Z\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M14 10.0004L11.9427 7.94312C11.6926 7.69315 11.3536 7.55273 11 7.55273C10.6464 7.55273 10.3074 7.69315 10.0573 7.94312L4 14.0004\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Screenshots & Visual Comparison\n </div>\n \n <!-- Screenshot Comparison Grid -->\n <div class=\"cqa-grid cqa-grid-cols-3 cqa-gap-3 cqa-mb-2\">\n <!-- Baseline -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Baseline</div>\n <div class=\"cqa-bg-[#F5F5F5] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E5E5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('baseline')\">\n <div *ngIf=\"!screenshots?.baseline\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#737373\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img #baselineImage *ngIf=\"baselineImageUrl\" [src]=\"baselineImageUrl\" alt=\"Baseline\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Current -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Current</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('current')\">\n <div *ngIf=\"!screenshots?.current\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.current\" [src]=\"screenshots.current\" alt=\"Current\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n\n <!-- Difference -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Difference</div>\n <div class=\"cqa-bg-[#FEF2F3] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#F9C2C5] cqa-flex cqa-items-center cqa-justify-center cqa-h-[112px] cqa-cursor-pointer\" (click)=\"onImageClick('difference')\">\n <div *ngIf=\"!screenshots?.difference\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-text-[#EF4444]\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M25.3333 4H6.66667C5.19391 4 4 5.19391 4 6.66667V25.3333C4 26.8061 5.19391 28 6.66667 28H25.3333C26.8061 28 28 26.8061 28 25.3333V6.66667C28 5.19391 26.8061 4 25.3333 4Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.9997 14.6673C13.4724 14.6673 14.6663 13.4734 14.6663 12.0007C14.6663 10.5279 13.4724 9.33398 11.9997 9.33398C10.5269 9.33398 9.33301 10.5279 9.33301 12.0007C9.33301 13.4734 10.5269 14.6673 11.9997 14.6673Z\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 20.0009L23.8853 15.8862C23.3853 15.3863 22.7071 15.1055 22 15.1055C21.2929 15.1055 20.6147 15.3863 20.1147 15.8862L8 28.0009\" stroke=\"#E7000B\" stroke-opacity=\"0.5\" stroke-width=\"2.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </div>\n <img *ngIf=\"screenshots?.difference\" [src]=\"screenshots.difference\" alt=\"Difference\" class=\"cqa-w-full cqa-h-full cqa-object-cover cqa-rounded-lg\" />\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-gap-2 cqa-flex-wrap\">\n <button \n (click)=\"onMakeCurrentBaseline()\"\n [disabled]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"!isCurrentImageAvailable || isMakingCurrentBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isMakingCurrentBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.39754 7.93752L2.31254 5.85252L1.60254 6.55752L4.39754 9.35252L10.3975 3.35252L9.69254 2.64752L4.39754 7.93752Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isMakingCurrentBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" values=\"0 6 6;360 6 6\" dur=\"1s\" repeatCount=\"indefinite\"/>\n </circle>\n </svg>\n <span>{{ isMakingCurrentBaseline?.[testStepResultId] === true ? 'Loading...' : 'Make current baseline' }}</span>\n </button>\n <button \n (click)=\"onUploadBaseline()\"\n [disabled]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-opacity-50]=\"isUploadingBaseline?.[testStepResultId] === true\"\n [class.cqa-cursor-not-allowed]=\"isUploadingBaseline?.[testStepResultId] === true\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122] disabled:cqa-cursor-not-allowed\">\n <svg *ngIf=\"!isUploadingBaseline?.[testStepResultId]\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 7.5V9H3V7.5H2V9C2 9.55 2.45 10 3 10H9C9.55 10 10 9.55 10 9V7.5H9ZM3.5 4.5L4.205 5.205L5.5 3.915V8H6.5V3.915L7.795 5.205L8.5 4.5L6 2L3.5 4.5Z\" fill=\"black\"/></svg>\n <svg *ngIf=\"isUploadingBaseline?.[testStepResultId] === true\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"animation: spin 1s linear infinite;\">\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" opacity=\"0.3\"/>\n <circle cx=\"6\" cy=\"6\" r=\"5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-dasharray=\"8 4\" stroke-dashoffset=\"2\"/>\n </svg>\n <span>{{ isUploadingBaseline?.[testStepResultId] === true ? 'Uploading...' : 'Upload baseline' }}</span>\n </button>\n <!-- Hidden file input -->\n <input \n #fileInput\n type=\"file\" \n accept=\"image/*\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none;\" \n />\n <!-- <button \n (click)=\"onAnalyze()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-pl-2 cqa-pr-4 cqa-py-[2px] cqa-rounded-lg cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-bg-transparent cqa-text-[#212122] cqa-border cqa-border-solid cqa-border-[#212122]\">\n <svg width=\"11\" height=\"12\" viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.5115 0C5.57931 0.0303178 5.60828 0.104354 5.63604 0.173128C5.64996 0.2132 5.66273 0.253489 5.67513 0.2941C5.67998 0.309662 5.68484 0.325224 5.68984 0.341258C5.7543 0.550673 5.81172 0.762331 5.86946 0.97384C5.88251 1.02159 5.89563 1.06932 5.90874 1.11704C5.97551 1.36005 6.04177 1.6032 6.10767 1.84646C6.11693 1.88062 6.12619 1.91479 6.13545 1.94895C6.16156 2.04527 6.18764 2.14159 6.21357 2.23796C6.26837 2.44159 6.32467 2.64463 6.38463 2.84668C6.38986 2.86435 6.3951 2.88203 6.4005 2.90024C6.55624 3.42 6.77701 3.88583 7.13888 4.28262C7.14784 4.29294 7.1568 4.30325 7.16603 4.31388C7.3205 4.48583 7.51873 4.62361 7.71687 4.73481C7.72696 4.74057 7.73705 4.74632 7.74745 4.75225C8.33051 5.079 9.03162 5.22272 9.66313 5.414C9.93984 5.49787 10.2157 5.58438 10.4905 5.6747C10.5099 5.68105 10.5292 5.68738 10.5485 5.6937C10.6062 5.7126 10.6639 5.73182 10.7215 5.7513C10.7349 5.75572 10.7483 5.76015 10.7621 5.76471C10.8415 5.79208 10.9174 5.82439 10.9825 5.88036C11.0023 5.92558 11.0023 5.92558 10.9969 5.9708C10.9336 6.03648 10.8707 6.06728 10.7871 6.09733C10.7751 6.10176 10.7632 6.1062 10.7508 6.11077C10.6096 6.16244 10.4665 6.20766 10.3232 6.25247C10.2938 6.26174 10.2644 6.27101 10.235 6.28028C10.0537 6.33735 9.87199 6.3932 9.69014 6.44842C9.45061 6.52117 9.21143 6.59512 8.97249 6.66991C8.93334 6.68216 8.89418 6.69437 8.85501 6.70654C8.64931 6.77048 8.44462 6.83671 8.24162 6.90944C8.22478 6.91545 8.20794 6.92147 8.19059 6.92766C7.51069 7.17443 6.99245 7.63478 6.66809 8.30799C6.49321 8.68634 6.39006 9.09548 6.28483 9.49929C6.25637 9.60825 6.22611 9.7166 6.1955 9.82492C6.17149 9.91015 6.14803 9.99551 6.12515 10.0811C6.12243 10.0913 6.1197 10.1014 6.1169 10.1119C6.1037 10.1612 6.09056 10.2106 6.07752 10.2599C6.04413 10.3851 6.00817 10.5092 5.97123 10.6332C5.90567 10.8536 5.84601 11.0757 5.78672 11.298C5.69732 11.6328 5.69732 11.6328 5.64662 11.7937C5.64326 11.8045 5.6399 11.8153 5.63644 11.8264C5.61793 11.8837 5.5989 11.9364 5.56388 11.9849C5.5106 11.9972 5.5106 11.9972 5.46273 12C5.40801 11.9168 5.37177 11.8361 5.34273 11.7401C5.33851 11.7265 5.33428 11.7129 5.32993 11.6989C5.27614 11.5233 5.22807 11.3459 5.17999 11.1686C5.16898 11.1281 5.15791 11.0875 5.14685 11.047C5.0644 10.7448 4.98331 10.4423 4.90234 10.1397C4.56509 8.64299 4.56509 8.64299 3.71433 7.43288C3.7007 7.42128 3.68706 7.40968 3.67302 7.39773C3.1156 6.93203 2.3813 6.75959 1.70885 6.55751C1.54254 6.50749 1.37628 6.45724 1.21004 6.40697C1.1955 6.40258 1.1955 6.40258 1.18067 6.39809C0.940881 6.32556 0.701157 6.25283 0.462274 6.17711C0.452168 6.17393 0.442063 6.17075 0.431651 6.16747C0.0646543 6.05178 0.0646543 6.05178 0.000790211 5.9708C-0.00101599 5.93406 -0.00101599 5.93406 0.0152398 5.89543C0.0819909 5.8272 0.14676 5.79797 0.234862 5.76825C0.247618 5.76378 0.260375 5.75931 0.273518 5.75471C0.312587 5.7411 0.351741 5.72779 0.390929 5.71455C0.402112 5.71073 0.413295 5.7069 0.424817 5.70296C0.503904 5.6759 0.583275 5.64986 0.662762 5.62412C0.682294 5.61777 0.682294 5.61777 0.70222 5.61129C1.04166 5.50116 1.38332 5.39867 1.72487 5.29595C1.97939 5.21939 2.23347 5.14157 2.48674 5.06065C2.49838 5.05694 2.51001 5.05324 2.52201 5.04943C3.10872 4.86262 3.68229 4.59755 4.06112 4.0716C4.06679 4.0638 4.07247 4.05599 4.07831 4.04796C4.50019 3.4642 4.6647 2.7543 4.8485 2.06161C4.90896 1.83379 4.97015 1.60619 5.03155 1.37865C5.04856 1.31564 5.06553 1.25263 5.08244 1.18959C5.15037 0.936385 5.21932 0.683523 5.29222 0.431818C5.29904 0.408248 5.30583 0.384667 5.31259 0.361076C5.41466 0.00531681 5.41466 0.00531681 5.5115 0Z\" fill=\"#161617\"/><path d=\"M8.84391 0.740443C8.91024 0.818762 8.92349 0.910806 8.94415 1.01081C9.01305 1.32499 9.09241 1.61388 9.36787 1.79638C9.53782 1.89443 9.74037 1.93904 9.92867 1.98118C10.0082 1.99933 10.0753 2.02341 10.1435 2.07158C10.1588 2.09701 10.1588 2.09701 10.1579 2.14129C10.1421 2.19513 10.1282 2.2125 10.0866 2.24774C10.041 2.26364 10.041 2.26364 9.98633 2.27601C9.96564 2.28096 9.94496 2.28597 9.9243 2.29102C9.91322 2.2937 9.90215 2.29638 9.89075 2.29914C9.55401 2.38039 9.55401 2.38039 9.26295 2.56428C9.25348 2.57222 9.24402 2.58017 9.23427 2.58836C9.02625 2.7797 8.98226 3.098 8.91963 3.36464C8.91605 3.37928 8.91246 3.39393 8.90876 3.40901C8.90566 3.42198 8.90255 3.43494 8.89935 3.4483C8.88584 3.48788 8.87183 3.51369 8.84391 3.54402C8.76614 3.55432 8.76614 3.55432 8.72831 3.54402C8.66814 3.49537 8.65468 3.43996 8.63896 3.3655C8.63633 3.35397 8.63369 3.34244 8.63098 3.33056C8.62259 3.29374 8.61447 3.25686 8.60639 3.21995C8.54302 2.93259 8.47148 2.65064 8.21879 2.4822C8.02131 2.36732 7.78118 2.31298 7.56045 2.26911C7.49996 2.25597 7.4653 2.23944 7.42785 2.18745C7.41972 2.1347 7.41972 2.1347 7.42785 2.08194C7.48541 2.01979 7.54597 2.00462 7.62382 1.98585C7.64835 1.97952 7.67286 1.97314 7.69737 1.96671C7.71003 1.96342 7.72269 1.96012 7.73574 1.95673C7.80032 1.93939 7.86425 1.91995 7.92817 1.90012C7.93978 1.89661 7.95139 1.89309 7.96336 1.88947C8.09329 1.84895 8.20541 1.79712 8.30927 1.70512C8.31896 1.6968 8.32864 1.68848 8.33862 1.67992C8.50026 1.52817 8.55518 1.3002 8.60504 1.08748C8.60884 1.07133 8.61264 1.05518 8.61655 1.03854C8.62411 1.0061 8.63154 0.973622 8.63882 0.94111C8.64403 0.918489 8.64403 0.918489 8.64935 0.895412C8.65238 0.881899 8.65542 0.868385 8.65855 0.854462C8.67186 0.811441 8.68935 0.77766 8.71386 0.740443C8.76096 0.715878 8.79401 0.726983 8.84391 0.740443Z\" fill=\"#414146\"/><path d=\"M2.19446 8.32962C2.21166 8.32975 2.21166 8.32975 2.22919 8.32988C2.35253 8.3338 2.43597 8.37503 2.5268 8.46151C2.6325 8.58061 2.6813 8.71497 2.67852 8.87549C2.66666 9.00565 2.59307 9.11929 2.50282 9.20727C2.39658 9.29672 2.28941 9.32628 2.15366 9.32215C2.03919 9.30825 1.93151 9.25153 1.85038 9.16618C1.7495 9.02258 1.72 8.89087 1.73479 8.71398C1.76533 8.57472 1.85337 8.46167 1.96598 8.38238C2.04421 8.34101 2.10713 8.32886 2.19446 8.32962Z\" fill=\"#4C4C51\"/></svg>\n Analyze\n </button> -->\n </div>\n </div>\n\n <!-- Right Panel: Logs -->\n <div class=\"cqa-col-span-3 cqa-border cqa-border-solid cqa-border-[##E5E5E5] cqa-rounded-[10px] cqa-py-2 cqa-px-3 cqa-h-full cqa-max-h-[200px] cqa-overflow-auto\"\n style=\"scrollbar-width: thin;\">\n <div class=\"cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#0A0A0A] cqa-flex cqa-items-center cqa-gap-2 cqa-mb-2\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.6666 12L14.6666 8L10.6666 4\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.33337 4L1.33337 8L5.33337 12\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n Logs\n </div>\n \n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 \">\n <div class=\"cqa-text-[11px] cqa-leading-[100%] cqa-text-[#737373]\">Console</div>\n \n <div *ngFor=\"let log of logs\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-break-words\" [ngClass]=\"getLogClass(log.level)\">\n {{ log.message }}\n </div>\n \n <div *ngIf=\"!logs || logs.length === 0\" class=\"cqa-px-2 cqa-py-[2px] cqa-rounded cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-[#9CA3AF] cqa-bg-[#f8f8f8] cqa-text-center\">\n No logs available\n </div>\n </div>\n\n <!-- <a \n *ngIf=\"showFullLogsLink && logs?.length\"\n (click)=\"onViewFullLogs()\"\n class=\"cqa-text-[10px] cqa-leading-[15px] cqa-text-[#3F43EE] cqa-font-medium cqa-flex cqa-items-center cqa-justify-end cqa-gap-[2px] cqa-cursor-pointer hover:cqa-underline cqa-mt-4\">\n View full logs Iterations\n <div><svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.03833 6.74335L2.62833 7.33335L5.96166 4.00002L2.62833 0.666687L2.03833 1.25669L4.78166 4.00002L2.03833 6.74335Z\" fill=\"#3F43EE\"/></svg></div>\n </a> -->\n </div>\n\n \n <cqa-visual-difference-modal style=\"z-index: 60;\"\n [isOpen]=\"isModalOpen\"\n [baselineUrl]=\"screenshots?.baseline || ''\"\n [currentUrl]=\"screenshots?.current || ''\"\n [differenceUrl]=\"screenshots?.difference || ''\"\n [initialView]=\"initialModalView\"\n (close)=\"onCloseModal()\">\n </cqa-visual-difference-modal>\n</div>\n\n<style>\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n</style>", styles: ["\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n"] }]
122
122
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { screenshots: [{
123
123
  type: Input
124
124
  }], logs: [{
@@ -148,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
148
148
  type: ViewChild,
149
149
  args: ['baselineImage']
150
150
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL3Zpc3VhbC1jb21wYXJpc29uL3Zpc3VhbC1jb21wYXJpc29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi92aXN1YWwtY29tcGFyaXNvbi92aXN1YWwtY29tcGFyaXNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBMEUsTUFBTSxlQUFlLENBQUM7Ozs7QUFzQjFKLE1BQU0sT0FBTyx5QkFBeUI7SUFxQnBDLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbEJqQyxxQkFBZ0IsR0FBYSxJQUFJLENBQUM7UUFDbEMsd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLDRCQUF1QixHQUFHLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR2Qsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLbEQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIscUJBQWdCLEdBQWtCLFVBQVUsQ0FBQztJQUdBLENBQUM7SUFFOUMsZUFBZTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDMUIsTUFBTSxnQkFB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bUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNNLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjcmVlbnNob3REYXRhLCBMb2dFbnRyeSwgRmFpbHVyZURldGFpbHMgfSBmcm9tICcuLi9leGVjdXRpb24tc3RlcC5tb2RlbHMnO1xuaW1wb3J0IHsgSW1hZ2VWaWV3VHlwZSB9IGZyb20gJy4uLy4uL3Zpc3VhbC1kaWZmZXJlbmNlLW1vZGFsL3Zpc3VhbC1kaWZmZXJlbmNlLW1vZGFsLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50IHtcbiAgdGVzdFN0ZXBSZXN1bHRJZDogc3RyaW5nO1xuICBjdXJyZW50VXJsOiBzdHJpbmc7XG4gIGZhaWx1cmVEZXRhaWxzPzogRmFpbHVyZURldGFpbHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgdXBsb2FkQmFzZWxpbmVFdmVudCB7XG4gIGZpbGU6IEZpbGU7XG4gIHRlc3RTdGVwUmVzdWx0SWQ6IHN0cmluZztcbiAgZmFpbHVyZURldGFpbHM/OiBGYWlsdXJlRGV0YWlscztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXZpc3VhbC1jb21wYXJpc29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Zpc3VhbC1jb21wYXJpc29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIFZpc3VhbENvbXBhcmlzb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBzY3JlZW5zaG90cz86IFNjcmVlbnNob3REYXRhO1xuICBASW5wdXQoKSBsb2dzPzogTG9nRW50cnlbXTtcbiAgQElucHV0KCkgc2hvd0Z1bGxMb2dzTGluaz86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBpc1VwbG9hZGluZ0Jhc2VsaW5lID0ge307XG4gIEBJbnB1dCgpIGlzTWFraW5nQ3VycmVudEJhc2VsaW5lID0ge307XG4gIEBJbnB1dCgpIGlzTGl2ZSA9IGZhbHNlO1xuICBASW5wdXQoKSB0ZXN0U3RlcFJlc3VsdElkITogc3RyaW5nO1xuICBcbiAgQE91dHB1dCgpIG1ha2VDdXJyZW50QmFzZWxpbmUgPSBuZXcgRXZlbnRFbWl0dGVyPG1ha2VDdXJyZW50QmFzZWxpbmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIHVwbG9hZEJhc2VsaW5lID0gbmV3IEV2ZW50RW1pdHRlcjx1cGxvYWRCYXNlbGluZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgYW5hbHl6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHZpZXdGdWxsTG9ncyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Jhc2VsaW5lSW1hZ2UnKSBiYXNlbGluZUltYWdlITogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PjtcbiAgXG4gIGlzTW9kYWxPcGVuID0gZmFsc2U7XG4gIGluaXRpYWxNb2RhbFZpZXc6IEltYWdlVmlld1R5cGUgPSAnYmFzZWxpbmUnO1xuICBiYXNlbGluZUltYWdlVXJsPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVCYXNlbGluZVVybCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzY3JlZW5zaG90cyddKSB7XG4gICAgICBjb25zdCBwcmV2aW91c0Jhc2VsaW5lID0gY2hhbmdlc1snc2NyZWVuc2hvdHMnXS5wcmV2aW91c1ZhbHVlPy5iYXNlbGluZTtcbiAgICAgIGNvbnN0IGN1cnJlbnRCYXNlbGluZSA9IGNoYW5nZXNbJ3NjcmVlbnNob3RzJ10uY3VycmVudFZhbHVlPy5iYXNlbGluZTtcbiAgICAgIFxuICAgICAgaWYgKCFjaGFuZ2VzWydzY3JlZW5zaG90cyddLmlzRmlyc3RDaGFuZ2UoKSAmJiBwcmV2aW91c0Jhc2VsaW5lICE9PSBjdXJyZW50QmFzZWxpbmUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVCYXNlbGluZVVybCh0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snc2NyZWVuc2hvdHMnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVCYXNlbGluZVVybChmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVCYXNlbGluZVVybChmb3JjZVJlbG9hZDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NyZWVuc2hvdHM/LmJhc2VsaW5lKSB7XG4gICAgICBjb25zdCBiYXNlbGluZVVybCA9IHRoaXMuc2NyZWVuc2hvdHMuYmFzZWxpbmU7XG4gICAgICBcbiAgICAgIHRoaXMuYmFzZWxpbmVJbWFnZVVybCA9IGJhc2VsaW5lVXJsO1xuICAgICAgXG4gICAgICBpZiAoZm9yY2VSZWxvYWQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuYmFzZWxpbmVJbWFnZT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5iYXNlbGluZUltYWdlLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpbWcuc3JjID0gJyc7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICBpbWcuc3JjID0gYmFzZWxpbmVVcmw7XG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJhc2VsaW5lSW1hZ2VVcmwgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNDdXJyZW50SW1hZ2VBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zY3JlZW5zaG90cz8uY3VycmVudDtcbiAgfVxuXG4gIG9uTWFrZUN1cnJlbnRCYXNlbGluZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY3JlZW5zaG90cz8uY3VycmVudCkge1xuICAgICAgY29uc29sZS5sb2coJ01ha2UgY3VycmVudCBiYXNlbGluZSBjbGlja2VkIHdpdGggVVJMOicsIHRoaXMuc2NyZWVuc2hvdHMuY3VycmVudCk7XG4gICAgICB0aGlzLm1ha2VDdXJyZW50QmFzZWxpbmUuZW1pdCh7XG4gICAgICAgIHRlc3RTdGVwUmVzdWx0SWQ6IHRoaXMudGVzdFN0ZXBSZXN1bHRJZCxcbiAgICAgICAgY3VycmVudFVybDogdGhpcy5zY3JlZW5zaG90cy5jdXJyZW50XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblVwbG9hZEJhc2VsaW5lKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdVcGxvYWQgYmFzZWxpbmUgY2xpY2tlZCcpO1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1swXTtcbiAgICAgIGNvbnNvbGUubG9nKCdGaWxlIHNlbGVjdGVkOicsIGZpbGUubmFtZSk7XG4gICAgICB0aGlzLnVwbG9hZEJhc2VsaW5lLmVtaXQoe1xuICAgICAgICBmaWxlOiBmaWxlLFxuICAgICAgICB0ZXN0U3RlcFJlc3VsdElkOiB0aGlzLnRlc3RTdGVwUmVzdWx0SWRcbiAgICAgIH0pO1xuICAgICAgLy8gUmVzZXQgZmlsZSBpbnB1dFxuICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICBvbkFuYWx5emUoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0FuYWx5emUgY2xpY2tlZCcpO1xuICAgIHRoaXMuYW5hbHl6ZS5lbWl0KCk7XG4gIH1cblxuICBvblZpZXdGdWxsTG9ncygpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnVmlldyBmdWxsIGxvZ3MgY2xpY2tlZCcpO1xuICAgIHRoaXMudmlld0Z1bGxMb2dzLmVtaXQoKTtcbiAgfVxuXG4gIGdldExvZ0NsYXNzKGxldmVsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjQkI0RDAwXSBjcWEtYmctWyNGRkZCRUJdJztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgcmV0dXJuICdjcWEtdGV4dC1bI0U3MDAwQl0gY3FhLWJnLVsjRkRFNUU3XSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjOUNBM0FGXSBjcWEtYmctWyNmOGY4ZjhdJztcbiAgICB9XG4gIH1cblxuICBvbkltYWdlQ2xpY2sodHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsTW9kYWxWaWV3ID0gdHlwZSBhcyBJbWFnZVZpZXdUeXBlO1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgb25DbG9zZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWdyaWQgY3FhLWdyaWQtY29scy0xMiBjcWEtZ2FwLXgtNCBjcWEtdy1mdWxsIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1oLWZ1bGwgY3FhLW92ZXJmbG93LWhpZGRlblwiPlxuICA8IS0tIExlZnQgUGFuZWw6IFNjcmVlbnNob3RzICYgVmlzdWFsIENvbXBhcmlzb24gLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtY29sLXNwYW4tOSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIyNFNUU1RTVdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcHQtMiBjcWEtcHgtMyBjcWEtcGItMSBjcWEtaC1mdWxsIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1vdmVyZmxvdy1hdXRvXCJcbiAgICBzdHlsZT1cInNjcm9sbGJhci13aWR0aDogdGhpbjtcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1tYi0yXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEyLjY2NjcgMkgzLjMzMzMzQzIuNTk2OTUgMiAyIDIuNTk2OTUgMiAzLjMzMzMzVjEyLjY2NjdDMiAxMy40MDMgMi41OTY5NSAxNCAzLjMzMzMzIDE0SDEyLjY2NjdDMTMuNDAzIDE0IDE0IDEzLjQwMyAxNCAxMi42NjY3VjMuMzMzMzNDMTQgMi41OTY5NSAxMy40MDMgMiAxMi42NjY3IDJaXCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02LjAwMDMzIDcuMzMyNjhDNi43MzY3MSA3LjMzMjY4IDcuMzMzNjYgNi43MzU3MyA3LjMzMzY2IDUuOTk5MzVDNy4zMzM2NiA1LjI2Mjk3IDYuNzM2NzEgNC42NjYwMiA2LjAwMDMzIDQuNjY2MDJDNS4yNjM5NSA0LjY2NjAyIDQuNjY2OTkgNS4yNjI5NyA0LjY2Njk5IDUuOTk5MzVDNC42NjY5OSA2LjczNTczIDUuMjYzOTUgNy4zMzI2OCA2LjAwMDMzIDcuMzMyNjhaXCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xNCAxMC4wMDA0TDExLjk0MjcgNy45NDMxMkMxMS42OTI2IDcuNjkzMTUgMTEuMzUzNiA3LjU1MjczIDExIDcuNTUyNzNDMTAuNjQ2NCA3LjU1MjczIDEwLjMwNzQgNy42OTMxNSAxMC4wNTczIDcuOTQzMTJMNCAxNC4wMDA0XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICBTY3JlZW5zaG90cyAmIFZpc3VhbCBDb21wYXJpc29uXG4gICAgPC9kaXY+XG4gICAgXG4gICAgPCEtLSBTY3JlZW5zaG90IENvbXBhcmlzb24gR3JpZCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWdyaWQgY3FhLWdyaWQtY29scy0zIGNxYS1nYXAtMyBjcWEtbWItMlwiPlxuICAgICAgPCEtLSBCYXNlbGluZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzEwMCVdIGNxYS10ZXh0LVsjNzM3MzczXVwiPkJhc2VsaW5lPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYmctWyNGNUY1RjVdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTVFNV0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWgtWzExMnB4XSBjcWEtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25JbWFnZUNsaWNrKCdiYXNlbGluZScpXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFzY3JlZW5zaG90cz8uYmFzZWxpbmVcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMjUuMzMzMyA0SDYuNjY2NjdDNS4xOTM5MSA0IDQgNS4xOTM5MSA0IDYuNjY2NjdWMjUuMzMzM0M0IDI2LjgwNjEgNS4xOTM5MSAyOCA2LjY2NjY3IDI4SDI1LjMzMzNDMjYuODA2MSAyOCAyOCAyNi44MDYxIDI4IDI1LjMzMzNWNi42NjY2N0MyOCA1LjE5MzkxIDI2LjgwNjEgNCAyNS4zMzMzIDRaXCIgc3Ryb2tlPVwiIzczNzM3M1wiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTExLjk5OTcgMTQuNjY3M0MxMy40NzI0IDE0LjY2NzMgMTQuNjY2MyAxMy40NzM0IDE0LjY2NjMgMTIuMDAwN0MxNC42NjYzIDEwLjUyNzkgMTMuNDcyNCA5LjMzMzk4IDExLjk5OTcgOS4zMzM5OEMxMC41MjY5IDkuMzMzOTggOS4zMzMwMSAxMC41Mjc5IDkuMzMzMDEgMTIuMDAwN0M5LjMzMzAxIDEzLjQ3MzQgMTAuNTI2OSAxNC42NjczIDExLjk5OTcgMTQuNjY3M1pcIiBzdHJva2U9XCIjNzM3MzczXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMjggMjAuMDAwOUwyMy44ODUzIDE1Ljg4NjJDMjMuMzg1MyAxNS4zODYzIDIyLjcwNzEgMTUuMTA1NSAyMiAxNS4xMDU1QzIxLjI5MjkgMTUuMTA1NSAyMC42MTQ3IDE1LjM4NjMgMjAuMTE0NyAxNS44ODYyTDggMjguMDAwOVwiIHN0cm9rZT1cIiM3MzczNzNcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGltZyAjYmFzZWxpbmVJbWFnZSAqbmdJZj1cImJhc2VsaW5lSW1hZ2VVcmxcIiBbc3JjXT1cImJhc2VsaW5lSW1hZ2VVcmxcIiBhbHQ9XCJCYXNlbGluZVwiIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtaC1mdWxsIGNxYS1vYmplY3QtY292ZXIgY3FhLXJvdW5kZWQtbGdcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEN1cnJlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtdGV4dC1bIzczNzM3M11cIj5DdXJyZW50PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYmctWyNGRUYyRjNdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0Y5QzJDNV0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWgtWzExMnB4XSBjcWEtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25JbWFnZUNsaWNrKCdjdXJyZW50JylcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNjcmVlbnNob3RzPy5jdXJyZW50XCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXRleHQtWyNFRjQ0NDRdXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTI1LjMzMzMgNEg2LjY2NjY3QzUuMTkzOTEgNCA0IDUuMTkzOTEgNCA2LjY2NjY3VjI1LjMzMzNDNCAyNi44MDYxIDUuMTkzOTEgMjggNi42NjY2NyAyOEgyNS4zMzMzQzI2LjgwNjEgMjggMjggMjYuODA2MSAyOCAyNS4zMzMzVjYuNjY2NjdDMjggNS4xOTM5MSAyNi44MDYxIDQgMjUuMzMzMyA0WlwiIHN0cm9rZT1cIiNFNzAwMEJcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMS45OTk3IDE0LjY2NzNDMTMuNDcyNCAxNC42NjczIDE0LjY2NjMgMTMuNDczNCAxNC42NjYzIDEyLjAwMDdDMTQuNjY2MyAxMC41Mjc5IDEzLjQ3MjQgOS4zMzM5OCAxMS45OTk3IDkuMzMzOThDMTAuNTI2OSA5LjMzMzk4IDkuMzMzMDEgMTAuNTI3OSA5LjMzMzAxIDEyLjAwMDdDOS4zMzMwMSAxMy40NzM0IDEwLjUyNjkgMTQuNjY3MyAxMS45OTk3IDE0LjY2NzNaXCIgc3Ryb2tlPVwiI0U3MDAwQlwiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTI4IDIwLjAwMDlMMjMuODg1MyAxNS44ODYyQzIzLjM4NTMgMTUuMzg2MyAyMi43MDcxIDE1LjEwNTUgMjIgMTUuMTA1NUMyMS4yOTI5IDE1LjEwNTUgMjAuNjE0NyAxNS4zODYzIDIwLjExNDcgMTUuODg2Mkw4IDI4LjAwMDlcIiBzdHJva2U9XCIjRTcwMDBCXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCJzY3JlZW5zaG90cz8uY3VycmVudFwiIFtzcmNdPVwic2NyZWVuc2hvdHMuY3VycmVudFwiIGFsdD1cIkN1cnJlbnRcIiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWgtZnVsbCBjcWEtb2JqZWN0LWNvdmVyIGNxYS1yb3VuZGVkLWxnXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEaWZmZXJlbmNlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRleHQtWyM3MzczNzNdXCI+RGlmZmVyZW5jZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLVsjRkVGMkYzXSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNGOUMyQzVdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1oLVsxMTJweF0gY3FhLWN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uSW1hZ2VDbGljaygnZGlmZmVyZW5jZScpXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFzY3JlZW5zaG90cz8uZGlmZmVyZW5jZVwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS10ZXh0LVsjRUY0NDQ0XVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yNS4zMzMzIDRINi42NjY2N0M1LjE5MzkxIDQgNCA1LjE5MzkxIDQgNi42NjY2N1YyNS4zMzMzQzQgMjYuODA2MSA1LjE5MzkxIDI4IDYuNjY2NjcgMjhIMjUuMzMzM0MyNi44MDYxIDI4IDI4IDI2LjgwNjEgMjggMjUuMzMzM1Y2LjY2NjY3QzI4IDUuMTkzOTEgMjYuODA2MSA0IDI1LjMzMzMgNFpcIiBzdHJva2U9XCIjRTcwMDBCXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMTEuOTk5NyAxNC42NjczQzEzLjQ3MjQgMTQuNjY3MyAxNC42NjYzIDEzLjQ3MzQgMTQuNjY2MyAxMi4wMDA3QzE0LjY2NjMgMTAuNTI3OSAxMy40NzI0IDkuMzMzOTggMTEuOTk5NyA5LjMzMzk4QzEwLjUyNjkgOS4zMzM5OCA5LjMzMzAxIDEwLjUyNzkgOS4zMzMwMSAxMi4wMDA3QzkuMzMzMDEgMTMuNDczNCAxMC41MjY5IDE0LjY2NzMgMTEuOTk5NyAxNC42NjczWlwiIHN0cm9rZT1cIiNFNzAwMEJcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0yOCAyMC4wMDA5TDIzLjg4NTMgMTUuODg2MkMyMy4zODUzIDE1LjM4NjMgMjIuNzA3MSAxNS4xMDU1IDIyIDE1LjEwNTVDMjEuMjkyOSAxNS4xMDU1IDIwLjYxNDcgMTUuMzg2MyAyMC4xMTQ3IDE1Ljg4NjJMOCAyOC4wMDA5XCIgc3Ryb2tlPVwiI0U3MDAwQlwiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwic2NyZWVuc2hvdHM/LmRpZmZlcmVuY2VcIiBbc3JjXT1cInNjcmVlbnNob3RzLmRpZmZlcmVuY2VcIiBhbHQ9XCJEaWZmZXJlbmNlXCIgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1oLWZ1bGwgY3FhLW9iamVjdC1jb3ZlciBjcWEtcm91bmRlZC1sZ1wiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEFjdGlvbiBCdXR0b25zIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWVuZCBjcWEtZ2FwLTIgY3FhLWZsZXgtd3JhcFwiPlxuICAgICAgPGJ1dHRvbiBcbiAgICAgICAgKGNsaWNrKT1cIm9uTWFrZUN1cnJlbnRCYXNlbGluZSgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0N1cnJlbnRJbWFnZUF2YWlsYWJsZSB8fCBpc01ha2luZ0N1cnJlbnRCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgW2NsYXNzLmNxYS1vcGFjaXR5LTUwXT1cIiFpc0N1cnJlbnRJbWFnZUF2YWlsYWJsZSB8fCBpc01ha2luZ0N1cnJlbnRCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgW2NsYXNzLmNxYS1jdXJzb3Itbm90LWFsbG93ZWRdPVwiIWlzQ3VycmVudEltYWdlQXZhaWxhYmxlIHx8IGlzTWFraW5nQ3VycmVudEJhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF0gPT09IHRydWVcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1wbC0yIGNxYS1wci00IGNxYS1weS1bMnB4XSBjcWEtcm91bmRlZC1sZyBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLXRleHQtWyMyMTIxMjJdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjMjEyMTIyXSBkaXNhYmxlZDpjcWEtY3Vyc29yLW5vdC1hbGxvd2VkXCI+XG4gICAgICAgIDxzdmcgKm5nSWY9XCIhaXNNYWtpbmdDdXJyZW50QmFzZWxpbmU/Llt0ZXN0U3RlcFJlc3VsdElkXVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTQuMzk3NTQgNy45Mzc1MkwyLjMxMjU0IDUuODUyNTJMMS42MDI1NCA2LjU1NzUyTDQuMzk3NTQgOS4zNTI1MkwxMC4zOTc1IDMuMzUyNTJMOS42OTI1NCAyLjY0NzUyTDQuMzk3NTQgNy45Mzc1MlpcIiBmaWxsPVwiYmxhY2tcIi8+PC9zdmc+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJpc01ha2luZ0N1cnJlbnRCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWRhc2hhcnJheT1cIjggNFwiIG9wYWNpdHk9XCIwLjNcIi8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtZGFzaGFycmF5PVwiOCA0XCIgc3Ryb2tlLWRhc2hvZmZzZXQ9XCIyXCI+XG4gICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIHZhbHVlcz1cIjAgNiA2OzM2MCA2IDZcIiBkdXI9XCIxc1wiIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiLz5cbiAgICAgICAgICA8L2NpcmNsZT5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxzcGFuPnt7IGlzTWFraW5nQ3VycmVudEJhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF0gPT09IHRydWUgPyAnTG9hZGluZy4uLicgOiAnTWFrZSBjdXJyZW50IGJhc2VsaW5lJyB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBcbiAgICAgICAgKGNsaWNrKT1cIm9uVXBsb2FkQmFzZWxpbmUoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1VwbG9hZGluZ0Jhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF0gPT09IHRydWVcIlxuICAgICAgICBbY2xhc3MuY3FhLW9wYWNpdHktNTBdPVwiaXNVcGxvYWRpbmdCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgW2NsYXNzLmNxYS1jdXJzb3Itbm90LWFsbG93ZWRdPVwiaXNVcGxvYWRpbmdCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcGwtMiBjcWEtcHItNCBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQtbGcgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJnLXRyYW5zcGFyZW50IGNxYS10ZXh0LVsjMjEyMTIyXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIzIxMjEyMl0gZGlzYWJsZWQ6Y3FhLWN1cnNvci1ub3QtYWxsb3dlZFwiPlxuICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzVXBsb2FkaW5nQmFzZWxpbmU/Llt0ZXN0U3RlcFJlc3VsdElkXVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTkgNy41VjlIM1Y3LjVIMlY5QzIgOS41NSAyLjQ1IDEwIDMgMTBIOUM5LjU1IDEwIDEwIDkuNTUgMTAgOVY3LjVIOVpNMy41IDQuNUw0LjIwNSA1LjIwNUw1LjUgMy45MTVWOEg2LjVWMy45MTVMNy43OTUgNS4yMDVMOC41IDQuNUw2IDJMMy41IDQuNVpcIiBmaWxsPVwiYmxhY2tcIi8+PC9zdmc+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJpc1VwbG9hZGluZ0Jhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF0gPT09IHRydWVcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgc3R5bGU9XCJhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWRhc2hhcnJheT1cIjggNFwiIG9wYWNpdHk9XCIwLjNcIi8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtZGFzaGFycmF5PVwiOCA0XCIgc3Ryb2tlLWRhc2hvZmZzZXQ9XCIyXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHNwYW4+e3sgaXNVcGxvYWRpbmdCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlID8gJ1VwbG9hZGluZy4uLicgOiAnVXBsb2FkIGJhc2VsaW5lJyB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPCEtLSBIaWRkZW4gZmlsZSBpbnB1dCAtLT5cbiAgICAgIDxpbnB1dCBcbiAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICB0eXBlPVwiZmlsZVwiIFxuICAgICAgICBhY2NlcHQ9XCJpbWFnZS8qXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIFxuICAgICAgLz5cbiAgICAgIDwhLS0gPGJ1dHRvbiBcbiAgICAgICAgKGNsaWNrKT1cIm9uQW5hbHl6ZSgpXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcGwtMiBjcWEtcHItNCBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQtbGcgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJnLXRyYW5zcGFyZW50IGNxYS10ZXh0LVsjMjEyMTIyXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIzIxMjEyMl1cIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjExXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDExIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk01LjUxMTUgMEM1LjU3OTMxIDAuMDMwMzE3OCA1LjYwODI4IDAuMTA0MzU0IDUuNjM2MDQgMC4xNzMxMjhDNS42NDk5NiAwLjIxMzIgNS42NjI3MyAwLjI1MzQ4OSA1LjY3NTEzIDAuMjk0MUM1LjY3OTk4IDAuMzA5NjYyIDUuNjg0ODQgMC4zMjUyMjQgNS42ODk4NCAwLjM0MTI1OEM1Ljc1NDMgMC41NTA2NzMgNS44MTE3MiAwLjc2MjMzMSA1Ljg2OTQ2IDAuOTczODRDNS44ODI1MSAxLjAyMTU5IDUuODk1NjMgMS4wNjkzMiA1LjkwODc0IDEuMTE3MDRDNS45NzU1MSAxLjM2MDA1IDYuMDQxNzcgMS42MDMyIDYuMTA3NjcgMS44NDY0NkM2LjExNjkzIDEuODgwNjIgNi4xMjYxOSAxLjkxNDc5IDYuMTM1NDUgMS45NDg5NUM2LjE2MTU2IDIuMDQ1MjcgNi4xODc2NCAyLjE0MTU5IDYuMjEzNTcgMi4yMzc5NkM2LjI2ODM3IDIuNDQxNTkgNi4zMjQ2NyAyLjY0NDYzIDYuMzg0NjMgMi44NDY2OEM2LjM4OTg2IDIuODY0MzUgNi4zOTUxIDIuODgyMDMgNi40MDA1IDIuOTAwMjRDNi41NTYyNCAzLjQyIDYuNzc3MDEgMy44ODU4MyA3LjEzODg4IDQuMjgyNjJDNy4xNDc4NCA0LjI5Mjk0IDcuMTU2OCA0LjMwMzI1IDcuMTY2MDMgNC4zMTM4OEM3LjMyMDUgNC40ODU4MyA3LjUxODczIDQuNjIzNjEgNy43MTY4NyA0LjczNDgxQzcuNzI2OTYgNC43NDA1NyA3LjczNzA1IDQuNzQ2MzIgNy43NDc0NSA0Ljc1MjI1QzguMzMwNTEgNS4wNzkgOS4wMzE2MiA1LjIyMjcyIDkuNjYzMTMgNS40MTRDOS45Mzk4NCA1LjQ5Nzg3IDEwLjIxNTcgNS41ODQzOCAxMC40OTA1IDUuNjc0N0MxMC41MDk5IDUuNjgxMDUgMTAuNTI5MiA1LjY4NzM4IDEwLjU0ODUgNS42OTM3QzEwLjYwNjIgNS43MTI2IDEwLjY2MzkgNS43MzE4MiAxMC43MjE1IDUuNzUxM0MxMC43MzQ5IDUuNzU1NzIgMTAuNzQ4MyA1Ljc2MDE1IDEwLjc2MjEgNS43NjQ3MUMxMC44NDE1IDUuNzkyMDggMTAuOTE3NCA1LjgyNDM5IDEwLjk4MjUgNS44ODAzNkMxMS4wMDIzIDUuOTI1NTggMTEuMDAyMyA1LjkyNTU4IDEwLjk5NjkgNS45NzA4QzEwLjkzMzYgNi4wMzY0OCAxMC44NzA3IDYuMDY3MjggMTAuNzg3MSA2LjA5NzMzQzEwLjc3NTEgNi4xMDE3NiAxMC43NjMyIDYuMTA2MiAxMC43NTA4IDYuMTEwNzdDMTAuNjA5NiA2LjE2MjQ0IDEwLjQ2NjUgNi4yMDc2NiAxMC4zMjMyIDYuMjUyNDdDMTAuMjkzOCA2LjI2MTc0IDEwLjI2NDQgNi4yNzEwMSAxMC4yMzUgNi4yODAyOEMxMC4wNTM3IDYuMzM3MzUgOS44NzE5OSA2LjM5MzIgOS42OTAxNCA2LjQ0ODQyQzkuNDUwNjEgNi41MjExNyA5LjIxMTQzIDYuNTk1MTIgOC45NzI0OSA2LjY2OTkxQzguOTMzMzQgNi42ODIxNiA4Ljg5NDE4IDYuNjk0MzcgOC44NTUwMSA2LjcwNjU0QzguNjQ5MzEgNi43NzA0OCA4LjQ0NDYyIDYuODM2NzEgOC4yNDE2MiA2LjkwOTQ0QzguMjI0NzggNi45MTU0NSA4LjIwNzk0IDYuOTIxNDcgOC4xOTA1OSA2LjkyNzY2QzcuNTEwNjkgNy4xNzQ0MyA2Ljk5MjQ1IDcuNjM0NzggNi42NjgwOSA4LjMwNzk5QzYuNDkzMjEgOC42ODYzNCA2LjM5MDA2IDkuMDk1NDggNi4yODQ4MyA5LjQ5OTI5QzYuMjU2MzcgOS42MDgyNSA2LjIyNjExIDkuNzE2NiA2LjE5NTUgOS44MjQ5MkM2LjE3MTQ5IDkuOTEwMTUgNi4xNDgwMyA5Ljk5NTUxIDYuMTI1MTUgMTAuMDgxMUM2LjEyMjQzIDEwLjA5MTMgNi4xMTk3IDEwLjEwMTQgNi4xMTY5IDEwLjExMTlDNi4xMDM3IDEwLjE2MTIgNi4wOTA1NiAxMC4yMTA2IDYuMDc3NTIgMTAuMjU5OUM2LjA0NDEzIDEwLjM4NTEgNi4wMDgxNyAxMC41MDkyIDUuOTcxMjMgMTAuNjMzMkM1LjkwNTY3IDEwLjg1MzYgNS44NDYwMSAxMS4wNzU3IDUuNzg2NzIgMTEuMjk4QzUuNjk3MzIgMTEuNjMyOCA1LjY5NzMyIDExLjYzMjggNS42NDY2MiAxMS43OTM3QzUuNjQzMjYgMTEuODA0NSA1LjYzOTkgMTEuODE1MyA1LjYzNjQ0IDExLjgyNjRDNS42MTc5MyAxMS44ODM3IDUuNTk4OSAxMS45MzY0IDUuNTYzODggMTEuOTg0OUM1LjUxMDYgMTEuOTk3MiA1LjUxMDYgMTEuOTk3MiA1LjQ2MjczIDEyQzUuNDA4MDEgMTEuOTE2OCA1LjM3MTc3IDExLjgzNjEgNS4zNDI3MyAxMS43NDAxQzUuMzM4NTEgMTEuNzI2NSA1LjMzNDI4IDExLjcxMjkgNS4zMjk5MyAxMS42OTg5QzUuMjc2MTQgMTEuNTIzMyA1LjIyODA3IDExLjM0NTkgNS4xNzk5OSAxMS4xNjg2QzUuMTY4OTggMTEuMTI4MSA1LjE1NzkxIDExLjA4NzUgNS4xNDY4NSAxMS4wNDdDNS4wNjQ0IDEwLjc0NDggNC45ODMzMSAxMC40NDIzIDQuOTAyMzQgMTAuMTM5N0M0LjU2NTA5IDguNjQyOTkgNC41NjUwOSA4LjY0Mjk5IDMuNzE0MzMgNy40MzI4OEMzLjcwMDcgNy40MjEyOCAzLjY4NzA2IDcuNDA5NjggMy42NzMwMiA3LjM5NzczQzMuMTE1NiA2LjkzMjAzIDIuMzgxMyA2Ljc1OTU5IDEuNzA4ODUgNi41NTc1MUMxLjU0MjU0IDYuNTA3NDkgMS4zNzYyOCA2LjQ1NzI0IDEuMjEwMDQgNi40MDY5N0MxLjE5NTUgNi40MDI1OCAxLjE5NTUgNi40MDI1OCAxLjE4MDY3IDYuMzk4MDlDMC45NDA4ODEgNi4zMjU1NiAwLjcwMTE1NyA2LjI1MjgzIDAuNDYyMjc0IDYuMTc3MTFDMC40NTIxNjggNi4xNzM5MyAwLjQ0MjA2MyA2LjE3MDc1IDAuNDMxNjUxIDYuMTY3NDdDMC4wNjQ2NTQzIDYuMDUxNzggMC4wNjQ2NTQzIDYuMDUxNzggMC4wMDA3OTAyMTEgNS45NzA4Qy0wLjAwMTAxNTk5IDUuOTM0MDYgLTAuMDAxMDE1OTkgNS45MzQwNiAwLjAxNTIzOTggNS44OTU0M0MwLjA4MTk5MDkgNS44MjcyIDAuMTQ2NzYgNS43OTc5NyAwLjIzNDg2MiA1Ljc2ODI1QzAuMjQ3NjE4IDUuNzYzNzggMC4yNjAzNzUgNS43NTkzMSAwLjI3MzUxOCA1Ljc1NDcxQzAuMzEyNTg3IDUuNzQxMSAwLjM1MTc0MSA1LjcyNzc5IDAuMzkwOTI5IDUuNzE0NTVDMC40MDIxMTIgNS43MTA3MyAwLjQxMzI5NSA1LjcwNjkgMC40MjQ4MTcgNS43MDI5NkMwLjUwMzkwNCA1LjY3NTkgMC41ODMyNzUgNS42NDk4NiAwLjY2Mjc2MiA1LjYyNDEyQzAuNjgyMjk0IDUuNjE3NzcgMC42ODIyOTQgNS42MTc3NyAwLjcwMjIyIDUuNjExMjlDMS4wNDE2NiA1LjUwMTE2IDEuMzgzMzIgNS4zOTg2NyAxLjcyNDg3IDUuMjk1OTVDMS45NzkzOSA1LjIxOTM5IDIuMjMzNDcgNS4xNDE1NyAyLjQ4Njc0IDUuMDYwNjVDMi40OTgzOCA1LjA1Njk0IDIuNTEwMDEgNS4wNTMyNCAyLjUyMjAxIDUuMDQ5NDNDMy4xMDg3MiA0Ljg2MjYyIDMuNjgyMjkgNC41OTc1NSA0LjA2MTEyIDQuMDcxNkM0LjA2Njc5IDQuMDYzOCA0LjA3MjQ3IDQuMDU1OTkgNC4wNzgzMSA0LjA0Nzk2QzQuNTAwMTkgMy40NjQyIDQuNjY0NyAyLjc1NDMgNC44NDg1IDIuMDYxNjFDNC45MDg5NiAxLjgzMzc5IDQuOTcwMTUgMS42MDYxOSA1LjAzMTU1IDEuMzc4NjVDNS4wNDg1NiAxLjMxNTY0IDUuMDY1NTMgMS4yNTI2MyA1LjA4MjQ0IDEuMTg5NTlDNS4xNTAzNyAwLjkzNjM4NSA1LjIxOTMyIDAuNjgzNTIzIDUuMjkyMjIgMC40MzE4MThDNS4yOTkwNCAwLjQwODI0OCA1LjMwNTgzIDAuMzg0NjY3IDUuMzEyNTkgMC4zNjEwNzZDNS40MTQ2NiAwLjAwNTMxNjgxIDUuNDE0NjYgMC4wMDUzMTY4MSA1LjUxMTUgMFpcIiBmaWxsPVwiIzE2MTYxN1wiLz48cGF0aCBkPVwiTTguODQzOTEgMC43NDA0NDNDOC45MTAyNCAwLjgxODc2MiA4LjkyMzQ5IDAuOTEwODA2IDguOTQ0MTUgMS4wMTA4MUM5LjAxMzA1IDEuMzI0OTkgOS4wOTI0MSAxLjYxMzg4IDkuMzY3ODcgMS43OTYzOEM5LjUzNzgyIDEuODk0NDMgOS43NDAzNyAxLjkzOTA0IDkuOTI4NjcgMS45ODExOEMxMC4wMDgyIDEuOTk5MzMgMTAuMDc1MyAyLjAyMzQxIDEwLjE0MzUgMi4wNzE1OEMxMC4xNTg4IDIuMDk3MDEgMTAuMTU4OCAyLjA5NzAxIDEwLjE1NzkgMi4xNDEyOUMxMC4xNDIxIDIuMTk1MTMgMTAuMTI4MiAyLjIxMjUgMTAuMDg2NiAyLjI0Nzc0QzEwLjA0MSAyLjI2MzY0IDEwLjA0MSAyLjI2MzY0IDkuOTg2MzMgMi4yNzYwMUM5Ljk2NTY0IDIuMjgwOTYgOS45NDQ5NiAyLjI4NTk3IDkuOTI0MyAyLjI5MTAyQzkuOTEzMjIgMi4yOTM3IDkuOTAyMTUgMi4yOTYzOCA5Ljg5MDc1IDIuMjk5MTRDOS41NTQwMSAyLjM4MDM5IDkuNTU0MDEgMi4zODAzOSA5LjI2Mjk1IDIuNTY0MjhDOS4yNTM0OCAyLjU3MjIyIDkuMjQ0MDIgMi41ODAxNyA5LjIzNDI3IDIuNTg4MzZDOS4wMjYyNSAyLjc3OTcgOC45ODIyNiAzLjA5OCA4LjkxOTYzIDMuMzY0NjRDOC45MTYwNSAzLjM3OTI4IDguOTEyNDYgMy4zOTM5MyA4LjkwODc2IDMuNDA5MDFDOC45MDU2NiAzLjQyMTk4IDguOTAyNTUgMy40MzQ5NCA4Ljg5OTM1IDMuNDQ4M0M4Ljg4NTg0IDMuNDg3ODggOC44NzE4MyAzLjUxMzY5IDguODQzOTEgMy41NDQwMkM4Ljc2NjE0IDMuNTU0MzIgOC43NjYxNCAzLjU1NDMyIDguNzI4MzEgMy41NDQwMkM4LjY2ODE0IDMuNDk1MzcgOC42NTQ2OCAzLjQzOTk2IDguNjM4OTYgMy4zNjU1QzguNjM2MzMgMy4zNTM5NyA4LjYzMzY5IDMuMzQyNDQgOC42MzA5OCAzLjMzMDU2QzguNjIyNTkgMy4yOTM3NCA4LjYxNDQ3IDMuMjU2ODYgOC42MDYzOSAzLjIxOTk1QzguNTQzMDIgMi45MzI1OSA4LjQ3MTQ4IDIuNjUwNjQgOC4yMTg3OSAyLjQ4MjJDOC4wMjEzMSAyLjM2NzMyIDcuNzgxMTggMi4zMTI5OCA3LjU2MDQ1IDIuMjY5MTFDNy40OTk5NiAyLjI1NTk3IDcuNDY1MyAyLjIzOTQ0IDcuNDI3ODUgMi4xODc0NUM3LjQxOTcyIDIuMTM0NyA3LjQxOTcyIDIuMTM0NyA3LjQyNzg1IDIuMDgxOTRDNy40ODU0MSAyLjAxOTc5IDcuNTQ1OTcgMi4wMDQ2MiA3LjYyMzgyIDEuOTg1ODVDNy42NDgzNSAxLjk3OTUyIDcuNjcyODYgMS45NzMxNCA3LjY5NzM3IDEuOTY2NzFDNy43MTAwMyAxLjk2MzQyIDcuNzIyNjkgMS45NjAxMiA3LjczNTc0IDEuOTU2NzNDNy44MDAzMiAxLjkzOTM5IDcuODY0MjUgMS45MTk5NSA3LjkyODE3IDEuOTAwMTJDNy45Mzk3OCAxLjg5NjYxIDcuOTUxMzkgMS44OTMwOSA3Ljk2MzM2IDEuODg5NDdDOC4wOTMyOSAxLjg0ODk1IDguMjA1NDEgMS43OTcxMiA4LjMwOTI3IDEuNzA1MTJDOC4zMTg5NiAxLjY5NjggOC4zMjg2NCAxLjY4ODQ4IDguMzM4NjIgMS42Nzk5MkM4LjUwMDI2IDEuNTI4MTcgOC41NTUxOCAxLjMwMDIgOC42MDUwNCAxLjA4NzQ4QzguNjA4ODQgMS4wNzEzMyA4LjYxMjY0IDEuMDU1MTggOC42MTY1NSAxLjAzODU0QzguNjI0MTEgMS4wMDYxIDguNjMxNTQgMC45NzM2MjIgOC42Mzg4MiAwLjk0MTExQzguNjQ0MDMgMC45MTg0ODkgOC42NDQwMyAwLjkxODQ4OSA4LjY0OTM1IDAuODk1NDEyQzguNjUyMzggMC44ODE4OTkgOC42NTU0MiAwLjg2ODM4NSA4LjY1ODU1IDAuODU0NDYyQzguNjcxODYgMC44MTE0NDEgOC42ODkzNSAwLjc3NzY2IDguNzEzODYgMC43NDA0NDNDOC43NjA5NiAwLjcxNTg3OCA4Ljc5NDAxIDAuNzI2OTgzIDguODQzOTEgMC43NDA0NDNaXCIgZmlsbD1cIiM0MTQxNDZcIi8+PHBhdGggZD1cIk0yLjE5NDQ2IDguMzI5NjJDMi4yMTE2NiA4LjMyOTc1IDIuMjExNjYgOC4zMjk3NSAyLjIyOTE5IDguMzI5ODhDMi4zNTI1MyA4LjMzMzggMi40MzU5NyA4LjM3NTAzIDIuNTI2OCA4LjQ2MTUxQzIuNjMyNSA4LjU4MDYxIDIuNjgxMyA4LjcxNDk3IDIuNjc4NTIgOC44NzU0OUMyLjY2NjY2IDkuMDA1NjUgMi41OTMwNyA5LjExOTI5IDIuNTAyODIgOS4yMDcyN0MyLjM5NjU4IDkuMjk2NzIgMi4yODk0MSA5LjMyNjI4IDIuMTUzNjYgOS4zMjIxNUMyLjAzOTE5IDkuMzA4MjUgMS45MzE1MSA5LjI1MTUzIDEuODUwMzggOS4xNjYxOEMxLjc0OTUgOS4wMjI1OCAxLjcyIDguODkwODcgMS43MzQ3OSA4LjcxMzk4QzEuNzY1MzMgOC41NzQ3MiAxLjg1MzM3IDguNDYxNjcgMS45NjU5OCA4LjM4MjM4QzIuMDQ0MjEgOC4zNDEwMSAyLjEwNzEzIDguMzI4ODYgMi4xOTQ0NiA4LjMyOTYyWlwiIGZpbGw9XCIjNEM0QzUxXCIvPjwvc3ZnPlxuICAgICAgICBBbmFseXplXG4gICAgICA8L2J1dHRvbj4gLS0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUmlnaHQgUGFuZWw6IExvZ3MgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtY29sLXNwYW4tMyBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIyNFNUU1RTVdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcHktMiBjcWEtcHgtMyBjcWEtaC1mdWxsIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1vdmVyZmxvdy1hdXRvXCJcbiAgICBzdHlsZT1cInNjcm9sbGJhci13aWR0aDogdGhpbjtcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1tYi0yXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLjY2NjYgMTJMMTQuNjY2NiA4TDEwLjY2NjYgNFwiIHN0cm9rZT1cIiMwQTBBMEFcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNS4zMzMzNyA0TDEuMzMzMzcgOEw1LjMzMzM3IDEyXCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICBMb2dzXG4gICAgPC9kaXY+XG4gICAgXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtdGV4dC1bIzczNzM3M11cIj5Db25zb2xlPC9kaXY+XG4gICAgICBcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGxvZyBvZiBsb2dzXCIgY2xhc3M9XCJjcWEtcHgtMiBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJyZWFrLXdvcmRzXCIgW25nQ2xhc3NdPVwiZ2V0TG9nQ2xhc3MobG9nLmxldmVsKVwiPlxuICAgICAgICB7eyBsb2cubWVzc2FnZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDxkaXYgKm5nSWY9XCIhbG9ncyB8fCBsb2dzLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwiY3FhLXB4LTIgY3FhLXB5LVsycHhdIGNxYS1yb3VuZGVkIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXSBjcWEtYmctWyNmOGY4ZjhdIGNxYS10ZXh0LWNlbnRlclwiPlxuICAgICAgICBObyBsb2dzIGF2YWlsYWJsZVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIDxhIFxuICAgICAgKm5nSWY9XCJzaG93RnVsbExvZ3NMaW5rICYmIGxvZ3M/Lmxlbmd0aFwiXG4gICAgICAoY2xpY2spPVwib25WaWV3RnVsbExvZ3MoKVwiXG4gICAgICBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLXRleHQtWyMzRjQzRUVdIGNxYS1mb250LW1lZGl1bSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWVuZCBjcWEtZ2FwLVsycHhdIGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtdW5kZXJsaW5lIGNxYS1tdC00XCI+XG4gICAgICBWaWV3IGZ1bGwgbG9ncyBJdGVyYXRpb25zXG4gICAgICA8ZGl2Pjxzdmcgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgOCA4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yLjAzODMzIDYuNzQzMzVMMi42MjgzMyA3LjMzMzM1TDUuOTYxNjYgNC4wMDAwMkwyLjYyODMzIDAuNjY2Njg3TDIuMDM4MzMgMS4yNTY2OUw0Ljc4MTY2IDQuMDAwMDJMMi4wMzgzMyA2Ljc0MzM1WlwiIGZpbGw9XCIjM0Y0M0VFXCIvPjwvc3ZnPjwvZGl2PlxuICAgIDwvYT4gLS0+XG4gIDwvZGl2PlxuXG4gIFxuICA8Y3FhLXZpc3VhbC1kaWZmZXJlbmNlLW1vZGFsXG4gICAgW2lzT3Blbl09XCJpc01vZGFsT3BlblwiXG4gICAgW2Jhc2VsaW5lVXJsXT1cInNjcmVlbnNob3RzPy5iYXNlbGluZSB8fCAnJ1wiXG4gICAgW2N1cnJlbnRVcmxdPVwic2NyZWVuc2hvdHM/LmN1cnJlbnQgfHwgJydcIlxuICAgIFtkaWZmZXJlbmNlVXJsXT1cInNjcmVlbnNob3RzPy5kaWZmZXJlbmNlIHx8ICcnXCJcbiAgICBbaW5pdGlhbFZpZXddPVwiaW5pdGlhbE1vZGFsVmlld1wiXG4gICAgKGNsb3NlKT1cIm9uQ2xvc2VNb2RhbCgpXCI+XG4gIDwvY3FhLXZpc3VhbC1kaWZmZXJlbmNlLW1vZGFsPlxuPC9kaXY+XG5cbjxzdHlsZT5cbiAgQGtleWZyYW1lcyBzcGluIHtcbiAgICBmcm9tIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbiAgfVxuPC9zdHlsZT4iXX0=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL3Zpc3VhbC1jb21wYXJpc29uL3Zpc3VhbC1jb21wYXJpc29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi92aXN1YWwtY29tcGFyaXNvbi92aXN1YWwtY29tcGFyaXNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBMEUsTUFBTSxlQUFlLENBQUM7Ozs7QUFzQjFKLE1BQU0sT0FBTyx5QkFBeUI7SUFxQnBDLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbEJqQyxxQkFBZ0IsR0FBYSxJQUFJLENBQUM7UUFDbEMsd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLDRCQUF1QixHQUFHLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR2Qsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLbEQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIscUJBQWdCLEdBQWtCLFVBQVUsQ0FBQztJQUdBLENBQUM7SUFFOUMsZUFBZTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDMUIsTUFBTSxnQkFB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bUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNNLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjcmVlbnNob3REYXRhLCBMb2dFbnRyeSwgRmFpbHVyZURldGFpbHMgfSBmcm9tICcuLi9leGVjdXRpb24tc3RlcC5tb2RlbHMnO1xuaW1wb3J0IHsgSW1hZ2VWaWV3VHlwZSB9IGZyb20gJy4uLy4uL3Zpc3VhbC1kaWZmZXJlbmNlLW1vZGFsL3Zpc3VhbC1kaWZmZXJlbmNlLW1vZGFsLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50IHtcbiAgdGVzdFN0ZXBSZXN1bHRJZDogc3RyaW5nO1xuICBjdXJyZW50VXJsOiBzdHJpbmc7XG4gIGZhaWx1cmVEZXRhaWxzPzogRmFpbHVyZURldGFpbHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgdXBsb2FkQmFzZWxpbmVFdmVudCB7XG4gIGZpbGU6IEZpbGU7XG4gIHRlc3RTdGVwUmVzdWx0SWQ6IHN0cmluZztcbiAgZmFpbHVyZURldGFpbHM/OiBGYWlsdXJlRGV0YWlscztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXZpc3VhbC1jb21wYXJpc29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Zpc3VhbC1jb21wYXJpc29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIFZpc3VhbENvbXBhcmlzb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBzY3JlZW5zaG90cz86IFNjcmVlbnNob3REYXRhO1xuICBASW5wdXQoKSBsb2dzPzogTG9nRW50cnlbXTtcbiAgQElucHV0KCkgc2hvd0Z1bGxMb2dzTGluaz86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBpc1VwbG9hZGluZ0Jhc2VsaW5lID0ge307XG4gIEBJbnB1dCgpIGlzTWFraW5nQ3VycmVudEJhc2VsaW5lID0ge307XG4gIEBJbnB1dCgpIGlzTGl2ZSA9IGZhbHNlO1xuICBASW5wdXQoKSB0ZXN0U3RlcFJlc3VsdElkITogc3RyaW5nO1xuICBcbiAgQE91dHB1dCgpIG1ha2VDdXJyZW50QmFzZWxpbmUgPSBuZXcgRXZlbnRFbWl0dGVyPG1ha2VDdXJyZW50QmFzZWxpbmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIHVwbG9hZEJhc2VsaW5lID0gbmV3IEV2ZW50RW1pdHRlcjx1cGxvYWRCYXNlbGluZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgYW5hbHl6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHZpZXdGdWxsTG9ncyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Jhc2VsaW5lSW1hZ2UnKSBiYXNlbGluZUltYWdlITogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PjtcbiAgXG4gIGlzTW9kYWxPcGVuID0gZmFsc2U7XG4gIGluaXRpYWxNb2RhbFZpZXc6IEltYWdlVmlld1R5cGUgPSAnYmFzZWxpbmUnO1xuICBiYXNlbGluZUltYWdlVXJsPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVCYXNlbGluZVVybCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzY3JlZW5zaG90cyddKSB7XG4gICAgICBjb25zdCBwcmV2aW91c0Jhc2VsaW5lID0gY2hhbmdlc1snc2NyZWVuc2hvdHMnXS5wcmV2aW91c1ZhbHVlPy5iYXNlbGluZTtcbiAgICAgIGNvbnN0IGN1cnJlbnRCYXNlbGluZSA9IGNoYW5nZXNbJ3NjcmVlbnNob3RzJ10uY3VycmVudFZhbHVlPy5iYXNlbGluZTtcbiAgICAgIFxuICAgICAgaWYgKCFjaGFuZ2VzWydzY3JlZW5zaG90cyddLmlzRmlyc3RDaGFuZ2UoKSAmJiBwcmV2aW91c0Jhc2VsaW5lICE9PSBjdXJyZW50QmFzZWxpbmUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVCYXNlbGluZVVybCh0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snc2NyZWVuc2hvdHMnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVCYXNlbGluZVVybChmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVCYXNlbGluZVVybChmb3JjZVJlbG9hZDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NyZWVuc2hvdHM/LmJhc2VsaW5lKSB7XG4gICAgICBjb25zdCBiYXNlbGluZVVybCA9IHRoaXMuc2NyZWVuc2hvdHMuYmFzZWxpbmU7XG4gICAgICBcbiAgICAgIHRoaXMuYmFzZWxpbmVJbWFnZVVybCA9IGJhc2VsaW5lVXJsO1xuICAgICAgXG4gICAgICBpZiAoZm9yY2VSZWxvYWQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuYmFzZWxpbmVJbWFnZT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5iYXNlbGluZUltYWdlLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpbWcuc3JjID0gJyc7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICBpbWcuc3JjID0gYmFzZWxpbmVVcmw7XG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJhc2VsaW5lSW1hZ2VVcmwgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNDdXJyZW50SW1hZ2VBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zY3JlZW5zaG90cz8uY3VycmVudDtcbiAgfVxuXG4gIG9uTWFrZUN1cnJlbnRCYXNlbGluZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY3JlZW5zaG90cz8uY3VycmVudCkge1xuICAgICAgY29uc29sZS5sb2coJ01ha2UgY3VycmVudCBiYXNlbGluZSBjbGlja2VkIHdpdGggVVJMOicsIHRoaXMuc2NyZWVuc2hvdHMuY3VycmVudCk7XG4gICAgICB0aGlzLm1ha2VDdXJyZW50QmFzZWxpbmUuZW1pdCh7XG4gICAgICAgIHRlc3RTdGVwUmVzdWx0SWQ6IHRoaXMudGVzdFN0ZXBSZXN1bHRJZCxcbiAgICAgICAgY3VycmVudFVybDogdGhpcy5zY3JlZW5zaG90cy5jdXJyZW50XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblVwbG9hZEJhc2VsaW5lKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdVcGxvYWQgYmFzZWxpbmUgY2xpY2tlZCcpO1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1swXTtcbiAgICAgIGNvbnNvbGUubG9nKCdGaWxlIHNlbGVjdGVkOicsIGZpbGUubmFtZSk7XG4gICAgICB0aGlzLnVwbG9hZEJhc2VsaW5lLmVtaXQoe1xuICAgICAgICBmaWxlOiBmaWxlLFxuICAgICAgICB0ZXN0U3RlcFJlc3VsdElkOiB0aGlzLnRlc3RTdGVwUmVzdWx0SWRcbiAgICAgIH0pO1xuICAgICAgLy8gUmVzZXQgZmlsZSBpbnB1dFxuICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICBvbkFuYWx5emUoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0FuYWx5emUgY2xpY2tlZCcpO1xuICAgIHRoaXMuYW5hbHl6ZS5lbWl0KCk7XG4gIH1cblxuICBvblZpZXdGdWxsTG9ncygpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnVmlldyBmdWxsIGxvZ3MgY2xpY2tlZCcpO1xuICAgIHRoaXMudmlld0Z1bGxMb2dzLmVtaXQoKTtcbiAgfVxuXG4gIGdldExvZ0NsYXNzKGxldmVsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjQkI0RDAwXSBjcWEtYmctWyNGRkZCRUJdJztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgcmV0dXJuICdjcWEtdGV4dC1bI0U3MDAwQl0gY3FhLWJnLVsjRkRFNUU3XSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjOUNBM0FGXSBjcWEtYmctWyNmOGY4ZjhdJztcbiAgICB9XG4gIH1cblxuICBvbkltYWdlQ2xpY2sodHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsTW9kYWxWaWV3ID0gdHlwZSBhcyBJbWFnZVZpZXdUeXBlO1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgb25DbG9zZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWdyaWQgY3FhLWdyaWQtY29scy0xMiBjcWEtZ2FwLXgtNCBjcWEtdy1mdWxsIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1oLWZ1bGwgY3FhLW92ZXJmbG93LWhpZGRlblwiPlxuICA8IS0tIExlZnQgUGFuZWw6IFNjcmVlbnNob3RzICYgVmlzdWFsIENvbXBhcmlzb24gLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtY29sLXNwYW4tOSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIyNFNUU1RTVdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcHQtMiBjcWEtcHgtMyBjcWEtcGItMSBjcWEtaC1mdWxsIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1vdmVyZmxvdy1hdXRvXCJcbiAgICBzdHlsZT1cInNjcm9sbGJhci13aWR0aDogdGhpbjtcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1tYi0yXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEyLjY2NjcgMkgzLjMzMzMzQzIuNTk2OTUgMiAyIDIuNTk2OTUgMiAzLjMzMzMzVjEyLjY2NjdDMiAxMy40MDMgMi41OTY5NSAxNCAzLjMzMzMzIDE0SDEyLjY2NjdDMTMuNDAzIDE0IDE0IDEzLjQwMyAxNCAxMi42NjY3VjMuMzMzMzNDMTQgMi41OTY5NSAxMy40MDMgMiAxMi42NjY3IDJaXCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02LjAwMDMzIDcuMzMyNjhDNi43MzY3MSA3LjMzMjY4IDcuMzMzNjYgNi43MzU3MyA3LjMzMzY2IDUuOTk5MzVDNy4zMzM2NiA1LjI2Mjk3IDYuNzM2NzEgNC42NjYwMiA2LjAwMDMzIDQuNjY2MDJDNS4yNjM5NSA0LjY2NjAyIDQuNjY2OTkgNS4yNjI5NyA0LjY2Njk5IDUuOTk5MzVDNC42NjY5OSA2LjczNTczIDUuMjYzOTUgNy4zMzI2OCA2LjAwMDMzIDcuMzMyNjhaXCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xNCAxMC4wMDA0TDExLjk0MjcgNy45NDMxMkMxMS42OTI2IDcuNjkzMTUgMTEuMzUzNiA3LjU1MjczIDExIDcuNTUyNzNDMTAuNjQ2NCA3LjU1MjczIDEwLjMwNzQgNy42OTMxNSAxMC4wNTczIDcuOTQzMTJMNCAxNC4wMDA0XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICBTY3JlZW5zaG90cyAmIFZpc3VhbCBDb21wYXJpc29uXG4gICAgPC9kaXY+XG4gICAgXG4gICAgPCEtLSBTY3JlZW5zaG90IENvbXBhcmlzb24gR3JpZCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWdyaWQgY3FhLWdyaWQtY29scy0zIGNxYS1nYXAtMyBjcWEtbWItMlwiPlxuICAgICAgPCEtLSBCYXNlbGluZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzEwMCVdIGNxYS10ZXh0LVsjNzM3MzczXVwiPkJhc2VsaW5lPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYmctWyNGNUY1RjVdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTVFNV0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWgtWzExMnB4XSBjcWEtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25JbWFnZUNsaWNrKCdiYXNlbGluZScpXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFzY3JlZW5zaG90cz8uYmFzZWxpbmVcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMjUuMzMzMyA0SDYuNjY2NjdDNS4xOTM5MSA0IDQgNS4xOTM5MSA0IDYuNjY2NjdWMjUuMzMzM0M0IDI2LjgwNjEgNS4xOTM5MSAyOCA2LjY2NjY3IDI4SDI1LjMzMzNDMjYuODA2MSAyOCAyOCAyNi44MDYxIDI4IDI1LjMzMzNWNi42NjY2N0MyOCA1LjE5MzkxIDI2LjgwNjEgNCAyNS4zMzMzIDRaXCIgc3Ryb2tlPVwiIzczNzM3M1wiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTExLjk5OTcgMTQuNjY3M0MxMy40NzI0IDE0LjY2NzMgMTQuNjY2MyAxMy40NzM0IDE0LjY2NjMgMTIuMDAwN0MxNC42NjYzIDEwLjUyNzkgMTMuNDcyNCA5LjMzMzk4IDExLjk5OTcgOS4zMzM5OEMxMC41MjY5IDkuMzMzOTggOS4zMzMwMSAxMC41Mjc5IDkuMzMzMDEgMTIuMDAwN0M5LjMzMzAxIDEzLjQ3MzQgMTAuNTI2OSAxNC42NjczIDExLjk5OTcgMTQuNjY3M1pcIiBzdHJva2U9XCIjNzM3MzczXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMjggMjAuMDAwOUwyMy44ODUzIDE1Ljg4NjJDMjMuMzg1MyAxNS4zODYzIDIyLjcwNzEgMTUuMTA1NSAyMiAxNS4xMDU1QzIxLjI5MjkgMTUuMTA1NSAyMC42MTQ3IDE1LjM4NjMgMjAuMTE0NyAxNS44ODYyTDggMjguMDAwOVwiIHN0cm9rZT1cIiM3MzczNzNcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGltZyAjYmFzZWxpbmVJbWFnZSAqbmdJZj1cImJhc2VsaW5lSW1hZ2VVcmxcIiBbc3JjXT1cImJhc2VsaW5lSW1hZ2VVcmxcIiBhbHQ9XCJCYXNlbGluZVwiIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtaC1mdWxsIGNxYS1vYmplY3QtY292ZXIgY3FhLXJvdW5kZWQtbGdcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEN1cnJlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtdGV4dC1bIzczNzM3M11cIj5DdXJyZW50PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYmctWyNGRUYyRjNdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0Y5QzJDNV0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWgtWzExMnB4XSBjcWEtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25JbWFnZUNsaWNrKCdjdXJyZW50JylcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNjcmVlbnNob3RzPy5jdXJyZW50XCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXRleHQtWyNFRjQ0NDRdXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTI1LjMzMzMgNEg2LjY2NjY3QzUuMTkzOTEgNCA0IDUuMTkzOTEgNCA2LjY2NjY3VjI1LjMzMzNDNCAyNi44MDYxIDUuMTkzOTEgMjggNi42NjY2NyAyOEgyNS4zMzMzQzI2LjgwNjEgMjggMjggMjYuODA2MSAyOCAyNS4zMzMzVjYuNjY2NjdDMjggNS4xOTM5MSAyNi44MDYxIDQgMjUuMzMzMyA0WlwiIHN0cm9rZT1cIiNFNzAwMEJcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMS45OTk3IDE0LjY2NzNDMTMuNDcyNCAxNC42NjczIDE0LjY2NjMgMTMuNDczNCAxNC42NjYzIDEyLjAwMDdDMTQuNjY2MyAxMC41Mjc5IDEzLjQ3MjQgOS4zMzM5OCAxMS45OTk3IDkuMzMzOThDMTAuNTI2OSA5LjMzMzk4IDkuMzMzMDEgMTAuNTI3OSA5LjMzMzAxIDEyLjAwMDdDOS4zMzMwMSAxMy40NzM0IDEwLjUyNjkgMTQuNjY3MyAxMS45OTk3IDE0LjY2NzNaXCIgc3Ryb2tlPVwiI0U3MDAwQlwiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTI4IDIwLjAwMDlMMjMuODg1MyAxNS44ODYyQzIzLjM4NTMgMTUuMzg2MyAyMi43MDcxIDE1LjEwNTUgMjIgMTUuMTA1NUMyMS4yOTI5IDE1LjEwNTUgMjAuNjE0NyAxNS4zODYzIDIwLjExNDcgMTUuODg2Mkw4IDI4LjAwMDlcIiBzdHJva2U9XCIjRTcwMDBCXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCJzY3JlZW5zaG90cz8uY3VycmVudFwiIFtzcmNdPVwic2NyZWVuc2hvdHMuY3VycmVudFwiIGFsdD1cIkN1cnJlbnRcIiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWgtZnVsbCBjcWEtb2JqZWN0LWNvdmVyIGNxYS1yb3VuZGVkLWxnXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEaWZmZXJlbmNlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRleHQtWyM3MzczNzNdXCI+RGlmZmVyZW5jZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLVsjRkVGMkYzXSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNGOUMyQzVdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1oLVsxMTJweF0gY3FhLWN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uSW1hZ2VDbGljaygnZGlmZmVyZW5jZScpXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFzY3JlZW5zaG90cz8uZGlmZmVyZW5jZVwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS10ZXh0LVsjRUY0NDQ0XVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yNS4zMzMzIDRINi42NjY2N0M1LjE5MzkxIDQgNCA1LjE5MzkxIDQgNi42NjY2N1YyNS4zMzMzQzQgMjYuODA2MSA1LjE5MzkxIDI4IDYuNjY2NjcgMjhIMjUuMzMzM0MyNi44MDYxIDI4IDI4IDI2LjgwNjEgMjggMjUuMzMzM1Y2LjY2NjY3QzI4IDUuMTkzOTEgMjYuODA2MSA0IDI1LjMzMzMgNFpcIiBzdHJva2U9XCIjRTcwMDBCXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjVcIiBzdHJva2Utd2lkdGg9XCIyLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMTEuOTk5NyAxNC42NjczQzEzLjQ3MjQgMTQuNjY3MyAxNC42NjYzIDEzLjQ3MzQgMTQuNjY2MyAxMi4wMDA3QzE0LjY2NjMgMTAuNTI3OSAxMy40NzI0IDkuMzMzOTggMTEuOTk5NyA5LjMzMzk4QzEwLjUyNjkgOS4zMzM5OCA5LjMzMzAxIDEwLjUyNzkgOS4zMzMwMSAxMi4wMDA3QzkuMzMzMDEgMTMuNDczNCAxMC41MjY5IDE0LjY2NzMgMTEuOTk5NyAxNC42NjczWlwiIHN0cm9rZT1cIiNFNzAwMEJcIiBzdHJva2Utb3BhY2l0eT1cIjAuNVwiIHN0cm9rZS13aWR0aD1cIjIuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0yOCAyMC4wMDA5TDIzLjg4NTMgMTUuODg2MkMyMy4zODUzIDE1LjM4NjMgMjIuNzA3MSAxNS4xMDU1IDIyIDE1LjEwNTVDMjEuMjkyOSAxNS4xMDU1IDIwLjYxNDcgMTUuMzg2MyAyMC4xMTQ3IDE1Ljg4NjJMOCAyOC4wMDA5XCIgc3Ryb2tlPVwiI0U3MDAwQlwiIHN0cm9rZS1vcGFjaXR5PVwiMC41XCIgc3Ryb2tlLXdpZHRoPVwiMi42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwic2NyZWVuc2hvdHM/LmRpZmZlcmVuY2VcIiBbc3JjXT1cInNjcmVlbnNob3RzLmRpZmZlcmVuY2VcIiBhbHQ9XCJEaWZmZXJlbmNlXCIgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1oLWZ1bGwgY3FhLW9iamVjdC1jb3ZlciBjcWEtcm91bmRlZC1sZ1wiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEFjdGlvbiBCdXR0b25zIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWVuZCBjcWEtZ2FwLTIgY3FhLWZsZXgtd3JhcFwiPlxuICAgICAgPGJ1dHRvbiBcbiAgICAgICAgKGNsaWNrKT1cIm9uTWFrZUN1cnJlbnRCYXNlbGluZSgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0N1cnJlbnRJbWFnZUF2YWlsYWJsZSB8fCBpc01ha2luZ0N1cnJlbnRCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgW2NsYXNzLmNxYS1vcGFjaXR5LTUwXT1cIiFpc0N1cnJlbnRJbWFnZUF2YWlsYWJsZSB8fCBpc01ha2luZ0N1cnJlbnRCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgW2NsYXNzLmNxYS1jdXJzb3Itbm90LWFsbG93ZWRdPVwiIWlzQ3VycmVudEltYWdlQXZhaWxhYmxlIHx8IGlzTWFraW5nQ3VycmVudEJhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF0gPT09IHRydWVcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1wbC0yIGNxYS1wci00IGNxYS1weS1bMnB4XSBjcWEtcm91bmRlZC1sZyBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLXRleHQtWyMyMTIxMjJdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjMjEyMTIyXSBkaXNhYmxlZDpjcWEtY3Vyc29yLW5vdC1hbGxvd2VkXCI+XG4gICAgICAgIDxzdmcgKm5nSWY9XCIhaXNNYWtpbmdDdXJyZW50QmFzZWxpbmU/Llt0ZXN0U3RlcFJlc3VsdElkXVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTQuMzk3NTQgNy45Mzc1MkwyLjMxMjU0IDUuODUyNTJMMS42MDI1NCA2LjU1NzUyTDQuMzk3NTQgOS4zNTI1MkwxMC4zOTc1IDMuMzUyNTJMOS42OTI1NCAyLjY0NzUyTDQuMzk3NTQgNy45Mzc1MlpcIiBmaWxsPVwiYmxhY2tcIi8+PC9zdmc+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJpc01ha2luZ0N1cnJlbnRCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWRhc2hhcnJheT1cIjggNFwiIG9wYWNpdHk9XCIwLjNcIi8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtZGFzaGFycmF5PVwiOCA0XCIgc3Ryb2tlLWRhc2hvZmZzZXQ9XCIyXCI+XG4gICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIHZhbHVlcz1cIjAgNiA2OzM2MCA2IDZcIiBkdXI9XCIxc1wiIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiLz5cbiAgICAgICAgICA8L2NpcmNsZT5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxzcGFuPnt7IGlzTWFraW5nQ3VycmVudEJhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF0gPT09IHRydWUgPyAnTG9hZGluZy4uLicgOiAnTWFrZSBjdXJyZW50IGJhc2VsaW5lJyB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBcbiAgICAgICAgKGNsaWNrKT1cIm9uVXBsb2FkQmFzZWxpbmUoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1VwbG9hZGluZ0Jhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF0gPT09IHRydWVcIlxuICAgICAgICBbY2xhc3MuY3FhLW9wYWNpdHktNTBdPVwiaXNVcGxvYWRpbmdCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgW2NsYXNzLmNxYS1jdXJzb3Itbm90LWFsbG93ZWRdPVwiaXNVcGxvYWRpbmdCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcGwtMiBjcWEtcHItNCBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQtbGcgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJnLXRyYW5zcGFyZW50IGNxYS10ZXh0LVsjMjEyMTIyXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIzIxMjEyMl0gZGlzYWJsZWQ6Y3FhLWN1cnNvci1ub3QtYWxsb3dlZFwiPlxuICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzVXBsb2FkaW5nQmFzZWxpbmU/Llt0ZXN0U3RlcFJlc3VsdElkXVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTkgNy41VjlIM1Y3LjVIMlY5QzIgOS41NSAyLjQ1IDEwIDMgMTBIOUM5LjU1IDEwIDEwIDkuNTUgMTAgOVY3LjVIOVpNMy41IDQuNUw0LjIwNSA1LjIwNUw1LjUgMy45MTVWOEg2LjVWMy45MTVMNy43OTUgNS4yMDVMOC41IDQuNUw2IDJMMy41IDQuNVpcIiBmaWxsPVwiYmxhY2tcIi8+PC9zdmc+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJpc1VwbG9hZGluZ0Jhc2VsaW5lPy5bdGVzdFN0ZXBSZXN1bHRJZF0gPT09IHRydWVcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgc3R5bGU9XCJhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWRhc2hhcnJheT1cIjggNFwiIG9wYWNpdHk9XCIwLjNcIi8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtZGFzaGFycmF5PVwiOCA0XCIgc3Ryb2tlLWRhc2hvZmZzZXQ9XCIyXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHNwYW4+e3sgaXNVcGxvYWRpbmdCYXNlbGluZT8uW3Rlc3RTdGVwUmVzdWx0SWRdID09PSB0cnVlID8gJ1VwbG9hZGluZy4uLicgOiAnVXBsb2FkIGJhc2VsaW5lJyB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPCEtLSBIaWRkZW4gZmlsZSBpbnB1dCAtLT5cbiAgICAgIDxpbnB1dCBcbiAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICB0eXBlPVwiZmlsZVwiIFxuICAgICAgICBhY2NlcHQ9XCJpbWFnZS8qXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIFxuICAgICAgLz5cbiAgICAgIDwhLS0gPGJ1dHRvbiBcbiAgICAgICAgKGNsaWNrKT1cIm9uQW5hbHl6ZSgpXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcGwtMiBjcWEtcHItNCBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQtbGcgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJnLXRyYW5zcGFyZW50IGNxYS10ZXh0LVsjMjEyMTIyXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIzIxMjEyMl1cIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjExXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDExIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk01LjUxMTUgMEM1LjU3OTMxIDAuMDMwMzE3OCA1LjYwODI4IDAuMTA0MzU0IDUuNjM2MDQgMC4xNzMxMjhDNS42NDk5NiAwLjIxMzIgNS42NjI3MyAwLjI1MzQ4OSA1LjY3NTEzIDAuMjk0MUM1LjY3OTk4IDAuMzA5NjYyIDUuNjg0ODQgMC4zMjUyMjQgNS42ODk4NCAwLjM0MTI1OEM1Ljc1NDMgMC41NTA2NzMgNS44MTE3MiAwLjc2MjMzMSA1Ljg2OTQ2IDAuOTczODRDNS44ODI1MSAxLjAyMTU5IDUuODk1NjMgMS4wNjkzMiA1LjkwODc0IDEuMTE3MDRDNS45NzU1MSAxLjM2MDA1IDYuMDQxNzcgMS42MDMyIDYuMTA3NjcgMS44NDY0NkM2LjExNjkzIDEuODgwNjIgNi4xMjYxOSAxLjkxNDc5IDYuMTM1NDUgMS45NDg5NUM2LjE2MTU2IDIuMDQ1MjcgNi4xODc2NCAyLjE0MTU5IDYuMjEzNTcgMi4yMzc5NkM2LjI2ODM3IDIuNDQxNTkgNi4zMjQ2NyAyLjY0NDYzIDYuMzg0NjMgMi44NDY2OEM2LjM4OTg2IDIuODY0MzUgNi4zOTUxIDIuODgyMDMgNi40MDA1IDIuOTAwMjRDNi41NTYyNCAzLjQyIDYuNzc3MDEgMy44ODU4MyA3LjEzODg4IDQuMjgyNjJDNy4xNDc4NCA0LjI5Mjk0IDcuMTU2OCA0LjMwMzI1IDcuMTY2MDMgNC4zMTM4OEM3LjMyMDUgNC40ODU4MyA3LjUxODczIDQuNjIzNjEgNy43MTY4NyA0LjczNDgxQzcuNzI2OTYgNC43NDA1NyA3LjczNzA1IDQuNzQ2MzIgNy43NDc0NSA0Ljc1MjI1QzguMzMwNTEgNS4wNzkgOS4wMzE2MiA1LjIyMjcyIDkuNjYzMTMgNS40MTRDOS45Mzk4NCA1LjQ5Nzg3IDEwLjIxNTcgNS41ODQzOCAxMC40OTA1IDUuNjc0N0MxMC41MDk5IDUuNjgxMDUgMTAuNTI5MiA1LjY4NzM4IDEwLjU0ODUgNS42OTM3QzEwLjYwNjIgNS43MTI2IDEwLjY2MzkgNS43MzE4MiAxMC43MjE1IDUuNzUxM0MxMC43MzQ5IDUuNzU1NzIgMTAuNzQ4MyA1Ljc2MDE1IDEwLjc2MjEgNS43NjQ3MUMxMC44NDE1IDUuNzkyMDggMTAuOTE3NCA1LjgyNDM5IDEwLjk4MjUgNS44ODAzNkMxMS4wMDIzIDUuOTI1NTggMTEuMDAyMyA1LjkyNTU4IDEwLjk5NjkgNS45NzA4QzEwLjkzMzYgNi4wMzY0OCAxMC44NzA3IDYuMDY3MjggMTAuNzg3MSA2LjA5NzMzQzEwLjc3NTEgNi4xMDE3NiAxMC43NjMyIDYuMTA2MiAxMC43NTA4IDYuMTEwNzdDMTAuNjA5NiA2LjE2MjQ0IDEwLjQ2NjUgNi4yMDc2NiAxMC4zMjMyIDYuMjUyNDdDMTAuMjkzOCA2LjI2MTc0IDEwLjI2NDQgNi4yNzEwMSAxMC4yMzUgNi4yODAyOEMxMC4wNTM3IDYuMzM3MzUgOS44NzE5OSA2LjM5MzIgOS42OTAxNCA2LjQ0ODQyQzkuNDUwNjEgNi41MjExNyA5LjIxMTQzIDYuNTk1MTIgOC45NzI0OSA2LjY2OTkxQzguOTMzMzQgNi42ODIxNiA4Ljg5NDE4IDYuNjk0MzcgOC44NTUwMSA2LjcwNjU0QzguNjQ5MzEgNi43NzA0OCA4LjQ0NDYyIDYuODM2NzEgOC4yNDE2MiA2LjkwOTQ0QzguMjI0NzggNi45MTU0NSA4LjIwNzk0IDYuOTIxNDcgOC4xOTA1OSA2LjkyNzY2QzcuNTEwNjkgNy4xNzQ0MyA2Ljk5MjQ1IDcuNjM0NzggNi42NjgwOSA4LjMwNzk5QzYuNDkzMjEgOC42ODYzNCA2LjM5MDA2IDkuMDk1NDggNi4yODQ4MyA5LjQ5OTI5QzYuMjU2MzcgOS42MDgyNSA2LjIyNjExIDkuNzE2NiA2LjE5NTUgOS44MjQ5MkM2LjE3MTQ5IDkuOTEwMTUgNi4xNDgwMyA5Ljk5NTUxIDYuMTI1MTUgMTAuMDgxMUM2LjEyMjQzIDEwLjA5MTMgNi4xMTk3IDEwLjEwMTQgNi4xMTY5IDEwLjExMTlDNi4xMDM3IDEwLjE2MTIgNi4wOTA1NiAxMC4yMTA2IDYuMDc3NTIgMTAuMjU5OUM2LjA0NDEzIDEwLjM4NTEgNi4wMDgxNyAxMC41MDkyIDUuOTcxMjMgMTAuNjMzMkM1LjkwNTY3IDEwLjg1MzYgNS44NDYwMSAxMS4wNzU3IDUuNzg2NzIgMTEuMjk4QzUuNjk3MzIgMTEuNjMyOCA1LjY5NzMyIDExLjYzMjggNS42NDY2MiAxMS43OTM3QzUuNjQzMjYgMTEuODA0NSA1LjYzOTkgMTEuODE1MyA1LjYzNjQ0IDExLjgyNjRDNS42MTc5MyAxMS44ODM3IDUuNTk4OSAxMS45MzY0IDUuNTYzODggMTEuOTg0OUM1LjUxMDYgMTEuOTk3MiA1LjUxMDYgMTEuOTk3MiA1LjQ2MjczIDEyQzUuNDA4MDEgMTEuOTE2OCA1LjM3MTc3IDExLjgzNjEgNS4zNDI3MyAxMS43NDAxQzUuMzM4NTEgMTEuNzI2NSA1LjMzNDI4IDExLjcxMjkgNS4zMjk5MyAxMS42OTg5QzUuMjc2MTQgMTEuNTIzMyA1LjIyODA3IDExLjM0NTkgNS4xNzk5OSAxMS4xNjg2QzUuMTY4OTggMTEuMTI4MSA1LjE1NzkxIDExLjA4NzUgNS4xNDY4NSAxMS4wNDdDNS4wNjQ0IDEwLjc0NDggNC45ODMzMSAxMC40NDIzIDQuOTAyMzQgMTAuMTM5N0M0LjU2NTA5IDguNjQyOTkgNC41NjUwOSA4LjY0Mjk5IDMuNzE0MzMgNy40MzI4OEMzLjcwMDcgNy40MjEyOCAzLjY4NzA2IDcuNDA5NjggMy42NzMwMiA3LjM5NzczQzMuMTE1NiA2LjkzMjAzIDIuMzgxMyA2Ljc1OTU5IDEuNzA4ODUgNi41NTc1MUMxLjU0MjU0IDYuNTA3NDkgMS4zNzYyOCA2LjQ1NzI0IDEuMjEwMDQgNi40MDY5N0MxLjE5NTUgNi40MDI1OCAxLjE5NTUgNi40MDI1OCAxLjE4MDY3IDYuMzk4MDlDMC45NDA4ODEgNi4zMjU1NiAwLjcwMTE1NyA2LjI1MjgzIDAuNDYyMjc0IDYuMTc3MTFDMC40NTIxNjggNi4xNzM5MyAwLjQ0MjA2MyA2LjE3MDc1IDAuNDMxNjUxIDYuMTY3NDdDMC4wNjQ2NTQzIDYuMDUxNzggMC4wNjQ2NTQzIDYuMDUxNzggMC4wMDA3OTAyMTEgNS45NzA4Qy0wLjAwMTAxNTk5IDUuOTM0MDYgLTAuMDAxMDE1OTkgNS45MzQwNiAwLjAxNTIzOTggNS44OTU0M0MwLjA4MTk5MDkgNS44MjcyIDAuMTQ2NzYgNS43OTc5NyAwLjIzNDg2MiA1Ljc2ODI1QzAuMjQ3NjE4IDUuNzYzNzggMC4yNjAzNzUgNS43NTkzMSAwLjI3MzUxOCA1Ljc1NDcxQzAuMzEyNTg3IDUuNzQxMSAwLjM1MTc0MSA1LjcyNzc5IDAuMzkwOTI5IDUuNzE0NTVDMC40MDIxMTIgNS43MTA3MyAwLjQxMzI5NSA1LjcwNjkgMC40MjQ4MTcgNS43MDI5NkMwLjUwMzkwNCA1LjY3NTkgMC41ODMyNzUgNS42NDk4NiAwLjY2Mjc2MiA1LjYyNDEyQzAuNjgyMjk0IDUuNjE3NzcgMC42ODIyOTQgNS42MTc3NyAwLjcwMjIyIDUuNjExMjlDMS4wNDE2NiA1LjUwMTE2IDEuMzgzMzIgNS4zOTg2NyAxLjcyNDg3IDUuMjk1OTVDMS45NzkzOSA1LjIxOTM5IDIuMjMzNDcgNS4xNDE1NyAyLjQ4Njc0IDUuMDYwNjVDMi40OTgzOCA1LjA1Njk0IDIuNTEwMDEgNS4wNTMyNCAyLjUyMjAxIDUuMDQ5NDNDMy4xMDg3MiA0Ljg2MjYyIDMuNjgyMjkgNC41OTc1NSA0LjA2MTEyIDQuMDcxNkM0LjA2Njc5IDQuMDYzOCA0LjA3MjQ3IDQuMDU1OTkgNC4wNzgzMSA0LjA0Nzk2QzQuNTAwMTkgMy40NjQyIDQuNjY0NyAyLjc1NDMgNC44NDg1IDIuMDYxNjFDNC45MDg5NiAxLjgzMzc5IDQuOTcwMTUgMS42MDYxOSA1LjAzMTU1IDEuMzc4NjVDNS4wNDg1NiAxLjMxNTY0IDUuMDY1NTMgMS4yNTI2MyA1LjA4MjQ0IDEuMTg5NTlDNS4xNTAzNyAwLjkzNjM4NSA1LjIxOTMyIDAuNjgzNTIzIDUuMjkyMjIgMC40MzE4MThDNS4yOTkwNCAwLjQwODI0OCA1LjMwNTgzIDAuMzg0NjY3IDUuMzEyNTkgMC4zNjEwNzZDNS40MTQ2NiAwLjAwNTMxNjgxIDUuNDE0NjYgMC4wMDUzMTY4MSA1LjUxMTUgMFpcIiBmaWxsPVwiIzE2MTYxN1wiLz48cGF0aCBkPVwiTTguODQzOTEgMC43NDA0NDNDOC45MTAyNCAwLjgxODc2MiA4LjkyMzQ5IDAuOTEwODA2IDguOTQ0MTUgMS4wMTA4MUM5LjAxMzA1IDEuMzI0OTkgOS4wOTI0MSAxLjYxMzg4IDkuMzY3ODcgMS43OTYzOEM5LjUzNzgyIDEuODk0NDMgOS43NDAzNyAxLjkzOTA0IDkuOTI4NjcgMS45ODExOEMxMC4wMDgyIDEuOTk5MzMgMTAuMDc1MyAyLjAyMzQxIDEwLjE0MzUgMi4wNzE1OEMxMC4xNTg4IDIuMDk3MDEgMTAuMTU4OCAyLjA5NzAxIDEwLjE1NzkgMi4xNDEyOUMxMC4xNDIxIDIuMTk1MTMgMTAuMTI4MiAyLjIxMjUgMTAuMDg2NiAyLjI0Nzc0QzEwLjA0MSAyLjI2MzY0IDEwLjA0MSAyLjI2MzY0IDkuOTg2MzMgMi4yNzYwMUM5Ljk2NTY0IDIuMjgwOTYgOS45NDQ5NiAyLjI4NTk3IDkuOTI0MyAyLjI5MTAyQzkuOTEzMjIgMi4yOTM3IDkuOTAyMTUgMi4yOTYzOCA5Ljg5MDc1IDIuMjk5MTRDOS41NTQwMSAyLjM4MDM5IDkuNTU0MDEgMi4zODAzOSA5LjI2Mjk1IDIuNTY0MjhDOS4yNTM0OCAyLjU3MjIyIDkuMjQ0MDIgMi41ODAxNyA5LjIzNDI3IDIuNTg4MzZDOS4wMjYyNSAyLjc3OTcgOC45ODIyNiAzLjA5OCA4LjkxOTYzIDMuMzY0NjRDOC45MTYwNSAzLjM3OTI4IDguOTEyNDYgMy4zOTM5MyA4LjkwODc2IDMuNDA5MDFDOC45MDU2NiAzLjQyMTk4IDguOTAyNTUgMy40MzQ5NCA4Ljg5OTM1IDMuNDQ4M0M4Ljg4NTg0IDMuNDg3ODggOC44NzE4MyAzLjUxMzY5IDguODQzOTEgMy41NDQwMkM4Ljc2NjE0IDMuNTU0MzIgOC43NjYxNCAzLjU1NDMyIDguNzI4MzEgMy41NDQwMkM4LjY2ODE0IDMuNDk1MzcgOC42NTQ2OCAzLjQzOTk2IDguNjM4OTYgMy4zNjU1QzguNjM2MzMgMy4zNTM5NyA4LjYzMzY5IDMuMzQyNDQgOC42MzA5OCAzLjMzMDU2QzguNjIyNTkgMy4yOTM3NCA4LjYxNDQ3IDMuMjU2ODYgOC42MDYzOSAzLjIxOTk1QzguNTQzMDIgMi45MzI1OSA4LjQ3MTQ4IDIuNjUwNjQgOC4yMTg3OSAyLjQ4MjJDOC4wMjEzMSAyLjM2NzMyIDcuNzgxMTggMi4zMTI5OCA3LjU2MDQ1IDIuMjY5MTFDNy40OTk5NiAyLjI1NTk3IDcuNDY1MyAyLjIzOTQ0IDcuNDI3ODUgMi4xODc0NUM3LjQxOTcyIDIuMTM0NyA3LjQxOTcyIDIuMTM0NyA3LjQyNzg1IDIuMDgxOTRDNy40ODU0MSAyLjAxOTc5IDcuNTQ1OTcgMi4wMDQ2MiA3LjYyMzgyIDEuOTg1ODVDNy42NDgzNSAxLjk3OTUyIDcuNjcyODYgMS45NzMxNCA3LjY5NzM3IDEuOTY2NzFDNy43MTAwMyAxLjk2MzQyIDcuNzIyNjkgMS45NjAxMiA3LjczNTc0IDEuOTU2NzNDNy44MDAzMiAxLjkzOTM5IDcuODY0MjUgMS45MTk5NSA3LjkyODE3IDEuOTAwMTJDNy45Mzk3OCAxLjg5NjYxIDcuOTUxMzkgMS44OTMwOSA3Ljk2MzM2IDEuODg5NDdDOC4wOTMyOSAxLjg0ODk1IDguMjA1NDEgMS43OTcxMiA4LjMwOTI3IDEuNzA1MTJDOC4zMTg5NiAxLjY5NjggOC4zMjg2NCAxLjY4ODQ4IDguMzM4NjIgMS42Nzk5MkM4LjUwMDI2IDEuNTI4MTcgOC41NTUxOCAxLjMwMDIgOC42MDUwNCAxLjA4NzQ4QzguNjA4ODQgMS4wNzEzMyA4LjYxMjY0IDEuMDU1MTggOC42MTY1NSAxLjAzODU0QzguNjI0MTEgMS4wMDYxIDguNjMxNTQgMC45NzM2MjIgOC42Mzg4MiAwLjk0MTExQzguNjQ0MDMgMC45MTg0ODkgOC42NDQwMyAwLjkxODQ4OSA4LjY0OTM1IDAuODk1NDEyQzguNjUyMzggMC44ODE4OTkgOC42NTU0MiAwLjg2ODM4NSA4LjY1ODU1IDAuODU0NDYyQzguNjcxODYgMC44MTE0NDEgOC42ODkzNSAwLjc3NzY2IDguNzEzODYgMC43NDA0NDNDOC43NjA5NiAwLjcxNTg3OCA4Ljc5NDAxIDAuNzI2OTgzIDguODQzOTEgMC43NDA0NDNaXCIgZmlsbD1cIiM0MTQxNDZcIi8+PHBhdGggZD1cIk0yLjE5NDQ2IDguMzI5NjJDMi4yMTE2NiA4LjMyOTc1IDIuMjExNjYgOC4zMjk3NSAyLjIyOTE5IDguMzI5ODhDMi4zNTI1MyA4LjMzMzggMi40MzU5NyA4LjM3NTAzIDIuNTI2OCA4LjQ2MTUxQzIuNjMyNSA4LjU4MDYxIDIuNjgxMyA4LjcxNDk3IDIuNjc4NTIgOC44NzU0OUMyLjY2NjY2IDkuMDA1NjUgMi41OTMwNyA5LjExOTI5IDIuNTAyODIgOS4yMDcyN0MyLjM5NjU4IDkuMjk2NzIgMi4yODk0MSA5LjMyNjI4IDIuMTUzNjYgOS4zMjIxNUMyLjAzOTE5IDkuMzA4MjUgMS45MzE1MSA5LjI1MTUzIDEuODUwMzggOS4xNjYxOEMxLjc0OTUgOS4wMjI1OCAxLjcyIDguODkwODcgMS43MzQ3OSA4LjcxMzk4QzEuNzY1MzMgOC41NzQ3MiAxLjg1MzM3IDguNDYxNjcgMS45NjU5OCA4LjM4MjM4QzIuMDQ0MjEgOC4zNDEwMSAyLjEwNzEzIDguMzI4ODYgMi4xOTQ0NiA4LjMyOTYyWlwiIGZpbGw9XCIjNEM0QzUxXCIvPjwvc3ZnPlxuICAgICAgICBBbmFseXplXG4gICAgICA8L2J1dHRvbj4gLS0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUmlnaHQgUGFuZWw6IExvZ3MgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtY29sLXNwYW4tMyBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIyNFNUU1RTVdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcHktMiBjcWEtcHgtMyBjcWEtaC1mdWxsIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1vdmVyZmxvdy1hdXRvXCJcbiAgICBzdHlsZT1cInNjcm9sbGJhci13aWR0aDogdGhpbjtcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1tYi0yXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLjY2NjYgMTJMMTQuNjY2NiA4TDEwLjY2NjYgNFwiIHN0cm9rZT1cIiMwQTBBMEFcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNS4zMzMzNyA0TDEuMzMzMzcgOEw1LjMzMzM3IDEyXCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICBMb2dzXG4gICAgPC9kaXY+XG4gICAgXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtdGV4dC1bIzczNzM3M11cIj5Db25zb2xlPC9kaXY+XG4gICAgICBcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGxvZyBvZiBsb2dzXCIgY2xhc3M9XCJjcWEtcHgtMiBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJyZWFrLXdvcmRzXCIgW25nQ2xhc3NdPVwiZ2V0TG9nQ2xhc3MobG9nLmxldmVsKVwiPlxuICAgICAgICB7eyBsb2cubWVzc2FnZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDxkaXYgKm5nSWY9XCIhbG9ncyB8fCBsb2dzLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwiY3FhLXB4LTIgY3FhLXB5LVsycHhdIGNxYS1yb3VuZGVkIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXSBjcWEtYmctWyNmOGY4ZjhdIGNxYS10ZXh0LWNlbnRlclwiPlxuICAgICAgICBObyBsb2dzIGF2YWlsYWJsZVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIDxhIFxuICAgICAgKm5nSWY9XCJzaG93RnVsbExvZ3NMaW5rICYmIGxvZ3M/Lmxlbmd0aFwiXG4gICAgICAoY2xpY2spPVwib25WaWV3RnVsbExvZ3MoKVwiXG4gICAgICBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLXRleHQtWyMzRjQzRUVdIGNxYS1mb250LW1lZGl1bSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWVuZCBjcWEtZ2FwLVsycHhdIGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtdW5kZXJsaW5lIGNxYS1tdC00XCI+XG4gICAgICBWaWV3IGZ1bGwgbG9ncyBJdGVyYXRpb25zXG4gICAgICA8ZGl2Pjxzdmcgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgOCA4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yLjAzODMzIDYuNzQzMzVMMi42MjgzMyA3LjMzMzM1TDUuOTYxNjYgNC4wMDAwMkwyLjYyODMzIDAuNjY2Njg3TDIuMDM4MzMgMS4yNTY2OUw0Ljc4MTY2IDQuMDAwMDJMMi4wMzgzMyA2Ljc0MzM1WlwiIGZpbGw9XCIjM0Y0M0VFXCIvPjwvc3ZnPjwvZGl2PlxuICAgIDwvYT4gLS0+XG4gIDwvZGl2PlxuXG4gIFxuICA8Y3FhLXZpc3VhbC1kaWZmZXJlbmNlLW1vZGFsIHN0eWxlPVwiei1pbmRleDogNjA7XCJcbiAgICBbaXNPcGVuXT1cImlzTW9kYWxPcGVuXCJcbiAgICBbYmFzZWxpbmVVcmxdPVwic2NyZWVuc2hvdHM/LmJhc2VsaW5lIHx8ICcnXCJcbiAgICBbY3VycmVudFVybF09XCJzY3JlZW5zaG90cz8uY3VycmVudCB8fCAnJ1wiXG4gICAgW2RpZmZlcmVuY2VVcmxdPVwic2NyZWVuc2hvdHM/LmRpZmZlcmVuY2UgfHwgJydcIlxuICAgIFtpbml0aWFsVmlld109XCJpbml0aWFsTW9kYWxWaWV3XCJcbiAgICAoY2xvc2UpPVwib25DbG9zZU1vZGFsKClcIj5cbiAgPC9jcWEtdmlzdWFsLWRpZmZlcmVuY2UtbW9kYWw+XG48L2Rpdj5cblxuPHN0eWxlPlxuICBAa2V5ZnJhbWVzIHNwaW4ge1xuICAgIGZyb20geyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxuICB9XG48L3N0eWxlPiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output, HostListener, ViewChild } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  export class PaginationComponent {
@@ -51,6 +51,19 @@ export class PaginationComponent {
51
51
  togglePageSizeMenu() {
52
52
  this.pageSizeOpen = !this.pageSizeOpen;
53
53
  }
54
+ onDocumentClick(event) {
55
+ if (this.pageSizeOpen) {
56
+ if (this.pageSizeDropdownContainer?.nativeElement) {
57
+ const clickedInside = this.pageSizeDropdownContainer.nativeElement.contains(event.target);
58
+ if (!clickedInside) {
59
+ this.pageSizeOpen = false;
60
+ }
61
+ }
62
+ else {
63
+ this.pageSizeOpen = false;
64
+ }
65
+ }
66
+ }
54
67
  selectPageSize(size) {
55
68
  if (this.pageSize !== size) {
56
69
  this.pageSize = size;
@@ -76,10 +89,10 @@ export class PaginationComponent {
76
89
  }
77
90
  }
78
91
  PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
79
- PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: PaginationComponent, selector: "cqa-pagination", inputs: { totalElements: "totalElements", totalPages: "totalPages", pageIndex: "pageIndex", pageSize: "pageSize", pageItemCount: "pageItemCount", pageSizeOptions: "pageSizeOptions" }, outputs: { pageIndexChange: "pageIndexChange", pageSizeChange: "pageSizeChange", paginate: "paginate" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<!-- Bottom Pagination -->\n<div class=\"cqa-ui-root\" >\n <div class=\"table-footer-pagination cqa-text-grey-300 cqa-text-[12.3px] cqa-leading-[17.5px] cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-flex-wrap cqa-bg-surface-default cqa-px-[21px] cqa-py-[15px]\" *ngIf=\"pageItemCount && totalElements\">\n <div class=\"pagination-info cqa-flex cqa-items-center cqa-gap-[7px] cqa-relative\">\n <span class=\"rows-label\">Rows per page</span>\n <div class=\"cqa-relative\">\n <!-- Custom Select Trigger -->\n <button\n type=\"button\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-[19px] cqa-bg-white cqa-text-black-100 cqa-rounded-[5px] cqa-px-[11.5px] cqa-py-[6.75px]\"\n (click)=\"togglePageSizeMenu()\"\n [attr.aria-expanded]=\"pageSizeOpen\"\n aria-haspopup=\"listbox\"\n >\n {{ pageSize }}\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.5\"><path d=\"M3.5 5.25L7 8.75L10.5 5.25\" stroke=\"#717182\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></svg>\n </button>\n <!-- Dropdown Menu -->\n <div\n *ngIf=\"pageSizeOpen\"\n class=\"cqa-absolute cqa-z-[100] cqa-bottom-[calc(100%+8px)] cqa-left-0 cqa-w-[75px] cqa-max-h-[170px] cqa-overflow-auto cqa-rounded-lg cqa-border cqa-border-[#E5E7EB] cqa-bg-white cqa-shadow-[0px_4px_6px_-1px_rgba(0,0,0,0.1)] cqa-p-[5px]\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"'pagesize-' + pageSize\"\n >\n <button\n *ngFor=\"let size of pageSizeOptions\"\n type=\"button\"\n class=\"cqa-w-full cqa-px-2 cqa-py-[6px] hover:cqa-bg-[#F7F8FA] cqa-text-left cqa-rounded-md cqa-text-black-100\"\n [attr.id]=\"'pagesize-' + size\"\n role=\"option\"\n [attr.aria-selected]=\"pageSize === size\"\n (click)=\"selectPageSize(size)\"\n >\n {{ size }}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"pagination-right cqa-flex cqa-items-center cqa-gap-[21px]\">\n <div class=\"pagination-range\">\n {{ getStartItem() }}&ndash;{{ getEndItem() }} of {{ totalElements }}\n </div>\n <div class=\"pagination-controls cqa-flex cqa-items-stretch cqa-gap-[3.5px]\">\n <button class=\"pagination-btn cqa-w-[28px] cqa-h-[28px] cqa-min-w-[28px] cqa-rounded-[5px] cqa-border cqa-border-[#E5E7EB] cqa-bg-[#F7F8FA] cqa-flex cqa-items-center cqa-justify-center\" [disabled]=\"pageIndex === 0\" (click)=\"goToPage(pageIndex - 1)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.75 10.5L5.25 7L8.75 3.5\" stroke=\"#838384\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n <button class=\"pagination-btn cqa-w-[28px] cqa-h-[28px] cqa-min-w-[28px] cqa-rounded-[5px] cqa-border cqa-border-[#E5E7EB] cqa-bg-[#F7F8FA] cqa-flex cqa-items-center cqa-justify-center\" [disabled]=\"pageIndex >= computedTotalPages - 1\" (click)=\"goToPage(pageIndex + 1)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.25 10.5L8.75 7L5.25 3.5\" stroke=\"#838384\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n </div>\n </div>\n </div>\n</div>", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
92
+ PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: PaginationComponent, selector: "cqa-pagination", inputs: { totalElements: "totalElements", totalPages: "totalPages", pageIndex: "pageIndex", pageSize: "pageSize", pageItemCount: "pageItemCount", pageSizeOptions: "pageSizeOptions" }, outputs: { pageIndexChange: "pageIndexChange", pageSizeChange: "pageSizeChange", paginate: "paginate" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "pageSizeDropdownContainer", first: true, predicate: ["pageSizeDropdownContainer"], descendants: true }], ngImport: i0, template: "<!-- Bottom Pagination -->\n<div class=\"cqa-ui-root\" >\n <div class=\"table-footer-pagination cqa-text-grey-300 cqa-text-[12.3px] cqa-leading-[17.5px] cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-flex-wrap cqa-bg-surface-default cqa-px-[21px] cqa-py-[15px]\" *ngIf=\"pageItemCount && totalElements\">\n <div class=\"pagination-info cqa-flex cqa-items-center cqa-gap-[7px] cqa-relative\">\n <span class=\"rows-label\">Rows per page</span>\n <div class=\"cqa-relative\" #pageSizeDropdownContainer>\n <!-- Custom Select Trigger -->\n <button\n type=\"button\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-[19px] cqa-bg-white cqa-text-black-100 cqa-rounded-[5px] cqa-px-[11.5px] cqa-py-[6.75px]\"\n (click)=\"togglePageSizeMenu()\"\n [attr.aria-expanded]=\"pageSizeOpen\"\n aria-haspopup=\"listbox\"\n >\n {{ pageSize }}\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.5\"><path d=\"M3.5 5.25L7 8.75L10.5 5.25\" stroke=\"#717182\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></svg>\n </button>\n <!-- Dropdown Menu -->\n <div\n *ngIf=\"pageSizeOpen\"\n class=\"cqa-absolute cqa-z-[100] cqa-bottom-[calc(100%+8px)] cqa-left-0 cqa-w-[75px] cqa-max-h-[170px] cqa-overflow-auto cqa-rounded-lg cqa-border cqa-border-[#E5E7EB] cqa-bg-white cqa-shadow-[0px_4px_6px_-1px_rgba(0,0,0,0.1)] cqa-p-[5px]\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"'pagesize-' + pageSize\"\n >\n <button\n *ngFor=\"let size of pageSizeOptions\"\n type=\"button\"\n class=\"cqa-w-full cqa-px-2 cqa-py-[6px] hover:cqa-bg-[#F7F8FA] cqa-text-left cqa-rounded-md cqa-text-black-100\"\n [attr.id]=\"'pagesize-' + size\"\n role=\"option\"\n [attr.aria-selected]=\"pageSize === size\"\n (click)=\"selectPageSize(size)\"\n >\n {{ size }}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"pagination-right cqa-flex cqa-items-center cqa-gap-[21px]\">\n <div class=\"pagination-range\">\n {{ getStartItem() }}&ndash;{{ getEndItem() }} of {{ totalElements }}\n </div>\n <div class=\"pagination-controls cqa-flex cqa-items-stretch cqa-gap-[3.5px]\">\n <button class=\"pagination-btn cqa-w-[28px] cqa-h-[28px] cqa-min-w-[28px] cqa-rounded-[5px] cqa-border cqa-border-[#E5E7EB] cqa-bg-[#F7F8FA] cqa-flex cqa-items-center cqa-justify-center\" [disabled]=\"pageIndex === 0\" (click)=\"goToPage(pageIndex - 1)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.75 10.5L5.25 7L8.75 3.5\" stroke=\"#838384\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n <button class=\"pagination-btn cqa-w-[28px] cqa-h-[28px] cqa-min-w-[28px] cqa-rounded-[5px] cqa-border cqa-border-[#E5E7EB] cqa-bg-[#F7F8FA] cqa-flex cqa-items-center cqa-justify-center\" [disabled]=\"pageIndex >= computedTotalPages - 1\" (click)=\"goToPage(pageIndex + 1)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.25 10.5L8.75 7L5.25 3.5\" stroke=\"#838384\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n </div>\n </div>\n </div>\n</div>", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
80
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: PaginationComponent, decorators: [{
81
94
  type: Component,
82
- args: [{ selector: 'cqa-pagination', host: { class: 'cqa-ui-root' }, template: "<!-- Bottom Pagination -->\n<div class=\"cqa-ui-root\" >\n <div class=\"table-footer-pagination cqa-text-grey-300 cqa-text-[12.3px] cqa-leading-[17.5px] cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-flex-wrap cqa-bg-surface-default cqa-px-[21px] cqa-py-[15px]\" *ngIf=\"pageItemCount && totalElements\">\n <div class=\"pagination-info cqa-flex cqa-items-center cqa-gap-[7px] cqa-relative\">\n <span class=\"rows-label\">Rows per page</span>\n <div class=\"cqa-relative\">\n <!-- Custom Select Trigger -->\n <button\n type=\"button\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-[19px] cqa-bg-white cqa-text-black-100 cqa-rounded-[5px] cqa-px-[11.5px] cqa-py-[6.75px]\"\n (click)=\"togglePageSizeMenu()\"\n [attr.aria-expanded]=\"pageSizeOpen\"\n aria-haspopup=\"listbox\"\n >\n {{ pageSize }}\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.5\"><path d=\"M3.5 5.25L7 8.75L10.5 5.25\" stroke=\"#717182\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></svg>\n </button>\n <!-- Dropdown Menu -->\n <div\n *ngIf=\"pageSizeOpen\"\n class=\"cqa-absolute cqa-z-[100] cqa-bottom-[calc(100%+8px)] cqa-left-0 cqa-w-[75px] cqa-max-h-[170px] cqa-overflow-auto cqa-rounded-lg cqa-border cqa-border-[#E5E7EB] cqa-bg-white cqa-shadow-[0px_4px_6px_-1px_rgba(0,0,0,0.1)] cqa-p-[5px]\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"'pagesize-' + pageSize\"\n >\n <button\n *ngFor=\"let size of pageSizeOptions\"\n type=\"button\"\n class=\"cqa-w-full cqa-px-2 cqa-py-[6px] hover:cqa-bg-[#F7F8FA] cqa-text-left cqa-rounded-md cqa-text-black-100\"\n [attr.id]=\"'pagesize-' + size\"\n role=\"option\"\n [attr.aria-selected]=\"pageSize === size\"\n (click)=\"selectPageSize(size)\"\n >\n {{ size }}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"pagination-right cqa-flex cqa-items-center cqa-gap-[21px]\">\n <div class=\"pagination-range\">\n {{ getStartItem() }}&ndash;{{ getEndItem() }} of {{ totalElements }}\n </div>\n <div class=\"pagination-controls cqa-flex cqa-items-stretch cqa-gap-[3.5px]\">\n <button class=\"pagination-btn cqa-w-[28px] cqa-h-[28px] cqa-min-w-[28px] cqa-rounded-[5px] cqa-border cqa-border-[#E5E7EB] cqa-bg-[#F7F8FA] cqa-flex cqa-items-center cqa-justify-center\" [disabled]=\"pageIndex === 0\" (click)=\"goToPage(pageIndex - 1)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.75 10.5L5.25 7L8.75 3.5\" stroke=\"#838384\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n <button class=\"pagination-btn cqa-w-[28px] cqa-h-[28px] cqa-min-w-[28px] cqa-rounded-[5px] cqa-border cqa-border-[#E5E7EB] cqa-bg-[#F7F8FA] cqa-flex cqa-items-center cqa-justify-center\" [disabled]=\"pageIndex >= computedTotalPages - 1\" (click)=\"goToPage(pageIndex + 1)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.25 10.5L8.75 7L5.25 3.5\" stroke=\"#838384\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
95
+ args: [{ selector: 'cqa-pagination', host: { class: 'cqa-ui-root' }, template: "<!-- Bottom Pagination -->\n<div class=\"cqa-ui-root\" >\n <div class=\"table-footer-pagination cqa-text-grey-300 cqa-text-[12.3px] cqa-leading-[17.5px] cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-flex-wrap cqa-bg-surface-default cqa-px-[21px] cqa-py-[15px]\" *ngIf=\"pageItemCount && totalElements\">\n <div class=\"pagination-info cqa-flex cqa-items-center cqa-gap-[7px] cqa-relative\">\n <span class=\"rows-label\">Rows per page</span>\n <div class=\"cqa-relative\" #pageSizeDropdownContainer>\n <!-- Custom Select Trigger -->\n <button\n type=\"button\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-[19px] cqa-bg-white cqa-text-black-100 cqa-rounded-[5px] cqa-px-[11.5px] cqa-py-[6.75px]\"\n (click)=\"togglePageSizeMenu()\"\n [attr.aria-expanded]=\"pageSizeOpen\"\n aria-haspopup=\"listbox\"\n >\n {{ pageSize }}\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.5\"><path d=\"M3.5 5.25L7 8.75L10.5 5.25\" stroke=\"#717182\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></svg>\n </button>\n <!-- Dropdown Menu -->\n <div\n *ngIf=\"pageSizeOpen\"\n class=\"cqa-absolute cqa-z-[100] cqa-bottom-[calc(100%+8px)] cqa-left-0 cqa-w-[75px] cqa-max-h-[170px] cqa-overflow-auto cqa-rounded-lg cqa-border cqa-border-[#E5E7EB] cqa-bg-white cqa-shadow-[0px_4px_6px_-1px_rgba(0,0,0,0.1)] cqa-p-[5px]\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"'pagesize-' + pageSize\"\n >\n <button\n *ngFor=\"let size of pageSizeOptions\"\n type=\"button\"\n class=\"cqa-w-full cqa-px-2 cqa-py-[6px] hover:cqa-bg-[#F7F8FA] cqa-text-left cqa-rounded-md cqa-text-black-100\"\n [attr.id]=\"'pagesize-' + size\"\n role=\"option\"\n [attr.aria-selected]=\"pageSize === size\"\n (click)=\"selectPageSize(size)\"\n >\n {{ size }}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"pagination-right cqa-flex cqa-items-center cqa-gap-[21px]\">\n <div class=\"pagination-range\">\n {{ getStartItem() }}&ndash;{{ getEndItem() }} of {{ totalElements }}\n </div>\n <div class=\"pagination-controls cqa-flex cqa-items-stretch cqa-gap-[3.5px]\">\n <button class=\"pagination-btn cqa-w-[28px] cqa-h-[28px] cqa-min-w-[28px] cqa-rounded-[5px] cqa-border cqa-border-[#E5E7EB] cqa-bg-[#F7F8FA] cqa-flex cqa-items-center cqa-justify-center\" [disabled]=\"pageIndex === 0\" (click)=\"goToPage(pageIndex - 1)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.75 10.5L5.25 7L8.75 3.5\" stroke=\"#838384\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n <button class=\"pagination-btn cqa-w-[28px] cqa-h-[28px] cqa-min-w-[28px] cqa-rounded-[5px] cqa-border cqa-border-[#E5E7EB] cqa-bg-[#F7F8FA] cqa-flex cqa-items-center cqa-justify-center\" [disabled]=\"pageIndex >= computedTotalPages - 1\" (click)=\"goToPage(pageIndex + 1)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.25 10.5L8.75 7L5.25 3.5\" stroke=\"#838384\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
83
96
  }], propDecorators: { totalElements: [{
84
97
  type: Input
85
98
  }], totalPages: [{
@@ -98,5 +111,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
98
111
  type: Output
99
112
  }], paginate: [{
100
113
  type: Output
114
+ }], pageSizeDropdownContainer: [{
115
+ type: ViewChild,
116
+ args: ['pageSizeDropdownContainer', { static: false }]
117
+ }], onDocumentClick: [{
118
+ type: HostListener,
119
+ args: ['document:click', ['$event']]
101
120
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFhdkUsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQU9XLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRTFCLGNBQVMsR0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVO1FBQ2pDLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsa0JBQWEsR0FBVyxDQUFDLENBQUMsQ0FBQyxrREFBa0Q7UUFDN0Usb0JBQWUsR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVoRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDN0MsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUUxRCwrQ0FBK0M7UUFDL0MsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsZ0JBQVcsR0FBRztZQUNaLFdBQVcsRUFBRSxhQUFhO1lBQzFCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsS0FBSztZQUNqQixPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7Z0JBQ3JCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO2dCQUNyQixF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UUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7O2dIQWxGVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixnWUNiaEMsd2dIQXFETTsyRkR4Q08sbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGdCQUFnQixRQUdwQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7OEJBR3JCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ2hhbmdlIHtcbiAgcGFnZUluZGV4OiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1wYWdpbmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRvdGFsRWxlbWVudHM6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHRvdGFsUGFnZXM/OiBudW1iZXIgfCBudWxsO1xuICBASW5wdXQoKSBwYWdlSW5kZXg6IG51bWJlciA9IDA7IC8vIDAtYmFzZWRcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDEwO1xuICBASW5wdXQoKSBwYWdlSXRlbUNvdW50OiBudW1iZXIgPSAwOyAvLyBudW1iZXIgb2YgaXRlbXMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoaXMgcGFnZVxuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzEwLCAyMCwgNDAsIDYwLCA4MF07XG5cbiAgQE91dHB1dCgpIHBhZ2VJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgcGFnZVNpemVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHBhZ2luYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmF0aW9uQ2hhbmdlPigpO1xuXG4gIC8vIExvY2FsIFVJIHN0YXRlIGZvciBjdXN0b20gcGFnZS1zaXplIGRyb3Bkb3duXG4gIHBhZ2VTaXplT3BlbiA9IGZhbHNlO1xuXG4gIHBhZ2VzT3B0aW9uID0ge1xuICAgIHBsYWNlaG9sZGVyOiAnQ2hvb3NlIHBhZ2UnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgc2VhcmNoYWJsZTogZmFsc2UsXG4gICAgb3B0aW9uczogW1xuICAgICAgeyBpZDogMSwgbmFtZTogJzEwJyB9LFxuICAgICAgeyBpZDogMiwgbmFtZTogJzIwJyB9LFxuICAgICAgeyBpZDogMywgbmFtZTogJzMwJyB9LFxuICAgICAgeyBpZDogNCwgbmFtZTogJzQwJyB9LFxuICAgIF0sXG4gIH1cbiAgXG5cbiAgZ2V0IGNvbXB1dGVkVG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnRvdGFsUGFnZXMgIT0gbnVsbCAmJiB0aGlzLnRvdGFsUGFnZXMgPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3RhbFBhZ2VzO1xuICAgIH1cbiAgICBpZiAodGhpcy5wYWdlU2l6ZSA+IDAgJiYgdGhpcy50b3RhbEVsZW1lbnRzID49IDApIHtcbiAgICAgIHJldHVybiBNYXRoLm1heCgxLCBNYXRoLmNlaWwodGhpcy50b3RhbEVsZW1lbnRzIC8gdGhpcy5wYWdlU2l6ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGdldFN0YXJ0SXRlbSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50b3RhbEVsZW1lbnRzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGFnZUluZGV4ICogdGhpcy5wYWdlU2l6ZSArIDE7XG4gIH1cblxuICBnZXRFbmRJdGVtKCk6IG51bWJlciB7XG4gICAgY29uc3QgZW5kID0gdGhpcy5nZXRTdGFydEl0ZW0oKSArIHRoaXMucGFnZUl0ZW1Db3VudCAtIDE7XG4gICAgaWYgKGVuZCA8IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5taW4oZW5kLCB0aGlzLnRvdGFsRWxlbWVudHMpO1xuICB9XG5cbiAgdG9nZ2xlUGFnZVNpemVNZW51KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVNpemVPcGVuID0gIXRoaXMucGFnZVNpemVPcGVuO1xuICB9XG5cbiAgc2VsZWN0UGFnZVNpemUoc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnZVNpemUgIT09IHNpemUpIHtcbiAgICAgIHRoaXMucGFnZVNpemUgPSBzaXplO1xuICAgICAgdGhpcy5vblBhZ2VTaXplQ2hhbmdlKCk7XG4gICAgfVxuICAgIHRoaXMucGFnZVNpemVPcGVuID0gZmFsc2U7XG4gIH1cblxuICBvblBhZ2VTaXplQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMucGFnZUluZGV4ID0gMDtcbiAgICB0aGlzLnBhZ2VTaXplQ2hhbmdlLmVtaXQodGhpcy5wYWdlU2l6ZSk7XG4gICAgdGhpcy5wYWdlSW5kZXhDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VJbmRleCk7XG4gICAgdGhpcy5wYWdpbmF0ZS5lbWl0KHsgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfSk7XG4gIH1cblxuICBnb1RvUGFnZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbGFzdEluZGV4ID0gTWF0aC5tYXgoMCwgdGhpcy5jb21wdXRlZFRvdGFsUGFnZXMgLSAxKTtcbiAgICBjb25zdCBuZXh0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oaW5kZXgsIGxhc3RJbmRleCkpO1xuICAgIGlmIChuZXh0ID09PSB0aGlzLnBhZ2VJbmRleCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhZ2VJbmRleCA9IG5leHQ7XG4gICAgdGhpcy5wYWdlSW5kZXhDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VJbmRleCk7XG4gICAgdGhpcy5wYWdpbmF0ZS5lbWl0KHsgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfSk7XG4gIH1cbn1cblxuXG4iLCI8IS0tIEJvdHRvbSBQYWdpbmF0aW9uIC0tPlxuPGRpdiBjbGFzcz1cImNxYS11aS1yb290XCIgPlxuICA8ZGl2IGNsYXNzPVwidGFibGUtZm9vdGVyLXBhZ2luYXRpb24gY3FhLXRleHQtZ3JleS0zMDAgY3FhLXRleHQtWzEyLjNweF0gY3FhLWxlYWRpbmctWzE3LjVweF0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtMiBjcWEtZmxleC13cmFwIGNxYS1iZy1zdXJmYWNlLWRlZmF1bHQgY3FhLXB4LVsyMXB4XSBjcWEtcHktWzE1cHhdXCIgKm5nSWY9XCJwYWdlSXRlbUNvdW50ICYmIHRvdGFsRWxlbWVudHNcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1pbmZvIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bN3B4XSBjcWEtcmVsYXRpdmVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicm93cy1sYWJlbFwiPlJvd3MgcGVyIHBhZ2U8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXJlbGF0aXZlXCI+XG4gICAgICAgIDwhLS0gQ3VzdG9tIFNlbGVjdCBUcmlnZ2VyIC0tPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVsxOXB4XSBjcWEtYmctd2hpdGUgY3FhLXRleHQtYmxhY2stMTAwIGNxYS1yb3VuZGVkLVs1cHhdIGNxYS1weC1bMTEuNXB4XSBjcWEtcHktWzYuNzVweF1cIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQYWdlU2l6ZU1lbnUoKVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJwYWdlU2l6ZU9wZW5cIlxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHBhZ2VTaXplIH19XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGcgb3BhY2l0eT1cIjAuNVwiPjxwYXRoIGQ9XCJNMy41IDUuMjVMNyA4Ljc1TDEwLjUgNS4yNVwiIHN0cm9rZT1cIiM3MTcxODJcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvZz48L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwhLS0gRHJvcGRvd24gTWVudSAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwicGFnZVNpemVPcGVuXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtei1bMTAwXSBjcWEtYm90dG9tLVtjYWxjKDEwMCUrOHB4KV0gY3FhLWxlZnQtMCBjcWEtdy1bNzVweF0gY3FhLW1heC1oLVsxNzBweF0gY3FhLW92ZXJmbG93LWF1dG8gY3FhLXJvdW5kZWQtbGcgY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtYmctd2hpdGUgY3FhLXNoYWRvdy1bMHB4XzRweF82cHhfLTFweF9yZ2JhKDAsMCwwLDAuMSldIGNxYS1wLVs1cHhdXCJcbiAgICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIidwYWdlc2l6ZS0nICsgcGFnZVNpemVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNpemUgb2YgcGFnZVNpemVPcHRpb25zXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1weC0yIGNxYS1weS1bNnB4XSBob3ZlcjpjcWEtYmctWyNGN0Y4RkFdIGNxYS10ZXh0LWxlZnQgY3FhLXJvdW5kZWQtbWQgY3FhLXRleHQtYmxhY2stMTAwXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cIidwYWdlc2l6ZS0nICsgc2l6ZVwiXG4gICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwicGFnZVNpemUgPT09IHNpemVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2VTaXplKHNpemUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBzaXplIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1yaWdodCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzIxcHhdXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1yYW5nZVwiPlxuICAgICAgICB7eyBnZXRTdGFydEl0ZW0oKSB9fSZuZGFzaDt7eyBnZXRFbmRJdGVtKCkgfX0gb2Yge3sgdG90YWxFbGVtZW50cyB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb250cm9scyBjcWEtZmxleCBjcWEtaXRlbXMtc3RyZXRjaCBjcWEtZ2FwLVszLjVweF1cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBhZ2luYXRpb24tYnRuIGNxYS13LVsyOHB4XSBjcWEtaC1bMjhweF0gY3FhLW1pbi13LVsyOHB4XSBjcWEtcm91bmRlZC1bNXB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFNUU3RUJdIGNxYS1iZy1bI0Y3RjhGQV0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIiBbZGlzYWJsZWRdPVwicGFnZUluZGV4ID09PSAwXCIgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2VJbmRleCAtIDEpXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk04Ljc1IDEwLjVMNS4yNSA3TDguNzUgMy41XCIgc3Ryb2tlPVwiIzgzODM4NFwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGFnaW5hdGlvbi1idG4gY3FhLXctWzI4cHhdIGNxYS1oLVsyOHB4XSBjcWEtbWluLXctWzI4cHhdIGNxYS1yb3VuZGVkLVs1cHhdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLWJnLVsjRjdGOEZBXSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiIFtkaXNhYmxlZF09XCJwYWdlSW5kZXggPj0gY29tcHV0ZWRUb3RhbFBhZ2VzIC0gMVwiIChjbGljayk9XCJnb1RvUGFnZShwYWdlSW5kZXggKyAxKVwiPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNS4yNSAxMC41TDguNzUgN0w1LjI1IDMuNVwiIHN0cm9rZT1cIiM4MzgzODRcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7OztBQWE1RyxNQUFNLE9BQU8sbUJBQW1CO0lBTmhDO1FBT1csa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFFMUIsY0FBUyxHQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVU7UUFDakMsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixrQkFBYSxHQUFXLENBQUMsQ0FBQyxDQUFDLGtEQUFrRDtRQUM3RSxvQkFBZSxHQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWhELG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM3QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDNUMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRTFELCtDQUErQztRQUMvQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUlyQixnQkFBVyxHQUFHO1lBQ1osV0FBVyxFQUFFLGFBQWE7WUFDMUIsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtnQkFDckIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFB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dXQsIE91dHB1dCwgSG9zdExpc3RlbmVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ2hhbmdlIHtcbiAgcGFnZUluZGV4OiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1wYWdpbmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRvdGFsRWxlbWVudHM6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHRvdGFsUGFnZXM/OiBudW1iZXIgfCBudWxsO1xuICBASW5wdXQoKSBwYWdlSW5kZXg6IG51bWJlciA9IDA7IC8vIDAtYmFzZWRcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDEwO1xuICBASW5wdXQoKSBwYWdlSXRlbUNvdW50OiBudW1iZXIgPSAwOyAvLyBudW1iZXIgb2YgaXRlbXMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoaXMgcGFnZVxuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzEwLCAyMCwgNDAsIDYwLCA4MF07XG5cbiAgQE91dHB1dCgpIHBhZ2VJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgcGFnZVNpemVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHBhZ2luYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmF0aW9uQ2hhbmdlPigpO1xuXG4gIC8vIExvY2FsIFVJIHN0YXRlIGZvciBjdXN0b20gcGFnZS1zaXplIGRyb3Bkb3duXG4gIHBhZ2VTaXplT3BlbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3BhZ2VTaXplRHJvcGRvd25Db250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnZVNpemVEcm9wZG93bkNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG5cbiAgcGFnZXNPcHRpb24gPSB7XG4gICAgcGxhY2Vob2xkZXI6ICdDaG9vc2UgcGFnZScsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICBvcHRpb25zOiBbXG4gICAgICB7IGlkOiAxLCBuYW1lOiAnMTAnIH0sXG4gICAgICB7IGlkOiAyLCBuYW1lOiAnMjAnIH0sXG4gICAgICB7IGlkOiAzLCBuYW1lOiAnMzAnIH0sXG4gICAgICB7IGlkOiA0LCBuYW1lOiAnNDAnIH0sXG4gICAgXSxcbiAgfVxuICBcblxuICBnZXQgY29tcHV0ZWRUb3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMudG90YWxQYWdlcyAhPSBudWxsICYmIHRoaXMudG90YWxQYWdlcyA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnRvdGFsUGFnZXM7XG4gICAgfVxuICAgIGlmICh0aGlzLnBhZ2VTaXplID4gMCAmJiB0aGlzLnRvdGFsRWxlbWVudHMgPj0gMCkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KDEsIE1hdGguY2VpbCh0aGlzLnRvdGFsRWxlbWVudHMgLyB0aGlzLnBhZ2VTaXplKSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgZ2V0U3RhcnRJdGVtKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wYWdlSW5kZXggKiB0aGlzLnBhZ2VTaXplICsgMTtcbiAgfVxuXG4gIGdldEVuZEl0ZW0oKTogbnVtYmVyIHtcbiAgICBjb25zdCBlbmQgPSB0aGlzLmdldFN0YXJ0SXRlbSgpICsgdGhpcy5wYWdlSXRlbUNvdW50IC0gMTtcbiAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLm1pbihlbmQsIHRoaXMudG90YWxFbGVtZW50cyk7XG4gIH1cblxuICB0b2dnbGVQYWdlU2l6ZU1lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlU2l6ZU9wZW4gPSAhdGhpcy5wYWdlU2l6ZU9wZW47XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VTaXplT3Blbikge1xuICAgICAgaWYgKHRoaXMucGFnZVNpemVEcm9wZG93bkNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gdGhpcy5wYWdlU2l6ZURyb3Bkb3duQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpO1xuICAgICAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcbiAgICAgICAgICB0aGlzLnBhZ2VTaXplT3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhZ2VTaXplT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFBhZ2VTaXplKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VTaXplICE9PSBzaXplKSB7XG4gICAgICB0aGlzLnBhZ2VTaXplID0gc2l6ZTtcbiAgICAgIHRoaXMub25QYWdlU2l6ZUNoYW5nZSgpO1xuICAgIH1cbiAgICB0aGlzLnBhZ2VTaXplT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gICAgdGhpcy5wYWdlU2l6ZUNoYW5nZS5lbWl0KHRoaXMucGFnZVNpemUpO1xuICAgIHRoaXMucGFnZUluZGV4Q2hhbmdlLmVtaXQodGhpcy5wYWdlSW5kZXgpO1xuICAgIHRoaXMucGFnaW5hdGUuZW1pdCh7IHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXgsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplIH0pO1xuICB9XG5cbiAgZ29Ub1BhZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGxhc3RJbmRleCA9IE1hdGgubWF4KDAsIHRoaXMuY29tcHV0ZWRUb3RhbFBhZ2VzIC0gMSk7XG4gICAgY29uc3QgbmV4dCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGluZGV4LCBsYXN0SW5kZXgpKTtcbiAgICBpZiAobmV4dCA9PT0gdGhpcy5wYWdlSW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wYWdlSW5kZXggPSBuZXh0O1xuICAgIHRoaXMucGFnZUluZGV4Q2hhbmdlLmVtaXQodGhpcy5wYWdlSW5kZXgpO1xuICAgIHRoaXMucGFnaW5hdGUuZW1pdCh7IHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXgsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplIH0pO1xuICB9XG59XG5cblxuIiwiPCEtLSBCb3R0b20gUGFnaW5hdGlvbiAtLT5cbjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiID5cbiAgPGRpdiBjbGFzcz1cInRhYmxlLWZvb3Rlci1wYWdpbmF0aW9uIGNxYS10ZXh0LWdyZXktMzAwIGNxYS10ZXh0LVsxMi4zcHhdIGNxYS1sZWFkaW5nLVsxNy41cHhdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTIgY3FhLWZsZXgtd3JhcCBjcWEtYmctc3VyZmFjZS1kZWZhdWx0IGNxYS1weC1bMjFweF0gY3FhLXB5LVsxNXB4XVwiICpuZ0lmPVwicGFnZUl0ZW1Db3VudCAmJiB0b3RhbEVsZW1lbnRzXCI+XG4gICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24taW5mbyBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzdweF0gY3FhLXJlbGF0aXZlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInJvd3MtbGFiZWxcIj5Sb3dzIHBlciBwYWdlPC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1yZWxhdGl2ZVwiICNwYWdlU2l6ZURyb3Bkb3duQ29udGFpbmVyPlxuICAgICAgICA8IS0tIEN1c3RvbSBTZWxlY3QgVHJpZ2dlciAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bMTlweF0gY3FhLWJnLXdoaXRlIGNxYS10ZXh0LWJsYWNrLTEwMCBjcWEtcm91bmRlZC1bNXB4XSBjcWEtcHgtWzExLjVweF0gY3FhLXB5LVs2Ljc1cHhdXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUGFnZVNpemVNZW51KClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwicGFnZVNpemVPcGVuXCJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwYWdlU2l6ZSB9fVxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxnIG9wYWNpdHk9XCIwLjVcIj48cGF0aCBkPVwiTTMuNSA1LjI1TDcgOC43NUwxMC41IDUuMjVcIiBzdHJva2U9XCIjNzE3MTgyXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L2c+PC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8IS0tIERyb3Bkb3duIE1lbnUgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInBhZ2VTaXplT3BlblwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXotWzEwMF0gY3FhLWJvdHRvbS1bY2FsYygxMDAlKzhweCldIGNxYS1sZWZ0LTAgY3FhLXctWzc1cHhdIGNxYS1tYXgtaC1bMTcwcHhdIGNxYS1vdmVyZmxvdy1hdXRvIGNxYS1yb3VuZGVkLWxnIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLWJnLXdoaXRlIGNxYS1zaGFkb3ctWzBweF80cHhfNnB4Xy0xcHhfcmdiYSgwLDAsMCwwLjEpXSBjcWEtcC1bNXB4XVwiXG4gICAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCIncGFnZXNpemUtJyArIHBhZ2VTaXplXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzaXplIG9mIHBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtcHgtMiBjcWEtcHktWzZweF0gaG92ZXI6Y3FhLWJnLVsjRjdGOEZBXSBjcWEtdGV4dC1sZWZ0IGNxYS1yb3VuZGVkLW1kIGNxYS10ZXh0LWJsYWNrLTEwMFwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCIncGFnZXNpemUtJyArIHNpemVcIlxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInBhZ2VTaXplID09PSBzaXplXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlU2l6ZShzaXplKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgc2l6ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tcmlnaHQgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVsyMXB4XVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tcmFuZ2VcIj5cbiAgICAgICAge3sgZ2V0U3RhcnRJdGVtKCkgfX0mbmRhc2g7e3sgZ2V0RW5kSXRlbSgpIH19IG9mIHt7IHRvdGFsRWxlbWVudHMgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tY29udHJvbHMgY3FhLWZsZXggY3FhLWl0ZW1zLXN0cmV0Y2ggY3FhLWdhcC1bMy41cHhdXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJwYWdpbmF0aW9uLWJ0biBjcWEtdy1bMjhweF0gY3FhLWgtWzI4cHhdIGNxYS1taW4tdy1bMjhweF0gY3FhLXJvdW5kZWQtWzVweF0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtYmctWyNGN0Y4RkFdIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCIgW2Rpc2FibGVkXT1cInBhZ2VJbmRleCA9PT0gMFwiIChjbGljayk9XCJnb1RvUGFnZShwYWdlSW5kZXggLSAxKVwiPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNOC43NSAxMC41TDUuMjUgN0w4Ljc1IDMuNVwiIHN0cm9rZT1cIiM4MzgzODRcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBhZ2luYXRpb24tYnRuIGNxYS13LVsyOHB4XSBjcWEtaC1bMjhweF0gY3FhLW1pbi13LVsyOHB4XSBjcWEtcm91bmRlZC1bNXB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFNUU3RUJdIGNxYS1iZy1bI0Y3RjhGQV0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIiBbZGlzYWJsZWRdPVwicGFnZUluZGV4ID49IGNvbXB1dGVkVG90YWxQYWdlcyAtIDFcIiAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnZUluZGV4ICsgMSlcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTUuMjUgMTAuNUw4Ljc1IDdMNS4yNSAzLjVcIiBzdHJva2U9XCIjODM4Mzg0XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=